|
|
|
@ -16,18 +16,23 @@ |
|
|
|
> |
|
|
|
> |
|
|
|
<el-row :gutter="24"> |
|
|
|
<el-row :gutter="24"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-form-item label="模板编码:" prop="code"> |
|
|
|
<el-form-item label="模板编码:" prop="promodel.code"> |
|
|
|
<el-input v-model="ruleForm.code"></el-input> |
|
|
|
<el-input v-model="ruleForm.promodel.code"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-form-item label="模板名称:" prop="name"> |
|
|
|
<el-form-item label="模板名称:" prop="promodel.name"> |
|
|
|
<el-input v-model="ruleForm.name"></el-input> |
|
|
|
<el-input v-model="ruleForm.promodel.name"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-form-item label="模板类型:" prop="templateType"> |
|
|
|
<el-form-item label="模板类型:" prop="promodel.templateType"> |
|
|
|
<el-select v-model="ruleForm.templateType" placeholder="请选择" clearable filterable> |
|
|
|
<el-select |
|
|
|
|
|
|
|
v-model="ruleForm.promodel.templateType" |
|
|
|
|
|
|
|
placeholder="请选择" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
filterable |
|
|
|
|
|
|
|
> |
|
|
|
<el-option |
|
|
|
<el-option |
|
|
|
v-for="(item, index) in processTemplateList" |
|
|
|
v-for="(item, index) in processTemplateList" |
|
|
|
:label="item.dictValue" |
|
|
|
:label="item.dictValue" |
|
|
|
@ -38,16 +43,26 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-form-item label="作业中心:" prop="workCenterId"> |
|
|
|
<el-form-item label="作业中心:" prop="promodel.workCenterId"> |
|
|
|
<el-select v-model="ruleForm.workCenterId" placeholder="请选择" clearable filterable> |
|
|
|
<el-select |
|
|
|
|
|
|
|
v-model="ruleForm.promodel.workCenterId" |
|
|
|
|
|
|
|
placeholder="请选择" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
filterable |
|
|
|
|
|
|
|
> |
|
|
|
<el-option v-for="item in workCenterList" :label="item.wcName" :value="item.id"> |
|
|
|
<el-option v-for="item in workCenterList" :label="item.wcName" :value="item.id"> |
|
|
|
</el-option> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-form-item label="镀种分类:" prop="platingType"> |
|
|
|
<el-form-item label="镀种分类:" prop="promodel.platingType"> |
|
|
|
<el-select v-model="ruleForm.platingType" placeholder="请选择" clearable filterable> |
|
|
|
<el-select |
|
|
|
|
|
|
|
v-model="ruleForm.promodel.platingType" |
|
|
|
|
|
|
|
placeholder="请选择" |
|
|
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
filterable |
|
|
|
|
|
|
|
> |
|
|
|
<el-option |
|
|
|
<el-option |
|
|
|
v-for="(item, index) in platingTypeList" |
|
|
|
v-for="(item, index) in platingTypeList" |
|
|
|
:label="item.plateType" |
|
|
|
:label="item.plateType" |
|
|
|
@ -58,9 +73,9 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-col :span="6"> |
|
|
|
<el-form-item label="优先级:" prop="priority"> |
|
|
|
<el-form-item label="优先级:" prop="promodel.priority"> |
|
|
|
<el-input-number |
|
|
|
<el-input-number |
|
|
|
v-model="ruleForm.priority" |
|
|
|
v-model="ruleForm.promodel.priority" |
|
|
|
controls-position="right" |
|
|
|
controls-position="right" |
|
|
|
:min="1" |
|
|
|
:min="1" |
|
|
|
:max="10" |
|
|
|
:max="10" |
|
|
|
@ -68,8 +83,8 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item label="备注:" prop="remarks"> |
|
|
|
<el-form-item label="备注:" prop="promodel.remarks"> |
|
|
|
<el-input v-model="ruleForm.remarks" type="textarea" :rows="2"></el-input> |
|
|
|
<el-input v-model="ruleForm.promodel.remarks" type="textarea" :rows="2"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
@ -81,6 +96,8 @@ |
|
|
|
@node-click="handleNodeClick" |
|
|
|
@node-click="handleNodeClick" |
|
|
|
:default-expand-all="true" |
|
|
|
:default-expand-all="true" |
|
|
|
:expand-on-click-node="false" |
|
|
|
:expand-on-click-node="false" |
|
|
|
|
|
|
|
highlight-current-row |
|
|
|
|
|
|
|
:current-row-key="currentRowId" |
|
|
|
/> |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="process-right"> |
|
|
|
<div class="process-right"> |
|
|
|
@ -359,70 +376,38 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
data() { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
return { |
|
|
|
treeData: [ |
|
|
|
currentRowId: '', |
|
|
|
{ |
|
|
|
|
|
|
|
label: '工序列表', |
|
|
|
treeData: [], |
|
|
|
processList: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
processInfo: { |
|
|
|
|
|
|
|
processName: '工序1', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
projectInfo: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
jobName: '作业1', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
jobName: '作业2', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
processInfo: { |
|
|
|
|
|
|
|
processName: '工序2', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
projectInfo: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
jobName: '作业2', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
jobName: '作业3', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], //组织树的数据 |
|
|
|
|
|
|
|
defaultProps: { |
|
|
|
defaultProps: { |
|
|
|
label: data => { |
|
|
|
label: data => { |
|
|
|
// Level 1: 根分组(如 "工序列表") |
|
|
|
// 父节点:显示 label |
|
|
|
if (data.label && data.processList) { |
|
|
|
if (data.label && data.processList) { |
|
|
|
return data.label; |
|
|
|
return data.label; |
|
|
|
} |
|
|
|
} |
|
|
|
// Level 2: 工序节点 |
|
|
|
// 工序节点:显示 processName |
|
|
|
if (data.processInfo) { |
|
|
|
if (data.processName) { |
|
|
|
return data.processInfo.processName || '未命名工序'; |
|
|
|
return data.processName; |
|
|
|
} |
|
|
|
} |
|
|
|
// Level 3: 项目/作业节点 |
|
|
|
// 项目节点:显示 projectCode |
|
|
|
if (data.jobName !== undefined) { |
|
|
|
if (data.projectCode !== undefined) { |
|
|
|
return data.jobName; |
|
|
|
return `项目-${data.projectCode}`; |
|
|
|
} |
|
|
|
} |
|
|
|
return '未知节点'; |
|
|
|
return '未知节点'; |
|
|
|
}, |
|
|
|
}, |
|
|
|
children: data => { |
|
|
|
children: data => { |
|
|
|
// Level 1 → Level 2 |
|
|
|
// 父节点 → 工序列表 |
|
|
|
if (data.processList) { |
|
|
|
if (data.processList) { |
|
|
|
return data.processList; |
|
|
|
return data.processList; |
|
|
|
} |
|
|
|
} |
|
|
|
// Level 2 → Level 3 |
|
|
|
// 工序节点 → 项目列表 |
|
|
|
if (data.processInfo && data.projectInfo) { |
|
|
|
if (data.modelProjectList) { |
|
|
|
return data.projectInfo; |
|
|
|
return data.modelProjectList; |
|
|
|
} |
|
|
|
} |
|
|
|
// Level 3 无子节点 |
|
|
|
|
|
|
|
return []; |
|
|
|
return []; |
|
|
|
}, |
|
|
|
}, |
|
|
|
isLeaf: data => { |
|
|
|
isLeaf: data => { |
|
|
|
// 只有最底层(jobName)是叶子节点 |
|
|
|
return !data.processList && !data.modelProjectList; |
|
|
|
return data.jobName !== undefined; |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
activeName: '1', |
|
|
|
activeName: '1', |
|
|
|
@ -437,21 +422,33 @@ export default { |
|
|
|
// tableData: [], |
|
|
|
// tableData: [], |
|
|
|
|
|
|
|
|
|
|
|
ruleForm: { |
|
|
|
ruleForm: { |
|
|
|
code: '', |
|
|
|
promodel: { |
|
|
|
name: '', |
|
|
|
code: '', |
|
|
|
workCenterId: '', |
|
|
|
name: '', |
|
|
|
platingType: '', |
|
|
|
workCenterId: '', |
|
|
|
priority: '', |
|
|
|
platingType: '', |
|
|
|
tableData: [], |
|
|
|
priority: '', |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// tableData: [], |
|
|
|
tableData2: [], |
|
|
|
tableData2: [], |
|
|
|
|
|
|
|
tableData: [], |
|
|
|
}, |
|
|
|
}, |
|
|
|
rules: { |
|
|
|
rules: { |
|
|
|
code: [{ required: true, message: '请输入', trigger: 'blur' }], |
|
|
|
// code: [{ required: true, message: '请输入', trigger: 'blur' }], |
|
|
|
name: [{ required: true, message: '请输入', trigger: 'blur' }], |
|
|
|
// name: [{ required: true, message: '请输入', trigger: 'blur' }], |
|
|
|
workCenterId: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
// workCenterId: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
platingType: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
// platingType: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
priority: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
// priority: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
templateType: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
// templateType: [{ required: true, message: '请选择', trigger: 'blur' }], |
|
|
|
|
|
|
|
promodel: { |
|
|
|
|
|
|
|
code: [{ required: true, message: '请输入模板编码', trigger: 'blur' }], |
|
|
|
|
|
|
|
name: [{ required: true, message: '请输入模板名称', trigger: 'blur' }], |
|
|
|
|
|
|
|
workCenterId: [{ required: true, message: '请选择作业中心', trigger: 'blur' }], |
|
|
|
|
|
|
|
platingType: [{ required: true, message: '请选择镀种分类', trigger: 'blur' }], |
|
|
|
|
|
|
|
priority: [{ required: true, message: '请选择优先级', trigger: 'blur' }], |
|
|
|
|
|
|
|
templateType: [{ required: true, message: '请选择模板类型', trigger: 'blur' }], |
|
|
|
|
|
|
|
}, |
|
|
|
tableData: [ |
|
|
|
tableData: [ |
|
|
|
{ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
required: true, |
|
|
|
@ -504,16 +501,36 @@ export default { |
|
|
|
mounted() { |
|
|
|
mounted() { |
|
|
|
this.openShow = this.showDialog; |
|
|
|
this.openShow = this.showDialog; |
|
|
|
|
|
|
|
|
|
|
|
this.getDictionary(); |
|
|
|
// 加载所有数据 |
|
|
|
this.getProcessesTeams(); |
|
|
|
Promise.all([ |
|
|
|
this.getProcessList(); |
|
|
|
this.getDictionary(), |
|
|
|
this.getWorkCenterList(); |
|
|
|
this.getProcessesTeams(), |
|
|
|
this.getProcessAbilityList(); |
|
|
|
this.getProcessList(), |
|
|
|
this.getProject(); |
|
|
|
this.getWorkCenterList(), |
|
|
|
this.getStandardList(); |
|
|
|
this.getProcessAbilityList(), |
|
|
|
if (this.title == '修改') { |
|
|
|
this.getProject(), |
|
|
|
this.getDetail(); |
|
|
|
this.getStandardList(), |
|
|
|
} |
|
|
|
]) |
|
|
|
|
|
|
|
.then(() => { |
|
|
|
|
|
|
|
// 如果是修改模式,加载详情 |
|
|
|
|
|
|
|
if (this.title == '修改') { |
|
|
|
|
|
|
|
return this.getDetail(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.then(() => { |
|
|
|
|
|
|
|
this.treeData = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
label: '工序列表', |
|
|
|
|
|
|
|
processList: this.ruleForm.tableData, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
// 默认选中第一个子节点 |
|
|
|
|
|
|
|
this.$nextTick(() => { |
|
|
|
|
|
|
|
if (this.ruleForm.tableData.length > 0) { |
|
|
|
|
|
|
|
this.ruleForm.tableData = this.treeData[0].processList; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
// 获取检验项目名字 |
|
|
|
// 获取检验项目名字 |
|
|
|
@ -538,16 +555,17 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 组织树点击 |
|
|
|
// 组织树点击 |
|
|
|
handleNodeClick(nodes, node, self) { |
|
|
|
handleNodeClick(data) { |
|
|
|
const data = nodes; |
|
|
|
|
|
|
|
if (data.label && data.processList) { |
|
|
|
if (data.label && data.processList) { |
|
|
|
|
|
|
|
// 点击父节点 "工序列表" |
|
|
|
this.activeName = '1'; |
|
|
|
this.activeName = '1'; |
|
|
|
this.treeLeave = 1; |
|
|
|
this.treeLeave = 1; // ← 关键修正 |
|
|
|
this.ruleForm.tableData = data.processList; |
|
|
|
this.ruleForm.tableData = []; |
|
|
|
} else if (data.processInfo) { |
|
|
|
} else if (data.processName && data.modelProjectList) { |
|
|
|
this.activeName = '2'; |
|
|
|
// 点击具体工序 |
|
|
|
this.treeLeave = 2; |
|
|
|
this.activeName = '2'; // 保持工序 Tab |
|
|
|
this.ruleForm.tableData2 = [data.projectInfo]; |
|
|
|
this.treeLeave = 2; // ← 关键修正 |
|
|
|
|
|
|
|
this.ruleForm.tableData2 = data.modelProjectList; |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 右侧tab切换 |
|
|
|
// 右侧tab切换 |
|
|
|
@ -590,8 +608,11 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
getDetail() { |
|
|
|
getDetail() { |
|
|
|
getDetail(this.updateRow.id).then(res => { |
|
|
|
getDetail(this.updateRow.id).then(res => { |
|
|
|
this.ruleForm = res.data.data.dsProModelEntity; |
|
|
|
this.ruleForm.promodel = res.data.data.dsProModelEntity; |
|
|
|
this.ruleForm.tableData = res.data.data.dsProDetailEntityList; |
|
|
|
// 确保字段名匹配 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.ruleForm.tableData = res.data.data.proDetailVOList; |
|
|
|
|
|
|
|
this.treeData = [{ label: '工序列表', processList: res.data.data.proDetailVOList }]; |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
}, |
|
|
|
getDictionary() { |
|
|
|
getDictionary() { |
|
|
|
@ -650,42 +671,64 @@ export default { |
|
|
|
style: pinyin.STYLE_NORMAL, // 无声调(STYLE_TONE 带声调) |
|
|
|
style: pinyin.STYLE_NORMAL, // 无声调(STYLE_TONE 带声调) |
|
|
|
heteronym: false, // 不考虑多音字 |
|
|
|
heteronym: false, // 不考虑多音字 |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
// / 1. 处理 promodel(仅保留基础字段) |
|
|
|
|
|
|
|
const promodel = { |
|
|
|
|
|
|
|
code: this.ruleForm.promodel.code, |
|
|
|
|
|
|
|
name: this.ruleForm.promodel.name, |
|
|
|
|
|
|
|
workCenterId: this.ruleForm.promodel.workCenterId, |
|
|
|
|
|
|
|
platingType: this.ruleForm.promodel.platingType, |
|
|
|
|
|
|
|
priority: this.ruleForm.promodel.priority, |
|
|
|
|
|
|
|
templateType: this.ruleForm.promodel.templateType, |
|
|
|
|
|
|
|
remarks: this.ruleForm.promodel.remarks, |
|
|
|
|
|
|
|
// 添加拼音字段 |
|
|
|
|
|
|
|
modelNameStr: pinyin(this.ruleForm.promodel.name, { |
|
|
|
|
|
|
|
style: pinyin.STYLE_NORMAL, |
|
|
|
|
|
|
|
heteronym: false, |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.flat() |
|
|
|
|
|
|
|
.join(''), |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 处理工序表格数据(清理临时字段) |
|
|
|
|
|
|
|
const tableData = this.ruleForm.tableData.map(item => { |
|
|
|
|
|
|
|
const { _tempId, ...rest } = item; // 移除临时ID |
|
|
|
|
|
|
|
return rest; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
let query = { |
|
|
|
let query = { |
|
|
|
promodel: { |
|
|
|
promodel, |
|
|
|
...this.ruleForm, |
|
|
|
tableData, |
|
|
|
modelNameStr: pinyinArr.flat().join(''), |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
tableData: this.ruleForm.tableData, |
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
console.log('提交数据:', query); |
|
|
|
|
|
|
|
|
|
|
|
// 修改 |
|
|
|
// 修改 |
|
|
|
if (!this.moldAddMore) { |
|
|
|
if (!this.moldAddMore) { |
|
|
|
update(query) |
|
|
|
// update(query) |
|
|
|
.then(res => { |
|
|
|
// .then(res => { |
|
|
|
this.formLoading = false; |
|
|
|
// this.formLoading = false; |
|
|
|
this.$message({ |
|
|
|
// this.$message({ |
|
|
|
type: 'success', |
|
|
|
// type: 'success', |
|
|
|
message: '操作成功!', |
|
|
|
// message: '操作成功!', |
|
|
|
}); |
|
|
|
// }); |
|
|
|
this.$emit('closeDialog'); |
|
|
|
// this.$emit('closeDialog'); |
|
|
|
}) |
|
|
|
// }) |
|
|
|
.catch(err => { |
|
|
|
// .catch(err => { |
|
|
|
this.formLoading = false; |
|
|
|
// this.formLoading = false; |
|
|
|
}); |
|
|
|
// }); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// 新增 |
|
|
|
// 新增 |
|
|
|
add(query) |
|
|
|
// add(query) |
|
|
|
.then(res => { |
|
|
|
// .then(res => { |
|
|
|
this.formLoading = false; |
|
|
|
// this.formLoading = false; |
|
|
|
this.$message({ |
|
|
|
// this.$message({ |
|
|
|
type: 'success', |
|
|
|
// type: 'success', |
|
|
|
message: '操作成功!', |
|
|
|
// message: '操作成功!', |
|
|
|
}); |
|
|
|
// }); |
|
|
|
this.$emit('closeDialog'); |
|
|
|
// this.$emit('closeDialog'); |
|
|
|
}) |
|
|
|
// }) |
|
|
|
.catch(err => { |
|
|
|
// .catch(err => { |
|
|
|
this.formLoading = false; |
|
|
|
// this.formLoading = false; |
|
|
|
}); |
|
|
|
// }); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// 校验失败:显示提示并滚动到第一个错误字段 |
|
|
|
// 校验失败:显示提示并滚动到第一个错误字段 |
|
|
|
|