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 |   40 ++++++++++++++++++++++++++++++----------
 1 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue b/src/views/CNAS/resourceDemand/device/component/usageAuthorization.vue
index bcd8062..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>
@@ -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;
               },
             },
             {
@@ -259,6 +261,7 @@
     },
     // 鍒嗛〉鍒囨崲
     pagination(page) {
+      this.page.current = page.page
       this.page.size = page.limit
       this.getTableList()
     },
@@ -319,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 => {
@@ -347,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') {
@@ -421,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) {

--
Gitblit v1.9.3