From 7859c063db5effe91f2418056e70b848177a3628 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期四, 14 八月 2025 10:51:29 +0800
Subject: [PATCH] 1、保养规范审批流程根据规范分类区分展示保养项明细 2、调整二保批量新增功能

---
 src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue |  179 +++++++++++++++-------
 src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue            |  229 ++++++++++++++++++++--------
 src/views/eam/base/EamMaintenanceStandardList.vue                                    |    1 
 src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue                          |   19 +
 4 files changed, 296 insertions(+), 132 deletions(-)

diff --git a/src/views/eam/base/EamMaintenanceStandardList.vue b/src/views/eam/base/EamMaintenanceStandardList.vue
index ffc3205..e0c16ed 100644
--- a/src/views/eam/base/EamMaintenanceStandardList.vue
+++ b/src/views/eam/base/EamMaintenanceStandardList.vue
@@ -308,7 +308,6 @@
         dataIndex: 'action',
         align: 'center',
         scopedSlots: { customRender: 'action' },
-        width: 200,
         fixed: 'right'
       }
       this.columns = [...this.columns, operationColumn]
diff --git a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue
index 231629a..6e9e4ce 100644
--- a/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue
+++ b/src/views/eam/maintenance/EamSecondMaintenanceOrderList.vue
@@ -39,7 +39,8 @@
     <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
     <div class="table-operator" v-if="isDisplayOperation">
       <a-button v-has="'secondMaintenanceOrder:add'" @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
-      <a-button v-has="'secondMaintenanceOrder:batchAdd'" @click="handleBatchAdd" type="primary" icon="plus">鎵归噺鏂板</a-button>
+      <a-button v-has="'secondMaintenanceOrder:batchAdd'" @click="handleBatchAdd" type="primary" icon="plus">鎵归噺鏂板
+      </a-button>
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
           <a-menu-item v-has="'secondMaintenanceOrder:batchAbolish'" key="1" @click="handlerBatchAbolish">
@@ -79,7 +80,8 @@
 
             <a-divider v-has="'secondMaintenanceOrder:edit'" type="vertical"/>
 
-            <a-popconfirm v-has="'secondMaintenanceOrder:collect'" title="纭畾棰嗗彇鍚�?" @confirm="() => handlerCollect(record.id)">
+            <a-popconfirm v-has="'secondMaintenanceOrder:collect'" title="纭畾棰嗗彇鍚�?"
+                          @confirm="() => handlerCollect(record.id)">
               <a>棰嗗彇</a>
             </a-popconfirm>
 
@@ -89,7 +91,8 @@
             <a class="ant-dropdown-link">鏇村 <a-icon type="down"/></a>
             <a-menu slot="overlay">
               <a-menu-item>
-                <a-popconfirm v-has="'secondMaintenanceOrder:abolish'" title="纭畾浣滃簾鍚�?" @confirm="() => handlerAbolish(record.id)">
+                <a-popconfirm v-has="'secondMaintenanceOrder:abolish'" title="纭畾浣滃簾鍚�?"
+                              @confirm="() => handlerAbolish(record.id)">
                   <a>浣滃簾</a>
                 </a-popconfirm>
               </a-menu-item>
@@ -104,13 +107,15 @@
             <a @click="handleDetail(record)">璇︽儏</a>
 
 
-            <a-divider v-has="'secondMaintenanceOrder:restore'" v-if="record.maintenanceStatus === 'ABOLISH'" type="vertical"/>
+            <a-divider v-has="'secondMaintenanceOrder:restore'" v-if="record.maintenanceStatus === 'ABOLISH'"
+                       type="vertical"/>
 
-            <a-popconfirm v-has="'secondMaintenanceOrder:restore'"  v-if="record.maintenanceStatus === 'ABOLISH'" title="纭畾杩樺師鍚�?" @confirm="() => handlerRestore(record.id)">
+            <a-popconfirm v-has="'secondMaintenanceOrder:restore'" v-if="record.maintenanceStatus === 'ABOLISH'"
+                          title="纭畾杩樺師鍚�?" @confirm="() => handlerRestore(record.id)">
               <a>杩樺師</a>
             </a-popconfirm>
 
-            <a-divider  type="vertical"/>
+            <a-divider type="vertical"/>
             <a @click="handlePrint(record)">棰勮</a>
           </template>
         </span>
