From 58e841720c0b1f56ba15a1f1ecdb26c8158c4db1 Mon Sep 17 00:00:00 2001
From: 李旭东 <woaiguo66@sina.com>
Date: 星期三, 08 十一月 2023 08:56:07 +0800
Subject: [PATCH] 智慧监控页面增加

---
 web/src/api/modules/safety.js              |   13 +++
 web/src/views/SecureManage/WisdomVideo.vue |  180 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 192 insertions(+), 1 deletions(-)

diff --git a/web/src/api/modules/safety.js b/web/src/api/modules/safety.js
index 963b9c4..b0e824c 100644
--- a/web/src/api/modules/safety.js
+++ b/web/src/api/modules/safety.js
@@ -277,5 +277,16 @@
       delete: params =>
         axios.get('/secure/tRegionWarranty/delete', { params }),
     }
-  }
+  },
+
+
+  /**
+   * 安全管理模块 - 智慧监控
+  */
+ // 查询智慧监控信息列表
+ searchWisdomVideoList: (params) =>
+  axios.post('/materials/helmet/dataAIList', params), 
+  // 获取全部预警消息类型
+  getAllWaringData: () =>
+    axios.get('/materials/helmet/dataAIType'),
 }
\ No newline at end of file
diff --git a/web/src/views/SecureManage/WisdomVideo.vue b/web/src/views/SecureManage/WisdomVideo.vue
new file mode 100644
index 0000000..fe3e90c
--- /dev/null
+++ b/web/src/views/SecureManage/WisdomVideo.vue
@@ -0,0 +1,180 @@
+<template>
+  <div class="main">
+    <div class="main_header">
+      <div class="header_item">
+        <span class="header_label">时间范围:</span>
+        <el-date-picker
+          v-model="timeData"
+          type="datetimerange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          value-format="yyyy-MM-dd HH:mm:ss">
+        </el-date-picker>
+      </div>
+      <div class="header_item">
+        <span class="header_label">预警消息类型:</span>
+        <el-select v-model="messageId" clearable placeholder="请选择预警消息类型">
+          <el-option
+            v-for="item in messageData"
+            :key="item.type"
+            :label="item.typeName"
+            :value="item.type">
+          </el-option>
+        </el-select>
+      </div>
+      <div class="header_item">
+        <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchWisdomVideoList(true)">查询</el-button>
+        <el-button class="search_btn" icon="el-icon-message" v-if="showButton('insert')" @click="asyncConfig = true;">短信设置</el-button>
+      </div>
+    </div>
+    <div class="main_content">
+      <el-table
+        v-loading="loading"
+        :data="wisdomVideoList"
+        height="100%">
+        <el-table-column label="序号" width="55" align="center">
+          <template #default="scope">
+            <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="signTime" label="预警时间" align="center" width="200"></el-table-column>
+        <el-table-column prop="boxName" label="盒子的名称" align="center" width="200"></el-table-column>
+        <el-table-column prop="deviceName" label="摄像头的名称" align="center" width="200"></el-table-column>
+        <el-table-column prop="type" label="预警消息类型" align="center" width="200"></el-table-column>
+        <el-table-column prop="typeName" label="预警消息名称" align="center"></el-table-column>
+        <el-table-column prop="useYearMonth" label="抓拍大图" align="center"></el-table-column>
+        <el-table-column prop="signTime" label="抓拍时间" align="center"></el-table-column>
+      </el-table>
+    </div>
+    <div class="main_footer">
+      <el-pagination
+        background
+        @current-change="changePageNum"
+        @size-change="changePageSize"
+        :current-page="pageNum"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total">
+      </el-pagination>
+    </div>
+    <el-dialog
+      class="prop_dialog"
+      title="短信设置"
+      :visible.sync="asyncConfig"
+      width="35%">
+      <el-form ref="form" :model="formConfig" :rules="rulesConfig" label-width="auto" class="rule_form">
+        <el-form-item label="短信内容:" prop="content">
+          <el-input
+            type="textarea"
+            v-model="formConfig.content"
+            clearable 
+            placeholder="请输入短信息内容">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="备注:">
+          <el-input
+            type="textarea"
+            v-model="formConfig.remark"
+            clearable 
+            placeholder="请输入短信息内容">
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="asyncConfig = false">取 消</el-button>
+        <el-button class="submit_btn" @click="asyncConfig = false">提 交</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { buttonPinia } from '../../pinia';
+  export default {
+    data() {
+      return {
+        timeData: '',
+        messageId: '',
+        messageData: [],
+        total: 0,
+        pageNum: 1,
+        pageSize: 10,
+        loading: false,
+        wisdomVideoList: [],
+        asyncConfig: false,
+        formConfig: {},
+        rulesConfig: {
+          content: [{
+            required: true,
+            message: '请输入短信信息',
+            trigger: 'blur'
+          }]
+        },
+        personnelData: [],
+      }
+    },
+    mounted() {
+      this.searchWisdomVideoList(true);
+      this.getAllWaringData();
+    },
+    methods: {
+      // 获取预警消息类型
+      async getAllWaringData() {
+        const { data } = await this.$api.Safety.getAllWaringData();
+        this.messageData = data;
+      },
+      // 查询智慧监控信息
+      searchWisdomVideoList(bol) {
+        if(bol) {
+          this.pageNum = 1;
+        }
+        this.loading = true;
+        this.wisdomVideoList = [];
+        this.$api.Safety.searchWisdomVideoList({
+          pageNum: this.pageNum,
+          pageSize: this.pageSize,
+          type: this.messageId,
+          strTime: this.timeData ? this.timeData[0] : '',
+          endTime: this.timeData ? this.timeData[1] : ''
+        }).then((res) => {
+          if(res.success) {
+            this.total = res.data.total;
+            this.wisdomVideoList = res.data.list;
+          }
+          this.loading = false;
+        }).catch(() => {
+          this.loading = false;
+        })
+      },
+      // 判断按钮权限信息
+      showButton(str) {
+        const pinia = buttonPinia();
+        return pinia.$state.buttonInfo.includes(str);
+      },      
+      // 切换页数
+      changePageNum(page) {
+        this.pageNum = page;
+        this.searchWisdomVideoList();
+      },
+      // 切换每页条数
+      changePageSize(size) {
+        this.pageSize = size;
+        this.searchWisdomVideoList();
+      }
+    },
+    watch: {
+      asyncConfig(bol) {
+        if(!bol) {
+          this.formConfig = {};
+          this.$refs.form.resetFields();
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  @import '~@/style/layout-main.scss';
+</style>
\ No newline at end of file

--
Gitblit v1.9.3