From ae9b400eae985f6b6f2e33f66ee1575f72675898 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期六, 09 八月 2025 00:18:41 +0800
Subject: [PATCH] 添加流程节点

---
 src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue | 1023 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 702 insertions(+), 321 deletions(-)

diff --git a/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue b/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue
index 997590b..73f1c4f 100644
--- a/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue
+++ b/src/views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue
@@ -1,172 +1,246 @@
 <template>
-  <j-modal
-    :title="title"
-    :width="1200"
-    :visible="visible"
-    :confirmLoading="confirmLoading"
-    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
-    switchFullscreen
-    @ok="handleOk"
-    @cancel="handleCancel"
-    centered
-    cancelText="鍏抽棴">
-
+  <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading"
+           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" fullscreen @ok="handleOk"
+           @cancel="handleCancel" centered cancelText="鍏抽棴">
     <a-spin :spinning="spinning">
-      <a-form-model ref="form" :model="model" :rules="validatorRules">
-        <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 淇濆吇鍩虹淇℃伅
-        </a-divider>
-        <a-row :gutter="24">
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNum" label="宸ュ崟鍙�">
-              <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栫爜">
-              <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId"
-                                            :maintenanceCategory="maintenanceCategory"
-                                            @autocompleteForm="autocompleteForm"
-                                            disabled></maintenance-equipment-select>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О">
-              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
-        <a-row :gutter="24">
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenanceDate" label="淇濆吇鏃ユ湡">
-              <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD"
-                             disabled
-                             style="width: 100%"/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="operator" label="淇濆吇浜�">
-              <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" disabled
-                                   :dictOptions="maintenanceOperatorOptions"/>
-            </a-form-model-item>
-          </a-col>
-          <a-col :span="8">
-            <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡">
-              <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled/>
-            </a-form-model-item>
-          </a-col>
-        </a-row>
-        <a-row :gutter="24">
-          <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞">
-            <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark" disabled/>
-          </a-form-model-item>
-        </a-row>
-        <a-row :gutter="24">
-          <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="淇濆吇鍥剧墖">
-            <lx-upload :returnUrl="false"
-                       :isMultiple="true"
-                       file-type="image"
-                       :disabled="confirmDisable"
-                       :number="3"
-                       v-model="model.imageFilesResult"/>
-          </a-form-model-item>
-        </a-row>
-        <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 淇濆吇椤逛俊鎭�
-        </a-divider>
-        <a-row :gutter="24">
-          <a-tabs v-model="activeTabKey">
-            <a-tab-pane key="1" tab="淇濆吇椤规槑缁�">
-              <j-vxe-table
-                ref="editableDetailTable"
-                :rowNumber="false"
-                :rowSelection="true"
-                :bordered="true"
-                :alwaysEdit="true"
-                :toolbar="false"
-                keep-source
-                :height="300"
-                :loading="detail.loading"
-                :dataSource="detail.dataSource"
-                :columns="detail.columns"
-                @selectRowChange="handleTableSelectRowChange"
-              >
-                <template v-slot:maintenanceResult="props">
-                  <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="eam_inspection_result"
-                                     placeholder="璇烽�夋嫨淇濆吇缁撴灉"
-                                     :disabled="disableSubmit || confirmDisable"
-                                     @change="handleInspectionResultSelectChange($event,props.row)"
-                                     style="width: 100%"/>
-                </template>
+      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <a-row :gutter="24" id="outer-row">
+          <a-col :span="8" class="scroll-col">
+            <a-tabs>
+              <a-tab-pane tab="鍩虹淇℃伅">
+                <a-row>
+                  <a-col :span="12">
+                    <a-form-model-item label="宸ュ崟鍙�">
+                      <a-input v-model="model.orderNum" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="12">
+                    <a-form-model-item label="缁熶竴缂栫爜">
+                      <maintenance-equipment-select v-model="model.equipmentId" maintenanceCategory="SECOND_MAINTENANCE"
+                                                    @autocompleteForm="autocompleteForm" disabled/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
 
-                <template v-slot:exceptionDescription="props">
-                  <a-textarea style="height: 32px" v-model="props.row.exceptionDescription"
-                              :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'"/>
-                </template>
+                <a-row>
+                  <a-col :span="12">
+                    <a-form-model-item label="瑙勮寖鍚嶇О">
+                      <a-input v-model="model.standardName" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="12">
+                    <a-form-model-item label="淇濆吇鏃ユ湡">
+                      <a-input v-model="model.maintenanceDate" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
 
