中航光电热表web
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

826 lines
27 KiB

6 months ago
<template>
5 months ago
<div class="box-card">
<div class="process-left">
<div class="process-select">
<!-- 工艺级别-->
<el-form :model="form" label-width="auto">
<el-form-item label="工艺级别:">
<el-select
4 months ago
v-model="rank"
5 months ago
placeholder="请选择"
style="width: 220px"
@change="leavelChange"
4 months ago
clearable filterable
5 months ago
>
<el-option label="一级工艺" value="1" />
<el-option label="二级工艺" value="2" />
<el-option label="三级工艺" value="3" />
</el-select>
</el-form-item>
</el-form>
</div>
<el-tree
style="width: 240px"
:data="data"
:props="defaultProps"
@node-click="handleNodeClick"
:default-expand-all="true"
:expand-on-click-node="false"
/>
</div>
<div class="process-right">
<el-form :model="form" label-width="auto" :rules="rules">
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="重要度:" prop="zhongyaodu">
4 months ago
<el-select v-model="form.zhongyaodu" :placeholder="'请选择'" clearable filterable>
5 months ago
<el-option
v-for="item in priorityList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="生产标识:" prop="qualityGrade">
4 months ago
<el-select v-model="form.qualityGrade" :placeholder="'请选择'" clearable filterable>
5 months ago
<el-option
v-for="item in rankList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注:" prop="beizhu">
<el-input v-model="form.beizhu" placeholder="请输入" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="工序" name="1" v-if="treeLeave == 2"></el-tab-pane>
<el-tab-pane label="项目" name="2" v-if="treeLeave == 3"></el-tab-pane>
<el-tab-pane label="尺寸、量具" name="3" v-if="treeLeave == 3"></el-tab-pane>
<el-tab-pane label="工装、模具表" name="4" v-if="treeLeave == 3"></el-tab-pane>
</el-tabs>
<div class="table-btn">
<div class="table-btn-left">
<el-button type="primary" plain @click="addTable()">插入一行</el-button>
<el-button type="danger" plain @click="delTable()">删除选择行</el-button>
4 months ago
<el-button type="primary" @click="saveInfo()">保存</el-button>
6 months ago
</div>
4 months ago
<div class="table-btn-right" v-if="activeName == '1'">
5 months ago
<el-select
4 months ago
v-model="modelLevel"
5 months ago
placeholder="选择工艺模板"
style="width: 220px; margin-right: 12px"
4 months ago
clearable filterable
5 months ago
>
4 months ago
<el-option
v-for="(item, index) in modelOption"
:key="index"
:label="item.name"
:value="item.id"
/>
5 months ago
</el-select>
4 months ago
<el-button type="primary" @change="modelLevelChange()">导入模板</el-button>
6 months ago
</div>
5 months ago
</div>
4 months ago
<!-- 工序 -->
<el-form
ref="tableForm1"
:model="form1"
:rules="formRules1"
label-width="0px"
v-if="activeName == '1'"
>
<el-table :data="form1.tableData1" style="width: 100%">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="processNo" label="工序号">
<template #default="scope">
<el-input
v-model="scope.row.processNo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="ppsId" label="工序">
4 months ago
<template #header>
<span><i style="color: red">*</i>工序</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData1[${scope.$index}].ppsId`"
:rules="formRules1.ppsId"
4 months ago
>
4 months ago
<el-select v-model="scope.row.ppsId" placeholder="请选择" clearable filterable>
4 months ago
<el-option
v-for="(item, index) in processSetOption"
:key="index"
:label="item.name"
:value="item.id"
4 months ago
></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="craftName" label="工艺能力">
4 months ago
<template #header>
<span><i style="color: red">*</i>工艺能力</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData1[${scope.$index}].craftName`"
:rules="formRules1.craftName"
4 months ago
>
4 months ago
<el-select v-model="scope.row.craftName" placeholder="请选择" clearable filterable>
4 months ago
<el-option
v-for="(item, index) in craftAbilityOption"
:key="index"
:label="item.name"
:value="item.id"
4 months ago
></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="proDes" label="工序描述">
<template #header>
<span><i style="color: red">*</i>工序描述</span>
</template>
<template #default="scope">
<el-form-item :prop="`tableData1[${scope.$index}].proDes`" :rules="formRules1.proDes">
<el-input
v-model="scope.row.proDes"
placeholder="请输入"
style="width: 100%"
></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="proHours" label="定额工时(分钟)">
<template #header>
<span><i style="color: red">*</i>定额工时(分钟)</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData1[${scope.$index}].proHours`"
:rules="formRules1.proHours"
>
<el-input
v-model="scope.row.proHours"
placeholder="请输入"
style="width: 100%"
></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="setoutHours" label="准备工时(分钟)">
<template #default="scope">
<el-input
v-model="scope.row.proHours"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="isMain" label="是否主工序">
<template #default="scope">
<el-form-item :prop="`tableData1[${scope.$index}].isMain`" :rules="formRules1.isMain">
4 months ago
<el-select v-model="scope.row.isMain" placeholder="请选择" clearable filterable>
4 months ago
<el-option label="是" value="1"></el-option>
<el-option label="否" value="2"></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
</el-table>
</el-form>
<!-- 项目 -->
<el-form
ref="tableForm2"
:model="form2"
:rules="formRules2"
label-width="0px"
v-if="activeName == '2'"
>
<el-table :data="form2.tableData2" style="width: 100%">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="trialNo" label="工序号">
<template #default="scope">
<el-input
v-model="scope.row.trialNo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="projectName" label="检验项目">
<template #header>
<span><i style="color: red">*</i>检验项目</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData2[${scope.$index}].projectName`"
:rules="formRules2.projectName"
>
4 months ago
<el-select v-model="scope.row.projectName" placeholder="请选择" clearable filterable>
4 months ago
<el-option label="是" value="1"></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="projectStandard" label="检验标准">
<template #header>
<span><i style="color: red">*</i>检验标准</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData2[${scope.$index}].projectStandard`"
:rules="formRules2.projectStandard"
>
<el-input
v-model="scope.row.projectStandard"
placeholder="请输入"
style="width: 100%"
></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="proHours" label="定额工时(分钟)">
<template #header>
<span><i style="color: red">*</i>定额工时(分钟)</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData2[${scope.$index}].proHours`"
:rules="formRules2.proHours"
>
<el-input
v-model="scope.row.proHours"
placeholder="请输入"
style="width: 100%"
></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="prepareHours" label="准备工时(分钟)">
<template #default="scope">
<el-input
v-model="scope.row.prepareHours"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
</el-table>
</el-form>
<!-- 量具 -->
<el-form
ref="tableForm3"
:model="form3"
:rules="formRules3"
label-width="0px"
v-if="activeName == '3'"
>
<el-table :data="form3.tableData3" class="tableHeight" style="width: 100%">
4 months ago
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="trialNo" label="工序号">
<template #default="scope">
<el-input
v-model="scope.row.trialNo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="testType" label="镀前镀后">
<template #header>
<span><i style="color: red">*</i>镀前镀后</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData3[${scope.$index}].testType`"
:rules="formRules3.testType"
>
4 months ago
<el-select v-model="scope.row.testType" placeholder="请选择" clearable filterable>
4 months ago
<el-option label="是" value="1"></el-option>
<el-option label="否" value="2"></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="tool" label="量具">
<template #header>
<span><i style="color: red">*</i>量具</span>
</template>
<template #default="scope">
<el-form-item :prop="`tableData3[${scope.$index}].tool`" :rules="formRules3.tool">
4 months ago
<el-select v-model="scope.row.tool" placeholder="请选择" clearable filterable>
4 months ago
<el-option label="是" value="1"></el-option>
<el-option label="否" value="2"></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="toolSize" label="量具尺寸">
<template #default="scope">
<el-input
v-model="scope.row.toolSize"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="toolInfo" label="图纸尺寸">
<template #default="scope">
<el-input
v-model="scope.row.toolInfo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
</el-table>
</el-form>
<!-- 工装 -->
<el-form
ref="tableForm4"
:model="form4"
:rules="formRules4"
label-width="0px"
v-if="activeName == '4'"
>
<el-table :data="form4.tableData4" style="width: 100%">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="trialNo" label="工序号">
<template #default="scope">
<el-input
v-model="scope.row.trialNo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="moldCode" label="对应工装">
<template #header>
<span><i style="color: red">*</i>对应工装</span>
</template>
<template #default="scope">
<el-form-item
:prop="`tableData4[${scope.$index}].moldCode`"
4 months ago
:rules="formRules4.moldCode"
>
<el-input
v-model="scope.row.moldCode"
placeholder="请输入"
style="width: 100%"
></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="moldName" label="工装名称">
<template #default="scope">
<el-input
v-model="scope.row.moldName"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="isPrint" label="是否印字">
<template #default="scope">
<el-input
v-model="scope.row.isPrint"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="printNo" label="印字版编号">
<template #default="scope">
<el-input
v-model="scope.row.printNo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
<el-table-column prop="testFixtureNo" label="测试夹具号">
<template #default="scope">
<el-input
v-model="scope.row.testFixtureNo"
placeholder="请输入"
style="width: 100%"
></el-input>
</template>
</el-table-column>
</el-table>
</el-form>
6 months ago
</div>
5 months ago
</div>
6 months ago
</template>
<script>
4 months ago
import {
getProcessAuthorized,
getModelList,
getModelDetailList,
authorizedAccomplish2,
saveProcessProjectSave,
saveProcessMeasuringTool,
saveProcessMoldTool,
getProcessSetList,
getCraftAbilityList,
} from '@/api/processManagement/taskProcessing';
6 months ago
export default {
5 months ago
name: 'CraftIndex',
components: {},
props: {
height: {
type: Number,
default: 600,
},
partId: {
type: [Number, String],
default: null,
6 months ago
},
5 months ago
dialogType: {
type: String,
default: '',
},
4 months ago
updateRow: {
type: Object,
default: {},
},
5 months ago
},
data() {
return {
4 months ago
rank: '2',
5 months ago
processLevel: '2',
4 months ago
data: [],
5 months ago
defaultProps: {
children: 'children',
label: 'label',
},
form: {
zhongyaodu: '',
qualityGrade: '', //生产标识
beizhu: '', //备注
},
rules: {
zhongyaodu: [{ required: true, message: '请选择', trigger: 'blur' }],
},
priorityList: [
{
label: '本次使用',
value: 1,
6 months ago
},
5 months ago
{
label: '正式工艺',
value: 2,
6 months ago
},
5 months ago
{
label: '临时工艺',
value: 3,
6 months ago
},
5 months ago
],
rankList: [
{
label: '一级',
value: 1,
6 months ago
},
5 months ago
{
label: '二级',
value: 2,
},
{
label: '三级',
value: 3,
},
],
activeName: '1',
treeLeave: 2, //组织树选中层级
4 months ago
processSetOption: [], //工序列表
craftAbilityOption: [
{
label: '工艺能力1',
value: 1,
},
], //工艺能力列表
4 months ago
modelOption: [], //模板列表
modelLevel: null, //模板选择
form1: {
tableData1: [], //工序
},
form2: {
tableData2: [], //项目
},
form3: {
tableData3: [], //量具
},
form4: {
tableData4: [], //工装
},
formRules1: {
ppsId:[{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
4 months ago
processName: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
craftName: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
4 months ago
proDes: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
proHours: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
isMain: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
},
formRules2: {
projectName: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
projectStandard: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
proHours: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
},
formRules3: {
testType: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
tool: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
},
formRules4: {
moldCode: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
},
treeNodes: {}, //选中组织树节点信息
partInfoData: {}, //零件信息
5 months ago
};
},
4 months ago
mounted() {
this.getDetails();
this.getModelList();
this.getProcessSetList();
this.getCraftAbilityList();
4 months ago
},
5 months ago
methods: {
4 months ago
// 工艺模板列表
getModelList() {
getModelList().then(res => {
this.modelOption = res.data.data;
});
},
// 工序列表查询
getProcessSetList() {
getProcessSetList().then(res => {
this.processSetOption = res.data.data;
});
},
// 工艺能力列表查询
getCraftAbilityList() {
getCraftAbilityList().then(res => {
this.craftAbilityOption = res.data.data;
});
},
// 导入模板
modelLevelChange() {
getModelDetailList({ modelId: this.modelLevel }).then(res => {
4 months ago
});
},
// 获取零件信息详情数据
getDetails() {
console.log(888888,this.updateRow)
4 months ago
getProcessAuthorized({ partId: this.partId, taskId: this.updateRow.id }).then(res => {
this.data = this.transformCraftTree(res.data.data);
this.partInfoData = res.data.data.partInfo;
4 months ago
});
},
// 组织树转换
transformCraftTree(responseData) {
const { partInfo, craftList } = responseData;
const partCode = partInfo.partCode;
// 构建树形结构并保留原始数据引用
const tree = [
{
label: partCode,
disabled: true,
rawData: partInfo, // 保存零件原始数据
children: craftList.map(craft => {
const { craftInfo, processList } = craft;
// 拼接二级节点标签:roamNo-craftNo
const craftLabel = `${craftInfo.roamNo}-${craftInfo.craftNo}`;
return {
...craftInfo,
label: craftLabel,
processList: processList.map(process => {
return process.processInfo;
}),
rawData: craftInfo, // 保存工艺原始数据
children: processList.map(process => {
const { processInfo, projectList, measuringToolList, moldToolList } = process;
// 三级节点:工序名称
const processLabel = processInfo.processName;
return {
...processInfo,
label: processLabel,
rawData: {
processInfo,
projectList,
measuringToolList,
moldToolList,
}, // 保存工序及关联数据
children: projectList.map(project => ({
label: project.projectName, // 四级节点:项目名称
rawData: project, // 保存项目原始数据
disabled: true,
})),
};
}),
};
}),
},
];
return tree;
},
5 months ago
// 组织树点击
handleNodeClick(nodes, node, self) {
if (nodes.disabled) {
return false;
}
this.treeNodes = nodes;
5 months ago
this.treeLeave = node.level;
4 months ago
// 清空现有表格数据
this.form1.tableData1 = [];
this.form2.tableData2 = [];
this.form3.tableData3 = [];
this.form4.tableData4 = [];
// 根据节点层级切换标签页
if (this.treeLeave === 2) {
5 months ago
this.activeName = '1';
4 months ago
this.form1.tableData1 = nodes.processList;
}
// 根据节点层级加载对应数据
if (this.treeLeave === 3) {
this.activeName = '2';
// 三级节点:工序级,加载工序相关数据
const { processInfo, projectList, measuringToolList, moldToolList } = nodes.rawData;
// 加载项目表格数据
this.form2.tableData2 = projectList
4 months ago
// 加载量具表格数据
this.form3.tableData3 = measuringToolList
4 months ago
// 加载工装表格数据
this.form4.tableData4 = moldToolList
5 months ago
}
},
// 右侧tab切换
handleClick(value) {
console.log(999999, value);
},
// 切换等级
leavelChange() {
4 months ago
// this.$message.success('保存成功');
5 months ago
},
// 插入一行
addTable() {
if (this.activeName == '1') {
this.form1.tableData1.push({id:null});
5 months ago
}
if (this.activeName == '2') {
this.form2.tableData2.push({id:null});
5 months ago
}
if (this.activeName == '3') {
this.form3.tableData3.push({id:null});
5 months ago
}
if (this.activeName == '4') {
this.form4.tableData4.push({id:null});
5 months ago
}
},
// 删除选择行
delTable() {
if (this.activeName == '1') {
}
if (this.activeName == '2') {
}
if (this.activeName == '3') {
}
if (this.activeName == '4') {
}
},
4 months ago
saveInfo() {
if (this.activeName == '1') {
// 调用单个 Form 的校验方法
this.$refs.tableForm1.validate((isValid, invalidFields) => {
if (isValid) {
4 months ago
let query_ = {
dsPart: this.partInfoData, //零件信息
craft: this.treeNodes.rawData, //工艺信息
processList: this.form1.tableData1, //工序集合
4 months ago
deleteIds: [], //删除ids
};
authorizedAccomplish2(query_).then(res => {
this.$message.success('保存成功');
});
4 months ago
}
});
}
if (this.activeName == '2') {
this.$refs.tableForm2.validate((isValid, invalidFields) => {
if (isValid) {
4 months ago
let query_ = {
processEntity: this.treeNodes.rawData.processInfo, //工序
processProjectEntityList: this.form2.tableData2, //项目
4 months ago
deleteIds: [], //删除ids
};
saveProcessProjectSave(query_).then(res => {
this.$message.success('保存成功');
});
4 months ago
}
});
}
if (this.activeName == '3') {
this.$refs.tableForm3.validate((isValid, invalidFields) => {
if (isValid) {
4 months ago
let query_ = {
processEntity: this.treeNodes.rawData.processInfo, //工序
processMeasuringToolEntities: this.form3.tableData3, //尺寸量具
4 months ago
deleteIds: [], //删除ids
};
saveProcessMeasuringTool(query_).then(res => {
this.$message.success('保存成功');
});
4 months ago
}
});
}
if (this.activeName == '4') {
this.$refs.tableForm4.validate((isValid, invalidFields) => {
if (isValid) {
4 months ago
let query_ = {
processEntity: this.treeNodes.rawData.processInfo, //工序
processMoldToolEntities: this.form4.tableData4, //尺寸量具
4 months ago
deleteIds: [], //删除ids
};
saveProcessMoldTool(query_).then(res=>{
this.$message.success('保存成功');
})
4 months ago
}
});
}
},
5 months ago
},
};
6 months ago
</script>
<style lang="scss" scoped>
.box-card {
5 months ago
display: flex;
flex-direction: row;
height: calc(100vh - 200px);
6 months ago
5 months ago
.process-left {
// padding: 20px;
border: 1px solid #ccc;
6 months ago
5 months ago
.process-select {
padding: 12px;
background: #e4e7ed;
6 months ago
}
5 months ago
}
4 months ago
:deep(.el-form-item) {
margin-bottom: 0px !important;
}
5 months ago
.process-right {
padding: 12px;
flex: 1;
border: 1px solid #ccc;
border-left: 0;
6 months ago
5 months ago
.table-btn {
width: 100%;
height: 50px;
6 months ago
5 months ago
.table-btn-left {
float: left;
}
6 months ago
5 months ago
.table-btn-right {
float: right;
}
6 months ago
}
5 months ago
}
6 months ago
}
4 months ago
:deep(.el-table .el-table__cell) {
height: 50px !important;
padding: 0 !important;
line-height: 50px !important;
}
.tableHeight{
height:calc(100vh - 50px - 80px - 40px - 94px - 50px - 50px)
}
5 months ago
</style>