File was renamed from src/components/scene/Editor.vue |
| | |
| | | </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="{ init: index == 0 }"
|
| | | v-cloak
|
| | | v-for="(sdkItem, index) in sdkGroup"
|
| | | :key="index"
|
| | | :key="sdkItem.id" |
| | | >
|
| | | <div class="connection" v-if="index !== 0">
|
| | | <el-select
|
| | |
| | | <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"
|
| | |
| | | </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"
|
| | |
| | | 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]
|
| | |
|
| | |
| | | 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({
|
| | |
| | | },
|
| | | deep: true
|
| | | }
|
| | | // ruleList: {
|
| | | // handler(newVal, oldVal) {
|
| | | // debugger
|
| | | // this.editHandle(newVal)
|
| | | // }
|
| | |
|
| | | // }
|
| | | },
|
| | | mounted() {
|
| | | this.TaskMange.findAllSdk()
|
| | | //this.TaskMange.list1 = sdkJson.data;
|
| | |
|
| | | //this.editHandle(this.ruleList)
|
| | | },
|
| | | data() {
|
| | | return {
|
| | | // rule: {
|
| | | // sdk_id:'',
|
| | | // sdkObj: {},
|
| | | // polygonObj: {},
|
| | | // argDef: []
|
| | | // },
|
| | | hideDel: true,
|
| | | //isAddable: true,
|
| | | allPolygonData: [],
|
| | |
| | | },
|
| | | methods: {
|
| | | selConnection(sdkItem) {
|
| | | debugger
|
| | | |
| | |
|
| | | },
|
| | | addSdkItem() {
|
| | |
| | | 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))
|
| | |
| | | }
|
| | | },
|
| | | 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 => {
|
| | |
| | |
|
| | | 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)
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | },
|
| | | selOptionalArg(sdkItem, optArgItem) {
|
| | | debugger
|
| | | |
| | | let newSort = 0
|
| | | sdkItem.optNames.forEach(name => {
|
| | | if (name.name == optArgItem.name) {
|
| | |
| | | if (argObj.type == 'option') {
|
| | | this.setOptArgValueOptions(argObj);
|
| | | }
|
| | | debugger
|
| | | |
| | | //替换新的参数配置对象
|
| | | sdkItem.optArg.forEach((arg, index) => {
|
| | | if (arg.sort == optArgItem.sort) {
|
| | |
| | | });
|
| | | },
|
| | | validateArgVal(sdkArgItem, e) {
|
| | | debugger
|
| | | |
| | | if (typeof (sdkArgItem.sdk_arg_value) == 'string' && sdkArgItem.sdk_arg_value == '') {
|
| | | this.$notify({
|
| | | type: 'warning',
|
| | |
| | | let res = sdkArgItem.range.match(reg)
|
| | | let min = Number(res[1]),
|
| | | max = Number(res[2])
|
| | | debugger
|
| | | |
| | |
|
| | | //判断非区间类
|
| | | if (sdkArgItem.sdk_arg_value && sdkArgItem.operator != 'range') {
|
| | |
| | | this.valideArgValue(rule)
|
| | | },
|
| | | selectPolygonOption(rule) {
|
| | | debugger
|
| | | |
| | | rule.polygon_id = rule.polygonObj.polygonId
|
| | | ? rule.polygonObj.polygonId
|
| | | : rule.polygon_id
|
| | |
| | | },
|
| | | //选择算法 resetArgs为true是添加为false是初始化编辑
|
| | | selectSDKOption(sdkItem, resetArgs) {
|
| | | debugger
|
| | | |
| | | //sdkItem.sdk_id = sdkItem.sdkObj.id;
|
| | | if (resetArgs) {
|
| | | sdkItem.argDef = JSON.parse(sdkItem.sdkObj.argDef)
|
| | |
| | |
|
| | | 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));
|
| | | }
|
| | |
| | | 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)
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | | 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 = "";
|
| | |
| | | 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 != '') {
|
| | |
| | |
|
| | | rule.sdk_set.forEach(arg => {
|
| | | let optItem = optionalArg.find(oarg => {
|
| | | debugger
|
| | | |
| | | if (oarg.sort == arg.sort) {
|
| | | return oarg
|
| | | }
|
| | |
| | | tempObj.optArg.length == 0 && tempObj.optionalArg.length > 0
|
| | | ? true
|
| | | : false;
|
| | | debugger
|
| | | |
| | | //回显是否显示可选参数添加按钮
|
| | | if (tempObj.optArg.length < tempObj.optionalArg.length) {
|
| | | tempObj.isAddable = true;
|
| | |
| | | tempObj.isAddable = false;
|
| | | }
|
| | | //this.selectSDKOption(tempObj, false)
|
| | | debugger
|
| | | |
| | | this.sdkGroup.push(tempObj)
|
| | | //设置算法
|
| | | })
|
| | |
| | | .catch(() => { })
|
| | | },
|
| | | submitRule() {
|
| | | debugger
|
| | | |
| | | let groupRule = { rules: [] }
|
| | |
|
| | | let group_text = ''
|
| | |
| | | } else {
|
| | | //校验必填项
|
| | | let undefinished = this.sdkGroup.some((sdk, index) => {
|
| | | debugger
|
| | | |
| | | //没有配置算法
|
| | | if (Object.keys(sdk.sdkObj).length == 0) {
|
| | | return sdk
|
| | |
| | | } else {
|
| | | //区间类参数值最小,最大值是否都设置
|
| | | if (arg.operator == 'range') {
|
| | | debugger
|
| | | |
| | | if (!arg.min.trim() && arg.max.trim()) {
|
| | | return arg
|
| | | }
|
| | |
| | |
|
| | | //校验若算法关系为触发,则算法名不能重
|
| | | 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
|
| | | }
|
| | |
| | | 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 {
|
| | |
| | | }
|
| | |
|
| | | });
|
| | | 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);
|
| | |
| | | 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> ${
|
| | |
| | | group_text.substring(0, group_text.length - 3) +
|
| | | group_text.substring(group_text.length - 2, group_text.length)
|
| | | }
|
| | | debugger
|
| | | |
| | | })
|
| | | console.log(group_text)
|
| | | }
|
| | |
| | | })
|
| | | return
|
| | | }
|
| | |
|
| | | // 联动规则编辑后,恢复之前选中的摄像机
|
| | | // if (this.VideoRuleData.treeSelectedNodesBackupOnEditLinkRule.length) {
|
| | | // this.TreeDataPool.selectedNodes = this.VideoRuleData.treeSelectedNodesBackupOnEditLinkRule
|
| | | // this.VideoRuleData.treeSelectedNodesBackupOnEditLinkRule = []
|
| | | // }
|
| | | }
|
| | | //if(validateFlag){
|
| | | this.onSubmitRule(payload)
|