-                <template v-slot:reportFlag="props">
-                  <j-dict-select-tag v-model="props.row.reportFlag"
-                                     :disabled="disableSubmit || confirmDisable || !props.row.maintenanceResult || props.row.maintenanceResult === '1'"
-                                     dictCode="yn"
-                                     style="width: 100%"/>
-                </template>
-              </j-vxe-table>
-            </a-tab-pane>
-            <template v-if="selectShenpiData.procInstId">
-              <a-tab-pane key='2' tab='娴佺▼鑺傜偣'>
-                <a-card :bordered="false">
-                  <a-timeline>
-                    <a-timeline-item v-for="(item,index) in taskData" :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>
+                <a-row>
+                  <a-col :span="12">
+                    <a-form-model-item label="鎿嶄綔宸�">
+                      <a-input v-model="model.operator_dictText" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="12">
+                    <a-form-model-item label="缁翠慨宸�">
+                      <a-input v-model="model.repairman_dictText" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+
+                <a-row>
+                  <a-col :span="12">
+                    <a-form-model-item label="淇濆吇鍛ㄦ湡">
+                      <a-input v-model="model.maintenancePeriod" readOnly/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+
+                <a-row>
+                  <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="澶囨敞">
+                    <a-textarea v-model="model.remark" readOnly/>
+                  </a-form-model-item>
+                </a-row>
+              </a-tab-pane>
+            </a-tabs>
+          </a-col>
+
+          <a-col class="scroll-col"
+                 :span="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'&&model.maintenanceStatus!=='UNDER_MAINTENANCE'?10:16">
+            <a-tabs :active-key="activeTabKey" @change="handleTabChange">
+              <a-tab-pane :key="1" tab="鎿嶄綔宸�"
+                          v-if="(selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey==='operator_task')||
+                          (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')">
+                <j-vxe-table ref="editableDetailTable1" :rowNumber="false" rowSelection bordered
+                             alwaysEdit keep-source
+                             :dataSource="detail.operatorMaintenanceList" :columns="getColumns()"
+                             @selectRowChange="handleTableSelectRowChange($event,'Operator')">
+                  <template v-slot:maintenanceResult="props">
+                    <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="maintenance_result"
+                                       placeholder="璇烽�夋嫨淇濆吇缁撴灉"
+                                       :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')"
+                                       @change="handleInspectionResultSelectChange($event,props.row)"
+                                       style="width: 100%"/>
+                  </template>
+
+                  <template v-slot:exceptionDescription="props">
+                    <a-textarea :rows="1" :autoSize="false" v-model="props.row.exceptionDescription"
+                                :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'璇疯緭鍏ュ紓甯告弿杩�':''"
+                                :disabled="disableSubmit||
+                                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
+                                 !props.row.maintenanceResult ||
+                                  props.row.maintenanceResult === '1'"/>
+                  </template>
+
+                  <template v-slot:reportFlag="props">
+                    <j-dict-select-tag v-model="props.row.reportFlag" dictCode="yn" style="width: 100%"
+                                       :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
+                                       :disabled="true"/>
+                  </template>
+
+                  <!-- 鎿嶄綔 -->
+                  <template v-slot:action="props">
+                    <a
+                      v-if="shouldShowActionColumn"
+                      :class="{ 'disabled-link': shouldDisableRepairButton(props.row) }"
+                      @click="!shouldDisableRepairButton(props.row) && handleRepairReporting(props.row)">
+                      鎶ヤ慨濉姤
+                    </a>
+                  </template>
+
+                </j-vxe-table>
+              </a-tab-pane>
+
+              <a-tab-pane :key="2" tab="缁翠慨宸�"
+                          v-if="(selectShenpiData.taskDefKey&&selectShenpiData.taskDefKey==='maintenance_task')||
+                          (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')">
+                <j-vxe-table ref="editableDetailTable2" :rowNumber="false" rowSelection bordered
+                             alwaysEdit kee-source
+                             :dataSource="detail.repairerMaintenanceList" :columns="getColumns()"
+                             @selectRowChange="handleTableSelectRowChange($event,'Repairer')">
+                  <template v-slot:maintenanceResult="props">
+                    <j-dict-select-tag v-model="props.row.maintenanceResult" dictCode="maintenance_result"
+                                       placeholder="璇烽�夋嫨淇濆吇缁撴灉"
+                                       :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE')"
+                                       @change="handleInspectionResultSelectChange($event,props.row)"
+                                       style="width: 100%"/>
+                  </template>
+
+                  <template v-slot:exceptionDescription="props">
+                    <a-textarea :rows="1" :autoSize="false" v-model="props.row.exceptionDescription"
+                                :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'璇疯緭鍏ュ紓甯告弿杩�':''"
+                                :disabled="disableSubmit ||
+                                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
+                                !props.row.maintenanceResult ||
+                                 props.row.maintenanceResult === '1'"/>
+                  </template>
+
+                  <template v-slot:reportFlag="props">
+                    <j-dict-select-tag v-model="props.row.reportFlag"
+                                       :placeholder="props.row.maintenanceResult&&props.row.maintenanceResult!=='1'?'璇烽�夋嫨寮傚父鏄惁鎶ヤ慨':''"
+                                       dictCode="yn" style="width: 100%"
+                                       :disabled="true"/>
+                  </template>
+
+                  <!-- 鎿嶄綔 -->
+                  <template v-slot:action="props">
+                    <a :class="{ 'disabled-link': shouldDisableRepairButton(props.row) }"
+                       @click="!shouldDisableRepairButton(props.row) && handleRepairReporting(props.row)">
+                      鎶ヤ慨濉姤
+                    </a>
+                  </template>
+
+                </j-vxe-table>
+              </a-tab-pane>
+
+              <template v-if="selectShenpiData.processDefinitionKey">
+                <a-tab-pane key='3' tab='娴佺▼鍥�'>
+                  <img :src="imageSrc" alt="Fetched Image"/>
+                </a-tab-pane>
+              </template>
+
+              <a-tab-pane key='4' tab='娴佽浆鑺傜偣'>
+                <a-card>
+                  <a-timeline style="padding:0 1% 0 12%" >
+                    <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1">
+                      <div class="bottom">
+                        <p>澶勭悊浜猴細{{item.assignee_dictText}}</p>
+                        <p v-if="index1 !==0">澶勭悊鏃堕暱锛歿{item.duration}}</p>
+                        <p v-if="item.name !== '鎻愪氦鐢宠'">澶勭悊绫诲瀷锛歿{item.sequenceFlowName}}</p>
+                        <p v-if="item.description != null">澶勭悊鎰忚锛歿{item.description}}</p>
+                        <div class="left_qiu"><span>{{item.taskName}}</span></div>
                       </div>
                     </a-timeline-item>
                   </a-timeline>
                 </a-card>
               </a-tab-pane>
