From 44c6f1e1c8d0a20b1a2e54acdf80dc07842393d0 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 14 五月 2025 17:44:00 +0800
Subject: [PATCH] art: 设备管理-二保-新增,编辑功能

---
 src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue |  372 +++++++++++++++++++++++-------
 src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue            |    9 
 src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue          |  315 ++++++++++++++++++++-----
 3 files changed, 531 insertions(+), 165 deletions(-)

diff --git a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue
index 55e52ef..02310e0 100644
--- a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue
+++ b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue
@@ -2,7 +2,7 @@
   <a-card :bordered="false">
 
     <!-- 鏌ヨ鍖哄煙 -->
-    <div class="table-page-search-wrapper">
+    <div class="table-page-search-wrapper" v-if="isDisplayOperation">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
           <a-col :xl="4" :lg="7" :md="8" :sm="24">
@@ -16,27 +16,22 @@
                                           v-model="queryParam.equipmentId"></lx-search-equipment-select>
             </a-form-item>
           </a-col>
-          <a-col :xl="4" :lg="7" :md="8" :sm="24">
-            <a-form-item label="淇濆吇鐘舵��">
-              <j-dict-select-tag placeholder="璇烽�夋嫨淇濆吇鐘舵��" dict-code="week_maintenance_status"
-                                 v-model="queryParam.maintenanceStatus"/>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="璁″垝淇濆吇鏃ユ湡">
+              <a-range-picker v-model="queryParam.maintenanceDateRange" @change="onMaintenanceDateChange"
+                              format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
             </a-form-item>
           </a-col>
-          <template v-if="toggleSearchStatus">
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="璁″垝寮�濮嬫椂闂�">
-                <a-input placeholder="璇疯緭鍏ヨ鍒掑紑濮嬫椂闂�" v-model="queryParam.planStartTime"></a-input>
-              </a-form-item>
-            </a-col>
-          </template>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="4" :lg="7" :md="8" :sm="24">
+            <a-form-item label="淇濆吇鐘舵��">
+              <j-dict-select-tag placeholder="璇烽�夋嫨淇濆吇鐘舵��" dict-code="second_maintenance_status"
+                                 v-model="queryParam.maintenanceStatus" />
+            </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>
-              <a @click="handleToggleSearch" style="margin-left: 8px">
-                {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }}
-                <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
-              </a>
             </span>
           </a-col>
 
@@ -45,13 +40,18 @@
     </div>
 
     <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
-    <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
+    <div class="table-operator" v-if="isDisplayOperation">
+      <a-button @click="handleAdd" type="primary" icon="plus" v-if="isShowAuth('eam:secondMaintenance:add')">鏂板
+      </a-button>
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel">
+          <a-menu-item key="1" @click="handlerBatchAbolish" v-if="isShowAuth('eam:secondMaintenance:abolish')">
             <a-icon type="delete" />
-            鍒犻櫎
+            浣滃簾
+          </a-menu-item>
+          <a-menu-item key="2" @click="handlerBatchCollect" v-if="isShowAuth('eam:secondMaintenance:collect')">
+            <a-icon type="form" />
+            棰嗗彇
           </a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔
@@ -62,7 +62,7 @@
 
     <!-- table鍖哄煙-begin -->
     <div>
-      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;" v-if="isDisplayOperation">
         <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a
         style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�
         <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>
@@ -82,19 +82,35 @@
         @change="handleTableChange">
 
         <span slot="action" slot-scope="text, record">
+          <template v-if="record.maintenanceStatus === 'WAIT_MAINTENANCE' && isShowAuth('eam:secondMaintenance:edit')">
           <a @click="handleEdit(record)">缂栬緫</a>
 
           <a-divider type="vertical" />
+
+          <a-popconfirm title="纭畾棰嗗彇鍚�?" @confirm="() => handlerCollect(record.id)">
+            <a>棰嗗彇</a>
+          </a-popconfirm>
+
+          <a-divider type="vertical" />
+
           <a-dropdown>
             <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a>
             <a-menu slot="overlay">
               <a-menu-item>
-                <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">
-                  <a>鍒犻櫎</a>
+                <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handlerAbolish(record.id)">
+                  <a>浣滃簾</a>
                 </a-popconfirm>
+              </a-menu-item>
+              <a-menu-item>
+                <a @click="handleDetail(record)">璇︽儏</a>
               </a-menu-item>
             </a-menu>
           </a-dropdown>
