{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\dataTemplate\\TemplateFilterDialog.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\dataTemplate\\TemplateFilterDialog.vue","mtime":1675071992178},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport form from '@/api/form.js'\r\nimport {codemirror} from 'vue-codemirror'\r\nimport 'codemirror/theme/ambiance.css'\r\nimport req from '@/request.js'\r\nrequire('codemirror/mode/javascript/javascript')\r\nconst eipOrgDialog = () => import('@/components/dialog/EipOrgDialog.vue')\r\n\r\nexport default {\r\n  name: 'template-filter-dialog',\r\n  components: {\r\n    codemirror,\r\n    eipOrgDialog\r\n  },\r\n  props: {\r\n    colPrefix: String,\r\n    metafields: Array,\r\n    filterFields: Array,\r\n    conditionFields: String\r\n  },\r\n  data() {\r\n    return {\r\n      comVarList: [],\r\n      filter: {filterType: 1, name: ''},\r\n      isEditabled: true,\r\n      editFilter: {},\r\n      orgSelectedArray: [],\r\n      sqlOption: [],\r\n      filterTypeList: [{key: 1, value: '条件脚本'}, {key: 3, value: '追加SQL'}, {key: 4, value: '数据权限'}],\r\n      dialogVisible: false,\r\n      varList: [],\r\n      selectVar: '',\r\n      curCode: '',\r\n      cmOptions: {\r\n        value: '',\r\n        mode: 'text/javascript',\r\n        lineNumbers: true,\r\n        line: true,\r\n        lineWiseCopyCut: true,\r\n        showCursorWhenSelecting: true\r\n      },\r\n\r\n      conditionObj: {},\r\n      conditionName: '',\r\n      pathList: [],\r\n      data: {},\r\n      branchList: [],\r\n      tabList: [],\r\n      Tree: [],\r\n      svgHeight: '400px',\r\n      defaultCondition: {\r\n        property: '',\r\n        operator: '1',\r\n        dataType: '',\r\n        value: '',\r\n        compType: '1'\r\n      },\r\n      Mleft: 50, //初始左边距50\r\n      Mtop: 20, //初始上边距40\r\n      XIncase: 100, //x轴递增数值70\r\n      YIncase: 50, //y轴递增数据50\r\n      svgHtml: '',\r\n      varTree: [],\r\n      filedsObj: {},\r\n      scriptStr: '',\r\n      localDsType: ''\r\n    }\r\n  },\r\n  computed: {\r\n    codemirror() {\r\n      return this.$refs.mycode.codemirror\r\n    }\r\n  },\r\n  mounted() {\r\n    this.getDataSource()\r\n    if (this.$store.state.login.currentUser.userAttrs.tenantId != -1) {\r\n      this.filterTypeList.splice(1, 1)\r\n    }\r\n  },\r\n  methods: {\r\n    initData() {\r\n      this.varList = []\r\n      this.filter = {filterType: 1, name: '', key: ''}\r\n      this.sqlOption = {label: 'SQL字段', options: []}\r\n      let varOption = {label: '常用变量', options: []}\r\n      let confOption = {label: '条件字段', options: []}\r\n      //获取变量\r\n      form.getDataTemplateVarList().then(response => {\r\n        this.comVarList = response\r\n        if (response && response.length > 0) {\r\n          response.forEach(obj => {\r\n            if (obj.alias == 'curUserAccount') {\r\n              obj.alias = \"'[curUserAccount]'\"\r\n            } else if (obj.alias == 'curUserId') {\r\n              obj.alias = \"'[curUserId]'\"\r\n            }\r\n            varOption.options.push({key: obj.alias, value: obj.title})\r\n          })\r\n        }\r\n      })\r\n      //获取字段\r\n      if (this.metafields && this.metafields.length > 0) {\r\n        this.metafields = this.metafields.filter(item => !item.flowField);\r\n        this.metafields.forEach(field => {\r\n          if (field.type && field.type != 'null') {\r\n            if (field.type == 'clob' && this.localDsType == 'oracle') {\r\n              this.sqlOption.options.push({\r\n                key: 'TO_CHAR(' + this.colPrefix + field.name + ')',\r\n                value: field.desc\r\n              })\r\n            } else {\r\n              this.sqlOption.options.push({\r\n                key: this.colPrefix + field.name,\r\n                value: field.desc\r\n              })\r\n            }\r\n          }\r\n        })\r\n      }\r\n      //条件字段\r\n      if (this.conditionFields) {\r\n        let conditions = JSON.parse(this.conditionFields)\r\n        if (conditions.length > 0) {\r\n          conditions.forEach(obj => {\r\n            confOption.options.push({\r\n              key: this.colPrefix + obj.na,\r\n              value: obj.cm\r\n            })\r\n          })\r\n        }\r\n      }\r\n      this.varList.push(this.sqlOption)\r\n      this.varList.push(varOption)\r\n      this.varList.push(confOption)\r\n      if (this.editFilter && this.editFilter.key) {\r\n        this.isEditabled = false\r\n        let tempFilter = {}\r\n        tempFilter.name = this.editFilter.name\r\n        tempFilter.key = this.editFilter.key\r\n        tempFilter.filter = this.editFilter.condition\r\n        if (this.editFilter.type == 4 && tempFilter.filter) {\r\n          let filterJson = JSON.parse(tempFilter.filter)\r\n          for (let i = 0; i < filterJson.length; i++) {\r\n            let obj = filterJson[i]\r\n            if ('customOrgs' != obj.type) {\r\n              tempFilter[obj.type] = '1'\r\n            } else {\r\n              this.orgSelectedArray = obj.orgs\r\n            }\r\n            if (obj.field) {\r\n              tempFilter[obj.type + 'Field'] = obj.field\r\n            }\r\n          }\r\n          this.filter = tempFilter\r\n        } else if (this.editFilter.type == 1) {\r\n          this.filter = tempFilter\r\n          let conditionJson = JSON.parse(this.filter.filter)\r\n          this.conditionObj = conditionJson\r\n          this.buildConditionTree(conditionJson)\r\n          this.buildVarTree(this.metafields)\r\n        } else if (this.editFilter.type == 2 || this.editFilter.type == 3) {\r\n          this.$set(this.filter, 'key', this.editFilter.key)\r\n          this.$set(this.filter, 'name', this.editFilter.name)\r\n          this.$set(this.filter, 'filter', this.editFilter.condition)\r\n        }\r\n        this.$set(this.filter, 'filterType', this.editFilter.type)\r\n        // this.filter.filterType = this.editFilter.type;\r\n      } else {\r\n        this.isEditabled = true\r\n        if (this.filter.filterType == 2 || this.filter.filterType == 3) {\r\n          this.codemirror.setValue(' ')\r\n        } else if (this.filter.filterType == 1) {\r\n          this.conditionObj = {junction: 'and', condition: []}\r\n          this.buildConditionTree(this.conditionObj)\r\n          this.buildVarTree(this.metafields)\r\n        }\r\n      }\r\n    },\r\n    showDialog(conf) {\r\n      if (conf.editFilter) {\r\n        this.editFilter = conf.editFilter\r\n      }\r\n      this.dialogVisible = true\r\n      this.initData()\r\n    },\r\n    changeFilterType() {\r\n      if ((this.filter.filterType == 2 || this.filter.filterType == 3) && this.filter.filterType != this.editFilter.type) {\r\n        this.filter.filter = ' '\r\n        this.codemirror.setValue(' ')\r\n      }\r\n    },\r\n    clickVar() {\r\n      this.codemirror.replaceSelection(' ' + this.selectVar + ' ')\r\n    },\r\n    saveFormValid() {\r\n      if (!this.filter.name) {\r\n        this.$message.error('名称不能为空！')\r\n        return false\r\n      }\r\n      if (!this.filter.key) {\r\n        this.$message.error('Key不能为空！')\r\n        return false\r\n      }\r\n      //key不能重复\r\n      if (this.isEditabled) {\r\n        for (let i = 0; i < this.filterFields.length; i++) {\r\n          if (this.filterFields[i].key == this.filter.key) {\r\n            this.$message.error('Key已被使用，请重新填写！')\r\n            this.filter.key = ''\r\n            return false\r\n          }\r\n        }\r\n      }\r\n      // 处理过滤条件\r\n      if (this.filter.filterType == 1) {\r\n        if (!this.tabList || this.tabList.length < 1) {\r\n          this.$message.error('请添加过滤条件！')\r\n          return false\r\n        }\r\n        this.filter.filter = JSON.stringify(this.conditionObj)\r\n      } else if (this.filter.filterType == 4) {\r\n        this.filter.filter = this.getPermissionData()\r\n      } else {\r\n        this.filter.filter = this.codemirror.getValue()\r\n      }\r\n      return true\r\n    },\r\n    isNotZeroEmpty(val) {\r\n      if (!val || val === '0') {\r\n        return false\r\n      }\r\n      return true\r\n    },\r\n    getPermissionData() {\r\n      let resultData = []\r\n      if (\r\n        !this.isNotZeroEmpty(this.filter.loginUser) &&\r\n        !this.isNotZeroEmpty(this.filter.loginUserOrgs) &&\r\n        !this.isNotZeroEmpty(this.filter.loginUserSubOrgs) &&\r\n        !this.isNotZeroEmpty(this.filter.customOrgsField)\r\n      ) {\r\n        this.$message.error('请选择权限类型！')\r\n        throw new Error('请选择权限类型.')\r\n      }\r\n      if (this.filter.loginUser && this.filter.loginUser !== '0') {\r\n        if (!this.filter.loginUserField) {\r\n          this.$message.error('请选择当前登陆用户对应字段！')\r\n          throw new Error('请选择当前登陆用户对应字段.')\r\n        }\r\n        resultData.push({\r\n          type: 'loginUser',\r\n          name: '当前登录用户数据',\r\n          field: this.filter.loginUserField\r\n        })\r\n      }\r\n\r\n      if (this.filter.loginUserOrgs && this.filter.loginUserOrgs !== '0') {\r\n        if (!this.filter.loginUserOrgsField) {\r\n          this.$message.error('请选择当前登陆用户所属组织对应字段！')\r\n          throw new Error('请选择当前登陆用户所属组织对应字段.')\r\n        }\r\n        resultData.push({\r\n          type: 'loginUserOrgs',\r\n          name: '当前登陆用户所属组织',\r\n          field: this.filter.loginUserOrgsField\r\n        })\r\n      }\r\n\r\n      if (this.filter.loginUserSubOrgs && this.filter.loginUserSubOrgs !== '0') {\r\n        if (!this.filter.loginUserSubOrgsField) {\r\n          this.$message.error('请选择当前登陆用户所属组织及下属组织对应字段！')\r\n          throw new Error('请选择当前登陆用户所属组织及下属组织对应字段.')\r\n        }\r\n        resultData.push({\r\n          type: 'loginUserSubOrgs',\r\n          name: '当前登陆用户所属组织及下属组织',\r\n          field: this.filter.loginUserSubOrgsField\r\n        })\r\n      }\r\n\r\n      if (this.orgSelectedArray) {\r\n        if (this.filter.customOrgsField) {\r\n          //this.$message.error(\"请选择自定义选择组织对应字段！\");\r\n          //throw new Error(\"请选择自定义选择组织对应字段.\");\r\n          let customOrgs = {\r\n            type: 'customOrgs',\r\n            name: '自定义选择组织',\r\n            orgs: [],\r\n            field: this.filter.customOrgsField\r\n          }\r\n          for (let int = 0; int < this.orgSelectedArray.length; int++) {\r\n            let selectOrg = this.orgSelectedArray[int]\r\n            let orgObj = {}\r\n            orgObj.id = selectOrg.id\r\n            orgObj.name = selectOrg.name\r\n            customOrgs.orgs.push(orgObj)\r\n          }\r\n          resultData.push(customOrgs)\r\n        }\r\n      }\r\n      return JSON.stringify(resultData)\r\n    },\r\n    orgSelector() {\r\n      this.$refs.eipOrgDialog.showDialog({})\r\n    },\r\n    handleTagClose(tag) {\r\n      if (this.orgSelectedArray && this.orgSelectedArray.length > 0) {\r\n        for (let i = 0; i < this.orgSelectedArray.length; i++) {\r\n          if (this.orgSelectedArray[i].id == tag.id) {\r\n            this.orgSelectedArray.splice(i, 1)\r\n            return\r\n          }\r\n        }\r\n      }\r\n    },\r\n    dialogOnConfirm(data) {\r\n      if (data && data.length > 0) {\r\n        this.orgSelectedArray = data\r\n      } else {\r\n        this.orgSelectedArray = []\r\n      }\r\n    },\r\n    onConfirm(selection) {\r\n      if (this.saveFormValid()) {\r\n        this.dialogVisible = false\r\n        this.$emit('onConfirm', selection, this.filter)\r\n      }\r\n    },\r\n    handleClose() {\r\n      this.dialogVisible = false\r\n    },\r\n    //根据条件数组构建条件分支界面\r\n    buildConditionTree(data) {\r\n      let pathArr = []\r\n      let tableArr = []\r\n      let branchArr = []\r\n      this.buildData(data, pathArr, tableArr, branchArr)\r\n      this.pathList = pathArr\r\n      this.branchList = branchArr\r\n      this.tabList = tableArr\r\n      //取路径最后一条数据，因为该条数据的高度距离顶部最大\r\n      let lastPath = pathArr[pathArr.length - 1]\r\n      let lastIndexArr = []\r\n      if (lastPath) lastIndexArr = lastPath.split(',')\r\n      //取最后一个坐标点。终点纵坐标为整个svg中最大的纵坐标\r\n      let lastYIndex = lastIndexArr[lastIndexArr.length - 1]\r\n      //设置svg的高度为最大纵坐标+100，从而实现svg页面高度自适应\r\n      if (lastYIndex) {\r\n        this.svgHeight = parseInt(lastYIndex) + 50 + 'px'\r\n      }\r\n      this.createSvgHtml(pathArr)\r\n    },\r\n    //构建svg图形页面\r\n    createSvgHtml(pathArr) {\r\n      this.svgHtml = ''\r\n      var html =\r\n        '<svg height=\"' +\r\n        this.svgHeight +\r\n        '\" version=\"1.1\" width=\"692\" xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: hidden; position: relative;\">'\r\n      for (var i = 0; i < pathArr.length; i++) {\r\n        html +=\r\n          '<path fill=\"none\" stroke=\"#787878\"' +\r\n          'd=\"' +\r\n          this.pathList[i] +\r\n          '\" style=\"-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\"></path>'\r\n      }\r\n      html += '</svg>'\r\n      this.svgHtml = html\r\n    },\r\n    changecondition(index) {\r\n      var oldVal = this.branchList[index].oldjunction\r\n      var newVal = this.branchList[index].newjunction\r\n      if (newVal == '3' || newVal == '4' || newVal == '5') {\r\n        this.branchList[index].newjunction = this.branchList[index].oldjunction\r\n        var indexStr = this.branchList[index].indexStr\r\n        if (newVal == '3') {\r\n          this.addCondition(indexStr)\r\n        } else if (newVal == '4') {\r\n          this.addUnionCondition(indexStr)\r\n        } else {\r\n          this.$confirm('确定要删除此联合条件及其下属的所有子条件吗？', '提示', {\r\n            cancelButtonText: '取消',\r\n            confirmButtonText: '确定',\r\n            type: 'warning',\r\n            closeOnClickModal: false\r\n          }).then(() => {\r\n            this.removeCondition(indexStr)\r\n          })\r\n        }\r\n      } else {\r\n        this.branchList[index].oldjunction = this.branchList[index].newjunction\r\n        var indexStr = this.branchList[index].indexStr\r\n        var indexArr = indexStr.split(',')\r\n        if (indexStr == 'root') {\r\n          this.conditionObj.junction = newVal\r\n        } else if (indexArr.length == 1) {\r\n          this.conditionObj.condition[indexStr].junction = newVal\r\n        } else if (indexArr.length == 2) {\r\n          this.conditionObj.condition[indexArr[0]].condition[indexArr[1]].junction = newVal\r\n        }\r\n      }\r\n    },\r\n    //添加一个联合\r\n    addCondition(indexStr) {\r\n      var data = this.conditionObj.condition\r\n      if (indexStr == 'root') {\r\n        data.push(JSON.parse(JSON.stringify(this.defaultCondition)))\r\n      } else {\r\n        var indexArr = []\r\n        if (indexStr) indexArr = indexStr.split(',')\r\n        for (var i = 0; i < data.length; i++) {\r\n          if (indexArr.length > 0 && i == indexArr[0]) {\r\n            if (indexArr.length > 1) {\r\n              for (var j = 0; j < data[i].condition.length; j++) {\r\n                if (j == indexArr[1]) {\r\n                  data[i].condition[j].condition.push(JSON.parse(JSON.stringify(this.defaultCondition)))\r\n                  break\r\n                }\r\n              }\r\n            } else {\r\n              data[i].condition.push(JSON.parse(JSON.stringify(this.defaultCondition)))\r\n            }\r\n            break\r\n          }\r\n        }\r\n      }\r\n      this.conditionObj.condition = data\r\n      this.buildConditionTree(this.conditionObj)\r\n    },\r\n    removeCondition(indexStr) {\r\n      var indexArr = []\r\n      if (indexStr) indexArr = indexStr.split(',')\r\n      if (indexArr.length > 0) {\r\n        var data = this.conditionObj.condition\r\n        for (var i = 0; i < data.length; i++) {\r\n          if (i == indexArr[0]) {\r\n            if (indexArr.length > 1) {\r\n              for (var j = 0; j < data[i].condition.length; j++) {\r\n                if (j == indexArr[1]) {\r\n                  if (indexArr.length > 2) {\r\n                    for (var z = 0; z < data[i].condition[j].condition.length; z++) {\r\n                      if (z == indexArr[2]) {\r\n                        data[i].condition[j].condition.splice(z, 1)\r\n                        break\r\n                      }\r\n                    }\r\n                  } else {\r\n                    data[i].condition.splice(j, 1)\r\n                  }\r\n                  break\r\n                }\r\n              }\r\n            } else {\r\n              data.splice(i, 1)\r\n            }\r\n            break\r\n          }\r\n        }\r\n        this.conditionObj.condition = data\r\n        this.buildConditionTree(this.conditionObj)\r\n      }\r\n    },\r\n    //添加一个联合条件条件\r\n    addUnionCondition(indexStr) {\r\n      var data = this.conditionObj.condition\r\n      if (indexStr == 'root') {\r\n        data.push({junction: 'or', condition: []})\r\n      } else {\r\n        var indexArr = []\r\n        if (indexStr) indexArr = indexStr.split(',')\r\n        for (var i = 0; i < data.length; i++) {\r\n          if (indexArr.length > 0 && i == indexArr[0]) {\r\n            if (indexArr.length > 1) {\r\n              for (var j = 0; j < data[i].condition.length; j++) {\r\n                if (j == indexArr[1]) {\r\n                  data[i].condition[j].condition.push({\r\n                    junction: 'or',\r\n                    condition: []\r\n                  })\r\n                  break\r\n                }\r\n              }\r\n            } else {\r\n              data[i].condition.push({junction: 'or', condition: []})\r\n            }\r\n            break\r\n          }\r\n        }\r\n      }\r\n      this.conditionObj.condition = data\r\n      this.buildConditionTree(this.conditionObj)\r\n    },\r\n    buildData(conditionData, pathArr, tableArr, branchArr) {\r\n      let curYIndex = 0\r\n      let data = conditionData.condition\r\n      //算三级节点总共分支个数\r\n      let yIncaseNum = this.getyIncaseNum(conditionData.condition) > 1 ? this.getyIncaseNum(conditionData.condition) : 1\r\n      //第一个节点 this.Mtop 最后一个节点Mtop+this.YIncase*（yIncaseNum-1）\r\n      let startY1 = (this.Mtop * 2 + this.YIncase * (yIncaseNum - 1)) / 2\r\n\r\n      branchArr.push({\r\n        newjunction: conditionData.junction,\r\n        oldjunction: conditionData.junction,\r\n        style: 'left:' + (this.Mleft - 35) + 'px; top:' + (startY1 - 15) + 'px',\r\n        indexStr: 'root',\r\n        condition: 'noDel'\r\n      })\r\n      for (var i = 0; i < data.length; i++) {\r\n        if (data[i].condition) {\r\n          var curchildNum = this.getyIncaseNum(data[i].condition)\r\n          //如果该节点，没有分支条件，则保留节点\r\n          var isEmpty0 = false\r\n          if (curchildNum < 1) {\r\n            curchildNum = 1\r\n            isEmpty0 = true\r\n          }\r\n          //计算一级节点和该节点的连线\r\n          var startY2 = (this.Mtop * 2 + this.YIncase * (2 * curYIndex + curchildNum - 1)) / 2\r\n          var path =\r\n            'M' +\r\n            this.Mleft +\r\n            ',' +\r\n            startY1 +\r\n            'C' +\r\n            this.Mleft +\r\n            ',' +\r\n            startY2 +\r\n            ',' +\r\n            this.Mleft +\r\n            ',' +\r\n            startY2 +\r\n            ',' +\r\n            (this.Mleft + this.XIncase) +\r\n            ',' +\r\n            startY2\r\n          pathArr.push(path)\r\n          branchArr.push({\r\n            newjunction: data[i].junction,\r\n            oldjunction: data[i].junction,\r\n            style: 'left:' + (this.Mleft + this.XIncase - 35) + 'px; top:' + (startY2 - 15) + 'px',\r\n            indexStr: '' + i\r\n          })\r\n          if (isEmpty0) curYIndex++\r\n\r\n          for (var j = 0; j < data[i].condition.length; j++) {\r\n            //如果第三级节点有分支，则计算分支\r\n            if (data[i].condition[j].condition) {\r\n              //计算改节点分支个数\r\n              let curchildNum2 = this.getyIncaseNum(data[i].condition[j].condition)\r\n              //如果该节点，没有分支条件，则保留节点,默认其占一行\r\n              let isEmpty = false\r\n              if (curchildNum2 < 1) {\r\n                curchildNum2 = 1\r\n                isEmpty = true\r\n              }\r\n              // 改分支第一个节点纵坐标= this.Mtop+this.YIncase*curYIndex  上一个节点纵坐标加上递增值\r\n              // 改分支最后节点纵坐标=改分支第一个节点纵坐标 +计算改节点分支个数*y递增值 this.Mtop+this.YIncase*curYIndex+this.YIncase*(curchildNum2-1)\r\n              // 计算改节点的纵坐标。（改分支第一个节点纵坐标+该分支的最后一个纵坐标）/2\r\n              // 该节点起始点纵坐标=  this.Mtop+this.YIncase*curYIndex+ this.Mtop+this.YIncase*curYIndex+this.YIncase*(curchildNum2-1)\r\n              let startY3 = (this.Mtop * 2 + this.YIncase * (2 * curYIndex + curchildNum2 - 1)) / 2\r\n              //改分支指引线的终点的纵坐标等于startY2\r\n              let path =\r\n                'M' +\r\n                (this.Mleft + this.XIncase) +\r\n                ',' +\r\n                startY2 +\r\n                'C' +\r\n                (this.Mleft + this.XIncase) +\r\n                ',' +\r\n                startY3 +\r\n                ',' +\r\n                (this.Mleft + this.XIncase) +\r\n                ',' +\r\n                startY3 +\r\n                ',' +\r\n                (this.Mleft + this.XIncase * 2) +\r\n                ',' +\r\n                startY3\r\n              pathArr.push(path)\r\n              branchArr.push({\r\n                newjunction: data[i].condition[j].junction,\r\n                oldjunction: data[i].condition[j].junction,\r\n                style: 'left:' + (this.Mleft + this.XIncase * 2 - 35) + 'px; top:' + (startY3 - 15) + 'px',\r\n                indexStr: i + ',' + j,\r\n                condition: 'noAdd'\r\n              })\r\n              if (isEmpty) {\r\n                curYIndex++\r\n              }\r\n              for (let z = 0; z < data[i].condition[j].condition.length; z++) {\r\n                let obj = data[i].condition[j].condition[z]\r\n                obj.style = 'left:' + (this.Mleft + this.XIncase * 3) + 'px; top:' + (this.Mtop + this.YIncase * curYIndex - 19) + 'px'\r\n                obj.indexStr = i + ',' + j + ',' + z\r\n                tableArr.push(obj)\r\n                //改分支下所有节点的起始纵坐标为startY3，终点纵坐标根据该节点位置决定\r\n                let path =\r\n                  'M' +\r\n                  (this.Mleft + this.XIncase * 2) +\r\n                  ',' +\r\n                  startY3 +\r\n                  'C' +\r\n                  (this.Mleft + this.XIncase * 2) +\r\n                  ',' +\r\n                  (this.Mtop + this.YIncase * curYIndex) +\r\n                  ',' +\r\n                  (this.Mleft + this.XIncase * 2) +\r\n                  ',' +\r\n                  (this.Mtop + this.YIncase * curYIndex) +\r\n                  ',' +\r\n                  (this.Mleft + this.XIncase * 3) +\r\n                  ',' +\r\n                  (this.Mtop + this.YIncase * curYIndex)\r\n                pathArr.push(path)\r\n                curYIndex++\r\n              }\r\n            } else {\r\n              //第二级节点没有分支\r\n              let obj = data[i].condition[j]\r\n              obj.style = 'left:' + (this.Mleft + this.XIncase * 2) + 'px; top:' + (this.Mtop + this.YIncase * curYIndex - 19) + 'px'\r\n              obj.indexStr = i + ',' + j\r\n              tableArr.push(obj)\r\n              //计算改分支的路径。因为是第二节点。startY2\r\n              let path =\r\n                'M' +\r\n                (this.Mleft + this.XIncase) +\r\n                ',' +\r\n                startY2 +\r\n                'C' +\r\n                (this.Mleft + this.XIncase) +\r\n                ',' +\r\n                (this.Mtop + this.YIncase * curYIndex) +\r\n                ',' +\r\n                (this.Mleft + this.XIncase) +\r\n                ',' +\r\n                (this.Mtop + this.YIncase * curYIndex) +\r\n                ',' +\r\n                (this.Mleft + this.XIncase * 2) +\r\n                ',' +\r\n                (this.Mtop + this.YIncase * curYIndex)\r\n              pathArr.push(path)\r\n              curYIndex++\r\n            }\r\n          }\r\n        } else {\r\n          let obj = data[i]\r\n          obj.style = 'left:' + (this.Mleft + this.XIncase) + 'px; top:' + (this.Mtop + this.YIncase * curYIndex - 19) + 'px'\r\n          obj.indexStr = '' + i\r\n          tableArr.push(obj)\r\n          let path =\r\n            'M' +\r\n            this.Mleft +\r\n            ',' +\r\n            startY1 +\r\n            'C' +\r\n            this.Mleft +\r\n            ',' +\r\n            (this.Mtop + this.YIncase * curYIndex) +\r\n            ',' +\r\n            this.Mleft +\r\n            ',' +\r\n            (this.Mtop + this.YIncase * curYIndex) +\r\n            ',' +\r\n            (this.Mleft + this.XIncase) +\r\n            ',' +\r\n            (this.Mtop + this.YIncase * curYIndex)\r\n          pathArr.push(path)\r\n          curYIndex++\r\n        }\r\n      }\r\n    },\r\n    //获取条件总数\r\n    getyIncaseNum(data) {\r\n      var sum = 0\r\n      for (var i = 0; i < data.length; i++) {\r\n        if (data[i].condition && data[i].condition.length > 0) {\r\n          for (var j = 0; j < data[i].condition.length; j++) {\r\n            if (data[i].condition[j].condition && data[i].condition[j].condition.length > 0) {\r\n              for (var z = 0; z < data[i].condition[j].condition.length; z++) {\r\n                sum++\r\n              }\r\n            } else {\r\n              sum++\r\n            }\r\n          }\r\n        } else {\r\n          sum++\r\n        }\r\n      }\r\n      return sum\r\n    },\r\n    buildVarTree(treeData) {\r\n      var treeArr = []\r\n      this.varTree = []\r\n      this.filedsObj = {}\r\n      if (treeData.length > 0) {\r\n        treeData.forEach(field => {\r\n          if (field.type && field.type != 'null') {\r\n            let obj = {\r\n              pathStr: this.colPrefix + field.name,\r\n              desc: field.desc,\r\n              dataType: field.type\r\n            }\r\n            treeArr.push(obj)\r\n            this.filedsObj[obj.pathStr] = obj\r\n          }\r\n        })\r\n        this.varTree = treeArr\r\n      }\r\n    },\r\n    setFieldOtherInfo(ele, tab, type) {\r\n      let selectFiled = this.filedsObj[tab.property]\r\n      if (type == 1) {\r\n        tab.dataType = selectFiled.dataType\r\n        tab.format = selectFiled.format\r\n        tab.chooseDesc = selectFiled.desc\r\n        tab.value = ''\r\n      } else {\r\n        tab.changeDesc = selectFiled.desc\r\n      }\r\n    },\r\n    getDataSource() {\r\n      req.get('${portal}/sys/sysDataSource/v1/getDataSources').then(resp => {\r\n        if (resp.data && resp.data.length > 0) {\r\n          resp.data.forEach(item => {\r\n            if (item.alias == 'LOCAL') {\r\n              this.localDsType = item.dbType\r\n            }\r\n          })\r\n        }\r\n      })\r\n    }\r\n  }\r\n}\r\n",null]}