From 3a2c2969b8663a6a27f9bd1608957aad61eec915 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 12 三月 2026 13:40:11 +0800
Subject: [PATCH] 新增智能电表、空调管理

---
 admin/src/views/business/deviceDianbiao.vue                                                     |    2 
 admin/src/views/business/deviceKongtiao.vue                                                     |  206 +++++++++++++++++++++++++++++++++++++++++++++++++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DeviceDataCloudController.java |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java           |    4 
 4 files changed, 209 insertions(+), 4 deletions(-)

diff --git a/admin/src/views/business/deviceDianbiao.vue b/admin/src/views/business/deviceDianbiao.vue
index 06316f6..85a37d0 100644
--- a/admin/src/views/business/deviceDianbiao.vue
+++ b/admin/src/views/business/deviceDianbiao.vue
@@ -6,7 +6,7 @@
                 <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <el-form-item title="鏍囪瘑绗�" prop="no">
-                <el-input v-model="searchForm.no" placeholder="璇疯緭鍏ヨ澶囨爣璇嗙" @keypress.enter.native="search"></el-input>
+                <el-input v-model="searchForm.no" placeholder="璇疯緭鍏ヨ澶囧湴鍧�鍩�" @keypress.enter.native="search"></el-input>
             </el-form-item>
             <el-form-item title="璁惧鍙�" prop="doorNo">
                 <el-input v-model="searchForm.doorNo" placeholder="璇疯緭鍏ヨ澶囧彿" @keypress.enter.native="search"></el-input>
