<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>
|
</template>
|
</a-dropdown>
|
</template>
|
|
<script>
|
export default {
|
name: 'DeviceStructureTreeContextMenu',
|
components: {},
|
props: {
|
treeParams: {
|
type: Object
|
}
|
},
|
data() {
|
return {
|
defaultContextMenuList: {
|
//车间
|
workshop: [
|
{ label: '权限配置', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
|
],
|
//设备
|
device: [
|
{ label: '导入NC文档', code: 'device_import', icon: 'import', isCommonMethod: true },
|
{ label: '权限配置', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
|
]
|
}
|
}
|
},
|
computed: {
|
getCurrentMenuLevel() {
|
if (!this.treeParams.equipmentId) return 'workshop'
|
else return 'device'
|
}
|
},
|
methods: {
|
onContextMenuClick(treeKey, menuKey) {
|
const level = this.getCurrentMenuLevel
|
const treeNodeInfo = Object.assign({}, this.treeParams)
|
if (treeNodeInfo.equipmentId) treeNodeInfo.type = 4
|
const menuKeyArray = menuKey.split('_')
|
const isCommonMethod = this.defaultContextMenuList[level].find(item => item.code === menuKey).isCommonMethod
|
// product_add => handleAdd 触发对应组件事件
|
let methodName
|
// 判断是否为公共方法,如果为公共方法则截取专有属性product/component/part/process等字段
|
if (isCommonMethod) {
|
methodName = 'handle' + menuKeyArray.map(item => item[0].toUpperCase() + item.slice(1)).slice(1).join('')
|
} 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 })
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
.replaceSearch {
|
color: #40a9ff;
|
font-weight: bold;
|
background-color: rgb(204, 204, 204);
|
}
|
|
</style>
|