<template>
|
<a-dropdown :trigger="['contextmenu']">
|
<span v-if="treeParams.label.indexOf(treeParams.searchValue) > -1">{{ treeParams.label.substr(0, treeParams.label.indexOf(treeParams.searchValue)) }}<span
|
class="replaceSearch">{{ treeParams.searchValue }}</span>{{ treeParams.label.substr(treeParams.label.indexOf(treeParams.searchValue) + treeParams.searchValue.length) }}</span>
|
<span v-else>{{ treeParams.label }}</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: 'ProductStructureTreeContextMenu',
|
components: {},
|
props: {
|
treeParams: {
|
type: Object
|
}
|
},
|
data() {
|
return {
|
defaultContextMenuList: {
|
//产品
|
product: [
|
{ label: '添加产品', code: 'product_add', icon: 'plus', isCommonMethod: false },
|
{ label: '添加部件', code: 'product_add_child', icon: 'plus', isCommonMethod: false },
|
{ label: '编辑产品信息', code: 'product_edit', icon: 'edit', isCommonMethod: false },
|
// { label: '导出文档', code: 'product_export', icon: 'export', isCommonMethod: true },
|
{ label: '导入其他文档', code: 'product_import', icon: 'import', isCommonMethod: true },
|
{ label: '删除', code: 'product_delete', icon: 'delete', isCommonMethod: true },
|
{ label: '权限配置', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
|
],
|
//部件
|
component: [
|
{ label: '添加子部件', code: 'component_add', icon: 'plus', isCommonMethod: false },
|
{ label: '添加零件', code: 'component_add_child', icon: 'plus', isCommonMethod: false },
|
{ label: '创建工序', code: 'component_add_relative', icon: 'plus', isCommonMethod: false },
|
{ label: '编辑部件信息', code: 'component_edit', icon: 'edit', isCommonMethod: false },
|
// { label: '导出文档', code: 'component_export', icon: 'export', isCommonMethod: true },
|
{ label: '导入其他文档', code: 'component_import', icon: 'import', isCommonMethod: true },
|
{ label: '删除', code: 'component_delete', icon: 'delete', isCommonMethod: true },
|
{ label: '权限配置', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
|
],
|
//零件
|
part: [
|
{ label: '添加零件', code: 'parts_add', icon: 'plus', isCommonMethod: false },
|
{ label: '创建工序', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false },
|
{ label: '编辑零件信息', code: 'parts_edit', icon: 'edit', isCommonMethod: false },
|
// { label: '导出文档', code: 'parts_export', icon: 'export', isCommonMethod: true },
|
{ label: '导入其他文档', code: 'parts_import', icon: 'import', isCommonMethod: true },
|
{ label: '删除', code: 'parts_delete', icon: 'delete', isCommonMethod: true },
|
{ label: '权限配置', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
|
],
|
//工序
|
process: [
|
{ label: '创建工序', code: 'process_add', icon: 'plus', isCommonMethod: false },
|
{ label: '创建工步', code: 'process_add_child', icon: 'plus', isCommonMethod: false },
|
{ label: '编辑工序信息', code: 'process_edit', icon: 'edit', isCommonMethod: false },
|
{ label: '删除', code: 'process_delete', icon: 'delete', isCommonMethod: true },
|
// { label: '导出NC程序', code: 'process_export', icon: 'import', isCommonMethod: true },
|
{ label: '导入NC程序', code: 'process_import', icon: 'export', isCommonMethod: true },
|
{ label: '权限配置', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
|
],
|
//工步
|
processStep: [
|
{ label: '创建工步', code: 'processStep_add', icon: 'plus', isCommonMethod: false },
|
{ label: '编辑工步信息', code: 'processStep_edit', icon: 'edit', isCommonMethod: false },
|
{ label: '删除', code: 'processStep_delete', icon: 'delete', isCommonMethod: true },
|
// { label: '导出NC程序', code: 'processStep_export', icon: 'import', isCommonMethod: true },
|
{ label: '导入NC程序', code: 'processStep_import', icon: 'export', isCommonMethod: true },
|
{ label: '权限配置', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true }
|
]
|
}
|
}
|
},
|
computed: {
|
getCurrentMenuLevel() {
|
switch (this.treeParams.type) {
|
case 1:
|
return 'product'
|
case 2:
|
return 'component'
|
case 3:
|
return 'part'
|
case 5:
|
return 'process'
|
case 6:
|
return 'processStep'
|
}
|
},
|
getCurrentDocClassCode() {
|
switch (this.treeParams.type) {
|
case 1:
|
return 'OTHER'
|
case 2:
|
return 'OTHER'
|
case 3:
|
return 'OTHER'
|
case 5:
|
return 'NC'
|
case 6:
|
return 'NC'
|
}
|
}
|
},
|
methods: {
|
onContextMenuClick(treeKey, menuKey) {
|
const level = this.getCurrentMenuLevel
|
const param = this.getCurrentDocClassCode
|
console.log('level---------------------', level)
|
console.log('param---------------------', param)
|
const treeNodeInfo = Object.assign({}, this.treeParams, { param })
|
console.log('treeNodeInfo******************', treeNodeInfo)
|
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('')
|
}
|
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>
|