From f2d1b5615b05c002ec63db4df7164c9ed3ecc4a3 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期二, 26 八月 2025 16:42:21 +0800 Subject: [PATCH] 1、优化产品结构树以及设备结构树、列表右键菜单重复右键后出现window菜单问题 2、优化产品结构树节点删除后的loading展示时机 3、优化产品以及设备结构树权限配置获取列表时的loading展示时机 --- src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue | 64 ++++++++++++++++--------------- 1 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue index 001b2db..86ab05d 100644 --- a/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue +++ b/src/views/dnc/base/modules/DeviceStructure/DeviceStructureTreeContextMenu.vue @@ -1,18 +1,12 @@ <template> - <a-dropdown :trigger="['contextmenu']"> - <span v-if="treeParams.title.indexOf(treeParams.searchValue) > -1">{{ treeParams.title.substr(0, treeParams.title.indexOf(treeParams.searchValue)) }}<span - class="replaceSearch">{{ treeParams.searchValue }}</span>{{ treeParams.title.substr(treeParams.title.indexOf(treeParams.searchValue) + treeParams.searchValue.length) }}</span> - <span v-else>{{ treeParams.title }}</span> - <template #overlay> - <a-menu @click="({ key: menuKey }) => onContextMenuClick(treeParams.treeKey, menuKey)" - @contextmenu="event=>event.preventDefault()"> - <a-menu-item v-for="item in defaultContextMenuList[getCurrentMenuLevel]" :key="item.code" v-has="item.code"> - <a-icon :type="item.icon"/> - {{item.label}} - </a-menu-item> - </a-menu> + <a-menu :style="menuStyle" @click="menuItemClick" v-if="menuVisible" mode="vertical" @contextmenu="menuContextMenu"> + <template v-for="menuItem in defaultContextMenuList[getCurrentMenuLevel]"> + <a-menu-item :key="menuItem.code" v-has="menuItem.code"> + <a-icon :type="menuItem.icon"/> + {{ menuItem.label }} + </a-menu-item> </template> - </a-dropdown> + </a-menu> </template> <script> @@ -26,6 +20,15 @@ }, data() { return { + menuVisible: false, + menuStyle: { + position: 'fixed', + top: 0, + left: 0, + border: '1px solid #eee', + boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)', + zIndex: 999 + }, defaultContextMenuList: { //杞﹂棿 workshop: [ @@ -33,7 +36,7 @@ ], //璁惧 device: [ - { label: '瀵煎叆NC鏂囨。', code: 'device_import', icon: 'import', isCommonMethod: true }, + { label: '瀵煎叆NC鏂囨。', code: 'device_nc_import', icon: 'import', isCommonMethod: true }, { label: '鏉冮檺閰嶇疆', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true } ] } @@ -41,15 +44,17 @@ }, computed: { getCurrentMenuLevel() { - if (!this.treeParams.equipmentId) return 'workshop' + if (this.treeParams.type === 1) return 'workshop' else return 'device' } }, methods: { - onContextMenuClick(treeKey, menuKey) { + menuItemClick({ key }) { + const menuKey = key const level = this.getCurrentMenuLevel - const treeNodeInfo = Object.assign({}, this.treeParams) - if (treeNodeInfo.equipmentId) treeNodeInfo.type = 4 + const treeNodeInfo = Object.assign({ treeKey: this.treeParams.key }, this.treeParams) + if (treeNodeInfo.type === 2) treeNodeInfo.type = 7 + // 璁惧缁撴瀯鏍戣妭鐐逛腑鐨勮澶囧眰绾т负2锛屼絾鍦ㄤ骇鍝佺粨鏋勬爲涓皢璁惧灞傜骇鐨則ype璁剧疆涓�7锛屽洜姝ゅ湪姝ゅ璁剧疆涓�7 const menuKeyArray = menuKey.split('_') const isCommonMethod = this.defaultContextMenuList[level].find(item => item.code === menuKey).isCommonMethod // product_add => handleAdd 瑙﹀彂瀵瑰簲缁勪欢浜嬩欢 @@ -60,21 +65,18 @@ } else { methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).join('') } - console.log('methodName------------------------------------', methodName) - console.log('treeParams------------------------------------', this.treeParams) const modalTitle = this.defaultContextMenuList[level].find(item => item.code === menuKey).label - this.$bus.$emit('treeMenuItemMethodTrigger', { methodName, modalTitle, treeNodeInfo }) + }, + + /** + * 閬垮厤鍗曟閲嶅鍙抽敭鍚庡叧闂彍鍗曟垨鎵撳紑window鑿滃崟 + * @param event 浜嬩欢瀵硅薄 + */ + menuContextMenu(event) { + event.preventDefault() + event.stopPropagation() } } } -</script> - -<style scoped> - .replaceSearch { - color: #40a9ff; - font-weight: bold; - background-color: rgb(204, 204, 204); - } - -</style> \ No newline at end of file +</script> \ No newline at end of file -- Gitblit v1.9.3