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