feat: 接口调试

This commit is contained in:
2026-04-05 16:48:11 +08:00
parent 410c33ad1d
commit 674d0b9308
8 changed files with 137 additions and 7 deletions

View File

@@ -0,0 +1,16 @@
/* eslint-disable */
// @ts-ignore
import request from '@common/ajax';
import type { Response } from './types';
export interface CreateGeneratorPhotoTaskRequest {
photoUrlList: string[];
}
export const createGeneratorPhotoTask = (params: CreateGeneratorPhotoTaskRequest) => {
return request<Response<boolean>>({
url: '/aigc/createGeneratorPhotoTask',
method: 'post',
params,
});
};

44
src/api/UploadFile.ts Normal file
View File

@@ -0,0 +1,44 @@
import request from "@/common/ajax";
import { getAccessToken } from "@/constant/token";
// @ts-ignore
const { VITE_BASE_API, VITE_ENV } = import.meta.env
async function toFileObject(input: string | File | Blob): Promise<File> {
if (input instanceof File) return input;
if (input instanceof Blob) return new File([input], "file.jpg", { type: input.type || "image/jpeg" });
const res = await fetch(input);
const blob = await res.blob();
try {
const urlObj = new URL(input);
const segments = urlObj.pathname.split("/");
const name = segments.pop() || "file.jpg";
return new File([blob], name, { type: blob.type || "image/jpeg" });
} catch (e) {
return new File([blob], "file.jpg", { type: blob.type || "image/jpeg" });
}
}
export const updateImageFile = async (file: string | File | Blob) => {
const baseUrl = VITE_ENV === 'development' ? '/ingress/agent' : VITE_BASE_API
const url = baseUrl + "/hotBizCommon/upload";
const token = getAccessToken();
try {
const fileObj = await toFileObject(file);
const form = new FormData();
form.append("file", fileObj);
const resp = await request.post(url, form, {
headers: {
"Content-Type": "multipart/form-data",
Authorization: `Bearer ${token}`,
},
});
return resp;
} catch (err) {
console.error("上传图片失败:", err);
throw err;
}
};

View File

@@ -3,4 +3,6 @@
export * from './types'; export * from './types';
export * from './AigcSceneListApi'; export * from './AigcSceneListApi';
export * from './AigcGeneratorPhotoTaskListApi'; export * from './AigcGeneratorPhotoTaskListApi';
export * from './AigcCreateGeneratorPhotoTaskApi';
export * from './UploadFile';

View File