+          </template>
+
+          <template v-else>
+              <a @click="handleDetail(record)">璇︽儏</a>
+          </template>
         </span>
 
       </a-table>
@@ -111,6 +127,7 @@
 import EamSecondMaintenanceOrderModal from './modules/EamSecondMaintenanceOrderModal'
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue'
+import { deleteAction, getAction } from '@api/manage'
 
 export default {
   name: 'EamSecondMaintenanceOrderList',
@@ -118,6 +135,12 @@
   components: {
     LxSearchEquipmentSelect,
     EamSecondMaintenanceOrderModal
+  },
+  props: {
+    isDisplayOperation: {
+      type: Boolean,
+      default: true
+    }
   },
   data() {
     return {
@@ -130,39 +153,41 @@
           key: 'rowIndex',
           width: 60,
           align: 'center',
+          fixed: 'left',
           customRender: function(t, r, index) {
             return parseInt(index) + 1
           }
         },
         {
-          title: '鍒犻櫎鏍囪',
-          align: 'center',
-          dataIndex: 'delFlag'
-        },
-        {
           title: '宸ュ崟鍙�',
           align: 'center',
-          dataIndex: 'orderNum'
+          dataIndex: 'orderNum',
+          fixed: 'left',
+          width: 60
         },
         {
-          title: '璁惧ID',
+          title: '璁惧缂栧彿',
           align: 'center',
-          dataIndex: 'equipmentId'
+          dataIndex: 'equipmentCode',
+          fixed: 'left',
+          width: 60
         },
         {
-          title: '鏍囧噯ID',
+          title: '璁惧鍚嶇О',
           align: 'center',
-          dataIndex: 'standardId'
+          dataIndex: 'equipmentName',
+          fixed: 'left',
+          width: 60
         },
         {
-          title: '璁″垝寮�濮嬫椂闂�',
+          title: '鏍囧噯鍚嶇О',
           align: 'center',
-          dataIndex: 'planStartTime'
+          dataIndex: 'standardId_dictText'
         },
         {
-          title: '璁″垝缁撴潫鏃堕棿',
+          title: '璁″垝淇濆吇鏃ユ湡',
           align: 'center',
-          dataIndex: 'planEndTime'
+          dataIndex: 'maintenanceDate'
         },
         {
           title: '瀹為檯寮�濮嬫椂闂�',
@@ -177,60 +202,208 @@
         {
           title: '淇濆吇浜�',
           align: 'center',
-          dataIndex: 'operator'
+          dataIndex: 'operator_dictText'
         },
         {
           title: '淇濆吇鐘舵��',
           align: 'center',
-          dataIndex: 'maintenanceStatus'
+          dataIndex: 'maintenanceStatus_dictText'
         },
         {
           title: '鍒涘缓鏂瑰紡',
           align: 'center',
-          dataIndex: 'creationMethod'
-        },
-        {
-          title: '璁惧绠$悊鍛樼‘璁�',
-          align: 'center',
-          dataIndex: 'confirmUser'
-        },
-        {
-          title: '纭鏃堕棿',
-          align: 'center',
-          dataIndex: 'confirmTime'
-        },
-        {
-          title: '鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧',
-          align: 'center',
-          dataIndex: 'imageFiles'
+          dataIndex: 'creationMethod_dictText'
         },
         {
           title: '澶囨敞',
           align: 'center',
           dataIndex: 'remark'
-        },
-        {
-          title: '鎿嶄綔',
-          dataIndex: 'action',
-          align: 'center',
-          scopedSlots: { customRender: 'action' }
         }
       ],
       url: {
-        list: '/eam/eamSecondMaintenanceOrder/list',
-        delete: '/eam/eamSecondMaintenanceOrder/delete',
-        deleteBatch: '/eam/eamSecondMaintenanceOrder/deleteBatch',
-        exportXlsUrl: 'eam/eamSecondMaintenanceOrder/exportXls',
-        importExcelUrl: 'eam/eamSecondMaintenanceOrder/importExcel'
+        list: '/eam/secondMaintenanceOrder/list',
+        abolish: '/eam/secondMaintenanceOrder/abolish',
+        abolishBatch: '/eam/secondMaintenanceOrder/abolishBatch',
+        collect: '/eam/secondMaintenanceOrder/collect',
+        collectBatch: '/eam/secondMaintenanceOrder/collectBatch'
       }
     }
   },
