• vue elementui 树形


    <template>
      <div class="department-container">
        <p>栏目管理</p>
        <div style="display: flex; margin: 10px 0">
          <Button type="primary" @click="addNew">新增栏目</Button>
        </div>
        <div class="box">
          <div
            style=" 300px; border-right: 1px solid #eee; padding-right: 4px"
          >
            栏目名称:
            <el-input
              placeholder="输入关键字进行过滤"
              v-model="filterText"
              size="mini"
              style=" 200px"
              clearable
            >
            </el-input>
    
            <el-tree
              ref="tree"
              class="org-tree"
              :data="menuList"
              :props="defaultProps"
              node-key="id"
              :expand-on-click-node="false"
              :filter-node-method="filterNode"
              default-expand-all
            >
              <span class="custom-tree-button" slot-scope="{ node, data }">
                <span
                  :class="[data.id == id ? 'active' : '']"
                  @click="itemHandle(data)"
                  >{{ node.label }}</span
                >
    
                <span style="margin-left: 6px">
                  <el-button
                    type="text"
                    size="medium"
                    icon="el-icon-circle-plus-outline"
                    @click="() => addNew(data)"
                  >
                  </el-button>
                  <el-button
                    type="text"
                    size="medium"
                    icon="el-icon-edit-outline"
                    @click="() => edit(data)"
                  >
                  </el-button>
    
                  <el-button
                    type="text"
                    size="medium"
                    icon="el-icon-delete"
                    @click="() => deleteMenu(data)"
                  >
                  </el-button>
                </span>
              </span>
            </el-tree>
          </div>
          <div v-if="id" style="padding-left: 80px;  800px">
            <div class="title">栏目信息</div>
            <div class="content-text">
              <span class="content-text-name">父栏目名称:</span>
              <span>{{
                infoList.superiorColumn ? infoList.superiorColumn : "/"
              }}</span>
            </div>
            <div class="content-text">
              <span class="content-text-name">栏目名称:</span>
              <span>{{ infoList.columnName ? infoList.columnName : "/" }}</span>
            </div>
            <div class="content-text">
              <span class="content-text-name">描述:</span>
              <span>{{ infoList.description ? infoList.description : "/" }}</span>
            </div>
            <div class="content-text">
              <span class="content-text-name">栏目链接地址:</span>
              <span>{{ infoList.linkPath ? infoList.linkPath : "/" }}</span>
            </div>
          </div>
        </div>
      </div>
    </template>
    
    <script>
    import {
      culumnManagementList,
      columnManagementDelete,
    } from "@/api/columnmanage";
    
    export default {
      components: {},
      watch: {
        filterText(val) {
          this.$refs.tree.filter(val);
        },
      },
      data() {
        return {
          filterText: "",
          menuList: [],
          defaultProps: {
            children: "children",
            label: "columnName",
          },
          id: "",
        };
      },
      created() {
        this._culumnManagementList();
      },
      mounted() {},
      methods: {
        _culumnManagementList() {
          culumnManagementList().then((res) => {
            // console.log(res, "res1111");
            if (res.data.code == "00000") {
              this.menuList = res.data.data || [];
            }
          });
        },
        // 点击节点
        itemHandle(data, resolve) {
          // 动态加载子菜单
          this.id = data.id;
          this.infoList = data;
        },
        // 打开新增修改弹窗
        addNew(data) {
          if (data) {
            let parentId = data.superiorColumnId;
            let menuId = data.id;
            this.$router.push({
              name: "columnEdit",
              params: {
                parentId: parentId,
                id: menuId,
                type: 1,
                columnName: data.columnName,
              },
            });
          } else {
            // 新增第一级
            this.$router.push({
              name: "columnEdit",
            });
          }
        },
        // 打开编辑弹窗
        edit(data) {
          let parentId = data.columnNameId;
          let menuId = data.id;
          this.$router.push({
            name: "columnEdit",
            params: {
              parentId: parentId,
              id: menuId,
              type: 2,
              columnName: data.columnName,
            },
          });
        },
        // 删除菜单
        deleteMenu(data) {
          let _this = this;
          _this.$Modal.confirm({
            title: "提示",
            content: `确定要删除吗?`,
            onOk() {
              columnManagementDelete(data.id).then((res) => {
                console.log("res", res);
                if (res.data.code == "00000") {
                  this.$message({
                    message: "删除成功",
                    type: "success",
                  });
                  _this._culumnManagementList();
                } else {
                  this.$message.error(res.data.desc);
                }
              });
            },
          });
        },
        filterNode(value, data) {
          if (!value) return true;
          return data.columnName.indexOf(value) !== -1;
        },
      },
    };
    </script>
    
    <style scoped lang="less">
    .department-container {
      .box {
        position: relative;
        display: flex;
    
        .active {
          color: #66b1ff;
        }
    
        .title {
          font-size: 18px;
          margin-bottom: 10px;
          // font-weight: 600;
        }
    
        .content-text {
          margin-bottom: 10px;
          .content-text-name {
            display: inline-block;
            width: 140px;
            text-align: right;
            letter-spacing: 2px;
            // font-weight: 600;
          }
        }
      }
    
      .operator {
        position: absolute;
        top: 0;
        left: 950px;
      }
    
      p {
        height: 30px;
        line-height: 30px;
        border: 1px solid #eaeaea;
        padding-left: 10px;
        margin-bottom: 10px;
      }
    }
    
    /deep/ .ul-style {
      position: absolute;
      top: 32px;
      left: 120px;
      width: 278px;
      background: #fff;
      border: 1px solid #eeeeee;
      border-radius: 2px;
      padding: 5px 0px;
      max-height: 200px;
      overflow-y: auto;
    
      li {
        list-style: none;
        padding: 5px 10px;
      }
    
      li:hover {
        background: #eeeeee;
        cursor: pointer;
      }
    }
    </style>
  • 相关阅读:
    Yii2 国际化的问题 zh-CN
    Yii2归档安装法
    MySQL性能优化的最佳20+条经验
    Jquery 选择器汇总
    关于MooTools你应该熟知的6个基本知识
    Android开发效率—Eclipse快捷键
    Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: Connectio (andriod sdk manager) http://dl-ssl.google.com/android上不去解决方案
    Windows下搭建objective C开发环境
    android studio创建项目
    android studio 安装与环境搭建
  • 原文地址:https://www.cnblogs.com/Byme/p/15684194.html
Copyright © 2020-2023  润新知