-              <a-tab-pane key='3' tab='娴佺▼鍥�'>
-                <img :src="imageSrc" alt="Fetched Image"/>
+
+              <a-button
+                v-if="activeTabKey!=='3'"
+                :disabled="disableSubmit ||
+                (model.maintenanceStatus&&model.maintenanceStatus!=='UNDER_MAINTENANCE') ||
+                (activeTabKey==='1'&&selectedOperatorMaintenanceRowKeys.length === 0)||
+                (activeTabKey==='2'&&selectedRepairerMaintenanceRowKeys.length === 0)"
+                slot="tabBarExtraContent"
+                type="primary" @click="handleSelectAllInspectionResult">鎵归噺淇濆吇姝e父
+              </a-button>
+            </a-tabs>
+          </a-col>
+
+          <!--鍙充晶瀹℃壒鍒�-->
+          <a-col :span="6" class="scroll-col"
+                 v-if="model.maintenanceStatus&&model.maintenanceStatus!=='WAIT_MAINTENANCE'&&model.maintenanceStatus!=='UNDER_MAINTENANCE'">
+            <a-tabs v-if="displayAdminConfirmFlag">
+              <a-tab-pane tab="绠$悊鍛樼‘璁�">
+                <a-row>
+                  <a-col :span="24">
+                    <a-form-model-item prop="manageUserResult" label="纭绫诲瀷">
+                      <j-dict-select-tag type='radio' v-model='model.manageUserResult' dictCode='approve_reject'
+                                         placeholder="璇烽�夋嫨纭绫诲瀷"
+                                         :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item label="闂鎻忚堪">
+                      <a-textarea placeholder="璇锋弿杩伴棶棰�" v-model='model.problemDescription'
+                                  :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item label="澶勭悊鎺柦鎻忚堪">
+                      <a-textarea placeholder="璇锋弿杩板鐞嗘帾鏂�" v-model="model.dealDescription"
+                                  :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_ADMIN_CONFIRM'"/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
               </a-tab-pane>
-            </template>
-            <a-button v-if="!disableSubmit &&!confirmDisable&& selectedRowKeys.length > 0" slot="tabBarExtraContent"
-                      type="primary" @click="handleSelectAllInspectionResult">淇濆吇姝e父
-            </a-button>
-          </a-tabs>
+            </a-tabs>
+
+            <a-tabs v-if="displayInspectorConfirmFlag">
+              <a-tab-pane tab="妫�鏌ヤ汉纭">
+                <a-row>
+                  <a-col :span="24">
+                    <a-form-model-item prop="inspectorResult" label="纭绫诲瀷">
+                      <j-dict-select-tag type='radio' v-model='model.inspectorResult' dictCode='approve_reject'
+                                         placeholder="璇烽�夋嫨纭绫诲瀷"
+                                         :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_INSPECTOR_CONFIRM'"/>
+                    </a-form-model-item>
+                  </a-col>
+                  <a-col :span="24">
+                    <a-form-model-item label="纭鎰忚">
+                      <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.inspectConfirmComment"
+                                  :disabled="disableSubmit || model.maintenanceStatus!=='WAIT_INSPECTOR_CONFIRM'"/>
+                    </a-form-model-item>
+                  </a-col>
+                </a-row>
+              </a-tab-pane>
+            </a-tabs>
+          </a-col>
         </a-row>
-        <div v-if="confirmDisable">
-          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 绠$悊鍛樼‘璁や俊鎭�
-          </a-divider>
-          <a-row :gutter="24">
-            <a-col :span="12">
-              <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmDealType" label="纭绫诲瀷">
-                <j-dict-select-tag type='radio' v-model='model.confirmDealType' dictCode='approved_rejected'
-                                   placeholder="璇烽�夋嫨澶勭悊绫诲瀷" :disabled="disableSubmit || leaderConfirmDisable"/>
-              </a-form-model-item>
-            </a-col>
-            <a-col :span="12">
-              <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmComment" label="纭鎰忚">
-                <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.confirmComment"
-                            :disabled="disableSubmit || leaderConfirmDisable"/>
-              </a-form-model-item>
-            </a-col>
-          </a-row>
-        </div>
-        <div v-if="leaderConfirmDisable">
-          <a-divider orientation="center" style="font-size: large;font-style: italic;color: #66aeed;"> 棰嗗纭淇℃伅
-          </a-divider>
-          <a-row :gutter="24">
-            <a-col :span="24">
-              <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="leaderConfirmComment"
-                                 label="棰嗗鎰忚">
-                <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.leaderConfirmComment"
-                            :disabled="disableSubmit || completionDisable"/>
-              </a-form-model-item>
-            </a-col>
-          </a-row>
-        </div>
       </a-form-model>
