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.
511 lines
20 KiB
511 lines
20 KiB
<template> |
|
<div class="content-box"> |
|
<el-form ref="form" inline @submit.native.prevent> |
|
<el-row> |
|
<el-col :span="5"> |
|
<el-form-item label="流程卡号:"> |
|
<el-input |
|
ref="codeFocus" |
|
v-model="cardNo" |
|
placeholder="请扫描流程卡号" |
|
@keyup.enter.native="codeKeyUp" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="5"> |
|
<el-form-item label="同槽编号:"> |
|
<el-input |
|
ref="codeFocus" |
|
v-model="mtnCode" |
|
placeholder="请扫描同槽编号" |
|
@keyup.enter.native="codeKeyUpMtnCode" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="4"> |
|
<el-form-item style="margin: 0px 20px 0px 20px"> |
|
<el-switch v-model="line" active-text="上线前" inactive-text="下线后" /> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item> |
|
<el-button |
|
:disabled="wpList.length == 0" |
|
style="margin-top: 4px" |
|
type="primary" |
|
@click="onSubmit" |
|
>保存</el-button |
|
> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
</el-form> |
|
<el-table :data="wpList" :export-excel="false" :height="400" border> |
|
<el-table-column type="index" width="50px" align="center" /> |
|
<el-table-column label="车间订单号" align="center" prop="poCode" /> |
|
<el-table-column label="产品号" align="center" prop="partCode" /> |
|
<el-table-column label="批次号" align="center" prop="batchNo" /> |
|
<el-table-column label="当前工序" align="center" prop="currentWpTitle" /> |
|
<el-table-column align="center" width="100" fixed="right" label="操作"> |
|
<template #default="scope"> |
|
<el-button type="text" @click="deleteRow(scope.row.currentWpId)">删除</el-button> |
|
</template> |
|
</el-table-column> |
|
</el-table> |
|
<el-card class="box-card"> |
|
<div slot="header" class="clearfix"> |
|
<span style="color: rgb(85, 85, 243)">维护电子档案</span> |
|
</div> |
|
|
|
<el-form ref="form" :model="formData" :rules="rulesMold" inline style="margin-top: 10px"> |
|
<el-row> |
|
<el-col :span="6"> |
|
<el-form-item label="设备编码:" prop="ecId"> |
|
<jhSelect |
|
:value="formData.ecId" |
|
@input="val => (formData.ecId = val)" |
|
placeholder="请搜索选择" |
|
api-url="/blade-desk/processMaintenance/queryEquipmentCard" |
|
echo-api="/blade-desk/processMaintenance/queryEquipmentCard" |
|
echoParamsKey="ids" |
|
echo-method="get" |
|
api-method="get" |
|
list-key="records" |
|
total-key="total" |
|
label-key="deviceCode" |
|
value-key="id" |
|
search-key="deviceCode" |
|
:debounce-time="500" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6"> |
|
<el-form-item label="模板:" prop="rfpId"> |
|
<el-select |
|
v-model="formData.rfpId" |
|
clearable |
|
placeholder="请选择" |
|
@change="rbFilePreserveChange" |
|
style="width: 220px" |
|
> |
|
<el-option |
|
v-for="item in dsRbFilePreserveList" |
|
:key="item.id" |
|
:label="item.name" |
|
:value="item.id" |
|
/> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
</el-form> |
|
<div class="tableBoxs"> |
|
<table |
|
v-if="preserveSlotList.length > 0" |
|
id="cus-table" |
|
cellspacing="0" |
|
style="width: 100%" |
|
> |
|
<tr> |
|
<td colspan="4">槽位/工步</td> |
|
<td colspan="4">工艺要求</td> |
|
<td colspan="3">实际参数</td> |
|
</tr> |
|
<template v-for="(itemSlot, indexSlot) in preserveSlotList" :key="itemSlot + indexSlot"> |
|
<component |
|
:is="getTemplateComponent(itemSlot.rfpsType)" |
|
:itemSlot="itemSlot" |
|
:indexSlot="indexSlot" |
|
:itemType="'电子档案维护'" |
|
/> |
|
</template> |
|
</table> |
|
</div> |
|
</el-card> |
|
</div> |
|
</template> |
|
<script> |
|
import { |
|
loadCurrentWp, |
|
saveRetrospectDefend, |
|
getDataByMtnCodeRb, |
|
} from '@/api/zhgd-work/retrospectDefend.js'; |
|
import { getByRfpId, getRbFilePreserveByWpId } from '@/api/zhgd-work/eleFilesEdit.js'; |
|
import Templates from '../../../qualityTemplate/index.js'; |
|
import { getTemplateComponent } from '@/utils/templateMapper.js'; |
|
import jhSelect from '@/components/jh-select/index.vue'; |
|
export default { |
|
components: { |
|
...Templates, |
|
jhSelect, |
|
}, |
|
|
|
data() { |
|
return { |
|
cardNo: '', |
|
mtnCode: '', |
|
dsRbFilePreserveList: [], |
|
preserveSlotList: [], |
|
wpList: [], |
|
line: true, |
|
formData: { ecId: null, rfpId: null }, |
|
rulesMold: { |
|
ecId: [{ required: true, message: '请选择设备编码' }], |
|
rfpId: [{ required: true, message: '请选择模板' }], |
|
// ecId: [this.$validation.required], |
|
// rfpId: [this.$validation.required], |
|
}, |
|
}; |
|
}, |
|
methods: { |
|
getTemplateComponent(type) { |
|
const componentName = getTemplateComponent(type); |
|
return componentName; |
|
}, |
|
getMaterialMess(itemChild, itemSlot) { |
|
if (itemChild.paramValue) { |
|
getDataByMtnCodeRb({ rlsId: itemChild.paramValue }).then(res => { |
|
const { coGoods } = res.data.data; |
|
if (coGoods) { |
|
const { goodsCode, goodsName, checkoutCode, releasenoTime } = coGoods; |
|
if (itemSlot.rfpsType == 5) { |
|
// 模板六 |
|
itemSlot.childrenList[1].paramValue = goodsCode; |
|
itemSlot.childrenList[2].paramValue = goodsName; |
|
itemSlot.childrenList[3].paramValue = checkoutCode; |
|
itemSlot.childrenList[4].paramValue = releasenoTime; |
|
} else if (itemSlot.rfpsType == 6) { |
|
// 模板六 |
|
itemSlot.childrenList[2].paramValue = goodsCode; |
|
itemSlot.childrenList[3].paramValue = goodsName; |
|
itemSlot.childrenList[4].paramValue = checkoutCode; |
|
itemSlot.childrenList[5].paramValue = releasenoTime; |
|
} else if (itemSlot.rfpsType == 13) { |
|
// 模板十三 |
|
itemSlot.childrenList[0].paramValue = goodsCode; |
|
itemSlot.childrenList[1].paramValue = goodsName; |
|
itemSlot.childrenList[2].paramValue = checkoutCode; |
|
itemSlot.childrenList[3].paramValue = releasenoTime; |
|
} else if (itemSlot.rfpsType == 14) { |
|
// 模板十四 |
|
if (itemChild.detailIndex == 5) { |
|
itemSlot.childrenList[4].paramValue = goodsCode; |
|
itemSlot.childrenList[5].paramValue = goodsName; |
|
itemSlot.childrenList[6].paramValue = checkoutCode; |
|
itemSlot.childrenList[7].paramValue = releasenoTime; |
|
} else if (itemChild.detailIndex == 9) { |
|
itemSlot.childrenList[8].paramValue = goodsCode; |
|
itemSlot.childrenList[9].paramValue = goodsName; |
|
itemSlot.childrenList[10].paramValue = checkoutCode; |
|
itemSlot.childrenList[11].paramValue = releasenoTime; |
|
} |
|
} else if (itemSlot.rfpsType == 15) { |
|
// 模板十五 |
|
if (itemChild.detailIndex == 7) { |
|
itemSlot.childrenList[6].paramValue = goodsCode; |
|
itemSlot.childrenList[7].paramValue = goodsName; |
|
itemSlot.childrenList[8].paramValue = checkoutCode; |
|
itemSlot.childrenList[9].paramValue = releasenoTime; |
|
} else if (itemChild.detailIndex == 11) { |
|
itemSlot.childrenList[10].paramValue = goodsCode; |
|
itemSlot.childrenList[11].paramValue = goodsName; |
|
itemSlot.childrenList[12].paramValue = checkoutCode; |
|
itemSlot.childrenList[13].paramValue = releasenoTime; |
|
} |
|
} else if (itemSlot.rfpsType == 16) { |
|
// 模板十六 |
|
if (itemChild.detailIndex == 5) { |
|
itemSlot.childrenList[4].paramValue = goodsCode; |
|
itemSlot.childrenList[5].paramValue = goodsName; |
|
itemSlot.childrenList[6].paramValue = checkoutCode; |
|
itemSlot.childrenList[7].paramValue = releasenoTime; |
|
} else if (itemChild.detailIndex == 9) { |
|
itemSlot.childrenList[8].paramValue = goodsCode; |
|
itemSlot.childrenList[9].paramValue = goodsName; |
|
itemSlot.childrenList[10].paramValue = checkoutCode; |
|
itemSlot.childrenList[11].paramValue = releasenoTime; |
|
} else if (itemChild.detailIndex == 13) { |
|
itemSlot.childrenList[12].paramValue = goodsCode; |
|
itemSlot.childrenList[13].paramValue = goodsName; |
|
itemSlot.childrenList[14].paramValue = checkoutCode; |
|
itemSlot.childrenList[15].paramValue = releasenoTime; |
|
} |
|
} else if (itemSlot.rfpsType == 17) { |
|
// 模板十七 |
|
itemSlot.childrenList[4].paramValue = goodsCode; |
|
itemSlot.childrenList[5].paramValue = goodsName; |
|
itemSlot.childrenList[6].paramValue = checkoutCode; |
|
itemSlot.childrenList[7].paramValue = releasenoTime; |
|
} else if (itemSlot.rfpsType == 19) { |
|
// 模板十九 |
|
itemSlot.childrenList[0].paramValue = goodsCode; |
|
itemSlot.childrenList[1].paramValue = goodsName; |
|
itemSlot.childrenList[2].paramValue = checkoutCode; |
|
itemSlot.childrenList[3].paramValue = releasenoTime; |
|
} |
|
} |
|
}); |
|
// this.$ajax |
|
// .post('prMakeRec/getMaterialMessById', { |
|
// rlsId: itemChild.paramValue, |
|
// }) |
|
// .then(res => { |
|
// if (this.$ifAjax(res)) { |
|
// const { coGoods } = res.data; |
|
// if (coGoods) { |
|
// const { goodsCode, goodsName, checkoutCode, releasenoTime } = coGoods; |
|
// if (itemSlot.rfpsType == 5) { |
|
// // 模板六 |
|
// itemSlot.childrenList[1].paramValue = goodsCode; |
|
// itemSlot.childrenList[2].paramValue = goodsName; |
|
// itemSlot.childrenList[3].paramValue = checkoutCode; |
|
// itemSlot.childrenList[4].paramValue = releasenoTime; |
|
// } else if (itemSlot.rfpsType == 6) { |
|
// // 模板六 |
|
// itemSlot.childrenList[2].paramValue = goodsCode; |
|
// itemSlot.childrenList[3].paramValue = goodsName; |
|
// itemSlot.childrenList[4].paramValue = checkoutCode; |
|
// itemSlot.childrenList[5].paramValue = releasenoTime; |
|
// } else if (itemSlot.rfpsType == 13) { |
|
// // 模板十三 |
|
// itemSlot.childrenList[0].paramValue = goodsCode; |
|
// itemSlot.childrenList[1].paramValue = goodsName; |
|
// itemSlot.childrenList[2].paramValue = checkoutCode; |
|
// itemSlot.childrenList[3].paramValue = releasenoTime; |
|
// } else if (itemSlot.rfpsType == 14) { |
|
// // 模板十四 |
|
// if (itemChild.detailIndex == 5) { |
|
// itemSlot.childrenList[4].paramValue = goodsCode; |
|
// itemSlot.childrenList[5].paramValue = goodsName; |
|
// itemSlot.childrenList[6].paramValue = checkoutCode; |
|
// itemSlot.childrenList[7].paramValue = releasenoTime; |
|
// } else if (itemChild.detailIndex == 9) { |
|
// itemSlot.childrenList[8].paramValue = goodsCode; |
|
// itemSlot.childrenList[9].paramValue = goodsName; |
|
// itemSlot.childrenList[10].paramValue = checkoutCode; |
|
// itemSlot.childrenList[11].paramValue = releasenoTime; |
|
// } |
|
// } else if (itemSlot.rfpsType == 15) { |
|
// // 模板十五 |
|
// if (itemChild.detailIndex == 7) { |
|
// itemSlot.childrenList[6].paramValue = goodsCode; |
|
// itemSlot.childrenList[7].paramValue = goodsName; |
|
// itemSlot.childrenList[8].paramValue = checkoutCode; |
|
// itemSlot.childrenList[9].paramValue = releasenoTime; |
|
// } else if (itemChild.detailIndex == 11) { |
|
// itemSlot.childrenList[10].paramValue = goodsCode; |
|
// itemSlot.childrenList[11].paramValue = goodsName; |
|
// itemSlot.childrenList[12].paramValue = checkoutCode; |
|
// itemSlot.childrenList[13].paramValue = releasenoTime; |
|
// } |
|
// } else if (itemSlot.rfpsType == 16) { |
|
// // 模板十六 |
|
// if (itemChild.detailIndex == 5) { |
|
// itemSlot.childrenList[4].paramValue = goodsCode; |
|
// itemSlot.childrenList[5].paramValue = goodsName; |
|
// itemSlot.childrenList[6].paramValue = checkoutCode; |
|
// itemSlot.childrenList[7].paramValue = releasenoTime; |
|
// } else if (itemChild.detailIndex == 9) { |
|
// itemSlot.childrenList[8].paramValue = goodsCode; |
|
// itemSlot.childrenList[9].paramValue = goodsName; |
|
// itemSlot.childrenList[10].paramValue = checkoutCode; |
|
// itemSlot.childrenList[11].paramValue = releasenoTime; |
|
// } else if (itemChild.detailIndex == 13) { |
|
// itemSlot.childrenList[12].paramValue = goodsCode; |
|
// itemSlot.childrenList[13].paramValue = goodsName; |
|
// itemSlot.childrenList[14].paramValue = checkoutCode; |
|
// itemSlot.childrenList[15].paramValue = releasenoTime; |
|
// } |
|
// } else if (itemSlot.rfpsType == 17) { |
|
// // 模板十七 |
|
// itemSlot.childrenList[4].paramValue = goodsCode; |
|
// itemSlot.childrenList[5].paramValue = goodsName; |
|
// itemSlot.childrenList[6].paramValue = checkoutCode; |
|
// itemSlot.childrenList[7].paramValue = releasenoTime; |
|
// } else if (itemSlot.rfpsType == 19) { |
|
// // 模板十九 |
|
// itemSlot.childrenList[0].paramValue = goodsCode; |
|
// itemSlot.childrenList[1].paramValue = goodsName; |
|
// itemSlot.childrenList[2].paramValue = checkoutCode; |
|
// itemSlot.childrenList[3].paramValue = releasenoTime; |
|
// } |
|
// } |
|
// } |
|
// }); |
|
} |
|
}, |
|
deleteRow(currentWpId) { |
|
this.wpList.forEach((item, index) => { |
|
if (item.currentWpId === currentWpId) { |
|
this.wpList.splice(index, 1); |
|
} |
|
}); |
|
}, |
|
codeKeyUp() { |
|
if (this.cardNo) { |
|
this.commonMethod(this.cardNo); |
|
} |
|
}, |
|
commonMethod(item) { |
|
if (item) { |
|
loadCurrentWp({ cardNo: item }).then(res => { |
|
const obj = this.wpList.find(item => { |
|
return item.wpId == res.data.data.wpId; |
|
}); |
|
if (obj != null) { |
|
return this.$message.warning('此订单已存在'); |
|
} |
|
this.dsRbFilePreserveList = []; |
|
this.wpList.push(res.data.data); |
|
this.getRbFilePreserve(res.data.data.wpId); |
|
}); |
|
// this.$ajax.get('prMakeRec/loadCurrentWp/' + item).then(res => { |
|
// if (this.$ifAjax(res)) { |
|
// const obj = this.wpList.find(item => { |
|
// return item.currentWpId == res.data.currentWpId; |
|
// }); |
|
// if (obj != null) { |
|
// return this.$message.warning('此订单已存在'); |
|
// } |
|
// this.dsRbFilePreserveList = []; |
|
// this.wpList.push(res.data); |
|
// this.getRbFilePreserve(res.data.currentWpId); |
|
// } |
|
// }); |
|
} |
|
}, |
|
codeKeyUpMtnCode() { |
|
if (this.mtnCode) { |
|
loadPrMacToolUseByMtnCode({ mtnCode: this.mtnCode }).then(res => { |
|
const list = res.data.data; |
|
for (var i = 0; i < list.length; i++) { |
|
this.commonMethod(list[i]); |
|
} |
|
}); |
|
// this.$ajax.get('prMacToolUse/loadPrMacToolUseByMtnCode/' + this.mtnCode).then(res => { |
|
// if (this.$ifAjax(res)) { |
|
// console.log(res); |
|
// const list = res.data; |
|
// for (var i = 0; i < list.length; i++) { |
|
// this.commonMethod(list[i]); |
|
// } |
|
// } |
|
// }); |
|
} |
|
}, |
|
// 获取电子档案维护模板 |
|
getRbFilePreserve(wpId) { |
|
getRbFilePreserveByWpId({ wpId: wpId }).then(res => { |
|
this.dsRbFilePreserveList = res.data.data; |
|
this.preserveSlotList = []; |
|
}); |
|
// this.$ajax |
|
// .post('dsRbFilePreserve/getRbFilePreserveByWpId', { |
|
// wpId, |
|
// }) |
|
// .then(res => { |
|
// if (this.$ifAjax(res)) { |
|
// this.dsRbFilePreserveList = res.data; |
|
// this.preserveSlotList = []; |
|
// } |
|
// }); |
|
}, |
|
rbFilePreserveChange() { |
|
getByRfpId({ rfpId: this.formData.rfpId }).then(res => { |
|
this.mtnCode = null; |
|
this.preserveSlotList = res.data.data.preserveSlotList; |
|
}); |
|
// this.$ajax.get('dsRbFilePreserveSlot/getByRfpId/' + this.formData.rfpId).then(res => { |
|
// if (this.$ifAjax(res)) { |
|
// const { preserveSlotList } = res.data; |
|
// this.preserveSlotList = preserveSlotList; |
|
// console.log(preserveSlotList); |
|
// } |
|
// }); |
|
}, |
|
onSubmit() { |
|
this.$refs.form.validate(valid => { |
|
if (valid) { |
|
const wpIdList = []; |
|
this.wpList.forEach(item => { |
|
wpIdList.push(item.currentWpId); |
|
}); |
|
let query = { |
|
wpIdList: wpIdList, |
|
ecId: this.formData.ecId, |
|
rfpId: this.formData.rfpId, |
|
line: this.line, |
|
produceMonitorFileSlotVOList: this.preserveSlotList, |
|
}; |
|
saveRetrospectDefend(query).then(res => { |
|
this.$message.success('保存成功'); |
|
this.$refs.form.resetFields(); |
|
this.formData = {}; |
|
this.cardNo = ''; |
|
this.wpList = []; |
|
this.preserveSlotList = []; |
|
}); |
|
// this.$ajax |
|
// .post('prMakeRec/saveRetrospectDefend', { |
|
// wpIdList, |
|
// ecId: this.formData.ecId, |
|
// rfpId: this.formData.rfpId, |
|
// line: this.line, |
|
// preserveSlotList: this.preserveSlotList, |
|
// }) |
|
// .then(res => { |
|
// if (this.$ifAjax(res)) { |
|
// this.$message.success(this.$t('global.saveOk')); |
|
// this.$refs.form.resetFields(); |
|
// this.formData = {}; |
|
// this.cardNo = ''; |
|
// this.wpList = []; |
|
// this.preserveSlotList = []; |
|
// } |
|
// }); |
|
} |
|
}); |
|
}, |
|
}, |
|
}; |
|
</script> |
|
|
|
<style lang="scss"> |
|
.content-box { |
|
height: calc(100vh - 40px - 40px - 20px - 10px - 51px - 60px); |
|
overflow-y: auto; |
|
} |
|
.tableBoxs { |
|
min-height: 100%; |
|
padding-bottom: 30px; |
|
table { |
|
tr { |
|
page-break-inside: avoid; |
|
} |
|
td { |
|
width: 168px; |
|
height: 30px; |
|
border: 1px solid #000; |
|
background: transparent; |
|
color: #000; |
|
font-size: 14px; |
|
text-align: center; |
|
padding: 0; |
|
margin: 0; |
|
:deep(.el-input__inner) { |
|
text-align: center; |
|
height: 26px !important; |
|
width: 80% !important; |
|
} |
|
} |
|
} |
|
} |
|
.box-card { |
|
margin-top: 10px !important; |
|
} |
|
</style> |
|
<style lang="scss" scoped> |
|
:deep(.el-form--inline .el-form-item) { |
|
margin-bottom: 5px; |
|
} |
|
</style> |