前端tree树

1、效果

2、heml代码

html 复制代码
 <splitpanes
                :horizontal="this.$store.getters.device === 'mobile'"
                class="default-theme"
              >
                <!--拆装序列列表获取-->
                <pane size="20">
                  <el-col>
                    <div class="head-container" style="margin-top: 10px">
                      <el-input
                        v-model="deptName"
                        placeholder="请输入"
                        clearable
                        size="small"
                        prefix-icon="el-icon-search"
                        style="margin-bottom: 20px"
                        @input="handleTreeSearch"
                        @clear="handleTreeSearch"
                      />
                    </div>
                    <div
                      class="head-container"
                      style="max-height: 260px; overflow-y: auto"
                    >
                      <el-tree
                        :data="deptOptions"
                        :props="defaultProps"
                        :expand-on-click-node="false"
                        :filter-node-method="filterNode"
                        ref="tree1"
                        node-key="taskId"
                        default-expand-all
                        highlight-current
                        @node-click="handleNodeClick"
                      />
                    </div>
                  </el-col>
                </pane>
                <!--用户数据-->
                <pane size="84">
                  <el-col>
                    <el-table :data="comfortLevelList" max-height="260">
                      <el-table-column
                        align="center"
                        label="序号"
                        type="index"
                        width="50"
                      >
                      </el-table-column>
                      <el-table-column
                        align="center"
                        label="id"
                        prop="id"
                        v-if="false"
                      >
                      </el-table-column>
                      <el-table-column
                        align="center"
                        label="解脱点动画名称"
                        prop="animationName"
                      >
                      </el-table-column>
                      <el-table-column
                        align="center"
                        label="量化值"
                        prop="quantizedValue"
                      >
                      </el-table-column>
                      <el-table-column align="center" label="等级" prop="grade">
                      </el-table-column>
                    </el-table>
                  </el-col>
                </pane>
              </splitpanes>

3、js代码

javascript 复制代码
<script>
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { Splitpanes, Pane } from "splitpanes";
import "splitpanes/dist/splitpanes.css";
export default {

components: { Treeselect, Splitpanes, Pane },

  data() {
    return {
        deptOptions: [
             // {
            //   taskId: 1,
            //   startTime: "时间",
            // },
            // {
            //   taskId: 2,
            //   startTime: "时间1",
            // },
          ],
          // 拆装序列列表获取
          deptName: undefined,
          defaultProps: {
            children: "children",
            label: "startTime",
          },
        }
    }
}

methods: {
      /*
     *@Author: 
     *@Date: 2025-10-22 16:14:45
     *@Description: 树搜索触发方法(根据当前Tab选择对应树实例)
     */
    handleTreeSearch() {
      // 根据 activeName 映射到对应的树 ref
      const refMap = {
        first: "tree1", // 第一个Tab的树ref
        second: "tree2", // 第二个Tab的树ref
        third: "tree3", // 第三个Tab的树ref
        fourth: "tree4", // 第四个Tab的树ref
        fifth: "tree5", // 第五个Tab的树ref
        seventh: "tree7", // 第六个Tab的树ref(对应name="seventh")
      };
      // 获取当前Tab对应的树实例
      const treeRef = refMap[this.activeName];
      const treeInstance = this.$refs[treeRef];
      // 若树实例存在,调用filter方法
      if (treeInstance) {
        treeInstance.filter(this.deptName);
      }
    },
    /*
     *@Author: 
     *@Date: 2025-10-16 13:37:04
     *@Description: 筛选节点
     */
    filterNode(value, data) {
      if (!value) return true;
      return data.startTime.indexOf(value) !== -1;
    },
    /*
     *@Author: 
     *@Date: 2025-10-16 13:37:41
     *@Description: 基于关节位移维修舒适性评估点击左侧树时间获取右侧评估内容
     */
    handleNodeClick(row) {
      console.log("点击了树", row);
      let data = {
        id: this.rowID,
        taskName: this.taskName,
        assessType: this.assessType,
        taskId: row.taskId, // 维修任务id
        startTime: row.startTime, // 评估id
      };
      console.log(data);
      // 调用维修舒适度综合评估
      new QWebChannel(qt.webChannelTransport, (channel) => {
        var content = channel.objects.content;
        //接收信号
        content.signal_Get_assess_result.connect((data) => {
          let res = JSON.parse(data);
          if (res.code == 200) {
            this.comfortLevelList = res.data;
          } else {
            this.$message.error(res.message);
          }
        });
        content.slot_Get_assess_result(JSON.stringify(data));
      });
    },

    },
</script>
相关推荐
敲敲了个代码7 小时前
从硬编码到 Schema 推断:前端表单开发的工程化转型
前端·javascript·vue.js·学习·面试·职场和发展·前端框架
张雨zy8 小时前
Pinia 与 TypeScript 完美搭配:Vue 应用状态管理新选择
vue.js·ubuntu·typescript
dly_blog8 小时前
Vue 响应式陷阱与解决方案(第19节)
前端·javascript·vue.js
消失的旧时光-19439 小时前
401 自动刷新 Token 的完整架构设计(Dio 实战版)
开发语言·前端·javascript
console.log('npc')9 小时前
Table,vue3在父组件调用子组件columns列的方法展示弹窗文件预览效果
前端·javascript·vue.js
我命由我123459 小时前
SVG - SVG 引入(SVG 概述、SVG 基本使用、SVG 使用 CSS、SVG 使用 JavaScript、SVG 实例实操)
开发语言·前端·javascript·css·学习·ecmascript·学习方法
C_心欲无痕10 小时前
vue3 - markRaw标记为非响应式对象
前端·javascript·vue.js
qingyun98910 小时前
深度优先遍历:JavaScript递归查找树形数据结构中的节点标签
前端·javascript·数据结构
胡楚昊10 小时前
NSSCTF动调题包通关
开发语言·javascript·算法
熬夜敲代码的小N10 小时前
Vue (Official)重磅更新!Vue Language Tools 3.2功能一览!
前端·javascript·vue.js