@@ -1,6 +1,6 @@
import axios from 'axios' import axios from 'axios'
import { tansParams } from '@utils/tansParams' import { tansParams } from '@utils/tansParams'
import { Session } from '@utils/storage' import { getAccessToken } from '@/constant/token'
// 获取.env中的服务地址 // 获取.env中的服务地址
const { VITE_BASE_API, VITE_ENV } = import.meta.env const { VITE_BASE_API, VITE_ENV } = import.meta.env
@@ -18,8 +18,7 @@ const instance = axios.create({
// 添加拦截器 // 添加拦截器
instance.interceptors.request.use((config) => { instance.interceptors.request.use((config) => {
// const token = Session.getToken() const token = getAccessToken();
const token = 'H7rzcCtsvPqwc0ecDnBT9mlhOqHsWDyS6nXkRjnd1oAgOQqlEhsCy4OZPQ8YyVBj57pmNpwSXJYcd6Ox4YB-W1pHr4aTM9_d6nYJ3OrbRB9f0J7kP9FbbviN609nGO0m'
config.headers['Authorization'] = `Bearer ${token}` config.headers['Authorization'] = `Bearer ${token}`
// get请求映射params参数 // get请求映射params参数

7
src/constant/token.ts Normal file
View File

@@ -0,0 +1,7 @@
import { Session } from '@/utils/storage'
export const getAccessToken = () => {
const token = Session.getToken()
// const token = 'H7rzcCtsvPqwc0ecDnBT9mlhOqHsWDyS6nXkRjnd1oAgOQqlEhsCy4OZPQ8YyVBj57pmNpwSXJYcd6Ox4YB-W1pHr4aTM9_d6nYJ3OrbRB9f0J7kP9FbbviN609nGO0m'
return token;
}

View File

@@ -68,6 +68,7 @@ import { useRouter } from 'vue-router';
import TopNavBar from '../components/TopNavBar.vue'; import TopNavBar from '../components/TopNavBar.vue';
// @ts-ignore // @ts-ignore
import { generatorPhotoTaskList } from '@api'; import { generatorPhotoTaskList } from '@api';
import { closeToast, showLoadingToast } from 'vant';
interface TaskItem { interface TaskItem {
name: string name: string
@@ -92,7 +93,9 @@ const lookPicture = (item: TaskItem) => {
} }
const getTaskList = () => { const getTaskList = () => {
showLoadingToast('加载中...');
generatorPhotoTaskList({ pageNum: 1, pageSize: 20 }).then(res => { generatorPhotoTaskList({ pageNum: 1, pageSize: 20 }).then(res => {
closeToast(); // 关闭加载提示
if (res.code === 0) { if (res.code === 0) {
const data = res.data || []; const data = res.data || [];
list.splice(0, list.length, ...data.map(item => { list.splice(0, list.length, ...data.map(item => {

View File

@@ -58,6 +58,9 @@ import PhotoGuide from '../components/PhotoGuide.vue';
import AgreementTip from '../components/AgreementTip.vue'; import AgreementTip from '../components/AgreementTip.vue';
// @ts-ignore // @ts-ignore
import { getAigcSceneList, AigcSceneListItem, AigcSceneStyleItem } from '@api'; import { getAigcSceneList, AigcSceneListItem, AigcSceneStyleItem } from '@api';
// @ts-ignore
import { createGeneratorPhotoTask, updateImageFile } from '@api';
import { showFailToast, showSuccessToast } from 'vant';
// --- 测试数据 --- // --- 测试数据 ---
const styles = [ const styles = [
@@ -107,7 +110,48 @@ const onStartSelect = () => {
console.log("用户已阅读说明,开始打开相册逻辑..."); console.log("用户已阅读说明,开始打开相册逻辑...");
showGuide.value = false; showGuide.value = false;
// 这里写调用系统相册的代码 // 这里写调用系统相册的代码
router.push('/generate'); uploadImage();
};
// 调用上传
const uploadImage = () => {
wx.miniProgram.postMessage({
data: { action: 'chooseAndUpload' }
});
}
// 监听 hash 变化,获取结果
window.addEventListener('hashchange', function() {
const hash = window.location.hash;
if (hash.startsWith('#uploadResult=')) {
const imageUrl = decodeURIComponent(hash.substring('#uploadResult='.length));
console.log('上传成功,图片地址:', imageUrl);
// 这里就可以使用 imageUrl 了,比如赋值给某个变量或调用业务逻辑
if (!imageUrl || imageUrl === 'error') {
showFailToast('获取图片地址失败,请重试。');
return;
}
sendGeneratorPhotoTask(imageUrl);
// 可选:清除 hash避免重复触发
history.replaceState(null, null, window.location.pathname + window.location.search);
}
});
/// 发送生成任务
const sendGeneratorPhotoTask = async (photoUrl: string) => {
const photoUrlList = [photoUrl];
try {
const response = await createGeneratorPhotoTask({ photoUrlList: photoUrlList });
if (response) {
showSuccessToast('生成任务创建成功!');
router.push('/generate');
} else {
showFailToast('生成任务创建失败,请重试。');
}
} catch (error) {
console.error('创建生成任务时发生错误:', error);
showFailToast('创建生成任务时发生错误,请稍后再试。');
}
}; };

View File

@@ -38,6 +38,7 @@ import TopNavBar from '../components/TopNavBar.vue';
import VueEasyLightbox from 'vue-easy-lightbox'; import VueEasyLightbox from 'vue-easy-lightbox';
// @ts-ignore // @ts-ignore
import 'vue-easy-lightbox/dist/external-css/vue-easy-lightbox.css'; // 导入其 CSS import 'vue-easy-lightbox/dist/external-css/vue-easy-lightbox.css'; // 导入其 CSS
import { showToast } from 'vant';
const disclaimerText = ref('脑洞特效由 AI 随机生成,如未达预期敬请谅解。') const disclaimerText = ref('脑洞特效由 AI 随机生成,如未达预期敬请谅解。')
@@ -69,8 +70,22 @@ const handleHide = () => {
}; };
const handleSave = () => { const handleSave = () => {
console.log('保存图片:', sceneData.value ? (sceneData.value.title || sceneData.value.name) : ''); saveImage();
alert('图片已保存至相册 (示例)'); };
const saveImage = () => {
if (!imageUrl.value) {
showToast('图片地址无效,无法保存');
return;
}
// 发送消息给小程序
wx.miniProgram.postMessage({
data: {
action: 'saveImage',
imageUrl: imageUrl
}
});
}; };
</script> </script>