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

---
 src/views/eam/repair/EamReportRepairList.vue |  333 ++++++++++++++++++++++++++-----------------------------
 1 files changed, 159 insertions(+), 174 deletions(-)

diff --git a/src/views/eam/repair/EamReportRepairList.vue b/src/views/eam/repair/EamReportRepairList.vue
index 96999bc..674f996 100644
--- a/src/views/eam/repair/EamReportRepairList.vue
+++ b/src/views/eam/repair/EamReportRepairList.vue
@@ -1,69 +1,44 @@
 <template>
   <a-card :bordered="false">
-
     <!-- 鏌ヨ鍖哄煙 -->
     <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.equipmentId"/>-->
-              <lx-search-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="queryParam.equipmentId"/>
+          <a-col :xl="5" :lg="6" :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" v-if="isDisplayOperation">
+          <a-col :xl="4" :lg="6" :md="8" :sm="12">
             <a-form-item label="鎶ヤ慨鐘舵��">
-              <a-select placeholder="璇烽�夋嫨鎶ヤ慨鐘舵��" v-model="queryParam.reportStatus" allow-clear>
-                <a-select-option v-for="item in report_repair_status_list" :key="item.value">{{ item.label }}
-                </a-select-option>
-              </a-select>
+              <j-dict-select-tag dict-code="report_repair_status" placeholder="璇烽�夋嫨鎶ヤ慨鐘舵��"
+                                 v-model="queryParam.reportStatus"/>
             </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.faultDescription" allow-clear/>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="5" :lg="6" :md="8" :sm="12">
             <a-form-item label="鏁呴殰鏃堕棿">
-              <a-range-picker showTime v-model="faultTimeRange" value-format="YYYY-MM-DD HH:mm:ss"
-                              @change="handleTimeRangeChange"
+              <a-range-picker v-model="queryParam.dates" value-format="YYYY-MM-DD" @change="handleTimeRangeChange"
                               style="width: 100%"/>
             </a-form-item>
           </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+          <a-col :xl="4" :lg="6" :md="8" :sm="12">
             <a-form-item label="鏄惁鍋滄満">
-              <a-radio-group v-model="queryParam.breakdownFlag">
-                <a-radio v-for="item in breakdown_flag_list" :value="item.value">{{ item.label }}</a-radio>
-              </a-radio-group>
+              <j-dict-select-tag type="radio" v-model="queryParam.breakdownFlag" dict-code="yn"/>
             </a-form-item>
           </a-col>
-          <template v-if="toggleSearchStatus">
-
-          </template>
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <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>
-              <!--              <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" v-if="isDisplayOperation">
-      <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-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button>
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
           <a-menu-item key="1" @click="batchDel">
@@ -85,68 +60,63 @@
         <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"
-        class="j-table-force-nowrap"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:isDisplayOperation?'checkbox':'radio',getCheckboxProps:getCheckboxProps}"
-        @change="handleTableChange">
-
-        <template slot="imageFiles" slot-scope="text, record" v-if="text">
-          <a @click="handlePreviewImages(record)">棰勮</a>
+      <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,type:isDisplayOperation?'checkbox':'radio',getCheckboxProps:getCheckboxProps}"
+               @change="handleTableChange">
+        <!--缁熶竴缂栫爜-->
+        <template slot="equipmentCode" slot-scope="text,record">
+          <a href="#" @click="navigateTo('EamRepairOrderList')">{{text}}</a>
         </template>
 
-        <span slot="action" slot-scope="text, record" v-if="record.reportStatus=='WAIT_REPAIR'">
+        <!--鏄惁鍔犲伐-->
+        <template slot="isProcessed" slot-scope="text,record">
+          <a href="#" @click="navigateTo('EamReportProductHazardsList')" :disabled="!Boolean(+text)">{{record.isProcessed_dictText}}</a>
+        </template>
+
+        <!--鏄惁鍋滄満-->
+        <template slot="breakdownFlag" slot-scope="text">
+          <a-switch checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/>
+        </template>
+
+        <!--璁惧浜嬫晠-->
+        <template slot="isAccidentsRegister" slot-scope="text,record">
+          <a href="#" @click="navigateTo('EamReportAccidentsRegisterList')" :disabled="!Boolean(+text)">{{record.isAccidentsRegister_dictText}}</a>
+        </template>
+
+        <!--鍙樺姩鍥犵礌-->
+        <template slot="variableFactors" 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>
 
           <a-divider type="vertical"/>
 
-          <a @click="handleAssign(record)" >鎸囨淳</a>
-
-          <a-divider type="vertical" />
-
-          <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handleDelete(record.id)" >
+          <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handleAbolish(record.id)">
             <a>浣滃簾</a>
           </a-popconfirm>
         </span>
-
       </a-table>
     </div>
     <!-- table鍖哄煙-end -->
 
     <!-- 琛ㄥ崟鍖哄煙 -->
