From c6e96cdb8b1cfb51e9a45bf86c38d1353e983127 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期一, 19 十月 2026 15:19:48 +0800
Subject: [PATCH] 设备模块业务完善及前序页面优化

---
 src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue |   51 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue b/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue
index 8db89c6..daac854 100644
--- a/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue
+++ b/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue
@@ -10,7 +10,7 @@
                   :page="page" :tableLoading="tableLoading"></lims-table>
     </div>
     <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-model="usageTableDia"
-               title="璁惧淇濆吇璁″垝琛�" width="80%" @close="closeDialog">
+               title="璁惧浣跨敤鎺堟潈琛�" width="80%" @close="closeDialog">
       <div style="display: flex;align-items: center;">
         <el-button size="small" type="primary" @click="addTableRow" v-if="operationType !== 'check'">娣诲姞</el-button>
         <span style="width: 60px;margin-left: 10px">骞翠唤锛�</span>
@@ -53,7 +53,7 @@
                          clearable filterable multiple
                          :disabled="operationType === 'check'"
                          placeholder="璇烽�夋嫨" size="small" style="width: 100%;">
-                <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id">
+                <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
                 </el-option>
               </el-select>
             </template>
@@ -80,7 +80,7 @@
         <span style="width: 90px;margin-left: 10px">琚巿鏉冧汉锛�</span>
         <el-select v-model="delegatedUser" clearable filterable multiple
                    placeholder="璇烽�夋嫨" size="small" style="width: 100%;">
-          <el-option v-for="item in responsibleOptions" :key="item.name" :label="item.name" :value="item.name">
+          <el-option v-for="item in inspectorOptions" :key="item.name" :label="item.name" :value="item.name">
           </el-option>
         </el-select>
       </div>
@@ -122,6 +122,8 @@
 } from "@/api/cnas/resourceDemand/device";
 import {selectUserCondition} from "@/api/system/user";
 import {mapGetters} from "@/utils/store-compat";
+import {formatListDate} from './dateFormat'
+import {saveBlobOrShowError} from '@/utils/saveBlob'
 
 export default {
   name: '',
@@ -148,9 +150,9 @@
       column: [
         { label: '璁″垝骞翠唤', prop: 'impowerYear' },
         { label: '缂栧埗浜�', prop: 'compiler' },
-        { label: '缂栧埗鏃堕棿', prop: 'datePreparation' },
+        { label: '缂栧埗鏃堕棿', prop: 'datePreparation', formatData: val => formatListDate(val) },
         { label: '鎺堟潈浜�', prop: 'audit' },
-        { label: '鎺堟潈鏃ユ湡', prop: 'auditDate' },
+        { label: '鎺堟潈鏃ユ湡', prop: 'auditDate', formatData: val => formatListDate(val) },
         {
           dataType: 'tag',
           label: '鎺堟潈鐘舵��',
@@ -205,7 +207,7 @@
                 this.openDia('check', row);
               },
               disabled: (row) => {
-                return row.status === 1 || this.userId !== row.auditId;
+                return row.status === 1 || this.userId != row.auditId;
               },
             },
             {
@@ -229,6 +231,7 @@
         }
       ],
       responsibleOptions: [],
+      inspectorOptions: [],
       operationType: '',
       usageTableDia: false,
       deviceImpowerDetails: [],
@@ -258,6 +261,7 @@
     },
     // 鍒嗛〉鍒囨崲
     pagination(page) {
+      this.page.current = page.page
       this.page.size = page.limit
       this.getTableList()
     },
@@ -318,9 +322,9 @@
         getImpowerDetail({ impowerId: this.impowerId }).then(res => {
           if (res.code === 200) {
             this.form = res.data
-            this.deviceImpowerDetails = this.form.deviceImpowerDetails
+            this.deviceImpowerDetails = this.form.deviceImpowerDetails || []
             this.deviceImpowerDetails.forEach(item => {
-              item['delegatedUserArr'] = item.delegatedUser.split(',')
+              item['delegatedUserArr'] = item.delegatedUser ? String(item.delegatedUser).split(',') : []
             })
           }
         }).catch(error => {
@@ -337,7 +341,7 @@
     // 娣诲姞璁惧
     addTableRow() {
       this.addEquipDia = true
-      this.delegatedUser = this.responsibleOptions.map((item) => item.name);
+      this.delegatedUser = this.inspectorOptions.map((item) => item.name);
       this.getEquipOptions()
     },
     // 鍒犻櫎琛ㄦ牸琛�
@@ -346,9 +350,24 @@
     },
     // 鎻愪氦鏂板鍜屼慨鏀�
     submitForm() {
+      if (!this.form.impowerYear) {
+        this.$message.warning('璇烽�夋嫨骞翠唤')
+        return
+      }
+      if (!this.deviceImpowerDetails.length) {
+        this.$message.warning('璇锋坊鍔犺澶�')
+        return
+      }
+      const noDelegatee = this.deviceImpowerDetails.find(item => {
+        return !Array.isArray(item.delegatedUserArr) || item.delegatedUserArr.length === 0
+      })
+      if (noDelegatee) {
+        this.$message.warning(`璇蜂负璁惧鈥�${noDelegatee.deviceName || ''}鈥濋�夋嫨琚巿鏉冧汉`)
+        return
+      }
       this.form.deviceImpowerDetails = this.HaveJson(this.deviceImpowerDetails)
       this.form.deviceImpowerDetails.forEach((item) => {
-        item.delegatedUser = item.delegatedUserArr.join(',')
+        item.delegatedUser = Array.isArray(item.delegatedUserArr) ? item.delegatedUserArr.join(',') : ''
       })
       this.submitFormLoading = true
       if (this.operationType === 'add') {
@@ -420,10 +439,12 @@
       })
     },
     openHandleOut (row) {
+      this.outLoading = true
       exportDeviceImpower({ impowerId: row.impowerId }).then(res => {
         this.outLoading = false
-        const blob = new Blob([res], { type: 'application/msword' });
-        this.$download.saveAs(blob, '璁惧浣跨敤鎺堟潈琛�' + '.docx')
+        saveBlobOrShowError(res, '璁惧浣跨敤鎺堟潈琛�.docx', 'application/msword')
+      }).catch(() => {
+        this.outLoading = false
       })
     },
     handleDeleteClick(row) {
@@ -453,6 +474,12 @@
           this.responsibleOptions = res.data
         }
       })
+      // 琚巿鏉冧汉涓嬫媺鍙彇妫�娴嬪憳瑙掕壊浜哄憳
+      selectUserCondition({type: 3}).then(res => {
+        if (res.code == 200) {
+          this.inspectorOptions = res.data
+        }
+      })
     },
   },
   watch: {

--
Gitblit v1.9.3