From 7656962ded2a6ccbe3eae75304b3789662d82711 Mon Sep 17 00:00:00 2001
From: heyujie <516346543@qq.com>
Date: 星期三, 26 一月 2022 16:01:56 +0800
Subject: [PATCH] 集群改动
---
src/pages/cameraAccess/components/scene/Editor.vue | 3265 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 1,755 insertions(+), 1,510 deletions(-)
diff --git a/src/pages/cameraAccess/components/scene/Editor.vue b/src/pages/cameraAccess/components/scene/Editor.vue
index 162733f..ae96008 100644
--- a/src/pages/cameraAccess/components/scene/Editor.vue
+++ b/src/pages/cameraAccess/components/scene/Editor.vue
@@ -1,1510 +1,1755 @@
-<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="item.value"
+ :title="item.name"
+ :label="item.name"
+ v-for="item in sdkConnects"
+ :key="item.id"
+ ></el-option>
+ <!-- <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 == '=>' || 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-show="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"
+ :multiple="arg.config.isMulti"
+ collapse-tags
+ size="mini"
+ >
+ <el-option
+ v-for="one in arg.valueOptions"
+ :key="one.value"
+ :value="one.value"
+ :label="one.name"
+ :title="one.name"
+ ></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
+ :disabled="optArgItem.operators.length==1"
+ 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) {
+ 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
+ //娣诲姞鍦烘櫙鍒濆鍖栧尯鍩熼�夐」涓�'鍏ㄩ儴鍖哄煙'
+ // 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) {
+
+ newV.forEach(sdk => {
+ let rangeOne = sdk.defaultArg.find(
+ arg => arg.operators[0].operator == 'range'
+ )
+ if (rangeOne) {
+ if (rangeOne.min.trim() && rangeOne.max.trim()) {
+ 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({ installed: true })
+
+ //this.editHandle(this.ruleList)
+ },
+ data() {
+ return {
+ hideDel: 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: {
+ getSdkConnection() {
+ this.sdkConnects = this.VideoManageData.Dictionary['RULECOMPUTEBETWEEN'].map(r => {
+
+ return {
+ name: r.name,
+ value: r.value
+ }
+ });
+ },
+ 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(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) {
+ 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)
+ }
+ //榛樿閫変腑绗竴涓猳perator
+ //if (copyArgTemp.operators.length == 1) {
+ this.$set(copyArgTemp, 'operator', copyArgTemp.operators[0].operator)
+ //}
+
+ 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);
+ }
+ //榛樿閫変腑绗竴涓猳perator
+ //if (argObj.operators.length == 1) {
+ this.$set(argObj, 'operator', argObj.operators[0].operator)
+ //}
+ //鏇挎崲鏂扮殑鍙傛暟閰嶇疆瀵硅薄
+ sdkItem.optArg.forEach((arg, index) => {
+ if (arg.sort == optArgItem.sort) {
+ this.$set(sdkItem.optArg, index, JSON.parse(JSON.stringify(argObj)))
+ }
+ })
+
+ },
+ setOptArgValueOptions(optArg) {
+
+ let alias = optArg.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)
+ //鍙栧嚭榛樿鍙傛暟
+ 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.type == 'option') {
+ this.setOptArgValueOptions(arg)
+ }
+ 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
+
+ // 鏍规嵁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) {
+
+ },
+ 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) {
+ this.getSdkConnection();
+ // if (ruleTxt.length < 1) {
+ // return
+ // }
+ 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) {
+
+ 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)
+ }
+ if (optItem.alias == "bForceSend") {
+
+ }
+ //鍦╬ush涔嬪墠,闇�瑕佸垽鏂槸鍚﹂厤缃簡杩欎釜鍙�夐」 鍦╯dk_set閰嶇疆鏁扮粍閲�,
+
+ 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 if(arg.sdk_arg_value.indexOf(',') > 0){
+ } else if (arg.operator_type == 'option') {
+
+ //澶氶�夌被鍨嬬殑鍊�
+ d.sdk_arg_value = arg.sdk_arg_value.split(',');
+ this.setOptArgValueOptions(d)
+ } 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.polygon_id) {
+ return sdk
+ }
+
+ //澶氫簬涓ら」绠楁硶鏃�,绠楁硶鍏崇郴涓嶈兘涓虹┖
+ if (sdk.rule_with_pre === '' && index != 0) {
+ return sdk
+ }
+
+ //澶勭悊鏈睍绀虹殑鍙傛暟鐨勫��
+ sdk.defaultArg.forEach(arg => {
+ if (!arg.config.isShow) {
+ arg.sdk_arg_value = arg.default_value
+ }
+ })
+ //琛ㄥ崟鎻愪氦鍓嶆牎楠�:鎵�鏈夌畻娉曠殑鍙傛暟鍊间笉鑳戒负绌�,(鏈塺ange鐨�,瑕佸湪range鑼冨洿鍐�)澶辩劍鏃舵牎楠�
+ let defaultArgFlag = sdk.defaultArg.find(arg => {
+
+ if (arg.sdk_arg_value instanceof Array) {
+ if (arg.sdk_arg_value.length == 0) {
+ return arg
+ }
+ } else if (!arg.sdk_arg_value) {
+ return arg
+ }
+ });
+ 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 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) => {
+
+ if (sdk.index != 0 && (sdk.rule_with_pre == '=>' || sdk.rule_with_pre == '!=>')) {
+
+ 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.config.isShow) {
+ return
+ }
+ let val = '';
+ //澶勭悊涓嬫媺閫夊�肩被鍨�
+ 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;
+ }
+
+ }
+ 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.type == 'option' ? val : 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;
+ }
+
+ }
+
+ 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 || ''}, `
+ });
+ //灏嗗閫夐」鐨勫�兼嫾鎴愬瓧绗︿覆
+ defaultArgs.forEach(one => {
+ if (one.sdk_arg_value instanceof Array) {
+ one.sdk_arg_value = one.sdk_arg_value.join();
+ }
+ });
+ 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
+ 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)
+ }
+
+ })
+ }
+
+ 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>
--
Gitblit v1.8.0