doum
2026-05-25 74190ebc24e6e850d418ad0ce041fd91b795c23e
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>