From 1b8399357869093ce21b285a921525651c46b2c3 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期一, 08 九月 2025 11:28:44 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/mes/modules/MesProductionWorkOrderProcessCheckModal.vue | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 233 insertions(+), 0 deletions(-) diff --git a/src/views/mes/modules/MesProductionWorkOrderProcessCheckModal.vue b/src/views/mes/modules/MesProductionWorkOrderProcessCheckModal.vue new file mode 100644 index 0000000..762a56c --- /dev/null +++ b/src/views/mes/modules/MesProductionWorkOrderProcessCheckModal.vue @@ -0,0 +1,233 @@ +<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: '姝e父', + 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> -- Gitblit v1.9.3