From bf01bf6c572a169941fe9d018ff1d619a0584787 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期四, 24 七月 2025 19:02:11 +0800
Subject: [PATCH] 1、三保工单流程增加备件使用明细 2、事故登记表基础功能

---
 src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue      |   31 +
 src/views/system/modules/UserModal.vue                                         |   36 -
 src/views/eam/repair/EamReportAccidentsRegisterList.vue                        |  384 +++++++++-----------
 src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue            |    2 
 src/views/eam/repair/EamRepairOrderList.vue                                    |    8 
 src/views/eam/repair/modules/EamReportAccidentsRegisterModal.vue               |  373 +++++++++----------
 src/views/flowable/workflow/FlowCompleted.vue                                  |   24 
 src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue |  217 ++++++++---
 8 files changed, 550 insertions(+), 525 deletions(-)

diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue
index d4900dc..75a9706 100644
--- a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue
+++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue
@@ -27,7 +27,7 @@
         <a-row>
           <a-col :span="8">
             <a-form-model-item prop="maintenanceDate" label="淇濆吇鏃ユ湡">
-              <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD"
+              <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" value-format="YYYY-MM-DD"
                              style="width: 100%"/>
             </a-form-model-item>
           </a-col>
diff --git a/src/views/eam/repair/EamRepairOrderList.vue b/src/views/eam/repair/EamRepairOrderList.vue
index 7085ab3..900f842 100644
--- a/src/views/eam/repair/EamRepairOrderList.vue
+++ b/src/views/eam/repair/EamRepairOrderList.vue
@@ -5,24 +5,24 @@
     <div class="table-page-search-wrapper" v-if="isDisplayOperation">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="12">
             <a-form-item label="缁熶竴缂栫爜">
               <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/>
             </a-form-item>
           </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="12">
             <a-form-item label="宸ュ崟鍙�">
               <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-model="queryParam.repairCode"></a-input>
             </a-form-item>
           </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="12">
             <a-form-item label="缁翠慨鐘舵��">
               <j-dict-select-tag placeholder="璇烽�夋嫨缁翠慨鐘舵��" v-model="queryParam.repairStatus"
                                  dict-code="repair_status"/>
             </a-form-item>
           </a-col>
 
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="12">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
               <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
               <a-button @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
diff --git a/src/views/eam/repair/EamReportAccidentsRegisterList.vue b/src/views/eam/repair/EamReportAccidentsRegisterList.vue
index f49e4d3..7758fa2 100644
--- a/src/views/eam/repair/EamReportAccidentsRegisterList.vue
+++ b/src/views/eam/repair/EamReportAccidentsRegisterList.vue
@@ -5,108 +5,73 @@
     <div class="table-page-search-wrapper">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
-
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="鍒犻櫎鏍囪">
-              <a-input placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" v-model="queryParam.delFlag"></a-input>
+          <a-col :xl="6" :lg="7" :md="8" :sm="12">
+            <a-form-item label="缁熶竴缂栫爜">
+              <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/>
             </a-form-item>
           </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="鎶ヤ慨ID">
-              <a-input placeholder="璇疯緭鍏ユ姤淇甀D" v-model="queryParam.reportId"></a-input>
+          <a-col :xl="6" :lg="7" :md="8" :sm="12">
+            <a-form-item label="鐧昏鐘舵��">
+              <j-dict-select-tag placeholder="璇烽�夋嫨鐧昏鐘舵��" v-model="queryParam.registerStatus"
+                                 dict-code="eam_report_accidents_register_status"/>
             </a-form-item>
           </a-col>
-        <template v-if="toggleSearchStatus">
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="璁惧ID">
-              <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="queryParam.equipmentId"></a-input>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="鏄惁鏈夎澶囨搷浣滆瘉;鏄� 鍚�">
-              <a-input placeholder="璇疯緭鍏ユ槸鍚︽湁璁惧鎿嶄綔璇�;鏄� 鍚�" v-model="queryParam.operationCertificate"></a-input>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="鏄惁鏂數閲嶅惎">
-              <a-input placeholder="璇疯緭鍏ユ槸鍚︽柇鐢甸噸鍚�" v-model="queryParam.powerOffRestart"></a-input>
-            </a-form-item>
-          </a-col>
-          </template>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="6" :lg="7" :md="8" :sm="12">
             <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>
-
         </a-row>
       </a-form>
     </div>
 
-    <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
-    <div class="table-operator">
-<!--      <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>-->
-<!--      <a-button type="primary" icon="download" @click="handleExportXls('璁惧浜嬫晠鐧昏琛�')">瀵煎嚭</a-button>-->
-<!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
-<!--        <a-button type="primary" icon="import">瀵煎叆</a-button>-->
-<!--      </a-upload>-->
-      <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item>
-        </a-menu>
-        <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button>
-      </a-dropdown>
-    </div>
-
     <!-- table鍖哄煙-begin -->
-    <div>
-      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <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>
-      </div>
+    <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+             :pagination="ipagination" :loading="loading" :scroll="{x:'max-content'}" @change="handleTableChange">
 
-      <a-table
-        ref="table"
-        size="middle"
-        bordered
-        rowKey="id"
-        :columns="columns"
-        :dataSource="dataSource"
-        :pagination="ipagination"
-        :loading="loading"
-        :scroll="{x:'max-content'}"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-        @change="handleTableChange">
+      <!--鏄惁鏈夎澶囨搷浣滆瘉-->
+      <template slot="operationCertificate" slot-scope="text">
+        <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/>
+      </template>
 
-        <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">缂栬緫</a>
+      <!--鏄惁鏂數閲嶅惎-->
+      <template slot="powerOffRestart" slot-scope="text">
+        <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/>
+      </template>
 
+      <!--鏄惁涓烘壒娆¢浠�-->
+      <template slot="batchFirstPiece" slot-scope="text">
+        <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/>
+      </template>
 
+      <!--鍙樺姩鍥犵礌-->
+      <template slot="variableFactors" slot-scope="text">
+        <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/>
+      </template>
 
-          <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>
-              </a-menu-item>
-            </a-menu>
-          </a-dropdown>
+      <!--鍘熷洜鍒嗘瀽鏍稿-->
+      <template slot="checkAgree" slot-scope="text">
+        <a-switch v-if="text" checked-children="鍚屾剰" un-checked-children="涓嶅悓鎰�" :checked="Boolean(text)" disabled/>
+      </template>
+
+      <span slot="action" slot-scope="text, record">
+          <template v-if="record.registerStatus=='PENDING_SUBMIT'">
+             <a @click="handleEdit(record)">缂栬緫</a>
+             <a-divider type="vertical"/>
+             <a-popconfirm title="纭畾鎻愪氦鍚�?" @confirm="() => handleSubmit(record.id)">
+               <a>鎻愪氦</a>
+             </a-popconfirm>
+          </template>
+
+          <a v-else @click="handleDetail(record)">璇︽儏</a>
         </span>
 
-      </a-table>
-    </div>
+    </a-table>
     <!-- table鍖哄煙-end -->
 
     <!-- 琛ㄥ崟鍖哄煙 -->
-    <eamReportAccidentsRegister-modal ref="modalForm" @ok="modalFormOk"></eamReportAccidentsRegister-modal>
+    <eamReportAccidentsRegister-modal ref="modalForm" @ok="modalFormOk"/>
   </a-card>
 </template>
 
@@ -114,11 +79,13 @@
   import '@/assets/less/TableExpand.less'
   import EamReportAccidentsRegisterModal from './modules/EamReportAccidentsRegisterModal'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import LxSearchEquipmentSelect from '../equipment/modules/LxSearchEquipmentSelect'
 
   export default {
-    name: "EamReportAccidentsRegisterList",
-    mixins:[JeecgListMixin],
+    name: 'EamReportAccidentsRegisterList',
+    mixins: [JeecgListMixin],
     components: {
+      LxSearchEquipmentSelect,
       EamReportAccidentsRegisterModal
     },
     props: {
@@ -130,7 +97,7 @@
         type: Object
       }
     },