+
+      <eamReportRepair-modal ref="modalForm"  @ok="handleRepairComplete" @close="handleRepairClose"/>
+
     </a-spin>
   </j-modal>
 </template>
@@ -176,11 +250,13 @@
   import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
   import { JVXETypes } from '@comp/jeecg/JVxeTable'
   import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect'
+  import EamReportRepairModal from "@views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue";
 
   export default {
     name: 'SecondMaintenanceApprovalModal',
     mixins: [JVxeTableModelMixin],
     components: {
+      EamReportRepairModal,
       MaintenanceEquipmentSelect
     },
     props: {
@@ -192,15 +268,8 @@
       return {
         title: '鎿嶄綔',
         visible: false,
-        //鐘舵�佹帶鍒�
-        //淇濆吇涓� 涓嶅彲缂栬緫
-        // confirmDisable: false,
-        // initialAcceptanceDisable: false,
-        // finalAcceptanceDisable: false,
-        editable: false,
         model: {},
-        maintenanceCategory: 'SECOND_MAINTENANCE',
-        maintenanceOperatorOptions: [],
+        currentRepairRow: null,
         labelCol: {
           xs: { span: 24 },
           sm: { span: 6 }
@@ -211,43 +280,34 @@
         },
         labelColLong: {
           xs: { span: 24 },
-          sm: { span: 2 }
+          sm: { span: 3 }
         },
         wrapperColLong: {
           xs: { span: 24 },
-          sm: { span: 21 }
+          sm: { span: 20 }
         },
         confirmLoading: false,
         spinning: false,
         imageSrc: null,
-        activeTabKey: '1',
+        activeTabKey: 1,
         validatorRules: {
-          confirmDealType: [
-            { required: true, message: '璇烽�夋嫨閫氳繃鎴栭┏鍥�!' }
-          ],
-          confirmComment: [
-            { required: true, message: '璇疯緭鍏ョ‘璁ゆ剰瑙�!' }
-          ],
-          leaderConfirmComment: [
-            { required: true, message: '璇疯緭鍏ュ垵楠屾敹鎰忚!' }
-          ],
+          manageUserResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }],
+          inspectorResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }]
         },
         url: {
-          queryById: '/eam/secondMaintenanceOrder/queryById',
+          queryById: '/eam/secondMaintenanceOrder/list',
           detail: '/eam/secondMaintenanceOrderDetail/queryList',
           approval: '/eam/secondMaintenanceOrder/approval',
-          userSelect: '/eam/user_select/list',
-          queryHisTaskList: '/assign/flow/queryHisTaskList',
-          diagramView: '/assign/flow/diagramView'
+          diagramView: '/assign/flow/diagramView',
+          queryHisTaskList:'/assign/flow/queryHisTaskList',
         },
         disableSubmit: false,
-        taskData: [],
-        isDisplayBmp: false,
-        showBmpButtonLoading: false,
-        selectedRowKeys: [],
+        selectedOperatorMaintenanceRowKeys: [],
+        selectedRepairerMaintenanceRowKeys: [],
+        hitaskDataSource:[],
         detail: {
-          loading: false,
-          dataSource: [],
+          operatorMaintenanceList: [],
+          repairerMaintenanceList: [],
           columns: [
             {
               title: 'ID',
@@ -263,39 +323,29 @@
               title: '搴忓彿',
               key: 'itemCode',
               type: JVXETypes.normal,
-              width: '5%',
+              width: 60,
               align: 'center'
             },
             {
               title: '淇濆吇椤�',
               key: 'itemName',
               type: JVXETypes.normal,
-              width: '10%',
-              align: 'center'
-            },
-            {
-              title: '淇濆吇瑕佹眰',
-              key: 'itemDemand',
-              type: JVXETypes.normal,
-              width: '20%',
               align: 'center'
             },
             {
               title: '淇濆吇缁撴灉',
               key: 'maintenanceResult',
               type: JVXETypes.slot,
-              width: '10%',
               align: 'center',
               slotName: 'maintenanceResult',
               validateRules: [
-                { required: true, message: '淇濆吇缁撴灉涓嶈兘涓虹┖锛�' }
+                { required: true, message: '璇烽�夋嫨${title}' }
               ]
             },
             {
               title: '寮傚父鎻忚堪',
               key: 'exceptionDescription',
               type: JVXETypes.slot,
-              width: '20%',
               align: 'center',
               slotName: 'exceptionDescription',
               validateRules: [
@@ -306,121 +356,264 @@
               title: '鏄惁鎶ヤ慨',
               key: 'reportFlag',
               type: JVXETypes.slot,
-              width: '10%',
               align: 'center',
               slotName: 'reportFlag',
               validateRules: [
                 { handler: this.customValidator }
               ]
+            },
+            {
+              title: '鎿嶄綔',
+              align: 'center',
+              type: JVXETypes.slot,
+              width: 150,
+              slotName: 'action',
+              fixed: 'right'
             }
-          ],
-          toolbarConfig: {
-            // prefix 鍓嶇紑锛泂uffix 鍚庣紑
-            slot: ['prefix', 'suffix'],
-            // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
-            btn: ['clearSelection']
-          }
+          ]
         }
       }
     },
