From a1eb7af6f5be8306379e47085a1852fb167bde0f Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 12 十二月 2022 22:38:12 +0800
Subject: [PATCH] 预警研判
---
src/views/intelligentPatrol/studyJudge/index.vue | 447 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 337 insertions(+), 110 deletions(-)
diff --git a/src/views/intelligentPatrol/studyJudge/index.vue b/src/views/intelligentPatrol/studyJudge/index.vue
index 79c9dbd..d7d3595 100644
--- a/src/views/intelligentPatrol/studyJudge/index.vue
+++ b/src/views/intelligentPatrol/studyJudge/index.vue
@@ -1,9 +1,11 @@
<template>
<div class="study-judge">
<div class="study-judge-header">
- <span>鎮ㄦ湁{{ countData.review }}鏉″緟瀹℃牳鎶ヨ淇℃伅,浠婃棩绔嬫{{ countData.register }}鏉�,鍐嶅涔爗{
- countData.study
- }}鏉�</span>
+ <span
+ >鎮ㄦ湁{{ countData.review }}鏉″緟瀹℃牳鎶ヨ淇℃伅,浠婃棩绔嬫{{
+ countData.register
+ }}鏉�,鍐嶅涔爗{ countData.study }}鏉�</span
+ >
</div>
<div class="study-judge-main">
<div class="sjm-header">
@@ -13,28 +15,47 @@
<span>{{ currentEvent.address }}</span>
</div>
<div class="sjm-header-right">
- <el-button size="small">瀹炴椂棰勮</el-button>
- <el-button size="small">褰曞儚鍥炴斁</el-button>
+ <el-button
+ size="small"
+ @click="createVideo(currentEvent, 'playerWin')"
+ >瀹炴椂棰勮</el-button
+ >
+ <el-button
+ size="small"
+ @click="createVideo(currentEvent, 'playerWin')"
+ >褰曞儚鍥炴斁</el-button
+ >
</div>
</div>
<div class="sjm-content">
<div class="sjm-content-left">
- <div class="img-item" v-for="(item, index) in imageList" :key="item.id">
+ <div
+ class="img-item"
+ v-for="(item, index) in imageList"
+ :key="item.id"
+ >
<span>鎶ヨ鍥剧墖</span>
- <img :src="item">
- <span v-if="index === 0">鎶ヨ鏃堕棿锛歿{ currentEvent.alarmTime }}</span>
+ <img :src="item" />
+ <span v-if="index === 0"
+ >鎶ヨ鏃堕棿锛歿{ currentEvent.alarmTime }}</span
+ >
+ </div>
+ <div class="img-item" v-for="item in imageList" :key="item.id">
+ <img :src="item" />
</div>
</div>
- <div class="sjm-content-center">
- 鍦板浘瀹瑰櫒
- </div>
+ <div class="sjm-content-center">鍦板浘瀹瑰櫒</div>
<div class="sjm-content-right">
<div class="card-box">
<div class="card-header">
- <span>鎶ヨ璁板綍</span>
- <span>涔卞仠涔辨斁杩濇硶鍗犻亾</span>
+ <span>鎶ヨ璁板綍--{{ currentEvent.algoName }}</span>
</div>
- <el-form ref="currentEvent" label-width="120px" :model="eventInfoData" :rules="rules">
+ <el-form
+ ref="currentEvent"
+ label-width="120px"
+ :model="eventInfoData"
+ :rules="rules"
+ >
<el-form-item label="浜嬩欢缂栧彿:">
<span>{{ currentEvent.code }}</span>
</el-form-item>
@@ -51,39 +72,84 @@
<span>{{ currentEvent.conntinueTime }}</span>
</el-form-item>
<el-form-item label="鍏宠仈搴楅摵" prop="store">
- <el-select v-model="eventInfoData.store" clearable @change="selectStoreChange"
- placeholder="璇烽�夋嫨鍏宠仈搴楅摵">
- <el-option v-for="store in storeList" :value="store.id" :label="store.storeName" :key="store.id"/>
+ <el-select
+ v-model="eventInfoData.store"
+ clearable
+ @change="selectStoreChange"
+ placeholder="璇烽�夋嫨鍏宠仈搴楅摵"
+ >
+ <el-option
+ v-for="store in storeList"
+ :value="store.id"
+ :label="store.storeName"
+ :key="store.id"
+ />
</el-select>
</el-form-item>
<el-form-item v-if="eventInfoData.store" label="搴楅摵寰楀垎:">
- <span>{{ selectStoreChange(eventInfoData.store).storeScore }}</span>
+ <span>{{
+ selectStoreChange(eventInfoData.store).storeScore
+ }}</span>
</el-form-item>
<el-form-item label="澶勭悊鎰忚:" prop="state">
<el-radio-group v-model="eventInfoData.state">
- <el-radio :label="item.id" v-for="item in stateList" :key="item.id">{{ item.label }}</el-radio>
+ <el-radio
+ :label="item.id"
+ v-for="item in stateList"
+ :key="item.id"
+ >{{ item.label }}</el-radio
+ >
</el-radio-group>
</el-form-item>
<el-form-item label="澶х被鍚嶇О:" prop="categoryId">
- <el-select v-model="eventInfoData.categoryId" placeholder="璇烽�夋嫨澶х被鍚嶇О" @change="categoryChange">
- <el-option v-for="category in categoryOptions" :key="category.id" :value="category.id"
- :label="category.name"/>
+ <el-select
+ v-model="eventInfoData.categoryId"
+ placeholder="璇烽�夋嫨澶х被鍚嶇О"
+ @change="categoryChange"
+ >
+ <el-option
+ v-for="category in categoryOptions"
+ :key="category.id"
+ :value="category.id"
+ :label="category.name"
+ />
</el-select>
</el-form-item>
<el-form-item label="灏忕被鍚嶇О:" prop="typeId">
- <el-select v-model="eventInfoData.typeId" placeholder="璇烽�夋嫨灏忕被鍚嶇О">
- <el-option v-for="type in typeOptions" :key="type.id" :value="type.id" :label="type.name"/>
+ <el-select
+ v-model="eventInfoData.typeId"
+ placeholder="璇烽�夋嫨灏忕被鍚嶇О"
+ >
+ <el-option
+ v-for="type in typeOptions"
+ :key="type.id"
+ :value="type.id"
+ :label="type.name"
+ />
</el-select>
</el-form-item>
<el-form-item label="杞︾墝鍙�:" prop="carNumber">
- <el-input v-model="eventInfoData.carNumber" placeholder="璇峰~鍐欒溅鐗屽彿鐮�"></el-input>
+ <el-input
+ v-model="eventInfoData.carNumber"
+ placeholder="璇峰~鍐欒溅鐗屽彿鐮�"
+ ></el-input>
</el-form-item>
<el-form-item label="澶囨敞:" prop="description">
- <el-input type="textarea" :rows="5" v-model="eventInfoData.description"></el-input>
+ <el-input
+ type="textarea"
+ :rows="5"
+ v-model="eventInfoData.description"
+ ></el-input>
</el-form-item>
<el-form-item>
- <el-button :disabled="currentPage === 1" @click="pageChange('prev')">涓婁竴鏉�</el-button>
- <el-button @click.native.prevent="handleConfirm">纭</el-button>
+ <el-button
+ :disabled="currentPage === 1"
+ @click="pageChange('prev')"
+ >涓婁竴鏉�</el-button
+ >
+ <el-button @click.native.prevent="handleConfirm"
+ >纭</el-button
+ >
<el-button @click="pageChange('next')">涓嬩竴鏉�</el-button>
</el-form-item>
</el-form>
@@ -92,8 +158,24 @@
</div>
</div>
<el-dialog :visible="isShowDialog" title="璋冨害淇℃伅">
- <MyDispatch v-if="isShowDialog" :mytype="1" @getDispatchData="confirmInspection" :isGetData="true"
- @changeDialog="closeDialog"></MyDispatch>
+ <MyDispatch
+ v-if="isShowDialog"
+ :mytype="1"
+ @getDispatchData="confirmInspection"
+ :isGetData="true"
+ @changeDialog="closeDialog"
+ ></MyDispatch>
+ </el-dialog>
+ <el-dialog
+ :visible.sync="dialogCreate"
+ title="鏌ョ湅瑙嗛"
+ width="80%"
+ v-show="dialogCreate"
+ :before-close="handleClose2"
+ >
+ <div class="dom" style="width: 100%; height: 600px; position: relative">
+ <div id="dom1" class="dom1"></div>
+ </div>
</el-dialog>
</div>
</template>
@@ -101,41 +183,44 @@
<script>
import basecase from "@/api/operate/basecase";
import baseInfo from "@/api/baseInfo";
-import {getStoreInfoList} from "@/api/operate/storeManagement";
-import {FILE_ORIGINAL_URL} from "@/utils";
-import {validateCarNum} from "@/utils/validate";
-import MyDispatch from '@/components/dispatch';
+import { getStoreInfoList } from "@/api/operate/storeManagement";
+import { FILE_ORIGINAL_URL } from "@/utils";
+import { validateCarNum } from "@/utils/validate";
+import MyDispatch from "@/components/dispatch";
export default {
- components: {MyDispatch},
+ components: { MyDispatch },
created() {
this.getInspectionData();
this.initEventParams();
- basecase.getInspectionCountData()
- .then(res => {
- this.countData = res;
- })
- .catch(err => this.$message.error(err))
+ basecase
+ .getInspectionCountData()
+ .then((res) => {
+ this.countData = res;
+ })
+ .catch((err) => this.$message.error(err));
- getStoreInfoList({current: 1, size: 100})
- .then(({list}) => {
- this.storeList = list;
- })
- .catch(err => {
- this.$message.error(err)
- })
+ getStoreInfoList({ current: 1, size: 100 })
+ .then(({ list }) => {
+ this.storeList = list;
+ })
+ .catch((err) => {
+ this.$message.error(err);
+ });
- baseInfo.getCategoryList()
- .then(res => {
- this.categoryOptions = res;
- })
- .catch(err => this.$message.error(err))
+ baseInfo
+ .getCategoryList()
+ .then((res) => {
+ this.categoryOptions = res;
+ })
+ .catch((err) => this.$message.error(err));
- baseInfo.getTypeList()
- .then(res => {
- this.typeList = res;
- })
- .catch(err => this.$message.error(err))
+ baseInfo
+ .getTypeList()
+ .then((res) => {
+ this.typeList = res;
+ })
+ .catch((err) => this.$message.error(err));
},
data() {
const validateCarNumber = (rule, value, callback) => {
@@ -143,7 +228,7 @@
if (validateCarNum(value)) {
callback();
} else {
- callback(new Error('璇疯緭鍏ユ纭殑杞︾墝鍙�'));
+ callback(new Error("璇疯緭鍏ユ纭殑杞︾墝鍙�"));
}
} else {
callback();
@@ -153,45 +238,53 @@
countData: {
study: 0,
review: 0,
- register: 0
+ register: 0,
},
currentEvent: {},
stateList: [
{
id: 2,
- label: '涓婃姤',
+ label: "涓婃姤",
},
{
id: 6,
- label: '璋冨害',
+ label: "璋冨害",
},
{
id: 3,
- label: '鍐嶅涔�',
+ label: "鍐嶅涔�",
},
{
id: 4,
- label: '鏆備笉澶勭悊',
+ label: "鏆備笉澶勭悊",
},
],
eventInfoData: null,
rules: {
state: [
{
- required: true, trigger: ['blur'], message: '澶勭悊鎰忚涓嶈兘涓虹┖'
+ required: true,
+ trigger: ["blur"],
+ message: "澶勭悊鎰忚涓嶈兘涓虹┖",
},
],
categoryId: [
{
- required: true, trigger: ['blur'], message: '澶х被鍚嶇О涓嶈兘涓虹┖'
- }
+ required: true,
+ trigger: ["blur"],
+ message: "澶х被鍚嶇О涓嶈兘涓虹┖",
+ },
],
typeId: [
{
- required: true, trigger: ['blur'], message: '灏忕被鍚嶇О涓嶈兘涓虹┖'
- }
+ required: true,
+ trigger: ["blur"],
+ message: "灏忕被鍚嶇О涓嶈兘涓虹┖",
+ },
],
- carNumber: [{trigger: ['blur', 'change'], validator: validateCarNumber}]
+ carNumber: [
+ { trigger: ["blur", "change"], validator: validateCarNumber },
+ ],
},
imageList: [],
currentPage: 1,
@@ -199,12 +292,23 @@
typeOptions: [],
storeList: [],
typeList: [],
- isShowDialog: false
- }
+ isShowDialog: false,
+ dialogCreate: false,
+ cutPosX: 10,
+ cutPosY: 10,
+ cutWidth: 100,
+ cutHeight: 100,
+ crtPosX: 0,
+ crtPosY: 0,
+ crtWidth: 1000,
+ crtHeight: 600,
+ domId: "dom1",
+ ctrl: "ctrl1",
+ };
},
methods: {
pageChange(type) {
- if (type === 'next') {
+ if (type === "next") {
this.currentPage += 1;
} else {
this.currentPage -= 1;
@@ -213,22 +317,33 @@
},
getInspectionData() {
- basecase.getInspectionData({current: this.currentPage})
- .then(({records}) => {
- this.currentEvent = records[0];
- if (this.currentEvent?.picData) {
- this.imageList = this.currentEvent.picData.split(',').map(item => `${FILE_ORIGINAL_URL}${item}`);
- }
- if (this.currentEvent?.alarmTime || this.currentEvent?.currentAlarmTime) {
- const {alarmTime, currentAlarmTime} = this.currentEvent;
- const continueAlarmTime = new Date().getTime() -
- (currentAlarmTime ? new Date(currentAlarmTime).getTime() : new Date(alarmTime).getTime());
- const CONTINUE_DAY = continueAlarmTime / 1000 / 60 / 60 / 24;
- const CONTINUE_HOURS = (CONTINUE_DAY - parseInt(CONTINUE_DAY)) * 24;
- this.currentEvent.conntinueTime = `${parseInt(CONTINUE_DAY)}澶�${parseInt(CONTINUE_HOURS)}灏忔椂`;
- }
- })
- .catch(err => this.$message.error(err))
+ basecase
+ .getInspectionData({ current: this.currentPage })
+ .then(({ records }) => {
+ this.currentEvent = records[0];
+ if (this.currentEvent?.picData) {
+ this.imageList = this.currentEvent.picData
+ .split(",")
+ .map((item) => `${FILE_ORIGINAL_URL}${item}`);
+ }
+ if (
+ this.currentEvent?.alarmTime ||
+ this.currentEvent?.currentAlarmTime
+ ) {
+ const { alarmTime, currentAlarmTime } = this.currentEvent;
+ const continueAlarmTime =
+ new Date().getTime() -
+ (currentAlarmTime
+ ? new Date(currentAlarmTime).getTime()
+ : new Date(alarmTime).getTime());
+ const CONTINUE_DAY = continueAlarmTime / 1000 / 60 / 60 / 24;
+ const CONTINUE_HOURS = (CONTINUE_DAY - parseInt(CONTINUE_DAY)) * 24;
+ this.currentEvent.conntinueTime = `${parseInt(
+ CONTINUE_DAY
+ )}澶�${parseInt(CONTINUE_HOURS)}灏忔椂`;
+ }
+ })
+ .catch((err) => this.$message.error(err));
},
// 纭鐐瑰嚮浜嬩欢
@@ -244,9 +359,9 @@
this.confirmInspection();
}
} else {
- this.$message.warning('璇锋鏌ュ繀濉」');
+ this.$message.warning("璇锋鏌ュ繀濉」");
}
- })
+ });
},
initEventParams() {
@@ -259,24 +374,25 @@
carNumber: null,
description: null,
linkShop: 0,
- shopName: null
- }
+ shopName: null,
+ };
},
categoryChange(id) {
- this.typeOptions = this.typeList.filter(type => type.parentId === id);
+ this.typeOptions = this.typeList.filter((type) => type.parentId === id);
},
confirmInspection(data) {
const eventParams = Object.assign({}, this.eventInfoData);
delete eventParams.store;
- basecase.confirmInspection({...eventParams, ...data})
- .then(() => {
- this.$message.success('鎿嶄綔鎴愬姛');
- this.getInspectionData();
- this.initEventParams();
- })
- .catch(err => this.$message.error(err))
+ basecase
+ .confirmInspection({ ...eventParams, ...data })
+ .then(() => {
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.getInspectionData();
+ this.initEventParams();
+ })
+ .catch((err) => this.$message.error(err));
},
closeDialog() {
@@ -285,28 +401,137 @@
selectStoreChange(id) {
if (id === "") {
- this.eventInfoData.shopName = null
- this.eventInfoData.linkShop = 0
- this.eventInfoData.store = null
- return
+ this.eventInfoData.shopName = null;
+ this.eventInfoData.linkShop = 0;
+ this.eventInfoData.store = null;
+ return;
}
- const selectedStore = this.storeList.find(store => store.id === id);
+ const selectedStore = this.storeList.find((store) => store.id === id);
this.eventInfoData.shopName = selectedStore.id;
this.eventInfoData.linkShop = 1;
return selectedStore;
- }
- }
-}
+ },
+ handleClose2() {
+ this.dialogCreate = false;
+ this.destroy();
+ },
+ login() {
+ // 璋冪敤鐧诲綍鎺ュ彛
+ this.ws.detectConnectQt().then((res) => {
+ if (res) {
+ // 杩炴帴瀹㈡埛绔垚鍔�
+ this.ws.login({
+ loginIp: "183.245.159.161",
+ loginPort: "8282",
+ userName: "suichang",
+ userPwd: "a12345677",
+ https: 1,
+ });
+ this.$message.info("鐧诲綍涓�...");
+ this.ws.on("loginState", (res) => {
+ this.isLogin = res;
+ if (res) {
+ this.$message.success("鐧诲綍鎴愬姛");
+ this.activePanel = "key2";
+ } else {
+ this.$message.info("鐧诲綍澶辫触");
+ }
+ });
+ } else {
+ // 杩炴帴瀹㈡埛绔け璐�
+ this.$message.info("璇烽噸鏂板畨瑁呭鎴风");
+ }
+ });
+ },
+ logout() {
+ // 璋冪敤鐧诲嚭鎺ュ彛
+ this.ws.logout({
+ loginIp: this.loginIp,
+ });
+ },
+ createVideo(item, ctrlType) {
+ const DHWsInstance = DHWs.getInstance();
+ this.ws = DHWsInstance;
+ console.log(this.ws);
+ this.login();
+ // 璋冪敤鍒涘缓鎺т欢鎺ュ彛
+ // if (!this.isLogin) {
+ // this.$message.info('姝e湪鐧婚檰瀹㈡埛绔紝璇风◢绛�......');
+ // return false;
+ // }
+ this.dialogCreate = true;
+ setTimeout(() => {
+ let _this = this;
+ const params = [
+ {
+ // ctrlType: "realMonitorUI",
+ ctrlType: ctrlType,
+ ctrlCode: this.ctrl,
+ ctrlProperty: {
+ displayMode: 1,
+ splitNum: 1,
+ channelList: [{ channelId: item.videoCode }],
+ },
+ visible: true,
+ domId: this.domId,
+ },
+ ];
+ this.setPos();
+ _this.ws
+ .createCtrl(params)
+ .then((res) => {
+ this.$message.success("鍒涘缓鎴愬姛");
+ console.log("res", res);
+ })
+ .catch((e) => {
+ console.log("error;", e);
+ });
+ _this.ws.on("createCtrlResult", (res) => {
+ console.warn(res);
+ });
+ }, 1000);
+ },
+
+ destroy() {
+ // 璋冪敤閿�姣佹帶浠舵帴鍙�
+ if (!this.isLogin) {
+ this.$Message.info("姝e湪鐧婚檰瀹㈡埛绔紝璇风◢绛�......");
+ return false;
+ }
+ const ctrls = this.ws.ctrls.map((i) => {
+ if (i.ctrlCode === this.ctrl) {
+ return i.ctrlCode;
+ }
+ });
+ this.ws.destroyCtrl(ctrls);
+ },
+ setPos() {
+ let target = document.getElementById(this.domId);
+ console.log(target, "target");
+ target.style.right = `${this.crtPosX}px`;
+ target.style.top = `${this.crtPosY}px`;
+ target.style.width = `${this.crtWidth}px`;
+ target.style.height = `${this.crtHeight}px`;
+ if (document.createEvent) {
+ var event = document.createEvent("HTMLEvents");
+ event.initEvent("resize", true, true);
+ window.dispatchEvent(event);
+ } else if (document.createEventObject) {
+ window.fireEvent("onresize");
+ }
+ },
+ },
+};
</script>
<style lang="scss" scoped>
.study-judge {
text-align: left;
color: #4b9bb7;
- padding: 20px;
+ padding: 10px 20px;
.study-judge-header {
- line-height: 8vh;
+ line-height: 3vh;
}
.study-judge-main {
@@ -362,6 +587,7 @@
.sjm-content-right {
.card-box {
.card-header {
+ padding-left: 48px;
line-height: 4.8vh;
}
}
@@ -371,6 +597,7 @@
.el-form {
::v-deep .el-form-item {
+ margin-bottom: 5px;
}
::v-deep .el-form-item__label {
--
Gitblit v1.8.0