From a4674a75bfffc500a049beafb74daaec50c8f87f Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期四, 17 七月 2025 17:46:06 +0800
Subject: [PATCH] 三保工单审批流程

---
 src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue |  560 +++++++++++++++++--------------------------------------
 1 files changed, 171 insertions(+), 389 deletions(-)

diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue
index 47c06d1..2ff8c43 100644
--- a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue
+++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue
@@ -1,437 +1,219 @@
 <template>
-  <j-modal
-    :title="title"
-    :width="1200"
-    :visible="visible"
-    :confirmLoading="confirmLoading"
-    switchFullscreen
-    :mask-closable="false"
-    @ok="handleOk"
-    @cancel="handleCancel"
-    cancelText="鍏抽棴">
+  <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered
+           :mask-closable="false" @ok="handleOk" @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-row>
           <a-col :span="8">
             <a-form-model-item prop="orderNum" label="宸ュ崟鍙�">
-              <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled />
+              <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/>
             </a-form-model-item>
           </a-col>
           <a-col :span="8">
-            <a-form-model-item prop="equipmentId" label="璁惧缂栫爜">
-              <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId"
-                                            :maintenanceCategory="maintenanceCategory"
-                                            @autocompleteForm="autocompleteForm"
-                                            :disabled="editable"></maintenance-equipment-select>
+            <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜">
+              <maintenance-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId"
+                                            maintenanceCategory="THIRD_MAINTENANCE" @autocompleteForm="autocompleteForm"/>
             </a-form-model-item>
           </a-col>
           <a-col :span="8">
-            <a-form-model-item prop="standardName" label="鏍囧噯鍚嶇О">
-              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled />
+            <a-form-model-item prop="standardName" label="瑙勮寖鍚嶇О">
+              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/>
             </a-form-model-item>
           </a-col>
         </a-row>
-        <a-row :gutter="24">
+
+        <a-row>
           <a-col :span="8">
             <a-form-model-item prop="maintenanceDate" label="淇濆吇鏃ユ湡">
               <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD"
-                             style="width: 100%" />
+                             style="width: 100%"/>
             </a-form-model-item>
           </a-col>
-<!--          <a-col :span="8">-->
-<!--            <a-form-model-item prop="operator" label="淇濆吇浜�">-->
-<!--              <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" :disabled="!model.equipmentId"-->
-<!--                                   :dictOptions="maintenanceOperatorOptions" />-->
-<!--            </a-form-model-item>-->
-<!--          </a-col>-->
+
           <a-col :span="8">
             <a-form-model-item prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡">
-              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled />
+              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled/>
             </a-form-model-item>
           </a-col>
         </a-row>
-        <a-row :gutter="24">
-          <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞">
-            <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" />
+
+        <a-row>
+          <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="澶囨敞">
+            <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/>
           </a-form-model-item>
         </a-row>
-        <a-row :gutter="24">
-          <a-tabs v-model="activeTabKey">
-            <a-tab-pane key="1" tab="淇濆吇椤�" :forceRender="true">
-              <j-vxe-table
-                ref="editableDetailTable"
-                :rowNumber="true"
-                :rowSelection="true"
-                :bordered="true"
-                :alwaysEdit="true"
-                :toolbar="true"
-                :toolbarConfig="detail.toolbarConfig"
-                keep-source
-                :height="300"
-                :dataSource="detail.dataSource"
-                :columns="detail.columns"
-                style="margin-top: 8px;" />
-            </a-tab-pane>
-          </a-tabs>
-        </a-row>
+
+        <a-tabs default-active-key="1">
+          <a-tab-pane key="1" tab="淇濆吇椤规槑缁�">
+            <j-vxe-table ref="editableDetailTable" bordered keep-source
+                         :height="300" :dataSource="detail.dataSource" :columns="detail.columns"/>
+          </a-tab-pane>
+        </a-tabs>
       </a-form-model>
     </a-spin>
   </j-modal>
 </template>
 
 <script>
-import { getAction, httpAction } from '@/api/manage'
-import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
-import { JVXETypes } from '@comp/jeecg/JVxeTable'
+  import { getAction, httpAction } from '@/api/manage'
+  import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
+  import { JVXETypes } from '@comp/jeecg/JVxeTable'
 