@@ -289,7 +294,7 @@
     methods: {
       handleBatchAdd() {
         this.$refs.batchModalForm.title = '鎵归噺鏂板'
-        this.$refs.batchModalForm.visible = true
+        this.$refs.batchModalForm.add()
       },
 
       /**
diff --git a/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue
index 225e683..a340fc9 100644
--- a/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue
+++ b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue
@@ -1,27 +1,43 @@
 <template>
-  <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered
+  <j-modal :title="title" :visible="visible" :confirmLoading="confirmLoading" fullscreen
            :mask-closable="false" @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴">
     <a-spin :spinning="spinning">
-      <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar
-                   :toolbarConfig="detail.toolbarConfig" keep-source :height="500"
-                   :dataSource="detail.dataSource" :columns="detail.columns">
-        <!--缁熶竴缂栫爜-->
-        <template v-slot:equipmentId="props">
-          <maintenance-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="props.row.equipmentId"
-                                        maintenanceCategory="SECOND_MAINTENANCE" :allowClear="false"
-                                        @autocompleteForm="autocompleteForm($event,props.row)"/>
-        </template>
+      <a-row :gutter="48">
+        <a-col :span="6">
+          <a-tabs default-active-key="1">
+            <a-tab-pane tab="璁惧缁撴瀯鏍�" key="1">
+              <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys"
+                      :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys"
+                      @expand="onExpand" @select="handleTreeNodeSelect">
+              </a-tree>
+            </a-tab-pane>
+          </a-tabs>
+        </a-col>
 
-        <!-- 淇濆吇鏃ユ湡-->
-        <template v-slot:maintenanceDate="props">
-          <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD" :allow-clear="false"/>
-        </template>
+        <a-col :span="18">
+          <a-tabs default-active-key="1">
+            <a-tab-pane tab="璁惧鏄庣粏" key="1">
+              <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit keep-source
+                           :height="500" :dataSource="detail.dataSource" :columns="detail.columns"
+                           @selectRowChange="handleTableSelectRowChange">
+                <!-- 淇濆吇鏃ユ湡-->
+                <template v-slot:maintenanceDate="props">
+                  <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD" :allow-clear="false"/>
+                </template>
 
-        <!-- 鎿嶄綔-->
-        <template v-slot:action="props">
-          <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">棰勮鏄庣粏</a>
-        </template>
-      </j-vxe-table>
+                <!-- 鎿嶄綔-->
+                <template v-slot:action="props">
+                  <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">棰勮鏄庣粏</a>
+                </template>
+              </j-vxe-table>
+            </a-tab-pane>
+
+            <a-date-picker slot="tabBarExtraContent" type="primary" value-format="YYYY-MM-DD" :allowClear="false"
+                           @change="handleBatchSetDate"/>
+          </a-tabs>
+        </a-col>
+      </a-row>
+
     </a-spin>
 
     <eam-second-maintenance-batch-order-detail-modal ref="detailModal"/>
@@ -29,58 +45,43 @@
 </template>
 
 <script>
-  import { postAction } from '@/api/manage'
-  import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
+  import { getAction, postAction } from '@/api/manage'
   import { JVXETypes } from '@comp/jeecg/JVxeTable'
   import EamSecondMaintenanceBatchOrderDetailModal from './EamSecondMaintenanceBatchOrderDetailModal'
 
   export default {
     name: 'EamSecondMaintenanceBatchOrderModal',
-    components: { EamSecondMaintenanceBatchOrderDetailModal, MaintenanceEquipmentSelect },
+    components: { EamSecondMaintenanceBatchOrderDetailModal },
     data() {
       return {
         title: '鎿嶄綔',
         visible: false,
         confirmLoading: false,
         spinning: false,
+        treeDataSource: [],
+        checkedKeys: [],
+        expandedKeys: [],
+        selectedKeys: [],
         url: {
-          batchAdd: '/eam/secondMaintenanceOrder/batchAdd'
+          batchAdd: '/eam/secondMaintenanceOrder/batchAdd',
+          getDeviceTree: '/eam/secondMaintenanceOrder/BatchTreeStructure'
         },
         detail: {
           dataSource: [],
           columns: [
             {
-              title: 'ID',
-              key: 'id',
-              type: JVXETypes.hidden
-            },
-            {
-              title: '宸ュ崟鍙�',
-              key: 'orderNum',
-              align: 'center',
-              type: JVXETypes.inputNumber,
-              disabled: true,
-              placeholder: '${title}绯荤粺鑷姩鐢熸垚',
-              width: 200
-            },
-            {
               title: '缁熶竴缂栫爜',
-              key: 'equipmentId',
+              key: 'equipmentCode',
               align: 'center',
-              type: JVXETypes.slot,
-              slotName: 'equipmentId',
-              width: 300,
-              validateRules: [
-                { required: true, message: '璇疯緭鍏�${title}鎴栧悕绉版悳绱�' },
-                { unique: true, message: '${title}涓嶈兘閲嶅' }
-              ]
+              type: JVXETypes.normal,
+              width: 150
             },
             {
               title: '瑙勮寖鍚嶇О',
               key: 'standardName',
               align: 'center',
               type: JVXETypes.normal,
-              width: 200
+              width: 300
             },
             {
               title: '淇濆吇鏃ユ湡',
@@ -103,47 +104,141 @@
               key: 'remark',
               align: 'center',
               type: JVXETypes.textarea,
-              placeholder: '璇疯緭鍏ュ娉�',
-              width: 300
+              placeholder: '璇疯緭鍏ュ娉�'
             },
             {
               title: '鎿嶄綔',
               align: 'center',
               type: JVXETypes.slot,
               width: 150,
-              slotName: 'action',
-              fixed: 'right'
+              slotName: 'action'
             }
-          ],
-          toolbarConfig: {
-            // prefix 鍓嶇紑锛泂uffix 鍚庣紑
-            slot: ['prefix', 'suffix'],
-            // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
-            btn: ['add', 'remove', 'clearSelection']
-          }
+          ]
         }
       }
     },
     methods: {
       add() {
-        //鍒濆鍖栭粯璁ゅ��
-        this.model = { maintenancePeriod: 6 }
         this.visible = true
-        this.editable = true
-        this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = []
+        this.checkedKeys = this.detail.dataSource = []
+        this.queryTreeData()
       },
 
+      // 鑾峰彇璁惧缁撴瀯鏍�
+      queryTreeData() {
+        this.spinning = true
+        this.treeDataSource = []
+        getAction(this.url.getDeviceTree)
+          .then(res => {
+            if (res.success) {
+              this.allTreeKeys = []
+              this.treeDataSource = res.result
+              this.generateList(this.treeDataSource)
+              this.expandedKeys = this.allTreeKeys
+            } else {
+              this.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+          .finally(() => {
+            this.spinning = false
+          })
+      },
+
+      /**
+       * 棰勮璁惧瑙勮寖鏄庣粏
+       * @param standardId
+       */
       handlePreviewDetail(standardId) {
         this.$refs.detailModal.visible = true
         this.$refs.detailModal.loadStandardDetail(standardId)
       },
 
-      autocompleteForm(selectObj, record) {
-        this.$set(record, 'standardName', selectObj.standardName)
-        this.$set(record, 'standardId', selectObj.id)
-        this.$set(record, 'equipmentId', selectObj.equipmentId)
-        this.$set(record, 'maintenancePeriod', selectObj.maintenancePeriod)
-        this.$refs.editableDetailTable.validateTable()
+      onExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+
+      async onCheck(value, obj) {
+        this.$refs.editableDetailTable.clearValidate()
+        this.checkedKeys = value
+        const childNodesList = obj.checkedNodes.filter(item => item.data.props.equipmentId).map(item => {
+          return {
+            ...item.data.props.dataRef,
+            id: item.data.props.dataRef.key,
+            equipmentId: item.data.props.dataRef.key,
+            equipmentCode: item.data.props.dataRef.equipmentId,
+            standardId: item.data.props.dataRef.maintenanceStandardId,
+            standardName: item.data.props.dataRef.maintenanceStandardName,
+            maintenancePeriod: 6
+          }
+        })
+
+        if (childNodesList.length === 0) {
+          this.detail.dataSource = []
+          return
+        }
+        console.log('childNodesList', childNodesList)
+
+        if (childNodesList.length > this.detail.dataSource.length) {
+          childNodesList.forEach(childNode => {
+            if (!(this.detail.dataSource.map(item => item.id).includes(childNode.id))) this.detail.dataSource.push(childNode)
+          })
+          console.log('detail+++++++++++', this.detail.dataSource)
+        } else {
+          const deleteList = []
+          this.detail.dataSource.map(item => item.id).forEach(item => {
+            if (!(childNodesList.map(childNode => childNode.id).includes(item))) deleteList.push(item)
+          })
+
+          deleteList.forEach(deleteItem => {
+            this.detail.dataSource.splice(this.detail.dataSource.findIndex(item => item.id === deleteItem), 1)
+          })
+
+          console.log('deleteList', deleteList)
+          console.log('detail----------', this.detail.dataSource)
+        }
+      },
+
+      /**
+       * 鐐瑰嚮鏍戣妭鐐规椂瑙﹀彂
+       * @param selectedKeys
+       * @param event
+       */
+      handleTreeNodeSelect(selectedKeys, event) {
+        event.node.$el.childNodes[1].click()
+      },
+
+      /**
+       * 閫掑綊鏍戞暟鎹睍寮�鎵�鏈夎妭鐐�
+       * @param data
+       */
+      generateList(data) {
+        for (let i = 0; i < data.length; i++) {
+          const node = data[i]
+          const key = node.key
+          this.allTreeKeys.push(key)
+          if (node.children) {
+            this.generateList(node.children)
+          }
+        }
+      },
+
+      handleBatchSetDate(value) {
+        this.detail.dataSource.forEach((item, index, self) => {
+          if (this.selectedKeys.includes(item.id)) this.$set(item, 'maintenanceDate', value)
+        })
+      },
+
+      /**
+       * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙�
+       * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃
+       */
+      handleTableSelectRowChange({ selectedRowIds }) {
+        this.selectedKeys = selectedRowIds
+        console.log('selectedKeys', this.selectedKeys)
       },
 
       async handleOk() {
diff --git a/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue b/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue
index 910bb94..dc08948 100644
--- a/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue
+++ b/src/views/flowable/workflow/MaintenanceStandard/MaintenanceStandardApprovalModal.vue
@@ -74,25 +74,67 @@
           </a-col>
 
           <a-col :span="10" class="scroll-col">
-            <a-tabs default-active-key="1">
-              <a-tab-pane key="1" tab="淇濆吇椤规槑缁�">
-                <j-vxe-table ref="editableDetailTable" bordered alwaysEdit keep-source :dataSource="detail.dataSource"
-                             :columns="detail.columns">
-                  <template v-slot:itemCategory="props">
-                    <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/>
-                  </template>
-                </j-vxe-table>
-              </a-tab-pane>
+            <a-tabs v-model="activeTabKey">
+              <template v-if="model.maintenanceCategory==='POINT_INSPECTION'">
+                <a-tab-pane key="1" tab="鏃ョ偣妫�">
+                  <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource1"
+                               :columns="detail.columns">
+                    <template v-slot:itemCategory="props">
+                      <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/>
+                    </template>
+                  </j-vxe-table>
+                </a-tab-pane>
+
+                <a-tab-pane key="2" tab="鍛ㄧ偣妫�">
+                  <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource2"
+                               :columns="detail.columns">
+                    <template v-slot:itemCategory="props">
+                      <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/>
+                    </template>
+                  </j-vxe-table>
+                </a-tab-pane>
+              </template>
+
+              <template v-if="model.maintenanceCategory==='SECOND_MAINTENANCE'">
+                <a-tab-pane key="1" tab="鎿嶄綔宸�">
+                  <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource1"
+                               :columns="detail.columns">
+                    <template v-slot:itemCategory="props">
+                      <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/>
+                    </template>
+                  </j-vxe-table>
+                </a-tab-pane>
+
+                <a-tab-pane key="2" tab="缁翠慨宸�">
+                  <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource2"
+                               :columns="detail.columns">
+                    <template v-slot:itemCategory="props">
+                      <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/>
+                    </template>
+                  </j-vxe-table>
+                </a-tab-pane>
+              </template>
+
+              <template v-if="model.maintenanceCategory==='THIRD_MAINTENANCE'">
+                <a-tab-pane key="1" tab="涓変繚">
+                  <j-vxe-table bordered alwaysEdit keep-source :dataSource="detail.dataSource1"
+                               :columns="detail.columns">
+                    <template v-slot:itemCategory="props">
+                      <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode" disabled/>
+                    </template>
+                  </j-vxe-table>
+                </a-tab-pane>
+              </template>
 
               <template v-if="selectShenpiData.processDefinitionKey">
-                <a-tab-pane key='2' tab='娴佺▼鍥�'>
+                <a-tab-pane key='3' tab='娴佺▼鍥�'>
                   <img :src="imageSrc" alt="Fetched Image"/>
                 </a-tab-pane>
               </template>
 
-              <a-tab-pane key='3' tab='娴佽浆鑺傜偣'>
+              <a-tab-pane key='4' tab='娴佽浆鑺傜偣'>
                 <a-card>
-                  <a-timeline style="padding:0 1% 0 12%" >
+                  <a-timeline style="padding:0 1% 0 12%">
                     <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1">
                       <div class="bottom">
                         <p>澶勭悊浜猴細{{item.assignee_dictText}}</p>
@@ -177,7 +219,7 @@
         confirmLoading: false,
         spinning: false,
         model: {},
-        hitaskDataSource:[],
+        hitaskDataSource: [],
         validatorRules: {
           repairManagerApproveResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }],
           technicalManagerApproveResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }]
