From 2385c7389f9f222be2daf9c01e3c1270c89fa230 Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期一, 03 八月 2020 16:33:17 +0800
Subject: [PATCH] 场景算法过滤
---
src/pages/cameraAccess/components/SystemInfo.vue | 6
src/pages/cameraAccess/components/scene/Editor.vue | 3206 ++++++++++++++++++++++++++-----------------------
src/components/treeMenu/index.vue | 1
src/pages/algorithmManage/index/App.vue | 11
public/index.html | 2
src/Pool/TaskMange.ts | 5
src/pages/cameraAccess/index/main.ts | 13
src/pages/cameraAccess/components/scene/SlideScene.vue | 578 ++++----
src/pages/cameraAccess/components/SeparateRules.vue | 1
9 files changed, 2,016 insertions(+), 1,807 deletions(-)
diff --git a/public/index.html b/public/index.html
index ed070dd..99c20cc 100644
--- a/public/index.html
+++ b/public/index.html
@@ -7,7 +7,7 @@
<link rel="icon" type="image/png" href="<%= BASE_URL %>favicon.png" sizes="32x32" >
<title><%= htmlWebpackPlugin.options.title %></title>
<style>
- html,body,h2,p{
+ html,body,h2,p,ul,li{
margin:0;
padding:0;
}
diff --git a/src/Pool/TaskMange.ts b/src/Pool/TaskMange.ts
index cfaab07..3efa54f 100644
--- a/src/Pool/TaskMange.ts
+++ b/src/Pool/TaskMange.ts
@@ -60,9 +60,10 @@
this.currentTaskId = '';
}
- async findAllSdk() {
- let res:any = await findAllSdk({})
+ async findAllSdk(params) {
+ let res:any = await findAllSdk(params)
if (res && res.success) {
+ debugger
this.list1 = res.data
}
}
diff --git a/src/components/treeMenu/index.vue b/src/components/treeMenu/index.vue
index ca84193..89d63f6 100644
--- a/src/components/treeMenu/index.vue
+++ b/src/components/treeMenu/index.vue
@@ -156,6 +156,7 @@
hoverNodeId: "",
itemClickEvents: {
dblclick: (VNode, item, e) => {
+
if (item.type !== "4" || this.app !== "Video") {
return;
}
diff --git a/src/pages/algorithmManage/index/App.vue b/src/pages/algorithmManage/index/App.vue
index c2966a5..6b97404 100644
--- a/src/pages/algorithmManage/index/App.vue
+++ b/src/pages/algorithmManage/index/App.vue
@@ -39,9 +39,10 @@
<div class="list-complete-item-handle">
<div class="svg-wrap">
- <svg class="icon" aria-hidden="true" style="font-size:7rem;">
+ <!-- <svg class="icon" aria-hidden="true" style="font-size:7rem;">
<use :xlink:href="`#${item.icon}`" />
- </svg>
+ </svg> -->
+ <img class="baseImg" :src="`data:image/png;base64,${item.iconBlob}`" alt="">
</div>
<div class="alg-name">
<div style="padding:0px 10px 0px 10px;">
@@ -100,9 +101,10 @@
<div class="list-complete-item-handle">
<!-- <span :class="`iconfont ${item.icon}`" style="font-size:3rem;"></span> -->
<div class="svg-wrap">
- <svg class="icon" aria-hidden="true" style="font-size:7rem;">
+ <!-- <svg class="icon" aria-hidden="true" style="font-size:7rem;">
<use :xlink:href="`#${item.icon}`" />
- </svg>
+ </svg> -->
+ <img class="baseImg" :src="`data:image/png;base64,${item.iconBlob}`" alt="">
</div>
<div class="alg-name">
<div style="padding:0px 10px 0px 10px;">
@@ -746,7 +748,6 @@
},
installedList() {
return this.TaskMange.list1.filter(sdk => {
- debugger
return sdk.installed === true;
});
},
diff --git a/src/pages/cameraAccess/components/SeparateRules.vue b/src/pages/cameraAccess/components/SeparateRules.vue
index b4e507c..5d7c676 100644
--- a/src/pages/cameraAccess/components/SeparateRules.vue
+++ b/src/pages/cameraAccess/components/SeparateRules.vue
@@ -254,6 +254,7 @@
import TimeSlider from "./TimeSlider";
import polygonCanvas from "@/components/canvas";
import Sysinfo from "./SystemInfo";
+
import SceneRule from "./SceneRule";
import SlideScene from "./scene/SlideScene";
diff --git a/src/pages/cameraAccess/components/SystemInfo.vue b/src/pages/cameraAccess/components/SystemInfo.vue
index cdd0353..6fdbcfd 100644
--- a/src/pages/cameraAccess/components/SystemInfo.vue
+++ b/src/pages/cameraAccess/components/SystemInfo.vue
@@ -75,7 +75,7 @@
</li>
</ul>
</div>-->
- <div class="eCharts-box" :style="`width:${liquidWidth}`">
+ <div class="eCharts-box" :style="`width:${liquidWidth}`" v-if="PollData.barCharts.length>0">
<eChartsBar ref="cpuMeneryCharts" :xAxisData="PollData.barCharts"></eChartsBar>
</div>
</div>
@@ -129,6 +129,10 @@
this.$forceUpdate();
}
},
+ mounted(){
+ console.log(this.PollData.barCharts)
+ debugger;
+ }
}
</script>
<style lang="scss">
diff --git a/src/pages/cameraAccess/components/scene/Editor.vue b/src/pages/cameraAccess/components/scene/Editor.vue
index 162733f..0278baa 100644
--- a/src/pages/cameraAccess/components/scene/Editor.vue
+++ b/src/pages/cameraAccess/components/scene/Editor.vue
@@ -1,1510 +1,1696 @@
-<template>
- <div class="edit-rules-box">
- <p style="padding: 0">
- <b style="font-size: 14px; line-height: 28px;">绛栫暐閰嶇疆</b>
- </p>
- <div class="sub-rules-box">
- <div style=" text-align: left;">
- <div class="sdk-group">
- <transition-group name="fade" mode="out-in" appear>
- <div
- class="config-item"
- :class="{ init: index == 0 }"
- v-cloak
- v-for="(sdkItem, index) in sdkGroup"
- :key="sdkItem.id"
- >
- <div class="connection" v-if="index !== 0">
- <el-select
- v-model="sdkItem.rule_with_pre"
- size="mini"
- placeholder="閫夊叧绯�"
- @change="selConnection(sdkItem)"
- >
- <el-option value="&&" title="and/涓�" label="and/涓�"></el-option>
- <el-option value="||" title="or/鎴�" label="or/鎴�"></el-option>
- <el-option value="=>" title="鈥�>/瑙﹀彂" label="鈥�>/瑙﹀彂"></el-option>
- </el-select>
- <el-checkbox
- v-show="sdkItem.rule_with_pre == '=>'"
- v-model="sdkItem.is_save_anyhow"
- style="margin-left:30px"
- >淇濆瓨杩囩▼鏁版嵁</el-checkbox>
- </div>
- <div class="top-line">
- <div class="left">
- <div class="init-sdk">
- <el-select
- v-model="sdkItem.sdkObj"
- value-key="id"
- placeholder="閫夋嫨绠楁硶"
- size="mini"
- @change="selectSDKOption(sdkItem, true, index)"
- >
- <el-option
- v-for="item in TaskMange.list1"
- :key="item.id"
- :label="item.sdk_name"
- :value="item"
- :title="item.sdk_name"
- v-show="!item.del_flag"
- ></el-option>
- </el-select>
- </div>
- <div class="init-polygon">
- <el-select
- v-model="sdkItem.polygonObj"
- v-if="!isTemplate"
- value-key="polygonId"
- placeholder="閫夋嫨鍖哄煙"
- size="mini"
- @change="selectPolygonOption(sdkItem)"
- >
- <el-option
- v-for="subitem in allPolygonData"
- :key="subitem.id"
- :label="subitem.name"
- :value="subitem"
- :title="subitem.name"
- ></el-option>
- </el-select>
- </div>
- </div>
- <div class="right">
- <span class="del" v-show="!hideDel" @click="delConfigItem(index)">
- <i class="iconfont iconshanchu"></i>
- </span>
- <span class="collapse" @click="collapseLine(index)">
- <i
- :class="
- sdkItem.isSpread
- ? 'el-icon-arrow-up'
- : 'el-icon-arrow-down'
- "
- ></i>
- </span>
- </div>
- </div>
-
- <div class="argums derive-line" v-show="sdkItem.isSpread">
- <div v-for="(arg, index) in sdkItem.defaultArg" :key="arg.sort">
- <div class="argums-item" v-if="arg.config.isShow">
- <div class="arg-name">
- <el-select v-model="arg.name" size="mini" :disabled="true">
- <el-option :label="arg.name" :title="arg.name" :value="arg"></el-option>
- </el-select>
- </div>
- <div class="operator-name">
- <el-select
- :disabled="arg.operators.length==1"
- v-model="arg.operator"
- size="mini"
- @change="selOperator(sdkItem)"
- >
- <el-option
- v-for="operator in arg.operators"
- :key="operator.operator"
- :value="operator.operator"
- :label="operator.name"
- :title="operator.name"
- ></el-option>
- </el-select>
- </div>
- <div class="arg-val">
- <div v-if="arg.operator == 'range'">
- <el-input
- class="range-min"
- v-model="arg.min"
- @blur="validateArgVal(arg, $event)"
- ></el-input>
- <span class="devide"></span>
- <el-input
- class="range-max"
- v-model="arg.max"
- @blur="validateArgVal(arg, $event)"
- ></el-input>
- <span>{{ arg.unit }}</span>
- </div>
- <div v-else>
- <el-select v-if="arg.type == 'option'" v-model="arg.sdk_arg_value">
- <el-option>璇烽�夋嫨</el-option>
- </el-select>
- <el-input
- v-if="arg.type == 'value'"
- v-model="arg.sdk_arg_value"
- :placeholder="
- arg.default_value ? arg.default_value : ''
- "
- size="mini"
- :style="{ borderColor: tipColor }"
- @blur="validateArgVal(arg, $event)"
- ></el-input>
- <span>{{ arg.unit }}</span>
- </div>
- </div>
- <div
- class="optional"
- v-if="
- sdkItem.initAddOptional &&
- index == sdkItem.defaultArg.length - 1
- "
- >
- <span class="btn" @click="addOptionalArg(sdkItem)">
- <i class="iconfont iconhebingxingzhuang" style="font-size:16px"></i>
- </span>
- </div>
- </div>
- </div>
- <div
- class="argums-item optional-line"
- v-for="optArgItem in sdkItem.optArg"
- :key="optArgItem.sort"
- >
- <div class="arg-name">
- <el-input
- v-if="sdkItem.optNames.length == 1"
- v-model="sdkItem.optNames[0].name"
- size="mini"
- :disabled="true"
- ></el-input>
- <el-select
- v-if="sdkItem.optNames.length > 1"
- v-model="optArgItem.name"
- size="mini"
- @change="selOptionalArg(sdkItem, optArgItem)"
- >
- <el-option
- v-for="optName in sdkItem.optNames"
- :disabled="optName.isSelected"
- :key="optName.sort"
- :label="optName.name"
- :title="optName.name"
- :value="optName.name"
- ></el-option>
- </el-select>
- </div>
- <div class="operator-name">
- <el-select
- v-model="optArgItem.operator"
- size="mini"
- @change="selOperator(optArgItem)"
- >
- <el-option
- v-for="operatorItem in optArgItem.operators"
- :key="operatorItem.operator"
- :value="operatorItem.operator"
- :label="operatorItem.name"
- :title="operatorItem.name"
- ></el-option>
- </el-select>
- </div>
- <div class="arg-val">
- <el-select
- v-if="optArgItem.type == 'option'"
- v-model="optArgItem.sdk_arg_value"
- :multiple="optArgItem.config.isMulti"
- collapse-tags
- size="mini"
- >
- <el-option
- v-for="one in optArgItem.valueOptions"
- :key="one.value"
- :value="one.value"
- :label="one.name"
- :title="one.name"
- ></el-option>
- </el-select>
- <el-input
- v-if="optArgItem.type == 'value'"
- v-model="optArgItem.sdk_arg_value"
- size="mini"
- @blur="$event => validateArgVal(optArgItem, $event)"
- ></el-input>
- <span>{{ optArgItem.unit }}</span>
- </div>
- <div class="optional">
- <span class="btn" @click="addOptionalArg(sdkItem)" v-show="sdkItem.isAddable">
- <i class="iconfont iconhebingxingzhuang" style="font-size:16px"></i>
- </span>
- <span class="btn" @click="delOptionalArg(sdkItem, optArgItem)">
- <i class="iconfont iconshanchu11" style="font-size:16px"></i>
- </span>
- </div>
- </div>
- </div>
- </div>
- </transition-group>
- </div>
- <div class="btn-add" v-show="isAdd && this.sdkGroup.length < 4">
- <el-button size="mini" @click="addSdkItem">+ 娣诲姞绠楁硶</el-button>
- </div>
- </div>
- </div>
- </div>
-</template>
-<script>
-import {
- deleteCameraRules,
- updateRuleDefence,
- updateAlarmLevel
-} from '@/api/camera'
-
-export default {
- name: 'SceneRuleEditor',
- props: {
- Cameras: {
- type: Array,
- default: () => {
- return []
- }
- },
- isTemplate: {
- type: Boolean,
- default: false
- },
- isLinkRule: {
- type: Boolean,
- default: false
- },
- includeSdks: {
- type: Array
- },
- ruleList: {
- type: String,
- default: ''
- },
- onSubmitRule: {
- type: Function,
- default: () => false
- }
- },
-
- watch: {
- Cameras: {
- handler(n, o) {
-
- let polygon = []
- let cameras = [...n]
-
- for (let i = 0; i < cameras.length; i++) {
- let polyOpt = cameras[i].polygonData.map(p => {
- return {
- defence_state: p.defence_state,
- polygonId: p.id,
- name: this.isLinkRule
- ? cameras[i].cameraName + ':' + p.name
- : p.name,
-
- cameraId: cameras[i].cameraId
- }
- })
- polygon = polygon.concat(polyOpt)
-
- this.allPolygonData = polygon
- }
- },
- deep: true
- },
- sdkGroup: {
- handler(newV, oldV) {
- if (newV) {
-
- newV.forEach(sdk => {
- let rangeOne = sdk.defaultArg.find(
- arg => arg.operators[0].operator == 'range'
- )
- if (rangeOne) {
-
- if (rangeOne.min.trim() && rangeOne.max.trim()) {
- if (Number(rangeOne.min) >= Number(rangeOne.max)) {
- this.$notify({
- type: 'error',
- message: '鍖洪棿宸︿晶涓嶈兘澶т簬鎴栫瓑浜庡尯闂村彸渚х殑鍊�'
- })
- rangeOne.valid = false
- }
- rangeOne.sdk_arg_value = rangeOne.min + ',' + rangeOne.max
- } else {
- rangeOne.sdk_arg_value = false;
- }
-
-
- }
- })
- let res = newV.find(item => {
- return JSON.stringify(item.sdkObj) == '{}'
- })
- if (!res) {
- this.isAdd = true
- this.hideDel = false
- } else {
- this.isAdd = false
- if (this.sdkGroup.length == 1) {
- this.hideDel = true
- } else {
- this.hideDel = false
- }
- }
- }
- },
- deep: true
- }
- },
- mounted() {
- this.TaskMange.findAllSdk()
- },
- data() {
- return {
- hideDel: true,
- //isAddable: true,
- allPolygonData: [],
- group_id: '',
- baseSdkItem: {
- sdkObj: {},
- polygonObj: {},
- is_save_anyhow: true,
- rule_with_pre: '',
- isSpread: true,
- argDef: [],
- initAddOptional: false,
- defaultArg: [],
- optionalArg: [],
- optArg: [],
- optNames: [],
- isAddable: true
- },
- sdkGroup: [
- {
- sdkObj: {},
- polygonObj: {},
- is_save_anyhow: true,
- isSpread: true,
- argDef: [],
- initAddOptional: false,
- defaultArg: [],
- optionalArg: [],
- optArg: [],
- optNames: [],
- isAddable: true
- }
- ],
- polygonObj: {},
- isSpread: true,
- isAdd: false,
- tipColor: 'yellow',
- tasksTable: {},
- groupRules: [],
- sdksOption: [],
- baseRule: {
- camera_id: '',
- id: '',
- operator: '',
- operator_type: '',
- polygon_id: '',
- rule_with_pre: '',
- sdk_id: '',
- sdk_arg_alias: '',
- sdk_arg_value: '',
- sdk_arg_defaultValue: '',
- select_time_rule: '',
- sdk_arg_type: '',
- // task_id: "",
-
- polygonObj: {},
- taskObj: '',
-
- sdkObj: {},
- argObj: {},
- operatorObj: {},
- valueObj: {},
-
- sdksOptions: [],
- argsOptions: [],
- argType: '',
- computeOptions: [],
- valueOptions: [],
-
- sdkDesc: '',
- argDesc: '',
- operatorDesc: '',
- typeDesc: '',
- valueDesc: '',
-
- unit: '',
- value: '',
- valid: true
- }
- }
- },
- methods: {
- selConnection(sdkItem) {
-
-
- },
- addSdkItem() {
- let itemTemp = JSON.parse(JSON.stringify(this.baseSdkItem));
- //鍒濆鍖栧尯鍩�
- itemTemp.polygonObj = JSON.parse(JSON.stringify(this.allPolygonData[0]))
- this.selectPolygonOption(itemTemp)
- this.sdkGroup.push(itemTemp)
- },
- delConfigItem(index) {
- //鍒犻櫎閫昏緫锛氬綋鍙湁涓�涓畻娉曟椂锛屽垹闄や細鍥炲埌鍒濆鐘舵�侊紱鏈夊涓畻娉曟椂锛屽垹闄ゆ棦绉婚櫎鏁翠釜绠楁硶椤�
- if (this.sdkGroup.length == 1) {
- let itemTemp = JSON.parse(JSON.stringify(this.baseSdkItem))
- itemTemp.polygonObj = JSON.parse(JSON.stringify(this.allPolygonData[0]));
- this.selectPolygonOption(itemTemp)
- this.sdkGroup.splice(index, 1, itemTemp)
- } else {
- this.sdkGroup.splice(index, 1)
- }
- },
- collapseLine(index) {
- this.sdkGroup[index].isSpread = !this.sdkGroup[index].isSpread
- },
- addOptionalArg(sdkItem) {
-
- sdkItem.initAddOptional = false
- sdkItem.optArg.forEach(arg => {
- sdkItem.optNames.forEach(name => {
- if (arg.sort == name.sort) {
- name.isSelected = true
- }
- })
- }) //鎵惧埌鍙�塻dkItem.optNames鐨勭涓�涓搴旂殑sdkItem.optionalArg聽push鍒皊dkItem.optArg
- let oneNotSelected = sdkItem.optNames.find(name => !name.isSelected)
- if (oneNotSelected) {
- oneNotSelected.isSelected = true;
- }
-
- let argTemp = sdkItem.optionalArg.find(arg => {
- return arg.sort == oneNotSelected.sort
- })
-
- let copyArgTemp = JSON.parse(JSON.stringify(argTemp))
- if (copyArgTemp.type == 'option') {
- this.setOptArgValueOptions(copyArgTemp)
- }
-
- if (copyArgTemp.default_value) {
- this.$set(copyArgTemp, 'sdk_arg_value', copyArgTemp.default_value)
- }
- sdkItem.optArg.push(copyArgTemp);
- if (sdkItem.optArg.length < sdkItem.optionalArg.length) {
- sdkItem.isAddable = true;
- } else {
- sdkItem.isAddable = false;
- }
- },
- delOptionalArg(sdkItem, optArgItem) {
- let index = sdkItem.optArg.findIndex(arg => arg.sort == optArgItem.sort)
- sdkItem.optArg.splice(index, 1)
- sdkItem.optNames.forEach(name => {
- if (name.sort == optArgItem.sort) {
- name.isSelected = false
- }
- })
- sdkItem.initAddOptional = sdkItem.optArg.length == 0 ? true : false;
- if (sdkItem.optArg.length < sdkItem.optionalArg.length) {
- sdkItem.isAddable = true;
- } else {
- sdkItem.isAddable = false;
- }
- },
- selOptionalArg(sdkItem, optArgItem) {
-
- let newSort = 0
- sdkItem.optNames.forEach(name => {
- if (name.name == optArgItem.name) {
- //鏂板垏鎹㈢殑鍙傛暟鍚�
- name.isSelected = true
- newSort = name.sort
- } else if (name.sort == optArgItem.sort) {
- //鍒囨崲鍓嶇殑鍙傛暟鍚�
- name.isSelected = false
- }
- })
- //鏍规嵁鏂扮殑鍙傛暟sort鎵惧埌鍏跺搴旈厤缃璞�
- let argObj = sdkItem.optionalArg.find(arg => arg.sort == newSort)
- if (argObj.type == 'option') {
- this.setOptArgValueOptions(argObj);
- }
-
- //鏇挎崲鏂扮殑鍙傛暟閰嶇疆瀵硅薄
- sdkItem.optArg.forEach((arg, index) => {
- if (arg.sort == optArgItem.sort) {
- this.$set(sdkItem.optArg, index, JSON.parse(JSON.stringify(argObj)))
- }
- })
-
- console.log(argObj.valueOptions)
- },
- setOptArgValueOptions(optArg) {
- let alias = optArg.alias;
- console.log(this.VideoManageData.Dictionary[alias])
- optArg.valueOptions = this.VideoManageData.Dictionary[alias].map(r => {
- return {
- name: r.name,
- value: r.value
- }
- });
- },
- validateArgVal(sdkArgItem, e) {
-
- if (typeof (sdkArgItem.sdk_arg_value) == 'string' && sdkArgItem.sdk_arg_value == '') {
- this.$notify({
- type: 'warning',
- message: '鍙傛暟璁惧畾鍊间笉鑳戒负绌�!'
- })
- sdkArgItem.valid = false
-
- return false
- }
- //杈撳叆闈炴暟瀛�
-
- //鑼冨洿鏄惁鍚堟硶
- if (sdkArgItem.range) {
- let leftHand = sdkArgItem.range.substr(0, 1)
- let rightHand = sdkArgItem.range.substr(sdkArgItem.range.length - 1, 1)
- let reg = /.*(\d+),(\d+).*/
- let res = sdkArgItem.range.match(reg)
- let min = Number(res[1]),
- max = Number(res[2])
-
-
- //鍒ゆ柇闈炲尯闂寸被
- if (sdkArgItem.sdk_arg_value && sdkArgItem.operator != 'range') {
- if (leftHand == '(' && rightHand == ')') {
- if (
- Number(sdkArgItem.sdk_arg_value) <= min ||
- Number(sdkArgItem.sdk_arg_value) >= max
- ) {
- sdkArgItem.valid = false
-
- this.$notify({
- type: 'warning',
- message: `鍙傛暟璁惧畾鍊奸』澶т簬${min},灏忎簬${max}`
- })
- return false
- }
- } else if (leftHand == '[' && rightHand == ')') {
- if (
- Number(sdkArgItem.sdk_arg_value) < min ||
- Number(sdkArgItem.sdk_arg_value) >= max
- ) {
- sdkArgItem.valid = false
-
- this.$notify({
- type: 'warning',
- message: `鍙傛暟璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬${max}`
- })
- return false
- }
- } else if (leftHand == '(' && rightHand == ']') {
- if (
- Number(sdkArgItem.sdk_arg_value) <= min ||
- Number(sdkArgItem.sdk_arg_value) > max
- ) {
- sdkArgItem.valid = false
-
- this.$notify({
- type: 'warning',
- message: `鍙傛暟璁惧畾鍊奸』澶т簬${min},灏忎簬绛変簬${max}`
- })
- return false
- }
- } else if (leftHand == '[' && rightHand == ']') {
- if (
- Number(sdkArgItem.sdk_arg_value) < min ||
- Number(sdkArgItem.sdk_arg_value) > max
- ) {
- sdkArgItem.valid = false
- this.showErrorColor(e)
- this.$notify({
- type: 'warning',
- message: `鍙傛暟璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬绛変簬${max}`
- })
- return false
- }
- }
- } else if (sdkArgItem.min || sdkArgItem.max) {
- //鍒ゆ柇鍖洪棿绫�
- if (leftHand == '(' && rightHand == ')') {
- if (
- Number(sdkArgItem.min) <= min ||
- Number(sdkArgItem.min) >= max
- ) {
- sdkArgItem.valid = false
-
- this.$notify({
- type: 'warning',
- message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬${min},灏忎簬${max}`
- });
- return false
- }
- } else if (leftHand == '[' && rightHand == ')') {
- if (Number(sdkArgItem.min) < min || Number(sdkArgItem.max) >= max) {
- sdkArgItem.valid = false
-
- this.$notify({
- type: 'warning',
- message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬${max}`
- })
- return false
- }
- } else if (leftHand == '(' && rightHand == ']') {
- if (Number(sdkArgItem.min) <= min || Number(sdkArgItem.max) > max) {
- sdkArgItem.valid = false
-
- this.$notify({
- type: 'warning',
- message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬${min},灏忎簬绛変簬${max}`
- })
- return false
- }
- } else if (leftHand == '[' && rightHand == ']') {
- if (Number(sdkArgItem.min) < min || Number(sdkArgItem.max) > max || Number(sdkArgItem.min) > max || Number(sdkArgItem.max) < min) {
- sdkArgItem.valid = false
- this.showErrorColor(e)
- this.$notify({
- type: 'warning',
- message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬绛変簬${max}`
- })
- return false
- }
- }
- }
- }
- e.currentTarget.style.borderColor = ''
- return true
- },
- showErrorColor(e) {
- this.$nextTick(() => {
- e.currentTarget.style.borderColor = 'red'
- })
- },
- setSdksOptions(rule) {
- rule.sdksOptions = this.includeSdks
- },
- setOperator(rule) {
- rule.operator = rule.operatorObj.value
- rule.operatorDesc = rule.operatorObj.name
- },
- setValue(rule) {
- rule.valid = true
-
- if (rule.operator_type === 'option') {
- rule.sdk_arg_value = rule.valueObj.value ? rule.valueObj.value : ''
- rule.typeDesc = '琚�夐」'
- rule.valueDesc = rule.valueObj.name ? rule.valueObj.name : ''
- } else {
- rule.typeDesc = '鍊�'
- rule.valueDesc = rule.sdk_arg_value
- }
- this.valideArgValue(rule)
- },
- selectPolygonOption(rule) {
-
- rule.polygon_id = rule.polygonObj.polygonId
- ? rule.polygonObj.polygonId
- : rule.polygon_id
- rule.camera_id = rule.polygonObj.cameraId
- ? rule.polygonObj.cameraId
- : rule.camera_id
- rule.group_id = this.group_id
- },
- //閫夋嫨绠楁硶 resetArgs涓簍rue鏄坊鍔犱负false鏄垵濮嬪寲缂栬緫
- selectSDKOption(sdkItem, resetArgs) {
-
- //sdkItem.sdk_id = sdkItem.sdkObj.id;
- if (resetArgs) {
- sdkItem.argDef = JSON.parse(sdkItem.sdkObj.argDef)
- console.log(sdkItem.argDef)
- //鍙栧嚭榛樿鍙傛暟
- sdkItem.defaultArg = sdkItem.argDef.filter(
- arg => !arg.config.isOptional
- )
- //璧嬮粯璁perator/鍊�
- sdkItem.defaultArg.forEach(arg => {
- if (arg.operators.length == 1) {
- this.$set(arg, 'operator', arg.operators[0].operator)
-
- if (arg.operators[0].operator == 'range') {
- //鍖洪棿鍊肩殑澶勭悊
-
- //this.$set(arg, 'sdk_arg_value', arg.min+','+arg.max)
- //this.$set(arg, 'sdk_arg_value', arg.range.substring(1,arg.range.length-1));
- }
- }
-
- if (arg.default_value) {
- //arg.sdk_arg_value = arg.default_value
- this.$set(arg, 'sdk_arg_value', arg.default_value)
- }
- })
- sdkItem.defaultArg
- //鍙栧嚭鍙�夊弬鏁�
- sdkItem.optionalArg = sdkItem.argDef.filter(
- arg => arg.config.isOptional
- )
- sdkItem.optNames = sdkItem.optionalArg.map(arg => ({
- name: arg.name,
- sort: arg.sort,
- isSelected: false
- }))
-
- sdkItem.initAddOptional = sdkItem.optionalArg.length > 0 ? true : false
- sdkItem.optArg = []
- }
-
- //娣诲姞鍦烘櫙鏃�,濡傛灉鍦烘櫙鍚嶇О涓虹┖,灏卞皢閫夋嫨鐨勭涓�涓畻娉曞悕鍚屾鍒板満鏅悕绉�
- if (this.sdkGroup[0] && resetArgs) {
-
- this.$emit('sdkNameChange', this.sdkGroup[0].sdkObj.sdk_name)
- }
-
- // 閫夐」鍒囨崲鏃堕渶瑕佸埛鏂癮rg鑿滃崟椤�
- this.selectArgTypeOption(sdkItem, resetArgs)
- },
-
- selectArgTypeOption(rule, resetAlias) {
- if (rule.sdk_arg_type == '') {
- return
- }
-
- if (resetAlias) {
- rule.sdk_arg_alias = ''
- }
-
- rule.argsOptions = rule.sdkObj.args
- rule.argObj = {}
- },
- //閫夋嫨绠楁硶閰嶇疆
- selOperator(rule) {
-
- },
- selectArgsOption(rule, resetArgValue) {
- // rule.operator_type = "";
- // console.log(rule, '閫夋嫨绠楁硶鍙傛暟')
- rule.sdk_arg_alias = rule.argObj.alias
- rule.argDesc = rule.argObj.name
- rule.sdk_arg_defaultValue = rule.argObj.default_value
- rule.unit = rule.argObj.unit ? rule.argObj.unit : ''
- //rule.default_value = rule.argObj.default_value ? Number(rule.argObj.default_value) : 0;
-
- //console.log("缃俊搴︾殑榛樿鍊间负",rule.sdk_arg_defaultValue)
- // 淇濆瓨鍊肩被鍨�
- rule.argType = rule.argObj.type
- if (rule.argType === 'option') {
- rule.operator_type = 'option'
- // 璁剧疆榛樿鏉′欢鍊�
- this.VideoManageData.Dictionary.RULECOMPUTE.forEach(opt => {
- if (opt.value == '==') {
- rule.operatorObj = opt
- }
- })
-
- this.setOperator(rule)
-
- this.selectValueOption(rule)
- } else {
- // 璁剧疆榛樿鏉′欢鍊�
- rule.operator_type = 'value'
- if (resetArgValue) {
- rule.sdk_arg_value = ''
-
- this.VideoManageData.Dictionary.RULECOMPUTE.forEach(opt => {
- if (opt.value == '>=') {
- rule.operatorObj = opt
- }
- })
- } else {
- // 缂栬緫瑙勫垯鍖归厤
- this.VideoManageData.Dictionary.RULECOMPUTE.forEach(opt => {
- if (opt.value == rule.operator) {
- rule.operatorObj = opt
- }
- })
- }
- this.setOperator(rule)
- }
- },
- selectValueOption(rule) {
- if (rule.sdk_arg_alias === 'time_rule') {
- rule.valueOptions = this.VideoManageData.TimeRules.map(r => {
- return {
- name: r.name,
- value: r.id
- }
- })
- } else if (rule.sdk_arg_alias === 'compareBase') {
- rule.valueOptions = this.VideoManageData.TagList.map(r => {
- return {
- name: r.tableName,
- value: r.id
- }
- })
- } else {
- let ops = this.VideoManageData.Dictionary[rule.sdk_arg_alias]
- if (ops && ops instanceof Array) {
- rule.valueOptions = ops.map(r => {
- return {
- name: r.name,
- value: r.value
- }
- })
- }
- }
- },
-
- valideArgValue(rule) {
- if (rule.sdk_arg_value == '') {
- this.$notify({
- type: 'warning',
- message: '鍙傛暟璁惧畾鍊间笉鑳戒负绌�!'
- })
- rule.valid = false
- return false
- }
-
- if (rule.argObj && rule.argObj.range) {
- // 濡傛灉璁剧疆浜嗙畻娉曢粯璁ゅ�硷紝鍒欏垽鏂笉鑳藉皬浜庤鍊�
- if (rule.argObj.default_value) {
- if (
- parseInt(rule.sdk_arg_value) < parseInt(rule.sdk_arg_defaultValue)
- ) {
- rule.valid = false
- this.$notify({
- type: 'warning',
- message:
- '鍙傛暟璁惧畾鍊间笉鑳藉皬浜庣畻娉曞弬鏁伴粯璁ゅ�� ' + rule.sdk_arg_defaultValue
- })
- rule.valueDesc = rule.sdk_arg_value = rule.argObj.default_value
- rule.valid = false
- return false
- }
- }
-
- // let re = /(?<=,).*?(?=]|\))/
- let re = /.*,(\d+)/
- let max = rule.argObj.range.match(re)[1]
- // console.log(max,'鑾峰彇鑼冨洿鏈�澶у��')
- if (Number(rule.sdk_arg_value) > Number(max)) {
- rule.valid = false
- this.$notify({
- type: 'warning',
- message: '鍙傛暟璁惧畾鍊间笉鑳藉ぇ浜�' + max
- })
- return false
- }
- }
-
- return true
- },
- parataxis(rule_with_pre) {
- let relation = ''
- this.VideoManageData.Dictionary.RULECOMPUTEBETWEEN.forEach(pre => {
- if (pre.value === rule_with_pre) {
- relation = pre.name
- }
- })
-
- return relation
- },
-
- generatDescription() {
- let desc = ''
- this.groupRules.forEach((r, index) => {
- // console.log(r,index,'鎷兼帴')
- if (index === 0) {
- desc += r.sdkDesc + r.argDesc + r.operatorDesc + r.valueDesc + r.unit
- } else {
- desc +=
- ' ' +
- this.parataxis(r.rule_with_pre) +
- ' ' +
- r.sdkDesc +
- r.argDesc +
- r.operatorDesc +
- r.valueDesc +
- r.unit
- }
- })
- // console.log(desc,'鎷兼帴')
- return desc
- },
- createRule() {
- if (!this.isTemplate && this.Cameras.length > 0) {
- // 鏈�変腑鎽勫儚鏈烘垨鑰呮湭閫変腑鎽勫儚鏈轰换鍔★紝涓嶆墽琛屽垱寤�
- if (!this.Cameras[0].cameraId) return false
- }
- this.group_id = ''
- //this.addRule(0);
- },
-
- //娓呯┖閰嶇疆骞跺垵濮嬪寲
- cleanRule() {
- this.group_id = ''
- this.sdkGroup.splice(0, this.sdkGroup.length)
- this.addSdkItem();
- },
- addRule(index) {
- let newRule = JSON.parse(JSON.stringify(this.baseRule))
- newRule.sdksOptions = this.includeSdks
-
- // this.groupRules.push(newRule);
- // 鎻掑叆鍒版寚瀹氫綅缃�
- this.groupRules.splice(index + 1, 0, newRule)
- },
- editHandle(ruleTxt) {
-
- // if (ruleTxt.length < 1) {
- // return
- // }
- let ruleInfo = JSON.parse(ruleTxt);
- ;
-
- //let ruleInfo = JSON.parse(ruleTxt)
- this.editRule(ruleInfo)
- },
- editRule(ruleGroup) {
-
- this.sdkGroup = []
- this.group_id = ''
- ruleGroup.forEach(rule => {
-
- let tempObj = {}
-
- if (rule.group_id && rule.group_id != '') {
- this.group_id = rule.group_id
- }
-
- // 濉厖鍖哄煙閫夐」鍒楄〃
- this.allPolygonData.forEach(p => {
- if (p.polygonId === rule.polygon_id) {
- rule.polygonObj = p
- }
- })
-
- if (!rule.polygonObj) {
- rule.polygonObj = {
- cameraId: rule.camera_id,
- defence_state: 1,
- name: '鏈煡鍖哄煙',
- polygonId: rule.polygon_id
- }
- }
- console.log(rule)
-
- // 璁剧疆鍖哄煙
- this.selectPolygonOption(rule)
-
- //绠楁硶瀵硅薄,绠楁硶鍙傛暟閰嶇疆鏁扮粍,(鐢ㄤ簬鏁版嵁澶勭悊鐨�)榛樿鍙傛暟鏁扮粍, 鍙�夊弬鏁版暟缁�, 宸查厤缃殑鍙�夊弬鏁版暟缁�, (鐢ㄤ簬鍘婚噸鍒ゆ柇)瀛樻斁鍙�夊弬鏁板悕鐨勬暟缁�
- let sdkObj = {},
- argDef = [],
- defaultArg = [],
- optionalArg = [],
- optArg = [],
- optNames = []
-
- sdkObj = this.TaskMange.list1.find(sdk => sdk.id == rule.sdk_id)
-
- argDef = JSON.parse(sdkObj.argDef)
- defaultArg = argDef.filter(arg => !arg.config.isOptional)
- optionalArg = argDef.filter(arg => arg.config.isOptional)
-
- rule.sdk_set.forEach(arg => {
- let optItem = optionalArg.find(oarg => {
-
- if (oarg.sort == arg.sort) {
- return oarg
- }
- })
- if (optItem) {
- if (optItem.operators.length > 1) {
- optItem.operator = arg.operator
- //this.selOperator(optItem)
- }
-
- //璧嬪��
- optItem.sdk_arg_value = arg.sdk_arg_value
- //if(arg.sdk_arg_value.indexOf(',')>0){
- //鍒ゆ柇鏄惁鏄閫夊�肩被鍨嬬殑鍙傛暟
- let isMultiOne = optionalArg.find(oarg => oarg.sort == optItem.sort && optItem.config.isMulti)
- if (isMultiOne) {
- optItem.sdk_arg_value = arg.sdk_arg_value.split(',');
- }
-
- if (optItem.type == 'option') {
- this.setOptArgValueOptions(optItem)
- }
- optArg.push(optItem)
- } else {
- defaultArg.forEach(d => {
- if (d.sort == arg.sort) {
- if (arg.sdk_arg_value.indexOf(',') > 0) {
- //鍖洪棿鍊�
- d.min = arg.sdk_arg_value.split(',')[0];
- d.max = arg.sdk_arg_value.split(',')[1];
- d.operator = 'range'
- } else {
- d.sdk_arg_value = arg.sdk_arg_value
- }
- d.operator = arg.operator;
- }
- })
- }
- })
- optNames = optionalArg.map(arg => ({
- name: arg.name,
- sort: arg.sort,
- isSelected: false
- }))
-
- tempObj = {
- sdkObj,
- polygonObj: rule.polygonObj,
- rule_with_pre: rule.rule_with_pre,
- is_save_anyhow: rule.is_save_anyhow,
- isSpread: true,
- argDef,
- initAddOptional: false,
- optionalArg,
- optArg,
- defaultArg,
- optNames,
- isAddable: true,
- camera_id: rule.camera_id,
- polygon_id: rule.polygon_id
- }
- //鍥炴樉鏄惁鏄剧ず娣诲姞鍙�夊弬鏁�
- tempObj.initAddOptional =
- tempObj.optArg.length == 0 && tempObj.optionalArg.length > 0
- ? true
- : false;
-
- //鍥炴樉鏄惁鏄剧ず鍙�夊弬鏁版坊鍔犳寜閽�
- if (tempObj.optArg.length < tempObj.optionalArg.length) {
- tempObj.isAddable = true;
- } else {
- tempObj.isAddable = false;
- }
- //this.selectSDKOption(tempObj, false)
-
- this.sdkGroup.push(tempObj)
- //璁剧疆绠楁硶
- })
- //this.$nextTick(() => {})
- },
- delRule(rule) {
- this.$confirm('鎻愮ず锛氬垹闄ゅ悗锛岃鏉¤鍒欏皢澶辨晥锛屾槸鍚﹀垹闄わ紵', {
- center: true,
- cancelButtonClass: 'comfirm-class-cancle',
- confirmButtonClass: 'comfirm-class-sure'
- })
- .then(() => {
- deleteCameraRules({ groupId: rule.group_id }).then(res => {
- if (res && res.success) {
- this.$notify({
- type: 'success',
- message: '鍒犻櫎鎴愬姛'
- })
- this.$emit('delete-rule')
- } else {
- this.$notify({
- type: 'error',
- message: '鍒犻櫎澶辫触锛�'
- })
- }
- })
- })
- .catch(() => { })
- },
- submitRule() {
-
- let groupRule = { rules: [] }
-
- let group_text = ''
- let validateFlag = false
-
- if (this.isTemplate) {
- groupRule.rules = this.groupRules.map(r => {
- return {
- sdk_id: r.sdk_id,
- sdk_arg_alias: r.sdk_arg_alias,
- operator: r.operator,
- operator_type: r.operator_type,
- sdk_arg_value: r.sdk_arg_value,
- sort: 1,
- rule_with_pre: r.rule_with_pre
- }
- })
- } else {
- //鏍¢獙蹇呭~椤�
- let undefinished = this.sdkGroup.some((sdk, index) => {
-
- //娌℃湁閰嶇疆绠楁硶
- if (Object.keys(sdk.sdkObj).length == 0) {
- return sdk
- }
- //澶氫簬涓ら」绠楁硶鏃�,绠楁硶鍏崇郴涓嶈兘涓虹┖
- if (sdk.rule_with_pre === '' && index != 0) {
- return sdk
- }
- //琛ㄥ崟鎻愪氦鍓嶆牎楠�:鎵�鏈夌畻娉曠殑鍙傛暟鍊间笉鑳戒负绌�,(鏈塺ange鐨�,瑕佸湪range鑼冨洿鍐�)澶辩劍鏃舵牎楠�
- let defaultArgFlag = sdk.defaultArg.find(arg => !arg.sdk_arg_value)
- if (defaultArgFlag) {
- return sdk
- }
- //鏌ユ壘鍙�夊弬鏁板�兼槸鍚﹂兘璁剧疆(澶氶�夊�间负鏁扮粍绫诲瀷)
- let optionalArgFlag = sdk.optArg.find(arg => {
- if (arg.sdk_arg_value instanceof Array) {
- if (arg.sdk_arg_value.length == 0) {
- return arg
- }
- } else {
- //鍖洪棿绫诲弬鏁板�兼渶灏�,鏈�澶у�兼槸鍚﹂兘璁剧疆
- if (arg.operator == 'range') {
-
- if (!arg.min.trim() && arg.max.trim()) {
- return arg
- }
- }
- if (!arg.sdk_arg_value) {
- return arg
- }
- }
- });
-
- if (optionalArgFlag) {
- return sdk
- }
- });
- if (undefinished) {
- this.$notify({
- type: 'error',
- message: '绠楁硶鍙傛暟鏈畬鍠�,璇峰畬鍠勫悗鍐嶄繚瀛�'
- });
- return
- }
-
- //鏍¢獙鑻ョ畻娉曞叧绯讳负瑙﹀彂,鍒欑畻娉曞悕涓嶈兘閲�
- let sameSdk = this.sdkGroup.some((sdk, index) => {
-
- if (sdk.index != 0 && sdk.rule_with_pre == '=>') {
-
- if (sdk.sdkObj.id == this.sdkGroup[index - 1].sdkObj.id) {
- return sdk
- }
- }
- });
-
- if (sameSdk) {
- this.$notify({
- type: 'error',
- message: '绠楁硶鍏崇郴涓鸿Е鍙戞椂,绠楁硶鍚嶄笉鑳介噸澶�'
- });
- return
- }
-
- if (!validateFlag && !sameSdk) {
- validateFlag = true
- }
-
- this.sdkGroup.forEach(sdk => {
- let tempObj = {
- sdk_id: sdk.sdkObj.id,
- camera_id: sdk.camera_id,
- group_id: '',
- is_save_anyhow: sdk.is_save_anyhow,
- polygon_id: sdk.polygon_id,
- rule_with_pre: sdk.rule_with_pre,
- sdk_set: []
- }
-
- let defaultArgs = sdk.defaultArg.map(arg => ({
- operator: arg.operator,
- operator_type: arg.type,
- sdk_arg_alias: arg.alias,
- sdk_arg_value: arg.sdk_arg_value,
- sort: arg.sort
- }))
-
- let defaultArgDesc = '( '
- sdk.defaultArg.forEach(arg => {
- if (arg.operator == 'range') {
- let valRange = '';
-
- valRange = arg.sdk_arg_value.replace(',', '-');
- defaultArgDesc += `${arg.name}${arg.operators[0].name}${valRange}${arg.unit || ''}, `
- } else {
- defaultArgDesc += `${arg.name}${arg.operators[0].name}${
- arg.sdk_arg_value
- }${arg.unit || ''}, `
- }
-
- });
- ;
- defaultArgDesc = defaultArgDesc.substring(0, defaultArgDesc.length - 2)
- //defaultArgDesc = defaultArgDesc.substring(0,defaultArgDesc.length-3)+defaultArgDesc.substring(defaultArgDesc.length-1,defaultArgDesc.length);
- //defaultArgDesc = defaultArgDesc.substring(0,defaultArgDesc.length-1);
-
- //澶勭悊鍙�夐」鍙傛暟
-
- let optArgs = sdk.optArg.map(arg => ({
- operator: arg.operator,
- operator_type: arg.type,
- sdk_arg_alias: arg.alias,
- sdk_arg_value: arg.sdk_arg_value,
- sort: arg.sort
- }));
- //灏嗗閫夐」鐨勫�兼嫾鎴愬瓧绗︿覆
- optArgs.forEach(one => {
- if (one.sdk_arg_value instanceof Array) {
- one.sdk_arg_value = one.sdk_arg_value.join();
- }
- });
- let optArgDesc = ' '
- sdk.optArg.forEach(arg => {
- let val = '';
- let valRange = '';
-
-
- //澶勭悊涓嬫媺閫夊�肩被鍨�
- if (arg.type == 'option') {
- if (arg.sdk_arg_value instanceof Array) {
- //澶氶�夊��
- let multiNames = '';
- arg.sdk_arg_value.forEach(val => {
- let opV = arg.valueOptions.find(opt => opt.value == val);
- multiNames += opV.name + ' ';
- })
- val = multiNames;
-
- } else {
- let res = arg.valueOptions.find(
- opt => opt.value == arg.sdk_arg_value
- );
-
- val = res.name;
- }
- //optArgDesc += `,${arg.name}${arg.operators[0].operator}${val}${arg.unit || ''}, `
- } else {
- //optArgDesc += `,${arg.name}${arg.operators[0].operator}${ arg.sdk_arg_value }${arg.unit || ''}, `
- }
-
- let operatorSelected = arg.operators.find(opr => opr.operator == arg.operator)
- optArgDesc += `,${arg.name}${operatorSelected.name}${
- arg.type == 'option' ? val : arg.sdk_arg_value
- }${arg.unit || ''}, `
- })
- optArgDesc = optArgDesc.substring(0, optArgDesc.length - 2) + optArgDesc.substring(optArgDesc.length - 1, optArgDesc.length);
- optArgDesc += ')'
- tempObj.sdk_set = defaultArgs.concat(optArgs)
-
- groupRule.rules.push(tempObj)
-
- let rule_with_pre = ''
- if (sdk.rule_with_pre) {
- switch (sdk.rule_with_pre) {
- case '&&':
- rule_with_pre = ' and '
- break
- case '||':
- rule_with_pre = ' or '
- break
- case '=>':
- rule_with_pre = ' -> '
- break
- default:
- rule_with_pre = ''
- }
- }
- ;
- group_text += `${rule_with_pre ? "<br/>" + rule_with_pre + "<br/>" : ""} <span style="background-color:RGB(183,183,183);">${
- sdk.sdkObj.sdk_name
- }</span> ${
- sdk.polygonObj.name
- } ${defaultArgDesc}${optArgDesc}`;
-
- if (
- group_text.charAt(group_text.length - 3) == ',' &&
- group_text.charAt(group_text.length - 2) == ' ' &&
- group_text.charAt(group_text.length - 1) == ')'
- ) {
- group_text =
- group_text.substring(0, group_text.length - 3) +
- group_text.substring(group_text.length - 2, group_text.length)
- }
-
- })
- console.log(group_text)
- }
-
- groupRule.text = group_text
- groupRule.id = this.group_id
- return groupRule
-
- if (this.isLinkRule) {
- // 鍒ゆ柇瑙勫垯涓嚦灏戝寘鍚袱鎽勫儚鏈�
- let cameraIds = Array.from(
- new Set(
- this.sdkGroup.map(r => {
- return r.camera_id
- })
- )
- )
- if (cameraIds.length < 2) {
- this.$notify({
- type: 'error',
- //message: '闇�瑕�2涓笉鍚屾憚鍍忔満鎵嶈兘缁勬垚鑱斿姩瑙勫垯'
- message: '闇�瑕佽嚦灏�2涓笉鍚屾憚鍍忔満鎵嶈兘缁勬垚鑱斿姩鍦烘櫙'
- })
- return
- }
- }
- //if(validateFlag){
- this.onSubmitRule(payload)
- //}
- }
- }
-}
-</script>
-
-<style lang="scss">
-.edit-rules-box {
- width: 100%;
- padding: 0px;
- box-sizing: border-box;
- .sub-rules-box {
- width: 71%;
- min-width: 1127.4px;
- min-height: 50px;
- border-top: 1px solid #eee;
- padding-top: 7px;
-
- box-sizing: border-box;
- padding-bottom: 38px;
- .task-rules-button {
- text-align: right;
- margin: 15px;
- }
- .config-item {
- background: #f8f9f8;
- padding: 15px 25px;
- margin-bottom: 52px;
- position: relative;
- .el-select {
- width: 225px !important;
- }
- .init-sdk {
- margin-right: 30px;
- }
- .connection {
- background: #fff;
- position: absolute;
- width: 100%;
- top: -40px;
- }
- .top-line {
- height: 30px;
- .left {
- float: left;
- display: flex;
- }
- .right {
- float: right;
- cursor: pointer;
- .del {
- margin-right: 10px;
- color: rgb(231, 76, 60);
- }
- .collapse {
- font-size: 13px;
- display: inline-block;
- padding: 5px;
- cursor: pointer;
- }
- }
- }
- .argums {
- position: relative;
- // width: calc(100% - 25px);
- // top: 43px;
- // left: 0;
- // padding-left: 25px;
- // background: #f8f9f8;
- .argums-item {
- display: flex;
- align-items: center;
- margin: 7px 0;
- .arg-name,
- .operator-name {
- margin-right: 30px;
- }
- .arg-val {
- width: 245px;
- span {
- margin-left: 6px;
- }
- .range-min,
- .range-max {
- width: 88px;
- .el-input__inner {
- height: 28px;
- }
- }
- .devide {
- display: inline-block;
- width: 30px;
- height: 1px;
- background: #c5c5c5;
- vertical-align: top;
- margin: 14px 10px 0;
- }
- }
- }
- .el-input {
- width: 225px;
- }
- }
- }
- .btn-add {
- margin: 0 25px 15px;
- margin-top: -38px;
- .el-button {
- width: 370px;
- cursor: pointer;
- }
- }
- }
-
- .el-button--text {
- text-decoration: unset;
- }
- .el-input.is-disabled .el-input__inner {
- background: #fafafa;
- color: #606266;
- }
- p {
- text-align: left;
- // padding: 10px;
- box-sizing: border-box;
- }
-
- .task-blank {
- float: left;
- font-family: PingFangSC-Regular;
- font-size: 12px;
- color: #cccccc;
- margin-top: 5px;
- }
-
- .btn {
- cursor: pointer;
- color: #3d68e1;
- margin-left: 10px;
- font-size: 14px;
- }
-}
-</style>
+<template>
+ <div class="edit-rules-box">
+ <p style="padding: 0">
+ <b style="font-size: 14px; line-height: 28px;">绛栫暐閰嶇疆</b>
+ </p>
+ <div class="sub-rules-box">
+ <div style=" text-align: left;">
+ <!-- <div style="margin-left:10px;margin-top: 4px;" v-show="index > 0">
+ <el-select v-model="rule.rule_with_pre" placeholder="骞跺垪鍏崇郴" size="mini">
+ <el-option
+ v-for="subitem in VideoManageData.Dictionary.RULECOMPUTEBETWEEN"
+ :key="subitem.id"
+ :label="subitem.name"
+ :value="subitem.value"
+ :title="subitem.name"
+ ></el-option>
+ </el-select>
+ </div>-->
+ <div class="sdk-group">
+ <transition-group name="fade" mode="out-in" appear>
+ <div
+ class="config-item"
+ :class="{ init: index == 0 }"
+ v-cloak
+ v-for="(sdkItem, index) in sdkGroup"
+ :key="index"
+ >
+ <div class="connection" v-if="index !== 0">
+ <el-select
+ v-model="sdkItem.rule_with_pre"
+ size="mini"
+ placeholder="閫夊叧绯�"
+ @change="selConnection(sdkItem)"
+ >
+ <el-option value="&&" title="and/涓�" label="and/涓�"></el-option>
+ <el-option value="||" title="or/鎴�" label="or/鎴�"></el-option>
+ <el-option value="=>" title="鈥�>/瑙﹀彂" label="鈥�>/瑙﹀彂"></el-option>
+ </el-select>
+ <el-checkbox
+ v-show="sdkItem.rule_with_pre == '=>'"
+ v-model="sdkItem.is_save_anyhow"
+ style="margin-left:30px"
+ >淇濆瓨杩囩▼鏁版嵁</el-checkbox>
+ </div>
+ <div class="top-line">
+ <div class="left">
+ <div class="init-sdk">
+ <el-select
+ v-model="sdkItem.sdkObj"
+ value-key="id"
+ placeholder="閫夋嫨绠楁硶"
+ size="mini"
+ @change="selectSDKOption(sdkItem, true, index)"
+ >
+ <el-option
+ v-for="item in TaskMange.list1"
+ :key="item.id"
+ :label="item.sdk_name"
+ :value="item"
+ :title="item.sdk_name"
+ v-show="!item.del_flag"
+ ></el-option>
+ </el-select>
+ </div>
+ <div class="init-polygon">
+ <el-select
+ v-model="sdkItem.polygonObj"
+ v-if="!isTemplate"
+ value-key="polygonId"
+ placeholder="閫夋嫨鍖哄煙"
+ size="mini"
+ @change="selectPolygonOption(sdkItem)"
+ >
+ <el-option
+ v-for="subitem in allPolygonData"
+ :key="subitem.id"
+ :label="subitem.name"
+ :value="subitem"
+ :title="subitem.name"
+ ></el-option>
+ </el-select>
+ </div>
+ </div>
+ <div class="right">
+ <span class="del" v-show="!hideDel" @click="delConfigItem(index)">
+ <i class="iconfont iconshanchu"></i>
+ </span>
+ <span class="collapse" @click="collapseLine(index)">
+ <i
+ :class="
+ sdkItem.isSpread
+ ? 'el-icon-arrow-up'
+ : 'el-icon-arrow-down'
+ "
+ ></i>
+ </span>
+ </div>
+ </div>
+
+ <div class="argums derive-line" v-show="sdkItem.isSpread">
+ <div v-for="(arg, index) in sdkItem.defaultArg" :key="arg.sort">
+ <div class="argums-item" v-if="arg.config.isShow">
+ <div class="arg-name">
+ <!-- <el-input
+ v-model="arg.name"
+ size="mini"
+ :disabled="true"
+ ></el-input>-->
+ <el-select v-model="arg.name" size="mini" :disabled="true">
+ <el-option :label="arg.name" :title="arg.name" :value="arg"></el-option>
+ </el-select>
+ </div>
+ <div class="operator-name">
+ <!-- <el-input
+ v-if="arg.operators.length == 1"
+ v-model="arg.operators[0].operator"
+ :disabled="true"
+ size="mini"
+ ></el-input>-->
+ <el-select
+ :disabled="arg.operators.length==1"
+ v-model="arg.operator"
+ size="mini"
+ @change="selOperator(sdkItem)"
+ >
+ <el-option
+ v-for="operator in arg.operators"
+ :key="operator.operator"
+ :value="operator.operator"
+ :label="operator.name"
+ :title="operator.name"
+ ></el-option>
+ </el-select>
+ </div>
+ <div class="arg-val">
+ <div v-if="arg.operator == 'range'">
+ <el-input
+ class="range-min"
+ v-model="arg.min"
+ @blur="validateArgVal(arg, $event)"
+ ></el-input>
+ <span class="devide"></span>
+ <el-input
+ class="range-max"
+ v-model="arg.max"
+ @blur="validateArgVal(arg, $event)"
+ ></el-input>
+ <span>{{ arg.unit }}</span>
+ </div>
+ <div v-else>
+ <el-select v-if="arg.type == 'option'" v-model="arg.sdk_arg_value">
+ <el-option>璇烽�夋嫨</el-option>
+ </el-select>
+ <el-input
+ v-if="arg.type == 'value'"
+ v-model="arg.sdk_arg_value"
+ :placeholder="
+ arg.default_value ? arg.default_value : ''
+ "
+ size="mini"
+ :style="{ borderColor: tipColor }"
+ @blur="validateArgVal(arg, $event)"
+ ></el-input>
+ <span>{{ arg.unit }}</span>
+ </div>
+ </div>
+ <div
+ class="optional"
+ v-if="
+ sdkItem.initAddOptional &&
+ index == sdkItem.defaultArg.length - 1
+ "
+ >
+ <span class="btn" @click="addOptionalArg(sdkItem)">
+ <i class="iconfont iconhebingxingzhuang" style="font-size:16px"></i>
+ </span>
+ </div>
+ </div>
+ </div>
+ <div
+ class="argums-item optional-line"
+ v-for="optArgItem in sdkItem.optArg"
+ :key="optArgItem.sort"
+ >
+ <div class="arg-name">
+ <el-input
+ v-if="sdkItem.optNames.length == 1"
+ v-model="sdkItem.optNames[0].name"
+ size="mini"
+ :disabled="true"
+ ></el-input>
+ <el-select
+ v-if="sdkItem.optNames.length > 1"
+ v-model="optArgItem.name"
+ size="mini"
+ @change="selOptionalArg(sdkItem, optArgItem)"
+ >
+ <el-option
+ v-for="optName in sdkItem.optNames"
+ :disabled="optName.isSelected"
+ :key="optName.sort"
+ :label="optName.name"
+ :title="optName.name"
+ :value="optName.name"
+ ></el-option>
+ </el-select>
+ </div>
+ <div class="operator-name">
+ <!-- <el-input
+ v-model="optArgItem.operators[0].operator"
+ :disabled="true"
+ size="mini"
+ ></el-input>-->
+
+ <el-select
+ v-model="optArgItem.operator"
+ size="mini"
+ @change="selOperator(optArgItem)"
+ >
+ <el-option
+ v-for="operatorItem in optArgItem.operators"
+ :key="operatorItem.operator"
+ :value="operatorItem.operator"
+ :label="operatorItem.name"
+ :title="operatorItem.name"
+ ></el-option>
+ </el-select>
+ </div>
+ <div class="arg-val">
+ <el-select
+ v-if="optArgItem.type == 'option'"
+ v-model="optArgItem.sdk_arg_value"
+ :multiple="optArgItem.config.isMulti"
+ collapse-tags
+ size="mini"
+ >
+ <el-option
+ v-for="one in optArgItem.valueOptions"
+ :key="one.value"
+ :value="one.value"
+ :label="one.name"
+ :title="one.name"
+ ></el-option>
+ </el-select>
+ <el-input
+ v-if="optArgItem.type == 'value'"
+ v-model="optArgItem.sdk_arg_value"
+ size="mini"
+ @blur="$event => validateArgVal(optArgItem, $event)"
+ ></el-input>
+ <span>{{ optArgItem.unit }}</span>
+ </div>
+ <div class="optional">
+ <span class="btn" @click="addOptionalArg(sdkItem)" v-show="sdkItem.isAddable">
+ <i class="iconfont iconhebingxingzhuang" style="font-size:16px"></i>
+ </span>
+ <span class="btn" @click="delOptionalArg(sdkItem, optArgItem)">
+ <i class="iconfont iconshanchu11" style="font-size:16px"></i>
+ </span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </transition-group>
+ </div>
+ <div class="btn-add" v-show="isAdd && this.sdkGroup.length < 4">
+ <el-button size="mini" @click="addSdkItem">+ 娣诲姞绠楁硶</el-button>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import {
+ deleteCameraRules,
+ updateRuleDefence,
+ updateAlarmLevel
+} from '@/api/camera'
+
+export default {
+ name: 'SceneRuleEditor',
+ props: {
+ Cameras: {
+ type: Array,
+ default: () => {
+ return []
+ }
+ },
+ isTemplate: {
+ type: Boolean,
+ default: false
+ },
+ isLinkRule: {
+ type: Boolean,
+ default: false
+ },
+ includeSdks: {
+ type: Array
+ },
+ ruleList: {
+ type: String,
+ default: ''
+ },
+ onSubmitRule: {
+ type: Function,
+ default: () => false
+ }
+ },
+ // computed: {
+ // allPolygonData() {
+ // let polygon = []
+ // let cameras = [...this.Cameras]
+
+ // for (let i = 0; i < cameras.length; i++) {
+ // let polyOpt = cameras[i].polygonData.map(p => {
+ // return {
+ // defence_state: p.defence_state,
+ // polygonId: p.id,
+ // name: this.isLinkRule
+ // ? cameras[i].cameraName + ':' + p.name
+ // : p.name,
+
+ // cameraId: cameras[i].cameraId
+ // }
+ // })
+
+ // polygon = polygon.concat(polyOpt)
+ // }
+ // //娣诲姞鍦烘櫙鍒濆鍖栧尯鍩熼�夐」涓�'鍏ㄩ儴鍖哄煙'
+ // if (polygon.length > 0 && this.ruleList.length == 0) {
+ // this.polygonObj = polygon[0];
+ // this.sdkGroup[0].polygonObj = JSON.parse(JSON.stringify(this.polygonObj));
+ // this.selectPolygonOption(this.sdkGroup[0])
+ // }
+ // return polygon
+ // }
+ // },
+ watch: {
+ Cameras: {
+ handler(n, o) {
+ debugger
+ let polygon = []
+ let cameras = [...n]
+
+ for (let i = 0; i < cameras.length; i++) {
+ let polyOpt = cameras[i].polygonData.map(p => {
+ return {
+ defence_state: p.defence_state,
+ polygonId: p.id,
+ name: this.isLinkRule
+ ? cameras[i].cameraName + ':' + p.name
+ : p.name,
+
+ cameraId: cameras[i].cameraId
+ }
+ })
+ polygon = polygon.concat(polyOpt)
+
+ this.allPolygonData = polygon
+ //娣诲姞鍦烘櫙鍒濆鍖栧尯鍩熼�夐」涓�'鍏ㄩ儴鍖哄煙'
+ debugger
+ // if (polygon.length > 0 && this.ruleList == '') {
+ // this.polygonObj = polygon[0]
+ // this.sdkGroup[0].polygonObj = JSON.parse(
+ // JSON.stringify(this.polygonObj)
+ // )
+
+ // this.selectPolygonOption(this.sdkGroup[0])
+ // }
+ }
+ },
+ deep: true
+ },
+ sdkGroup: {
+ handler(newV, oldV) {
+ if (newV) {
+ debugger
+ newV.forEach(sdk => {
+ let rangeOne = sdk.defaultArg.find(
+ arg => arg.operators[0].operator == 'range'
+ )
+ if (rangeOne) {
+ debugger
+ if (rangeOne.min.trim() && rangeOne.max.trim()) {
+ // if (Number(rangeOne.min) >= Number(rangeOne.max)) {
+ // this.$notify({
+ // type: 'error',
+ // message: '鍖洪棿宸︿晶涓嶈兘澶т簬鎴栫瓑浜庡尯闂村彸渚х殑鍊�'
+ // })
+ // rangeOne.valid = false
+ // }
+ rangeOne.sdk_arg_value = rangeOne.min + ',' + rangeOne.max
+ } else {
+ rangeOne.sdk_arg_value = false;
+ }
+
+ }
+ })
+ let res = newV.find(item => {
+ return JSON.stringify(item.sdkObj) == '{}'
+ })
+ if (!res) {
+ this.isAdd = true
+ this.hideDel = false
+ } else {
+ this.isAdd = false
+ if (this.sdkGroup.length == 1) {
+ this.hideDel = true
+ } else {
+ this.hideDel = false
+ }
+ }
+ }
+ },
+ deep: true
+ }
+ // ruleList: {
+ // handler(newVal, oldVal) {
+ // debugger
+ // this.editHandle(newVal)
+ // }
+
+ // }
+ },
+ mounted() {
+ this.TaskMange.findAllSdk({installed:true})
+ //this.TaskMange.list1 = sdkJson.data;
+
+ //this.editHandle(this.ruleList)
+ },
+ data() {
+ return {
+ // rule: {
+ // sdk_id:'',
+ // sdkObj: {},
+ // polygonObj: {},
+ // argDef: []
+ // },
+ hideDel: true,
+ //isAddable: true,
+ allPolygonData: [],
+ group_id: '',
+ baseSdkItem: {
+ sdkObj: {},
+ polygonObj: {},
+ is_save_anyhow: true,
+ rule_with_pre: '',
+ isSpread: true,
+ argDef: [],
+ initAddOptional: false,
+ defaultArg: [],
+ optionalArg: [],
+ optArg: [],
+ optNames: [],
+ isAddable: true
+ },
+ sdkGroup: [
+ {
+ sdkObj: {},
+ polygonObj: {},
+ is_save_anyhow: true,
+ isSpread: true,
+ argDef: [],
+ initAddOptional: false,
+ defaultArg: [],
+ optionalArg: [],
+ optArg: [],
+ optNames: [],
+ isAddable: true
+ }
+ ],
+ polygonObj: {},
+ isSpread: true,
+ isAdd: false,
+ tipColor: 'yellow',
+ tasksTable: {},
+ groupRules: [],
+ sdksOption: [],
+ baseRule: {
+ camera_id: '',
+ id: '',
+ operator: '',
+ operator_type: '',
+ polygon_id: '',
+ rule_with_pre: '',
+ sdk_id: '',
+ sdk_arg_alias: '',
+ sdk_arg_value: '',
+ sdk_arg_defaultValue: '',
+ select_time_rule: '',
+ sdk_arg_type: '',
+ // task_id: "",
+
+ polygonObj: {},
+ taskObj: '',
+
+ sdkObj: {},
+ argObj: {},
+ operatorObj: {},
+ valueObj: {},
+
+ sdksOptions: [],
+ argsOptions: [],
+ argType: '',
+ computeOptions: [],
+ valueOptions: [],
+
+ sdkDesc: '',
+ argDesc: '',
+ operatorDesc: '',
+ typeDesc: '',
+ valueDesc: '',
+
+ unit: '',
+ value: '',
+ valid: true
+ }
+ }
+ },
+ methods: {
+ selConnection(sdkItem) {
+ debugger
+
+ },
+ addSdkItem() {
+ let itemTemp = JSON.parse(JSON.stringify(this.baseSdkItem));
+ //鍒濆鍖栧尯鍩�
+ itemTemp.polygonObj = JSON.parse(JSON.stringify(this.allPolygonData[0]))
+ this.selectPolygonOption(itemTemp)
+ this.sdkGroup.push(itemTemp)
+ },
+ delConfigItem(index) {
+ debugger
+ // if(index != 0){
+ // this.sdkGroup.splice(index,1);
+ // }else{
+ // //this.sdkGroup[0] = JSON.parse(JSON.stringify(this.baseSdkItem));
+ // this.sdkGroup.splice(0,1,JSON.parse(JSON.stringify(this.baseSdkItem)));
+ // }
+
+ //鍒犻櫎閫昏緫锛氬綋鍙湁涓�涓畻娉曟椂锛屽垹闄や細鍥炲埌鍒濆鐘舵�侊紱鏈夊涓畻娉曟椂锛屽垹闄ゆ棦绉婚櫎鏁翠釜绠楁硶椤�
+ if (this.sdkGroup.length == 1) {
+ let itemTemp = JSON.parse(JSON.stringify(this.baseSdkItem))
+ itemTemp.polygonObj = JSON.parse(JSON.stringify(this.allPolygonData[0]));
+ this.selectPolygonOption(itemTemp)
+ this.sdkGroup.splice(index, 1, itemTemp)
+ } else {
+ if(this.sdkGroup[index+1] && this.sdkGroup[index+1].rule_with_pre){
+ this.sdkGroup[index+1].rule_with_pre = '';
+ }
+
+ this.sdkGroup.splice(index, 1);
+ }
+ },
+ collapseLine(index) {
+ // let one = this.sdkGroup.find(sdk=>{
+ // return sdk.sdk_id == sdkId;
+ // });
+
+ this.sdkGroup[index].isSpread = !this.sdkGroup[index].isSpread
+ },
+ addOptionalArg(sdkItem) {
+ debugger
+ sdkItem.initAddOptional = false
+ sdkItem.optArg.forEach(arg => {
+ sdkItem.optNames.forEach(name => {
+ if (arg.sort == name.sort) {
+ name.isSelected = true
+ }
+ })
+ }) //鎵惧埌鍙�塻dkItem.optNames鐨勭涓�涓搴旂殑sdkItem.optionalArg聽push鍒皊dkItem.optArg
+ let oneNotSelected = sdkItem.optNames.find(name => !name.isSelected)
+ if (oneNotSelected) {
+ oneNotSelected.isSelected = true;
+ }
+
+ let argTemp = sdkItem.optionalArg.find(arg => {
+ return arg.sort == oneNotSelected.sort
+ })
+
+ let copyArgTemp = JSON.parse(JSON.stringify(argTemp))
+ if (copyArgTemp.type == 'option') {
+ // let alias = copyArgTemp.alias;
+ // console.log( this.VideoManageData.Dictionary[alias])
+ // copyArgTemp.valueOptions = this.VideoManageData.Dictionary[alias].map(r => {
+ // return {
+ // name: r.name,
+ // value: r.value
+ // }
+ // })
+
+ this.setOptArgValueOptions(copyArgTemp)
+ }
+
+ if (copyArgTemp.default_value) {
+ this.$set(copyArgTemp, 'sdk_arg_value', copyArgTemp.default_value)
+ }
+ sdkItem.optArg.push(copyArgTemp);
+ if (sdkItem.optArg.length < sdkItem.optionalArg.length) {
+ sdkItem.isAddable = true;
+ } else {
+ sdkItem.isAddable = false;
+ }
+ },
+ delOptionalArg(sdkItem, optArgItem) {
+ let index = sdkItem.optArg.findIndex(arg => arg.sort == optArgItem.sort)
+ sdkItem.optArg.splice(index, 1)
+ sdkItem.optNames.forEach(name => {
+ if (name.sort == optArgItem.sort) {
+ name.isSelected = false
+ }
+ })
+ sdkItem.initAddOptional = sdkItem.optArg.length == 0 ? true : false;
+ if (sdkItem.optArg.length < sdkItem.optionalArg.length) {
+ sdkItem.isAddable = true;
+ } else {
+ sdkItem.isAddable = false;
+ }
+ },
+ selOptionalArg(sdkItem, optArgItem) {
+ debugger
+ let newSort = 0
+ sdkItem.optNames.forEach(name => {
+ if (name.name == optArgItem.name) {
+ //鏂板垏鎹㈢殑鍙傛暟鍚�
+ name.isSelected = true
+ newSort = name.sort
+ } else if (name.sort == optArgItem.sort) {
+ //鍒囨崲鍓嶇殑鍙傛暟鍚�
+ name.isSelected = false
+ }
+ })
+ //鏍规嵁鏂扮殑鍙傛暟sort鎵惧埌鍏跺搴旈厤缃璞�
+ let argObj = sdkItem.optionalArg.find(arg => arg.sort == newSort)
+ if (argObj.type == 'option') {
+ this.setOptArgValueOptions(argObj);
+ }
+ debugger
+ //鏇挎崲鏂扮殑鍙傛暟閰嶇疆瀵硅薄
+ sdkItem.optArg.forEach((arg, index) => {
+ if (arg.sort == optArgItem.sort) {
+ this.$set(sdkItem.optArg, index, JSON.parse(JSON.stringify(argObj)))
+ }
+ })
+
+ console.log(argObj.valueOptions)
+ },
+ setOptArgValueOptions(optArg) {
+ let alias = optArg.alias;
+ console.log(this.VideoManageData.Dictionary[alias])
+ optArg.valueOptions = this.VideoManageData.Dictionary[alias].map(r => {
+ return {
+ name: r.name,
+ value: r.value
+ }
+ });
+ },
+ validateArgVal(sdkArgItem, e) {
+ debugger
+ if (typeof (sdkArgItem.sdk_arg_value) == 'string' && sdkArgItem.sdk_arg_value == '') {
+ this.$notify({
+ type: 'warning',
+ message: '鍙傛暟璁惧畾鍊间笉鑳戒负绌�!'
+ })
+ sdkArgItem.valid = false
+
+ return false
+ }
+ //杈撳叆闈炴暟瀛�
+
+ //鑼冨洿鏄惁鍚堟硶
+ if (sdkArgItem.range) {
+ let leftHand = sdkArgItem.range.substr(0, 1)
+ let rightHand = sdkArgItem.range.substr(sdkArgItem.range.length - 1, 1)
+ let reg = /.*(\d+),(\d+).*/
+ let res = sdkArgItem.range.match(reg)
+ let min = Number(res[1]),
+ max = Number(res[2])
+ debugger
+
+ //鍒ゆ柇闈炲尯闂寸被
+ if (sdkArgItem.sdk_arg_value && sdkArgItem.operator != 'range') {
+ if (leftHand == '(' && rightHand == ')') {
+ if (
+ Number(sdkArgItem.sdk_arg_value) <= min ||
+ Number(sdkArgItem.sdk_arg_value) >= max
+ ) {
+ sdkArgItem.valid = false
+
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟璁惧畾鍊奸』澶т簬${min},灏忎簬${max}`
+ })
+ return false
+ }
+ } else if (leftHand == '[' && rightHand == ')') {
+ if (
+ Number(sdkArgItem.sdk_arg_value) < min ||
+ Number(sdkArgItem.sdk_arg_value) >= max
+ ) {
+ sdkArgItem.valid = false
+
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬${max}`
+ })
+ return false
+ }
+ } else if (leftHand == '(' && rightHand == ']') {
+ if (
+ Number(sdkArgItem.sdk_arg_value) <= min ||
+ Number(sdkArgItem.sdk_arg_value) > max
+ ) {
+ sdkArgItem.valid = false
+
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟璁惧畾鍊奸』澶т簬${min},灏忎簬绛変簬${max}`
+ })
+ return false
+ }
+ } else if (leftHand == '[' && rightHand == ']') {
+ if (
+ Number(sdkArgItem.sdk_arg_value) < min ||
+ Number(sdkArgItem.sdk_arg_value) > max
+ ) {
+ sdkArgItem.valid = false
+ this.showErrorColor(e)
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬绛変簬${max}`
+ })
+ return false
+ }
+ }
+ } else if (sdkArgItem.min || sdkArgItem.max) {
+ //鍒ゆ柇鍖洪棿绫�
+ if (leftHand == '(' && rightHand == ')') {
+ if (
+ Number(sdkArgItem.min) <= min ||
+ Number(sdkArgItem.min) >= max
+ ) {
+ sdkArgItem.valid = false
+
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬${min},灏忎簬${max}`
+ });
+ return false
+ }
+ } else if (leftHand == '[' && rightHand == ')') {
+ if (Number(sdkArgItem.min) < min || Number(sdkArgItem.max) >= max) {
+ sdkArgItem.valid = false
+
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬${max}`
+ })
+ return false
+ }
+ } else if (leftHand == '(' && rightHand == ']') {
+ if (Number(sdkArgItem.min) <= min || Number(sdkArgItem.max) > max) {
+ sdkArgItem.valid = false
+
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬${min},灏忎簬绛変簬${max}`
+ })
+ return false
+ }
+ } else if (leftHand == '[' && rightHand == ']') {
+ if (Number(sdkArgItem.min) < min || Number(sdkArgItem.max) > max || Number(sdkArgItem.min) > max || Number(sdkArgItem.max) < min) {
+ sdkArgItem.valid = false
+ this.showErrorColor(e)
+ this.$notify({
+ type: 'warning',
+ message: `鍙傛暟鍖洪棿璁惧畾鍊奸』澶т簬绛変簬${min},灏忎簬绛変簬${max}`
+ })
+ return false
+ }
+ }
+ }
+ }
+ e.currentTarget.style.borderColor = ''
+ return true
+ },
+ showErrorColor(e) {
+ this.$nextTick(() => {
+ e.currentTarget.style.borderColor = 'red'
+ })
+ },
+ setSdksOptions(rule) {
+ rule.sdksOptions = this.includeSdks
+ },
+ setOperator(rule) {
+ rule.operator = rule.operatorObj.value
+ rule.operatorDesc = rule.operatorObj.name
+ },
+ setValue(rule) {
+ rule.valid = true
+
+ if (rule.operator_type === 'option') {
+ rule.sdk_arg_value = rule.valueObj.value ? rule.valueObj.value : ''
+ rule.typeDesc = '琚�夐」'
+ rule.valueDesc = rule.valueObj.name ? rule.valueObj.name : ''
+ } else {
+ rule.typeDesc = '鍊�'
+ rule.valueDesc = rule.sdk_arg_value
+ }
+ this.valideArgValue(rule)
+ },
+ selectPolygonOption(rule) {
+ debugger
+ rule.polygon_id = rule.polygonObj.polygonId
+ ? rule.polygonObj.polygonId
+ : rule.polygon_id
+ rule.camera_id = rule.polygonObj.cameraId
+ ? rule.polygonObj.cameraId
+ : rule.camera_id
+ rule.group_id = this.group_id
+ },
+ //閫夋嫨绠楁硶 resetArgs涓簍rue鏄坊鍔犱负false鏄垵濮嬪寲缂栬緫
+ selectSDKOption(sdkItem, resetArgs) {
+ debugger
+ //sdkItem.sdk_id = sdkItem.sdkObj.id;
+ if (resetArgs) {
+ sdkItem.argDef = JSON.parse(sdkItem.sdkObj.argDef)
+ console.log(sdkItem.argDef)
+ //鍙栧嚭榛樿鍙傛暟
+ sdkItem.defaultArg = sdkItem.argDef.filter(
+ arg => !arg.config.isOptional
+ )
+ //璧嬮粯璁perator/鍊�
+ sdkItem.defaultArg.forEach(arg => {
+ if (arg.operators.length == 1) {
+ this.$set(arg, 'operator', arg.operators[0].operator)
+
+ if (arg.operators[0].operator == 'range') {
+ //鍖洪棿鍊肩殑澶勭悊
+ debugger
+ //this.$set(arg, 'sdk_arg_value', arg.min+','+arg.max)
+ //this.$set(arg, 'sdk_arg_value', arg.range.substring(1,arg.range.length-1));
+ }
+ }
+
+ if (arg.default_value) {
+ //arg.sdk_arg_value = arg.default_value
+ this.$set(arg, 'sdk_arg_value', arg.default_value)
+ }
+ })
+ sdkItem.defaultArg
+ //鍙栧嚭鍙�夊弬鏁�
+ sdkItem.optionalArg = sdkItem.argDef.filter(
+ arg => arg.config.isOptional
+ )
+ sdkItem.optNames = sdkItem.optionalArg.map(arg => ({
+ name: arg.name,
+ sort: arg.sort,
+ isSelected: false
+ }))
+ debugger
+ sdkItem.initAddOptional = sdkItem.optionalArg.length > 0 ? true : false
+ sdkItem.optArg = []
+ }
+
+ //娣诲姞鍦烘櫙鏃�,濡傛灉鍦烘櫙鍚嶇О涓虹┖,灏卞皢閫夋嫨鐨勭涓�涓畻娉曞悕鍚屾鍒板満鏅悕绉�
+ if (this.sdkGroup[0] && resetArgs) {
+ debugger
+ this.$emit('sdkNameChange', this.sdkGroup[0].sdkObj.sdk_name)
+ }
+
+ // 閫夐」鍒囨崲鏃堕渶瑕佸埛鏂癮rg鑿滃崟椤�
+ this.selectArgTypeOption(sdkItem, resetArgs)
+ },
+
+ selectArgTypeOption(rule, resetAlias) {
+ if (rule.sdk_arg_type == '') {
+ return
+ }
+
+ if (resetAlias) {
+ rule.sdk_arg_alias = ''
+ }
+
+ rule.argsOptions = rule.sdkObj.args
+
+ // 鏍规嵁arg绫诲瀷鏄剧ず鍙傛暟, 褰撳墠鍏ㄩ儴褰掍负 target
+ // if (rule.sdkObj.args) {
+ // rule.argsOptions = rule.sdkObj.args.filter(ele => {
+ // return ele.arg_type === rule.sdk_arg_type
+ // });
+ // } else {
+ // rule.argsOptions = [];
+ // }
+
+ rule.argObj = {}
+ },
+ //閫夋嫨绠楁硶閰嶇疆
+ selOperator(rule) {
+ debugger
+ },
+ selectArgsOption(rule, resetArgValue) {
+ // rule.operator_type = "";
+ // console.log(rule, '閫夋嫨绠楁硶鍙傛暟')
+ rule.sdk_arg_alias = rule.argObj.alias
+ rule.argDesc = rule.argObj.name
+ rule.sdk_arg_defaultValue = rule.argObj.default_value
+ rule.unit = rule.argObj.unit ? rule.argObj.unit : ''
+ //rule.default_value = rule.argObj.default_value ? Number(rule.argObj.default_value) : 0;
+
+ //console.log("缃俊搴︾殑榛樿鍊间负",rule.sdk_arg_defaultValue)
+ // 淇濆瓨鍊肩被鍨�
+ rule.argType = rule.argObj.type
+ if (rule.argType === 'option') {
+ rule.operator_type = 'option'
+ // 璁剧疆榛樿鏉′欢鍊�
+ this.VideoManageData.Dictionary.RULECOMPUTE.forEach(opt => {
+ if (opt.value == '==') {
+ rule.operatorObj = opt
+ }
+ })
+
+ this.setOperator(rule)
+
+ this.selectValueOption(rule)
+ } else {
+ // 璁剧疆榛樿鏉′欢鍊�
+ rule.operator_type = 'value'
+ if (resetArgValue) {
+ rule.sdk_arg_value = ''
+
+ this.VideoManageData.Dictionary.RULECOMPUTE.forEach(opt => {
+ if (opt.value == '>=') {
+ rule.operatorObj = opt
+ }
+ })
+ } else {
+ // 缂栬緫瑙勫垯鍖归厤
+ this.VideoManageData.Dictionary.RULECOMPUTE.forEach(opt => {
+ if (opt.value == rule.operator) {
+ rule.operatorObj = opt
+ }
+ })
+ }
+ this.setOperator(rule)
+ }
+ },
+ selectValueOption(rule) {
+ if (rule.sdk_arg_alias === 'time_rule') {
+ rule.valueOptions = this.VideoManageData.TimeRules.map(r => {
+ return {
+ name: r.name,
+ value: r.id
+ }
+ })
+ } else if (rule.sdk_arg_alias === 'compareBase') {
+ rule.valueOptions = this.VideoManageData.TagList.map(r => {
+ return {
+ name: r.tableName,
+ value: r.id
+ }
+ })
+ } else {
+ let ops = this.VideoManageData.Dictionary[rule.sdk_arg_alias]
+ if (ops && ops instanceof Array) {
+ rule.valueOptions = ops.map(r => {
+ return {
+ name: r.name,
+ value: r.value
+ }
+ })
+ }
+ }
+ },
+
+ valideArgValue(rule) {
+ if (rule.sdk_arg_value == '') {
+ this.$notify({
+ type: 'warning',
+ message: '鍙傛暟璁惧畾鍊间笉鑳戒负绌�!'
+ })
+ rule.valid = false
+ return false
+ }
+
+ if (rule.argObj && rule.argObj.range) {
+ // 濡傛灉璁剧疆浜嗙畻娉曢粯璁ゅ�硷紝鍒欏垽鏂笉鑳藉皬浜庤鍊�
+ if (rule.argObj.default_value) {
+ if (
+ parseInt(rule.sdk_arg_value) < parseInt(rule.sdk_arg_defaultValue)
+ ) {
+ rule.valid = false
+ this.$notify({
+ type: 'warning',
+ message:
+ '鍙傛暟璁惧畾鍊间笉鑳藉皬浜庣畻娉曞弬鏁伴粯璁ゅ�� ' + rule.sdk_arg_defaultValue
+ })
+ rule.valueDesc = rule.sdk_arg_value = rule.argObj.default_value
+ rule.valid = false
+ return false
+ }
+ }
+
+ // let re = /(?<=,).*?(?=]|\))/
+ let re = /.*,(\d+)/
+ let max = rule.argObj.range.match(re)[1]
+ // console.log(max,'鑾峰彇鑼冨洿鏈�澶у��')
+ if (Number(rule.sdk_arg_value) > Number(max)) {
+ rule.valid = false
+ this.$notify({
+ type: 'warning',
+ message: '鍙傛暟璁惧畾鍊间笉鑳藉ぇ浜�' + max
+ })
+ return false
+ }
+ }
+
+ return true
+ },
+ parataxis(rule_with_pre) {
+ let relation = ''
+ this.VideoManageData.Dictionary.RULECOMPUTEBETWEEN.forEach(pre => {
+ if (pre.value === rule_with_pre) {
+ relation = pre.name
+ }
+ })
+
+ return relation
+ },
+
+ generatDescription() {
+ let desc = ''
+ this.groupRules.forEach((r, index) => {
+ // console.log(r,index,'鎷兼帴')
+ if (index === 0) {
+ desc += r.sdkDesc + r.argDesc + r.operatorDesc + r.valueDesc + r.unit
+ } else {
+ desc +=
+ ' ' +
+ this.parataxis(r.rule_with_pre) +
+ ' ' +
+ r.sdkDesc +
+ r.argDesc +
+ r.operatorDesc +
+ r.valueDesc +
+ r.unit
+ }
+ })
+ // console.log(desc,'鎷兼帴')
+ return desc
+ },
+ createRule() {
+ if (!this.isTemplate && this.Cameras.length > 0) {
+ // 鏈�変腑鎽勫儚鏈烘垨鑰呮湭閫変腑鎽勫儚鏈轰换鍔★紝涓嶆墽琛屽垱寤�
+ if (!this.Cameras[0].cameraId) return false
+ }
+ this.group_id = ''
+ //this.addRule(0);
+ },
+
+ //娓呯┖閰嶇疆骞跺垵濮嬪寲
+ cleanRule() {
+ this.group_id = ''
+ this.sdkGroup.splice(0, this.sdkGroup.length)
+ this.addSdkItem();
+ },
+ addRule(index) {
+ let newRule = JSON.parse(JSON.stringify(this.baseRule))
+ newRule.sdksOptions = this.includeSdks
+ if (!this.isLinkRule) {
+ // 璁剧疆榛樿鍏ㄩ儴鍖哄煙
+ // if (!this.isTemplate) {
+ // newRule.polygonObj = this.allPolygonData[0];
+ // this.selectPolygonOption(newRule)
+ // }
+ // 璁剧疆绠楁硶
+ // newRule.sdksOptions = this.includeSdks;
+ // 璁剧疆榛樿绠楁硶
+ // newRule.sdkObj = newRule.sdksOptions[0]
+ // this.selectSDKOption(newRule, false)
+ // newRule.sdk_arg_type = "target"
+ // this.selectArgTypeOption(newRule, true)
+ }
+
+ // this.groupRules.push(newRule);
+ // 鎻掑叆鍒版寚瀹氫綅缃�
+ this.groupRules.splice(index + 1, 0, newRule)
+ },
+ editHandle(ruleTxt) {
+ debugger
+ // if (ruleTxt.length < 1) {
+ // return
+ // }
+ let ruleInfo = JSON.parse(ruleTxt);
+ debugger;
+
+ //let ruleInfo = JSON.parse(ruleTxt)
+ this.editRule(ruleInfo)
+ // 濡傛灉鏄仈鍔ㄤ换鍔�, 鏌ヨ鑱斿姩鎽勫儚鏈哄垪琛�, 灏嗘爲閫変腑鐨勫垪琛ㄦ洿鏀逛负璇ユ潯瑙勫垯鎵�闇�瑕佺殑鎽勫儚鏈�, 骞跺浠藉綋鍓嶇殑閫変腑鐘舵��, 瑙勫垯淇濆瓨鍚庢仮澶�
+ // if (this.isLinkRule) {
+ // this.VideoRuleData.treeSelectedNodesBackupOnEditLinkRule = [...this.TreeDataPool.selectedNodes]
+ // this.VideoRuleData.editLinkRuleRow = { ...ruleInfo }
+
+ // this.TreeDataPool.selectedNodes = ruleInfo.group_rules.map(r => {
+ // return r.camera_id
+ // })
+ // this.$nextTick(() => {
+ // setTimeout(() => {
+ // this.editRule(ruleInfo)
+ // }, 1000)
+ // })
+ // } else {
+ // this.editRule(ruleInfo)
+ // }
+ },
+ editRule(ruleGroup) {
+ debugger
+ this.sdkGroup = []
+ this.group_id = ''
+
+ // this.sdkGroup = ruleGroup;
+ // sdkGroup: [
+ // {
+ // sdkObj: {},
+ // polygonObj: {},
+ // is_save_anyhow: true,
+ // isSpread: true,
+ // argDef: [],
+ // initAddOptional: false,
+ // defaultArg: [],
+ // optionalArg: [],
+ // optArg: [],
+ // optNames: []
+ // }
+ // ],
+ ruleGroup.forEach(rule => {
+ debugger
+ let tempObj = {}
+
+ if (rule.group_id && rule.group_id != '') {
+ this.group_id = rule.group_id
+ }
+
+ // 濉厖鍖哄煙閫夐」鍒楄〃
+ this.allPolygonData.forEach(p => {
+ if (p.polygonId === rule.polygon_id) {
+ rule.polygonObj = p
+ }
+ })
+
+ if (!rule.polygonObj) {
+ rule.polygonObj = {
+ cameraId: rule.camera_id,
+ defence_state: 1,
+ name: '鏈煡鍖哄煙',
+ polygonId: rule.polygon_id
+ }
+ }
+ console.log(rule)
+
+ // 璁剧疆鍖哄煙
+ this.selectPolygonOption(rule)
+
+ //绠楁硶瀵硅薄,绠楁硶鍙傛暟閰嶇疆鏁扮粍,(鐢ㄤ簬鏁版嵁澶勭悊鐨�)榛樿鍙傛暟鏁扮粍, 鍙�夊弬鏁版暟缁�, 宸查厤缃殑鍙�夊弬鏁版暟缁�, (鐢ㄤ簬鍘婚噸鍒ゆ柇)瀛樻斁鍙�夊弬鏁板悕鐨勬暟缁�
+ let sdkObj = {},
+ argDef = [],
+ defaultArg = [],
+ optionalArg = [],
+ optArg = [],
+ optNames = []
+
+ sdkObj = this.TaskMange.list1.find(sdk => sdk.id == rule.sdk_id)
+
+ argDef = JSON.parse(sdkObj.argDef)
+ defaultArg = argDef.filter(arg => !arg.config.isOptional)
+ optionalArg = argDef.filter(arg => arg.config.isOptional)
+
+ rule.sdk_set.forEach(arg => {
+ let optItem = optionalArg.find(oarg => {
+ if (oarg.sort == arg.sort) {
+ return oarg
+ }
+ })
+ if (optItem) {
+ if (optItem.operators.length > 1) {
+ optItem.operator = arg.operator
+ //this.selOperator(optItem)
+ }
+
+ //璧嬪��
+ optItem.sdk_arg_value = arg.sdk_arg_value
+ //if(arg.sdk_arg_value.indexOf(',')>0){
+ //鍒ゆ柇鏄惁鏄閫夊�肩被鍨嬬殑鍙傛暟
+ let isMultiOne = optionalArg.find(oarg => oarg.sort == optItem.sort && optItem.config.isMulti)
+ if (isMultiOne) {
+ optItem.sdk_arg_value = arg.sdk_arg_value.split(',');
+ }
+
+ if (optItem.type == 'option') {
+ this.setOptArgValueOptions(optItem)
+ }
+ optArg.push(optItem)
+ } else {
+ defaultArg.forEach(d => {
+ if (d.sort == arg.sort) {
+ if (arg.sdk_arg_value.indexOf(',') > 0) {
+ //鍖洪棿鍊�
+ d.min = arg.sdk_arg_value.split(',')[0];
+ d.max = arg.sdk_arg_value.split(',')[1];
+ d.operator = 'range'
+ } else {
+ d.sdk_arg_value = arg.sdk_arg_value
+ }
+ d.operator = arg.operator;
+ }
+ })
+ }
+ })
+ optNames = optionalArg.map(arg => ({
+ name: arg.name,
+ sort: arg.sort,
+ isSelected: false
+ }))
+
+ tempObj = {
+ sdkObj,
+ polygonObj: rule.polygonObj,
+ rule_with_pre: rule.rule_with_pre,
+ is_save_anyhow: rule.is_save_anyhow,
+ isSpread: true,
+ argDef,
+ initAddOptional: false,
+ optionalArg,
+ optArg,
+ defaultArg,
+ optNames,
+ isAddable: true,
+ camera_id: rule.camera_id,
+ polygon_id: rule.polygon_id
+ }
+ //鍥炴樉鏄惁鏄剧ず娣诲姞鍙�夊弬鏁�
+ tempObj.initAddOptional =
+ tempObj.optArg.length == 0 && tempObj.optionalArg.length > 0
+ ? true
+ : false;
+ debugger
+ //鍥炴樉鏄惁鏄剧ず鍙�夊弬鏁版坊鍔犳寜閽�
+ if (tempObj.optArg.length < tempObj.optionalArg.length) {
+ tempObj.isAddable = true;
+ } else {
+ tempObj.isAddable = false;
+ }
+ //this.selectSDKOption(tempObj, false)
+ debugger
+ this.sdkGroup.push(tempObj)
+ //璁剧疆绠楁硶
+ })
+ //this.$nextTick(() => {})
+ },
+ delRule(rule) {
+ this.$confirm('鎻愮ず锛氬垹闄ゅ悗锛岃鏉¤鍒欏皢澶辨晥锛屾槸鍚﹀垹闄わ紵', {
+ center: true,
+ cancelButtonClass: 'comfirm-class-cancle',
+ confirmButtonClass: 'comfirm-class-sure'
+ })
+ .then(() => {
+ deleteCameraRules({ groupId: rule.group_id }).then(res => {
+ if (res && res.success) {
+ this.$notify({
+ type: 'success',
+ message: '鍒犻櫎鎴愬姛'
+ })
+ this.$emit('delete-rule')
+ } else {
+ this.$notify({
+ type: 'error',
+ message: '鍒犻櫎澶辫触锛�'
+ })
+ }
+ })
+ })
+ .catch(() => { })
+ },
+ submitRule() {
+ debugger
+ let groupRule = { rules: [] }
+
+ let group_text = ''
+ let validateFlag = false
+
+ if (this.isTemplate) {
+ groupRule.rules = this.groupRules.map(r => {
+ return {
+ sdk_id: r.sdk_id,
+ sdk_arg_alias: r.sdk_arg_alias,
+ operator: r.operator,
+ operator_type: r.operator_type,
+ sdk_arg_value: r.sdk_arg_value,
+ sort: 1,
+ rule_with_pre: r.rule_with_pre
+ }
+ })
+ } else {
+ //鏍¢獙蹇呭~椤�
+ let undefinished = this.sdkGroup.some((sdk, index) => {
+ debugger
+ //娌℃湁閰嶇疆绠楁硶
+ if (Object.keys(sdk.sdkObj).length == 0) {
+ return sdk
+ }
+ //澶氫簬涓ら」绠楁硶鏃�,绠楁硶鍏崇郴涓嶈兘涓虹┖
+ if (sdk.rule_with_pre === '' && index != 0) {
+ return sdk
+ }
+ //琛ㄥ崟鎻愪氦鍓嶆牎楠�:鎵�鏈夌畻娉曠殑鍙傛暟鍊间笉鑳戒负绌�,(鏈塺ange鐨�,瑕佸湪range鑼冨洿鍐�)澶辩劍鏃舵牎楠�
+ let defaultArgFlag = sdk.defaultArg.find(arg => !arg.sdk_arg_value)
+ if (defaultArgFlag) {
+ return sdk
+ }
+ //鏌ユ壘鍙�夊弬鏁板�兼槸鍚﹂兘璁剧疆(澶氶�夊�间负鏁扮粍绫诲瀷)
+ let optionalArgFlag = sdk.optArg.find(arg => {
+ if (arg.sdk_arg_value instanceof Array) {
+ if (arg.sdk_arg_value.length == 0) {
+ return arg
+ }
+ } else {
+ //鍖洪棿绫诲弬鏁板�兼渶灏�,鏈�澶у�兼槸鍚﹂兘璁剧疆
+ if (arg.operator == 'range') {
+ debugger
+ if (!arg.min.trim() && arg.max.trim()) {
+ return arg
+ }
+ }
+ if (!arg.sdk_arg_value) {
+ return arg
+ }
+ }
+ });
+
+ if (optionalArgFlag) {
+ return sdk
+ }
+ });
+
+ if (undefinished) {
+ this.$notify({
+ type: 'error',
+ message: '绠楁硶鍙傛暟鏈畬鍠�,璇峰畬鍠勫悗鍐嶄繚瀛�'
+ });
+ return false
+ }
+ //鏍¢獙鍖洪棿宸︿晶鍊兼槸鍚﹀皬浜庡彸渚у��
+ let illegalRange = this.sdkGroup.some((sdk,index)=>{
+ let rangeArg = sdk.defaultArg.find(arg=>arg.operator=='range');
+ if(rangeArg){
+ if (Number(rangeArg.max) <= Number(rangeArg.min)) {
+ return sdk
+ }
+ }
+ });
+ if(illegalRange){
+ this.$notify({
+ type: 'error',
+ message: '鍖洪棿宸︿晶涓嶈兘澶т簬鎴栫瓑浜庡尯闂村彸渚х殑鍊�'
+ });
+ return false
+ }
+ //鏍¢獙鑻ョ畻娉曞叧绯讳负瑙﹀彂,鍒欑畻娉曞悕涓嶈兘閲�
+ let sameSdk = this.sdkGroup.some((sdk, index) => {
+ debugger
+ if (sdk.index != 0 && sdk.rule_with_pre == '=>') {
+ debugger
+ if (sdk.sdkObj.id == this.sdkGroup[index - 1].sdkObj.id) {
+ return sdk
+ }
+ }
+ });
+
+ if (sameSdk) {
+ this.$notify({
+ type: 'error',
+ message: '绠楁硶鍏崇郴涓鸿Е鍙戞椂,绠楁硶鍚嶄笉鑳介噸澶�'
+ });
+ return false
+ }
+
+ if (!validateFlag && !sameSdk) {
+ validateFlag = true
+ }
+
+ this.sdkGroup.forEach(sdk => {
+ let tempObj = {
+ sdk_id: sdk.sdkObj.id,
+ camera_id: sdk.camera_id,
+ group_id: '',
+ is_save_anyhow: sdk.is_save_anyhow,
+ polygon_id: sdk.polygon_id,
+ rule_with_pre: sdk.rule_with_pre,
+ sdk_set: []
+ }
+
+ let defaultArgs = sdk.defaultArg.map(arg => ({
+ operator: arg.operator,
+ operator_type: arg.type,
+ sdk_arg_alias: arg.alias,
+ sdk_arg_value: arg.sdk_arg_value,
+ sort: arg.sort
+ }))
+
+ let defaultArgDesc = '( '
+ sdk.defaultArg.forEach(arg => {
+ if (arg.operator == 'range') {
+ let valRange = '';
+ debugger
+ valRange = arg.sdk_arg_value.replace(',', '-');
+ defaultArgDesc += `${arg.name}${arg.operators[0].name}${valRange}${arg.unit || ''}, `
+ } else {
+ defaultArgDesc += `${arg.name}${arg.operators[0].name}${
+ arg.sdk_arg_value
+ }${arg.unit || ''}, `
+ }
+
+ });
+ debugger;
+ defaultArgDesc = defaultArgDesc.substring(0, defaultArgDesc.length - 2)
+ //defaultArgDesc = defaultArgDesc.substring(0,defaultArgDesc.length-3)+defaultArgDesc.substring(defaultArgDesc.length-1,defaultArgDesc.length);
+ //defaultArgDesc = defaultArgDesc.substring(0,defaultArgDesc.length-1);
+
+ //澶勭悊鍙�夐」鍙傛暟
+
+ let optArgs = sdk.optArg.map(arg => ({
+ operator: arg.operator,
+ operator_type: arg.type,
+ sdk_arg_alias: arg.alias,
+ sdk_arg_value: arg.sdk_arg_value,
+ sort: arg.sort
+ }));
+ //灏嗗閫夐」鐨勫�兼嫾鎴愬瓧绗︿覆
+ optArgs.forEach(one => {
+ if (one.sdk_arg_value instanceof Array) {
+ one.sdk_arg_value = one.sdk_arg_value.join();
+ }
+ });
+ let optArgDesc = ' '
+ sdk.optArg.forEach(arg => {
+ let val = '';
+ let valRange = '';
+
+
+ //澶勭悊涓嬫媺閫夊�肩被鍨�
+ if (arg.type == 'option') {
+ if (arg.sdk_arg_value instanceof Array) {
+ //澶氶�夊��
+ let multiNames = '';
+ arg.sdk_arg_value.forEach(val => {
+ let opV = arg.valueOptions.find(opt => opt.value == val);
+ multiNames += opV.name + ' ';
+ })
+ val = multiNames;
+
+ } else {
+ let res = arg.valueOptions.find(
+ opt => opt.value == arg.sdk_arg_value
+ );
+
+ val = res.name;
+ }
+ //optArgDesc += `,${arg.name}${arg.operators[0].operator}${val}${arg.unit || ''}, `
+ } else {
+ //optArgDesc += `,${arg.name}${arg.operators[0].operator}${ arg.sdk_arg_value }${arg.unit || ''}, `
+ }
+
+ let operatorSelected = arg.operators.find(opr => opr.operator == arg.operator)
+ optArgDesc += `,${arg.name}${operatorSelected.name}${
+ arg.type == 'option' ? val : arg.sdk_arg_value
+ }${arg.unit || ''}, `
+ })
+ optArgDesc = optArgDesc.substring(0, optArgDesc.length - 2) + optArgDesc.substring(optArgDesc.length - 1, optArgDesc.length);
+ optArgDesc += ')'
+ tempObj.sdk_set = defaultArgs.concat(optArgs)
+
+ groupRule.rules.push(tempObj)
+
+ let rule_with_pre = ''
+ if (sdk.rule_with_pre) {
+ switch (sdk.rule_with_pre) {
+ case '&&':
+ rule_with_pre = ' and '
+ break
+ case '||':
+ rule_with_pre = ' or '
+ break
+ case '=>':
+ rule_with_pre = ' -> '
+ break
+ default:
+ rule_with_pre = ''
+ }
+ }
+ debugger;
+ group_text += `${rule_with_pre ? "<br/>" + rule_with_pre + "<br/>" : ""} <span style="background-color:RGB(183,183,183);">${
+ sdk.sdkObj.sdk_name
+ }</span> ${
+ sdk.polygonObj.name
+ } ${defaultArgDesc}${optArgDesc}`;
+
+ if (
+ group_text.charAt(group_text.length - 3) == ',' &&
+ group_text.charAt(group_text.length - 2) == ' ' &&
+ group_text.charAt(group_text.length - 1) == ')'
+ ) {
+ group_text =
+ group_text.substring(0, group_text.length - 3) +
+ group_text.substring(group_text.length - 2, group_text.length)
+ }
+ debugger
+ })
+ console.log(group_text)
+ }
+
+ groupRule.text = group_text
+ groupRule.id = this.group_id
+ return groupRule
+
+ if (this.isLinkRule) {
+ // 鍒ゆ柇瑙勫垯涓嚦灏戝寘鍚袱鎽勫儚鏈�
+ let cameraIds = Array.from(
+ new Set(
+ this.sdkGroup.map(r => {
+ return r.camera_id
+ })
+ )
+ )
+ if (cameraIds.length < 2) {
+ this.$notify({
+ type: 'error',
+ //message: '闇�瑕�2涓笉鍚屾憚鍍忔満鎵嶈兘缁勬垚鑱斿姩瑙勫垯'
+ message: '闇�瑕佽嚦灏�2涓笉鍚屾憚鍍忔満鎵嶈兘缁勬垚鑱斿姩鍦烘櫙'
+ })
+ return
+ }
+
+ // 鑱斿姩瑙勫垯缂栬緫鍚庯紝鎭㈠涔嬪墠閫変腑鐨勬憚鍍忔満
+ // if (this.VideoRuleData.treeSelectedNodesBackupOnEditLinkRule.length) {
+ // this.TreeDataPool.selectedNodes = this.VideoRuleData.treeSelectedNodesBackupOnEditLinkRule
+ // this.VideoRuleData.treeSelectedNodesBackupOnEditLinkRule = []
+ // }
+ }
+ //if(validateFlag){
+ this.onSubmitRule(payload)
+ //}
+ }
+ }
+}
+</script>
+
+<style lang="scss">
+body{
+ font-size: 12px;
+}
+.edit-rules-box {
+ width: 100%;
+ padding: 0px;
+ box-sizing: border-box;
+ .sub-rules-box {
+ width: 71%;
+ min-width: 1127.4px;
+ min-height: 50px;
+ border-top: 1px solid #eee;
+ padding-top: 7px;
+
+ box-sizing: border-box;
+ padding-bottom: 38px;
+ .task-rules-button {
+ text-align: right;
+ margin: 15px;
+ }
+ .config-item {
+ background: #f8f9f8;
+ padding: 15px 25px;
+ margin-bottom: 52px;
+ position: relative;
+ .el-select {
+ width: 225px !important;
+ }
+ .init-sdk {
+ margin-right: 30px;
+ }
+ .connection {
+ background: #fff;
+ position: absolute;
+ width: 100%;
+ top: -40px;
+ }
+ .top-line {
+ height: 30px;
+ .left {
+ float: left;
+ display: flex;
+ }
+ .right {
+ float: right;
+ cursor: pointer;
+ .del {
+ margin-right: 10px;
+ color: rgb(231, 76, 60);
+ }
+ .collapse {
+ font-size: 13px;
+ display: inline-block;
+ padding: 5px;
+ cursor: pointer;
+ }
+ }
+ }
+ .argums {
+ position: relative;
+ // width: calc(100% - 25px);
+ // top: 43px;
+ // left: 0;
+ // padding-left: 25px;
+ // background: #f8f9f8;
+ .argums-item {
+ display: flex;
+ align-items: center;
+ margin: 7px 0;
+ .arg-name,
+ .operator-name {
+ margin-right: 30px;
+ }
+ .arg-val {
+ width: 245px;
+ span {
+ margin-left: 6px;
+ }
+ .range-min,
+ .range-max {
+ width: 88px;
+ .el-input__inner {
+ height: 28px;
+ }
+ }
+ .devide {
+ display: inline-block;
+ width: 30px;
+ height: 1px;
+ background: #c5c5c5;
+ vertical-align: top;
+ margin: 14px 10px 0;
+ }
+ }
+ }
+ .el-input {
+ width: 225px;
+ }
+ }
+ }
+ .btn-add {
+ margin: 0 25px 15px;
+ margin-top: -38px;
+ .el-button {
+ width: 370px;
+ cursor: pointer;
+ }
+ }
+ }
+
+ .el-button--text {
+ text-decoration: unset;
+ }
+ .el-input.is-disabled .el-input__inner {
+ background: #fafafa;
+ color: #606266;
+ }
+ p {
+ text-align: left;
+ // padding: 10px;
+ box-sizing: border-box;
+ }
+
+ .task-blank {
+ float: left;
+ font-family: PingFangSC-Regular;
+ font-size: 12px;
+ color: #cccccc;
+ margin-top: 5px;
+ }
+
+ .btn {
+ cursor: pointer;
+ color: #3d68e1;
+ margin-left: 10px;
+ font-size: 14px;
+ }
+}
+</style>
diff --git a/src/pages/cameraAccess/components/scene/SlideScene.vue b/src/pages/cameraAccess/components/scene/SlideScene.vue
index 8caaf09..8494733 100644
--- a/src/pages/cameraAccess/components/scene/SlideScene.vue
+++ b/src/pages/cameraAccess/components/scene/SlideScene.vue
@@ -1,285 +1,295 @@
-<template>
- <div class="swiper-box">
- <swiper ref="sceneSwiper" v-if="sceneData.length>=1" :options="swiperOption" class="swiper-box-container">
- <!-- <span class="task-tip" v-show="Camera.rules.length == 0 ">鏆傛棤鍦烘櫙,璇峰紑濮嬪垱寤�</span> -->
- <swiper-slide v-for="item in sceneData" :key="item.id+'s'">
- <div class="wrap-box" >
- <div class="inner">
- <div class="scenario-icon">
- <div class="single" v-if="item.rules.length==1">
- <div class="svg-wrap">
- <svg class="icon" aria-hidden="true" style="font-size:4rem;">
- <use :xlink:href="`#${item.rules[0].icon}`" />
- </svg>
- </div>
- </div>
- <div class="double" v-else-if="item.rules.length==2">
- <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="index">
- <svg class="icon" aria-hidden="true" style="font-size:2rem;">
- <use :xlink:href="`#${rule.icon}`" />
- </svg>
- </div>
- </div>
- <div class="third" v-else-if="item.rules.length==3">
- <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="'t'+index">
- <svg class="icon" aria-hidden="true" style="font-size:2rem;">
- <use :xlink:href="`#${rule.icon}`" />
- </svg>
- </div>
- </div>
- <div class="four" v-else-if="item.rules.length==4">
- <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="'f'+index">
- <svg class="icon" aria-hidden="true" style="font-size:2rem;">
- <use :xlink:href="`#${rule.icon}`" />
- </svg>
- </div>
- </div>
- </div>
- <div class="scenario-name">{{item.scene_name}}</div>
- </div>
- </div>
- </swiper-slide>
- </swiper>
- <div class="swiper-pre-border" v-show="sceneData.length > 4 ">
- <div class="icon-btn" slot="button-prev">
- <i class="iconfont iconzuo"></i>
- </div>
- </div>
- <div class="swiper-next-border" v-show="sceneData.length > 4 ">
- <div class="icon-btn" slot="button-next">
- <i class="iconfont iconyou1"></i>
- </div>
- </div>
- </div>
-</template>
-
-<script>
-export default {
- props:[
- // 'swiperOption',
- 'sceneData'
- ],
-
- data() {
- return {
- // mockSceneData: [
- // { scenename: "name1", id:1, icon: ["iconrenlianjiance", "icongetijingzhi"] },
- // { scenename: "name2", id:2, icon: ["iconchouyan-copy"] },
- // {
- // scenename: "name3",
- // id:3,
- // icon: [
- // "iconrenshukouzhao",
- // "iconchouyan-copy",
- // "iconrenlianjiance",
- // "icongetijingzhi"
- // ]
- // },
- // {
- // scenename: "name4",
- // id:4,
- // icon: ["iconchouyan-copy", "iconrenlianjiance", "icongetijingzhi"]
- // },
- // { scenename: "name5", id:5, icon: ["icongetijingzhi"] },
- // { scenename: "name6", id:6, icon: ["iconrenshukouzhao", "icongetijingzhi"] },
- // { scenename: "name7", id:7, icon: ["iconrenlianjiance"] }
- // ],
- swiperOption: {
- slidesPerView: 4,
- spaceBetween: 0,
- pagination: {
- el: ".swiper-pagination",
- clickable: true
- },
- navigation: {
- nextEl: ".swiper-next-border",
- prevEl: ".swiper-pre-border"
- },
- observer:true,//淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
- observeParents:true,//淇敼swiper鐨勭埗鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
- },
- mySwiper: {}
- }
- },
- mounted(){
- // this.mySwiper = this.$refs.sceneSwiper.swiper;
-
- },
- methods:{
- //鎷嗗垎浜岀淮鏁扮粍
- chunk(arr,size = 1){
- if(arr.length == 0) return;
- const tempContainer = [];
- let innerArr = [];
- arr.forEach(item => {
- if(innerArr.length == 0){
- tempContainer.push(innerArr);
- }
- innerArr.push(item);
- if(innerArr.length == size){
- innerArr = [];
- }
- });
- return tempContainer;
- }
- },
- computed: {
- slides() {
- return this.chunk(this.mockSceneData,5);
- }
- }
-};
-</script>
-
-<style lang="scss">
-
-.wrap-box {
- width: 100%;
- display: inline-block;
- .inner {
- width: 90%;
- box-sizing: border-box;
- position: relative;
- font-size: 14px;
- padding: 7px 0 48px;
- transition: all 1s;
- background: #ffffff;
- border: 1px solid #e2e2e2;
- box-shadow: 0 5px 12px 0 rgba(0, 0, 0, 0.07);
- border-radius: 4px;
- margin: auto;
- &:hover {
- .mask {
- display: block;
- }
- }
- .mask {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: rgba(0, 0, 0, 0.65);
- backdrop-filter: blur(1px) brightness(100%);
- text-align: center;
- z-index: 1;
- border-radius: 3px;
- display: none;
- .tool {
- position: absolute;
- top: 49%;
- left: 50%;
- transform: translate(-50%, -50%);
- i {
- font-size: 50px;
- }
- i:nth-of-type(1) {
- margin-right: 30px;
- }
- i:nth-of-type(2) {
- color: red;
- }
- }
- }
- .scenario-icon {
- display: flex;
- width: 85%;
- height: 85%;
- margin: auto;
- justify-content: center;
- align-content: center;
- align-items: center;
- .single,
- .double,
- .third,
- .four {
- width: 80%;
- padding-top: 80%;
- position: relative;
- margin: auto;
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- .svg-wrap {
- width: 47%;
- position: absolute;
- height: 0;
- padding-top: 47%;
- text-align: center;
- box-shadow: 0 0 3px 2px rgb(247, 247, 247) inset;
- svg {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- }
- }
- }
- .single {
- margin: auto;
- .svg-wrap {
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- box-shadow: none;
- }
- }
- .double {
- .svg-wrap:nth-of-type(1) {
- top: 50%;
- transform: translateY(-50%);
- left: 0;
- }
- .svg-wrap:nth-of-type(2) {
- top: 50%;
- transform: translateY(-50%);
- right: 0;
- }
- }
- .third {
- .svg-wrap:nth-of-type(1) {
- top: 0;
- left: 0;
- }
- .svg-wrap:nth-of-type(2) {
- top: 0;
- right: 0;
- }
- .svg-wrap:nth-of-type(3) {
- top: 50%;
- left: 50%;
- transform: translateX(-50%);
- }
- }
- .four {
- .svg-wrap:nth-of-type(1) {
- top: 0;
- left: 0;
- }
- .svg-wrap:nth-of-type(2) {
- top: 0;
- right: 0;
- }
- .svg-wrap:nth-of-type(3) {
- top: 50%;
- left: 0;
- }
- .svg-wrap:nth-of-type(4) {
- top: 50%;
- right: 0;
- }
- }
- }
- .scenario-name {
- width: 100%;
- height: 30px;
- box-sizing: border-box;
- padding: 0 4px;
- text-align: center;
- position: absolute;
- bottom: 10px;
- left: 0;
- }
- }
-}
+<template>
+ <div class="swiper-box">
+ <swiper ref="sceneSwiper" v-if="sceneData.length>=1" :options="swiperOption" class="swiper-box-container">
+ <!-- <span class="task-tip" v-show="Camera.rules.length == 0 ">鏆傛棤鍦烘櫙,璇峰紑濮嬪垱寤�</span> -->
+ <swiper-slide v-for="item in sceneData" :key="item.id+'s'">
+ <div class="wrap-box" >
+ <div class="inner">
+ <div class="scenario-icon">
+ <div class="single" v-if="item.rules.length==1">
+ <div class="svg-wrap">
+ <svg class="icon" aria-hidden="true" style="font-size:4rem;">
+ <use :xlink:href="`#${item.rules[0].icon}`" />
+ </svg>
+ <!-- <img class="baseImg" :src="`data:image/png;base64,${item.rules[0].iconBlob}`" alt=""> -->
+ </div>
+ </div>
+ <div class="double" v-else-if="item.rules.length==2">
+ <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="index">
+ <svg class="icon" aria-hidden="true" style="font-size:2rem;">
+ <use :xlink:href="`#${rule.icon}`" />
+ </svg>
+ <!-- <img class="baseImg" :src="`data:image/png;base64,${rule.iconBlob}`" alt=""> -->
+ </div>
+ </div>
+ <div class="third" v-else-if="item.rules.length==3">
+ <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="'t'+index">
+ <svg class="icon" aria-hidden="true" style="font-size:2rem;">
+ <use :xlink:href="`#${rule.icon}`" />
+ </svg>
+ <!-- <img class="baseImg" :src="`data:image/png;base64,${rule.iconBlob}`" alt=""> -->
+ </div>
+ </div>
+ <div class="four" v-else-if="item.rules.length==4">
+ <div class="svg-wrap" v-for="(rule,index) in item.rules" :key="'f'+index">
+ <svg class="icon" aria-hidden="true" style="font-size:2rem;">
+ <use :xlink:href="`#${rule.icon}`" />
+ </svg>
+ <!-- <img class="baseImg" :src="`data:image/png;base64,${rule.iconBlob}`" alt=""> -->
+ </div>
+ </div>
+ </div>
+ <div class="scenario-name">{{item.scene_name}}</div>
+ </div>
+ </div>
+ </swiper-slide>
+ </swiper>
+ <div class="swiper-pre-border" v-show="sceneData.length > 4 ">
+ <div class="icon-btn" slot="button-prev">
+ <i class="iconfont iconzuo"></i>
+ </div>
+ </div>
+ <div class="swiper-next-border" v-show="sceneData.length > 4 ">
+ <div class="icon-btn" slot="button-next">
+ <i class="iconfont iconyou1"></i>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props:[
+ // 'swiperOption',
+ 'sceneData'
+ ],
+
+ data() {
+ return {
+ // mockSceneData: [
+ // { scenename: "name1", id:1, icon: ["iconrenlianjiance", "icongetijingzhi"] },
+ // { scenename: "name2", id:2, icon: ["iconchouyan-copy"] },
+ // {
+ // scenename: "name3",
+ // id:3,
+ // icon: [
+ // "iconrenshukouzhao",
+ // "iconchouyan-copy",
+ // "iconrenlianjiance",
+ // "icongetijingzhi"
+ // ]
+ // },
+ // {
+ // scenename: "name4",
+ // id:4,
+ // icon: ["iconchouyan-copy", "iconrenlianjiance", "icongetijingzhi"]
+ // },
+ // { scenename: "name5", id:5, icon: ["icongetijingzhi"] },
+ // { scenename: "name6", id:6, icon: ["iconrenshukouzhao", "icongetijingzhi"] },
+ // { scenename: "name7", id:7, icon: ["iconrenlianjiance"] }
+ // ],
+ swiperOption: {
+ slidesPerView: 4,
+ spaceBetween: 0,
+ pagination: {
+ el: ".swiper-pagination",
+ clickable: true
+ },
+ navigation: {
+ nextEl: ".swiper-next-border",
+ prevEl: ".swiper-pre-border"
+ },
+ observer:true,//淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
+ observeParents:true,//淇敼swiper鐨勭埗鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper
+ },
+ mySwiper: {}
+ }
+ },
+ mounted(){
+ // this.mySwiper = this.$refs.sceneSwiper.swiper;
+
+ },
+ methods:{
+ //鎷嗗垎浜岀淮鏁扮粍
+ chunk(arr,size = 1){
+ if(arr.length == 0) return;
+ const tempContainer = [];
+ let innerArr = [];
+ arr.forEach(item => {
+ if(innerArr.length == 0){
+ tempContainer.push(innerArr);
+ }
+ innerArr.push(item);
+ if(innerArr.length == size){
+ innerArr = [];
+ }
+ });
+ return tempContainer;
+ }
+ },
+ computed: {
+ slides() {
+ return this.chunk(this.mockSceneData,5);
+ }
+ }
+};
+</script>
+
+<style lang="scss">
+.icon {
+ width: 1em;
+ height: 1em;
+ vertical-align: -0.15em;
+ fill: currentColor;
+ overflow: hidden;
+}
+.wrap-box {
+ width: 100%;
+ display: inline-block;
+ .inner {
+ width: 90%;
+ box-sizing: border-box;
+ position: relative;
+ font-size: 14px;
+ padding: 7px 0 48px;
+ transition: all 1s;
+ background: #ffffff;
+ border: 1px solid #e2e2e2;
+ box-shadow: 0 5px 12px 0 rgba(0, 0, 0, 0.07);
+ border-radius: 4px;
+ margin: auto;
+ &:hover {
+ .mask {
+ display: block;
+ }
+ }
+ .mask {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.65);
+ backdrop-filter: blur(1px) brightness(100%);
+ text-align: center;
+ z-index: 1;
+ border-radius: 3px;
+ display: none;
+ .tool {
+ position: absolute;
+ top: 49%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ i {
+ font-size: 50px;
+ }
+ i:nth-of-type(1) {
+ margin-right: 30px;
+ }
+ i:nth-of-type(2) {
+ color: red;
+ }
+ }
+ }
+ .scenario-icon {
+ display: flex;
+ width: 85%;
+ height: 85%;
+ margin: auto;
+ justify-content: center;
+ align-content: center;
+ align-items: center;
+ .single,
+ .double,
+ .third,
+ .four {
+ width: 80%;
+ padding-top: 80%;
+ position: relative;
+ margin: auto;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ .svg-wrap {
+ width: 47%;
+ position: absolute;
+ height: 0;
+ padding-top: 47%;
+ text-align: center;
+ box-shadow: 0 0 3px 2px rgb(247, 247, 247) inset;
+ svg {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ }
+ }
+ }
+ .single {
+ margin: auto;
+ .svg-wrap {
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ box-shadow: none;
+ }
+ }
+ .double {
+ .svg-wrap:nth-of-type(1) {
+ top: 50%;
+ transform: translateY(-50%);
+ left: 0;
+ }
+ .svg-wrap:nth-of-type(2) {
+ top: 50%;
+ transform: translateY(-50%);
+ right: 0;
+ }
+ }
+ .third {
+ .svg-wrap:nth-of-type(1) {
+ top: 0;
+ left: 0;
+ }
+ .svg-wrap:nth-of-type(2) {
+ top: 0;
+ right: 0;
+ }
+ .svg-wrap:nth-of-type(3) {
+ top: 50%;
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ }
+ .four {
+ .svg-wrap:nth-of-type(1) {
+ top: 0;
+ left: 0;
+ }
+ .svg-wrap:nth-of-type(2) {
+ top: 0;
+ right: 0;
+ }
+ .svg-wrap:nth-of-type(3) {
+ top: 50%;
+ left: 0;
+ }
+ .svg-wrap:nth-of-type(4) {
+ top: 50%;
+ right: 0;
+ }
+ }
+ }
+ .scenario-name {
+ width: 100%;
+ height: 30px;
+ box-sizing: border-box;
+ padding: 0 4px;
+ text-align: center;
+ position: absolute;
+ bottom: 10px;
+ left: 0;
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/src/pages/cameraAccess/index/main.ts b/src/pages/cameraAccess/index/main.ts
index 5e8305d..7a3acdc 100644
--- a/src/pages/cameraAccess/index/main.ts
+++ b/src/pages/cameraAccess/index/main.ts
@@ -7,19 +7,24 @@
import "../../../assets/icons/iconfont.css";
import "../../../assets/icons/symbol.js";
-
+import ToggleButton from 'vue-js-toggle-button';
import VueAwesomeSwiper from "vue-awesome-swiper";
import "swiper/dist/css/swiper.css";
import * as VueWindow from "@hscmap/vue-window";
-
+import moment from 'moment';
import Mixin from "./mixins";
-import App from './App.vue'
-
+import App from './App.vue';
+Vue.prototype.$moment = moment;
Vue.use(ElementUI);
+Vue.use(ToggleButton);
Vue.use(VueAwesomeSwiper as any);
Vue.use(VueWindow);
+Vue.filter('moment', function (value, formatString) {
+ formatString = formatString || 'YYYY-MM-DD HH:mm:ss';
+ return moment(value).format(formatString);
+});
Vue.mixin(Mixin);
new Vue({
--
Gitblit v1.8.0