From d6bf6c38fe15510aac8e56569ca0450fb8656c89 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 30 七月 2020 18:55:09 +0800
Subject: [PATCH] 调整摄像机接入页面

---
 src/pages/cameraAccess/components/scene/Editor.vue | 3185 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 1,510 insertions(+), 1,675 deletions(-)

diff --git a/src/components/scene/Editor.vue b/src/pages/cameraAccess/components/scene/Editor.vue
similarity index 87%
rename from src/components/scene/Editor.vue
rename to src/pages/cameraAccess/components/scene/Editor.vue
index 4497130..162733f 100644
--- a/src/components/scene/Editor.vue
+++ b/src/pages/cameraAccess/components/scene/Editor.vue
@@ -1,1675 +1,1510 @@
-<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()
-    //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 {
-        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 +=
-            '&nbsp;&nbsp;&nbsp;' +
-            this.parataxis(r.rule_with_pre) +
-            '&nbsp;&nbsp;&nbsp;' +
-            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 => {
-            debugger
-            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
-        }
-
-        //鏍¢獙鑻ョ畻娉曞叧绯讳负瑙﹀彂,鍒欑畻娉曞悕涓嶈兘閲�
-        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
-        }
-
-        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">
-.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 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 +=
+            '&nbsp;&nbsp;&nbsp;' +
+            this.parataxis(r.rule_with_pre) +
+            '&nbsp;&nbsp;&nbsp;' +
+            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>

--
Gitblit v1.8.0