<template>
|
<j-modal
|
:title="title"
|
:width="width"
|
:visible="visible"
|
switchFullscreen
|
@ok="handleOk"
|
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
|
@cancel="handleCancel"
|
cancelText="关闭">
|
|
<a-spin :spinning="spinning">
|
<a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-row :gutter="24">
|
<a-col :span="8">
|
<a-form-model-item prop="equipmentId" label="设备编号">
|
<a-select placeholder="请选择设备" v-model="model.equipmentId" :options="processCheckEquipmentOptions" @change="handleEquipmentChange"></a-select>
|
</a-form-model-item>
|
</a-col>
|
</a-row>
|
<a-row :gutter="24">
|
<vxe-table
|
ref="table"
|
border
|
show-overflow
|
show-header-overflow
|
:scroll-x="{enabled: true}"
|
:data="dataSource"
|
:edit-config="{trigger: 'click', mode: 'cell'}"
|
:edit-rules="editRules"
|
>
|
<vxe-table-column title="序号" type="seq" width="50" align="center"></vxe-table-column>
|
<vxe-table-column title="参数编码" field="parameterCode" align="center"></vxe-table-column>
|
<vxe-table-column title="参数名称" field="parameterName" align="center"></vxe-table-column>
|
<vxe-table-column title="参数分类" field="parameterCategory" align="center">
|
<template #default="{ row }">
|
<span v-if="row.parameterCategory">{{ parameterCategoryDict[row.parameterCategory] }}</span>
|
</template>
|
</vxe-table-column>
|
<vxe-table-column title="计量单位" field="parameterUnit" align="center"></vxe-table-column>
|
<vxe-table-column title="参数范围" field="parameterPeriod" align="center"></vxe-table-column>
|
<vxe-table-column title="点检结果" field="checkResult" align="center"
|
:edit-render="{name: '$select', options: checkResultOptions, events: {change: handleCheckResultChange}}">
|
<template #default="{ row }">
|
<span v-if="row.checkResult">{{ row.checkResultLabel }}</span>
|
<span v-else class="placeholder-text">请选择点检结果</span>
|
</template>
|
</vxe-table-column>
|
<vxe-table-column title="异常描述" field="exceptionDescription" align="center"
|
:edit-render="{name: '$input', placeholder: '请输入异常描述'}">
|
<template #default="{ row }">
|
<span v-if="row.checkResult === '2' && !row.exceptionDescription" class="placeholder-text">请输入异常描述</span>
|
<span v-else-if="row.exceptionDescription">{{ row.exceptionDescription }}</span>
|
</template>
|
<template #edit="{ row }">
|
<vxe-input v-if="row.checkResult === '2'" v-model="row.exceptionDescription" placeholder="请输入异常描述" />
|
</template>
|
</vxe-table-column>
|
</vxe-table>
|
</a-row>
|
</a-form-model>
|
</a-spin>
|
</j-modal>
|
</template>
|
|
<script>
|
import { postAction, getAction, putAction } from '@api/manage'
|
import { ajaxGetDictItems } from '@api/api'
|
|
export default {
|
name: 'MesProductionWorkOrderProcessCheckModal',
|
data () {
|
return {
|
title: '设备点检',
|
width: 1200,
|
visible: false,
|
loading: false,
|
disableSubmit: false,
|
model: {},
|
spinning: false,
|
validatorRules: {
|
},
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 6 },
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 18 },
|
},
|
checkResultOptions: [
|
{
|
label: '正常',
|
value: '1'
|
},
|
{
|
label: '异常',
|
value: '2'
|
}
|
],
|
parameterCategoryDict: {},
|
dataSource: [],
|
editRules: {
|
checkResult: [
|
{ required: true, message: '检查结果必须选择' }
|
],
|
exceptionDescription: [
|
{
|
required: true,
|
message: '异常描述不能为空',
|
validator: ({ cellValue, row }) => {
|
// 当点检结果为异常时,异常描述必填
|
if (row.checkResult === '2') {
|
return cellValue && cellValue.trim() !== '' ? true : new Error('异常描述必须填写');
|
}
|
return true;
|
}
|
}
|
]
|
},
|
url: {
|
listProcessCheckEquipment: '/eam/equipment/listProductionLineProcessCheckEquipment',
|
queryByEquipmentId: '/eam/equipmentProcessParameters/queryByEquipmentId',
|
addProcessCheck: '/eam/eamProcessCheck/add',
|
updateOrderInspectionStatus: '/mes/mesProductionWorkOrder/edit'
|
},
|
processCheckEquipmentOptions: [],
|
workOrderId: null
|
}
|
},
|
computed: {
|
formDisabled(){
|
return this.disabled
|
}
|
},
|
methods: {
|
handleCheckResultChange($event, value) {
|
const selected = this.checkResultOptions.find(item => item.value === value.value)
|
$event.row.checkResultLabel = selected.label
|
},
|
inspect (record) {
|
this.resetFormData()
|
ajaxGetDictItems("process_parameters_category").then(res => {
|
if (res.success) {
|
res.result.forEach(item => {
|
this.parameterCategoryDict[item.value] = item.label
|
})
|
}
|
})
|
this.workOrderId = record.id
|
getAction(this.url.listProcessCheckEquipment, {orderId: record.id}).then(res => {
|
if (res.success) {
|
this.processCheckEquipmentOptions = res.result
|
}
|
})
|
this.visible = true
|
},
|
close () {
|
this.$emit('close');
|
this.visible = false;
|
},
|
handleEquipmentChange(id) {
|
getAction(this.url.queryByEquipmentId, {equipmentId: id}).then(res => {
|
if (res.success) {
|
this.dataSource = res.result
|
}
|
})
|
},
|
handleOk () {
|
this.$refs.table.validate((valid) => {
|
if (valid) {
|
this.$message.error("请完成所有必填信息后再提交!")
|
} else {
|
let tableData = this.$refs.table.getTableData().fullData
|
const data = {
|
equipmentId: this.model.equipmentId,
|
workOrderId: this.workOrderId,
|
checkDetailList: tableData
|
}
|
console.log(data)
|
postAction(this.url.addProcessCheck, data).then(res=> {
|
if (res.success) {
|
this.$message.success(res.message)
|
getAction(this.url.listProcessCheckEquipment, {orderId: this.workOrderId}).then(res => {
|
if (res.success) {
|
if (res.result && res.result.length > 0) {
|
// 还有设备需要点检,清空表单和表格数据
|
this.processCheckEquipmentOptions = res.result
|
this.resetFormData()
|
} else {
|
// 没有需要点检的设备,更新点检状态
|
putAction(this.url.updateOrderInspectionStatus, {id: this.workOrderId, processInspectionFlag: '1'}).then(res => {
|
if (res.success) {
|
this.$message.success('工艺点检完成')
|
this.submitCallback()
|
} else {
|
this.$message.warning(res.message)
|
}
|
})
|
this.submitCallback()
|
}
|
}
|
})
|
} else {
|
this.$message.warning(res.message)
|
}
|
})
|
}
|
})
|
},
|
resetFormData() {
|
this.model = {}
|
this.dataSource = []
|
},
|
submitCallback(){
|
this.$emit('ok');
|
this.visible = false;
|
},
|
handleCancel () {
|
this.close()
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
.placeholder-text {
|
color: #999;
|
font-style: italic;
|
}
|
|
</style>
|