From 78999ce1626d2a786f3a705281eeba79c2f1d6dd Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 22 十月 2024 09:32:27 +0800 Subject: [PATCH] 工艺页面缓存优化 --- src/store/modules/prodRoute.ts | 84 +++++++++++++++++++++------ src/store/modules/multipleTab.ts | 10 ++ src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts | 28 ++++++--- src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts | 18 ++++- src/views/tigerprojects/system/lowcode/normal/mainTable.vue | 10 ++- src/api/tigerapi/model/mesModel.ts | 5 + src/views/tigerprojects/system/lowcode/composition/LeftTree.vue | 16 +++-- src/components/TigerTree/src/hooks/useTree.ts | 6 + 8 files changed, 129 insertions(+), 48 deletions(-) diff --git a/src/api/tigerapi/model/mesModel.ts b/src/api/tigerapi/model/mesModel.ts index 6cd3044..b15dcba 100644 --- a/src/api/tigerapi/model/mesModel.ts +++ b/src/api/tigerapi/model/mesModel.ts @@ -528,3 +528,8 @@ cust:string; children: MesRotTree[] } + +export interface PageRotTree { + name: string; + treeInfo: MesRotTree[]; +} diff --git a/src/components/TigerTree/src/hooks/useTree.ts b/src/components/TigerTree/src/hooks/useTree.ts index 65865e2..9866dbf 100644 --- a/src/components/TigerTree/src/hooks/useTree.ts +++ b/src/components/TigerTree/src/hooks/useTree.ts @@ -202,12 +202,14 @@ //let nodes:TreeItem[]=[]; let node:TreeItem=null; const treeData = list || unref(treeDataRef); + const { key: keyField, children: childrenField } = unref(getFieldNames); + if (!keyField) return; treeData.forEach((item) => { - if (item.id === id) { + if (item[keyField] === id) { node = item; return } - if(isNullOrUnDef(item.children) && item.children.length>0){ + if(!isNullOrUnDef(item.children) && item.children.length>0){ let res=getNodeById(id,item.children) if(res!=null){ node = res; diff --git a/src/store/modules/multipleTab.ts b/src/store/modules/multipleTab.ts index deb7ea7..9885459 100644 --- a/src/store/modules/multipleTab.ts +++ b/src/store/modules/multipleTab.ts @@ -88,7 +88,11 @@ const name = route.name; const useProdRoute = useProdRouteStore(); useProdRoute.setChangeToCPPage(false); - useProdRoute.setCurProdRotTree([]); + // 浠巗essionStorage涓鍙栧弬鏁板苟杞崲鍥炲璞� + const savedParams = sessionStorage.getItem(`${JSON.parse(decodeURI(route.params.id[0]))['sName']}_params`); + const objParams = savedParams ? JSON.parse(decodeURI(savedParams)) : {}; + useProdRoute.setCurProdRotTree({ name: objParams['CODE'], treeInfo: [] }); + useProdRoute.setCurSelectedNodes({ name: objParams['CODE'], SelectedNodes: [] }); const findTab = this.getCachedTabList.find((item) => item === name); if (findTab) { @@ -138,7 +142,9 @@ // Existing pages, do not add tabs repeatedly const tabHasExits = this.tabList.some((tab, index) => { updateIndex = index; - return decodeURIComponent(tab.fullPath || tab.path) === decodeURIComponent(fullPath || path); + return ( + decodeURIComponent(tab.fullPath || tab.path) === decodeURIComponent(fullPath || path) + ); }); // If the tab already exists, perform the update operation diff --git a/src/store/modules/prodRoute.ts b/src/store/modules/prodRoute.ts index 00c0d33..5e60412 100644 --- a/src/store/modules/prodRoute.ts +++ b/src/store/modules/prodRoute.ts @@ -4,20 +4,21 @@ * @version: * @Date: 2024-06-18 15:09:47 * @LastEditors: Ben Lin - * @LastEditTime: 2024-10-21 23:13:48 + * @LastEditTime: 2024-10-22 08:37:57 */ import { defineStore } from 'pinia'; import { store } from '@/store'; -import { MesRotTree } from '/@/api/tigerapi/model/mesModel'; +import { MesRotTree, PageRotTree } from '/@/api/tigerapi/model/mesModel'; import { SetDefaultRoute } from '/@/api/tigerapi/mes/router'; import { useUserStore } from './user'; import { findParent } from '/@/api/tigerapi/system'; interface ProdRouteState { - curProdRotTree: MesRotTree[]; + curProdRotTree: PageRotTree[]; curConfig: any; - curSelectedNodes: any; + curSelectedNodes: any[]; ItemCode: string; + name: string; curDtl: any; changeToCPPage: boolean; } @@ -27,19 +28,20 @@ state: (): ProdRouteState => ({ curProdRotTree: [], curConfig: {}, - curSelectedNodes: {}, + curSelectedNodes: [], ItemCode: '', curDtl: {}, - changeToCPPage: false + changeToCPPage: false, + name: '', }), getters: { - getCurProdRotTree(state): MesRotTree[] { + getCurProdRotTree(state): PageRotTree[] { return state.curProdRotTree; }, getCurConfig(state): any { return state.curConfig; }, - getCurSelectedNodes(state): any { + getCurSelectedNodes(state): any[] { return state.curSelectedNodes; }, getItemCodes(state): string { @@ -51,16 +53,53 @@ getChangeToCPPage(state): boolean { return state.changeToCPPage; }, + getname(state): string { + return state.name; + }, }, actions: { setCurPkgConfig(val: any) { this.curConfig = val; }, - setCurProdRotTree(info: MesRotTree[]) { - this.curProdRotTree = info; + /** + * @description: 褰撳墠宸ヨ壓鏍戞暟鎹� + * @param {any} val + * @return {*} + */ + setCurProdRotTree(val: any) { + if (!this.curProdRotTree.some((q) => q.name == val.name)) { + this.curProdRotTree.push(val); + } else { + if (val.length == 0) { + this.curProdRotTree = []; + } else { + this.curProdRotTree.map((item) => { + if (item.name == val.name) { + item.treeInfo = val.treeInfo; + } + }); + } + } }, + /** + * @description: 褰撳墠閫変腑鑺傜偣 + * @param {any} val + * @return {*} + */ setCurSelectedNodes(val: any) { - this.curSelectedNodes = val; + if (!this.curSelectedNodes.some((q) => q.name == val.name)) { + this.curSelectedNodes.push(val); + } else { + if (val.length == 0) { + this.curSelectedNodes = []; + } else { + this.curSelectedNodes.map((item) => { + if (item.name == val.name) { + item.SelectedNodes = val.SelectedNodes; + } + }); + } + } }, setItemCode(val: string) { this.ItemCode = val; @@ -71,16 +110,20 @@ setChangeToCPPage(val: boolean) { this.changeToCPPage = val; }, + setname(val: string) { + this.name = val; + }, resetState() { this.curProdRotTree = []; this.curConfig = {}; - this.curSelectedNodes = {}; + this.curSelectedNodes = []; this.curDtl = {}; + this.name = ''; }, /** * @description: 璁剧疆榛樿宸ヨ壓璺嚎 * @return {*} - */ + */ async setDefaulRoute(param) { /* 璁剧疆榛樿宸ヨ壓璺嚎 */ var action = await SetDefaultRoute({ @@ -99,11 +142,12 @@ }, isDefault: param.others['isDefault'], }); - if(action.IsSuccessed){ - this.curProdRotTree[0].children[0].children.map((item) => { - if(item.code == param.others['code']){ + if (action.IsSuccessed) { + const rotTree = this.curProdRotTree.filter((q) => q.name == this.getname); + rotTree[0].treeInfo.children[0].children.map((item) => { + if (item.code == param.others['code']) { item.isDefault = true; - }else{ + } else { item.isDefault = false; } }); @@ -114,10 +158,10 @@ * @description: 鏌ユ壘鐖堕」骞惰繑鍥� * @param {string} tid * @return {*} - */ - getParent(tid: string): MesRotTree{ + */ + getParent(tid: string): MesRotTree { return findParent(this.getCurProdRotTree, tid) as unknown as MesRotTree; - } + }, }, }); diff --git a/src/views/tigerprojects/system/lowcode/composition/LeftTree.vue b/src/views/tigerprojects/system/lowcode/composition/LeftTree.vue index 3bf3c07..1fa36fd 100644 --- a/src/views/tigerprojects/system/lowcode/composition/LeftTree.vue +++ b/src/views/tigerprojects/system/lowcode/composition/LeftTree.vue @@ -4,7 +4,7 @@ * @version: * @Date: 2024-06-26 15:31:43 * @LastEditors: Ben Lin - * @LastEditTime: 2024-10-21 22:32:11 + * @LastEditTime: 2024-10-22 08:47:50 --> <template> <GeneralTree @@ -27,10 +27,12 @@ import { TreeItem } from '/@/components/TigerTree'; import { EntityCustFunctionType } from '/@/api/tigerapi/model/basModel'; import { EventDataNode } from 'ant-design-vue/es/tree'; + import { useProdRouteStore } from '/@/store/modules/prodRoute'; const emit = defineEmits(['select', 'deletenode']); const objParams = inject('objParams') as Ref<any>; const selectedNodes = inject('selectedNodes') as Ref<any>; + const useProdRoute = useProdRouteStore(); const custImport = ref<any[]>([]); const EntityCustFunction = ref([ { @@ -60,9 +62,11 @@ if (generalTree.value) { generalTree.value.expandAll(true); ExpandedKeys.value = generalTree.value.getExpandedKeys(); - generalTree.value.setSelectedKeys(["C2A68FC9-4B23-43F1-8AC2-C99969EE64B8"]); //DE4F54C2-ECF3-4FFA-8AD9-6F761BFCD52A - const xx = generalTree.value.getNodeById('C2A68FC9-4B23-43F1-8AC2-C99969EE64B8'); - console.log(xx); + if (useProdRoute.getCurSelectedNodes.some((q) => q.name == objParams.value['CODE'])) { + selectedNodes.value = useProdRoute.getCurSelectedNodes.filter((q) => q.name == objParams.value['CODE'])[0].SelectedNodes; + generalTree.value.setSelectedKeys([selectedNodes.value[0]?.tid]); + emit('select', SelectNode(selectedNodes, objParams.value['CODE'])); + } } }); @@ -98,7 +102,7 @@ const keys = generalTree.value.getSelectedKeys(); console.log(keys); } - emit('select', SelectNode(selectedNodes)); + emit('select', SelectNode(selectedNodes, objParams.value['CODE'])); } /** @@ -107,7 +111,7 @@ * @return {*} */ function UnSelect(node) { - emit('select', SelectNode(undefined)); + emit('select', SelectNode(undefined, objParams.value['CODE'])); // reload(); } diff --git a/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts b/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts index d85f099..f654b3e 100644 --- a/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts +++ b/src/views/tigerprojects/system/lowcode/entityts/ProdRouteBinding.ts @@ -4,7 +4,7 @@ * @version: * @Date: 2024-06-19 20:34:27 * @LastEditors: Ben Lin - * @LastEditTime: 2024-10-17 20:56:33 + * @LastEditTime: 2024-10-22 09:28:36 */ import { Ref, h, ref, render, unref } from 'vue'; @@ -99,10 +99,20 @@ let _treeData = convertToTree(prodTreeData, 'pid', 'tid', 'root'); data.title = '宸ヨ壓璺嚎'; data.fieldNames = { key: 'tid', title: 'name' }; - /* 淇濆瓨宸ヨ壓鏍戝舰鏁版嵁鍒扮姸鎬佺鐞� */ - useProdRoute.setCurProdRotTree(_treeData as unknown as MesRotTree[]); + if ( + !useProdRoute.changeToCPPage || + !useProdRoute.curProdRotTree.some((q) => q.name == itemCode) + ) { + /* 淇濆瓨宸ヨ壓鏍戝舰鏁版嵁鍒扮姸鎬佺鐞� */ + useProdRoute.setCurProdRotTree({ + name: itemCode, + treeInfo: _treeData as unknown as MesRotTree[], + }); + } useProdRoute.setItemCode(itemCode); - data.treeData = useProdRoute.getCurProdRotTree; + if (useProdRoute.curProdRotTree.some((q) => q.name == itemCode)) { + data.treeData = useProdRoute.curProdRotTree.filter((q) => q.name == itemCode)[0].treeInfo; + } return data; }, /** @@ -297,8 +307,8 @@ } values.AUTH_ORG = useUserStore().getUserInfo.orgCode; values.AUTH_PROD = useUserStore().getUserInfo.prodCode; - if(type == 'Action'){ - values.OPTION_1 = JSON.stringify(useProdRoute.getcurDtl['BAS_PKG_DTL']) + if (type == 'Action') { + values.OPTION_1 = JSON.stringify(useProdRoute.getcurDtl['BAS_PKG_DTL']); } SaveEntity(values, true, entityName).then((action) => { if (action.IsSuccessed) { @@ -616,9 +626,7 @@ * @param {Ref} selectedNodes * @return {*} */ - SelectNode: (selectedNodes: Ref<any[]>) => { - /* 淇濆瓨褰撳墠閫夋嫨鐨勮妭鐐规暟鎹埌鐘舵�佺鐞� */ - useProdRoute.setCurSelectedNodes(selectedNodes.value); + SelectNode: (selectedNodes: Ref<any[]>, code: string) => { let result = { showConfig: false, showNav: false, @@ -639,6 +647,8 @@ result.showConfig = true; result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false }; } + /* 淇濆瓨褰撳墠閫夋嫨鐨勮妭鐐规暟鎹埌鐘舵�佺鐞� */ + useProdRoute.setCurSelectedNodes({ name: code, SelectedNodes: selectedNodes.value }); return result; }, /** diff --git a/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts b/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts index 2d82b66..a9a8b4d 100644 --- a/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts +++ b/src/views/tigerprojects/system/lowcode/entityts/WoRouteBinding.ts @@ -4,7 +4,7 @@ * @version: * @Date: 2024-06-19 20:34:27 * @LastEditors: Ben Lin - * @LastEditTime: 2024-10-18 10:54:24 + * @LastEditTime: 2024-10-22 01:00:21 */ import { Ref, h, ref, render, unref } from 'vue'; @@ -109,9 +109,16 @@ } data.title = '宸ュ崟宸ヨ壓璺嚎'; data.fieldNames = { key: 'tid', title: 'name' }; - /* 淇濆瓨宸ヨ壓鏍戝舰鏁版嵁鍒扮姸鎬佺鐞� */ - useProdRoute.setCurProdRotTree(_treeData as unknown as MesRotTree[]); - data.treeData = useProdRoute.getCurProdRotTree; + if (!useProdRoute.changeToCPPage || !useProdRoute.curProdRotTree.some((q) => q.name == wo)) { + /* 淇濆瓨宸ヨ壓鏍戝舰鏁版嵁鍒扮姸鎬佺鐞� */ + useProdRoute.setCurProdRotTree({ + name: wo, + treeInfo: _treeData as unknown as MesRotTree[], + }); + } + if (useProdRoute.curProdRotTree.some((q) => q.name == wo)) { + data.treeData = useProdRoute.curProdRotTree.filter((q) => q.name == wo)[0].treeInfo; + } return data; }, /** @@ -644,7 +651,7 @@ * @param {Ref} selectedNodes * @return {*} */ - SelectNode: (selectedNodes: Ref<any[]>) => { + SelectNode: (selectedNodes: Ref<any[]>, code: string) => { let result = { showConfig: false, showNav: false, @@ -669,6 +676,7 @@ result.showOtherTable = { BAS_PKG_DTL: false, ItemCode: false }; } } + useProdRoute.setCurSelectedNodes({ name: code, SelectedNodes: selectedNodes.value }); return result; }, /** diff --git a/src/views/tigerprojects/system/lowcode/normal/mainTable.vue b/src/views/tigerprojects/system/lowcode/normal/mainTable.vue index 02b8ba7..d4e5502 100644 --- a/src/views/tigerprojects/system/lowcode/normal/mainTable.vue +++ b/src/views/tigerprojects/system/lowcode/normal/mainTable.vue @@ -268,7 +268,7 @@ * @description: 璋冪敤api鍓嶏紝鍙傛暟鏁寸悊 * @param {*} t * @return {*} - */ + */ function SearchInfoFn(t) { if ( !isNullOrUnDef(useQuery.getCurSearchInfo) && @@ -277,9 +277,11 @@ const curSearchInfo = useQuery.getCurSearchInfo.filter((q) => q.name == route.name); const Keys = Object.getOwnPropertyNames(curSearchInfo[0].searchInfo); for (const k in Keys) { - t[Keys[k]] = curSearchInfo[0].searchInfo[Keys[k]]; + if (Keys[k] != 'page' && Keys[k] != 'pageSize') { + t[Keys[k]] = curSearchInfo[0].searchInfo[Keys[k]]; + } } - useQuery.setCurSearchInfo({name:route.name, searchInfo:t}); + useQuery.setCurSearchInfo({ name: route.name, searchInfo: t }); } return t; } @@ -288,7 +290,7 @@ * @description: 璇锋眰涔嬪悗瀵硅繑鍥炲�艰繘琛屽鐞� * @param {*} t * @return {*} - */ + */ function afterFetchFn(t) { if ( !isNullOrUnDef(useQuery.getCurSearchInfo) && -- Gitblit v1.9.3