|
|
|
@ -25,9 +25,26 @@ |
|
|
|
:data="data" |
|
|
|
:data="data" |
|
|
|
:props="defaultProps" |
|
|
|
:props="defaultProps" |
|
|
|
@node-click="handleNodeClick" |
|
|
|
@node-click="handleNodeClick" |
|
|
|
|
|
|
|
@node-contextmenu="handleNodeRightClick" |
|
|
|
:default-expand-all="true" |
|
|
|
:default-expand-all="true" |
|
|
|
:expand-on-click-node="false" |
|
|
|
:expand-on-click-node="false" |
|
|
|
/> |
|
|
|
/> |
|
|
|
|
|
|
|
<div |
|
|
|
|
|
|
|
v-show="contextMenuVisible" |
|
|
|
|
|
|
|
class="custom-context-menu" |
|
|
|
|
|
|
|
:style="{ top: contextMenuTop + 'px', left: contextMenuLeft + 'px' }" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<div class="context-menu"> |
|
|
|
|
|
|
|
<el-button |
|
|
|
|
|
|
|
link |
|
|
|
|
|
|
|
type="danger" |
|
|
|
|
|
|
|
@click="handleDeleteNode" |
|
|
|
|
|
|
|
v-if="contextTreeNode && contextTreeNode.level === 2" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
删除 |
|
|
|
|
|
|
|
</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="process-right"> |
|
|
|
<div class="process-right"> |
|
|
|
<el-form |
|
|
|
<el-form |
|
|
|
@ -620,12 +637,19 @@ export default { |
|
|
|
moldCode: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }], |
|
|
|
moldCode: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }], |
|
|
|
}, |
|
|
|
}, |
|
|
|
treeNodes: {}, //选中组织树节点信息 |
|
|
|
treeNodes: {}, //选中组织树节点信息 |
|
|
|
|
|
|
|
parentData: {}, //选中父节点的数据 |
|
|
|
partInfoData: {}, //零件信息 |
|
|
|
partInfoData: {}, //零件信息 |
|
|
|
tempId: 0, |
|
|
|
tempId: 0, |
|
|
|
projectOptions: [], //检验项目列表 |
|
|
|
projectOptions: [], //检验项目列表 |
|
|
|
standardList: [], //检验标准列表 |
|
|
|
standardList: [], //检验标准列表 |
|
|
|
filteredList: [], |
|
|
|
filteredList: [], |
|
|
|
dictionaryData: [], |
|
|
|
dictionaryData: [], |
|
|
|
|
|
|
|
// 右键菜单相关 |
|
|
|
|
|
|
|
contextMenuVisible: false, |
|
|
|
|
|
|
|
contextMenuTop: 0, |
|
|
|
|
|
|
|
contextMenuLeft: 0, |
|
|
|
|
|
|
|
contextNodeData: null, |
|
|
|
|
|
|
|
contextTreeNode: null, |
|
|
|
}; |
|
|
|
}; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
@ -639,6 +663,12 @@ export default { |
|
|
|
this.getProject(); |
|
|
|
this.getProject(); |
|
|
|
this.getStandardList(); |
|
|
|
this.getStandardList(); |
|
|
|
this.getDictionary(); |
|
|
|
this.getDictionary(); |
|
|
|
|
|
|
|
document.addEventListener('click', this.closeContextMenu); |
|
|
|
|
|
|
|
document.addEventListener('contextmenu', this.closeContextMenu); // 右键其他地方也关闭 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
beforeUnmount() { |
|
|
|
|
|
|
|
document.removeEventListener('click', this.closeContextMenu); |
|
|
|
|
|
|
|
document.removeEventListener('contextmenu', this.closeContextMenu); |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
// 获取涂色标、涂色带、涂箭头的系数 |
|
|
|
// 获取涂色标、涂色带、涂箭头的系数 |
|
|
|
@ -844,6 +874,15 @@ export default { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
this.treeNodes = nodes; |
|
|
|
this.treeNodes = nodes; |
|
|
|
|
|
|
|
const parentNode = node.parent; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (parentNode && parentNode.data && !parentNode.isRoot) { |
|
|
|
|
|
|
|
this.parentData = parentNode.data; // 父节点的原始数据 |
|
|
|
|
|
|
|
console.log('父节点数据:', this.parentData); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
console.log('当前节点无父节点(可能是根节点)'); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
this.treeLeave = node.level; |
|
|
|
this.treeLeave = node.level; |
|
|
|
|
|
|
|
|
|
|
|
// 清空现有表格数据 |
|
|
|
// 清空现有表格数据 |
|
|
|
@ -877,6 +916,36 @@ export default { |
|
|
|
this.form4.tableData4 = moldToolList; |
|
|
|
this.form4.tableData4 = moldToolList; |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
// 右键点击树节点 |
|
|
|
|
|
|
|
handleNodeRightClick(event, nodeData, node, component) { |
|
|
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (node.level !== 2) { |
|
|
|
|
|
|
|
this.$message.warning('仅工艺节点支持右键操作'); |
|
|
|
|
|
|
|
this.contextMenuVisible = false |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 记录节点信息 |
|
|
|
|
|
|
|
this.contextNodeData = nodeData; |
|
|
|
|
|
|
|
this.contextTreeNode = node; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置菜单位置(防止超出视口) |
|
|
|
|
|
|
|
const x = event.clientX; |
|
|
|
|
|
|
|
const y = event.clientY; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 可选:简单防越界(可根据需要增强) |
|
|
|
|
|
|
|
this.contextMenuLeft = Math.min(x, window.innerWidth - 130); // 130 是菜单宽度 |
|
|
|
|
|
|
|
this.contextMenuTop = Math.min(y, window.innerHeight - 60); // 60 是菜单高度 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.contextMenuVisible = true; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
closeContextMenu() { |
|
|
|
|
|
|
|
this.contextMenuVisible = false; |
|
|
|
|
|
|
|
this.contextNodeData = null; |
|
|
|
|
|
|
|
this.contextTreeNode = null; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 右侧tab切换 |
|
|
|
// 右侧tab切换 |
|
|
|
handleClick(value) { |
|
|
|
handleClick(value) { |
|
|
|
console.log(999999, value); |
|
|
|
console.log(999999, value); |
|
|
|
@ -1261,6 +1330,18 @@ export default { |
|
|
|
this.$refs.tableForm2.validate((isValid, invalidFields) => { |
|
|
|
this.$refs.tableForm2.validate((isValid, invalidFields) => { |
|
|
|
if (isValid) { |
|
|
|
if (isValid) { |
|
|
|
this.craftLoading = true; |
|
|
|
this.craftLoading = true; |
|
|
|
|
|
|
|
// 备注含有 |
|
|
|
|
|
|
|
if ( |
|
|
|
|
|
|
|
this.parentData.rawData.remarks && |
|
|
|
|
|
|
|
this.parentData.rawData?.remarks.indexOf('HTBY') > -1 |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
this.form2.tableData2.forEach(item => { |
|
|
|
|
|
|
|
if (item.projectName.indexOf('耐蚀性检测') < 0) { |
|
|
|
|
|
|
|
this.$message.error('检测项目必须包含耐蚀性检测!'); |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
let query_ = { |
|
|
|
let query_ = { |
|
|
|
processEntity: this.treeNodes.rawData.processInfo, //工序 |
|
|
|
processEntity: this.treeNodes.rawData.processInfo, //工序 |
|
|
|
processProjectEntityList: this.form2.tableData2, //项目 |
|
|
|
processProjectEntityList: this.form2.tableData2, //项目 |
|
|
|
@ -1360,4 +1441,21 @@ export default { |
|
|
|
.tableHeight { |
|
|
|
.tableHeight { |
|
|
|
height: calc(100vh - 50px - 80px - 40px - 94px - 50px - 50px); |
|
|
|
height: calc(100vh - 50px - 80px - 40px - 94px - 50px - 50px); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.custom-context-menu { |
|
|
|
|
|
|
|
position: fixed; |
|
|
|
|
|
|
|
z-index: 2000; |
|
|
|
|
|
|
|
background: #fff; |
|
|
|
|
|
|
|
border: 1px solid #ebeef5; |
|
|
|
|
|
|
|
border-radius: 4px; |
|
|
|
|
|
|
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); |
|
|
|
|
|
|
|
padding: 4px 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.context-menu .el-button { |
|
|
|
|
|
|
|
display: block; |
|
|
|
|
|
|
|
width: 100%; |
|
|
|
|
|
|
|
text-align: left; |
|
|
|
|
|
|
|
padding: 6px 12px; |
|
|
|
|
|
|
|
margin: 0; |
|
|
|
|
|
|
|
} |
|
|
|
</style> |
|
|
|
</style> |
|
|
|
|