-    <eamReportRepair-modal ref="modalForm" :breakdownFlagList="breakdown_flag_list" :faultReasonList="faultReasonList"
-                           @ok="modalFormOk"/>
-    <!-- 鍥剧墖棰勮寮圭獥 -->
-    <images-preview-modal ref="imagesPreviewModalRef" :imageListUrl="currentImageListUrl"/>
-    <!--鎸囨淳鎶ヤ慨寮圭獥-->
-    <assign-repair-report-modal ref="assignRepairReportModalRef" @ok="modalFormOk"/>
+    <eamReportRepair-modal ref="modalForm" @ok="modalFormOk"/>
   </a-card>
 </template>
 
 <script>
-  import '@/assets/less/TableExpand.less'
   import EamReportRepairModal from './modules/EamReportRepairList/EamReportRepairModal'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue'
-  import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
-  import ImagesPreviewModal from '@views/eam/repair/modules/ImagesPreviewModal.vue'
   import { getAction } from '@/api/manage'
-  import AssignRepairReportModal from './modules/EamReportRepairList/AssignRepairReportModal'
-
 
   export default {
     name: 'EamReportRepairList',
     mixins: [JeecgListMixin],
     components: {
-      AssignRepairReportModal,
-      ImagesPreviewModal,
       LxSearchEquipmentSelect,
       EamReportRepairModal
     },
@@ -173,92 +143,128 @@
             align: 'center',
             customRender: function(t, r, index) {
               return parseInt(index) + 1
-            }
+            },
+            fixed: 'left'
           },
           {
-            title: '璁惧缂栧彿',
+            title: '缁熶竴缂栫爜',
             align: 'center',
             dataIndex: 'equipmentCode',
-            width: 200
+            fixed: 'left',
+            scopedSlots: { customRender: 'equipmentCode' }
           },
           {
             title: '璁惧鍚嶇О',
             align: 'center',
             dataIndex: 'equipmentName',
-            width: 200
+            fixed: 'left'
+          },
+          {
+            title: '璁惧鍨嬪彿',
+            align: 'center',
+            dataIndex: 'equipmentModel',
+            fixed: 'left'
           },
           {
             title: '鎶ヤ慨鐘舵��',
             align: 'center',
             dataIndex: 'reportStatus_dictText',
-            width: 100
-          },
-          {
-            title: '鏁呴殰绠�绉�',
-            align: 'center',
-            dataIndex: 'faultName',
-            width: 100
-          },
-          {
-            title: '鏁呴殰鍒嗙被',
-            align: 'center',
-            dataIndex: 'faultType_dictText',
-            width: 100
-          },
-          {
-            title: '鏁呴殰鎻忚堪',
-            align: 'center',
-            dataIndex: 'faultDescription',
-            width: 200
+            fixed: 'left'
           },
           {
             title: '鏁呴殰寮�濮嬫椂闂�',
             align: 'center',
-            dataIndex: 'faultStartTime',
-            width: 200
+            dataIndex: 'faultStartTime'
+          },
+          {
+            title: '鏁呴殰鐜拌薄',
+            align: 'center',
+            dataIndex: 'faultDescription'
           },
           {
             title: '鏄惁鍋滄満',
             align: 'center',
-            dataIndex: 'breakdownFlag_dictText',
-            width: 100
+            dataIndex: 'breakdownFlag',
+            scopedSlots: { customRender: 'breakdownFlag' }
           },
           {
-            title: '鎶ヤ慨鍥剧墖',
+            title: '鏄惁鍔犲伐',
             align: 'center',
-            dataIndex: 'imageFiles',
-            scopedSlots: { customRender: 'imageFiles' },
-            width: 100
+            dataIndex: 'isProcessed',
+            scopedSlots: { customRender: 'isProcessed' }
           },
           {
-            title: '澶囨敞',
+            title: '鎵规鍙�',
             align: 'center',
-            dataIndex: 'remark'
+            dataIndex: 'batchNumber'
+          },
+          {
+            title: '鍔犲伐闆朵欢鍙�',
+            align: 'center',
+            dataIndex: 'processingPart'
+          },
+          {
+            title: '浠舵暟',
+            align: 'center',
+            dataIndex: 'quantity'
+          },
+          {
+            title: '璁惧浜嬫晠',
+            align: 'center',
+            dataIndex: 'isAccidentsRegister',
+            scopedSlots: { customRender: 'isAccidentsRegister' }
+          },
+          {
+            title: '搴熷搧浠跺彿',
+            align: 'center',
+            dataIndex: 'scrapPartNumber'
+          },
+          {
+            title: '搴熷搧浠舵暟',
+            align: 'center',
+            dataIndex: 'scrapPartQuantity'
+          },
+          {
+            title: '搴熷搧浠峰��',
+            align: 'center',
+            dataIndex: 'scrapPartValue'
+          },
+          {
+            title: '鍙樺姩鍥犵礌',
+            align: 'center',
+            dataIndex: 'variableFactors',
+            scopedSlots: { customRender: 'variableFactors' }
+          },
+          {
+            title: '鍙樺姩鍥犵礌鍐呭',
+            align: 'center',
+            dataIndex: 'variableFactorsValue_dictText'
+          },
+          {
+            title: '浜嬫晠鐜拌薄',
+            align: 'center',
+            dataIndex: 'accidentPhenomenon'
+          },
+          {
+            title: '閲囧彇鎺柦',
+            align: 'center',
+            dataIndex: 'measure'
+          },
+          {
+            title: '閫犳垚缁撴灉',
+            align: 'center',
+            dataIndex: 'causingResults'
           }
         ],
