diff --git a/src/views/Creative/MyCreation.vue b/src/views/Creative/MyCreation.vue index 40f5d333..1be826a0 100644 --- a/src/views/Creative/MyCreation.vue +++ b/src/views/Creative/MyCreation.vue @@ -68,7 +68,7 @@
编辑
- +
添加到素材库
@@ -222,31 +222,63 @@ const edit = (row) => { const createToMaterial = (row) => { - Modal.confirm({ - title: "添加到素材库", - content: "确认将此3D产品模型添加到素材库?", - async onOk () { - - const data = row.materials[0].space_json; + if(row.type == CREATIVE_TYPE.RING_360) { + Modal.confirm({ + title: "添加到素材库", + content: "确认将此3D环物添加到素材库?", + async onOk () { + + const data = row.materials[0].space_json; - var obj = THREE_D_TYPE_S.find(x => x.type == THREE_D_TYPE.WARE); + var obj = THREE_D_TYPE_S.find(x => x.type == THREE_D_TYPE.RING_3D); - var target = JSON.parse(JSON.stringify(obj)); - target.title = row.title; - target.cover = row.cover; - target.fileList = [{ response: {}}]; - target = buildData(target); - target.data = { - ...target.data, - ...data - } + var target = JSON.parse(JSON.stringify(obj)); + target.title = row.title; + target.cover = row.cover; + target.fileList = [{ response: {}}]; + target = buildData(target); + + target.data = { + ...target.data, + ...data + } - await createMaterialLibrary(target); + await createMaterialLibrary(target); - message.success("添加成功"); - }, - onCancel () { }, - }); + message.success("添加成功"); + }, + onCancel () { }, + }); + } + + if(row.type == CREATIVE_TYPE.MODEL_3D) { + Modal.confirm({ + title: "添加到素材库", + content: "确认将此3D产品模型添加到素材库?", + async onOk () { + + const data = row.materials[0].space_json; + + var obj = THREE_D_TYPE_S.find(x => x.type == THREE_D_TYPE.WARE); + + var target = JSON.parse(JSON.stringify(obj)); + target.title = row.title; + target.cover = row.cover; + target.fileList = [{ response: {}}]; + target = buildData(target); + + target.data = { + ...target.data, + ...data + } + + await createMaterialLibrary(target); + + message.success("添加成功"); + }, + onCancel () { }, + }); + } } diff --git a/src/views/Creative/components/CreateCreative/Creative.constant.js b/src/views/Creative/components/CreateCreative/Creative.constant.js index 3a1b2775..a0aca265 100644 --- a/src/views/Creative/components/CreateCreative/Creative.constant.js +++ b/src/views/Creative/components/CreateCreative/Creative.constant.js @@ -1,4 +1,5 @@ -import { THREE_D_TYPE } from "../CreateMaterial/Material.constant" +import { THREE_D_TYPE } from "../CreateMaterial/Material.constant"; +import { createUrlTempForRing3D } from "../_creative.utils"; export const CREATIVE_TYPE = { THREE_D: 1, @@ -135,11 +136,29 @@ const factorys = [ const data = origin.data; var key = new Date().getTime(); + var temp = createUrlTempForRing3D(data.fileList); data.fileList.sort((a, b) => a.name.localeCompare(b.name)); origin.data = { - imgs: data.fileList.map(x => ({name: x.name, url: x.url})) + + "id": `ring-${key}`, + "name": `${data.title}`, + "url": temp, + "urlSmall": temp, + "urlThumb": data.fileList[0].url, + "rsFrames": data.fileList.length, + "rsClockwise": true, + "rsFirstRotY": 0, + "rsWidth": 0.2, + "rsHeight": 0.2, + "rsCenterY": 0.45, + "type": 21, + + "imgs": data.fileList.map(x => ({name: x.name, url: x.url})), + + "surveyLogo": "", + "surveyPrice": 0 }; origin.cover = data.fileList[0].url; diff --git a/src/views/Creative/components/CreateMaterial/Material.constant.js b/src/views/Creative/components/CreateMaterial/Material.constant.js index 08870556..e5e421ed 100644 --- a/src/views/Creative/components/CreateMaterial/Material.constant.js +++ b/src/views/Creative/components/CreateMaterial/Material.constant.js @@ -1,4 +1,5 @@ import { try_append_shelf_originCells } from "../../lib/shelves.module"; +import { createUrlTempForRing3D } from "../_creative.utils"; export const THREE_D_TYPE = { PANORAMA: 1, @@ -218,14 +219,15 @@ const factorys = [ type: THREE_D_TYPE.RING_3D, build(data){ var key = new Date().getTime(); + var temp = createUrlTempForRing3D(data.fileList); return { ...data, data: { - "id": `ware-${key}`, + "id": `ring-${key}`, "name": `${data.title}`, - "url": data.urlTempForScene, - "urlSmall": data.urlTempForScene, + "url": temp, + "urlSmall": temp, "urlThumb": data.fileList[0].url, "rsFrames": data.fileList.length, "rsClockwise": true, @@ -240,7 +242,6 @@ const factorys = [ "surveyLogo": "", "surveyPrice": 0 }, - cover: data.fileList[0].url, fileList: undefined }; } diff --git a/src/views/Creative/components/CreateMaterial/Ring3DMaterial.vue b/src/views/Creative/components/CreateMaterial/Ring3DMaterial.vue index 87a24194..b586574f 100644 --- a/src/views/Creative/components/CreateMaterial/Ring3DMaterial.vue +++ b/src/views/Creative/components/CreateMaterial/Ring3DMaterial.vue @@ -62,7 +62,6 @@ const formData = ref({ type: 0, title: '', fileList: [], - urlTempForScene: "", }); const cancelText = computed(() => { @@ -96,7 +95,6 @@ const show = (type) => { var target = JSON.parse(JSON.stringify(obj)); target.title = ""; target.fileList = []; - target.urlTempForScene = ""; formData.value = target; step.value = 0; visible.value = true; @@ -119,49 +117,11 @@ const onCustomRequest = async (upload) => { // upload.onSuccess(data); } -const resolveUrlTempForScene = (url) => { - - if(formData.value.urlTempForScene.includes("$2")) { - return; - } - - if(!formData.value.urlTempForScene) { - formData.value.urlTempForScene = url; - } - else{ - - var arr = []; - var start = 0; - var end = 0; - var i = 0; - for(i = 0; i <= formData.value.urlTempForScene.length; i++){ - - if(formData.value.urlTempForScene.charAt(i) == url.charAt(i)){ - end = i; - continue; - } - - if(end > start) arr.push({start, end}); - - start = i + 1; - } - - if(end > start) arr.push({start, end}); - - var res = arr.map(item => url.substring(item.start, item.end)); - - formData.value.urlTempForScene = res.join("$2"); - - } -} - - const execUpload = async () => { var dir = new Date().getTime(); await Promise.all(formData.value.fileList.map((file) => new Promise((resolve, reject) => { common.cosUpload3D(file.originFileObj, `${dir}/${file.name}`).then(data => { file.url = data.url; - resolveUrlTempForScene(data.url); resolve(); }); }))) @@ -182,22 +142,24 @@ const ok = async () => { message.warning("请上传3D环物资源") return; } - // if(formData.value.fileList.length < 30) { - // message.warning("上传3D环物资源不能小于30张") - // return; - // } - // if(formData.value.fileList.length > 40) { - // message.warning("上传3D环物资源不能大于40张") - // return; - // } - // if(formData.value.fileList.reduce(((ctx, cur) => ctx + cur.size), 0) > 500 * 1024 * 1024) { - // message.warning("上传3D环物资源不能大于500M") - // return; - // } + if(formData.value.fileList.length < 30) { + message.warning("上传3D环物资源不能小于30张") + return; + } + if(formData.value.fileList.length > 40) { + message.warning("上传3D环物资源不能大于40张") + return; + } + if(formData.value.fileList.reduce(((ctx, cur) => ctx + cur.size), 0) > 500 * 1024 * 1024) { + message.warning("上传3D环物资源不能大于500M") + return; + } stepLoading.value = true; await execUpload(); + + formData.value.cover = formData.value.fileList[0].response.url; const data = JSON.parse(JSON.stringify(formData.value)); await createMaterialLibrary(buildData(data)); diff --git a/src/views/Creative/components/_creative.utils.js b/src/views/Creative/components/_creative.utils.js new file mode 100644 index 00000000..67e2e9f9 --- /dev/null +++ b/src/views/Creative/components/_creative.utils.js @@ -0,0 +1,44 @@ + + +export const createUrlTempForRing3D = (imgs) => { + + var temp = ""; + + imgs.forEach(({ url }) => { + + + if(temp.includes("$2")) { + return; + } + + if(!temp) { + temp = url; + } + else{ + + var arr = []; + var start = 0; + var end = 0; + var i = 0; + for(i = 0; i <= temp.length; i++){ + + if(temp.charAt(i) == url.charAt(i)){ + end = i; + continue; + } + + if(end > start) arr.push({start, end}); + + start = i + 1; + } + + if(end > start) arr.push({start, end}); + + var res = arr.map(item => url.substring(item.start, item.end)); + + temp = res.join("$2"); + } + }); + + return temp; +} \ No newline at end of file