From 74190ebc24e6e850d418ad0ce041fd91b795c23e Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 25 五月 2026 18:32:21 +0800
Subject: [PATCH] 新增智能电表、空调管理

---
 admin/src/views/business/ywelectrical.vue |   65 +++++++++++++++++++++++++++++++-
 1 files changed, 62 insertions(+), 3 deletions(-)

diff --git a/admin/src/views/business/ywelectrical.vue b/admin/src/views/business/ywelectrical.vue
index 96658fb..6e4aa45 100644
--- a/admin/src/views/business/ywelectrical.vue
+++ b/admin/src/views/business/ywelectrical.vue
@@ -32,11 +32,26 @@
         <el-table-column prop="name" label="鐢佃〃鍚嶇О" fixed min-width="140" align="center" show-overflow-tooltip></el-table-column>
         <el-table-column prop="address" label="鐢佃〃鍦板潃" min-width="130" align="center" show-overflow-tooltip></el-table-column>
         <el-table-column prop="accountId" label="寮�鎴峰彿" min-width="100" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column label="寮�鎴风姸鎬�" min-width="100" align="center">
+          <template slot-scope="{ row }">
+            <span :class="row.accountStatus === 1 ? 'green' : 'red'">{{ formatAccountStatus(row.accountStatus) }}</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="roomNames" label="缁戝畾鎴块棿" min-width="160" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="paramName" label="鐢佃〃鍙傛暟鍚�" min-width="140" align="center" show-overflow-tooltip>
+          <template slot-scope="{ row }">{{ row.paramName || '-' }}</template>
+        </el-table-column>
+        <el-table-column label="鐢佃〃鍊嶇巼" min-width="100" align="center">
+          <template slot-scope="{ row }">{{ formatRate(row.rate) }}</template>
+        </el-table-column>
         <el-table-column prop="balanceBattery" label="绱鐢ㄧ數閲�" min-width="120" align="center">
           <template slot-scope="{ row }">{{ formatBattery(row.balanceBattery) }}</template>
         </el-table-column>
-        <el-table-column prop="balance" label="璐︽埛浣欓" min-width="100" align="center"></el-table-column>
+        <el-table-column label="璐︽埛浣欓" min-width="110" align="center">
+          <template slot-scope="{ row }">
+            <span :class="{ red: isBalanceLow(row.balance) }">{{ formatBalance(row.balance) }}</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="160" align="center"></el-table-column>
         <el-table-column label="鍦ㄧ嚎鐘舵��" min-width="90" align="center">
           <template slot-scope="{ row }">
@@ -50,9 +65,16 @@
             <span v-else>-</span>
           </template>
         </el-table-column>
-        <el-table-column label="棰勮鎯呭喌" min-width="160" align="center" show-overflow-tooltip>
+        <el-table-column label="棰勮鎯呭喌" min-width="200" align="center">
           <template slot-scope="{ row }">
-            <span class="red">{{ row.warnTypeName || row.warnType || '-' }}</span>
+            <template v-if="warnTypeLabels(row).length">
+              <span
+                v-for="(label, index) in warnTypeLabels(row)"
+                :key="index"
+                class="warn-tag"
+              >{{ label }}</span>
+            </template>
+            <span v-else>-</span>
           </template>
         </el-table-column>
         <el-table-column label="鎿嶄綔" align="center" min-width="220" fixed="right">
@@ -135,6 +157,32 @@
       if (!val) return '-'
       return String(val).indexOf('kwh') >= 0 || String(val).indexOf('kWh') >= 0 ? val : val + 'kwh'
     },
+    formatRate (val) {
+      if (val === null || val === undefined || val === '') return '-'
+      const n = Number(val)
+      return isNaN(n) ? val : n.toFixed(2)
+    },
+    formatBalance (val) {
+      if (val === null || val === undefined || val === '') return '-'
+      const n = Number(val)
+      if (isNaN(n)) return val
+      return `${n.toFixed(2)}鍏僠
+    },
+    isBalanceLow (val) {
+      if (val === null || val === undefined || val === '') return false
+      const n = Number(val)
+      return !isNaN(n) && n <= 0
+    },
+    warnTypeLabels (row) {
+      const text = row.warnTypeName || row.warnType || ''
+      if (!text) return []
+      return text.split(',').map(item => item.trim()).filter(Boolean)
+    },
+    formatAccountStatus (val) {
+      if (val === 1 || val === '1') return '宸插紑鎴�'
+      if (val === 0 || val === '0') return '鏈紑鎴�'
+      return val == null || val === '' ? '-' : '鏈紑鎴�'
+    },
     handleSync () {
       this.$dialog.actionConfirm('纭浠庝笁鏂瑰钩鍙板悓姝ュ叏閮ㄧ數琛ㄦ暟鎹悧锛�', '鍚屾鐢佃〃')
         .then(() => {
@@ -162,4 +210,15 @@
 <style scoped>
 .green { color: #67c23a; }
 .red { color: #f56c6c; }
+.warn-tag {
+  display: inline-block;
+  color: #f56c6c;
+  border: 1px solid #f56c6c;
+  border-radius: 4px;
+  padding: 0 6px;
+  margin: 2px;
+  font-size: 12px;
+  line-height: 20px;
+  white-space: nowrap;
+}
 </style>

--
Gitblit v1.9.3