wangting
2024-05-08 923004d8ca3cb956d33f1990b34a5f221da30669
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
@@ -3,6 +3,7 @@
    <dynamic-button v-if="componentVO.buttons && componentVO.buttons.length>0" :componentVO="componentVO"
                    :key="areasName+'buttons-'+componentVO.oid"
                    :butttonList="componentVO.buttons" :dataStore="checkDatas"
                    @afterMethod="handleRefresh"
                    :sourceData="sourceData" type="tree" style="margin-bottom: 5px;"></dynamic-button>
    <el-input
      placeholder="输入关键字进行过滤"
@@ -55,6 +56,10 @@
      type:Boolean,
      default:false
    },
    actionType:{
      //按钮操作类型
      default:""
    },
    areasName:{
      type:String,
      default:''
@@ -104,7 +109,23 @@
            dataStore:newval
          });
        }
      }
      },
      deep: true,
      immediate: true
    },
    data:{
      handler(newval) {
        if(newval) {
          this.$emit("setData", {
            area: this.areasName,
            type:this.componentVO.uiComponentType,
            currentDefineVO:this.componentVO.treeDefineVO,
            data:newval
          });
        }
      },
      deep: true,
      immediate: true
    },
    sourceData:{
      handler(newval) {
@@ -112,7 +133,9 @@
        this.sourceDataMapParams=this.sourceDataMap();
        this.getParams();
        this.handleRefresh();
      }
      },
      deep: true,
      immediate: true
    }
  },
  data() {
@@ -155,23 +178,21 @@
            this.sourceData.oid = this.sourceData.oid.split('@vcitreesep@')[1];
          }
          sourceDataMap.sourceBtmName = this.sourceBtmType;
          ;
          sourceDataMap.sourceOid = this.sourceData.oid;
        }
        for (let i in this.sourceData) {
          let item = this.sourceData[i]
          if (item && item.constructor === Object) return;
          if (i == 'type' || i == 'context' || i == 'content') return;
          const item = this.sourceData[i]
          if (item && item.constructor === Object) continue;
          if (i == 'type' || i == 'context' || i == 'content') continue;
          sourceDataMap['sourceData["' + i + '"]'] = item
        }
      }
      if (Object.keys(this.paramVOS).length > 0) {
        for (let i in this.paramVOS) {
          let item = this.paramVOS[i]
          if (item && item.constructor === Object) return;
          if (i == 'type' || i == 'context' || i == 'content') return;
          sourceDataMap['sourceData["' + i + '"]'] = item
        for (let j in this.paramVOS) {
          if (this.paramVOS[j] && this.paramVOS[j].constructor === Object) continue;
          if (j == 'type' || j == 'context' || j == 'content' || j == "getdataurl" || j == "getdatamethod" || j == "url" || j == "method" || j == "uploadfileurl" || j == "title") continue;
          sourceDataMap['sourceData["' + j + '"]'] = this.paramVOS[j]
        }
      }
      return sourceDataMap;
@@ -219,39 +240,57 @@
        parentOid = parentOid.split('@vcitreesep@')[1];
      }
      const parentBtmName = (node.level === 0) ? '' : node.data.attributes.btmname;
      const params=this.params;
      if(node.level === 0){
        params.queryRoot= true;
      }else {
      const params = this.params;
      if (node.level === 0) {
        params.queryRoot = true;
      } else {
        delete params.queryRoot;
      }
      getTree(parentOid, parentBtmName, params).then(res => {
        resolve(res.data.treeData)
        this.$nextTick(()=>{
          if (this.isRefresh) {
            this.$refs.tree.setCurrentKey(this.currentClickNode.data.oid);
            this.isRefresh=false;
          }
        })
      }).catch(error => {
        this.$message.error(error);
      })
    },
    checkNode(checkedNode, checkedData) {
      if (this.isMuti) {
        this.checkDatas = checkedData.checkedNodes;
        let checkDatas = [];
        checkedData.checkedNodes.forEach(item=>{
          checkDatas.push(item.attributes)
        })
        this.checkDatas=checkDatas;
      }
    },
    changeNode(data, node) {
      if (!this.isMuti) {
        this.checkDatas = [data];
        this.checkDatas = [data.attributes];
      }
    },
    clickNode(data, node) {
      this.currentClickNode = node;
    },
    handleRefresh() {
      if (!this.lazy) {
        this.initData();
      } else {
        if (this.currentClickNode) {
          let node = this.currentClickNode.parent;
          node.loaded = false;
          node.expand();
    handleRefresh(type,data) {
      //type:add\edit\delete
      if(type=="delete" || type=="del"){
        this.$refs.tree.remove(this.currentClickNode);
        this.currentClickNode=null;
      }else{
        if (!this.lazy) {
          this.initData();
        } else {
          if (this.currentClickNode) {
            let node = this.currentClickNode.parent;
            node.loaded = false;
            node.expand();
            this.isRefresh=true;
          }
        }
      }
      this.checkDatas = [];