@@ -192,6 +234,7 @@
           sm: { span: 16 }
         },
         visible: false,
+        activeTabKey: '1',
         // 琛ㄥご
         url: {
           diagramView: '/assign/flow/diagramView',
@@ -201,7 +244,8 @@
           detailList: '/eam/eamMaintenanceStandardDetail/queryList'
         },
         detail: {
-          dataSource: [],
+          dataSource1: [],
+          dataSource2: [],
           columns: [],
           inspectionColumns: [
             {
@@ -218,16 +262,17 @@
               title: '椤圭洰搴忓彿',
               key: 'itemCode',
               type: JVXETypes.normal,
-              align: 'center'
-            },
-            {
-              title: '淇濆吇椤瑰垎绫�',
-              key: 'itemCategory',
-              type: JVXETypes.slot,
-              slotName: 'itemCategory',
               align: 'center',
-              disabled: true
+              width: 100
             },
+            // {
+            //   title: '淇濆吇椤瑰垎绫�',
+            //   key: 'itemCategory',
+            //   type: JVXETypes.slot,
+            //   slotName: 'itemCategory',
+            //   align: 'center',
+            //   disabled: true
+            // },
             {
               title: '淇濆吇椤圭洰',
               key: 'itemName',
@@ -256,16 +301,17 @@
               title: '椤圭洰搴忓彿',
               key: 'itemCode',
               type: JVXETypes.normal,
-              align: 'center'
-            },
-            {
-              title: '淇濆吇椤瑰垎绫�',
-              key: 'itemCategory',
-              type: JVXETypes.slot,
-              slotName: 'itemCategory',
               align: 'center',
-              disabled: true
+              width: 100
             },
+            // {
+            //   title: '淇濆吇椤瑰垎绫�',
+            //   key: 'itemCategory',
+            //   type: JVXETypes.slot,
+            //   slotName: 'itemCategory',
+            //   align: 'center',
+            //   disabled: true
+            // },
             {
               title: '淇濆吇椤圭洰',
               key: 'itemName',
@@ -332,11 +378,11 @@
     },
     computed: {
       displayRepairLeaderFlag() {
-        return this.model.standardStatus && ['WAIT_REPAIR_DIRECTOR', 'WAIT_TECHNICAL_DIRECTOR','START', 'REJECTED'].includes(this.model.standardStatus)
+        return this.model.standardStatus && ['WAIT_REPAIR_DIRECTOR', 'WAIT_TECHNICAL_DIRECTOR', 'START', 'REJECTED'].includes(this.model.standardStatus)
       },
 
       displayTechnicalDirectorFlag() {
-        return this.model.standardStatus && ['WAIT_TECHNICAL_DIRECTOR','START', 'REJECTED'].includes(this.model.standardStatus) && this.model.repairManagerApproveResult === '1'
+        return this.model.standardStatus && ['WAIT_TECHNICAL_DIRECTOR', 'START', 'REJECTED'].includes(this.model.standardStatus) && this.model.repairManagerApproveResult === '1'
       },
 
       encodedDictCode() {
@@ -350,6 +396,7 @@
        * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
        */
       handleApprove(record) {
+        this.activeTabKey = '1'
         this.getBasicInformationByApi(record)
         this.getFlowChartImageByApi(record)
         this.getFlowTaskListByApi(record)
@@ -360,15 +407,13 @@
        * @param record
        */
       getFlowTaskListByApi(record) {
-        console.log("sss",record)
-        let parmhis={
+        let parmhis = {
           'procInstId': record.procInstId
         }
-        getAction(this.url.queryHisTaskList,parmhis).then(res=>{
-          this.hitaskDataSource=res.result
+        getAction(this.url.queryHisTaskList, parmhis).then(res => {
+          this.hitaskDataSource = res.result
         }).finally(
-          this.visible = true,
-          console.log('this.approveData---->', this.approveData)
+          this.visible = true
         )
       },
 
@@ -377,7 +422,8 @@
        * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
        */
       handleDetail(record) {
-        this.detail.dataSource = []
+        this.activeTabKey = '1'
+        this.detail.dataSource1 = this.detail.dataSource2 = []
         this.model = Object.assign({}, record)
         this.getFlowTaskListByApi(record)
         this.loadDetail(record.id)
@@ -390,7 +436,7 @@
       getBasicInformationByApi(record) {
         this.spinning = true
         this.model = {}
-        this.detail.dataSource = []
+        this.detail.dataSource1 = this.detail.dataSource2 = []
         const that = this
         getAction(this.url.queryById, { id: record.dataId })
           .then(res => {
@@ -441,9 +487,26 @@
        * @param dataId 涓氬姟ID
        */
       loadDetail(dataId) {
+        this.spinning = true
         getAction(this.url.detailList, { standardId: dataId })
           .then(res => {
-            if (res.success) this.detail.dataSource = res.result
+            if (res.success) {
+              switch (this.model.maintenanceCategory) {
+                case 'POINT_INSPECTION':
+                  this.detail.dataSource1 = res.result.filter(item => item.itemCategory === 'DAY_INSPECTION')
+                  this.detail.dataSource2 = res.result.filter(item => item.itemCategory === 'WEEK_INSPECTION')
+                  break
+                case 'SECOND_MAINTENANCE':
+                  this.detail.dataSource1 = res.result.filter(item => item.itemCategory === 'OPERATOR_MAINTENANCE')
+                  this.detail.dataSource2 = res.result.filter(item => item.itemCategory === 'REPAIRER_MAINTENANCE')
+                  break
+                case 'THIRD_MAINTENANCE':
+                  this.detail.dataSource1 = res.result
+                  break
+                default:
+                  break
+              }
+            }
           })
           .finally(() => {
             this.spinning = false
@@ -451,11 +514,6 @@
       },
 
       async submitForm() {
-        let errMap = await this.$refs.editableDetailTable.validateTable()
-        if (errMap) {
-          return
-        }
-
         this.$refs.form.validate(valid => {
           if (valid) {
             this.confirmLoading = this.spinning = true
@@ -517,6 +575,7 @@
       }
     }
   }
+
   /* 鍏ㄥ眬绂侀�夋牱寮� - 浣滅敤浜庢暣涓〉闈� */
   html.submitting,
   html.submitting body {
@@ -562,6 +621,7 @@
     background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */
     margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */
   }
+
   .btn-custom {
     background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */
     color: white; /* 鐧借壊鏂囧瓧 */
@@ -580,13 +640,14 @@
     font-weight: bold;
     font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */
   }
-  .left_qiu{
+
+  .left_qiu {
     position: absolute;
     left: -74px;
     top: 0;
-    width:54px;
+    width: 54px;
     border-radius: 50%;
-    height:54px;
+    height: 54px;
     font-size: 13px;
     margin: auto;
     display: flex;
@@ -596,20 +657,23 @@
     background: #0099ff;
     transform: translate(0, 0);
   }
-  /deep/ .ant-timeline-item-tail{
+
+  /deep/ .ant-timeline-item-tail {
     left: -29px !important;
   }
-  .left_qiu span{
+
+  .left_qiu span {
     width: 3em;
     display: block;
     color: #fff;
     text-align: center;
   }
-  .img{
+
+  .img {
     width: 75%;
   }
 
-  .wrap{
+  .wrap {
     clear: both;
     width: 100%;
     display: flex;
@@ -617,13 +681,14 @@
     border: 1px solid #ccc;
     /* background-color: aqua; */
   }
-  .box{
-    width:21%;
-    height:50px;
+
+  .box {
+    width: 21%;
+    height: 50px;
     border-right: 1px solid #ccc;
     line-height: 50px;
     /* background: red; */
-    text-align:center;
+    text-align: center;
     margin: auto;
   }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3