From 48d85187a16a313c5244a830862db5e672e6997d Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期五, 18 七月 2025 17:08:15 +0800
Subject: [PATCH] 1、点检工单预览 2、技术鉴定工单变更 3、调整样式

---
 src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue |  494 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 275 insertions(+), 219 deletions(-)

diff --git a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
index edb6c42..1662efc 100644
--- a/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
+++ b/src/views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue
@@ -1,23 +1,22 @@
 <template>
   <j-modal :title="title" :width="1200" :visible="visible"
-           :okButtonProps="{ class:{'jee-hidden': disableSubmit||!hasInspectionDateArrived} }" @ok="submitForm"
+           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="submitForm"
            @cancel="handleCancel" :mask-closable="false" :confirmLoading="confirmLoading" fullscreen>
     <a-spin :spinning="spinning">
-      <a-form-model ref='form' :model='tableRowRecord' :labelCol="labelCol" :wrapperCol="wrapperCol"
-                    :rules="validatorRules">
-        <a-row :gutter="48">
-          <a-col :span="8">
+      <a-form-model ref='form' :model='model' :labelCol="labelCol" :wrapperCol="wrapperCol" :rules="validatorRules">
+        <a-row :gutter="48" id="outer-row">
+          <a-col :span="8" class="scroll-col">
             <a-tabs>
               <a-tab-pane tab="鍩虹淇℃伅">
                 <a-row>
                   <a-col :span='span'>
                     <a-form-model-item label="宸ュ崟鍙�">
-                      <a-input readOnly v-model="tableRowRecord.orderNum"/>
+                      <a-input readOnly v-model="model.orderNum"/>
                     </a-form-model-item>
                   </a-col>
                   <a-col :span='span'>
                     <a-form-model-item label="璁惧缂栧彿">
-                      <MaintenanceEquipmentSelect v-model="tableRowRecord.equipmentId"
+                      <MaintenanceEquipmentSelect v-model="model.equipmentId"
                                                   :maintenanceCategory="'POINT_INSPECTION'"
                                                   disabled @autocompleteForm="autoCompleteForm"/>
                     </a-form-model-item>
@@ -28,12 +27,12 @@
                 <a-row>
                   <a-col :span='span'>
                     <a-form-model-item label="瑙勮寖鍚嶇О">
-                      <a-input readOnly v-model="tableRowRecord.standardName"/>
+                      <a-input readOnly v-model="model.standardName"/>
                     </a-form-model-item>
                   </a-col>
                   <a-col :span='span'>
                     <a-form-model-item label="瑙勮寖缂栫爜">
-                      <a-input readOnly v-model="tableRowRecord.standardCode"/>
+                      <a-input readOnly v-model="model.standardCode"/>
                     </a-form-model-item>
                   </a-col>
 
@@ -42,12 +41,12 @@
                 <a-row>
                   <a-col :span='span'>
                     <a-form-model-item label="鐐规鏃ユ湡">
-                      <a-input v-model="tableRowRecord.inspectionDate" readOnly/>
+                      <a-input v-model="model.inspectionDate" readOnly/>
                     </a-form-model-item>
                   </a-col>
                   <a-col :span='span'>
-                    <a-form-model-item label="鐐规杩囨湡鏃堕棿">
-                      <a-input v-model="tableRowRecord.expirationTime" readOnly/>
+                    <a-form-model-item label="杩囨湡鏃堕棿">
+                      <a-input v-model="model.expirationTime" readOnly/>
                     </a-form-model-item>
                   </a-col>
                 </a-row>
@@ -55,12 +54,12 @@
                 <a-row>
                   <a-col :span='span'>
                     <a-form-model-item label="淇濆吇鍛ㄦ湡">
-                      <a-input v-model="tableRowRecord.maintenancePeriod" readOnly/>
+                      <a-input v-model="model.maintenancePeriod" readOnly/>
                     </a-form-model-item>
                   </a-col>
                   <a-col :span='span'>
                     <a-form-model-item label="鐐规浜�">
