|
@@ -3,6 +3,7 @@ import { MatchModule } from "@/modules/match";
|
|
|
import { QueditorModule } from "@queenjs-modules/queditor";
|
|
|
import { switchSceneProdComp } from "@queenjs-modules/queditor/module/controls/Queen3dCtrl/actions/geom";
|
|
|
import { PackMat } from "@queenjs-modules/queditor/objects";
|
|
|
+import { queenApi } from "queenjs";
|
|
|
|
|
|
export default function createController(
|
|
|
match: MatchModule,
|
|
@@ -41,16 +42,32 @@ export default function createController(
|
|
|
queditor.actions.updatePackProductCompMat(targetCom, PackMat.create());
|
|
|
}
|
|
|
|
|
|
- ctrl.changeMatGroupIndex = (key: string, matsGroup: MatsMatchComp) => {
|
|
|
+ ctrl.matItemAction = (
|
|
|
+ key: string,
|
|
|
+ matsGroup: MatsMatchComp,
|
|
|
+ index: number,
|
|
|
+ currentMats: PackMat
|
|
|
+ ) => {
|
|
|
+ switch (key) {
|
|
|
+ case "delete":
|
|
|
+ match.actions.deleteGroupMat(matsGroup, index);
|
|
|
+ break;
|
|
|
+ case "rename":
|
|
|
+ ctrl.renameGroupMat(currentMats);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ ctrl.matGroupAction = (key: string, matsGroup: MatsMatchComp) => {
|
|
|
switch (key) {
|
|
|
case "rename":
|
|
|
- match.actions.renameMatGroup(matsGroup);
|
|
|
+ ctrl.renameMatGroup(matsGroup);
|
|
|
break;
|
|
|
case "lock":
|
|
|
- match.actions.lockMatGroup();
|
|
|
+ ctrl.lockMatGroup();
|
|
|
break;
|
|
|
case "clear":
|
|
|
- match.actions.clearMatGroup(matsGroup);
|
|
|
+ ctrl.clearMatGroup(matsGroup);
|
|
|
// removePackMat? 是否删除面料列表数据
|
|
|
switchComp(matsGroup.name);
|
|
|
clearCompMat(matsGroup);
|
|
@@ -82,58 +99,97 @@ export default function createController(
|
|
|
return queditor.store.currActiveProdComp?.name == matsGroup.name;
|
|
|
};
|
|
|
|
|
|
- ctrl.switchGroup = (matsGroup: MatsMatchComp) => {
|
|
|
+ ctrl.switchGroupIndex = (matsGroup: MatsMatchComp) => {
|
|
|
switchComp(matsGroup.name || "");
|
|
|
};
|
|
|
|
|
|
- // 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, extraData);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // );
|
|
|
-
|
|
|
- // function dropMesh(dropData: any, target: any) {
|
|
|
- // console.log("dropData: ", dropData, target);
|
|
|
- // //
|
|
|
- // }
|
|
|
-
|
|
|
- // // 拖拽面料
|
|
|
- // function dropMat(mat: IMaterial, extraData: any) {
|
|
|
- // const currGroup = findmatsGroup(extraData);
|
|
|
- // if (!currGroup.matIds) currGroup.matIds = [];
|
|
|
-
|
|
|
- // // TODO 判断重复拖拽
|
|
|
- // if (currGroup.matIds.includes(mat.id)) {
|
|
|
- // queenApi.messageError("不能重复添加色卡");
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // // update
|
|
|
- // 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);
|
|
|
- // currGroup.matIds.push(mat.id);
|
|
|
- // currGroup.index = currGroup.matIds.length - 1;
|
|
|
- // }
|
|
|
-
|
|
|
- // function findmatsGroup(target: MatsMatchComp) {
|
|
|
- // const currGroup = match.store.menuOptions.sourceData.mat.find(
|
|
|
- // (r: MatsMatchComp) =>
|
|
|
- // r.name == target.name && r.productId == target.productId
|
|
|
- // );
|
|
|
- // return currGroup;
|
|
|
- // }
|
|
|
+ ctrl.unbindScroll = () => {
|
|
|
+ const app = queditor.controls.queen3dCtrl.queen3d.getAppInstance();
|
|
|
+ app.unbind("tap:click");
|
|
|
+ ctrl.scrollEl = undefined;
|
|
|
+ };
|
|
|
+
|
|
|
+ ctrl.initScroll = (el) => {
|
|
|
+ const app = queditor.controls.queen3dCtrl.queen3d.getAppInstance();
|
|
|
+
|
|
|
+ app.on("tap:click", (geom: any, clicked: boolean) => {
|
|
|
+ if (!clicked) return;
|
|
|
+ const scrollEl = el.$el.querySelector(".content");
|
|
|
+ ctrl.scrollEl = scrollEl;
|
|
|
+ scrollToElement();
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ function scrollToElement() {
|
|
|
+ if (!ctrl.scrollEl) return;
|
|
|
+ const doms = ctrl.scrollEl.querySelectorAll(".JSDrop");
|
|
|
+ if (!doms.length) return;
|
|
|
+ const index = match.store.menuOptions.sourceData.mat.findIndex(
|
|
|
+ (d: any) => d.name == queditor.store.currActiveProdComp?.name
|
|
|
+ );
|
|
|
+
|
|
|
+ ctrl.scrollEl.scrollTo({
|
|
|
+ top: doms[index].offsetTop - doms[0].offsetTop,
|
|
|
+ behavior: "smooth",
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ ctrl.initEvent = () => {
|
|
|
+ // drag to mesh
|
|
|
+ // queditor.actions.on("updatePackProductCompMat:success", (...args) => {
|
|
|
+ // console.error("updatePackProductCompMat:success*************");
|
|
|
+ // scrollToElement();
|
|
|
+ // });
|
|
|
+
|
|
|
+ // drag to group
|
|
|
+ queditor.controls.drager.on(
|
|
|
+ "drop:selfDrop",
|
|
|
+ async (event: DragEvent, { type, data }: any, extraData: any) => {
|
|
|
+ const dropData = await data();
|
|
|
+ if (type == "asset3d.mat") {
|
|
|
+ dropMat(dropData, extraData);
|
|
|
+ } else if (type == "asset3d.mesh") {
|
|
|
+ dropMesh(dropData, extraData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ };
|
|
|
+
|
|
|
+ ctrl.destroy = () => {
|
|
|
+ queditor.controls.drager.unbind("drop:selfDrop");
|
|
|
+ };
|
|
|
+
|
|
|
+ function dropMesh(dropData: any, target: any) {
|
|
|
+ console.log("dropData: ", dropData, target);
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+ // 拖拽面料
|
|
|
+ function dropMat(mat: PackMat, extraData: any) {
|
|
|
+ const currGroup = findmatsGroup(extraData);
|
|
|
+ if (!currGroup.matIds) currGroup.matIds = [];
|
|
|
+
|
|
|
+ if (currGroup.matIds.includes(mat.id)) {
|
|
|
+ queenApi.messageError("不能重复添加色卡");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // update mat
|
|
|
+ const targetPro = queditor.helper.findProductDef(extraData.productId);
|
|
|
+ const targetCom = findCompDef(targetPro, extraData.name);
|
|
|
+ if (!targetCom) return;
|
|
|
+
|
|
|
+ queditor.actions.updatePackProductCompMat(targetCom, mat, true);
|
|
|
+ currGroup.matIds.push(mat.id);
|
|
|
+ currGroup.index = currGroup.matIds.length - 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ function findmatsGroup(target: MatsMatchComp) {
|
|
|
+ const currGroup = match.store.menuOptions.sourceData.mat.find(
|
|
|
+ (r: MatsMatchComp) =>
|
|
|
+ r.name == target.name && r.productId == target.productId
|
|
|
+ );
|
|
|
+ return currGroup;
|
|
|
+ }
|
|
|
|
|
|
return ctrl;
|
|
|
}
|