From 19aff1ac87030b21d2b01cdca5d5604c840ba7c0 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期一, 21 七月 2025 21:36:31 +0800
Subject: [PATCH] 维修工单

---
 src/views/eam/base/modules/EamMaintenanceStandardModal.vue |  604 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 390 insertions(+), 214 deletions(-)

diff --git a/src/views/eam/base/modules/EamMaintenanceStandardModal.vue b/src/views/eam/base/modules/EamMaintenanceStandardModal.vue
index a25d747..622596d 100644
--- a/src/views/eam/base/modules/EamMaintenanceStandardModal.vue
+++ b/src/views/eam/base/modules/EamMaintenanceStandardModal.vue
@@ -1,97 +1,107 @@
 <template>
-  <j-modal
-    :title="title"
-    :width="1200"
-    :visible="visible"
-    :confirmLoading="confirmLoading"
-    switchFullscreen
-    @ok="handleOk"
-    @cancel="handleCancel"
-    cancelText="鍏抽棴">
+  <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen
+           @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-col :span="8">
+            <a-form-model-item prop="standardCode" label="瑙勮寖缂栫爜">
+              <a-input placeholder="缂栫爜绯荤粺鑷姩鐢熸垚" v-model="model.standardCode" disabled/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item prop="standardName" label="瑙勮寖鍚嶇О">
+              <a-input placeholder="璇疯緭鍏ヨ鑼冨悕绉�" v-model="model.standardName"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜">
+              <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" :disabled="!editable"/>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
 
-    <a-spin :spinning="confirmLoading">
-      <a-form-model ref="form" :model="model" :rules="validatorRules">
         <a-row :gutter="24">
           <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜">
-              <a-input placeholder="缂栫爜绯荤粺鑷姩鐢熸垚" v-model="model.standardCode" disabled />
+            <a-form-model-item prop="maintenanceCategory" label="淇濆吇鍒嗙被">
+              <j-dict-select-tag dict-code="maintenance_category" placeholder="璇烽�夋嫨淇濆吇鍒嗙被"
+                                 @change="handleMaintenanceCategoryChange"
+                                 v-model="model.maintenanceCategory" :disabled="!editable"/>
             </a-form-model-item>
           </a-col>
           <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О">
-              <a-input placeholder="璇疯緭鍏ユ爣鍑嗗悕绉�" v-model="model.standardName" />
+            <a-form-model-item label="淇濆吇鍛ㄦ湡鍗曚綅">
+              <a-input readOnly v-model="model.periodUnit" placeholder="鏍规嵁淇濆吇鍒嗙被鑷姩甯﹀嚭"/>
             </a-form-model-item>
           </a-col>
           <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenanceCategory" label="淇濆吇鍒嗙被">
-              <j-dict-select-tag dict-code="maintenance_category" placeholder="璇烽�夋嫨淇濆吇鍒嗙被" v-model="model.maintenanceCategory" :disabled="editable" />
+            <a-form-model-item prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡">
+              <a-input-number v-model="model.maintenancePeriod" placeholder="璇疯緭鍏ヤ繚鍏诲懆鏈�" :min="1" :precision="0"
+                              :disabled="model.maintenanceCategory=='POINT_INSPECTION'||model.maintenanceCategory=='SECOND_MAINTENANCE'"
+                              style="width: 100%"/>
             </a-form-model-item>
           </a-col>
         </a-row>
+
         <a-row :gutter="24">
           <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fileCode" label="鏂囦欢缂栧彿">
-              <a-input placeholder="璇疯緭鍏ヤ繚鍏绘爣鍑嗘枃浠剁紪鍙�" v-model="model.fileCode"/>
+            <a-form-model-item prop="initialDate" label="鍒濆鏃ユ湡">
+              <a-date-picker placeholder="璇烽�夋嫨鍒濆鏃ユ湡" v-model="model.initialDate" value-format="YYYY-MM-DD"
+                             style="width: 100%"/>
             </a-form-model-item>
           </a-col>
           <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="initialDate" label="鍒濆鏃ユ湡">
