fix: 创作中心3D环物数据同步
This commit is contained in:
@@ -68,7 +68,7 @@
|
||||
<a-menu-item v-if="row.type != CREATIVE_TYPE.RING_360 && (isAdmin || row.is_owner)">
|
||||
<div @click="edit(row)">编辑</div>
|
||||
</a-menu-item>
|
||||
<a-menu-item v-if="row.type == CREATIVE_TYPE.MODEL_3D && (isAdmin || row.is_owner)">
|
||||
<a-menu-item v-if="[CREATIVE_TYPE.RING_360, CREATIVE_TYPE.MODEL_3D].includes(row.type) && (isAdmin || row.is_owner)">
|
||||
<div @click="createToMaterial(row)">添加到素材库</div>
|
||||
</a-menu-item>
|
||||
<a-menu-item v-if="isAdmin || row.is_owner">
|
||||
@@ -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 () { },
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
44
src/views/Creative/components/_creative.utils.js
Normal file
44
src/views/Creative/components/_creative.utils.js
Normal file
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user