zoukankan      html  css  js  c++  java
  • SPA项目开发之动态树+数据表格+分页

    1、准备好后台(左侧树,带分页的文章查询)

    2、将左侧树的数据绑定到elementui中的menu标签上

    3、新增一个自定义组件用来展示文章列表的

    4、绑定elementui提供的分页组件来完成分页功能

    动态生成NavMenu导航菜单(只支持2级菜单)

    结构:

    <el-menu key="" index="">
    
            <el-submenu>
    
              <template slot="title">
    
                <i class="el-icon-location"></i>
    
                <span>导航一</span>
    
              </template>
    
              <template slot="title">分组一</template>
    
              <el-menu-item route="">

     vue+elementel-menu组件实现路由跳转及当前项的设置

    <el-menu router :default-active="$route.path">
    
     <el-menu-item index="/company/userManager">用户管理</el-menu-item>

      注1:要实现路由跳转,先要在el-menu标签上添加router属性,然后只要在每个el-menu-item标签内

               index属性设置一下url即可实现点击el-menu-item实现路由跳转。

          2:导航当前项,在el-menu标签中绑定  :default-active="$route.path",注意是绑定属性,

               不要忘了加“:”,$route.path等于el-menu-item标签中的index属性值时则该item为当前项。

          3:后台t_tree_node表有几个节点的url为空,则会导致几个节点样式会一致

    动态树:

    <template>
        <el-menu  router :default-active="$route.path"  class="el-menu-vertical-demo" background-color="#334157"
         text-color="#fff" active-text-color="#ffd04b" :collapse="collapsed">
            <!-- <el-menu default-active="2" :collapse="collapsed" collapse-transition router :default-active="$route.path" unique-opened class="el-menu-vertical-demo" background-color="#334157" text-color="#fff" active-text-color="#ffd04b"> -->
            <div class="logobox">
                <img class="logoimg" src="../assets/img/logo.png" alt="">
            </div>
            <!--  注意:index是必填的属性 
            1.index可以看成ID,也就是说它是唯一的 
             2.它代表路由的跳转路径-->
            <el-submenu :index="'id_'+m.treeNodeId" v-for="m in menus">
                <template slot="title">
                    <i :class="m.icon"></i>
                    <span>{{m.treeNodeName}}</span>
                </template>
                    <el-menu-item :key="'id_'+m2.treeNodeId" :index="m2.url" v-for="m2 in m.children">
                         <template slot="title">
                            <i :class="m2.icon"></i>
                            <span>{{m2.treeNodeName}}</span>
                        </template>
                    </el-menu-item>
                
              </el-submenu>
            </el-submenu>
           
        </el-menu>
    </template>
    <script>
        export default {
            data(){
                return{
                    collapsed:false,
                    menus:[]
                }
            },
            created(){
                this.$root.Bus.$on("collapsed-side",(v)=>{
                    this.collapsed = v;
                });
                let url =this.axios.urls.SYSTEM_MENU_TREE;
                this.axios.post(url,{})
                .then((response)=>{
                
                         console.log(response);
                 this.menus=response.data.result;
                    }).catch((response)=>{
                         console.log(response);
                    });
                }
        }
    </script>
    <style>
        .el-menu-vertical-demo:not(.el-menu--collapse) {
             240px;
            min-height: 400px;
        }
    
        .el-menu-vertical-demo:not(.el-menu--collapse) {
            border: none;
            text-align: left;
        }
    
        .el-menu-item-group__title {
            padding: 0px;
        }
    
        .el-menu-bg {
            background-color: #1f2d3d !important;
        }
    
        .el-menu {
            border: none;
        }
    
        .logobox {
            height: 40px;
            line-height: 40px;
            color: #9d9d9d;
            font-size: 20px;
            text-align: center;
            padding: 20px 0px;
        }
    
        .logoimg {
            height: 40px;
        }
    </style>

    数据表格:

    <!-- 表格 -->
            <el-table
          :data="tableData"
          style=" 100%">
          <el-table-column
            prop="id"
            label="ID"
            width="180">
          </el-table-column>
          <el-table-column
            prop="title"
            label="文章标题"
            width="180">
          </el-table-column>
          <el-table-column
            prop="body"
            label="文章内容">
          </el-table-column>
        </el-table>
        <!-- 分页条 -->
            <el-pagination style="margin-top: 20px;" @size-change="handleSizeChange" @current-change="handleCurrentChange"
            :current-page="formInline.page" :page-sizes="[10, 20, 30, 50]" :page-size="formInline.rows" layout="total, sizes, prev, pager, next, jumper"
            :total="total">
            </el-pagination>
    <script>
        export default {
            data() {
                return {
                    tableData:[],
                    total:0,
                    formInline:{
                        title:'',
                        page:1,
                        rows:10,
                        total:0
                    }
                };
            },
            methods:{
                search(){
                    this.doSearch(this.formInline);
                },
                doSearch(params){
                    let url =this.axios.urls.SYSTEM_ARTICLE_LIST;
                    this.axios.post(url,{params})
                    .then((response)=>{
                    
                     console.log(response);
                     this.tableData=response.data.result;
                     this.total=response.data.pageBean.total;
                        }).catch((response)=>{
                             console.log(response);
                        });
                },
                handleSizeChange(rows) {
                    console.log('页码大小发生改变的时候触发');
                    this.formInline.page = 1;
                    this.formInline.rows = rows;
                    this.search();
                },
                handleCurrentChange(page) {
                    console.log('当前页页码发生改变的时候触发');
                    this.formInline.page = page;
                    this.search();
                }
            },
            created(){
                this.doSearch({});
            }
        }
    </script>

    页面展示:

  • 相关阅读:
    cinder支持nfs快照
    浏览器输入URL到返回页面的全过程
    按需制作最小的本地yum源
    创建可执行bin安装文件
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    惠普IPMI登陆不上
    Linux进程状态——top,ps中看到进程状态D,S,Z的含义
    openstack-neutron基本的网络类型以及分析
    openstack octavia的实现与分析(二)原理,架构与基本流程
    flask上下文流程图
  • 原文地址:https://www.cnblogs.com/psyu/p/11348342.html
Copyright © 2011-2022 走看看