前端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>
相关推荐
hemoo5 小时前
如何让echart的lengend在指定位置换行
javascript·echarts
葡萄城技术团队5 小时前
Vue 生态下前端 Excel 导入导出终极方案:SpreadJS 实战指南
vue.js
哟哟耶耶5 小时前
Starting again company 03
前端·javascript·vue.js
Chloe_lll5 小时前
threejs(七)PBR材质
开发语言·javascript·材质
敲敲了个代码6 小时前
UniApp 多页面编译优化:编译时间从10分钟到1分钟
开发语言·前端·javascript·学习·uni-app
华仔啊6 小时前
Vue3+CSS实现一个非常丝滑的 input 标签上浮动画,设计师看了都点赞
前端·css·vue.js
明月与玄武7 小时前
2025 前端框架决战:Vue 与 React 分析优缺点及使用场景!
前端·vue.js·react.js
不一样的少年_7 小时前
1024程序员节:用不到100行代码做个“代码雨屏保”装X神器(附源码)
前端·javascript·浏览器
阿奇__7 小时前
el-table默认排序设置
前端·javascript·vue.js