From e1e7e01e40f3de2bd40d2de974a876f4f29abda2 Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期二, 22 七月 2025 14:54:50 +0800
Subject: [PATCH] 三保变更

---
 src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue           |  323 +++++++++++++++++++++++++++++++++++
 src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue |    2 
 src/views/eam/technical/modules/EamThirdMaintenanceChangeModal.vue    |  156 +++++++++++++++++
 src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue            |   21 ++
 4 files changed, 501 insertions(+), 1 deletions(-)

diff --git a/src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue b/src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue
new file mode 100644
index 0000000..3202893
--- /dev/null
+++ b/src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue
@@ -0,0 +1,323 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 鏌ヨ鍖哄煙 -->
+    <div class="table-page-search-wrapper" v-if="isDisplayOperation">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :xl="5" :lg="6" :md="8" :sm="24">
+            <a-form-item label="缁熶竴缂栫爜">
+              <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="4" :lg="7" :md="8" :sm="24">
+            <a-form-item label="鍙樻洿鍗曞彿">
+              <a-input placeholder="璇疯緭鍏ュ彉鏇村崟鍙�" v-model="queryParam.changeOrderNum"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="5" :lg="6" :md="8" :sm="12">
+            <a-form-item label="鐢宠鏃堕棿">
+              <a-range-picker v-model="queryParam.dates" @change="handleDateRangeChange" value-format="YYYY-MM-DD"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="4" :lg="6" :md="8" :sm="12">
+            <a-form-item label="鍙樻洿鐘舵��">
+              <j-dict-select-tag dict-code="third_maintenance_change_status" placeholder="璇烽�夋嫨鍙樻洿鐘舵��"
+                                 v-model="queryParam.changeStatus"/>
+            </a-form-item>
+          </a-col>
+
+          <a-col :xl="4" :lg="7" :md="8" :sm="24">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+              <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+            </span>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- table鍖哄煙-begin -->
+    <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+             :pagination="ipagination" :loading="loading" :scroll="{x:'max-content'}"
+             @change="handleTableChange">
+        <span slot="action" slot-scope="text, record">
+          <tamplate v-if="record.changeStatus=='WAIT_SUBMIT'">
+            <a @click="handleEdit(record)">缂栬緫</a>
+
+            <a-divider type="vertical"/>
+
+            <a-popconfirm title="纭畾鎻愪氦鍚楋紵" @confirm="handleSubmit(record.id)">
+               <a>鎻愪氦</a>
+            </a-popconfirm>
+
+            <a-divider type="vertical"/>
+
+            <a-popconfirm title="纭畾浣滃簾鍚楋紵" @confirm="handleAbolish(record.id)">
+              <a>浣滃簾</a>
+            </a-popconfirm>
+          </tamplate>
+
+          <a @click="handleDetail(record)" v-if="record.changeStatus!='WAIT_SUBMIT'&&record.changeStatus!='ABOLISH'">璇︽儏</a>
+        </span>
+    </a-table>
+    <!-- table鍖哄煙-end -->
+
+    <!-- 琛ㄥ崟鍖哄煙 -->
+    <eam-third-maintenance-change-modal ref="orderChangeModal" @ok="modalFormOk"/>
+
+    <!--鍙樻洿娴佺▼琛ㄥ崟-->
+<!--    <third-maintenance-approval-modal ref="thirdMaintenanceApprovalModal"-->
+<!--                                      :selectShenpiData="selectThirdMaintenanceData"/>-->
+
+  </a-card>
+</template>
+
+<script>
+  // import EamThirdMaintenanceOrderModal from './modules/EamThirdMaintenanceOrderModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue'
+  import { deleteAction, getAction } from '@api/manage'
+  // import ThirdMaintenanceApprovalModal
+  //   from '@views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue'
+  import EamThirdMaintenanceChangeModal
+    from '@views/eam/technical/modules/EamThirdMaintenanceChangeModal.vue'
+
+  export default {
+    name: 'EamThirdMaintenanceChangeList',
+    mixins: [JeecgListMixin],
+    components: {
+      EamThirdMaintenanceChangeModal,
+      LxSearchEquipmentSelect,
+      // EamThirdMaintenanceOrderModal,
+      // ThirdMaintenanceApprovalModal
+    },
+    props: {
+      isDisplayOperation: {
+        type: Boolean,
+        default: true
+      }
+    },
+    data() {
+      return {
+        description: '璁惧涓夌骇淇濆吇鍙樻洿椤甸潰',
+        disableMixinCreated: true,
+        selectThirdMaintenanceData: {},
+        // 琛ㄥご
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key: 'rowIndex',
+            width: 60,
+            align: 'center',
+            fixed: 'left',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            }
+          },
+          {
+            title: '缁熶竴缂栫爜',
+            align: 'center',
+            dataIndex: 'equipmentCode',
+            fixed: 'left'
+          },
+          {
+            title: '璁惧鍚嶇О',
+            align: 'center',
+            dataIndex: 'equipmentName',
+            fixed: 'left'
+          },
+          {
+            title: '璁惧鍨嬪彿',
+            align: 'center',
+            dataIndex: 'equipmentModel',
+            fixed: 'left'
+          },
+          {
+            title: '宸ュ崟鍙�',
+            align: 'center',
+            dataIndex: 'orderNum_dictText'
+          },
+          {
+            title: '鍙樻洿鍗曞彿',
+            align: 'center',
+            dataIndex: 'changeOrderNum'
+          },
+          {
+            title: '鐢宠浜�',
+            align: 'center',
+            dataIndex: 'applicant_dictText'
+          },
+          {
+            title: '鐢宠閮ㄩ棬',
+            align: 'center',
+            dataIndex: 'factoryOrgCode_dictText'
+          },
+          {
+            title: '鐢宠鏃ユ湡',
+            align: 'center',
+            dataIndex: 'applyDate'
+          },
+          {
+            title: '鐢宠绫诲瀷',
+            align: 'center',
+            dataIndex: 'applyCategory_dictText'
+          },
+          {
+            title: '鍙樻洿鐘舵��',
+            align: 'center',
+            dataIndex: 'changeStatus_dictText'
+          },
+          {
+            title: '鍙樻洿鍘熷洜绫诲瀷',
+            align: 'center',
+            dataIndex: 'applyReasonType_dictText'
+          },
+          {
+            title: '寤朵繚(鍙樻洿)鍘熷洜',
+            align: 'center',
+            dataIndex: 'applyReason'
+          },
+          {
+            title: '寤惰繜淇濆吇鏃ユ湡',
+            align: 'center',
+            dataIndex: 'deferredMaintenanceDate'
+          },
+          {
+            title: '涓荤棰嗗绛惧瓧',
+            align: 'center',
+            dataIndex: 'equipmentManagerSignature_dictText'
+          },
+          {
+            title: '涓荤棰嗗绛惧瓧鏃堕棿',
+            align: 'center',
+            dataIndex: 'equipmentManagerSignatureTime'
+          },
+          {
+            title: '閮ㄩ棬棰嗗绛惧瓧',
+            align: 'center',
+            dataIndex: 'departManagerSignature_dictText'
+          },
+          {
+            title: '閮ㄩ棬棰嗗绛惧瓧鏃堕棿',
+            align: 'center',
+            dataIndex: 'departManagerSignatureTime'
+          },
+          {
+            title: '鐢熶骇淇濋殰閮ㄩ瀵肩瀛�',
+            align: 'center',
+            dataIndex: 'productionSupportSignature_dictText'
+          },
+          {
+            title: '鐢熶骇淇濋殰閮ㄩ瀵肩瀛楁椂闂�',
+            align: 'center',
+            dataIndex: 'productionSupportSignatureTime'
+          },
+          {
+            title: 'HF缂栫爜',
+            align: 'center',
+            dataIndex: 'hfCode'
+          }
+        ],
+        url: {
+          list: '/eam/eamThirdMaintenanceChange/list',
+          abolish: '/eam/eamThirdMaintenanceChange/abolish',
+          collect: '/eam/eamThirdMaintenanceChange/collect'
+        }
+      }
+    },
+    created() {
+      if (!this.isDisplayOperation) {
+        return
+      }
+      const operationColumn = {
+        title: '鎿嶄綔',
+        dataIndex: 'action',
+        align: 'center',
+        fixed: 'right',
+        scopedSlots: { customRender: 'action' }
+      }
+      this.columns = [...this.columns, operationColumn]
+      this.loadData(1)
+    },
+    computed: {},
+    methods: {
+      /**
+       * 鎻愪氦鏃惰Е鍙�
+       * @param id
+       */
+      handleSubmit(id) {
+        const that = this
+        that.loading = true
+        getAction(this.url.submit, { id })
+          .then(res => {
+            if (res.success) {
+              that.$notification.success({
+                message: '娑堟伅',
+                description: res.message
+              })
+              that.loadData()
+              that.loading = false
+            } else {
+              that.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+      },
+
+      /**
+       * 浣滃簾鏃惰Е鍙�
+       * @param id
+       */
+      handleAbolish(id) {
+        const that = this
+        that.loading = true
+        getAction(this.url.abolish, { id })
+          .then(res => {
+            if (res.success) {
+              that.$notification.success({
+                message: '娑堟伅',
+                description: res.message
+              })
+              that.loadData()
+            } else {
+              that.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+              that.loading = false
+            }
+          })
+      },
+
+      // /**
+      //  * 鐐瑰嚮璇︽儏鏃惰Е鍙�
+      //  * @param record
+      //  */
+      // handleDetail(record) {
+      //   this.selectThirdMaintenanceData = Object.assign({}, record)
+      //   this.$refs.thirdMaintenanceApprovalModal.title = '璇︽儏'
+      //   this.$refs.thirdMaintenanceApprovalModal.visible = true
+      //   this.$refs.thirdMaintenanceApprovalModal.disableSubmit = true
+      //   this.$refs.thirdMaintenanceApprovalModal.recordDetail(record)
+      // },
+
+      /**
+       * 鐢宠鏃堕棿鍙戠敓鏀瑰彉鏃惰Е鍙�
+       * @param dateStringArray
+       */
+      handleDateRangeChange(dateStringArray) {
+        this.queryParam.dateBegin = dateStringArray[0]
+        this.queryParam.dateEnd = dateStringArray[1]
+      },
+
+      handlePrint(record) {
+        let href = `${window._CONFIG['domianURL']}/jmreport/view/1094880052100399104?id=` + record.id
+        //  + `&orderId=` + record.id; //缃戠珯閾炬帴
+        window.open(href, '_blank')
+      }
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue b/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue
index 215c2a4..f0ec1cb 100644
--- a/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue
+++ b/src/views/eam/maintenance/EamThirdMaintenanceOrderList.vue
@@ -58,6 +58,12 @@
             <a-divider type="vertical"/>
           </template>
 
+          <template v-if="record.maintenanceStatus == 'WAIT_MAINTENANCE'||record.maintenanceStatus=='FREEZE'">
+             <a @click="handleOrderChange(record)">鍙樻洿</a>
+
+             <a-divider type="vertical"/>
+          </template>
+
           <a @click="handleDetail(record)">璇︽儏</a>
 
           <template v-if="record.maintenanceStatus === 'COMPLETE'">
@@ -74,6 +80,9 @@
 
     <third-maintenance-approval-modal ref="thirdMaintenanceApprovalModal"
                                       :selectShenpiData="selectThirdMaintenanceData"/>
+
+    <!--宸ュ崟鍙樻洿寮圭獥-->
+    <eam-third-maintenance-change-modal ref="orderChangeModal" @ok="modalFormOk"/>
   </a-card>
 </template>
 
@@ -84,11 +93,14 @@
   import { deleteAction, getAction } from '@api/manage'
   import ThirdMaintenanceApprovalModal
     from '@views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue'
+  import EamThirdMaintenanceChangeModal
+    from '@views/eam/technical/modules/EamThirdMaintenanceChangeModal.vue'
 
   export default {
     name: 'EamThirdMaintenanceOrderList',
     mixins: [JeecgListMixin],
     components: {
+      EamThirdMaintenanceChangeModal,
       LxSearchEquipmentSelect,
       EamThirdMaintenanceOrderModal,
       ThirdMaintenanceApprovalModal
@@ -305,6 +317,15 @@
       },
 
       /**
+       * 鐐瑰嚮鍙樻洿鏃惰Е鍙�
+       * @param record
+       */
+      handleOrderChange(record) {
+        this.$refs.orderChangeModal.title = '鍙樻洿'
+        this.$refs.orderChangeModal.add(record)
+      },
+
+      /**
        * 鐐瑰嚮棰嗗彇鏃惰Е鍙�
        * @param id
        */
diff --git a/src/views/eam/technical/modules/EamThirdMaintenanceChangeModal.vue b/src/views/eam/technical/modules/EamThirdMaintenanceChangeModal.vue
new file mode 100644
index 0000000..d9aa27e
--- /dev/null
+++ b/src/views/eam/technical/modules/EamThirdMaintenanceChangeModal.vue
@@ -0,0 +1,156 @@
+<template>
+  <j-modal :title="title" :width="1300" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen
+           @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴">
+    <a-spin :spinning="confirmLoading">
+      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <a-row>
+          <a-col :span="8">
+            <a-form-model-item label="宸ュ崟鍙�">
+              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" disabled v-model="model.orderId"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item label="鍙樻洿鍗曞彿">
+              <a-input placeholder="绯荤粺鑷姩鐢熸垚" disabled v-model="model.changeOrderNum"/>
+            </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="THIRD_MAINTENANCE" @autocompleteForm="autocompleteForm"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item prop="deferredMaintenanceDate" label="寤惰繜淇濆吇鏃ユ湡">
+              <a-date-picker v-model="model.deferredMaintenanceDate" value-format="YYYY-MM-DD" style="width: 100%"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item prop="applyCategory" label="鐢宠绫诲瀷">
+              <j-dict-select-tag v-model="model.applyCategory" placeholder="璇烽�夋嫨鐢宠绫诲瀷"
+                                 dict-code="third_maintenance_change_category"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item prop="applyReasonType" label="鍙樻洿鍘熷洜绫诲瀷">
+              <j-dict-select-tag v-model="model.applyReasonType" placeholder="璇烽�夋嫨鍙樻洿鍘熷洜绫诲瀷"
+                                 dict-code="third_maintenance_change_reason"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="鍙樻洿鍘熷洜" :labelCol="{span:2}" :wrapperCol="{span:21}">
+              <a-textarea v-model="model.applyReason" placeholder="璇疯緭鍏ュ彉鏇村師鍥�"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="澶囨敞" :labelCol="{span:2}" :wrapperCol="{span:21}">
+              <a-textarea v-model="model.remark" placeholder="璇疯緭鍏ュ娉�"/>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </a-spin>
+  </j-modal>
+</template>
+
+<script>
+import { postAction } from '@/api/manage'
+import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
+
+export default {
+  name: 'EamThirdMaintenanceChangeModal',
+  components: {
+    MaintenanceEquipmentSelect
+
+  },
+  data() {
+    return {
+      title: '鎿嶄綔',
+      visible: false,
+      model: {},
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 6 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 15 }
+      },
+      confirmLoading: false,
+      validatorRules: {
+        deferredMaintenanceDate: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
+        applyCategory: [{ required: true, message: '璇烽�夋嫨鐢宠绫诲瀷', trigger: 'change' }],
+        applyReasonType: [{ required: true, message: '璇烽�夋嫨鍙樻洿鍘熷洜', trigger: 'change' }],
+      },
+      url: {
+        add: '/eam/eamThirdMaintenanceChange/add',
+        edit: '/eam/eamThirdMaintenanceChange/edit'
+      }
+    }
+  },
+  methods: {
+    add({ id, equipmentId }) {
+      this.model = Object.assign({ orderId: id, equipmentId })
+      this.visible = true
+    },
+
+    edit(record) {
+      this.model = Object.assign({}, record)
+      this.visible = true
+    },
+
+    handleOk() {
+      const that = this
+      // 瑙﹀彂琛ㄥ崟楠岃瘉
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          that.confirmLoading = true
+
+          let httpUrl
+          if (!that.model.id) {
+            httpUrl = that.url.add
+          } else {
+            httpUrl = that.url.edit
+          }
+
+          postAction(httpUrl, that.model)
+            .then((res) => {
+              if (res.success) {
+                that.$notification.success({
+                  message: '娑堟伅',
+                  description: res.message
+                })
+                if (!that.model.id) {
+                  that.$router.push('/eam/maintenance/EamThirdMaintenanceChangeList')
+                  return
+                }
+                that.close()
+                that.$emit('ok')
+              } else {
+                that.$notification.warning({
+                  message: '娑堟伅',
+                  description: res.message
+                })
+              }
+            })
+            .finally(() => {
+              that.confirmLoading = false
+            })
+        } else {
+          return false
+        }
+      })
+    },
+
+    handleCancel() {
+      this.close()
+    },
+
+    close() {
+      this.$emit('close')
+      this.visible = false
+      this.$refs.form.clearValidate()
+    }
+  }
+}
+</script>
\ No newline at end of file
diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
index 1662efc..04647d7 100644
--- a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
+++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
@@ -509,7 +509,7 @@
        * @param callback 缁撴灉鍥炶皟鍑芥暟
        */
       customValidator({ cellValue, row }, callback) {
-        if (this.activeTabKey == '1' && row.inspectionResult != 'NORMAL') {
+        if (this.activeTabKey == '1' && row.inspectionResult == 'ANOMALY') {
           if (!cellValue) {
             callback(false, '璇疯緭鍏�${title}') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀�
           } else {

--
Gitblit v1.9.3