{"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\\flow\\FlowFormSubRowCondition.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\flow\\FlowFormSubRowCondition.vue","mtime":1675071991803},{"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\r\nimport flow from \"@/api/flow.js\";\r\nimport req from \"@/request.js\";\r\nimport { mapState, mapActions } from \"vuex\";\r\nimport FlowNodeCusersSelector from \"@/components/flow/FlowNodeCusersSelector.vue\";\r\nimport utils from \"@/hotent-ui-util.js\"\r\n\r\nexport default {\r\n  components: { },\r\n  props: [\"curTableAuth\", \"table\",\"boTree\",\"type\",\"finishTable\"],\r\n  data() {\r\n    return {\r\n        userConditionTab:'first',\r\n        dialogVisible:false,\r\n        title:'子表数据授权',\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        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        curEditTab:{},\r\n        filedsObj: {},\r\n        varTree: [],\r\n        defaultCondition: {\r\n          property: \"\",\r\n          operator: \"1\",\r\n          dataType: \"\",\r\n          value: \"\",\r\n          compType: \"2\"\r\n      }\r\n    };\r\n  },\r\n  computed: mapState({\r\n    defConfigData:state => state.flow.defConfigData\r\n  }),\r\n  created() {\r\n    this.initCondition(this.curTableAuth,this.table,this.boTree);\r\n    let me_ =this;\r\n    this.$root.$on('sub-row-auth-confirm-start',function(){\r\n      me_.handleClose();\r\n    });\r\n  },\r\n  methods: {\r\n    initCondition: function(curTableAuth,table,boTree) {\r\n      let this_ = this;\r\n      this_.conditionObj = {'junction':'and','condition':[]};\r\n      \r\n      this_.buildVarTree(table,boTree);\r\n\r\n      if (curTableAuth && curTableAuth[this.type] && curTableAuth[this.type].conditionObj) {\r\n        this_.conditionObj = JSON.parse(curTableAuth[this.type].conditionObj);\r\n      }\r\n      this_.buildConditionTree(this_.conditionObj);\r\n    },\r\n    buildVarTree(table,boTree) {\r\n      var treeArr = [];\r\n      if (!boTree ||  boTree.length < 0) {\r\n        return;\r\n      }\r\n      let fieldPrefix = boTree[0].children[0].fieldPrefix;\r\n      let subEntList = boTree[0].children[0].children;\r\n      if (subEntList && subEntList.length > 0) {\r\n        subEntList.forEach(sub => {\r\n          if (sub.name == table.tableName) {\r\n            sub.attributeList.forEach(cAttr => {\r\n              cAttr.path = cAttr.tableName;\r\n              cAttr.pathStr =fieldPrefix+ cAttr.name;\r\n              this.filedsObj[cAttr.pathStr] = cAttr;\r\n              treeArr.push(cAttr);\r\n            });\r\n          }\r\n        });\r\n      }\r\n      if (treeArr.length > 0) {\r\n        this.varTree = treeArr;\r\n      } \r\n    },\r\n    \r\n    isNotEmpty(val){\r\n      if (!val || val.length ==0) {\r\n        return false;\r\n      }\r\n      return true;\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    ArrayTool(ary,idx,direct){\r\n      direct = direct || \"down\";\r\n      let part = ary[idx];\r\n      if (!part || (part.constructor !== Object && part.constructor !== Array)) {\r\n          return ary;\r\n      }\r\n      if (part.constructor === Object) {\r\n          part = [part];\r\n      }\r\n      if (direct == \"up\") {\r\n          part.forEach(m => {\r\n              let index = ary.indexOf(m, 1);\r\n              if (index > 0) {\r\n                  let t=ary[index-1];\r\n                  ary.splice(index - 1,1,ary[index]);\r\n                  ary.splice(index,1,t);\r\n              }\r\n          });\r\n      } else if (direct == \"down\") {\r\n          for (var i = part.length - 1, m; (m = part[i--]);) {\r\n              let index = ary.indexOf(m, 0);\r\n              if (index > -1 && index < ary.length - 1) {\r\n                  let t=ary[index+1];\r\n                  ary.splice(index + 1,1,ary[index]);\r\n                  ary.splice(index,1,t);\r\n              }\r\n          }\r\n      }\r\n    },\r\n      //构建svg图形页面\r\n     createSvgHtml(pathArr){\r\n        this.svgHtml = '';\r\n        var html='<svg height=\"'+this.svgHeight+'\" 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+='<path fill=\"none\" stroke=\"#787878\"'+'d=\"'+this.pathList[i]+'\" 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        }\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','condition':[]}\r\n                              )\r\n                              break;\r\n                          }\r\n                      }\r\n                  }else{\r\n                      data[i].condition.push(\r\n                          {'junction':'or','condition':[]}\r\n                      )\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='M'+(this.Mleft)+','+startY1+'C'+(this.Mleft)+','+startY2\r\n                  +','+(this.Mleft)+','+startY2+','+(this.Mleft+this.XIncase)+','+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='M'+(this.Mleft+this.XIncase)+','+startY2+'C'+(this.Mleft+this.XIncase)+','+startY3\r\n                          +','+(this.Mleft+this.XIncase)+','+startY3+','+(this.Mleft+this.XIncase*2)+','+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='M'+(this.Mleft+this.XIncase*2)+','+startY3+'C'+(this.Mleft+this.XIncase*2)+','+(this.Mtop+this.YIncase*curYIndex)\r\n                              +','+(this.Mleft+this.XIncase*2)+','+(this.Mtop+this.YIncase*curYIndex)+','+(this.Mleft+this.XIncase*3)+','+(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='M'+(this.Mleft+this.XIncase)+','+startY2+'C'+(this.Mleft+this.XIncase)+','+(this.Mtop+this.YIncase*curYIndex)\r\n                          +','+(this.Mleft+this.XIncase)+','+(this.Mtop+this.YIncase*curYIndex)+','+(this.Mleft+this.XIncase*2)+','+(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='M'+this.Mleft+','+startY1+'C'+this.Mleft+','+(this.Mtop+this.YIncase*curYIndex)\r\n                  +','+this.Mleft+','+(this.Mtop+this.YIncase*curYIndex)+','+(this.Mleft+this.XIncase)+','+(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    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      if (selectFiled.dataType !='varchar' && tab.compType !='2') {\r\n        tab.compType ='2';\r\n      }\r\n    },\r\n    handleClose() {\r\n      let me_ = this;\r\n      utils.validateForm(this, \"form1\"+this.type).then(r => {\r\n         me_.curTableAuth[me_.type] =me_.getConditionData();\r\n         if (me_.finishTable.indexOf(me_.type) <0) {\r\n           me_.finishTable.push(me_.type);\r\n         }\r\n         me_.$root.$emit('sub-row-auth-confirm-end');\r\n      }).catch(items => {\r\n          me_.$message.error(`权限设置页面还有内容未填写。`);\r\n      })\r\n    },\r\n    getConditionData(){\r\n      if (!this.conditionObj) return;\r\n      var data = this.getConditionStr(this.conditionObj);\r\n      data.conditionObj = JSON.stringify(this.conditionObj);\r\n      this.scriptStr = data.conditionString;\r\n      return data;\r\n    },\r\n    getConditionStr(obj) {\r\n      if (!obj || !obj.condition) return;\r\n      var returnData = {};\r\n      var data = obj.condition;\r\n      var res = \"\";\r\n      var desString = \"\";\r\n      for (var i = 0; i < data.length; i++) {\r\n        //第一节点的表达式\r\n        var curcondStr1 = \"\";\r\n        var curcondDes1 = \"\";\r\n        //如果第一节点有分支则计算\r\n        if (data[i].condition && data[i].condition.length > 0) {\r\n          curcondStr1 += \"(\";\r\n          curcondDes1 += \"(\";\r\n          for (var j = 0; j < data[i].condition.length; j++) {\r\n            //第二节点的表达式\r\n            var curcondStr2 = \"\";\r\n            var curcondDes2 = \"\";\r\n            //如果第三级节点有分支，则计算分支\r\n            if (\r\n              data[i].condition[j].condition &&\r\n              data[i].condition[j].condition.length > 0\r\n            ) {\r\n              curcondStr2 += \"(\";\r\n              curcondDes2 += \"(\";\r\n              var curcondStr3 = \"\";\r\n              var curcondDes3 = \"\";\r\n              for (var z = 0; z < data[i].condition[j].condition.length; z++) {\r\n                curcondStr3 = this.getConditionStrByObj(\r\n                  data[i].condition[j].condition[z]\r\n                );\r\n                curcondDes3 = this.getConditionStrByObj(\r\n                  data[i].condition[j].condition[z],\r\n                  \"des\"\r\n                );\r\n                if (curcondStr3 != \"\") {\r\n                  //循环拼接第三节点的条件\r\n                  if (z == 0) {\r\n                    //第一个不拼接运算符\r\n                    curcondStr2 += curcondStr3;\r\n                    curcondDes2 += curcondDes3;\r\n                  } else {\r\n                    curcondStr2 +=\r\n                      this.getjunction(data[i].condition[j].junction) +\r\n                      curcondStr3;\r\n                    curcondDes2 +=\r\n                      this.getjunction(data[i].condition[j].junction) +\r\n                      curcondDes3;\r\n                  }\r\n                }\r\n              }\r\n              curcondStr2 += \")\";\r\n              curcondDes2 += \")\";\r\n            } else if (data[i].condition[j].property) {\r\n              //第二节点没有分只\r\n              curcondStr2 = this.getConditionStrByObj(data[i].condition[j]);\r\n              curcondDes2 = this.getConditionStrByObj(\r\n                data[i].condition[j],\r\n                \"des\"\r\n              );\r\n            }\r\n            if (curcondStr2 != \"\") {\r\n              //循环拼接第二节点的条件\r\n              if (j == 0) {\r\n                //第一个不拼接运算符\r\n                curcondStr1 += curcondStr2;\r\n                curcondDes1 += curcondDes2;\r\n              } else {\r\n                curcondStr1 += this.getjunction(data[i].junction) + curcondStr2;\r\n                curcondDes1 += this.getjunction(data[i].junction) + curcondDes2;\r\n              }\r\n            }\r\n          }\r\n          curcondStr1 += \")\";\r\n          curcondDes1 += \")\";\r\n        } else if (data[i].property) {\r\n          //第一节点没有分只\r\n          curcondStr1 = this.getConditionStrByObj(data[i]);\r\n          curcondDes1 = this.getConditionStrByObj(data[i], \"des\");\r\n        }\r\n        if (curcondStr1 != \"\") {\r\n          //循环拼接第一节点的条件\r\n          if (i == 0) {\r\n            //第一个不拼接运算符\r\n            res += curcondStr1;\r\n            desString += curcondDes1;\r\n          } else {\r\n            res += this.getjunction(obj.junction) + curcondStr1;\r\n            desString += this.getjunction(obj.junction) + curcondDes1;\r\n          }\r\n        }\r\n      }\r\n      returnData.conditionString = res;\r\n      returnData.conditionDes = desString;\r\n      return returnData;\r\n    },\r\n    getConditionStrByObj(obj, type) {\r\n      var res = \"\";\r\n      if (!obj.value) {\r\n        throw '比较的值必填';\r\n      }\r\n      switch (obj.dataType) {\r\n        case \"varchar\":\r\n          res = this.buildStringCondition(obj, type);\r\n          break;\r\n        case \"date\":\r\n          res = this.buildDateCondition(obj, type);\r\n          break;\r\n        case \"number\":\r\n          res = this.buildIntCondition(obj, type);\r\n          break;\r\n      }\r\n      return res;\r\n    },\r\n    buildDateCondition(obj, type) {\r\n      var value = obj.value;\r\n      var valueDes = \"\";\r\n      var property = obj.property;\r\n      let res = \"\";\r\n\r\n      if (obj.compType == 2) {\r\n        if (obj.operator == '9') {\r\n          value =\"'\"+value[0] + \"' and '\"+value[1]+\"'\";\r\n        } else {\r\n          value = \"'\" + obj.value + \"'\";\r\n        }\r\n      } else {\r\n        value =  \"'{\" + obj.value + \"}'\";\r\n        valueDes = obj.changeDesc;\r\n      }\r\n\r\n      if (type == \"des\") {\r\n        property = obj.chooseDesc;\r\n        value = valueDes || value;\r\n      } \r\n\r\n      switch (obj.operator) {\r\n          case \"1\":\r\n            res = property + \" = \" + value;\r\n            break;\r\n          case \"2\":\r\n            res = property + \" != \" + value;\r\n            break;\r\n          case \"3\":\r\n            res = property + \" >  \" + value;\r\n            break;\r\n          case \"4\":\r\n            res = property + \" < \" + value;\r\n            break;\r\n          case \"7\":\r\n            res = property + \" >= \" + value;\r\n            break;\r\n          case \"8\":\r\n            res = property + \" <= \" + value;\r\n            break;\r\n          case \"9\":\r\n            res = property + \" BETWEEN \" + value;\r\n            break;\r\n      }\r\n      return res;\r\n    },\r\n    buildStringCondition(obj, type) {\r\n      var value = obj.value;\r\n      var valueDes = \"\";\r\n      var property = obj.property;\r\n      let res = \"\";\r\n      if (obj.compType == 2) {\r\n        if (obj.operator== 5 || obj.operator== 6 ) {\r\n          value = \"'%\" + obj.value + \"%'\";\r\n        }else if(obj.operator== 9 || obj.operator== 10){\r\n          value = \"('\" + obj.value.split(\",\").join(\"','\") + \"')\";\r\n        }else{\r\n          value = \"'\" + obj.value + \"'\";\r\n        }\r\n        valueDes = value;\r\n      } else {\r\n        value = \"'{\" + obj.value + \"}'\";\r\n        valueDes = obj.changeDesc;\r\n      }\r\n      if (type == \"des\") {\r\n        property = obj.chooseDesc;\r\n        value = valueDes;\r\n      } \r\n      switch (obj.operator) {\r\n          case \"1\":\r\n            res = property + \" = \" + value;\r\n            break;\r\n          case \"2\":\r\n            res = property + \" != \" + value;\r\n            break;\r\n          case \"5\":\r\n            res = property + \" like  \" + value;\r\n            break;\r\n          case \"6\":\r\n            res = property + \" not like \" + value;\r\n            break;\r\n          case \"9\":\r\n            res = property + \" in \" + value;\r\n            break;\r\n          case \"10\":\r\n            res = property + \" not in \" + value;\r\n            break;\r\n        }\r\n\r\n      return res;\r\n    },\r\n    buildIntCondition(obj, type) {\r\n      var value = obj.value;\r\n      var valueDes = \"\";\r\n      var property = obj.property;\r\n      if (obj.compType == 2) {\r\n        value = obj.value;\r\n        valueDes = value;\r\n      } else {\r\n        value =  \"{\" + obj.value + \"}\";\r\n        valueDes = obj.changeDesc;\r\n      }\r\n      if (type == \"des\") {\r\n        property = obj.chooseDesc;\r\n        value = valueDes;\r\n      }\r\n      var res = \"\";\r\n      switch (obj.operator) {\r\n        case \"1\":\r\n          res = property + \" = \" + value;\r\n          break;\r\n        case \"2\":\r\n          res = property + \" != \" + value;\r\n          break;\r\n        case \"3\":\r\n          res = property + \" > \" + value;\r\n          break;\r\n        case \"4\":\r\n          res = property + \" < \" + value;\r\n          break;\r\n        case \"7\":\r\n          res = property + \" >= \" + value;\r\n          break;\r\n        case \"8\":\r\n          res = property + \" <= \" + value;\r\n          break;\r\n      }\r\n      return res;\r\n    },\r\n    getjunction(str) {\r\n      return ' '+str+' ';\r\n    },\r\n\r\n  }\r\n};\r\n",null]}