803 lines
34 KiB
JavaScript
803 lines
34 KiB
JavaScript
import { clientApi, requestUtils } from '@deotaland/utils';
|
||
export class Project{
|
||
static timer = null;
|
||
//项目时常
|
||
duration_seconds = 0;
|
||
constructor() {
|
||
// 用于防抖处理的定时器
|
||
this.updateTimer = null;
|
||
// 存储最新的请求参数
|
||
this.latestUpdateParams = null;
|
||
}
|
||
//创建项目
|
||
async createProject(name='project',) {
|
||
return new Promise(async (resolve, reject) => {
|
||
let params = {
|
||
"thumbnail": "",//项目缩略图
|
||
"title": name,//项目标题
|
||
"description": "init",//项目描述
|
||
"details": {
|
||
"node_card": [],
|
||
"prompt":'',
|
||
"thumbnail": "", // 缩略图
|
||
},
|
||
"tags": [
|
||
"doll"
|
||
],
|
||
"duration_seconds": 0,//项目时长(秒)
|
||
}
|
||
let res = await requestUtils.common(clientApi.default.PROJECT_CREATE,params)
|
||
if(res.code !== 0){
|
||
reject(res)
|
||
}else{
|
||
resolve(res.data)
|
||
}
|
||
})
|
||
}
|
||
//更新项目(带防抖处理,三秒内只执行最后一次请求)
|
||
async updateProject(projectId,projectConfig) {
|
||
return new Promise(async (resolve, reject) => {
|
||
// 存储最新的请求参数
|
||
const params = {
|
||
"id": projectId,//项目ID
|
||
...projectConfig
|
||
};
|
||
this.latestUpdateParams = params;
|
||
|
||
// 清除之前的定时器
|
||
if (this.updateTimer) {
|
||
clearTimeout(this.updateTimer);
|
||
}
|
||
// 设置新的3秒定时器
|
||
this.updateTimer = setTimeout(async () => {
|
||
try {
|
||
const res = await requestUtils.common(clientApi.default.PROJECT_UPDATE, this.latestUpdateParams);
|
||
if(res.code !== 0){
|
||
reject(res)
|
||
}else{
|
||
resolve(res.data)
|
||
}
|
||
} catch (error) {
|
||
reject(error);
|
||
} finally {
|
||
// 清除定时器引用
|
||
this.updateTimer = null;
|
||
}
|
||
}, 1000);
|
||
})
|
||
}
|
||
//删除项目
|
||
async deleteProject(projectId) {
|
||
return new Promise(async (resolve, reject) => {
|
||
let params = {
|
||
"id": projectId,//项目ID
|
||
}
|
||
let res = await requestUtils.common(clientApi.default.PROJECT_DELETE,params)
|
||
if(res.code !== 0){
|
||
reject(res)
|
||
}else{
|
||
resolve(res.data)
|
||
}
|
||
})
|
||
}
|
||
//获取项目详情
|
||
async getProject(projectId) {
|
||
return new Promise(async (resolve, reject) => {
|
||
let params = {
|
||
"id": projectId,//项目ID
|
||
}
|
||
let res = await requestUtils.common(clientApi.default.PROJECT_GET,params)
|
||
if(res.code !== 0){
|
||
reject(res)
|
||
}else{
|
||
resolve(res.data)
|
||
}
|
||
})
|
||
}
|
||
//获取项目列表
|
||
async getProjectList(params) {
|
||
return new Promise(async (resolve, reject) => {
|
||
// resolve({
|
||
// "items": [
|
||
// {
|
||
// "id": 20,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T05:36:19.758116+00:00",
|
||
// "updated_at": "2025-11-28T06:05:04.982516+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 19,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "蛇系",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "蛇系美女",
|
||
// "status": "success",
|
||
// "zIndex": 112,
|
||
// "offsetX": "-191px",
|
||
// "offsetY": "-230px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/932512adb172459db6cb1d02c12c842e.png",
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T05:34:17.545Z",
|
||
// "project_id": "19",
|
||
// "inspirationImage": ""
|
||
// },
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "蛇系美女",
|
||
// "status": "success",
|
||
// "zIndex": 117,
|
||
// "offsetX": "96px",
|
||
// "offsetY": "-247px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/2e58e1dfc1d8459eb2b094e7c1ce459e.png",
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T05:34:17.546Z",
|
||
// "project_id": "19",
|
||
// "inspirationImage": ""
|
||
// },
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "蛇系美女",
|
||
// "status": "success",
|
||
// "zIndex": 121,
|
||
// "offsetX": "81px",
|
||
// "offsetY": "212px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/9d9d70a5ecbe4e1ab4298d3ad14a8402.png",
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T05:34:17.546Z",
|
||
// "project_id": "19",
|
||
// "inspirationImage": ""
|
||
// },
|
||
// {
|
||
// "type": "model",
|
||
// "status": "success",
|
||
// "taskId": "019ac8f5-c5b2-775e-a36d-19a4651275dd",
|
||
// "zIndex": 117,
|
||
// "offsetX": "-223px",
|
||
// "offsetY": "210px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/2e58e1dfc1d8459eb2b094e7c1ce459e.png",
|
||
// "modelUrl": "https://api.deotaland.ai/model/ae501c6d-79fd-4bca-9768-f315ee977749/tasks/019ac8f5-c5b2-775e-a36d-19a4651275dd/output/model.glb?Expires=4917908316&Signature=Vo3dEReKA3MeFRoxQxs6xf0Ypj4lkf8sJiOk43~2M95Mw7qv5WvjPmmKRktj6XIoAlZ4wvtB-zjmhR8rxK9CMR0uRJC~v06e8jDJBViDpjaB5TC6cyvb5EQK8gEPq-lr4p8wfWoNDtO0sX6Zmby~4Z-vhp2wg9Vc4GuzqJ6Uj89qBJgAx-~i2QaGDdRaJ~qqIdCp82zZnNi8Rl-2JEfiMeMWDAUzDbqTG4Hy4yKLsZ2TBQh2YZEJZcwOYdwbwVokFPuAHn-EyIDcxHtUsLqUp8JDB~yALWmuidw1ETQUUPl914T~FfmkWfb0SqVcdIDDkNl-sLwKaxdW8hyCOCYpXA__&Key-Pair-Id=KL5I0C8H7HX83",
|
||
// "cardWidth": "250",
|
||
// "timestamp": "2025-11-28T05:35:41.218Z",
|
||
// "project_id": "19",
|
||
// "generateFourView": false
|
||
// }
|
||
// ],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T05:33:35.161488+00:00",
|
||
// "updated_at": "2025-11-28T06:05:01.156032+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 4,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 1
|
||
// },
|
||
// {
|
||
// "id": 18,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "蛇系",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "蛇系女孩",
|
||
// "status": "success",
|
||
// "zIndex": 102,
|
||
// "offsetX": "-446px",
|
||
// "offsetY": "-210px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/2ada0aaffd0945b49f67a0da85afc20c.png",
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T05:29:06.741Z",
|
||
// "project_id": 18,
|
||
// "inspirationImage": ""
|
||
// },
|
||
// {
|
||
// "type": "model",
|
||
// "status": "success",
|
||
// "taskId": "019ac8f0-1ff1-78a9-885c-9258854baedb",
|
||
// "zIndex": 102,
|
||
// "offsetX": "8px",
|
||
// "offsetY": "-236px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/2ada0aaffd0945b49f67a0da85afc20c.png",
|
||
// "modelUrl": "https://api.deotaland.ai/model/ae501c6d-79fd-4bca-9768-f315ee977749/tasks/019ac8f0-1ff1-78a9-885c-9258854baedb/output/model.glb?Expires=4917907940&Signature=XcZPFzqb3JSAN1hYpm2SU~NXxn40ytlfJv~WkULZGw5ZBnNijdBxAPLYLde-FZaoX8OPHZTexnP6odftS1MXtt9NAv2Q-goLd9ey~iHrl25ihXCdTENYilhXSCi5jQS54I6x-GerPpbfKi-61hxRLO4flLAwqxTMXqueDNVMZBq7sQwJ5CsA~9wft503w2qQZBajBBTykFxUYAGFkSFYPcb5uO7Xw1JTrj3BQ~r7QCzSOAyZmK2hnDKKi160gt425h28351DOW3jP2eiV5TsLaTkJnHyUT7bVX1~JFEuO53R9d~rGwdrToLYb6NW~bkiII218VOb6ZN51oU~SVkKPA__&Key-Pair-Id=KL5I0C8H7HX83",
|
||
// "cardWidth": "250",
|
||
// "timestamp": "2025-11-28T05:29:31.065Z",
|
||
// "project_id": 18,
|
||
// "generateFourView": false
|
||
// }
|
||
// ],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T05:28:39.047049+00:00",
|
||
// "updated_at": "2025-11-28T05:32:35.485785+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 1,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 1
|
||
// },
|
||
// {
|
||
// "id": 17,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "恐龙妹系列",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "恐龙妹妹",
|
||
// "status": "success",
|
||
// "zIndex": 106,
|
||
// "offsetX": "-409px",
|
||
// "offsetY": "-336px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/580886031063469781f18d6ef7f0b09c.png",
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T05:24:06.918Z",
|
||
// "project_id": 17,
|
||
// "inspirationImage": ""
|
||
// }
|
||
// ],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T05:23:50.666448+00:00",
|
||
// "updated_at": "2025-11-28T05:24:38.270082+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 1,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 1
|
||
// },
|
||
// {
|
||
// "id": 16,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T05:23:20.613163+00:00",
|
||
// "updated_at": "2025-11-28T05:23:23.442095+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 15,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T04:16:02.800209+00:00",
|
||
// "updated_at": "2025-11-28T04:16:02.800209+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 14,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T04:14:37.402123+00:00",
|
||
// "updated_at": "2025-11-28T04:14:41.210826+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 13,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T04:14:21.190171+00:00",
|
||
// "updated_at": "2025-11-28T04:14:23.700132+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 12,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T04:14:16.233977+00:00",
|
||
// "updated_at": "2025-11-28T04:14:18.747615+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 11,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "猫系玩偶系列",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "猫女",
|
||
// "status": "success",
|
||
// "zIndex": 101,
|
||
// "offsetX": "92px",
|
||
// "offsetY": "-395px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/526afeec880e46688d6e2edd1893e778.png",
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T04:11:03.655Z",
|
||
// "project_id": "11",
|
||
// "inspirationImage": ""
|
||
// },
|
||
// {
|
||
// "type": "model",
|
||
// "status": "success",
|
||
// "taskId": "https://api.deotaland.ai/model/ae501c6d-79fd-4bca-9768-f315ee977749/tasks/019ac8d3-959d-7432-ac15-b5bab5c75b74/output/model.glb?Expires=4917906081&Signature=W88kkM3xYsvvJkiroo1RV141Jfp03bSQCMATSoBQ2gvct87jfWADJTm80rJTDWuNCBmXcF7dt2kDgB2mGWXjQri1DhAwzY87gIp~bJsvtis6UreApFesKHPhU~BkZGfOW2culwT29NTIY~PkTL9Whg8WZ-Mu9xb6Og6iJHol6E4gIX-jGTrXN67~BWsh17kvgSHN5bmackn9IZ~GGwC2threl0BzeFzgpYEkFuP60fkXeCvFAiZBCd0shZR9tuXa4drdzeg7FJMTWpPhhSBPXEFNeDxOpxiLd8iCrQuyu5s1sxNJuGeDcMfTTDh864J0r4-ap11L0LAnWXyHE69-kw__&Key-Pair-Id=KL5I0C8H7HX83",
|
||
// "zIndex": 101,
|
||
// "offsetX": "-263px",
|
||
// "offsetY": "-388px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/526afeec880e46688d6e2edd1893e778.png",
|
||
// "modelUrl": "https://api.deotaland.ai/model/ae501c6d-79fd-4bca-9768-f315ee977749/tasks/019ac8d3-959d-7432-ac15-b5bab5c75b74/output/model.glb?Expires=4917906081&Signature=W88kkM3xYsvvJkiroo1RV141Jfp03bSQCMATSoBQ2gvct87jfWADJTm80rJTDWuNCBmXcF7dt2kDgB2mGWXjQri1DhAwzY87gIp~bJsvtis6UreApFesKHPhU~BkZGfOW2culwT29NTIY~PkTL9Whg8WZ-Mu9xb6Og6iJHol6E4gIX-jGTrXN67~BWsh17kvgSHN5bmackn9IZ~GGwC2threl0BzeFzgpYEkFuP60fkXeCvFAiZBCd0shZR9tuXa4drdzeg7FJMTWpPhhSBPXEFNeDxOpxiLd8iCrQuyu5s1sxNJuGeDcMfTTDh864J0r4-ap11L0LAnWXyHE69-kw__&Key-Pair-Id=KL5I0C8H7HX83",
|
||
// "cardWidth": "250",
|
||
// "timestamp": "2025-11-28T04:51:05.620Z",
|
||
// "project_id": "11",
|
||
// "generateFourView": false
|
||
// },
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "猫男",
|
||
// "status": "success",
|
||
// "zIndex": 102,
|
||
// "offsetX": "-232px",
|
||
// "offsetY": "66px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/eacac612e5d34e23bbf26491a00fef20.png",
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T05:19:26.236Z",
|
||
// "project_id": "11",
|
||
// "inspirationImage": ""
|
||
// },
|
||
// {
|
||
// "type": "model",
|
||
// "status": "success",
|
||
// "taskId": "019ac8e7-3cf0-7aa8-b441-f94d8d445b88",
|
||
// "zIndex": 102,
|
||
// "offsetX": "466px",
|
||
// "offsetY": "-380px",
|
||
// "imageUrl": "https://api.deotaland.ai/upload/eacac612e5d34e23bbf26491a00fef20.png",
|
||
// "modelUrl": "https://api.deotaland.ai/model/ae501c6d-79fd-4bca-9768-f315ee977749/tasks/019ac8e7-3cf0-7aa8-b441-f94d8d445b88/output/model.glb?Expires=4917907360&Signature=HTG71MVGMBj-inbrX4fjHwf3B7xBE~WX~cB--F6cMR-~03fdqyzYKAi-UDt9rnW3md03mJbTiMa2z9z6B~3NP8Exmzp783nfrAQaWfxarDX8iaH9GXPuEePhveXXYmcg2QEBTifPqkU~fwinI6kY9dfNGRTvrp8RHglr3Q8kuhUZS2Mo79OSCg5X-oZ17uEd-uU7hae8IBAPUSiIsbS1dQRjI32WOhDP6NfSZrf304Fn6HMfpyUxbauuPmb7MJ3dQAWUA1g-iBISThp3degZyV4YhhPkxuaBX5t2GlRuibjqmRlUXB2dEasTmKwq-L5zLYbbaVPXg1HfW9zdnuZJ8A__&Key-Pair-Id=KL5I0C8H7HX83",
|
||
// "cardWidth": "250",
|
||
// "timestamp": "2025-11-28T05:19:48.668Z",
|
||
// "project_id": "11",
|
||
// "generateFourView": false
|
||
// }
|
||
// ],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T03:40:04.226536+00:00",
|
||
// "updated_at": "2025-11-28T05:22:47.719360+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 4,
|
||
// "gemini_failure_count": 2,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 3
|
||
// },
|
||
// {
|
||
// "id": 10,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T03:39:51.024726+00:00",
|
||
// "updated_at": "2025-11-28T04:15:11.880275+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 9,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T03:39:18.867572+00:00",
|
||
// "updated_at": "2025-11-28T03:39:18.867572+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 8,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": "",
|
||
// "node_card": [
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "111",
|
||
// "status": "success",
|
||
// "zIndex": 106,
|
||
// "offsetX": "-462px",
|
||
// "offsetY": "-105px",
|
||
// "imageUrl": 1,
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T03:17:49.448Z",
|
||
// "inspirationImage": ""
|
||
// },
|
||
// {
|
||
// "type": "image",
|
||
// "ipType": "人物",
|
||
// "prompt": "111",
|
||
// "status": "success",
|
||
// "zIndex": 102,
|
||
// "offsetX": "55px",
|
||
// "offsetY": "78px",
|
||
// "imageUrl": 2,
|
||
// "ipTypeImg": "/src/assets/sketches/tcww.png",
|
||
// "timestamp": "2025-11-28T03:17:49.448Z",
|
||
// "inspirationImage": ""
|
||
// }
|
||
// ],
|
||
// "thumbnail": ""
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T03:05:53.897607+00:00",
|
||
// "updated_at": "2025-11-28T03:39:15.975164+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 7,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": [],
|
||
// "ip_card": [],
|
||
// "thumbnail": "",
|
||
// "model_card": []
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-28T01:27:47.283082+00:00",
|
||
// "updated_at": "2025-11-28T01:27:47.283082+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 6,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": [],
|
||
// "ip_card": [],
|
||
// "thumbnail": "",
|
||
// "model_card": []
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-27T09:38:13.654692+00:00",
|
||
// "updated_at": "2025-11-27T09:38:13.654692+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 5,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": [],
|
||
// "ip_card": [],
|
||
// "thumbnail": "",
|
||
// "model_card": []
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-27T09:29:49.987926+00:00",
|
||
// "updated_at": "2025-11-27T09:29:49.987926+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 27,
|
||
// "gemini_failure_count": 20,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 4,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": [],
|
||
// "ip_card": [],
|
||
// "thumbnail": "",
|
||
// "model_card": []
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-27T09:29:23.927850+00:00",
|
||
// "updated_at": "2025-11-27T09:29:23.927850+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// },
|
||
// {
|
||
// "id": 3,
|
||
// "user_id": 1,
|
||
// "thumbnail": "",
|
||
// "title": "project",
|
||
// "description": "init",
|
||
// "details": {
|
||
// "prompt": [],
|
||
// "ip_card": [],
|
||
// "thumbnail": "",
|
||
// "model_card": []
|
||
// },
|
||
// "tags": [
|
||
// "doll"
|
||
// ],
|
||
// "duration_seconds": 0,
|
||
// "created_at": "2025-11-27T09:21:24.768031+00:00",
|
||
// "updated_at": "2025-11-27T09:21:24.768031+00:00",
|
||
// "is_delete": 0,
|
||
// "gemini_success_count": 0,
|
||
// "gemini_failure_count": 0,
|
||
// "meshy_success_count": 0,
|
||
// "meshy_failure_count": 0
|
||
// }
|
||
// ],
|
||
// "page": 1,
|
||
// "page_size": 20,
|
||
// "total": 18
|
||
// })
|
||
// return
|
||
let res = await requestUtils.common(clientApi.default.PROJECT_LIST,params)
|
||
if(res.code !== 0){
|
||
// reject(res)
|
||
|
||
}else{
|
||
resolve(res.data)
|
||
}
|
||
})
|
||
}
|
||
//叠加项目时常
|
||
addProjectDuration = (time) => {
|
||
this.duration_seconds = time;
|
||
if(Project.timer){
|
||
clearInterval(Project.timer);
|
||
}
|
||
Project.timer = setInterval(() => {
|
||
this.duration_seconds +=1;
|
||
}, 1000);
|
||
}
|
||
//获取动态提示词
|
||
async getCombinedPrompt(series){//series:项目系列D1 O1
|
||
try {
|
||
return new Promise(async (resolve, reject) => {
|
||
const res = await requestUtils.common(clientApi.default.combined)
|
||
if(res.code === 0){
|
||
let data = res.data;
|
||
// 如果是Oone系列,过滤掉title中包含"动物坐姿"或"人物姿势"的提示词
|
||
if (series === 'O1') {
|
||
data = data.filter(item => {
|
||
if (!item.title) return true;
|
||
return !item.title.includes('动物坐姿') && !item.title.includes('人物姿势')&& item.type != 'D1';
|
||
});
|
||
}else if(series === 'D1'){// 如果是Done系列,过滤掉type为O1的提示词
|
||
data = data.filter(item => item.type !== 'O1');
|
||
}
|
||
// 初始化返回数据结构
|
||
const result = {
|
||
person: {
|
||
content: '',
|
||
imgs: []
|
||
},
|
||
animal: {
|
||
content: '',
|
||
imgs: []
|
||
}
|
||
};
|
||
// 按sortOrder排序
|
||
data.sort((a, b) => a.sortOrder - b.sortOrder);
|
||
// 处理person和general类型的数据
|
||
const personAndGeneral = data.filter(item => item.type === 'person' || item.type === 'general'|| item.type === 'O1');
|
||
personAndGeneral.forEach(item => {
|
||
// 拼接content
|
||
result.person.content += item.content;
|
||
// 处理图片
|
||
if (item.imageUrls) {
|
||
try {
|
||
const images = JSON.parse(item.imageUrls);
|
||
if (Array.isArray(images)) {
|
||
result.person.imgs.push(...images);
|
||
}
|
||
} catch (e) {
|
||
console.error('解析imageUrls失败:', e);
|
||
}
|
||
}
|
||
});
|
||
// 处理animal和general类型的数据
|
||
const animalAndGeneral = data.filter(item => item.type === 'animal' || item.type === 'general'|| item.type === 'O1');
|
||
animalAndGeneral.forEach(item => {
|
||
// 拼接content
|
||
result.animal.content += item.content;
|
||
// 处理图片
|
||
if (item.imageUrls) {
|
||
try {
|
||
const images = JSON.parse(item.imageUrls);
|
||
if (Array.isArray(images)) {
|
||
result.animal.imgs.push(...images);
|
||
}
|
||
} catch (e) {
|
||
console.error('解析imageUrls失败:', e);
|
||
}
|
||
}
|
||
});
|
||
resolve(result);
|
||
}else{
|
||
reject(res.msg)
|
||
}
|
||
})
|
||
} catch (error) {
|
||
reject(error)
|
||
}
|
||
}
|
||
} |