-                      <a-input v-model="tableRowRecord.operator_dictText" readOnly/>
+                      <a-input v-model="model.operator_dictText" readOnly/>
                     </a-form-model-item>
                   </a-col>
                 </a-row>
@@ -68,7 +67,7 @@
                 <a-row>
                   <a-col :span="span*2">
                     <a-form-model-item label="澶囨敞" :labelCol="{span:4}" :wrapperCol="{span:20}">
-                      <a-textarea v-model="tableRowRecord.remark" rows="3" readOnly/>
+                      <a-textarea v-model="model.remark" rows="3" readOnly/>
                     </a-form-model-item>
                   </a-col>
                 </a-row>
@@ -76,13 +75,13 @@
             </a-tabs>
           </a-col>
 
-          <a-col :span="disableSubmit||tableRowRecord.inspectionStatus=='UNDER_INSPECTION'?16:10">
-            <a-tabs v-model="activeTabKey">
+          <a-col :span="!isDisplayConfirm?16:10" class="scroll-col">
+            <a-tabs :active-key="activeTabKey" @change="handleTabChange">
               <a-tab-pane key="1" tab="鏃ョ偣妫�">
-                <j-vxe-table ref="editableDetailTable" :rowNumber="false" rowSelection bordered
-                             alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading"
-                             :dataSource="detail.dataSource" :columns="detail.columns"
-                             @selectRowChange="handleTableSelectRowChange">
+                <j-vxe-table ref="editableDetailTable1" :rowNumber="false" rowSelection bordered
+                             alwaysEdit :toolbar="false" keep-source :height="500"
+                             :dataSource="detail.dayInspectionList" :columns="detail.columns"
+                             @selectRowChange="handleTableSelectRowChange($event,'Day')">
                   <template v-slot:inspectionResult="props">
                     <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="inspection_project_result"
                                        :disabled="isDisableOperation" placeholder="璇烽�夋嫨鐐规缁撴灉"
@@ -91,94 +90,80 @@
                   </template>
 
                   <template v-slot:exceptionDescription="props">
-                    <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
-                                :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''"
-                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/>
+                    <a-textarea :rows="1" style="resize: none" v-model="props.row.exceptionDescription"
+                                :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇疯緭鍏ュ紓甯告弿杩�':''"
+                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"/>
                   </template>
 
                   <template v-slot:reportFlag="props">
                     <j-dict-select-tag v-model="props.row.reportFlag"
-                                       :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
-                                       :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"
+                                       :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
+                                       :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"
                                        dictCode="yn" style="width: 100%"/>
                   </template>
                 </j-vxe-table>
               </a-tab-pane>
 
-              <a-tab-pane key="2" tab="鍛ㄧ偣妫�">
-                <j-vxe-table ref="editableDetailTable" :rowNumber="false" rowSelection bordered
-                             alwaysEdit :toolbar="false" keep-source :height="300" :loading="detail.loading"
+              <a-tab-pane key="2" tab="鍛ㄧ偣妫�" forceRender>
+                <j-vxe-table ref="editableDetailTable2" :rowNumber="false" rowSelection bordered
+                             alwaysEdit :toolbar="false" keep-source :height="500"
                              :dataSource="detail.weekInspectionList" :columns="detail.columns"
-                             @selectRowChange="handleTableSelectRowChange">
+                             @selectRowChange="handleTableSelectRowChange($event,'Week')">
                   <template v-slot:inspectionResult="props">
                     <j-dict-select-tag v-model="props.row.inspectionResult" dictCode="inspection_project_result"
-                                       :disabled="isDisableOperation" placeholder="璇烽�夋嫨鐐规缁撴灉"
+                                       :disabled="isDisableOperation||detail.weekInspectionFinishedFlag"
+                                       placeholder="璇烽�夋嫨鐐规缁撴灉"
                                        @change="handleInspectionResultSelectChange($event,props.row)"
                                        style="width: 100%"/>
                   </template>
 
                   <template v-slot:exceptionDescription="props">
