wangting
2024-05-07 46c673f0bf4a22ae108e90cfcf1bdeb4f0b6a45c
Source/ProjectWeb/src/components/dynamic-components/dynamic-tree.vue
@@ -1,7 +1,9 @@
<template>
  <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid">
    <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="输入关键字进行过滤"
@@ -48,6 +50,11 @@
    inDialog: {
      type: Boolean,
      default: false
    },
    canEdit:{
      //内容是否可编辑
      type:Boolean,
      default:false
    },
    areasName:{
      type:String,
@@ -98,7 +105,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) {
@@ -106,7 +129,9 @@
        this.sourceDataMapParams=this.sourceDataMap();
        this.getParams();
        this.handleRefresh();
      }
      },
      deep: true,
      immediate: true
    }
  },
  data() {
@@ -213,39 +238,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"){
        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 = [];