From 62387ac17667ce7a0f6d700172fc4f800353fe38 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期一, 08 九月 2025 11:28:32 +0800
Subject: [PATCH] 排产工单模块工艺点检功能页面

---
 src/views/mes/MesProductionWorkOrderListView.vue                  |   10 +
 src/views/mes/modules/MesProductionWorkOrderProcessCheckModal.vue |  233 ++++++++++++++++++++++++++++++++++++++++++++++
 src/views/eam/base/modules/EamProcessParametersModal.vue          |    2 
 3 files changed, 242 insertions(+), 3 deletions(-)

diff --git a/src/views/eam/base/modules/EamProcessParametersModal.vue b/src/views/eam/base/modules/EamProcessParametersModal.vue
index 2b05740..5e001fe 100644
--- a/src/views/eam/base/modules/EamProcessParametersModal.vue
+++ b/src/views/eam/base/modules/EamProcessParametersModal.vue
@@ -18,7 +18,7 @@
           <a-input placeholder="璇疯緭鍏ュ弬鏁板悕绉�" v-model="model.parameterName" />
         </a-form-model-item>
         <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="parameterCategory" label="鍙傛暟鍒嗙被">
-          <j-dict-select-tag dict-code="process_parameters_categorys" placeholder="璇烽�夋嫨鍙傛暟鍒嗙被" v-model="model.parameterCategory" />
+          <j-dict-select-tag dict-code="process_parameters_category" placeholder="璇烽�夋嫨鍙傛暟鍒嗙被" v-model="model.parameterCategory" />
         </a-form-model-item>
         <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="parameterUnit" label="璁¢噺鍗曚綅">
           <a-input placeholder="璇疯緭鍏ヨ閲忓崟浣�" v-model="model.parameterUnit" />
diff --git a/src/views/mes/MesProductionWorkOrderListView.vue b/src/views/mes/MesProductionWorkOrderListView.vue
index 5c4defa..eeabf79 100644
--- a/src/views/mes/MesProductionWorkOrderListView.vue
+++ b/src/views/mes/MesProductionWorkOrderListView.vue
@@ -113,7 +113,7 @@
             </span>
             <span v-if="record.workOrderStatus === 'PUBLISHED' && record.completenessCheckFlag === '1' && record.equipmentInspectionFlag === '1' && record.processInspectionFlag === '0'">
               <a-divider type="vertical" />
-              <a @click="handleCompletenessCheck(record)">宸ヨ壓鐐规</a>
+              <a @click="handleProcessCheck(record)">宸ヨ壓鐐规</a>
             </span>
             <span v-if="record.workOrderStatus === 'PUBLISHED' && record.completenessCheckFlag === '1' && record.equipmentInspectionFlag === '1' && record.processInspectionFlag === '1'">
               <a-divider type="vertical" />
@@ -196,6 +196,7 @@
     <MesProductionWorkOrderReportModal ref="MesProductionWorkOrderReportModal" @ok="modalFormOk"></MesProductionWorkOrderReportModal>
     <MesProductionWorkOrderCompletenessCheckModal ref="MesProductionWorkOrderCompletenessCheckModal" @ok="modalFormOk"></MesProductionWorkOrderCompletenessCheckModal>
     <MesProductionWorkOrderEquipmentInspectionModal ref="MesProductionWorkOrderEquipmentInspectionModal" @ok="modalFormOk"></MesProductionWorkOrderEquipmentInspectionModal>
+    <MesProductionWorkOrderProcessCheckModal ref="MesProductionWorkOrderProcessCheckModal" @ok="modalFormOk"></MesProductionWorkOrderProcessCheckModal>
   </a-card>
 </template>
 
@@ -214,6 +215,7 @@
 import MesProductionWorkOrderReportModal from '@views/mes/modules/MesProductionWorkOrderReportModal.vue'
 import MesProductionWorkOrderCompletenessCheckModal from '@views/mes/modules/MesProductionWorkOrderCompletenessCheckModal.vue'
 import MesProductionWorkOrderEquipmentInspectionModal from '@views/mes/modules/MesProductionWorkOrderEquipmentInspectionModal.vue'
+import MesProductionWorkOrderProcessCheckModal from '@views/mes/modules/MesProductionWorkOrderProcessCheckModal.vue'
 import JSelectFactory from '@comp/jeecgbiz/JSelectFactory.vue'
 import moment from 'moment/moment'
 
@@ -229,7 +231,8 @@
     MesProductionWorkOrderRepublishModal,
     MesProductionWorkOrderReportModal,
     MesProductionWorkOrderCompletenessCheckModal,
-    MesProductionWorkOrderEquipmentInspectionModal
+    MesProductionWorkOrderEquipmentInspectionModal,
+    MesProductionWorkOrderProcessCheckModal
   },
   data() {
     return {
@@ -651,6 +654,9 @@
     handleEquipmentInspection(record) {
       this.$refs.MesProductionWorkOrderEquipmentInspectionModal.inspect(record)
     },
+    handleProcessCheck(record) {
+      this.$refs.MesProductionWorkOrderProcessCheckModal.inspect(record)
+    },
     async handleUnLoadingDetail(row){
       console.log('row---->',row)
       const unloadingResult = await getAction(this.url.queryUnloadingByLoadingId,{'loadingId':row.id})
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