-                    <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
-                                :placeholder="props.row.inspectionResult==='2'?'璇疯緭鍏ュ紓甯告弿杩�':''"
-                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"/>
+                    <a-textarea :rows="1" style="resize: none" v-model="props.row.exceptionDescription"
+                                :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇疯緭鍏ュ紓甯告弿杩�':''"
+                                :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"/>
                   </template>
 
                   <template v-slot:reportFlag="props">
                     <j-dict-select-tag v-model="props.row.reportFlag"
-                                       :placeholder="props.row.inspectionResult==='2'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
-                                       :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult==='1'"
+                                       :placeholder="props.row.inspectionResult&&props.row.inspectionResult!='NORMAL'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
+                                       :disabled="isDisableOperation||!props.row.inspectionResult||props.row.inspectionResult=='NORMAL'"
                                        dictCode="yn" style="width: 100%"/>
                   </template>
                 </j-vxe-table>
               </a-tab-pane>
 
               <template v-if="selectShenpiData.procInstId">
-                <a-tab-pane key='3' tab='娴佺▼鑺傜偣'>
-                  <a-card :bordered="false">
-                    <a-timeline>
-                      <a-timeline-item v-for="(item,index) in hitaskDataSource" :key="index">
-                        <div>
-                          <h3 style="font-weight: bold;">{{item.taskName}}</h3>
-                          <div>澶勭悊浜猴細{{item.assignee_dictText}}</div>
-                          <div v-if="index !==0">澶勭悊鏃堕暱锛歿{item.duration}}</div>
-                          <div v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</div>
-                          <div v-if="item.description">澶勭悊鎰忚锛歿{item.description}}</div>
-                        </div>
-                      </a-timeline-item>
-                    </a-timeline>
-                  </a-card>
-                </a-tab-pane>
-
-                <a-tab-pane key='4' tab='娴佺▼鍥�'>
-                  <img :src="imageSrc" width="100%" v-if="imageSrc"/>
+                <a-tab-pane key='3' tab='娴佺▼鍥�'>
+                  <img :src="imageSrc" v-if="imageSrc"/>
                 </a-tab-pane>
               </template>
 
               <a-button
-                v-if="selectedRowKeys.length>0&&!isDisableOperation&&hasInspectionDateArrived&&activeTabKey==='1'&&activeTabKey==='2'"
+                v-if="activeTabKey=='1'||activeTabKey=='2'"
+                :disabled="(activeTabKey=='1'&&selectedDayInspectionRowKeys.length==0)||(activeTabKey=='2'&&selectedWeekInspectionRowKeys.length==0)||(activeTabKey=='2'&&detail.weekInspectionFinishedFlag)||isDisableOperation"
                 slot="tabBarExtraContent" type="primary"
                 @click="handleSelectAllInspectionResult">鎵归噺鐐规姝e父
               </a-button>
             </a-tabs>
           </a-col>
 
-          <a-col v-if="!disableSubmit&&isDisplayConfirm" :span="6">
+          <a-col v-if="isDisplayConfirm" :span="6" class="scroll-col">
             <a-tabs>
               <a-tab-pane tab="缁翠慨宸ョ‘璁�">
                 <a-row>
                   <a-col :span="24">
                     <a-form-model-item prop="confirmDealType" label="澶勭悊绫诲瀷">
-                      <j-dict-select-tag type='radio' v-model='tableRowRecord.confirmDealType'
+                      <j-dict-select-tag type='radio' v-model='model.confirmDealType'
                                          dictCode='approved_rejected'
-                                         :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"/>
+                                         :disabled="disableSubmit||model.inspectionStatus!=='WAIT_CONFIRM'"/>
                     </a-form-model-item>
                   </a-col>
 
                   <a-col :span="24">
-                    <a-form-model-item prop="confirmComment" label="澶勭悊鎰忚">
-                      <a-textarea placeholder="璇疯緭鍏ュ鐞嗘剰瑙�"
-                                  :disabled="disableSubmit||tableRowRecord.inspectionStatus!=='WAIT_CONFIRM'"
-                                  v-model="tableRowRecord.confirmComment"/>
+                    <a-form-model-item label="澶勭悊鎰忚">
+                      <a-textarea placeholder="璇疯緭鍏ユ剰瑙�"
+                                  :disabled="disableSubmit||model.inspectionStatus!=='WAIT_CONFIRM'"
+                                  v-model="model.confirmComment"/>
                     </a-form-model-item>
                   </a-col>
                 </a-row>