-              <a-date-picker placeholder="璇烽�夋嫨鍒濆鏃ユ湡" v-model="model.initialDate" format="YYYY-MM-DD" style="width: 100%" :disabled="editable"/>
+            <a-form-model-item label="瑙勮寖鐘舵��">
+              <j-dict-select-tag dict-code="maintenance_standard_status" placeholder="鏍规嵁娴佺▼杩涘害鑷姩甯﹀嚭"
+                                 v-model="model.standardStatus" disabled/>
             </a-form-model-item>
           </a-col>
           <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡">
-              <a-input-number v-model="model.maintenancePeriod" :min="1" :precision="0" style="width: 100%"/>
+            <a-form-model-item label="瑙勮寖鐗堟湰">
+              <a-input-number v-model="model.standardVersion" placeholder="鏍规嵁娴佺▼杩涘害鑷姩甯﹀嚭" style="width: 100%" disabled/>
             </a-form-model-item>
           </a-col>
         </a-row>
+
         <a-row :gutter="24">
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿">
-              <lx-search-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" :disabled="editable"></lx-search-equipment-select>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardStatus" label="鏍囧噯鐘舵��">
-              <j-dict-select-tag dict-code="maintenance_standard_status" v-model="model.standardStatus" disabled/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardVersion" label="鏍囧噯鐗堟湰">
-              <a-input-number v-model="model.standardVersion" style="width: 100%" disabled/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
-        <a-row :gutter="24">
-          <a-col :span="8">
-            <a-form-model-item
-              label="鍙傝�冩枃浠�"
-              :labelCol="labelCol"
-              :wrapperCol="wrapperCol"
-              prop="fileList">
-              <lx-upload :returnUrl="false"
-                         :multiple="false"
-                         v-model="model.fileList"
-                         biz="EamMaintenanceStandard">
-              </lx-upload>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
-        <a-row :gutter="24">
-          <j-vxe-table
-            ref="editableDetailTable"
-            :rowNumber="true"
-            :rowSelection="true"
-            :bordered="true"
-            :alwaysEdit="true"
-            :toolbar="true"
-            :toolbarConfig="detail.toolbarConfig"
-            keep-source
-            :height="300"
-            :loading="detail.loading"
-            :dataSource="detail.dataSource"
-            :columns="detail.columns"
-            style="margin-top: 8px;"/>
+          <a-tabs :active-key="activeTabKey" v-if="model.maintenanceCategory" @change="handleTabChange">
+            <!--鐐规-->
+            <template v-if="model.maintenanceCategory=='POINT_INSPECTION'">
+              <a-tab-pane tab="鏃ョ偣妫�" key="1" forceRender>
+                <j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar
+                             :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+                             :dataSource="detail.dayInspectionList" :columns="detail.inspectionColumns"/>
+              </a-tab-pane>
+              <a-tab-pane tab="鍛ㄧ偣妫�" key="2" forceRender>
+                <j-vxe-table ref="editableDetailTable2" rowNumber rowSelection bordered alwaysEdit toolbar
+                             :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+                             :dataSource="detail.weekInspectionList" :columns="detail.inspectionColumns"/>
+              </a-tab-pane>
+            </template>
+
+            <!--浜屼繚-->
+            <template v-if="model.maintenanceCategory=='SECOND_MAINTENANCE'">
+              <a-tab-pane tab="鎿嶄綔宸�" key="1" forceRender>
+                <j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar
+                             :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+                             :dataSource="detail.operatorMaintenanceList" :columns="detail.secondMaintenanceColumns"/>
+              </a-tab-pane>
+              <a-tab-pane tab="缁翠慨宸�" key="2" forceRender>
+                <j-vxe-table ref="editableDetailTable2" rowNumber rowSelection bordered alwaysEdit toolbar
+                             :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+                             :dataSource="detail.repairerMaintenanceList" :columns="detail.secondMaintenanceColumns"/>
+              </a-tab-pane>
+            </template>
+
+            <!--涓変繚-->
+            <template v-if="model.maintenanceCategory=='THIRD_MAINTENANCE'">
+              <a-tab-pane tab="涓変繚" key="1">
+                <j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar
+                             :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+                             :dataSource="detail.thirdMaintenanceList" :columns="detail.thirdMaintenanceColumns"/>
+              </a-tab-pane>
+            </template>
+          </a-tabs>
         </a-row>
       </a-form-model>
     </a-spin>
