import { useCollocation } from "@/modules/collocation"; import { useQueditor } from "@queenjs-modules/queditor"; import { List } from "@queenjs/ui"; import { queenApi } from "queenjs"; import { defineComponent } from "vue"; import PanelCard from "../components/PanelCard"; import PanelGroup from "../components/PanelGroup"; import MatItem from "./MatItem"; export default defineComponent({ setup() { const queditor = useQueditor(); const collocation = useCollocation(); queditor.controls.drager.on( "drop:selfDrop", async (event: DragEvent, { type, data }: any, extraData: any) => { const dropData = await data(); // console.error("dropData: ", dropData); if (type == "asset3d.mat") { dropMat(dropData, extraData); } else if (type == "asset3d.mesh") { dropMesh(dropData); } } ); function dropMesh(dropData: any) { console.log("dropData: ", dropData); // } // 拖拽面料 function dropMat(mat: IMaterial, extraData: any) { const targetPro = queditor.store.pack.products.find( (p) => p.id == extraData.productId ); const targetCom = targetPro?.components.find( (c) => c.name == extraData.name ); if (!targetCom) return; queditor.actions.updatePackProductCompMat(targetCom, mat, true); const currComp = findCurrentComp(extraData); if (!currComp.matIds) currComp.matIds = []; // TODO 判断重复拖拽 if (currComp.matIds.includes(mat.id)) { queenApi.messageError("不能重复添加色卡"); return; } currComp.matIds.push(mat.id); currComp.index = currComp.matIds.length - 1; } function findCurrentComp(target: MatsMatchComp) { const currComp = collocation.store.menuOptions.sourceData.mat.find( (r: MatsMatchComp) => r.name == target.name && r.productId == target.productId ); return currComp; } async function switchMatsGroupIndex( matsGroup: MatsMatchComp, index: number ) { const currComp = findCurrentComp(matsGroup); currComp.index = index; // const targetPro = queditor.store.pack.products.find( (p) => p.id == matsGroup.productId ); const targetCom = targetPro?.components.find( (c) => c.name == matsGroup.name ); if (!targetCom) return; const mat = queditor.store.pack.mats.find( (m) => m.id == currComp.matIds[index] ); if (!mat) return; queditor.actions.updatePackProductCompMat(targetCom, mat, false); } const switchMatsGroup = () => { // switchSceneProdComp.call(this, sceneProductId, compName); // queditor.controls.queen3dCtrl.queen3d. }; const handleChange = (key: string, matsGroup: MatsMatchComp) => { switch (key) { case "rename": collocation.actions.renameMatGroup(); break; case "lock": collocation.actions.lockMatGroup(); break; case "clear": collocation.actions.clearMatGroup(matsGroup); break; } }; return () => { return ( { console.error(queditor.store.pack); collocation.store.designDetail.scenePack.source = queditor.store.pack; collocation.actions.saveDesign(); }} > {collocation.store.menuOptions.sourceData?.mat.map( (matsGroup: MatsMatchComp, index: number) => { return ( handleChange(key, matsGroup)} onSelect={switchMatsGroup} > {{ item: (matId: string, index: number) => { return ( switchMatsGroupIndex(matsGroup, index) } /> ); }, empty: () => (
暂无数据
), }}
); } )}
); }; }, });