diff --git a/admin/src/views/business/deviceKongtiao.vue b/admin/src/views/business/deviceKongtiao.vue
new file mode 100644
index 0000000..5a014a9
--- /dev/null
+++ b/admin/src/views/business/deviceKongtiao.vue
@@ -0,0 +1,206 @@
+<template>
+    <TableLayout :permissions="['business:device:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm"  slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item title="鍚嶇О" prop="name">
+                <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item title="鏍囪瘑绗�" prop="no">
+                <el-input v-model="searchForm.no" placeholder="璇疯緭鍏ヨ澶囧湴鍧�鍩�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item title="璁惧鍙�" prop="doorNo">
+                <el-input v-model="searchForm.doorNo" placeholder="璇疯緭鍏ヨ澶囧彿" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+          <ul class="toolbar" v-permissions="['business:device:create', 'business:device:delete']">
+            <li><el-button type="primary" @click="$refs.operaDeviceWindow.open('鏂板缓绌鸿皟')" icon="el-icon-plus" v-permissions="['business:device:create']">鏂板缓</el-button></li>
+            <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:device:delete']">鍒犻櫎</el-button></li>
+          </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe >
+              <el-table-column type="selection" width="55"></el-table-column>
+              <el-table-column prop="name" label="鍚嶇О" fixed min-width="150" align="center"></el-table-column>
+              <el-table-column prop="no" label="绌鸿皟鍦板潃鍩�" min-width="100" align="center" ></el-table-column>
+              <el-table-column prop="doorNo" label="璁惧鍙�"  min-width="120" align="center" show-overflow-tooltip></el-table-column>
+              <el-table-column prop="manufature" label="鍘傚晢" align="center" min-width="100" show-overflow-tooltip></el-table-column>
+              <el-table-column prop="regionPathName" align="center"  min-width="100" label="鎵�鍦ㄤ綅缃�"></el-table-column>
+              <el-table-column prop="ip" label="IP"  min-width="150" align="center" show-overflow-tooltip ></el-table-column>
+              <el-table-column prop="port" label="绔彛" align="center"  ></el-table-column>
+              <el-table-column prop="isUsed" label="鏄惁浣跨敤">
+                <template slot-scope="{row}">
+                  <el-switch @change="changeUsed($event, row)" v-model="row.isUsed" active-color="#13ce66"
+                             inactive-color="#ff4949" :active-value="0" :inactive-value="1">
+                  </el-switch>
+                </template>
+              </el-table-column>
+              <el-table-column prop="doorNameObj.pwdLevel" label="瀵嗙爜绛夌骇" align="center" min-width="150"></el-table-column>
+              <el-table-column prop="doorNameObj.pwd" label="瀵嗙爜" align="center">
+                <template slot-scope="{row}">
+                  <span :class=" 'blue'">{{row.showPwd?row.doorNameObj.pwd:'******'}}</span>
+                  <el-button  style="margin-left: 10px" v-if="row.doorNameObj.pwd!=null"
+                              @click.native.p.prevent="showPassward(row)" type="text">
+                    <i class="el-icon-view" :class="row.showPwd?'red':'blue'" :title="row.showPwd?'闅愯棌':'鏄剧ず'"></i>
+                  </el-button>
+                </template>
+              </el-table-column>
+              <el-table-column prop="doorNameObj.userCode" label="鎿嶄綔鑰呬唬鐮�" align="center" min-width="150"></el-table-column>
+              <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" align="center" min-width="150"></el-table-column>
+              <el-table-column
+                  label="鎿嶄綔"
+                  align="center"
+                  min-width="280"
+                  fixed="right"
+              >
+                  <template slot-scope="{row}">
+                    <el-button type="text" @click="$refs.operaDeviceWindow.open('缂栬緫绌鸿皟', row)" icon="el-icon-edit" v-permissions="['business:device:update']">缂栬緫</el-button>
+                    <el-button type="text" @click="$refs.operaDeviceDataWindow.open('鏌ョ湅绌鸿皟鏁版嵁', row)" icon="el-icon-view" v-permissions="['business:device:update']">鏁版嵁</el-button>
+                    <el-button type="text" @click="send(row,1)" icon="el-icon-circle-check"  v-permissions="['business:device:update']">鎵撳紑</el-button>
+                    <el-button type="text" class="red" @click="send(row,0)" icon="el-icon-circle-close"  v-permissions="['business:device:update']">鍏抽棴</el-button>
+                    <el-button type="text" class="red" @click="readData(row)" icon="el-icon-circle-close"  v-permissions="['business:device:update']">璇诲彇鏁版嵁</el-button>
+                    <el-button type="text" class="red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:device:delete']">鍒犻櫎</el-button>
+                  </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"  >
+            </pagination>
+        </template>
+      <el-dialog
+          :visible.sync="visibleSend"
+          style="z-index: 100000"
+          append-to-body
+          width="50%"
+          height="50%"
+          :title="'鎺у埗绌鸿皟-銆�'+ form.name+'銆�'"
+      >
+        <el-form :model="form" ref="form"  :rules="rules">
+          <el-form-item label="鎵ц鎿嶄綔锛�"  >
+            <b class="green" v-if="form.status ===1">鎵撳紑</b>
+            <b class="red" v-else>鍏抽棴</b>
+          </el-form-item>
+          <el-form-item label="鏈夋晥鏃堕棿" prop="cmdDate">
+            <el-date-picker type="datetime" v-model="form.cmdDate" value-format="yyyy-MM-dd HH:mm:ss"
+                            placeholder="璇烽�夋嫨鏈夋晥鏃堕棿"   />
+          </el-form-item>
+        <!-- <p class="tip-warn" style="width: 100%;"><i class="el-icon-warning"></i></p> -->
+        </el-form>
+        <template  v-slot:footer  >
+          <el-button @click="sendAction(0)" type="primary" v-if="form.status === 1" :loading="isWorkSending">纭鎵撳紑</el-button>
+          <el-button @click="sendAction(1)" type="danger" v-if="form.status !== 1" :loading="isWorkSending">纭鍏抽棴</el-button>
+          <el-button @click="sendClose()">杩斿洖</el-button>
+        </template>
+      </el-dialog>
+        <!-- 鏂板缓/淇敼 -->
+    <OperaDeviceDianbiaoWindow ref="operaDeviceWindow" @success="handlePageChange"/>
+    <OperaDeviceDataListWindow ref="operaDeviceDataWindow" @success="handlePageChange"/>
+    </TableLayout>
+</template>
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaDeviceDataListWindow from '@/components/business/OperaDianbiaoDataListWindow'
+import OperaDeviceDianbiaoWindow from '@/components/business/OperaDeviceDianbiaoWindow'
+export default {
+  name: 'DeviceDuanluqi',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaDeviceDianbiaoWindow, OperaDeviceDataListWindow },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        doorNo: '',
+        no: '',
+        name: '',
+        type: 7
+      },
+      isWorkSending: false,
+      form: {
+        id: '',
+        status: null,
+        name: null,
+        cmdDate: null
+      },
+      visibleSend: false,
+      options: [],
+      rules: {
+        cmdDate: [{ required: true, message: '璇烽�夋嫨鎿嶄綔鏈夋晥鏃堕棿' }]
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '璁惧淇℃伅琛�',
+      api: '/business/device',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    changeUsed (e, row) {
+      this.api.updateUsedById({
+        id: row.id,
+        isUsed: e
+      })
+    },
+    showPassward (row) {
+      if (!row.showPwd) {
+        this.$set(row, 'showPwd', true)
+      } else {
+        this.$set(row, 'showPwd', false)
+      }
+    },
+    sendAction (status) {
+      this.form.status = status
+      this.$dialog.actionConfirm('纭杩涜绌鸿皟銆�' + (this.form.status === 1 ? '鎵撳紑' : '鍏抽棴') + '銆戞搷浣滃悧锛�', '鎿嶄綔纭鎻愰啋')
+        .then(() => {
+          console.log(this.form)
+          this.isWorkSending = true
+          this.api.dianbaoCmd(this.form)
+            .then(res => {
+              this.$tip.apiSuccess(res || '璇锋眰鎴愬姛')
+              this.handlePageChange()
+            })
+            .catch(e => {
+            })
+            .finally(() => {
+              this.isWorkSending = false
+            })
+        })
+        .catch(() => {})
+    },
+    readData (row) {
+      this.api.dianbiaoData({ id: row.id })
+        .then(res => {
+          this.$tip.apiSuccess(res || '璇锋眰鎴愬姛')
+          this.handlePageChange()
+        })
+        .catch(e => {
+        })
+        .finally(() => {
+          this.isWorkSending = false
+        })
+    },
+    send (row, type) {
+      this.visibleSend = true
+      this.form = { id: row.id, name: row.name, cmdDate: null, status: type}
+    },
+    sendClose () {
+      this.visibleSend = false
+      this.isWorkSending = false
+      this.form = { id: '', name: '', status: '', cmdDate: '' }
+    }
+  }
+}
+</script>
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DeviceDataCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DeviceDataCloudController.java
index 94bfd89..7fd7ea6 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DeviceDataCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DeviceDataCloudController.java
@@ -13,7 +13,6 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
 import javax.servlet.http.HttpServletResponse;
 
 /**
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
index ab0f1e4..70a6da0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
@@ -73,8 +73,8 @@
     @ExcelColumn(name="鎺掑簭鐮�")
     private Integer sortnum;
 
-    @ApiModelProperty(value = "绫诲瀷 0闂ㄧ 1杞﹀簱 2LED 3骞挎挱鐐� 4骞挎挱璁惧 5鏂矾鍣ㄧ┖寮� 6娴峰悍鐢佃〃", example = "1")
-    @ExcelColumn(name="绫诲瀷 0闂ㄧ 1杞﹀簱 2LED 3骞挎挱鐐� 4骞挎挱璁惧 5鏂矾鍣ㄧ┖寮� 6娴峰悍鐢佃〃")
+    @ApiModelProperty(value = "绫诲瀷 0闂ㄧ 1杞﹀簱 2LED 3骞挎挱鐐� 4骞挎挱璁惧 5鏂矾鍣ㄧ┖寮� 6娴峰悍鐢佃〃 7j绌鸿", example = "1")
+    @ExcelColumn(name="绫诲瀷 0闂ㄧ 1杞﹀簱 2LED 3骞挎挱鐐� 4骞挎挱璁惧 5鏂矾鍣ㄧ┖寮� 6娴峰悍鐢佃〃 7绌鸿")
     private Integer type;
     @ApiModelProperty(value = "鏄惁鍥尯鍑哄叆鍙� 0涓嶆槸 1鏄�", example = "1")
     @ExcelColumn(name="鏄惁鍥尯鍑哄叆鍙� 0涓嶆槸 1鏄�")

--
Gitblit v1.9.3