前端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>
相关推荐
烬头882121 分钟前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas13624 分钟前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
2601_9498333937 分钟前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
军军君012 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
xiaoqi9223 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
qq_177767373 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
2603_949462103 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
wuhen_n3 小时前
JavaScript内存管理与执行上下文
前端·javascript
Hi_kenyon4 小时前
理解vue中的ref
前端·javascript·vue.js
jin1233224 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos