ZZJ
2022-03-29 658915facb9ec5a5ad83abceb4d64dccac15e631
src/views/search/components/treeMenu/jsTree/tree.vue
@@ -26,7 +26,11 @@
      >
        <template slot-scope="_">
          <slot :vm="_.vm" :model="_.model">
            <i :class="_.vm.themeIconClasses" role="presentation" v-if="!_.model.loading"></i>
            <i
              :class="_.vm.themeIconClasses"
              role="presentation"
              v-if="!_.model.loading"
            ></i>
            <span v-html="_.model[textFieldName]"></span>
          </slot>
        </template>
@@ -48,7 +52,7 @@
    data: { type: Array },
    size: {
      type: String,
      validator: value => ["large", "small"].indexOf(value) > -1
      validator: (value) => ["large", "small"].indexOf(value) > -1,
    },
    showCheckbox: { type: Boolean, default: false },
    wholeRow: { type: Boolean, default: false },
@@ -64,18 +68,18 @@
      type: Object,
      default: function () {
        return {};
      }
      },
    },
    async: { type: Function },
    loadingText: { type: String, default: "Loading..." },
    draggable: { type: Boolean, default: false },
    dragOverBackgroundColor: { type: String, default: "#C9FDC9" },
    klass: String
    klass: String,
  },
  data() {
    return {
      draggedItem: undefined,
      draggedElm: undefined
      draggedElm: undefined,
    };
  },
  computed: {
@@ -85,7 +89,7 @@
        { "tree-default": !this.size },
        { [`tree-default-${this.size}`]: !!this.size },
        { "tree-checkbox-selection": !!this.showCheckbox },
        { [this.klass]: !!this.klass }
        { [this.klass]: !!this.klass },
      ];
    },
    containerClasses() {
@@ -93,7 +97,7 @@
        { "tree-container-ul": true },
        { "tree-children": true },
        { "tree-wholerow-ul": !!this.wholeRow },
        { "tree-no-dots": !!this.noDots }
        { "tree-no-dots": !!this.noDots },
      ];
    },
    sizeHeight() {
@@ -105,7 +109,7 @@
        default:
          return ITEM_HEIGHT_DEFAULT;
      }
    }
    },
  },
  methods: {
    initializeData(items) {
@@ -154,13 +158,13 @@
      let self = this;
      node.addBefore = function (data, selectedNode) {
        let newItem = self.initializeDataItem(data);
        let index = selectedNode.parentItem.findIndex(t => t.id === node.id);
        let index = selectedNode.parentItem.findIndex((t) => t.id === node.id);
        selectedNode.parentItem.splice(index, 0, newItem);
      };
      node.addAfter = function (data, selectedNode) {
        let newItem = self.initializeDataItem(data);
        let index =
          selectedNode.parentItem.findIndex(t => t.id === node.id) + 1;
          selectedNode.parentItem.findIndex((t) => t.id === node.id) + 1;
        selectedNode.parentItem.splice(index, 0, newItem);
      };
      node.addChild = function (data) {
@@ -170,13 +174,13 @@
      };
      node.openChildren = function () {
        node.opened = true;
        self.handleRecursionNodeChildren(node, node => {
        self.handleRecursionNodeChildren(node, (node) => {
          node.opened = true;
        });
      };
      node.closeChildren = function () {
        node.opened = false;
        self.handleRecursionNodeChildren(node, node => {
        self.handleRecursionNodeChildren(node, (node) => {
          node.opened = false;
        });
      };
@@ -223,14 +227,14 @@
      this.$emit("item-click", oriNode, oriItem, e);
    },
    handleSingleSelectItems(oriNode, oriItem) {
      this.handleRecursionNodeChilds(this, node => {
      this.handleRecursionNodeChilds(this, (node) => {
        if (node.model) node.model.selected = false;
      });
      oriNode.model.selected = true;
    },
    handleBatchSelectItems(oriNode, oriItem) {
      console.log('oriNode, oriItem', oriNode, oriItem)
      this.handleRecursionNodeChilds(oriNode, node => {
      console.log("oriNode, oriItem", oriNode, oriItem);
      this.handleRecursionNodeChilds(oriNode, (node) => {
        if (!!node.model) {
          if (!!node.model.disabled) return;
          node.model.selected = oriNode.model.selected;
@@ -251,18 +255,17 @@
      var self = this;
      if (this.async) {
        if (oriParent[0].loading) {
          this.async(oriNode, data => {
          this.async(oriNode, (data) => {
            if (data.length > 0) {
              for (let i in data) {
                if (!data[i].isLeaf) {
                  if (typeof data[i][self.childrenFieldName] !== "object") {
                    data[i][self.childrenFieldName] = [
                      self.initializeLoading()
                      self.initializeLoading(),
                    ];
                  }
                }
                var dataItem = self.initializeDataItem(data[i]);
                debugger
                self.$set(oriParent, i, dataItem);
              }
            } else {
@@ -280,7 +283,7 @@
      this.draggedItem = {
        item: oriItem,
        parentItem: oriNode.parentItem,
        index: oriNode.parentItem.findIndex(t => t.id === oriItem.id)
        index: oriNode.parentItem.findIndex((t) => t.id === oriItem.id),
      };
      this.$emit("item-drag-start", oriNode, oriItem, e);
@@ -312,7 +315,7 @@
          this.draggedItem.item === oriItem ||
          (oriItem[this.childrenFieldName] &&
            oriItem[this.childrenFieldName].findIndex(
              t => t.id === this.draggedItem.item.id
              (t) => t.id === this.draggedItem.item.id
            ) !== -1)
        ) {
          return;
@@ -329,7 +332,7 @@
        });
        this.$emit("item-drop", oriNode, oriItem, draggedItem.item, e);
      }
    }
    },
  },
  created() {
    this.initializeData(this.data);
@@ -341,8 +344,8 @@
    }
  },
  components: {
    TreeItem
  }
    TreeItem,
  },
};
</script>
<style lang="less">