From bc9a38e5d25eaabce05c99ed1d197261d6f8eb0f Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 06 三月 2024 14:29:02 +0800
Subject: [PATCH] 监控模块
---
src/views/system/video/index.vue | 329 +++++++++++++
src/views/system/recovery/index.vue | 330 +++++++++++++
src/views/system/face/index.vue | 370 +++++++++++++++
src/views/system/dict/index.vue | 2
src/api/platform/monitor.js | 44 +
src/views/system/car/index.vue | 328 +++++++++++++
6 files changed, 1,402 insertions(+), 1 deletions(-)
diff --git a/src/api/platform/monitor.js b/src/api/platform/monitor.js
new file mode 100644
index 0000000..d3f6317
--- /dev/null
+++ b/src/api/platform/monitor.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ璁惧璧勪骇鍒楄〃
+export function listMonitor(query) {
+ return request({
+ url: '/system/monitor/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏌ヨ璁惧璧勪骇璇︾粏
+export function getMonitor(id) {
+ return request({
+ url: '/system/monitor/' + id,
+ method: 'get'
+ })
+}
+
+// 鏂板璁惧璧勪骇
+export function addMonitor(data) {
+ return request({
+ url: '/system/monitor',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇敼璁惧璧勪骇
+export function updateMonitor(data) {
+ return request({
+ url: '/system/monitor',
+ method: 'put',
+ data: data
+ })
+}
+
+// 鍒犻櫎璁惧璧勪骇
+export function delMonitor(id) {
+ return request({
+ url: '/system/monitor/' + id,
+ method: 'delete'
+ })
+}
diff --git a/src/views/system/car/index.vue b/src/views/system/car/index.vue
new file mode 100644
index 0000000..3fa5a77
--- /dev/null
+++ b/src/views/system/car/index.vue
@@ -0,0 +1,328 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="璁惧鐘舵��" prop="onState">
+ <el-select
+ v-model="queryParams.onState"
+ placeholder="璁惧鐘舵��"
+ clearable
+ style="width: 100px"
+ >
+ <el-option
+ v-for="dict in dict.type.camera_state"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍦板潃" prop="address">
+ <el-input
+ v-model="queryParams.address"
+ placeholder="璇疯緭鍏ヨ鏀垮尯鍩�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="瀹夎鏃堕棿" prop="installedTime">
+ <el-date-picker clearable
+ v-model="queryParams.installedTime"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨瀹夎鏃堕棿">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="绠$悊鍗曚綅" prop="managementUnit">
+ <el-input
+ v-model="queryParams.managementUnit"
+ placeholder="璇疯緭鍏ョ鐞嗗崟浣�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px">
+ <el-select
+ v-model="queryParams.defaultOrder"
+ placeholder="鏄惁鐢熸垚寮傚父宸ュ崟"
+ clearable
+ style="width: 170px"
+ >
+ <el-option
+ v-for="dict in dict.type.platform_yes_no"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="mini"
+ @click="handleExport"
+ v-hasPermi="['system:monitor:export']"
+ >瀵煎嚭</el-button>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table v-loading="loading" :data="monitorList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" />
+ <el-table-column label="璁惧缂栫爜" align="center" prop="serialNumber" />
+ <el-table-column label="璁惧鍚嶇О" align="center" prop="name" />
+ <el-table-column label="璁惧鐘舵��" align="center" prop="onState">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.camera_state" :value="scope.row.onState"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍦板潃" align="center" prop="address" />
+ <el-table-column label="鏄惁鐢熸垚寮傚父宸ュ崟" align="center" prop="defaultOrder">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.platform_yes_no" :value="scope.row.defaultOrder"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="寮傚父鍘熷洜" align="center" prop="reason" />
+ <el-table-column label="瀹夎鏃堕棿" align="center" prop="installedTime" width="180">
+ </el-table-column>
+ <el-table-column label="绠$悊鍗曚綅" align="center" prop="managementUnit" />
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleView(scope.row,scope.index)"
+ v-hasPermi="['system:monitor:query']"
+ >璇︾粏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 璁惧璧勪骇璇︽儏 -->
+ <el-dialog title="鎿嶄綔鏃ュ織璇︾粏" :visible.sync="open" width="800px" append-to-body>
+ <el-form ref="form" :model="form" label-width="150px" size="mini">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璁惧缂栫爜锛�">{{ form.serialNumber }}</el-form-item>
+ <el-form-item label="璁惧鍚嶇О锛�">{{ form.name }} </el-form-item>
+ <el-form-item label="璁惧鐘舵�侊細">
+ <div v-if="form.onState === 1">鍙敤</div>
+ <div v-else-if="form.onState === 2">涓嶅彲鐢�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍦板潃锛�">{{ form.address }}</el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟锛�">
+ <div v-if="form.defaultOrder === 1">鏄�</div>
+ <div v-else-if="form.defaultOrder === 2">鍚�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="寮傚父鍘熷洜锛�">{{ form.reason }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="瀹夎鏃堕棿锛�">{{ form.installedTime }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="绠$悊鍗曚綅锛�">{{ form.managementUnit }}</el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="open = false">鍏� 闂�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { listMonitor, getMonitor, delMonitor, addMonitor, updateMonitor } from "@/api/platform/monitor";
+
+export default {
+ name: "Monitor",
+ dicts: ['sys_normal_disable','platform_yes_no','camera_state'],
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 璁惧璧勪骇琛ㄦ牸鏁版嵁
+ monitorList: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ installedTime: null,
+ managementUnit: null,
+ defaultOrder: null,
+ cameraFunType: 2,
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ serialNumber: [
+ { required: true, message: "璁惧缂栫爜涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ name: [
+ { required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ onState: [
+ { required: true, message: "璁惧鐘舵��", trigger: "blur" }
+ ],
+ address: [
+ { required: true, message: "鍦板潃涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ }
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ璁惧璧勪骇鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listMonitor(this.queryParams).then(response => {
+ this.monitorList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: null,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ installedTime: null,
+ managementUnit: null,
+ };
+ this.resetForm("form");
+ },
+ /** 璇︾粏鎸夐挳鎿嶄綔 */
+ handleView(row) {
+ this.open = true;
+ this.form = row;
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.queryParams.cameraFunType = 2;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length!==1
+ this.multiple = !selection.length
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ this.open = true;
+ this.title = "娣诲姞璁惧璧勪骇";
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.reset();
+ const id = row.id || this.ids
+ getMonitor(id).then(response => {
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼璁惧璧勪骇";
+ });
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm() {
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ if (this.form.id != null) {
+ updateMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const ids = row.id || this.ids;
+ this.$modal.confirm('鏄惁纭鍒犻櫎璁惧璧勪骇缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+ return delMonitor(ids);
+ }).then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ }).catch(() => {});
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download('system/monitor/export', {
+ ...this.queryParams
+ }, `monitor_${new Date().getTime()}.xlsx`)
+ }
+ }
+};
+</script>
diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue
index 6ca5457..b6ed788 100644
--- a/src/views/system/dict/index.vue
+++ b/src/views/system/dict/index.vue
@@ -344,4 +344,4 @@
}
}
};
-</script>
\ No newline at end of file
+</script>
diff --git a/src/views/system/face/index.vue b/src/views/system/face/index.vue
new file mode 100644
index 0000000..7b719d6
--- /dev/null
+++ b/src/views/system/face/index.vue
@@ -0,0 +1,370 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="璁惧鐘舵��" prop="onState">
+ <el-select
+ v-model="queryParams.onState"
+ placeholder="璁惧鐘舵��"
+ clearable
+ style="width: 100px"
+ >
+ <el-option
+ v-for="dict in dict.type.camera_state"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍦板潃" prop="address">
+ <el-input
+ v-model="queryParams.address"
+ placeholder="璇疯緭鍏ュ湴鍧�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="瀹夎鏃堕棿" prop="installedTime">
+ <el-date-picker clearable
+ v-model="queryParams.installedTime"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨瀹夎鏃堕棿">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="绠$悊鍗曚綅" prop="managementUnit">
+ <el-input
+ v-model="queryParams.managementUnit"
+ placeholder="璇疯緭鍏ョ鐞嗗崟浣�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px">
+ <el-select
+ v-model="queryParams.defaultOrder"
+ placeholder="鏄惁鐢熸垚寮傚父宸ュ崟"
+ clearable
+ style="width: 170px"
+ >
+ <el-option
+ v-for="dict in dict.type.platform_yes_no"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="mini"
+ @click="handleExport"
+ v-hasPermi="['system:monitor:export']"
+ >瀵煎嚭</el-button>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table v-loading="loading" :data="monitorList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" />
+ <el-table-column label="璁惧缂栫爜" align="center" prop="serialNumber" />
+ <el-table-column label="璁惧鍚嶇О" align="center" prop="name" />
+ <el-table-column label="璁惧鐘舵��" align="center" prop="onState">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.camera_state" :value="scope.row.onState"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍦板潃" align="center" prop="address" />
+ <el-table-column label="鏄惁鐢熸垚寮傚父宸ュ崟" align="center" prop="defaultOrder">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.platform_yes_no" :value="scope.row.defaultOrder"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="寮傚父鍘熷洜" align="center" prop="reason" />
+ <el-table-column label="瀹夎鏃堕棿" align="center" prop="installedTime" width="180">
+ </el-table-column>
+ <el-table-column label="绠$悊鍗曚綅" align="center" prop="managementUnit" />
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleView(scope.row,scope.index)"
+ v-hasPermi="['system:monitor:query']"
+ >璇︾粏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 娣诲姞鎴栦慨鏀硅澶囪祫浜у璇濇 -->
+ <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+ <el-form-item label="璁惧缂栫爜" prop="serialNumber">
+ <el-input v-model="form.serialNumber" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
+ </el-form-item>
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ澶囧悕绉�" />
+ </el-form-item>
+ <el-form-item label="璁惧鐘舵��" prop="onState">
+ <el-input v-model="form.onState" placeholder="璇疯緭鍏ヨ澶囩姸鎬� 1/2 鍙敤/涓嶅彲鐢�" />
+ </el-form-item>
+ <el-form-item label="鍦板潃" prop="address">
+ <el-input v-model="form.address" placeholder="璇疯緭鍏ュ湴鍧�" />
+ </el-form-item>
+ <el-form-item label="瀹夎鏃堕棿" prop="installedTime">
+ <el-date-picker clearable
+ v-model="form.installedTime"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨瀹夎鏃堕棿">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="绠$悊鍗曚綅" prop="managementUnit">
+ <el-input v-model="form.managementUnit" placeholder="璇疯緭鍏ョ鐞嗗崟浣�" />
+ </el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder">
+ <el-radio-group v-model="form.role">
+ <el-radio
+ v-for="dict in dict.type.platform_yes_no"
+ :key="dict.value"
+ :label="dict.value"
+ >{{dict.label}}</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 璁惧璧勪骇璇︽儏 -->
+ <el-dialog title="鎿嶄綔鏃ュ織璇︾粏" :visible.sync="open" width="800px" append-to-body>
+ <el-form ref="form" :model="form" label-width="150px" size="mini">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璁惧缂栫爜锛�">{{ form.serialNumber }}</el-form-item>
+ <el-form-item label="璁惧鍚嶇О锛�">{{ form.name }} </el-form-item>
+ <el-form-item label="璁惧鐘舵�侊細">
+ <div v-if="form.onState === 1">鍙敤</div>
+ <div v-else-if="form.onState === 2">涓嶅彲鐢�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍦板潃锛�">{{ form.address }}</el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟锛�">
+ <div v-if="form.defaultOrder === 1">鏄�</div>
+ <div v-else-if="form.defaultOrder === 2">鍚�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="寮傚父鍘熷洜锛�">{{ form.reason }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="瀹夎鏃堕棿锛�">{{ form.installedTime }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="绠$悊鍗曚綅锛�">{{ form.managementUnit }}</el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="open = false">鍏� 闂�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { listMonitor, getMonitor, delMonitor, addMonitor, updateMonitor } from "@/api/platform/monitor";
+
+export default {
+ name: "Monitor",
+ dicts: ['sys_normal_disable','platform_yes_no','camera_state'],
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 璁惧璧勪骇琛ㄦ牸鏁版嵁
+ monitorList: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ installedTime: null,
+ managementUnit: null,
+ defaultOrder: null,
+ cameraFunType: 3,
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ serialNumber: [
+ { required: true, message: "璁惧缂栫爜涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ name: [
+ { required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ onState: [
+ { required: true, message: "璁惧鐘舵��", trigger: "blur" }
+ ],
+ address: [
+ { required: true, message: "鍦板潃涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ }
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ璁惧璧勪骇鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listMonitor(this.queryParams).then(response => {
+ this.monitorList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: null,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ installedTime: null,
+ managementUnit: null,
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.queryParams.cameraFunType = 3
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length!==1
+ this.multiple = !selection.length
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ this.open = true;
+ this.title = "娣诲姞璁惧璧勪骇";
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.reset();
+ const id = row.id || this.ids
+ getMonitor(id).then(response => {
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼璁惧璧勪骇";
+ });
+ },
+ /** 璇︾粏鎸夐挳鎿嶄綔 */
+ handleView(row) {
+ this.open = true;
+ this.form = row;
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm() {
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ if (this.form.id != null) {
+ updateMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const ids = row.id || this.ids;
+ this.$modal.confirm('鏄惁纭鍒犻櫎璁惧璧勪骇缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+ return delMonitor(ids);
+ }).then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ }).catch(() => {});
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download('system/monitor/export', {
+ ...this.queryParams
+ }, `monitor_${new Date().getTime()}.xlsx`)
+ }
+ }
+};
+</script>
diff --git a/src/views/system/recovery/index.vue b/src/views/system/recovery/index.vue
new file mode 100644
index 0000000..a260dfc
--- /dev/null
+++ b/src/views/system/recovery/index.vue
@@ -0,0 +1,330 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="璁惧鐘舵��" prop="onState">
+ <el-select
+ v-model="queryParams.onState"
+ placeholder="璁惧鐘舵��"
+ clearable
+ style="width: 100px"
+ >
+ <el-option
+ v-for="dict in dict.type.camera_state"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍦板潃" prop="address">
+ <el-input
+ v-model="queryParams.address"
+ placeholder="璇疯緭鍏ュ湴鍧�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ style="width: 170px"
+ />
+ </el-form-item>
+ <el-form-item label="寮傚父鎭㈠鏃堕棿" prop="recoveryTime" label-width="130px">
+ <el-date-picker clearable
+ v-model="queryParams.recoveryTime"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨寮傚父鎭㈠鏃堕棿">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="绠$悊鍗曚綅" prop="managementUnit">
+ <el-input
+ v-model="queryParams.managementUnit"
+ placeholder="璇疯緭鍏ョ鐞嗗崟浣�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ style="width: 170px"
+ />
+ </el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px">
+ <el-select
+ v-model="queryParams.defaultOrder"
+ placeholder="鏄惁鐢熸垚寮傚父宸ュ崟"
+ clearable
+ style="width: 170px"
+ >
+ <el-option
+ v-for="dict in dict.type.platform_yes_no"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="mini"
+ @click="handleExport"
+ v-hasPermi="['system:monitor:export']"
+ >瀵煎嚭</el-button>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table v-loading="loading" :data="monitorList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" />
+ <el-table-column label="璁惧缂栫爜" align="center" prop="serialNumber" />
+ <el-table-column label="璁惧鍚嶇О" align="center" prop="name" />
+ <el-table-column label="璁惧鐘舵��" align="center" prop="onState">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.camera_state" :value="scope.row.onState"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍦板潃" align="center" prop="address" />
+ <el-table-column label="鏄惁鐢熸垚寮傚父宸ュ崟" align="center" prop="defaultOrder">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.platform_yes_no" :value="scope.row.defaultOrder"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="寮傚父鍘熷洜" align="center" prop="reason" />
+ <el-table-column label="寮傚父鎭㈠鏃堕棿" align="center" prop="recoveryTime" width="180">
+ </el-table-column>
+ <el-table-column label="绠$悊鍗曚綅" align="center" prop="managementUnit" />
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleView(scope.row,scope.index)"
+ v-hasPermi="['system:monitor:query']"
+ >璇︾粏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 璁惧璧勪骇璇︽儏 -->
+ <el-dialog title="鎿嶄綔鏃ュ織璇︾粏" :visible.sync="open" width="800px" append-to-body>
+ <el-form ref="form" :model="form" label-width="150px" size="mini">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璁惧缂栫爜锛�">{{ form.serialNumber }}</el-form-item>
+ <el-form-item label="璁惧鍚嶇О锛�">{{ form.name }} </el-form-item>
+ <el-form-item label="璁惧鐘舵�侊細">
+ <div v-if="form.onState === 1">鍙敤</div>
+ <div v-else-if="form.onState === 2">涓嶅彲鐢�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍦板潃锛�">{{ form.address }}</el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟锛�">
+ <div v-if="form.defaultOrder === 1">鏄�</div>
+ <div v-else-if="form.defaultOrder === 2">鍚�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="寮傚父鍘熷洜锛�">{{ form.reason }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="瀹夎鏃堕棿锛�">{{ form.installedTime }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="绠$悊鍗曚綅锛�">{{ form.managementUnit }}</el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="open = false">鍏� 闂�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { listMonitor, getMonitor, delMonitor, addMonitor, updateMonitor } from "@/api/platform/monitor";
+
+export default {
+ name: "Monitor",
+ dicts: ['sys_normal_disable','platform_yes_no','camera_state'],
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 璁惧璧勪骇琛ㄦ牸鏁版嵁
+ monitorList: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ recoveryTime: null,
+ managementUnit: null,
+ defaultOrder: null,
+ recovery: 1,
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ serialNumber: [
+ { required: true, message: "璁惧缂栫爜涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ name: [
+ { required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ onState: [
+ { required: true, message: "璁惧鐘舵��", trigger: "blur" }
+ ],
+ address: [
+ { required: true, message: "鍦板潃涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ }
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ璁惧璧勪骇鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listMonitor(this.queryParams).then(response => {
+ this.monitorList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ /** 璇︾粏鎸夐挳鎿嶄綔 */
+ handleView(row) {
+ this.open = true;
+ this.form = row;
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: null,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ installedTime: null,
+ managementUnit: null,
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.queryParams.recovery = 1
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length!==1
+ this.multiple = !selection.length
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ this.open = true;
+ this.title = "娣诲姞璁惧璧勪骇";
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.reset();
+ const id = row.id || this.ids
+ getMonitor(id).then(response => {
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼璁惧璧勪骇";
+ });
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm() {
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ if (this.form.id != null) {
+ updateMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const ids = row.id || this.ids;
+ this.$modal.confirm('鏄惁纭鍒犻櫎璁惧璧勪骇缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+ return delMonitor(ids);
+ }).then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ }).catch(() => {});
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download('system/monitor/export', {
+ ...this.queryParams
+ }, `monitor_${new Date().getTime()}.xlsx`)
+ }
+ }
+};
+</script>
diff --git a/src/views/system/video/index.vue b/src/views/system/video/index.vue
new file mode 100644
index 0000000..3f4c426
--- /dev/null
+++ b/src/views/system/video/index.vue
@@ -0,0 +1,329 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="璁惧鍚嶇О" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="璁惧鐘舵��" prop="onState">
+ <el-select
+ v-model="queryParams.onState"
+ placeholder="璁惧鐘舵��"
+ clearable
+ style="width: 100px"
+ >
+ <el-option
+ v-for="dict in dict.type.camera_state"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍦板潃" prop="address">
+ <el-input
+ v-model="queryParams.address"
+ placeholder="璇疯緭鍏ュ湴鍧�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="瀹夎鏃堕棿" prop="installedTime">
+ <el-date-picker clearable
+ v-model="queryParams.installedTime"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨瀹夎鏃堕棿">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="绠$悊鍗曚綅" prop="managementUnit">
+ <el-input
+ v-model="queryParams.managementUnit"
+ placeholder="璇疯緭鍏ョ鐞嗗崟浣�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px">
+ <el-select
+ v-model="queryParams.defaultOrder"
+ placeholder="鏄惁鐢熸垚寮傚父宸ュ崟"
+ clearable
+ style="width: 170px"
+ >
+ <el-option
+ v-for="dict in dict.type.platform_yes_no"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="mini"
+ @click="handleExport"
+ v-hasPermi="['system:monitor:export']"
+ >瀵煎嚭</el-button>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <el-table v-loading="loading" :data="monitorList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center" />
+ <el-table-column label="璁惧缂栫爜" align="center" prop="serialNumber" />
+ <el-table-column label="璁惧鍚嶇О" align="center" prop="name" />
+ <el-table-column label="璁惧鐘舵��" align="center" prop="onState">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.camera_state" :value="scope.row.onState"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍦板潃" align="center" prop="address" />
+ <el-table-column label="鏄惁鐢熸垚寮傚父宸ュ崟" align="center" prop="defaultOrder">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.platform_yes_no" :value="scope.row.defaultOrder"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="寮傚父鍘熷洜" align="center" prop="reason" />
+ <el-table-column label="瀹夎鏃堕棿" align="center" prop="installedTime" width="180"/>
+ <el-table-column label="绠$悊鍗曚綅" align="center" prop="managementUnit" />
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleView(scope.row,scope.index)"
+ v-hasPermi="['system:monitor:query']"
+ >璇︾粏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 璁惧璧勪骇璇︽儏 -->
+ <el-dialog title="鎿嶄綔鏃ュ織璇︾粏" :visible.sync="open" width="800px" append-to-body>
+ <el-form ref="form" :model="form" label-width="150px" size="mini">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璁惧缂栫爜锛�">{{ form.serialNumber }}</el-form-item>
+ <el-form-item label="璁惧鍚嶇О锛�">{{ form.name }} </el-form-item>
+ <el-form-item label="璁惧鐘舵�侊細">
+ <div v-if="form.onState === 1">鍙敤</div>
+ <div v-else-if="form.onState === 2">涓嶅彲鐢�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍦板潃锛�">{{ form.address }}</el-form-item>
+ <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟锛�">
+ <div v-if="form.defaultOrder === 1">鏄�</div>
+ <div v-else-if="form.defaultOrder === 2">鍚�</div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="寮傚父鍘熷洜锛�">{{ form.reason }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="瀹夎鏃堕棿锛�">{{ form.installedTime }}</el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="绠$悊鍗曚綅锛�">{{ form.managementUnit }}</el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="open = false">鍏� 闂�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { listMonitor, getMonitor, delMonitor, addMonitor, updateMonitor } from "@/api/platform/monitor";
+
+export default {
+ name: "Monitor",
+ dicts: ['sys_normal_disable', 'platform_yes_no','camera_state'],
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 璁惧璧勪骇琛ㄦ牸鏁版嵁
+ monitorList: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ installedTime: null,
+ managementUnit: null,
+ defaultOrder: null,
+ cameraFunType: 1,
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ serialNumber: [
+ { required: true, message: "璁惧缂栫爜涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ name: [
+ { required: true, message: "璁惧鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ onState: [
+ { required: true, message: "璁惧鐘舵��", trigger: "blur" }
+ ],
+ address: [
+ { required: true, message: "鍦板潃涓嶈兘涓虹┖", trigger: "blur" }
+ ],
+ }
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ璁惧璧勪骇鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listMonitor(this.queryParams).then(response => {
+ this.monitorList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: null,
+ serialNumber: null,
+ name: null,
+ onState: null,
+ address: null,
+ installedTime: null,
+ managementUnit: null,
+ defaultOrder: "1",
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.queryParams.cameraFunType = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length!==1
+ this.multiple = !selection.length
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ this.open = true;
+ this.title = "娣诲姞璁惧璧勪骇";
+ },
+ /** 璇︾粏鎸夐挳鎿嶄綔 */
+ handleView(row) {
+ this.open = true;
+ this.form = row;
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.reset();
+ const id = row.id || this.ids
+ getMonitor(id).then(response => {
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼璁惧璧勪骇";
+ });
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm() {
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ if (this.form.id != null) {
+ updateMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addMonitor(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const ids = row.id || this.ids;
+ this.$modal.confirm('鏄惁纭鍒犻櫎璁惧璧勪骇缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+ return delMonitor(ids);
+ }).then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ }).catch(() => {});
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download('system/monitor/export', {
+ ...this.queryParams
+ }, `monitor_${new Date().getTime()}.xlsx`)
+ }
+ }
+};
+</script>
--
Gitblit v1.8.0