@@ -210,24 +195,20 @@
         span: 12,
         confirmLoading: false,
         spinning: false,
-        tableRowRecord: {},
-        hitaskDataSource: [],
+        model: {},
         validatorRules: {
           confirmDealType: [
             { required: true, message: '璇烽�夋嫨澶勭悊绫诲瀷' }
-          ],
-          confirmComment: [
-            { required: true, message: '璇疯緭鍏ュ鐞嗘剰瑙�' }
           ]
         },
         imageSrc: null,
         labelCol: {
           xs: { span: 24 },
-          sm: { span: 9 }
+          sm: { span: 8 }
         },
         wrapperCol: {
           xs: { span: 30 },
-          sm: { span: 15 }
+          sm: { span: 16 }
         },
         visible: false,
         // 琛ㄥご
@@ -240,8 +221,6 @@
           weekInspectionOrderList: '/eam/eamWeekInspectionDetail/queryStandardList'
         },
         detail: {
-          loading: false,
-          dataSource: [],
           columns: [
             {
               title: '搴忓彿',
@@ -296,177 +275,100 @@
               ]
             }
           ],
-          weekInspectionList: []
+          dayInspectionList: [],
+          weekInspectionList: [],
+          weekInspectionFinishedFlag: false
         },
-        selectedRowKeys: [],
+        selectedDayInspectionRowKeys: [],
+        selectedWeekInspectionRowKeys: [],
         disableSubmit: false,
         activeTabKey: '1',
         title: ''
       }
     },
     computed: {
-      hasInspectionDateArrived() {
-        return moment(this.tableRowRecord.inspectionDate).diff(moment(), 'hours') <= 0
-      },
       isDisplayConfirm() {
-        return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.tableRowRecord.inspectionStatus)
+        return ['WAIT_CONFIRM', 'COMPLETE'].includes(this.model.inspectionStatus)
       },
       isDisableOperation() {
-        return this.disableSubmit || this.tableRowRecord.inspectionStatus !== 'UNDER_INSPECTION'
+        return this.disableSubmit || this.model.inspectionStatus !== 'UNDER_INSPECTION'
       }
     },
     methods: {
+      handleApprove(record) {
+        this.spinning = true
+        this.activeTabKey = '1'
+        this.detail.dayInspectionList = this.detail.weekInspectionList = []
+        this.getBasicInformationByApi(record)
+        this.getFlowChartImageByApi(record)
+      },
+
+      handleDetail(record) {
+        this.spinning = true
+        this.activeTabKey = '1'
+        this.detail.dayInspectionList = this.detail.weekInspectionList = []
+        this.model = Object.assign({}, record)
+        this.getDayInspectionOrderListByApi(record.id)
+        this.getWeekInspectionOrderListByApi(record.standardId)
+      },
+
       /**
-       * 鑾峰彇娴佺▼鑺傜偣鍜屾祦绋嬪浘
-       * @param record 寰呭姙璁板綍淇℃伅
+       * 鑾峰彇鍩虹淇℃伅
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
        */
-      getAllApproveData(record) {
-        if (record.procInstId) {
-          const { processDefinitionId, processInstanceId, processDefinitionKey, procInstId } = record
-          const param = { procInstId }
-          const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey }
-          const that = this
-
-          getAction(this.url.queryHisTaskList, param)
-            .then(res => {
-              that.hitaskDataSource = res.result
-            })
-
-          downFile(this.url.diagramView, imageParam, 'get')
-            .then((res => {
-              const urlObject = window.URL.createObjectURL(new Blob([res]))
-              that.imageSrc = urlObject
-            }))
-            .catch(err => {
-              that.$notification.error({
+      getBasicInformationByApi(record) {
+        const that = this
+        getAction(this.url.queryById, { id: record.dataId })
+          .then(res => {
+            if (res.success) {
+              that.model = Object.assign({}, res.result)
+              that.model.dataId = record.dataId
+              that.model.taskId = record.id
+              that.model.userId = record.assignee
+              that.model.instanceId = record.procInstId
+              this.getDayInspectionOrderListByApi(record.dataId)
+              this.getWeekInspectionOrderListByApi(this.model.standardId)
+            }
+            else {
+              that.$notification.warning({
                 message: '娑堟伅',
                 description: res.message
               })
+            }
+          })
+      },
+
+      /**
+       * 鑾峰彇娴佺▼鍥�
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      getFlowChartImageByApi(record) {
+        const { processDefinitionId, processInstanceId, processDefinitionKey } = record
+        const imageParam = { processDefinitionId, processInstanceId, TaskDefinitionKey: processDefinitionKey }
+        const that = this
+
+        downFile(this.url.diagramView, imageParam, 'get')
+          .then((res => {
+            that.imageSrc = window.URL.createObjectURL(new Blob([res]))
+          }))
+          .catch(err => {
+            that.$notification.error({
+              message: '娑堟伅',
+              description: err.message
             })
-        }
+          })
       },
 
       /**
-       * 鑾峰彇寰呭姙璁板綍鐨勫熀鏈俊鎭�
-       * @param record 寰呭姙璁板綍淇℃伅
+       * 鑾峰彇鐐规宸ュ崟涓殑鏃ョ偣妫�鍒楄〃
+       * @param orderId 宸ュ崟鍙�
        */
-      async getBasicInformation(record) {
-        this.activeTabKey = '1'
-        this.detail.dataSource = []
-        this.spinning = true
-        const param = { id: record.dataId }
-        let res = await getAction(this.url.queryById, param)
-        this.tableRowRecord = Object.assign({}, res.result)
-        this.loadDetail(record.dataId)
-        console.log('record', record)
-        this.getWeekInspectionOrderListByApi(this.tableRowRecord.standardId)
-      },
-
-      async submitForm() {
-        let errMap = await this.$refs.editableDetailTable.validateTable()
-        if (errMap) {
-          console.log('err', errMap)
-          return
-        }
-
-        this.$refs.form.validate(valid => {
-          if (valid) {
-            this.confirmLoading = this.spinning = true
-            const flowTaskVo = {}
-            flowTaskVo.dataId = this.selectShenpiData.dataId
-            flowTaskVo.taskId = this.selectShenpiData.id
-            flowTaskVo.userId = this.selectShenpiData.assignee
-            flowTaskVo.instanceId = this.selectShenpiData.procInstId
-            flowTaskVo.values = this.selectShenpiData.variables
-            flowTaskVo.confirmDealType = this.tableRowRecord.confirmDealType
-            flowTaskVo.confirmComment = this.tableRowRecord.confirmComment
-            flowTaskVo.tableDetailList = this.$refs.editableDetailTable.getTableData()
-            const that = this
-            postAction(this.url.approve, flowTaskVo)
-              .then((res) => {
-                if (res.success) {
-                  that.$message.success(res.message)
-                  //鍒锋柊琛ㄦ牸
-                  that.$emit('searchReset')
-                  that.handleCancel()
-                } else {
-                  that.$message.warning(res.message)
-                }
-              })
-              .finally(() => {
-                that.confirmLoading = this.spinning = false
-              })
-          } else {
-            return false
-          }
-        })
-      },
-
-      autoCompleteForm({ standardName, maintenancePeriod, standardCode }) {
-        this.$set(this.tableRowRecord, 'standardName', standardName)
-        this.$set(this.tableRowRecord, 'maintenancePeriod', maintenancePeriod)
-        this.$set(this.tableRowRecord, 'standardCode', standardCode)
-      },
-
-      // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉
-      handleSelectAllInspectionResult() {
-        this.selectedRowKeys.forEach(key => {
-          const dataItem = this.detail.dataSource.find(item => item.id === key)
-          if (dataItem && dataItem.inspectionResult !== '1') {
-            delete dataItem.exceptionDescription
-            delete dataItem.reportFlag
-            dataItem.inspectionResult = '1'
-          }
-        })
-        this.$refs.editableDetailTable.clearCheckboxRow()
-        this.selectedRowKeys = []
-      },
-
-      /**
-       * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙�
-       * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃
-       */
-      handleTableSelectRowChange({ selectedRowIds }) {
-        this.selectedRowKeys = selectedRowIds
-      },
-
-      /**
-       * 鐐规缁撴灉閫夋嫨鍣ㄥ彂鐢熸敼鍙樻椂瑙﹀彂
-       * @param value 鏀瑰彉鍚庣殑鍊�
-       * @param record 淇濆吇鏄庣粏琛岃褰�
-       */
-      handleInspectionResultSelectChange(value, record) {
-        if (record.exceptionDescription) delete record.exceptionDescription
-        if (record.reportFlag) delete record.reportFlag
-      },
-
-      customValidator({ cellValue, row }, callback) {
-        if (row.inspectionResult === '2') {
-          if (!cellValue) {
-            callback(false, '${title}涓嶈兘涓虹┖锛�') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀�
-          } else {
-            callback(true) // true = 閫氳繃楠岃瘉
-          }
-        } else {
-          callback(true)
-        }
-      },
-
-      handleCancel() {
-        this.selectedRowKeys = []
-        this.visible = false
-      },
-
-      /**
-       * 鑾峰彇鏃ョ偣妫�鏄庣粏
-       * @param orderId
-       */
-      loadDetail(orderId) {
+      getDayInspectionOrderListByApi(orderId) {
         if (orderId) {
           getAction(this.url.detailList, { orderId })
             .then(res => {
               if (res.success) {
-                this.detail.dataSource = [...res.result]
+                this.detail.dayInspectionList = res.result
               }
             })
             .finally(() => {
@@ -480,20 +382,174 @@
        * @param standardId 瑙勮寖id
        */
       getWeekInspectionOrderListByApi(standardId) {
-        console.log('standardId-------------------------', standardId)
-        getAction(this.url.weekInspectionOrderList, { standardId, inspectionDate: this.tableRowRecord.inspectionDate })
+        getAction(this.url.weekInspectionOrderList, { standardId, inspectionDate: this.model.inspectionDate })
           .then(res => {
-            if (res.success) this.detail.weekInspectionList = res.result
+            if (res.success) {
+              this.detail.weekInspectionList = res.result.list
+              this.detail.weekInspectionFinishedFlag = res.result.weekInsFlag
+            }
           })
           .finally(() => {
             this.spinning = false
           })
+      },
+
+      /**
+       * tab鏍忓垏鎹㈡椂瑙﹀彂
+       * @param tabKey 鍒囨崲鍚庣殑tabKey
+       */
+      handleTabChange(tabKey) {
+        if (this.activeTabKey == '1') this.$refs.editableDetailTable1.clearValidate()
+        this.activeTabKey = tabKey
+      },
+
+      // 鎻愪氦浜嬩欢
+      async submitForm() {
+        let errMap = await this.$refs.editableDetailTable1.validateTable()
+        if (errMap) {
+          if (this.activeTabKey != '1') {
+            this.activeTabKey = '1'
+            // 鍐呴儴鏍¢獙鎻愮ず鍥爐ab鍒囨崲鏃跺畾浣嶅嚭鐜伴棶棰樺洜姝ゅ湪姝ゅ娓呮鍐呴儴鏍¢獙鎻愮ず锛屽鍔爊otification鎻愮ず
+            this.$refs.editableDetailTable1.clearValidate()
+            this.$notification.warning({
+              message: '娑堟伅',
+              description: '鏃ョ偣妫�缁撴灉涓嶈兘涓虹┖'
+            })
+          }
+          return
+        }
+
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            this.confirmLoading = this.spinning = true
+            this.model.tableDetailList = this.$refs.editableDetailTable1.getTableData()
+            if (!this.detail.weekInspectionFinishedFlag) this.model.tableWeekDetailList = this.$refs.editableDetailTable2.getTableData()
+            const that = this
+            postAction(this.url.approve, this.model)
+              .then((res) => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  //鍒锋柊琛ㄦ牸
+                  that.$emit('modalFormOk')
+                  that.handleCancel()
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                that.confirmLoading = this.spinning = false
+              })
+          } else {
+            return false
+          }
+        })
+      },
+
+      autoCompleteForm({ standardName, maintenancePeriod, standardCode }) {
+        this.$set(this.model, 'standardName', standardName)
+        this.$set(this.model, 'maintenancePeriod', maintenancePeriod)
+        this.$set(this.model, 'standardCode', standardCode)
+      },
+
+      // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉
+      handleSelectAllInspectionResult() {
+        let selectedRowKeys, prefix
+        if (this.activeTabKey == '1') {
+          selectedRowKeys = this.selectedDayInspectionRowKeys
+          prefix = 'day'
+        }
+        else if (this.activeTabKey == '2') {
+          selectedRowKeys = this.selectedWeekInspectionRowKeys
+          prefix = 'week'
+        }
+        else selectedRowKeys = []
+        if (selectedRowKeys.length == 0) return
+
+        selectedRowKeys.forEach(key => {
+          const dataItem = this.detail[prefix + 'InspectionList'].find(item => item.id === key)
+          if (dataItem && dataItem.inspectionResult !== 'NORMAL') {
+            delete dataItem.exceptionDescription
+            delete dataItem.reportFlag
+            dataItem.inspectionResult = 'NORMAL'
+          }
+        })
+        this.$refs['editableDetailTable' + this.activeTabKey].clearCheckboxRow()
+        this['selected' + prefix.charAt(0).toUpperCase() + prefix.slice(1) + 'InspectionRowKeys'] = []
+      },
+
+      /**
+       * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙�
+       * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃
+       * @param key 鐐规鍖哄垎key
+       */
+      handleTableSelectRowChange({ selectedRowIds }, key) {
+        this['selected' + key + 'InspectionRowKeys'] = selectedRowIds
+      },
+
+      /**
+       * 鐐规缁撴灉閫夋嫨鍣ㄥ彂鐢熸敼鍙樻椂瑙﹀彂
+       * @param value 鏀瑰彉鍚庣殑鍊�
+       * @param record 淇濆吇鏄庣粏琛岃褰�
+       */
+      handleInspectionResultSelectChange(value, record) {
+        if (record.exceptionDescription) delete record.exceptionDescription
+        if (record.reportFlag) delete record.reportFlag
+      },
+
+      /**
+       * 寮傚父鎻忚堪涓庡紓甯告槸鍚︿繚淇瓧娈佃嚜瀹氫箟鏍¢獙鏂规硶
+       * @param cellValue  鍗曞厓鏍煎唴鐨勫��
+       * @param row  褰撳墠琛岃褰�
+       * @param callback 缁撴灉鍥炶皟鍑芥暟
+       */
+      customValidator({ cellValue, row }, callback) {
+        if (this.activeTabKey == '1' && row.inspectionResult != 'NORMAL') {
+          if (!cellValue) {
+            callback(false, '璇疯緭鍏�${title}') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀�
+          } else {
+            callback(true) // true = 閫氳繃楠岃瘉
+          }
+        } else {
+          callback(true)
+        }
+      },
+
+      handleCancel() {
+        this.selectedDayInspectionRowKeys = this.selectedWeekInspectionRowKeys = []
+        this.visible = false
       }
     }
   }
 </script>
-<style scoped>
+<style scoped lang="less">
   /deep/ .ant-select-dropdown-menu {
     text-align: left;
   }
+
+  /deep/ .ant-spin-nested-loading {
+    height: 100%;
+
+    .ant-spin-container {
+      height: 100%;
+
+      .ant-form {
+        height: 100%;
+
+        #outer-row {
+          height: 100%;
+
+          .scroll-col {
+            height: 100%;
+            overflow: auto;
+          }
+        }
+      }
+    }
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3