-    data () {
+    data() {
       return {
         description: '璁惧浜嬫晠鐧昏琛ㄧ鐞嗛〉闈�',
         disableMixinCreated: true,
@@ -166,222 +133,218 @@
             dataIndex: 'equipmentModel',
             fixed: 'left'
           },
-		      {
+          {
+            title: '鐧昏鐘舵��',
+            align: 'center',
+            dataIndex: 'registerStatus_dictText',
+            fixed: 'left'
+          },
+          {
             title: '鏄惁鏈夎澶囨搷浣滆瘉',
-            align:"center",
-            dataIndex: 'operationCertificate_dictText'
+            align: 'center',
+            dataIndex: 'operationCertificate',
+            scopedSlots: { customRender: 'operationCertificate' }
           },
-		      {
+          {
             title: '鏄惁鏂數閲嶅惎',
-            align:"center",
-            dataIndex: 'powerOffRestart_dictText'
+            align: 'center',
+            dataIndex: 'powerOffRestart',
+            scopedSlots: { customRender: 'powerOffRestart' }
           },
-		      {
+          {
             title: '鏄惁涓烘壒娆¢浠�',
-            align:"center",
-            dataIndex: 'batchFirstPiece_dictText'
+            align: 'center',
+            dataIndex: 'batchFirstPiece',
+            scopedSlots: { customRender: 'batchFirstPiece' }
           },
-		      {
+          {
             title: '鍙樺姩鍥犵礌',
-            align:"center",
-            dataIndex: 'variableFactors_dictText'
+            align: 'center',
+            dataIndex: 'variableFactors',
+            scopedSlots: { customRender: 'variableFactors' }
           },
-		      {
+          {
             title: '鍙樺姩鍥犵礌鍐呭',
-            align:"center",
+            align: 'center',
             dataIndex: 'variableFactorsValue_dictText'
           },
-		      {
+          {
             title: '鎵ц绋嬪簭',
-            align:"center",
+            align: 'center',
             dataIndex: 'executeNc'
           },
-		      {
+          {
             title: '浜嬫晠鐜拌薄',
-            align:"center",
+            align: 'center',
             dataIndex: 'accidentPhenomenon'
           },
-		      {
+          {
             title: '閲囧彇鎺柦',
-            align:"center",
+            align: 'center',
             dataIndex: 'measure'
           },
-		      {
+          {
             title: '閫犳垚缁撴灉',
-            align:"center",
+            align: 'center',
             dataIndex: 'causingResults'
           },
-		      {
+          {
             title: '鎿嶄綔宸�',
-            align:"center",
+            align: 'center',
             dataIndex: 'confirmer'
           },
-		      {
+          {
             title: '鎿嶄綔宸ョ‘璁ゆ椂闂�',
-            align:"center",
+            align: 'center',
             dataIndex: 'confirmTime'
           },
-		      {
+          {
             title: '鍖洪暱',
-            align:"center",
+            align: 'center',
             dataIndex: 'district'
           },
-		      {
+          {
             title: '鍖洪暱纭鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'districtTime'
           },
-		      {
+          {
             title: '涓績涓讳换',
-            align:"center",
+            align: 'center',
             dataIndex: 'centerDirector'
           },
-		      {
+          {
             title: '涓績涓讳换纭鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'centerDirectorTime'
           },
-		      {
+          {
             title: '缁翠慨寮�濮嬫椂闂�',
-            align:"center",
+            align: 'center',
             dataIndex: 'reportStartTime'
           },
-		      {
+          {
             title: '璁惧鐘舵��',
-            align:"center",
+            align: 'center',
             dataIndex: 'equipmentStatus'
           },
-		      {
+          {
             title: '鍘熷洜鍒嗘瀽',
-            align:"center",
+            align: 'center',
             dataIndex: 'causeAnalysis'
           },
-		      {
+          {
             title: '妫�鏌ョ粨鏋�',
-            align:"center",
+            align: 'center',
             dataIndex: 'inspectionResults'
           },
-		      {
+          {
             title: '閲囧彇鎺柦',
-            align:"center",
+            align: 'center',
             dataIndex: 'takeSteps'
           },
-		   {
+          {
             title: '寤鸿閲囧彇鎺柦',
-            align:"center",
+            align: 'center',
             dataIndex: 'suggestionTakeSteps'
-           },
-		   {
+          },
+          {
             title: '寤鸿閲囧彇鎺柦鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'suggestionTakeStepsTime'
-           },
-		   {
+          },
+          {
             title: '缁翠慨纭',
-            align:"center",
+            align: 'center',
             dataIndex: 'repairConfirm'
-           },
-		   {
-            title: '缁翠慨纭鎰忚',
-            align:"center",
-            dataIndex: 'repairConfirmComment'
-           },
-		   {
+          },
+          {
             title: '缁翠慨纭鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'repairConfirmTime'
-           },
-		        {
+          },
+          {
             title: '缁翠慨缁勯暱纭',
-            align:"center",
+            align: 'center',
             dataIndex: 'repairGroupLeader'
-           },
-		   {
-            title: '缁翠慨缁勯暱鎰忚',
-            align:"center",
-            dataIndex: 'repairGroupLeaderComment'
-           },
-		   {
+          },
+          {
             title: '缁翠慨缁勯暱纭鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'repairGroupLeaderTime'
-           },
-		   {
+          },
+          {
             title: '缁翠慨缁勯暱纭',
-            align:"center",
+            align: 'center',
             dataIndex: 'repairDistrict'
-           },
-		   {
-            title: '缁翠慨缁勯暱鎰忚',
-            align:"center",
-            dataIndex: 'repairDistrictComment'
-           },
-		   {
+          },
+          {
             title: '缁翠慨缁勯暱纭鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'repairDistrictTime'
-           },
-		   {
+          },
+          {
             title: '鍘熷洜鍒嗘瀽鏍稿;鍚屾剰銆佷笉鍚屾剰',
-            align:"center",
-            dataIndex: 'checkAgree'
-           },
-		   {
+            align: 'center',
+            dataIndex: 'checkAgree',
+            scopedSlots: { customRender: 'checkAgree' }
+          },
+          {
             title: '涓嶅悓鎰忓師鍥犲垎鏋�',
-            align:"center",
+            align: 'center',
             dataIndex: 'disagreeReason'
-           },
-		   {
+          },
+          {
             title: '鏁存敼鎺柦',
-            align:"center",
+            align: 'center',
             dataIndex: 'rectificationMeasures'
-           },
-		   {
+          },
+          {
             title: '浜嬫晠缁撹',
-            align:"center",
+            align: 'center',
             dataIndex: 'accidentConclusion'
-           },
-		   {
+          },
+          {
             title: '鎶�鏈礋璐d汉',
-            align:"center",
+            align: 'center',
             dataIndex: 'technicalDirector'
-           },
-		   {
+          },
+          {
             title: '鎶�鏈礋璐d汉纭鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'technicalDirectorTime'
-           },
-		   {
+          },
+          {
             title: '鎶�鏈富绠″绾ч瀵�',
-            align:"center",
+            align: 'center',
             dataIndex: 'technicalDirectorLeader'
-           },
-		   {
+          },
+          {
             title: '鎶�鏈富绠″绾ч瀵肩‘璁ゆ椂闂�',
-            align:"center",
+            align: 'center',
             dataIndex: 'technicalDirectorLeaderTime'
-           },
-		   {
+          },
+          {
             title: '涓荤閮ㄧ骇棰嗗',
-            align:"center",
+            align: 'center',
             dataIndex: 'technicalDirectorPart'
-           },
-		   {
+          },
+          {
             title: '涓荤閮ㄧ骇棰嗗纭鏃堕棿',
-            align:"center",
+            align: 'center',
             dataIndex: 'technicalDirectorPartTime'
-           },
+          }
         ],
-        selectRepairOrderData: {},
+        selectedRowData: {},
         url: {
-          list: "/eam/eamReportAccidentsRegister/list",
-          delete: "/eam/eamReportAccidentsRegister/delete",
-          deleteBatch: "/eam/eamReportAccidentsRegister/deleteBatch",
-          exportXlsUrl: "eam/eamReportAccidentsRegister/exportXls",
-          importExcelUrl: "eam/eamReportAccidentsRegister/importExcel",
-        },
-    }
-  },
+          list: '/eam/eamReportAccidentsRegister/list',
+          delete: '/eam/eamReportAccidentsRegister/delete',
+          deleteBatch: '/eam/eamReportAccidentsRegister/deleteBatch',
+          exportXlsUrl: 'eam/eamReportAccidentsRegister/exportXls',
+          importExcelUrl: 'eam/eamReportAccidentsRegister/importExcel'
+        }
+      }
+    },
     created() {
       if (!this.isDisplayOperation) this.queryParam = Object.assign({}, this.propsQueryParam)
       else {
@@ -398,9 +361,14 @@
       this.loadData(1)
     },
     methods: {
+      /**
+       * 鐐瑰嚮濉姤鏃惰Е鍙�
+       * @param record
+       */
+      handleFillIn(record) {
+        this.$refs.modalForm.title = '濉姤'
+        this.$refs.modalForm.handleFillIn(record)
+      }
     }
   }
-</script>
-<style scoped>
-  @import '~@assets/less/common.less';
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/src/views/eam/repair/modules/EamReportAccidentsRegisterModal.vue b/src/views/eam/repair/modules/EamReportAccidentsRegisterModal.vue
index f568c43..a632215 100644
--- a/src/views/eam/repair/modules/EamReportAccidentsRegisterModal.vue
+++ b/src/views/eam/repair/modules/EamReportAccidentsRegisterModal.vue
@@ -1,150 +1,83 @@
 <template>
-  <j-modal
-    :title="title"
-    :width="800"
-    :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="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="reportId" label="鎶ヤ慨ID">
-          <a-input placeholder="璇疯緭鍏ユ姤淇甀D" v-model="model.reportId" />
-        </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="operationCertificate" label="鏄惁鏈夎澶囨搷浣滆瘉;鏄� 鍚�">
-          <a-input placeholder="璇疯緭鍏ユ槸鍚︽湁璁惧鎿嶄綔璇�;鏄� 鍚�" v-model="model.operationCertificate" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="powerOffRestart" label="鏄惁鏂數閲嶅惎">
-          <a-input placeholder="璇疯緭鍏ユ槸鍚︽柇鐢甸噸鍚�" v-model="model.powerOffRestart" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batchFirstPiece" label="鏄惁涓烘壒娆¢浠�">
-          <a-input placeholder="璇疯緭鍏ユ槸鍚︿负鎵规棣栦欢" v-model="model.batchFirstPiece" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="variableFactors" label="鍙樺姩鍥犵礌;濉啓鏄垨鍚�">
-          <a-input placeholder="璇疯緭鍏ュ彉鍔ㄥ洜绱�;濉啓鏄垨鍚�" v-model="model.variableFactors" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="variableFactorsValue" label="鍙樺姩鍥犵礌鍐呭;鍒�鍏锋洿鎹€�佸伐鑹烘洿鏀广�佸姞宸ョ▼搴忔洿鏀广�佸垁鍏疯ˉ鍋垮�兼洿鏀广��">
-          <a-input placeholder="璇疯緭鍏ュ彉鍔ㄥ洜绱犲唴瀹�;鍒�鍏锋洿鎹€�佸伐鑹烘洿鏀广�佸姞宸ョ▼搴忔洿鏀广�佸垁鍏疯ˉ鍋垮�兼洿鏀广��" v-model="model.variableFactorsValue" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="executeNc" label="鎵ц绋嬪簭">
-          <a-input placeholder="璇疯緭鍏ユ墽琛岀▼搴�" v-model="model.executeNc" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="accidentPhenomenon" label="浜嬫晠鐜拌薄">
-          <a-input placeholder="璇疯緭鍏ヤ簨鏁呯幇璞�" v-model="model.accidentPhenomenon" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="measure" label="閲囧彇鎺柦">
-          <a-input placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�" v-model="model.measure" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="causingResults" label="閫犳垚缁撴灉">
-          <a-input placeholder="璇疯緭鍏ラ�犳垚缁撴灉" v-model="model.causingResults" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmer" label="鎿嶄綔宸�">
-          <a-input placeholder="璇疯緭鍏ユ搷浣滃伐" v-model="model.confirmer" />
-        </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="district" label="鍖洪暱">
-          <a-input placeholder="璇疯緭鍏ュ尯闀�" v-model="model.district" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="districtTime" label="鍖洪暱纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ュ尯闀跨‘璁ゆ椂闂�" v-model="model.districtTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="centerDirector" label="涓績涓讳换">
-          <a-input placeholder="璇疯緭鍏ヤ腑蹇冧富浠�" v-model="model.centerDirector" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="centerDirectorTime" label="涓績涓讳换纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ヤ腑蹇冧富浠荤‘璁ゆ椂闂�" v-model="model.centerDirectorTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reportStartTime" label="缁翠慨寮�濮嬫椂闂�">
-          <a-input placeholder="璇疯緭鍏ョ淮淇紑濮嬫椂闂�" v-model="model.reportStartTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentStatus" label="璁惧鐘舵��">
-          <a-input placeholder="璇疯緭鍏ヨ澶囩姸鎬�" v-model="model.equipmentStatus" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="causeAnalysis" label="鍘熷洜鍒嗘瀽">
-          <a-input placeholder="璇疯緭鍏ュ師鍥犲垎鏋�" v-model="model.causeAnalysis" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionResults" label="妫�鏌ョ粨鏋�">
-          <a-input placeholder="璇疯緭鍏ユ鏌ョ粨鏋�" v-model="model.inspectionResults" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="takeSteps" label="閲囧彇鎺柦">
-          <a-input placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�" v-model="model.takeSteps" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="suggestionTakeSteps" label="寤鸿閲囧彇鎺柦">
-          <a-input placeholder="璇疯緭鍏ュ缓璁噰鍙栨帾鏂�" v-model="model.suggestionTakeSteps" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="suggestionTakeStepsTime" label="寤鸿閲囧彇鎺柦鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ュ缓璁噰鍙栨帾鏂芥椂闂�" v-model="model.suggestionTakeStepsTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairConfirm" label="缁翠慨纭">
-          <a-input placeholder="璇疯緭鍏ョ淮淇‘璁�" v-model="model.repairConfirm" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairConfirmComment" label="缁翠慨纭鎰忚">
-          <a-input placeholder="璇疯緭鍏ョ淮淇‘璁ゆ剰瑙�" v-model="model.repairConfirmComment" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairConfirmTime" label="缁翠慨纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ョ淮淇‘璁ゆ椂闂�" v-model="model.repairConfirmTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairGroupLeader" label="缁翠慨缁勯暱纭">
-          <a-input placeholder="璇疯緭鍏ョ淮淇粍闀跨‘璁�" v-model="model.repairGroupLeader" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairGroupLeaderComment" label="缁翠慨缁勯暱鎰忚">
-          <a-input placeholder="璇疯緭鍏ョ淮淇粍闀挎剰瑙�" v-model="model.repairGroupLeaderComment" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairGroupLeaderTime" label="缁翠慨缁勯暱纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ョ淮淇粍闀跨‘璁ゆ椂闂�" v-model="model.repairGroupLeaderTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairDistrict" label="缁翠慨缁勯暱纭">
-          <a-input placeholder="璇疯緭鍏ョ淮淇粍闀跨‘璁�" v-model="model.repairDistrict" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairDistrictComment" label="缁翠慨缁勯暱鎰忚">
-          <a-input placeholder="璇疯緭鍏ョ淮淇粍闀挎剰瑙�" v-model="model.repairDistrictComment" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="repairDistrictTime" label="缁翠慨缁勯暱纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ョ淮淇粍闀跨‘璁ゆ椂闂�" v-model="model.repairDistrictTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="checkAgree" label="鍘熷洜鍒嗘瀽鏍稿;鍚屾剰銆佷笉鍚屾剰">
-          <a-input placeholder="璇疯緭鍏ュ師鍥犲垎鏋愭牳瀵�;鍚屾剰銆佷笉鍚屾剰" v-model="model.checkAgree" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="disagreeReason" label="涓嶅悓鎰忓師鍥犲垎鏋�">
-          <a-input placeholder="璇疯緭鍏ヤ笉鍚屾剰鍘熷洜鍒嗘瀽" v-model="model.disagreeReason" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="rectificationMeasures" label="鏁存敼鎺柦">
-          <a-input placeholder="璇疯緭鍏ユ暣鏀规帾鏂�" v-model="model.rectificationMeasures" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="accidentConclusion" label="浜嬫晠缁撹">
-          <a-input placeholder="璇疯緭鍏ヤ簨鏁呯粨璁�" v-model="model.accidentConclusion" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technicalDirector" label="鎶�鏈礋璐d汉">
-          <a-input placeholder="璇疯緭鍏ユ妧鏈礋璐d汉" v-model="model.technicalDirector" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technicalDirectorTime" label="鎶�鏈礋璐d汉纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ユ妧鏈礋璐d汉纭鏃堕棿" v-model="model.technicalDirectorTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technicalDirectorLeader" label="鎶�鏈富绠″绾ч瀵�">
-          <a-input placeholder="璇疯緭鍏ユ妧鏈富绠″绾ч瀵�" v-model="model.technicalDirectorLeader" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technicalDirectorLeaderTime" label="鎶�鏈富绠″绾ч瀵肩‘璁ゆ椂闂�">
-          <a-input placeholder="璇疯緭鍏ユ妧鏈富绠″绾ч瀵肩‘璁ゆ椂闂�" v-model="model.technicalDirectorLeaderTime" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technicalDirectorPart" label="涓荤閮ㄧ骇棰嗗">
-          <a-input placeholder="璇疯緭鍏ヤ富绠¢儴绾ч瀵�" v-model="model.technicalDirectorPart" />
-        </a-form-model-item>
-        <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technicalDirectorPartTime" label="涓荤閮ㄧ骇棰嗗纭鏃堕棿">
-          <a-input placeholder="璇疯緭鍏ヤ富绠¢儴绾ч瀵肩‘璁ゆ椂闂�" v-model="model.technicalDirectorPartTime" />
-        </a-form-model-item>
-		
+      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <a-row>
+          <a-col :span="customSpan">
+            <a-form-model-item label="搴熷搧浠跺彿" prop="scrapPartNumber">
+              <a-input placeholder="璇疯緭鍏ュ簾鍝佷欢鍙�"
+                       v-model="model.scrapPartNumber"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan">
+            <a-form-model-item label="搴熷搧浠舵暟" prop="scrapPartQuantity">
+              <a-input-number placeholder="璇疯緭鍏ュ簾鍝佷欢鏁�"
+                              v-model="model.scrapPartQuantity" :min="0" style="width: 100%"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan">
+            <a-form-model-item label="搴熷搧浠峰��" prop="scrapPartValue">
+              <a-input-number placeholder="璇疯緭鍏ュ簾鍝佷环鍊�"
+                              v-model="model.scrapPartValue" style="width: 100%"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan">
+            <a-form-model-item label="鏄惁鏈夎澶囨搷浣滆瘉" prop="operationCertificate">
+              <j-dict-select-tag dict-code="yn" type="radio"
+                                 placeholder="璇烽�夋嫨鏄惁鏈夎澶囨搷浣滆瘉"
+                                 v-model="model.operationCertificate"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan">
+            <a-form-model-item label="鏄惁鏂數閲嶅惎" prop="powerOffRestart">
+              <j-dict-select-tag dict-code="yn" type="radio"
+                                 placeholder="璇烽�夋嫨鏄惁鏂數閲嶅惎" v-model="model.powerOffRestart"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan">
+            <a-form-model-item label="鏄惁涓烘壒娆¢浠�" prop="batchFirstPiece">
+              <j-dict-select-tag dict-code="yn" type="radio"
+                                 placeholder="璇烽�夋嫨鏄惁涓烘壒娆¢浠�"
+                                 v-model="model.batchFirstPiece"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan">
+            <a-form-model-item label="鍙樺姩鍥犵礌" prop="variableFactors">
+              <j-dict-select-tag type="radio" dict-code="yn"
+                                 placeholder="璇烽�夋嫨鍙樺姩鍥犵礌" v-model="model.variableFactors"
+                                 @change="handleRadioChange"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan" v-if="Boolean(+model.variableFactors)">
+            <a-form-model-item label="鍙樺姩鍥犵礌鍐呭" prop="variableFactorsValue">
+              <j-dict-select-tag dict-code="variable_factors_value"
+                                 placeholder="璇烽�夋嫨鍙樺姩鍥犵礌鍐呭" v-model="model.variableFactorsValue"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="customSpan">
+            <a-form-model-item label="鎵ц绋嬪簭">
+              <a-input placeholder="璇疯緭鍏ユ墽琛岀▼搴�" v-model="model.executeNc"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="浜嬫晠鐜拌薄" prop="accidentPhenomenon" :labelCol="labelColLong"
+                               :wrapperCol="wrapperColLong">
+              <a-textarea placeholder="璇疯緭鍏ヤ簨鏁呯幇璞�" v-model="model.accidentPhenomenon"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="閲囧彇鎺柦" prop="measure" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
+              <a-textarea placeholder="璇疯緭鍏ラ噰鍙栨帾鏂�" v-model="model.measure"/>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="閫犳垚缁撴灉" prop="causingResults" :labelCol="labelColLong"
+                               :wrapperCol="wrapperColLong">
+              <a-textarea placeholder="璇疯緭鍏ラ�犳垚缁撴灉" v-model="model.causingResults"/>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
       </a-form-model>
     </a-spin>
   </j-modal>
@@ -152,89 +85,137 @@
 
 <script>
   import { httpAction } from '@/api/manage'
-  import moment from "moment"
+  import moment from 'moment'
 
   export default {
-    name: "EamReportAccidentsRegisterModal",
-    data () {
+    name: 'EamReportAccidentsRegisterModal',
+    data() {
       return {
-        title:"鎿嶄綔",
+        title: '鎿嶄綔',
         visible: false,
+        customSpan: 8,
         model: {},
         labelCol: {
           xs: { span: 24 },
-          sm: { span: 5 },
+          sm: { span: 9 }
         },
         wrapperCol: {
           xs: { span: 24 },
-          sm: { span: 16 },
+          sm: { span: 12 }
         },
-
+        labelColLong: {
+          xs: { span: 24 },
+          sm: { span: 3 }
+        },
+        wrapperColLong: {
+          xs: { span: 24 },
+          sm: { span: 20 }
+        },
         confirmLoading: false,
-        validatorRules:{
+        validatorRules: {
+          scrapPartNumber: [{ required: true, message: '璇疯緭鍏ュ簾鍝佷欢鍙�', trigger: 'change' }],
+          scrapPartQuantity: [{ required: true, message: '璇疯緭鍏ュ簾鍝佷欢鏁�', trigger: 'change' }],
+          scrapPartValue: [{ required: true, message: '璇疯緭鍏ュ簾鍝佷环鍊�', trigger: 'change' }],
+          operationCertificate: [{ required: true, message: '璇烽�夋嫨鏄惁鏈夎澶囨搷浣滆瘉', trigger: 'change' }],
+          powerOffRestart: [{ required: true, message: '璇烽�夋嫨鏄惁鏂數閲嶅惎', trigger: 'change' }],
+          batchFirstPiece: [{ required: true, message: '璇烽�夋嫨鏄惁涓烘壒娆¢浠�', trigger: 'change' }],
+          variableFactors: [{ required: true, message: '璇烽�夋嫨鍙樺姩鍥犵礌', trigger: 'change' }],
+          variableFactorsValue: [{
+            validator: this.variableFactorsValueValidator,
+            message: '璇烽�夋嫨鍙樺姩鍥犵礌鍐呭',
+            trigger: 'change'
+          }],
+          accidentPhenomenon: [{ required: true, message: '璇疯緭鍏ヤ簨鏁呯幇璞�', trigger: 'change' }],
+          measure: [{ required: true, message: '璇疯緭鍏ラ噰鍙栨帾鏂�', trigger: 'change' }],
+          causingResults: [{ required: true, message: '璇疯緭鍏ラ�犳垚缁撴灉', trigger: 'change' }]
         },
         url: {
-          add: "/eam/eamReportAccidentsRegister/add",
-          edit: "/eam/eamReportAccidentsRegister/edit",
-        },
+          add: '/eam/eamReportAccidentsRegister/add',
+          edit: '/eam/eamReportAccidentsRegister/edit'
+        }
       }
     },
-    created () {
+    created() {
     },
     methods: {
-      add () {
+      add() {
         //鍒濆鍖栭粯璁ゅ��
-        this.edit({});
+        this.edit({})
       },
-      edit (record) {
-        this.model = Object.assign({}, record);
-        this.visible = true;
+
+      edit(record) {
+        this.model = Object.assign({}, record)
+        this.visible = true
       },
-      close () {
-        this.$emit('close');
-        this.visible = false;
-        this.$refs.form.clearValidate();
-      },
-      handleOk () {
-        const that = this;
+
+      handleOk() {
+        const that = this
         // 瑙﹀彂琛ㄥ崟楠岃瘉
-         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';
+            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')
+              } else {
+                that.$message.warning(res.message)
               }
             }).finally(() => {
-              that.confirmLoading = false;
-              that.close();
+              that.confirmLoading = false
+              that.close()
             })
-          }else{
-             return false;
+          } else {
+            return false
           }
         })
       },
-      handleCancel () {
+
+      /**\
+       * 鍗曢�夋鍊煎彂鐢熸敼鍙樻椂瑙﹀彂
+       * @param value 鍗曢�夋鍊�
+       * @param key 鍗曢�夋鍏宠仈瀛楁
+       */
+      handleRadioChange(value, key) {
+        if (value !== '1') delete this.model.variableFactorsValue
+      },
+
+      /**
+       * 鍙樺姩鍥犵礌鍐呭鏍¢獙
+       * @param rule
+       * @param value 鍙樺姩鍥犵礌鍐呭瀛楁鍊�
+       * @param callback 缁撴灉鍥炶皟鍑芥暟
+       */
+      variableFactorsValueValidator(rule, value, callback) {
+        if (this.model.variableFactors === '1') {
+          if (!value) {
+            callback(new Error())
+          } else {
+            callback()
+          }
+        } else {
+          callback()
+        }
+      },
+
+      handleCancel() {
         this.close()
       },
 
-
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.$refs.form.clearValidate()
+      }
     }
   }
-</script>
-
-<style lang="less" scoped>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue b/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue
index 183bbde..751f2e2 100644
--- a/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue
+++ b/src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue
@@ -92,20 +92,20 @@
 
           <a-row>
             <a-col :span="customSpan">
-              <a-form-model-item label="鏄惁鏈夎澶囨搷浣滆瘉">
+              <a-form-model-item label="鏄惁鏈夎澶囨搷浣滆瘉" prop="operationCertificate">
                 <j-dict-select-tag dict-code="yn" type="radio" :disabled="!Boolean(+model.isAccidentsRegister)"
                                    placeholder="璇烽�夋嫨鏄惁鏈夎澶囨搷浣滆瘉"
                                    v-model="model.operationCertificate"/>
               </a-form-model-item>
             </a-col>
             <a-col :span="customSpan">
-              <a-form-model-item label="鏄惁鏂數閲嶅惎">
+              <a-form-model-item label="鏄惁鏂數閲嶅惎" prop="powerOffRestart">
                 <j-dict-select-tag dict-code="yn" type="radio" :disabled="!Boolean(+model.isAccidentsRegister)"
                                    placeholder="璇烽�夋嫨鏄惁鏂數閲嶅惎" v-model="model.powerOffRestart"/>
               </a-form-model-item>
             </a-col>
             <a-col :span="customSpan">
-              <a-form-model-item label="鏄惁涓烘壒娆¢浠�">
+              <a-form-model-item label="鏄惁涓烘壒娆¢浠�" prop="batchFirstPiece">
                 <j-dict-select-tag dict-code="yn" type="radio" :disabled="!Boolean(+model.isAccidentsRegister)"
                                    placeholder="璇烽�夋嫨鏄惁涓烘壒娆¢浠�"
                                    v-model="model.batchFirstPiece"/>
@@ -238,6 +238,21 @@
             message: '璇疯緭鍏ュ簾鍝佷环鍊�',
             trigger: 'change'
           }],
+          operationCertificate: [{
+            validator: this.isAccidentsRegisterRelatedValidator,
+            message: '璇烽�夋嫨鏄惁鏈夎澶囨搷浣滆瘉',
+            trigger: 'change'
+          }],
+          powerOffRestart: [{
+            validator: this.isAccidentsRegisterRelatedValidator,
+            message: '璇烽�夋嫨鏄惁鏂數閲嶅惎',
+            trigger: 'change'
+          }],
+          batchFirstPiece: [{
+            validator: this.isAccidentsRegisterRelatedValidator,
+            message: '璇烽�夋嫨鏄惁涓烘壒娆¢浠�',
+            trigger: 'change'
+          }],
           variableFactors: [{
             validator: this.isAccidentsRegisterRelatedValidator,
             message: '璇烽�夋嫨鍙樺姩鍥犵礌',
@@ -334,11 +349,11 @@
         if (key.includes(',')) {
           const keys = key.split(',')
           keys.forEach(key => {
-            if (value != '1') delete this.model[key]
+            if (value !== '1') delete this.model[key]
             this.$refs.form.clearValidate(key)
           })
         } else {
-          if (value != '1') delete this.model[key]
+          if (value !== '1') delete this.model[key]
           this.$refs.form.clearValidate(key)
         }
       },
@@ -350,7 +365,7 @@
        * @param callback 缁撴灉鍥炶皟鍑芥暟
        */
       isProcessedRelatedValidator(rule, value, callback) {
-        if (this.model.isProcessed == '1') {
+        if (this.model.isProcessed === '1') {
           if (!value) {
             callback(new Error())
           } else {
@@ -368,7 +383,7 @@
        * @param callback 缁撴灉鍥炶皟鍑芥暟
        */
       isAccidentsRegisterRelatedValidator(rule, value, callback) {
-        if (this.model.isAccidentsRegister == '1') {
+        if (this.model.isAccidentsRegister === '1') {
           if (!value) {
             callback(new Error())
           } else {
@@ -386,7 +401,7 @@
        * @param callback 缁撴灉鍥炶皟鍑芥暟
        */
       variableFactorsValueValidator(rule, value, callback) {
-        if (this.model.variableFactors == '1') {
+        if (this.model.variableFactors === '1') {
           if (!value) {
             callback(new Error())
           } else {
diff --git a/src/views/flowable/workflow/FlowCompleted.vue b/src/views/flowable/workflow/FlowCompleted.vue
index d664cec..3206395 100644
--- a/src/views/flowable/workflow/FlowCompleted.vue
+++ b/src/views/flowable/workflow/FlowCompleted.vue
@@ -223,9 +223,9 @@
       handleThirdMaintenance(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.thirdMaintenanceApprovalModal.visible = true
-        this.$refs.thirdMaintenanceApprovalModal.title = record.name
+        this.$refs.thirdMaintenanceApprovalModal.title = record.taskName
         this.$refs.thirdMaintenanceApprovalModal.disableSubmit = true
-        this.$refs.thirdMaintenanceApprovalModal.handleDetail(record)
+        this.$refs.thirdMaintenanceApprovalModal.handleApprove(record)
       },
 
       /**
@@ -235,7 +235,7 @@
       handleTechnicalStatusDeactivate(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.technicalStatusDeactivateApprovalModal.visible = true
-        this.$refs.technicalStatusDeactivateApprovalModal.title = record.name
+        this.$refs.technicalStatusDeactivateApprovalModal.title = record.taskName
         this.$refs.technicalStatusDeactivateApprovalModal.disableSubmit = true
         this.$refs.technicalStatusDeactivateApprovalModal.handleApprove(record)
       },
@@ -247,7 +247,7 @@
       handleTechnicalStatusEvaluationApply(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.technicalStatusEvaluationApplicationApprovalModal.visible = true
-        this.$refs.technicalStatusEvaluationApplicationApprovalModal.title = record.name
+        this.$refs.technicalStatusEvaluationApplicationApprovalModal.title = record.taskName
         this.$refs.technicalStatusEvaluationApplicationApprovalModal.disableSubmit = true
         this.$refs.technicalStatusEvaluationApplicationApprovalModal.handleApprove(record)
       },
@@ -259,7 +259,7 @@
       handleTechnicalStatusChange(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.technicalStatusChangeApprovalModal.visible = true
-        this.$refs.technicalStatusChangeApprovalModal.title = record.name
+        this.$refs.technicalStatusChangeApprovalModal.title = record.taskName
         this.$refs.technicalStatusChangeApprovalModal.disableSubmit = true
         this.$refs.technicalStatusChangeApprovalModal.handleApprove(record)
       },
@@ -271,7 +271,7 @@
       handleEvaluationOrderChange(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.evaluationOrderChangeApprovalModal.visible = true
-        this.$refs.evaluationOrderChangeApprovalModal.title = record.name
+        this.$refs.evaluationOrderChangeApprovalModal.title = record.taskName
         this.$refs.evaluationOrderChangeApprovalModal.disableSubmit = true
         this.$refs.evaluationOrderChangeApprovalModal.handleApprove(record)
       },
@@ -283,7 +283,7 @@
       handleTechnicalStatusEvaluation(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.technicalStatusApprovalModal.visible = true
-        this.$refs.technicalStatusApprovalModal.title = record.name
+        this.$refs.technicalStatusApprovalModal.title = record.taskName
         this.$refs.technicalStatusApprovalModal.disableSubmit = true
         this.$refs.technicalStatusApprovalModal.handleApprove(record)
       },
@@ -295,7 +295,7 @@
       handleSecondMaintenance(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.secondMaintenanceApprovalModal.visible = true
-        this.$refs.secondMaintenanceApprovalModal.title = record.name
+        this.$refs.secondMaintenanceApprovalModal.title = record.taskName
         this.$refs.secondMaintenanceApprovalModal.disableSubmit = true
         this.$refs.secondMaintenanceApprovalModal.handleApprove(record)
       },
@@ -307,7 +307,7 @@
       handInspectionOrder(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.inspectionOrderHandle.visible = true
-        this.$refs.inspectionOrderHandle.title = record.name
+        this.$refs.inspectionOrderHandle.title = record.taskName
         this.$refs.inspectionOrderHandle.disableSubmit = true
         this.$refs.inspectionOrderHandle.handleApprove(record)
       },
@@ -319,7 +319,7 @@
       handleRepairOrder(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.repairOrderApprovalModal.visible = true
-        this.$refs.repairOrderApprovalModal.title = record.name
+        this.$refs.repairOrderApprovalModal.title = record.taskName
         this.$refs.repairOrderApprovalModal.disableSubmit = true
         this.$refs.repairOrderApprovalModal.handleApprove(record)
       },
@@ -331,7 +331,7 @@
       handleMaintenanceStandard(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.maintenanceStandardApprovalModal.visible = true
-        this.$refs.maintenanceStandardApprovalModal.title = record.name
+        this.$refs.maintenanceStandardApprovalModal.title = record.taskName
         this.$refs.maintenanceStandardApprovalModal.disableSubmit = true
         this.$refs.maintenanceStandardApprovalModal.handleApprove(record)
       },
@@ -343,7 +343,7 @@
       handleThirdMaintenanceOrderChange(record) {
         this.selectedRowData = Object.assign({}, record)
         this.$refs.thirdMaintenanceOrderChangeApprovalModal.visible = true
-        this.$refs.thirdMaintenanceOrderChangeApprovalModal.title = record.name
+        this.$refs.thirdMaintenanceOrderChangeApprovalModal.title = record.taskName
         this.$refs.thirdMaintenanceOrderChangeApprovalModal.disableSubmit = true
         this.$refs.thirdMaintenanceOrderChangeApprovalModal.handleApprove(record)
       },
diff --git a/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue
index 99e165f..0f9dd12 100644
--- a/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue
+++ b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue
@@ -59,17 +59,17 @@
             </a-tabs>
           </a-col>
 
-          <a-col :span="model.maintenanceStatus&&model.maintenanceStatus!='WAIT_MAINTENANCE'?10:16" class="scroll-col">
-            <a-tabs v-model="activeTabKey" @change="$refs.editableDetailTable.clearValidate()">
+          <a-col :span="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'?10:16" class="scroll-col">
+            <a-tabs :active-key="activeTabKey" @change="handleTabChange">
               <a-tab-pane key="1" tab="淇濆吇椤规槑缁�">
-                <j-vxe-table ref="editableDetailTable" rowSelection bordered alwaysEdit keep-source
-                             :dataSource="detail.dataSource" :columns="detail.columns"
+                <j-vxe-table ref="editableDetailTable1" rowSelection bordered alwaysEdit keep-source
+                             :dataSource="detail.maintenanceDetailList" :columns="detail.maintenanceDetailColumns"
                              @selectRowChange="handleTableSelectRowChange">
                   <!--淇濆吇缁撴灉-->
                   <template v-slot:maintenanceResult="props">
                     <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="third_maintenance_result"
                                        placeholder="璇烽�夋嫨淇濆吇缁撴灉"
-                                       :disabled="disableSubmit || (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"
+                                       :disabled="disableSubmit || (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')"
                                        @change="handleResultSelectChange($event,props.row,'exceptionDescription')"
                                        style="width: 100%"/>
                   </template>
@@ -78,9 +78,9 @@
                   <template v-slot:exceptionDescription="props">
                     <a-textarea :rows="1" :autoSize="false" v-model="props.row.exceptionDescription"
                                 :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!='NORMAL'?'璇疯緭鍏ュ紓甯告弿杩�':''"
-                                @blur="$refs.editableDetailTable.validateTable"
+                                @blur="$refs.editableDetailTable1.validateTable"
                                 :disabled="disableSubmit ||
-                                (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE') ||
+                                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
                                 !props.row.maintenanceResult ||
                                 props.row.maintenanceResult === 'NORMAL'"/>
                   </template>
@@ -90,7 +90,7 @@
                     <j-dict-select-tag v-model="props.row.firstInspectResult"
                                        placeholder="璇烽�夋嫨楠屾敹缁撴灉"
                                        @change="handleResultSelectChange($event,props.row,'firstInspectException')"
-                                       :disabled="disableSubmit ||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_FIRST_ACCEPTANCE')"
+                                       :disabled="disableSubmit ||(model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_FIRST_ACCEPTANCE')"
                                        dictCode="check_status" style="width: 100%"/>
                   </template>
 
@@ -98,9 +98,9 @@
                   <template v-slot:firstInspectException="props">
                     <a-textarea :rows="1" v-model="props.row.firstInspectException"
                                 :placeholder="props.row.firstInspectResult&&props.row.firstInspectResult!='1'?'璇疯緭鍏ュ紓甯告弿杩�':''"
-                                @blur="$refs.editableDetailTable.validateTable"
+                                @blur="$refs.editableDetailTable1.validateTable"
                                 :disabled="disableSubmit ||
-                                (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_FIRST_ACCEPTANCE')||
+                                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_FIRST_ACCEPTANCE')||
                                 !props.row.firstInspectResult ||
                                 props.row.firstInspectResult === '1'"
                                 dictCode="check_status" style="width: 100%;resize:none"/>
@@ -117,18 +117,30 @@
                   <!--绗簩娆¢獙鏀跺紓甯告弿杩�-->
                   <template v-slot:secondInspectException="props">
                     <a-textarea :rows="1" v-model="props.row.secondInspectException"
-                                :placeholder="props.row.secondInspectResult&&props.row.secondInspectResult!='1'?'璇疯緭鍏ュ紓甯告弿杩�':''"
-                                @blur="$refs.editableDetailTable.validateTable"
+                                :placeholder="props.row.secondInspectResult&&props.row.secondInspectResult!=='1'?'璇疯緭鍏ュ紓甯告弿杩�':''"
+                                @blur="$refs.editableDetailTable1.validateTable"
                                 :disabled="disableSubmit ||
-                                (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_SECOND_ACCEPTANCE')||
+                                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_SECOND_ACCEPTANCE')||
                                 !props.row.secondInspectResult ||
                                 props.row.secondInspectResult === '1'"
                                 dictCode="check_status" style="width: 100%;resize:none"/>
                   </template>
                 </j-vxe-table>
               </a-tab-pane>
+
+              <a-tab-pane key="2" tab="澶囦欢浣跨敤鏄庣粏"
+                          v-if="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_CHECK'&&detail.sparePartsDetailList.length>0||
+                          (model.maintenanceStatus&&model.maintenanceStatus==='UNDER_MAINTENANCE')"
+                          forceRender>
+                <j-vxe-table ref="editableDetailTable2" bordered alwaysEdit keep-source toolbar
+                             :toolbar-config="detail.toolbarConfig" row-selection
+                             :disabled="model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE'"
+                             :dataSource="detail.sparePartsDetailList" :columns="detail.sparePartsDetailColumns">
+                </j-vxe-table>
+              </a-tab-pane>
+
               <template v-if="selectShenpiData.procInstId">
-                <a-tab-pane key='2' tab='娴佺▼鍥�'>
+                <a-tab-pane key='3' tab='娴佺▼鍥�'>
                   <img :src="imageSrc" alt="Fetched Image"/>
                 </a-tab-pane>
               </template>
@@ -136,13 +148,13 @@
               <template slot="tabBarExtraContent">
                 <a-space>
                   <a-button
-                    v-if="activeTabKey=='1'"
-                    :disabled="disableSubmit || (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')||selectedRowKeys.length == 0"
+                    v-if="activeTabKey==='1'"
+                    :disabled="disableSubmit || (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')||selectedRowKeys.length === 0"
                     type="primary" @click="handleSelectAllMaintenanceResult">鎵归噺淇濆吇姝e父
                   </a-button>
                   <a-button
-                    v-if="activeTabKey=='1'"
-                    :disabled="disableSubmit || (model.maintenanceStatus&&model.maintenanceStatus!='UNDER_FIRST_ACCEPTANCE')||selectedRowKeys.length == 0"
+                    v-if="activeTabKey==='1'"
+                    :disabled="disableSubmit || (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_FIRST_ACCEPTANCE')||selectedRowKeys.length === 0"
                     type="primary" @click="handleSelectAllFirstAcceptanceResult">鎵归噺楠屾敹閫氳繃
                   </a-button>
                 </a-space>
@@ -150,7 +162,7 @@
             </a-tabs>
           </a-col>
 
-          <a-col v-if="model.maintenanceStatus&&model.maintenanceStatus!='WAIT_MAINTENANCE'" :span="6"
+          <a-col v-if="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'" :span="6"
                  class="scroll-col">
             <a-tabs v-if="displayEvaluationFlag">
               <a-tab-pane tab="淇濆吇鍓嶆妧鏈姸鎬侀壌瀹�">
@@ -158,18 +170,18 @@
                                    prop="fullyFunctional" label="璁惧鍔熻兘鏄惁榻愬叏">
                   <j-dict-select-tag type='radio' v-model='model.fullyFunctional' dictCode='yn'
                                      @change="handleCheckRadioChange"
-                                     :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='WAIT_CHECK')"/>
+                                     :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_CHECK')"/>
                 </a-form-model-item>
                 <a-form-model-item :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol"
                                    prop="runningNormally" label="璁惧鑳藉惁姝e父杩愯浆">
                   <j-dict-select-tag type='radio' v-model='model.runningNormally' dictCode='yn'
                                      @change="handleCheckRadioChange"
-                                     :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='WAIT_CHECK')"/>
+                                     :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_CHECK')"/>
                 </a-form-model-item>
-                <a-form-model-item v-if="model.fullyFunctional=='0'||model.runningNormally=='0'"
+                <a-form-model-item v-if="model.fullyFunctional==='0'||model.runningNormally==='0'"
                                    :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol" label="闂鎻忚堪">
                   <a-textarea v-model='model.problemDescription' placeholder="璇锋弿杩伴棶棰�"
-                              :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='WAIT_CHECK')"/>
+                              :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_CHECK')"/>
                 </a-form-model-item>
               </a-tab-pane>
             </a-tabs>
@@ -181,7 +193,7 @@
                 </a-form-model-item>
                 <a-form-model-item :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol" label="鍗忓姪鎿嶄綔浜�">
                   <a-input v-model="model.assistantOperator"
-                           :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='OPERATOR_SIGNATURE')"
+                           :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='OPERATOR_SIGNATURE')"
                            placeholder="璇疯緭鍏ュ崗鍔╂搷浣滀汉"/>
                 </a-form-model-item>
               </a-tab-pane>
@@ -194,7 +206,7 @@
                 </a-form-model-item>
                 <a-form-model-item :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol" label="鍗忓姪缁翠慨浜�">
                   <a-input v-model="model.assistantRepairman"
-                           :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='REPAIRMAN_SIGNATURE')"
+                           :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='REPAIRMAN_SIGNATURE')"
                            placeholder="璇疯緭鍏ュ崗鍔╃淮淇汉"/>
                 </a-form-model-item>
               </a-tab-pane>
@@ -227,13 +239,11 @@
   import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
   import { JVXETypes } from '@comp/jeecg/JVxeTable'
   import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect'
-  import ATextarea from 'ant-design-vue/es/input/TextArea'
 
   export default {
     name: 'ThirdMaintenanceApprovalModal',
     mixins: [JVxeTableModelMixin],
     components: {
-      ATextarea,
       MaintenanceEquipmentSelect
     },
     props: {
@@ -280,16 +290,18 @@
         },
         url: {
           queryById: '/eam/thirdMaintenanceOrder/queryById',
-          detail: '/eam/thirdMaintenanceOrderDetail/queryList',
+          maintenanceDetail: '/eam/thirdMaintenanceOrderDetail/queryList',
+          sparePartsDetail: '/eam/eamThirdMaintenanceSpare/queryList',
           approval: '/eam/thirdMaintenanceOrder/approval',
           diagramView: '/assign/flow/diagramView'
         },
         disableSubmit: false,
         selectedRowKeys: [],
         detail: {
-          dataSource: [],
-          columns: [],
-          defaultColumns: [
+          maintenanceDetailList: [],
+          sparePartsDetailList: [],
+          maintenanceDetailColumns: [],
+          defaultMaintenanceDetailColumns: [
             {
               title: 'ID',
               key: 'id',
@@ -350,7 +362,51 @@
                 { handler: this.maintenanceExceptionDescriptionValidator }
               ]
             }
-          ]
+          ],
+          sparePartsDetailColumns: [
+            {
+              title: '澶囦欢搴忓彿',
+              key: 'spareCode',
+              type: JVXETypes.inputNumber,
+              placeholder: '璇疯緭鍏�${title}',
+              width: 150,
+              align: 'center',
+              validateRules: [
+                { required: true, message: '璇疯緭鍏�${title}' },
+                { unique: true, message: '${title}涓嶈兘閲嶅' }
+              ]
+            },
+            {
+              title: '澶囦欢鍚嶇О',
+              key: 'spareName',
+              type: JVXETypes.input,
+              placeholder: '璇疯緭鍏�${title}',
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            },
+            {
+              title: '澶囦欢鍨嬪彿',
+              key: ' spareModel',
+              type: JVXETypes.input,
+              placeholder: '璇疯緭鍏�${title}',
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            },
+            {
+              title: '浣跨敤鏁伴噺',
+              key: 'spareQuantity',
+              type: JVXETypes.inputNumber,
+              placeholder: '璇疯緭鍏�${title}',
+              align: 'center',
+              validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+            }
+          ],
+          toolbarConfig: {
+            // prefix 鍓嶇紑锛泂uffix 鍚庣紑
+            slot: ['prefix', 'suffix'],
+            // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
+            btn: ['add', 'remove', 'clearSelection']
+          }
         }
       }
     },
@@ -384,7 +440,7 @@
        */
       async handleApprove(record) {
         this.model = {}
-        this.detail.dataSource = []
+        this.detail.maintenanceDetailList = this.detail.sparePartsDetailList = []
         this.getBasicInformationByApi(record)
         this.getFlowChartImageByApi(record)
       },
@@ -395,7 +451,7 @@
        */
       handleDetail(record) {
         this.spinning = true
-        this.detail.dataSource = []
+        this.detail.maintenanceDetailList = this.detail.sparePartsDetailList = []
         this.model = Object.assign({
           operatorSignatureResult: '1',
           repairmanSignatureResult: '1',
@@ -403,7 +459,8 @@
           inspectorSignatureResult: '1'
         }, record)
         this.handleDynamicColumns()
-        this.loadDetail(record.id)
+        this.loadMaintenanceDetail(record.id)
+        this.loadSparePartsDetail(record.id)
       },
 
       /**
@@ -436,7 +493,8 @@
             }
           })
           .finally(() => {
-            this.loadDetail(record.dataId)
+            this.loadMaintenanceDetail(record.dataId)
+            this.loadSparePartsDetail(record.dataId)
           })
 
       },
@@ -445,12 +503,12 @@
        * 鑾峰彇淇濆吇鏄庣粏
        * @param orderId 宸ュ崟鍙�
        */
-      loadDetail(orderId) {
-        getAction(this.url.detail, { orderId })
+      loadMaintenanceDetail(orderId) {
+        getAction(this.url.maintenanceDetail, { orderId })
           .then(res => {
             if (res.success) {
-              if (this.model.maintenanceStatus && this.model.maintenanceStatus == 'UNDER_SECOND_ACCEPTANCE') {
-                this.detail.dataSource = res.result.map(item => {
+              if (this.model.maintenanceStatus && this.model.maintenanceStatus === 'UNDER_SECOND_ACCEPTANCE') {
+                this.detail.maintenanceDetailList = res.result.map(item => {
                   return {
                     ...item,
                     secondInspectResult: '1'
@@ -458,11 +516,24 @@
                 })
                 return
               }
-              this.detail.dataSource = res.result
+              this.detail.maintenanceDetailList = res.result
             }
           })
           .finally(() => {
             this.spinning = false
+          })
+      },
+
+      /**
+       * 鑾峰彇澶囦欢浣跨敤鏄庣粏
+       * @param orderId 宸ュ崟鍙�
+       */
+      loadSparePartsDetail(orderId) {
+        getAction(this.url.sparePartsDetail, { orderId })
+          .then(res => {
+            if (res.success) {
+              this.detail.sparePartsDetailList = res.result
+            }
           })
       },
 
@@ -492,27 +563,42 @@
       async handleOk() {
         const that = this
 
-        if (this.model.maintenanceStatus == 'UNDER_MAINTENANCE' || this.model.maintenanceStatus == 'UNDER_FIRST_ACCEPTANCE' || this.model.maintenanceStatus == 'UNDER_SECOND_ACCEPTANCE') {
-          let errMap = await that.$refs.editableDetailTable.validateTable()
-          if (this.activeTabKey != '1') {
+        if (this.model.maintenanceStatus === 'UNDER_MAINTENANCE' || this.model.maintenanceStatus === 'UNDER_FIRST_ACCEPTANCE' || this.model.maintenanceStatus === 'UNDER_SECOND_ACCEPTANCE') {
+          let errMap = await that.$refs.editableDetailTable1.validateTable()
+          if (this.activeTabKey !== '1' && errMap) {
+            that.$refs.editableDetailTable1.clearValidate()
             this.activeTabKey = '1'
-            if (errMap) {
-              that.$refs.editableDetailTable.clearValidate()
-              that.$notification.warning({
-                message: '娑堟伅',
-                description: '淇濆吇鎴栭獙鏀朵笉鑳戒负绌�'
-              })
-              return
-            }
+            that.$notification.warning({
+              message: '娑堟伅',
+              description: '淇濆吇鎴栭獙鏀朵笉鑳戒负绌�'
+            })
+            return
           }
           if (errMap) return
         }
+
+        if (this.$refs.editableDetailTable2 && this.model.maintenanceStatus === 'UNDER_MAINTENANCE') {
+          const errMap = await that.$refs.editableDetailTable2.validateTable()
+          if (this.activeTabKey !== '2' && errMap) {
+            this.activeTabKey = '2'
+            that.$refs.editableDetailTable2.clearValidate()
+            this.activeTabKey = '2'
+            that.$notification.warning({
+              message: '娑堟伅',
+              description: '澶囦欢浣跨敤鏄庣粏璁板綍瀛楁闇�濉啓'
+            })
+            return
+          }
+          if (errMap) return
+        }
+
 
         // 瑙﹀彂琛ㄥ崟楠岃瘉
         this.$refs.form.validate(valid => {
           if (valid) {
             that.confirmLoading = that.spinning = true
-            that.model.tableDetailList = that.$refs.editableDetailTable.getTableData()
+            that.model.tableDetailList = that.$refs.editableDetailTable1.getTableData()
+            if (that.$refs.editableDetailTable2) that.model.tableSpareList = that.$refs.editableDetailTable2.getTableData()
 
             httpAction(that.url.approval, that.model, 'put')
               .then((res) => {
@@ -591,7 +677,7 @@
             }
           ]
         }
-        this.detail.columns = [...this.detail.defaultColumns, ...columns]
+        this.detail.maintenanceDetailColumns = [...this.detail.defaultMaintenanceDetailColumns, ...columns]
       },
 
       autocompleteForm(selectObj) {
@@ -609,33 +695,33 @@
        */
       handleResultSelectChange(value, record, key) {
         if (record[key]) delete record[key]
-        this.$refs.editableDetailTable.validateTable()
+        this.$refs.editableDetailTable1.validateTable()
       },
 
       // 鎵归噺閫夋嫨淇濆吇缁撴灉姝e父
       handleSelectAllMaintenanceResult() {
         this.selectedRowKeys.forEach(key => {
-          const dataItem = this.detail.dataSource.find(item => item.id === key)
+          const dataItem = this.detail.maintenanceDetailList.find(item => item.id === key)
           if (dataItem && dataItem.maintenanceResult !== 'NORMAL') {
             delete dataItem.exceptionDescription
             dataItem.maintenanceResult = 'NORMAL'
           }
         })
-        this.$refs.editableDetailTable.clearCheckboxRow()
+        this.$refs.editableDetailTable1.clearCheckboxRow()
         this.selectedRowKeys = []
       },
 
       // 鎵归噺閫夋嫨绗竴娆¢獙鏀剁粨鏋滈�氳繃
       handleSelectAllFirstAcceptanceResult() {
         this.selectedRowKeys.forEach(key => {
-          const dataItem = this.detail.dataSource.find(item => item.id === key)
+          const dataItem = this.detail.maintenanceDetailList.find(item => item.id === key)
           if (dataItem && dataItem.firstInspectResult !== '1') {
             delete dataItem.firstInspectException
             dataItem.firstInspectResult = '1'
           }
         })
-        this.$refs.editableDetailTable.clearCheckboxRow()
-        this.$refs.editableDetailTable.clearValidate()
+        this.$refs.editableDetailTable1.clearCheckboxRow()
+        this.$refs.editableDetailTable1.clearValidate()
         this.selectedRowKeys = []
       },
 
@@ -649,7 +735,7 @@
 
       // 淇濆吇鍓嶆妧鏈姸鎬佸崟閫夊彂鐢熸敼鍙樻椂瑙﹀彂
       handleCheckRadioChange() {
-        if (this.model.fullyFunctional == '1' && this.model.runningNormally == '1') this.model.problemDescription = ''
+        if (this.model.fullyFunctional === '1' && this.model.runningNormally === '1') this.model.problemDescription = ''
       },
 
       /**
@@ -706,6 +792,15 @@
         }
       },
 
+      /**
+       *  鏍囩鏍忓垏鎹㈡椂瑙﹀彂
+       * @param tabKey 鍒囨崲鍚庣殑tabKey
+       */
+      handleTabChange(tabKey) {
+        if (this.activeTabKey !== '3') this.$refs['editableDetailTable' + this.activeTabKey].clearValidate()
+        this.activeTabKey = tabKey
+      },
+
       handleCancel() {
         this.close()
       },
diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue
index 8761b63..dae612f 100644
--- a/src/views/system/modules/UserModal.vue
+++ b/src/views/system/modules/UserModal.vue
@@ -82,10 +82,6 @@
           <a-input-search :readOnly="true" v-model="model.eamEquipmentIds" @search="eamDeviceSearch" enter-button placeholder="璇烽�夋嫨EAM璁惧" :disabled="!model.selectedBaseFactory"/>
         </a-form-model-item>
 
-<!--        <a-form-model-item label="缁翠慨閮ㄩ棬/鐝粍鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!repairDepartDisabled">-->
-<!--          <j-select-repair-depart v-model="model.selectedRepairDeparts" :multi="true" @back="backRepairDepartInfo" :backRepairDepart="true" :treeRepairDepartOpera="true"/>-->
-<!--        </a-form-model-item>-->
-
         <a-form-model-item label="璐熻矗閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="departIdShow==true">
           <j-multi-select-tag :disabled="disableSubmit" v-model="model.departIds" :options="nextDepartOptions" placeholder="璇烽�夋嫨璐熻矗閮ㄩ棬"/>
         </a-form-model-item>
@@ -200,7 +196,6 @@
         isDepartType: '',
         model: {
           selectedProduction: '',
-          // selectedRepairDeparts: '',
           selectedBaseFactory:'',
         }
       }
@@ -287,7 +282,6 @@
           selecteddeparts: '',
           selectedProduction: '',
           selectedBaseFactory:'',
-          // selectedRepairDeparts: ''
         })
       },
       edit(record) {
@@ -309,7 +303,6 @@
           that.getUserRoles(record.id)
           that.getUserDeparts(record.id)
           that.getUserProductions(record.id)
-          that.getUserRepairDeparts(record.id)
           this.getUserBaseFactorys(record.id)
         }
       },
@@ -405,27 +398,7 @@
           }
         })
       },
-      // getUserRepairDeparts(userid) {
-      //   let that = this
-      //   // 鑾峰彇缁翠慨閮ㄩ棬/鐝粍鍒嗛厤
-      //   getAction(that.url.userRepairDepartList, { userId: userid }).then((res) => {
-      //     if (res.success) {
-      //       let repairDepartOptions = []
-      //       let selectedRepairDepartKeys = []
-      //       for (let i = 0; i < res.result.length; i++) {
-      //         selectedRepairDepartKeys.push(res.result[i].key)
-      //         //鏂板璐熻矗缁翠慨閮ㄩ棬/鐝粍閫夋嫨涓嬫媺妗�
-      //         repairDepartOptions.push({
-      //           value: res.result[i].key,
-      //           label: res.result[i].title
-      //         })
-      //       }
-      //
-      //       this.$set(this.model, 'selectedRepairDeparts', selectedRepairDepartKeys.join(','))
-      //       that.nextRepairDepartOptions = repairDepartOptions
-      //     }
-      //   })
-      // },
+
       getUserBaseFactorys(userid) {
         let that = this
         // 鑾峰彇EAM涓績/宸ュ尯/宸ユ鍒嗛厤
@@ -468,13 +441,6 @@
           return c
         })
       },
-      // backRepairDepartInfo(info) {
-      //   this.model.repairDepartIds = this.model.selectedRepairDeparts
-      //   this.nextRepairDepartOptions = info.map((item, index, arr) => {
-      //     let c = { label: item.text, value: item.value + '' }
-      //     return c
-      //   })
-      // },
 
       refresh() {
         this.userId = ''

--
Gitblit v1.9.3