-    created() {
-    },
     computed: {
-      confirmDisable: function() {
-        return ['WAIT_CONFIRM', 'WAIT_LEADER_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus)
+      displayAdminConfirmFlag() {
+        return ['WAIT_ADMIN_CONFIRM', 'WAIT_INSPECTOR_CONFIRM', 'COMPLETE', 'REJECTED'].includes(this.model.maintenanceStatus)
       },
-      leaderConfirmDisable: function() {
-        return ['WAIT_LEADER_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus)
+      displayInspectorConfirmFlag() {
+        return ['WAIT_INSPECTOR_CONFIRM', 'COMPLETE', 'REJECTED'].includes(this.model.maintenanceStatus) && this.model.manageUserResult === '1'
       },
-      completionDisable: function() {
-        return ['COMPLETE', 'ABOLISH'].includes(this.model.maintenanceStatus)
+      // 鎿嶄綔鍒椾粎鍦ㄤ繚鍏讳腑鐘舵�佷笅鏄剧ず
+      shouldShowActionColumn() {
+        return this.model.maintenanceStatus === 'UNDER_MAINTENANCE';
       }
     },
     methods: {
-      async handleDetail(item) {
-        this.initParams()
-        this.model = {}
-        if (item.procInstId) {
-          const { processDefinitionId, processInstanceId, processDefinitionKey, procInstId } = item
 
-          let taskDataList = await getAction(this.url.queryHisTaskList, { procInstId })
-          this.taskData = [...taskDataList.result]
+      // 娣诲姞鑾峰彇鍒楃殑鏂规硶
+      getColumns() {
+        const columns = [
+          {
+            title: 'ID',
+            key: 'id',
+            type: JVXETypes.hidden
+          },
+          {
+            title: 'orderId',
+            key: 'orderId',
+            type: JVXETypes.hidden
+          },
+          {
+            title: '搴忓彿',
+            key: 'itemCode',
+            type: JVXETypes.normal,
+            width: 60,
+            align: 'center'
+          },
+          {
+            title: '淇濆吇椤�',
+            key: 'itemName',
+            type: JVXETypes.normal,
+            align: 'center'
+          },
+          {
+            title: '淇濆吇缁撴灉',
+            key: 'maintenanceResult',
+            type: JVXETypes.slot,
+            align: 'center',
+            slotName: 'maintenanceResult',
+            validateRules: [
+              { required: true, message: '璇烽�夋嫨${title}' }
+            ]
+          },
+          {
+            title: '寮傚父鎻忚堪',
+            key: 'exceptionDescription',
+            type: JVXETypes.slot,
+            align: 'center',
+            slotName: 'exceptionDescription',
+            validateRules: [
+              { handler: this.customValidator }
+            ]
+          },
+          {
+            title: '鏄惁鎶ヤ慨',
+            key: 'reportFlag',
+            type: JVXETypes.slot,
+            align: 'center',
+            slotName: 'reportFlag',
+            validateRules: [
+              { handler: this.customValidator }
+            ]
+          }
+        ];
 
-          downFile(this.url.diagramView, {
-            processDefinitionId,
-            processInstanceId,
-            TaskDefinitionKey: processDefinitionKey
-          }, 'get')
-            .then((res => {
-              const urlObject = window.URL.createObjectURL(new Blob([res]))
-              this.imageSrc = urlObject
-            }))
-            .catch(err => {
-              this.$notification.error({
-                message: '娑堟伅',
-                description: res.message
-              })
-            })
+        // 浠呭湪淇濆吇涓姸鎬佷笅娣诲姞鎿嶄綔鍒�
+        if (this.shouldShowActionColumn) {
+          columns.push({
+            title: '鎿嶄綔',
+            align: 'center',
+            type: JVXETypes.slot,
+            width: 150,
+            slotName: 'action',
+            fixed: 'right'
+          });
         }
-        let res = await getAction(this.url.queryById, { id: item.dataId })
-        this.model = Object.assign({}, res.result)
-        if (this.model.imageFiles) {
-          let obj = JSON.parse(this.model.imageFiles)
-          this.model.imageFilesResult = [...obj]
-        }
-        this.model.dataId = item.dataId
-        this.model.taskId = item.id
-        this.model.userId = item.assignee
-        this.model.instanceId = item.procInstId
-        this.model.values = item.variables
-        await this.loadDetail(item.dataId)
+
+        return columns;
       },
 
-      recordDetail(record) {
-        console.log('record', record)
-        this.initParams()
+      /**
+       * 涓婚〉闈㈢偣鍑绘墽琛屽鎵规椂瑙﹀彂
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      async handleApprove(record) {
+        this.spinning = true
+        this.model = {}
+        this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = []
+        this.handleTabToFirstTable()
+        this.getBasicInformationByApi(record)
+        this.getFlowChartImageByApi(record)
+        this.getFlowTaskListByApi(record)
+        this.loadDetail(record.dataId)
+      },
+
+      /**
+       * 涓婚〉闈㈢偣鍑昏鎯呮椂瑙﹀彂
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      handleDetail(record) {
+        this.spinning = true
+        this.activeTabKey = 1
+        this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = []
         this.model = Object.assign({}, record)
-        if (this.model.imageFiles) {
-          let obj = JSON.parse(this.model.imageFiles)
-          this.model.imageFilesResult = [...obj]
-        }
+        this.getFlowTaskListByApi(record)
         this.loadDetail(record.id)
       },
 
-      initParams() {
-        this.detail.dataSource = []
-        this.visible = true
-        this.activeTabKey = '1'
-        this.spinning = true
+      /**
+       * 鑾峰彇鍩虹淇℃伅
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      getBasicInformationByApi(record) {
+        const that = this
+        getAction(this.url.queryById, { id: record.dataId })
+          .then(res => {
+            if (res.success) {
+              that.model = Object.assign({}, res.result.records[0])
+              that.model.dataId = record.dataId
+              that.model.taskId = record.id
+              that.model.userId = record.assignee
+              that.model.instanceId = record.procInstId
+            }
+            else {
+              that.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+      },
+
+      /**
+       * 鑾峰彇娴佽浆鑺傜偣
+       * @param record
+       */
+      getFlowTaskListByApi(record) {
+        let parmhis={
+          'procInstId': record.procInstId
+        }
+        getAction(this.url.queryHisTaskList,parmhis).then(res=>{
+          this.hitaskDataSource=res.result
+        }).finally(
+          this.visible = true,
+          console.log('this.approveData---->', this.approveData)
+        )
+      },
+
+      /**
+       * 鑾峰彇娴佺▼鍥�
+       * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
+       */
+      getFlowChartImageByApi(record) {
+        const { processDefinitionId, processInstanceId, processDefinitionKey } = record
+
+        downFile(this.url.diagramView, {
+          processDefinitionId,
+          processInstanceId,
+          TaskDefinitionKey: processDefinitionKey
+        }, 'get')
+          .then((res => {
+            this.imageSrc = window.URL.createObjectURL(new Blob([res]))
+          }))
+          .catch(err => {
+            this.$notification.error({
+              message: '娑堟伅',
+              description: err.message
+            })
+          })
       },
 
       async handleOk() {
         const that = this
-        let errMap = await that.$refs.editableDetailTable.validateTable()
-        if (errMap) {
-          this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�')
-          return
+
+        let errMap
+        if (that.$refs['editableDetailTable' + that.activeTabKey]) {
+          // 鏍¢獙褰撳墠tab琛ㄦ牸
+          errMap = await that.$refs['editableDetailTable' + that.activeTabKey].validateTable()
+        } else {
+          // 褰撳墠tab涓嶆槸琛ㄦ牸鏃跺垯鏍¢獙鏈夎〃鏍肩殑
+          for (let index = 1; index <= 2; index++) {
+            if (that.$refs['editableDetailTable' + index]) {
+              errMap = await that.$refs['editableDetailTable' + index].validateTable()
+              if (errMap) {
+                that.activeTabKey = index
+                console.log('that.activeTabKey-----------', that.activeTabKey)
+                that.$refs['editableDetailTable' + that.activeTabKey].clearValidate()
+                that.$notification.warning({
+                  message: '娑堟伅',
+                  description: '淇濆吇涓嶈兘涓虹┖'
+                })
+                break
+              }
+            }
+          }
         }
+        if (errMap) return
+
         // 瑙﹀彂琛ㄥ崟楠岃瘉
         this.$refs.form.validate(valid => {
           if (valid) {
             that.confirmLoading = that.spinning = true
-            let tableData = that.$refs.editableDetailTable.getTableData()
-            that.model.tableDetailList = [...tableData]
-            let httpurl = this.url.approval
-            let method = 'put'
 
-            httpAction(httpurl, this.model, method).then((res) => {
-              if (res.success) {
-                that.$message.success(res.message)
-                that.$emit('searchReset')
-                that.close()
-              } else {
-                that.$message.warning(res.message)
+            // 浠呭湪淇濆吇涓姸鎬佷紶閫掕〃鏍煎垪琛�
+            if (this.model.maintenanceStatus === 'UNDER_MAINTENANCE') {
+              for (let index = 1; index <= 2; index++) {
+                if (that.$refs['editableDetailTable' + index]) {
+                  this.model.tableDetailList = that.$refs['editableDetailTable' + index].getTableData()
+                  break
+                }
               }
-            }).finally(() => {
-              that.confirmLoading = that.spinning = false
-            })
+            }
+            console.log('model', this.model.tableDetailList)
+
+            httpAction(this.url.approval, this.model, 'put')
+              .then((res) => {
+                if (res.success) {
+                  that.$notification.success({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                  that.$emit('modalFormOk')
+                  that.close()
+                } else {
+                  that.$notification.warning({
+                    message: '娑堟伅',
+                    description: res.message
+                  })
+                }
+              })
+              .finally(() => {
+                that.confirmLoading = that.spinning = false
+              })
           } else {
             return false
           }
@@ -429,46 +622,39 @@
 
       autocompleteForm(selectObj) {
         this.$set(this.model, 'standardName', selectObj.standardName)
-        this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod)
         this.$set(this.model, 'standardId', selectObj.id)
+        this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod)
         this.$set(this.model, 'equipmentId', selectObj.equipmentId)
-        // console.log('model', this.model)
-        if (!this.model.id) {
-          this.loadStandardDetail(selectObj.id)
-        }
-        this.loadMaintenanceOperatorList(this.model.equipmentId)
+        this.spinning = false
       },
 
-      //鏍囧噯閫夋嫨鍙樺寲
-      loadDetail(orderId) {
-        if (orderId) {
-          getAction(this.url.detail, { orderId: orderId })
-            .then(res => {
-              if (res.success) {
-                this.detail.dataSource = [...res.result]
-              }
-            })
-            .finally(() => {
-              this.spinning = false
-            })
-        }
+      /**
+       * 妫�鏌ユ槑缁嗘爣绛惧垏鎹㈡椂瑙﹀彂
+       * @param tabKey 鍒囨崲鍚庣殑tabKey
+       */
+      handleTabChange(tabKey) {
+        if (this.$refs['editableDetailTable' + this.activeTabKey]) this.$refs['editableDetailTable' + this.activeTabKey].clearValidate()
+        this.activeTabKey = tabKey
       },
 
-      loadMaintenanceOperatorList(equipmentId) {
-        this.maintenanceOperatorOptions = []
-        let params = { positionCode: 'PCR0001' }
-        if (equipmentId) {
-          params.equipmentId = equipmentId
-        }
-        getAction(this.url.userSelect, params).then(res => {
-          if (res.success) {
-            this.maintenanceOperatorOptions = res.result.map(item => ({
-              key: item.id,
-              value: item.username,
-              text: item.realname
-            }))
-          }
+      // 鍒囨崲tab鑷崇涓�涓〃鏍�
+      handleTabToFirstTable() {
+        this.$nextTick(() => {
+          console.log('taskDefKey', this.selectShenpiData.taskDefKey)
+          if ((this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey === 'operator_task') || !this.selectShenpiData.taskDefKey || (this.model.maintenanceStatus !== 'UNDER_MAINTENANCE')) this.activeTabKey = 1
+          else if (this.selectShenpiData.taskDefKey && this.selectShenpiData.taskDefKey === 'maintenance_task') this.activeTabKey = 2
         })
+      },
+
+      //瑙勮寖閫夋嫨鍙樺寲
+      loadDetail(orderId) {
+        getAction(this.url.detail, { orderId })
+          .then(res => {
+            if (res.success) {
+              this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory === 'OPERATOR_MAINTENANCE')
+              this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory === 'REPAIRER_MAINTENANCE')
+            }
+          })
       },
 
       handleInspectionResultSelectChange(value, record) {
@@ -478,31 +664,49 @@
 
       // 鎵归噺閫夋嫨鎵�鏈夌偣妫�缁撴灉
       handleSelectAllInspectionResult() {
-        this.selectedRowKeys.forEach(key => {
-          const dataItem = this.detail.dataSource.find(item => item.id === key)
+        let selectedRowKeys, prefix
+        if (this.activeTabKey === 1) {
+          selectedRowKeys = this.selectedOperatorMaintenanceRowKeys
+          prefix = 'operator'
+        }
+        else if (this.activeTabKey === 2) {
+          selectedRowKeys = this.selectedRepairerMaintenanceRowKeys
+          prefix = 'repairer'
+        }
+        else selectedRowKeys = []
+        if (selectedRowKeys.length === 0) return
+
+        selectedRowKeys.forEach(key => {
+          const dataItem = this.detail[prefix + 'MaintenanceList'].find(item => item.id === key)
           if (dataItem && dataItem.maintenanceResult !== '1') {
-            console.log('dataItem', dataItem)
             delete dataItem.exceptionDescription
             delete dataItem.reportFlag
             dataItem.maintenanceResult = '1'
           }
         })
-        this.$refs.editableDetailTable.clearCheckboxRow()
-        this.selectedRowKeys = []
+        this.$refs['editableDetailTable' + this.activeTabKey].clearCheckboxRow()
+        this['selected' + prefix.charAt(0).toUpperCase() + prefix.slice(1) + 'MaintenanceRowKeys'] = []
       },
 
       /**
        * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙�
        * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃
+       * @param key 浜屼繚鍖哄垎key
        */
-      handleTableSelectRowChange({ selectedRowIds }) {
-        this.selectedRowKeys = selectedRowIds
+      handleTableSelectRowChange({ selectedRowIds }, key) {
+        this[`selected${key}MaintenanceRowKeys`] = selectedRowIds
       },
 
+      /**
+       * 鑷畾涔夋牎楠�
+       * @param cellValue 杈撳叆鍊�
+       * @param row 琛ㄦ牸琛岃褰�
+       * @param callback 缁撴灉鍥炶皟鍑芥暟
+       */
       customValidator({ cellValue, row }, callback) {
         if (row.maintenanceResult === '2') {
           if (!cellValue) {
-            callback(false, '${title}涓嶈兘涓虹┖锛�') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀�
+            callback(false, '${title}涓嶈兘涓虹┖') // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀�
           } else {
             callback(true) // true = 閫氳繃楠岃瘉
           }
@@ -510,6 +714,42 @@
           callback(true)
         }
       },
+
+      shouldDisableRepairButton(row) {
+        return (
+          this.model.maintenanceStatus !== 'UNDER_MAINTENANCE' ||
+          row.maintenanceResult === '1' ||
+          row.reportFlag === '1'
+        );
+      },
+
+      handleRepairComplete(success) {
+        if (success && this.currentRepairRow) {
+          this.$set(this.currentRepairRow, 'reportFlag', '1');
+          this.$message.success("鎶ヤ慨宸叉垚鍔熸彁浜�");
+        }
+        this.currentRepairRow = null;
+      },
+
+      /**
+       * 寮傚父鎻忚堪濉姤鏁呴殰鎶ヤ慨
+       * @param exceptionDescription
+       */
+      handleRepairReporting(row) {
+        this.currentRepairRow = row; // 瀛樺偍褰撳墠鎿嶄綔琛�
+        let record = {
+          faultDescription: row.exceptionDescription,
+          equipmentId: this.model.equipmentId
+        }
+        this.$refs.modalForm.handleRepair(record)
+      },
+
+      handleRepairClose(success) {
+        if (!success && this.currentRepairRow) {
+          this.currentRepairRow = null; // 娓呴櫎鏈垚鍔熺殑鎿嶄綔
+        }
+      },
+
 
       handleCancel() {
         this.close()
@@ -524,6 +764,147 @@
   }
 </script>
 
-<style lang="less" 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;
+          }
+        }
+      }
+    }
+  }
+  /* 鍏ㄥ眬绂侀�夋牱寮� - 浣滅敤浜庢暣涓〉闈� */
+  html.submitting,
+  html.submitting body {
+    pointer-events: none !important;
+    cursor: wait !important;
+  }
+
+  /* 钂欏眰鏁堟灉澧炲己 */
+  html.submitting::before {
+    content: '';
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: rgba(255, 255, 255, 0.5);
+    z-index: 9998;
+  }
+
+  /* 鍔犺浇鎸囩ず鍣� - 鏇存槑鏄剧殑瑙嗚鍙嶉 */
+  html.submitting::after {
+    content: '鎻愪氦涓�...';
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    background: #1890ff;
+    color: white;
+    padding: 10px 20px;
+    border-radius: 4px;
+    z-index: 9999;
+  }
+
+  /* 绂佺敤鐘舵�佹寜閽牱寮� */
+  .disabled-btn {
+    opacity: 0.6;
+    cursor: not-allowed !important;
+  }
+
+  .shallow-hr {
+    border: 0;
+    height: 1px; /* 鍒嗙晫绾跨殑楂樺害 */
+    background-color: rgba(0, 0, 0, 0.1); /* 浣跨敤 RGBA 棰滆壊锛屽苟璁剧疆杈冧綆鐨勯�忔槑搴� */
+    margin: 20px 0; /* 鍒嗙晫绾夸笂涓嬬殑澶栬竟璺� */
+  }
+  .btn-custom {
+    background-color: #4CAF50; /* 缁胯壊鑳屾櫙 */
+    color: white; /* 鐧借壊鏂囧瓧 */
+    border: none; /* 鏃犺竟妗� */
+    padding: 5px 15px; /* 鍐呰竟璺� */
+    text-align: center; /* 鏂囧瓧灞呬腑 */
+    text-decoration: none; /* 鏃犱笅鍒掔嚎 */
+    display: inline-block; /* 琛屽唴鍧楀厓绱� */
+    font-size: 12px; /* 瀛椾綋澶у皬 */
+    margin: 4px 2px; /* 澶栬竟璺� */
+    cursor: pointer; /* 榧犳爣鎮仠鏃舵樉绀烘墜鍨� */
+    border-radius: 4px; /* 鍦嗚杈规 */
+  }
+
+  .bold-large-label {
+    font-weight: bold;
+    font-size: 20px; /* 鎴栦綘闇�瑕佺殑浠讳綍澶у皬 */
+  }
+  .left_qiu{
+    position: absolute;
+    left: -74px;
+    top: 0;
+    width:54px;
+    border-radius: 50%;
+    height:54px;
+    font-size: 13px;
+    margin: auto;
+    display: flex;
+    flex-wrap: wrap;
+    align-items: center;
+    justify-content: center;
+    background: #0099ff;
+    transform: translate(0, 0);
+  }
+  /deep/ .ant-timeline-item-tail{
+    left: -29px !important;
+  }
+  .left_qiu span{
+    width: 3em;
+    display: block;
+    color: #fff;
+    text-align: center;
+  }
+  .img{
+    width: 75%;
+  }
+
+  .wrap{
+    clear: both;
+    width: 100%;
+    display: flex;
+    height: 50px;
+    border: 1px solid #ccc;
+    /* background-color: aqua; */
+  }
+  .box{
+    width:21%;
+    height:50px;
+    border-right: 1px solid #ccc;
+    line-height: 50px;
+    /* background: red; */
+    text-align:center;
+    margin: auto;
+  }
+
+  /* 娣诲姞绂佺敤鏍峰紡 */
+  .disabled-link {
+    color: #999;
+    cursor: not-allowed;
+    pointer-events: none;
+    text-decoration: none;
+  }
 
 </style>
\ No newline at end of file

--
Gitblit v1.9.3