-        breakdown_flag_list: [],
-        report_repair_status_list: [],
         faultTimeRange: [],
-        faultReasonList: [],
-        currentImageListUrl: '',
         url: {
           list: '/eam/eamReportRepair/list',
-          delete: '/eam/eamReportRepair/abolish',
-          deleteBatch: '/eam/eamReportRepair/abolishBatch',
-          exportXlsUrl: 'eam/eamReportRepair/exportXls',
-          importExcelUrl: 'eam/eamReportRepair/importExcel',
-          faultReasonList: '/eam/equipmentFaultReason/list'
+          abolish: '/eam/eamReportRepair/abolish',
+          abolishBatch: '/eam/eamReportRepair/abolishBatch'
         }
       }
     },
-    computed: {
-      importExcelUrl: function() {
-        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
-      }
-    },
     created() {
-      this.initDictData('breakdown_flag')
-      this.initDictData('report_repair_status')
       if (!this.isDisplayOperation) this.queryParam = Object.assign({}, this.propsQueryParam)
       else {
         const operationColumn = {
@@ -266,43 +272,14 @@
           dataIndex: 'action',
           align: 'center',
           scopedSlots: { customRender: 'action' },
-          width: 200
+          width: 200,
+          fixed: 'right'
         }
         this.columns = [...this.columns, operationColumn]
-        this.getFaultReasonListByApi()
       }
       this.loadData(1)
     },
     methods: {
-      /**
-       * 鑾峰彇鏁版嵁瀛楀吀鍊�
-       * @param dictCode 鏁版嵁瀛楀吀瀵瑰簲璁板綍缂栫爜
-       */
-      initDictData(dictCode) {
-        // //浼樺厛浠庣紦瀛樹腑璇诲彇瀛楀吀閰嶇疆
-        if (getDictItemsFromCache(dictCode)) {
-          this[dictCode + '_list'] = getDictItemsFromCache(dictCode)
-          return
-        }
-        //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁�
-        ajaxGetDictItems(dictCode, null).then((res) => {
-          if (res.success) {
-            this[dictCode + '_list'] = res.result
-            return
-          }
-        })
-      },
-
-      // 璋冪敤鎺ュ彛鑾峰彇鏁呴殰鍘熷洜鍒楄〃
-      getFaultReasonListByApi() {
-        const that = this
-        getAction(this.url.faultReasonList)
-          .then(res => {
-            console.log('res', res)
-            that.faultReasonList = res.result.records
-          })
-      },
-
       /**
        * 鏁呴殰鏃堕棿閫夋嫨鍣ㄥ彉鍖栨椂瑙﹀彂
        * @param valueArray
@@ -310,24 +287,6 @@
       handleTimeRangeChange(valueArray) {
         this.queryParam.startTime = valueArray[0]
         this.queryParam.endTime = valueArray[1]
-      },
-
-      /**
-       * 棰勮鍥剧墖
-       * @param imageFiles 琛ㄦ牸琛屽浘鐗囧湴鍧�
-       */
-      handlePreviewImages({ imageFiles }) {
-        this.currentImageListUrl = imageFiles
-        this.$refs.imagesPreviewModalRef.visible = true
-      },
-
-      /**
-       * 鎸囨淳鎶ヤ慨鍗�
-       * @param record 琛ㄦ牸琛屼俊鎭�
-       */
-      handleAssign(record) {
-        this.$refs.assignRepairReportModalRef.visible = true
-        this.$refs.assignRepairReportModalRef.model = Object.assign({}, { id: record.id })
       },
 
       getCheckboxProps(record) {
@@ -338,15 +297,41 @@
         }
       },
 
+      /**
+       * 鐐瑰嚮浣滃簾鏃惰Е鍙�
+       * @param id
+       */
+      handleAbolish(id) {
+        var that = this
+        this.loading = true
+        getAction(that.url.abolish, { id })
+          .then((res) => {
+            if (res.success) {
+              that.$notification.success({
+                message: '娑堟伅',
+                description: res.message
+              })
+              that.loadData()
+            } else {
+              that.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+              this.loading = false
+            }
+          })
+      },
+
+      // 璺宠浆椤甸潰
+      navigateTo(href) {
+        this.$router.push('/eam/repair/' + href)
+      },
+
       searchReset() {
         if (this.isDisplayOperation) this.queryParam = {}
         else this.queryParam = Object.assign({}, this.propsQueryParam)
-        this.faultTimeRange = []
         this.loadData(1)
       }
     }
   }
-</script>
-<style scoped>
-  @import '~@assets/less/common.less';
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file

--
Gitblit v1.9.3