自定义tree节点内容(反显) 选取后动态生成表格

本文介绍如何在Vue.js应用中,通过自定义tree组件节点内容,并实现节点选择后的反显,动态生成对应的表格展示。该功能适用于前端数据展示场景,通过选择tree节点,将详细信息以表格形式呈现。
摘要由CSDN通过智能技术生成
  <div>
    <el-tree
       :default-checked-keys="taskBack"
      ref="SlotTree"
      auto-expand-parent
      style=" overflow: auto;"
      :data="treeData"
      :props="defaultProps"
      :expand-on-click-node="true"
      :node-key="NODE_KEY"
      show-checkbox
      @check-change="handleCheckChange"
    >
      <!-- NODE_KEY设置为id -->
      <div class="comp-tr-node" slot-scope="{ node, data }">
        <!-- 增加状态 -->
        <template v-if="node.isAdd">
          <el-input
            v-model="newNodeValue"
            width="100"
            autofocus
            size="mini"
            :ref="'slotTreeInput' + data[NODE_KEY] + 1"
            @blur.stop="handleAddInput(node, data)"
            @keyup.enter.native="handleAddInput(node, data)"
          ></el-input>
        </template>
        <!-- 编辑状态 -->
        <template v-if="node.isEdit">
          <el-input
            v-model="data.label"
            autofocus
            size="mini"
            :ref="'slotTreeInput' + data[NODE_KEY]"
            @blur.stop="handleInput(node, data)"
            @keyup.enter.native="handleInput(node, data)"
          ></el-input>
        </template>

        <!-- 非编辑状态 -->
        <template v-else>
          <!-- 名称: 新增节点增加class(is-new) -->
          <span
            :class="[
              data[NODE_KEY] > NODE_ID_START ? 'is-new' : '',
              'comp-tr-node--name'
            ]"
          >{
  { node.label }}</span>

          <!-- 按钮 -->
          <span class="comp-tr-node--btns">
            <!-- 新增 -->
            <el-tooltip class="item" effect="dark" content="新增" placement="top">
              <el-button
                v-if="node.level == 1"
                icon="el-icon-plus"
                style="padding:1px"
                size="mini"
                circle
                type="primary"
                @click="handleAdd(node, data)"
              ></el-button>
            </el-tooltip>

            <!-- 编辑 -->
            <el-tooltip class="item" effect="dark" content="修改" placement="top">
              <el-button
                icon="el-icon-edit"
                style="padding:1px"
                size="mini"
                circle
                type="info"
                @click="handleEdit(node, data)"
              ></el-button>
            </el-tooltip>

            <!-- 删除 -->
            <!-- <el-button icon="el-icon-delete" size="mini" circle type="danger" @click="handleDelete(node, data)">
            </el-button>-->
          </span>
        </template>
      </div>
    </el-tree>
    <!-- <button @click="fun1">23423423</button> -->
  </div>
</template>

<script>
import { saveNode, updateNode } from "@/api/xcjc/taskingMgt";
export default {
  // inject:['reload'],
  name: "component-tree",
  props: {
    treeData: {
      type: Array,
      default: () => {
        return [];
      }
    },
    taskBack: {
      type: Array,
      default: () => {
        return [];
      }
    }
  },
  data() {
    return {
      selectArr: [],
      treeOriganData: [],
      //页面初始化后把树数据的父id都保存起来
      parentIds: [],
      //多选树节点信息存储
      nodeSelectArr: [],
      //新增父id的值
      parentId: null,
      //获取的tree数据
      // treeData: [],
      //新增节点的值
      newNodeValue: "",
      //把修改前的label值存起来
      beforeEditValue: "",
      isLoading: false, // 是否加载
      // setTree:
      NODE_KEY: "value", // id对应字段
      MAX_LEVEL: 2, // 设定最大层级
      NODE_ID_START: 999, // 新增节点id,逐次增加
      startId: null,
      defaultProps: {
        // 默认设置
        children: "children",
        label: "label"
      },
      initParam: {
        // 新增参数
        label: "新增节点",
        pid: 0,
        children: []
      },
      saveNodeFrom: {
        parentId: "",
        name: "",
        proId: "",
        orgTypeId: ""
      },
      updateNodeFrom: {
        id: "",
        name: ""
      }
    };
  },
  created() {
    localStorage.setItem("nodeSelectData"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值