-export default {
-  name: 'EamThirdMaintenanceOrderModal',
-  components: { MaintenanceEquipmentSelect },
-  data() {
-    return {
-      title: '鎿嶄綔',
-      visible: false,
-      editable: false,
-      maintenanceCategory: 'THIRD_MAINTENANCE',
-      model: {},
-      labelCol: {
-        xs: { span: 24 },
-        sm: { span: 6 }
-      },
-      wrapperCol: {
-        xs: { span: 24 },
-        sm: { span: 16 }
-      },
-      labelColLong: {
-        xs: { span: 24 },
-        sm: { span: 2 }
-      },
-      wrapperColLong: {
-        xs: { span: 24 },
-        sm: { span: 21 }
-      },
-      confirmLoading: false,
-      spinning: false,
-      activeTabKey: '1',
-      maintenanceOperatorOptions: [],
-      validatorRules: {
-        equipmentId: [
-          { required: true, message: '璇烽�夋嫨璁惧!' }
-        ],
-        maintenanceDate: [
-          { required: true, message: '璇烽�夋嫨璁″垝淇濆吇鏃ユ湡!' }
-        ]
-      },
-      url: {
-        add: '/eam/thirdMaintenanceOrder/add',
-        edit: '/eam/thirdMaintenanceOrder/edit',
-        standardDetail: '/eam/eamMaintenanceStandardDetail/queryList',
-        detail: '/eam/thirdMaintenanceOrderDetail/queryList',
-        userSelect: '/eam/user_select/list',
-      },
-      detail: {
-        loading: false,
-        dataSource: [],
-        columns: [
-          {
-            title: 'ID',
-            key: 'id',
-            type: JVXETypes.hidden
-          },
-          {
-            title: 'orderId',
-            key: 'orderId',
-            type: JVXETypes.hidden
-          },
-          {
-            title: '搴忓彿',
-            key: 'itemCode',
-            type: JVXETypes.inputNumber,
-            width: '10%',
-            align: 'center',
-            validateRules: [
-              { required: true, unique: true, message: '搴忓彿涓嶈兘閲嶅' }
-            ]
-          },
-          {
-            title: '閮ㄤ綅',
-            key: 'itemPart',
-            type: JVXETypes.textarea,
-            width: '25%',
-            align: 'center'
-          },
-          {
-            title: '淇濆吇椤�',
-            key: 'itemName',
-            type: JVXETypes.textarea,
-            width: '20%',
-            align: 'center',
-            validateRules: [
-              { required: true, message: '淇濆吇椤逛笉鑳戒负绌猴紒' }
-            ]
-          },
-          {
-            title: '淇濆吇瑕佹眰',
-            key: 'itemDemand',
-            type: JVXETypes.textarea,
-            width: '30%',
-            align: 'center',
-            validateRules: [
-              { required: true, message: '淇濆吇瑕佹眰涓嶈兘涓虹┖锛�' }
-            ]
-          }
-        ],
-        toolbarConfig: {
-          // prefix 鍓嶇紑锛泂uffix 鍚庣紑
-          slot: ['prefix', 'suffix'],
-          // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
-          btn: ['add', 'remove', 'clearSelection']
-        }
-      },
-      // precisionDetail: {
-      //   loading: false,
-      //   dataSource: [],
-      //   columns: [
-      //     {
-      //       title: 'ID',
-      //       key: 'id',
-      //       type: JVXETypes.hidden
-      //     },
-      //     {
-      //       title: 'orderId',
-      //       key: 'orderId',
-      //       type: JVXETypes.hidden
-      //     },
-      //     {
-      //       title: 'equipmentId',
-      //       key: 'equipmentId',
-      //       type: JVXETypes.hidden
-      //     },
-      //     {
-      //       title: 'parameterId',
-      //       key: 'parameterId',
-      //       type: JVXETypes.hidden
-      //     },
-      //     {
-      //       title: '妫�娴嬮」鐩�',
-      //       key: 'parameterId_dictText',
-      //       type: JVXETypes.normal,
-      //       width: '25%',
-      //       align: 'center'
-      //     },
-      //     {
-      //       title: '鍙傛暟缂栫爜',
-      //       key: 'parameterCode_dictText',
-      //       type: JVXETypes.normal,
-      //       width: '20%',
-      //       align: 'center',
-      //     },
-      //     {
-      //       title: '鍏佸樊鍊�',
-      //       key: 'parameterValue',
-      //       type: JVXETypes.normal,
-      //       width: '30%',
-      //       align: 'center',
-      //     }
-      //   ],
-      //   toolbarConfig: {
-      //     // prefix 鍓嶇紑锛泂uffix 鍚庣紑
-      //     slot: ['prefix', 'suffix'],
-      //     // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
-      //     btn: ['add', 'remove', 'clearSelection']
-      //   }
-      // }
-    }
-  },
-  created() {
-  },
-  methods: {
-    add() {
-      this.initParams();
-      //鍒濆鍖栭粯璁ゅ��
-      this.model = {}
-      this.visible = true
-      this.editable = false
-      this.detail.dataSource = []
-    },
-    edit(record) {
-      this.initParams();
-      this.model = Object.assign({}, record)
-      this.visible = true
-      this.editable = true
-      this.detail.dataSource = []
-      this.loadDetail(record.id)
-      // this.loadPrecisionDetail(record.id)
-    },
-    close() {
-      this.$emit('close')
-      this.visible = false
-      this.$refs.form.clearValidate()
-    },
-    async handleOk() {
-      const that = this
-      let errMap = await that.$refs.editableDetailTable.validateTable()
-      if (errMap) {
-        this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�')
-        return
-      }
-      // 瑙﹀彂琛ㄥ崟楠岃瘉
-      this.$refs.form.validate(valid => {
-        if (valid) {
-          let tableData = that.$refs.editableDetailTable.getTableData()
-          let removeData = that.$refs.editableDetailTable.getDeleteData()
-          that.model.tableDetailList = [...tableData]
-          that.model.removeDetailList = [...removeData]
-
-          that.confirmLoading = true
-          let httpurl = ''
-          let method = ''
-          if (!this.model.id) {
-            httpurl += this.url.add
-            method = 'post'
-          } else {
-            httpurl += this.url.edit
-            method = 'put'
-          }
-          httpAction(httpurl, this.model, method).then((res) => {
-            if (res.success) {
-              that.$message.success(res.message)
-              that.$emit('ok')
-              that.close()
-            } else {
-              that.$message.warning(res.message)
+  export default {
+    name: 'EamThirdMaintenanceOrderModal',
+    components: { MaintenanceEquipmentSelect },
+    data() {
+      return {
+        title: '鎿嶄綔',
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 6 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 }
+        },
+        labelColLong: {
+          xs: { span: 24 },
+          sm: { span: 2 }
+        },
+        wrapperColLong: {
+          xs: { span: 24 },
+          sm: { span: 21 }
+        },
+        confirmLoading: false,
+        spinning: false,
+        validatorRules: {
+          equipmentId: [
+            { required: true, message: '璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�' }
+          ],
+          maintenanceDate: [
+            { required: true, message: '璇烽�夋嫨璁″垝淇濆吇鏃ユ湡!' }
+          ]
+        },
+        url: {
+          add: '/eam/thirdMaintenanceOrder/add',
+          standardDetail: '/eam/eamMaintenanceStandardDetail/queryList'
+        },
+        detail: {
+          dataSource: [],
+          columns: [
+            {
+              title: 'ID',
+              key: 'id',
+              type: JVXETypes.hidden
+            },
+            {
+              title: 'orderId',
+              key: 'orderId',
+              type: JVXETypes.hidden
+            },
+            {
+              title: '搴忓彿',
+              key: 'itemCode',
+              type: JVXETypes.normal,
+              width: 60,
+              align: 'center'
+            },
+            {
+              title: '淇濆吇閮ㄤ綅',
+              key: 'itemPart',
+              type: JVXETypes.normal,
+              align: 'center'
+            },
+            {
+              title: '淇濆吇鍐呭',
+              key: 'itemName',
+              type: JVXETypes.normal,
+              align: 'center'
+            },
+            {
+              title: '楠屾敹鏍囧噯',
+              key: 'itemDemand',
+              type: JVXETypes.normal,
+              align: 'center'
             }
-          }).finally(() => {
-            that.confirmLoading = false
-          })
-        } else {
-          return false
+          ]
         }
-      })
-    },
-    handleCancel() {
-      this.close()
-    },
-    autocompleteForm(selectObj) {
-      //鏍囧噯鍚嶇О锛屼繚鍏诲懆鏈熶笉鍒锋柊瑙e喅鍔炴硶
-      //鍔炴硶涓�  validatorRules equipmentId 杩樻槸鏈夐棶棰�
-      // const newObj = {
-      //   standardName: selectObj.standardName,
-      //   maintenancePeriod: selectObj.maintenancePeriod,
-      //   standardId : selectObj.id,
-      //   equipmentId: selectObj.equipmentId,
-      // };
-      // this.model = Object.assign({}, newObj, this.model)
-      //鍔炴硶浜�
-      this.$set(this.model, 'standardName', selectObj.standardName)
-      this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod)
-      this.$set(this.model, 'standardId', selectObj.id)
-      this.$set(this.model, 'equipmentId', selectObj.equipmentId)
-      // console.log('model', this.model)
-      if (!this.model.equipmentId) delete this.model.operator
-      if (!this.model.id) {
-        this.loadStandardDetail(selectObj.id)
-        this.loadPrecisionParameterList(selectObj.equipmentId)
       }
-      this.loadMaintenanceOperatorList(this.model.equipmentId)
     },
-    //鍔犺浇璇︽儏鏁版嵁
-    loadStandardDetail(standardId) {
-      this.detail.dataSource = []
-      if (standardId) {
+    methods: {
+      add() {
+        //鍒濆鍖栭粯璁ゅ��
+        this.model = {}
+        this.detail.dataSource = []
+        this.visible = true
+      },
+
+      async handleOk() {
+        const that = this
+        let errMap = await that.$refs.editableDetailTable.validateTable()
+        if (errMap) return
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.model.tableDetailList = that.$refs.editableDetailTable.getTableData()
+            that.confirmLoading = that.spinning = true
+            httpAction(that.url.add, that.model, 'post')
+              .then((res) => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.$emit('ok')
+                  that.close()
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                that.confirmLoading = that.spinning = false
+              })
+          } else {
+            return false
+          }
+        })
+      },
+
+      autocompleteForm(selectObj) {
+        this.$set(this.model, 'standardName', selectObj.standardName)
+        this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod)
+        this.$set(this.model, 'standardId', selectObj.id)
+        this.$set(this.model, 'equipmentId', selectObj.equipmentId)
+        this.loadStandardDetail(selectObj.id)
+      },
+
+      //鍔犺浇璇︽儏鏁版嵁
+      loadStandardDetail(standardId) {
+        this.detail.dataSource = []
         this.spinning = true
-        getAction(this.url.standardDetail, { standardId: standardId })
+        getAction(this.url.standardDetail, { standardId })
           .then(res => {
             if (res.success) {
-              this.detail.dataSource = res.result.map(item => ({
-                itemCode: item.itemCode,
-                itemName: item.itemName,
-                itemPart: item.itemPart,
-                itemDemand: item.itemDemand
-              }))
+              this.detail.dataSource = res.result
             }
           })
           .finally(() => {
             this.spinning = false
           })
+      },
+
+      handleCancel() {
+        this.close()
+      },
+
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.$refs.form.clearValidate()
       }
-    },
-    //鏍囧噯閫夋嫨鍙樺寲
-    loadDetail(orderId) {
-      if (orderId) {
-        getAction(this.url.detail, { orderId: orderId }).then(res => {
-          if (res.success) {
-            this.detail.dataSource = [...res.result]
-          }
-        })
-      }
-    },
-    loadMaintenanceOperatorList(equipmentId) {
-      this.maintenanceOperatorOptions = []
-      let params = { positionCode: 'PCR0001' }
-      if (equipmentId) {
-        params.equipmentId = equipmentId
-      } else {
-        return
-      }
-      const that = this
-      getAction(this.url.userSelect, params)
-        .then(res => {
-          if (res.success) {
-            that.maintenanceOperatorOptions = res.result.map(item => ({
-              key: item.id,
-              value: item.username,
-              text: item.realname
-            }))
-            if (!that.maintenanceOperatorOptions.find(item => item.value === that.model.operator)) delete that.model.operator
-          } else {
-            if (that.model.operator) delete that.model.operator
-          }
-        })
-        .catch(err => {
-          if (that.model.operator) delete that.model.operator
-        })
-    },
-    // loadPrecisionParameterList(equipmentId) {
-    //   this.precisionDetail.dataSource = []
-    //   if (equipmentId) {
-    //     this.spinning = true
-    //     getAction(this.url.precisionDetail, { equipmentId: equipmentId })
-    //       .then(res => {
-    //         if (res.success) {
-    //           this.precisionDetail.dataSource = res.result.map(item => ({
-    //             equipmentId: item.equipmentId,
-    //             parameterId: item.parameterId,
-    //             parameterId_dictText: item.parameterId_dictText,
-    //             parameterCode_dictText: item.parameterCode_dictText,
-    //             parameterValue: item.parameterValue,
-    //           }))
-    //         }
-    //       })
-    //       .finally(() => {
-    //         this.spinning = false
-    //       })
-    //   }
-    // },
-    // loadPrecisionDetail(orderId) {
-    //   if (orderId) {
-    //     getAction(this.url.precisionCheckDetail, { orderId: orderId }).then(res => {
-    //       if (res.success) {
-    //         this.precisionDetail.dataSource = [...res.result]
-    //       }
-    //     })
-    //   }
-    // },
-    initParams() {
-      this.detail.dataSource = []
-      // this.precisionDetail.dataSource = []
-      this.activeTabKey = '1'
-    },
+    }
   }
-}
-</script>
-
-<style lang="less" scoped>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file

--
Gitblit v1.9.3