@@ -99,233 +109,399 @@
 </template>
 
 <script>
-import { getAction, httpAction } from '@/api/manage'
+  import { getAction, httpAction } from '@/api/manage'
   import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
   import { JVXETypes } from '@/components/jeecg/JVxeTable'
   import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect'
 
   export default {
-    name: "EamMaintenanceStandardModal",
+    name: 'EamMaintenanceStandardModal',
     mixins: [JVxeTableModelMixin],
     components: {
-      LxSearchEquipmentSelect,
+      LxSearchEquipmentSelect
     },
-    data () {
+    data() {
       return {
-        title:"鎿嶄綔",
+        title: '鎿嶄綔',
         visible: false,
         model: {},
-        editable: false,
+        editable: true,
         upgradeFlag: false,
         labelCol: {
           xs: { span: 24 },
-          sm: { span: 5 },
+          sm: { span: 7 }
         },
         wrapperCol: {
           xs: { span: 24 },
-          sm: { span: 16 },
+          sm: { span: 16 }
         },
         confirmLoading: false,
+        spinning: false,
+        activeTabKey: '1',
         validatorRules: {
           standardName: [
-            { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�!' }
+            { required: true, message: '璇疯緭鍏ヨ鑼冨悕绉�', trigger: 'change' }
           ],
           maintenanceCategory: [
-            { required: true, message: '璇烽�夋嫨淇濆吇鍒嗙被!' }
+            { required: true, message: '璇烽�夋嫨淇濆吇鍒嗙被', trigger: 'change' }
           ],
           initialDate: [
-            { required: true, message: '璇烽�夋嫨鍒濆鏃ユ湡!' }
+            { required: true, message: '璇烽�夋嫨鍒濆鏃ユ湡', trigger: 'change' }
           ],
           maintenancePeriod: [
-            { required: true, message: '璇疯緭鍏ヤ繚鍏诲懆鏈燂紝鍗曚綅锛氬ぉ!' }
+            { required: true, message: '璇疯緭鍏ヤ繚鍏诲懆鏈�', trigger: 'change' }
           ],
           equipmentId: [
-            { required: true, message: '璇烽�夋嫨璁惧!' }
+            { required: true, message: '璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�', trigger: 'change' }
           ]
         },
         url: {
-          add: "/eam/maintenanceStandard/add",
-          edit: "/eam/maintenanceStandard/edit",
-          detail: "/eam/eamMaintenanceStandardDetail/queryList",
-          upgrade: '/eam/maintenanceStandard/upgrade',
+          add: '/eam/maintenanceStandard/add',
+          edit: '/eam/maintenanceStandard/edit',
+          detail: '/eam/eamMaintenanceStandardDetail/queryList',
+          upgrade: '/eam/maintenanceStandard/upgrade'
         },
         detail: {
-          loading: false,
-          dataSource: [],
-          columns: [
+          dayInspectionList: [],
+          weekInspectionList: [],
+          operatorMaintenanceList: [],
+          repairerMaintenanceList: [],
+          thirdMaintenanceList: [],
+          inspectionColumns: [
             {
               title: 'ID',
               key: 'id',
-              type: JVXETypes.hidden,
+              type: JVXETypes.hidden
             },
             {
               title: 'standardId',
               key: 'standardId',
-              type: JVXETypes.hidden,
+              type: JVXETypes.hidden
             },
             {
-              title: '搴忓彿',
+              title: '椤圭洰搴忓彿',
               key: 'itemCode',
               type: JVXETypes.inputNumber,
-              align:"center",
-              width: 100,
-              validateRules: [
-                {required : true, unique: true, message: '搴忓彿涓嶈兘閲嶅'}
-              ]
+              align: 'center',
+              placeholder: '璇疯緭鍏ラ」鐩簭鍙�',
+              width: 150,
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
             },
             {
-              title: '閮ㄤ綅',
+              title: '淇濆吇椤圭洰',
+              key: 'itemName',
+              placeholder: '璇疯緭鍏ヤ繚鍏婚」鐩�',
+              type: JVXETypes.textarea,
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            },
+            {
+              title: '淇濆吇瑙勮寖鎴栬姹�',
+              key: 'itemDemand',
+              placeholder: '璇疯緭鍏ヤ繚鍏昏鑼冩垨瑕佹眰',
+              type: JVXETypes.textarea,
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            }
+          ],
+          secondMaintenanceColumns: [
+            {
+              title: 'ID',
+              key: 'id',
+              type: JVXETypes.hidden
+            },
+            {
+              title: 'standardId',
+              key: 'standardId',
+              type: JVXETypes.hidden
+            },
+            {
+              title: '椤圭洰搴忓彿',
+              key: 'itemCode',
+              type: JVXETypes.inputNumber,
+              align: 'center',
+              placeholder: '璇疯緭鍏ラ」鐩簭鍙�',
+              width: 150,
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            },
+            {
+              title: '淇濆吇椤圭洰',
+              key: 'itemName',
+              placeholder: '璇疯緭鍏ヤ繚鍏婚」鐩�',
+              type: JVXETypes.textarea,
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            }
+          ],
+          thirdMaintenanceColumns: [
+            {
+              title: 'ID',
+              key: 'id',
+              type: JVXETypes.hidden
+            },
+            {
+              title: 'standardId',
+              key: 'standardId',
+              type: JVXETypes.hidden
+            },
+            {
+              title: '淇濆吇閮ㄤ綅',
               key: 'itemPart',
               type: JVXETypes.textarea,
-              align:"center",
+              slotName: 'itemPart',
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
             },
             {
-              title: '淇濆吇椤�',
+              title: '淇濆吇鍐呭',
               key: 'itemName',
+              placeholder: '璇疯緭鍏�${title}',
               type: JVXETypes.textarea,
-              align:"center",
-              validateRules: [
-                {required : true, message: '淇濆吇椤逛笉鑳戒负绌猴紒'}
-              ]
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
             },
             {
-              title: '淇濆吇瑕佹眰',
-              key: 'itemDemandAlias',
-              type: JVXETypes.textarea,
-              align:"center",
-            },
-            {
-              title: '妫�鏌ユ爣鍑嗘垨瑕佹眰',
+              title: '楠屾敹鏍囧噯',
               key: 'itemDemand',
+              placeholder: '璇疯緭鍏�${title}',
               type: JVXETypes.textarea,
-              align:"center",
-              validateRules: [
-                {required : true, message: "淇濆吇瑕佹眰涓嶈兘涓虹┖锛�"}
-              ]
-            },
-            {
-              title: '妫�鏌ユ柟娉�',
-              key: 'checkMethod',
-              type: JVXETypes.textarea,
-              align:"center",
-            },
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            }
           ],
           toolbarConfig: {
             // prefix 鍓嶇紑锛泂uffix 鍚庣紑
             slot: ['prefix', 'suffix'],
             // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
             btn: ['add', 'remove', 'clearSelection']
-          },
+          }
         }
       }
     },
-    created () {
-    },
     methods: {
-      add () {
-        this.model = {};
-        this.visible = true;
-        this.editable = false;
-        this.upgradeFlag = false;
-        this.detail.dataSource = [];
+      // 涓婚〉闈㈢偣鍑绘柊澧炲悗瑙﹀彂
+      add() {
+        this.resetData()
+        this.model = {}
+        this.visible = true
+        this.editable = true
+        this.upgradeFlag = false
       },
-      edit (record) {
-        this.model = Object.assign({}, record);
-        this.visible = true;
-        this.editable = true;
-        this.upgradeFlag = false;
-        this.detail.dataSource = [];
-        if(record && record.referenceFile) {
-          let obj = JSON.parse(record.referenceFile);
-          this.model.fileList = [obj];
-        }else {
-          this.model.fieldList = [];
-        }
-        this.loadDetail(record.id);
-      },
-      upgrade(record) {
-        this.model = Object.assign({}, record);
-        this.visible = true;
-        this.editable = true;
-        this.upgradeFlag = true;
-        this.detail.dataSource = [];
-        if(record && record.referenceFile) {
-          let obj = JSON.parse(record.referenceFile);
-          this.model.fileList = [obj];
-        }else {
-          this.model.fieldList = [];
-        }
-        this.loadDetail(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{
-              if(this.upgradeFlag) {
-                httpurl+=this.url.upgrade;
-              }else {
-                httpurl+=this.url.edit;
+      /**
+       * 涓婚〉闈㈢偣鍑荤紪杈戝悗瑙﹀彂
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      edit(record) {
+        this.resetData()
+        this.model = Object.assign({}, record)
+        this.visible = true
+        this.editable = false
+        this.upgradeFlag = false
+        this.loadDetail(record.id)
+      },
+
+      /**
+       * 鐐瑰嚮鍗囩増鍚庤Е鍙�
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      upgrade(record) {
+        this.resetData()
+        this.model = Object.assign({}, record)
+        this.visible = true
+        this.editable = false
+        this.upgradeFlag = true
+        this.loadDetail(record.id)
+      },
+
+      //鍔犺浇璇︽儏鏁版嵁
+      loadDetail(standardId) {
+        this.spinning = true
+        getAction(this.url.detail, { standardId })
+          .then(res => {
+            if (res.success) {
+              switch (this.model.maintenanceCategory) {
+                case 'POINT_INSPECTION':
+                  this.detail.dayInspectionList = res.result.filter(item => item.itemCategory == 'DAY_INSPECTION')
+                  this.detail.weekInspectionList = res.result.filter(item => item.itemCategory == 'WEEK_INSPECTION')
+                  break
+                case 'SECOND_MAINTENANCE':
+                  this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory == 'OPERATOR_MAINTENANCE')
+                  this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory == 'REPAIRER_MAINTENANCE')
+                  break
+                case 'THIRD_MAINTENANCE':
+                  this.detail.thirdMaintenanceList = res.result.filter(item => !Boolean(item.itemCategory))
+                  break
+                default:
               }
-              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);
-              }
-            }).finally(() => {
-              that.confirmLoading = false;
+          })
+          .finally(() => {
+            this.spinning = false
+          })
+      },
+
+      /**
+       * 淇濆吇鍒嗙被鍊兼敼鍙樻椂鍚屾椂鏀瑰彉淇濆吇鍛ㄦ湡鍗曚綅浠ュ強淇濆吇椤瑰垎绫�
+       * @param value 淇濆吇鍒嗙被鍊�
+       */
+      handleMaintenanceCategoryChange(value) {
+        delete this.model.maintenancePeriod
+        switch (value) {
+          case 'THIRD_MAINTENANCE':
+            this.model.periodUnit = '骞�'
+            if (this.activeTabKey != '1') this.activeTabKey = '1'
+            break
+          case 'SECOND_MAINTENANCE':
+            this.model.periodUnit = '鏈�'
+            this.model.maintenancePeriod = 6
+            break
+          case 'POINT_INSPECTION':
+            this.model.periodUnit = '澶�'
+            this.model.maintenancePeriod = 1
+            break
+          default:
+            delete this.model.periodUnit
+        }
+        if (this.model.maintenancePeriod) this.$refs.form.clearValidate('maintenancePeriod')
+      },
+
+      async handleTabChange(tabKey) {
+        let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable()
+        if (errMap) return
+        this.activeTabKey = tabKey
+      },
+
+      // 鎻愪氦浜嬩欢
+      async handleOk() {
+        // 淇濆吇鍒嗙被涓虹┖鏃朵笉鏍¢獙鏄庣粏
+        if (this.model.maintenanceCategory) {
+          // 鏍¢獙褰撲笅tab涓嬬殑琛ㄦ牸鏄惁涓虹┖
+          let tableData = this.$refs['editableDetailTable' + this.activeTabKey].getTableData()
+          if (tableData.length == 0) {
+            this.$notification.warning({
+              message: '娑堟伅',
+              description: '褰撳墠淇濆吇鏄庣粏涓嶈兘涓虹┖'
             })
-          }else{
-             return false;
+            return
+          }
+
+          // 鏍¢獙褰撳墠tab涓嬬殑琛ㄦ牸鏍¢獙瑙勫垯
+          let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable()
+          if (errMap) return false
+
+          // 鏍¢獙鍙︿竴tab淇濆吇鏄庣粏琛ㄦ牸鏄惁涓虹┖(涓変繚鏃犻渶)
+          if (this.model.maintenanceCategory != 'THIRD_MAINTENANCE') {
+            if (this.activeTabKey == '1') tableData = this.$refs.editableDetailTable2.getTableData()
+            else tableData = this.$refs.editableDetailTable1.getTableData()
+
+            if (tableData.length == 0) {
+              this.activeTabKey = this.activeTabKey == '1' ? '2' : '1'
+              this.$notification.warning({
+                message: '娑堟伅',
+                description: '褰撳墠淇濆吇鏄庣粏涓嶈兘涓虹┖'
+              })
+              return
+            }
+          }
+        }
+
+        const that = this
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            let tableData1 = that.$refs.editableDetailTable1.getTableData()
+            let tableData2 = []
+            let currentTabItemMaintenanceList = []
+            if (this.model.maintenanceCategory != 'THIRD_MAINTENANCE') {
+              tableData2 = that.$refs.editableDetailTable2.getTableData()
+              if (this.model.maintenanceCategory == 'POINT_INSPECTION') currentTabItemMaintenanceList = ['DAY_INSPECTION', 'WEEK_INSPECTION']
+              else currentTabItemMaintenanceList = ['OPERATOR_MAINTENANCE', 'REPAIRER_MAINTENANCE']
+            }
+            if (currentTabItemMaintenanceList.length != 0) {
+              tableData1 = tableData1.map(item => {
+                return {
+                  ...item,
+                  itemCategory: currentTabItemMaintenanceList[0]
+                }
+              })
+              tableData2 = tableData2.map(item => {
+                return {
+                  ...item,
+                  itemCategory: currentTabItemMaintenanceList[1]
+                }
+              })
+            }
+            that.model.tableDetailList = [...tableData1, ...tableData2]
+            that.confirmLoading = that.spinning = true
+            let httpUrl = ''
+            let method = ''
+            if (!this.model.id) {
+              httpUrl += this.url.add
+              method = 'post'
+            } else {
+              if (this.upgradeFlag) {
+                httpUrl += this.url.upgrade
+              } else {
+                httpUrl += this.url.edit
+              }
+              method = 'put'
+            }
+            httpAction(httpUrl, this.model, method)
+              .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
           }
         })
       },
-      handleCancel () {
+
+      resetData() {
+        this.activeTabKey = '1'
+        this.detail.dayInspectionList = []
+        this.detail.weekInspectionList = []
+        this.detail.operatorMaintenanceList = []
+        this.detail.repairerMaintenanceList = []
+        this.detail.thirdMaintenanceList = []
+      },
+
+      handleCancel() {
         this.close()
       },
-      //鍔犺浇璇︽儏鏁版嵁
-      loadDetail(standardId) {
-        this.detail.dataSource = [];
-        if (standardId) {
-          getAction(this.url.detail, { standardId: standardId }).then(res => {
-            if (res.success) {
-              this.detail.dataSource = [...res.result];
-            }
-          })
-        }
+
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.$refs.form.clearValidate()
       }
 
     }
   }
 </script>
 
-<style lang="less" scoped>
+<style scoped lang="less">
+  /deep/ .ant-select-dropdown-menu {
+    text-align: left;
+  }
 
+  /deep/ textarea.ant-input {
+    resize: none;
+    margin-bottom: 0;
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3