-  computed: {
-    importExcelUrl: function() {
-      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+  created() {
+    if (!this.isDisplayOperation) {
+      return
     }
+    const operationColumn = {
+      title: '鎿嶄綔',
+      dataIndex: 'action',
+      align: 'center',
+      fixed: 'right',
+      width: 200,
+      scopedSlots: { customRender: 'action' }
+    }
+    this.columns = [...this.columns, operationColumn]
+    this.loadData(1)
   },
-  methods: {}
+  computed: {},
+  methods: {
+    onMaintenanceDateChange: function(value, dateString) {
+      if (dateString && dateString.length === 2) {
+        this.queryParam.maintenanceDateBegin = dateString[0]
+        this.queryParam.maintenanceDateEnd = dateString[1]
+      } else {
+        this.queryParam.maintenanceDateBegin = undefined
+        this.queryParam.maintenanceDateEnd = undefined
+      }
+    },
+    handlerAbolish(id) {
+      if (!this.url.abolish) {
+        this.$message.error('璇疯缃畊rl.abolish灞炴��!')
+        return
+      }
+      var that = this
+      deleteAction(that.url.abolish, { id: id }).then((res) => {
+        if (res.success) {
+          //閲嶆柊璁$畻鍒嗛〉闂
+          that.reCalculatePage(1)
+          // that.$message.success(res.message);
+          that.$notification.success({
+            message: '娑堟伅',
+            description: res.message
+          })
+          that.loadData()
+        } else {
+          // that.$message.warning(res.message);
+          that.$notification.warning({
+            message: '娑堟伅',
+            description: res.message
+          })
+        }
+      })
+    },
+    handlerBatchAbolish() {
+      if (!this.url.abolishBatch) {
+        this.$message.error('璇疯缃畊rl.abolishBatch灞炴��!')
+        return
+      }
+      if (this.selectedRowKeys.length <= 0) {
+        // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒');
+        this.$notification.warning({
+          message: '娑堟伅',
+          description: '璇烽�夋嫨涓�鏉¤褰�'
+        })
+        return
+      } else {
+        var ids = ''
+        for (var a = 0; a < this.selectedRowKeys.length; a++) {
+          ids += this.selectedRowKeys[a] + ','
+        }
+        var that = this
+        this.$confirm({
+          title: '纭浣滃簾',
+          content: '鏄惁浣滃簾閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲浣滃簾鎴愬姛?',
+          onOk: function() {
+            that.loading = true
+            deleteAction(that.url.abolishBatch, { ids: ids }).then((res) => {
+              if (res.success) {
+                //閲嶆柊璁$畻鍒嗛〉闂
+                that.reCalculatePage(that.selectedRowKeys.length)
+                // that.$message.success(res.message);
+                that.$notification.success({
+                  message: '娑堟伅',
+                  description: res.message
+                })
+                that.loadData()
+                that.onClearSelected()
+              } else {
+                // that.$message.warning(res.message);
+                that.$notification.warning({
+                  message: '娑堟伅',
+                  description: res.message
+                })
+              }
+            }).finally(() => {
+              that.loading = false
+            })
+          }
+        })
+      }
+    },
+    //鍗曚釜棰嗗彇
+    handlerCollect(id) {
+      if (!this.url.collect) {
+        this.$message.error('璇疯缃畊rl.collect灞炴��!')
+        return
+      }
+      let that = this
+      getAction(that.url.collect, { id: id }).then((res) => {
+        if (res.success) {
+          //閲嶆柊璁$畻鍒嗛〉闂
+          that.reCalculatePage(1)
+          // that.$message.success(res.message);
+          that.$notification.success({
+            message: '娑堟伅',
+            description: res.message
+          })
+          that.loadData()
+        } else {
+          // that.$message.warning(res.message);
+          that.$notification.warning({
+            message: '娑堟伅',
+            description: res.message
+          })
+        }
+      })
+    },
+    //鎵归噺棰嗗彇
+    handlerBatchCollect() {
+      if (!this.url.collectBatch) {
+        this.$message.error('璇疯缃畊rl.abolishBatch灞炴��!')
+        return
+      }
+      if (this.selectedRowKeys.length <= 0) {
+        // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒');
+        this.$notification.warning({
+          message: '娑堟伅',
+          description: '璇烽�夋嫨涓�鏉¤褰�'
+        })
+        return
+      } else {
+        var ids = ''
+        for (var a = 0; a < this.selectedRowKeys.length; a++) {
+          ids += this.selectedRowKeys[a] + ','
+        }
+        var that = this
+        this.$confirm({
+          title: '纭棰嗗彇',
+          content: '鏄惁棰嗗彇閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲棰嗗彇鎴愬姛?',
+          onOk: function() {
+            that.loading = true
+            deleteAction(that.url.collectBatch, { ids: ids }).then((res) => {
+              if (res.success) {
+                //閲嶆柊璁$畻鍒嗛〉闂
+                that.reCalculatePage(that.selectedRowKeys.length)
+                // that.$message.success(res.message);
+                that.$notification.success({
+                  message: '娑堟伅',
+                  description: res.message
+                })
+                that.loadData()
+                that.onClearSelected()
+              } else {
+                // that.$message.warning(res.message);
+                that.$notification.warning({
+                  message: '娑堟伅',
+                  description: res.message
+                })
+              }
+            }).finally(() => {
+              that.loading = false
+            })
+          }
+        })
+      }
+    }
+  }
 }
 </script>
 <style scoped>
diff --git a/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue b/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue
index 2b5c30b..afdf311 100644
--- a/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue
+++ b/src/views/eam/maintenance/EamWeekMaintenanceOrderList.vue
@@ -322,8 +322,13 @@
     computed: {},
     methods: {
       onMaintenanceDateChange: function(value, dateString) {
-        this.queryParam.maintenanceDateBegin = dateString[0]
-        this.queryParam.maintenanceDateEnd = dateString[1]
+        if(dateString && dateString.length === 2) {
+          this.queryParam.maintenanceDateBegin = dateString[0]
+          this.queryParam.maintenanceDateEnd = dateString[1]
+        }else {
+          this.queryParam.maintenanceDateBegin = undefined
+          this.queryParam.maintenanceDateEnd = undefined
+        }
       },
       handlerAbolish(id) {
         if (!this.url.abolish) {
diff --git a/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue
index 5879629..07af5c0 100644
--- a/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue
+++ b/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderModal.vue
@@ -1,148 +1,336 @@
 <template>
   <j-modal
     :title="title"
-    :width="800"
+    :width="1200"
     :visible="visible"
     :confirmLoading="confirmLoading"
     switchFullscreen
+    :mask-closable="false"
     @ok="handleOk"
     @cancel="handleCancel"
     cancelText="鍏抽棴">
-    
-    <a-spin :spinning="confirmLoading">
-      <a-form-model ref="form" :model="model" :rules="validatorRules">
-      
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag" label="鍒犻櫎鏍囪">
-          <a-input-number v-model="model.delFlag"/>
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNum" label="宸ュ崟鍙�">
-          <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-model="model.orderNum" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧ID">
-          <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="model.equipmentId" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardId" label="鏍囧噯ID">
-          <a-input placeholder="璇疯緭鍏ユ爣鍑咺D" v-model="model.standardId" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="planStartTime" label="璁″垝寮�濮嬫椂闂�">
-          <a-input placeholder="璇疯緭鍏ヨ鍒掑紑濮嬫椂闂�" v-model="model.planStartTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="planEndTime" label="璁″垝缁撴潫鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ヨ鍒掔粨鏉熸椂闂�" v-model="model.planEndTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="actualStartTime" label="瀹為檯寮�濮嬫椂闂�">
-          <a-input placeholder="璇疯緭鍏ュ疄闄呭紑濮嬫椂闂�" v-model="model.actualStartTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="actualEndTime" label="瀹為檯缁撴潫鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ュ疄闄呯粨鏉熸椂闂�" v-model="model.actualEndTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="淇濆吇浜�">
-          <a-input placeholder="璇疯緭鍏ヤ繚鍏讳汉" v-model="model.operator" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenanceStatus" label="淇濆吇鐘舵��">
-          <a-input placeholder="璇疯緭鍏ヤ繚鍏荤姸鎬�" v-model="model.maintenanceStatus" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="creationMethod" label="鍒涘缓鏂瑰紡">
-          <a-input placeholder="璇疯緭鍏ュ垱寤烘柟寮�" v-model="model.creationMethod" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmUser" label="璁惧绠$悊鍛樼‘璁�">
-          <a-input placeholder="璇疯緭鍏ヨ澶囩鐞嗗憳纭" v-model="model.confirmUser" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmTime" label="纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ョ‘璁ゆ椂闂�" v-model="model.confirmTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="imageFiles" label="鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧">
-          <a-input placeholder="璇疯緭鍏ョ収鐗囨枃浠秈ds;id浠ラ�楀彿鍒嗛殧" v-model="model.imageFiles" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark" label="澶囨敞">
-          <a-input placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" />
-        </a-form-model-item>
-		
+
+    <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="orderNum" label="宸ュ崟鍙�">
+              <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>
+          </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>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <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%"/>
+            </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-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-form-model-item>
+        </a-row>
+        <a-row :gutter="24">
+          <a-spin :spinning="detail.loading">
+            <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-spin>
+        </a-row>
       </a-form-model>
     </a-spin>
   </j-modal>
 </template>
 
 <script>
-  import { httpAction } from '@/api/manage'
-  import moment from "moment"
+import { getAction, httpAction } from '@/api/manage'
+import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
+import { JVXETypes } from '@comp/jeecg/JVxeTable'
 
-  export default {
+export default {
     name: "EamSecondMaintenanceOrderModal",
+    components: { MaintenanceEquipmentSelect },
     data () {
       return {
         title:"鎿嶄綔",
         visible: false,
+        editable: false,
         model: {},
+        maintenanceCategory: 'SECOND_MAINTENANCE',
         labelCol: {
           xs: { span: 24 },
-          sm: { span: 5 },
+          sm: { span: 6 }
         },
         wrapperCol: {
           xs: { span: 24 },
-          sm: { span: 16 },
+          sm: { span: 16 }
         },
-
+        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/eamSecondMaintenanceOrder/add",
-          edit: "/eam/eamSecondMaintenanceOrder/edit",
+          add: "/eam/secondMaintenanceOrder/add",
+          edit: "/eam/secondMaintenanceOrder/edit",
+          standardDetail: '/eam/eamMaintenanceStandardDetail/queryList',
+          detail: '/eam/secondMaintenanceOrderDetail/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']
+          }
+        }
       }
     },
     created () {
     },
     methods: {
-      add () {
+      add() {
         //鍒濆鍖栭粯璁ゅ��
-        this.edit({});
+        this.model = {}
+        this.visible = true
+        this.editable = false
+        this.detail.dataSource = []
       },
-      edit (record) {
-        this.model = Object.assign({}, record);
-        this.visible = true;
+      edit(record) {
+        this.model = Object.assign({}, record)
+        this.visible = true
+        this.editable = true
+        this.detail.dataSource = []
+        this.loadDetail(record.id)
       },
-      close () {
-        this.$emit('close');
-        this.visible = false;
-        this.$refs.form.clearValidate();
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.$refs.form.clearValidate()
       },
-      handleOk () {
-        const that = this;
+      async handleOk() {
+        const that = this
+        let errMap = await that.$refs.editableDetailTable.validateTable()
+        if (errMap) {
+          this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�')
+          return
+        }
         // 瑙﹀彂琛ㄥ崟楠岃瘉
-         this.$refs.form.validate(valid => {
+        this.$refs.form.validate(valid => {
           if (valid) {
-            that.confirmLoading = true;
-            let httpurl = '';
-            let method = '';
-            if(!this.model.id){
-              httpurl+=this.url.add;
-              method = 'post';
-            }else{
-              httpurl+=this.url.edit;
-               method = 'put';
+            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');
-              }else{
-                that.$message.warning(res.message);
+            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)
               }
             }).finally(() => {
-              that.confirmLoading = false;
-              that.close();
+              that.confirmLoading = false
             })
-          }else{
-             return false;
+          } else {
+            return false
           }
         })
       },
-      handleCancel () {
+      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.loadMaintenanceOperatorList(this.model.equipmentId)
+      },
+      //鍔犺浇璇︽儏鏁版嵁
+      loadStandardDetail(standardId) {
+        this.detail.dataSource = []
+        if (standardId) {
+          this.spinning = true
+          getAction(this.url.standardDetail, { standardId: 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
+                }))
+              }
+            })
+            .finally(() => {
+              this.spinning = false
+            })
+        }
+      },
+      //鏍囧噯閫夋嫨鍙樺寲
+      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
+          })
+      }
 
     }
   }

--
Gitblit v1.9.3