• SPA项目开发之动态树+数据表格+分页


    目录

    一、左侧动态树形菜单

    二、文章管理实现数据表格$分页


    一、左侧动态树形菜单

    思路:

    1.要确定静态树形菜单的排版

    2.要通过后台获取树形节点的数据    this.axious.post

    3.通过拿到的数据,渲染树形节点

         v-for 渲染节点

         定义渲染节点的变量

     LeftNav.vue:

    1. <template>
    2. <el-menu router :default-active="$route.path" class="el-menu-vertical-demo" background-color="#334157"
    3. text-color="#fff" active-text-color="#ffd04b" :collapse="collapsed" >
    4. <div class="logobox">
    5. <img class="logoimg" src="../assets/img/logo.png" alt="">
    6. div>
    7. <el-submenu v-for="m in menus" :key="'id_'+m.treeNodeId">
    8. <template slot="title">
    9. <i :class="m.icon">i>
    10. <span >{{m.treeNodeName}}span>
    11. template>
    12. <el-menu-item v-for="m2 in m.children" :key="'id_'+m2.treeNodeId" :index="m2.url">
    13. <i :class="m2.icon">i>
    14. <span >{{m2.treeNodeName}}span>
    15. el-menu-item>
    16. el-submenu>
    17. el-menu>
    18. template>
    19. <script>
    20. export default {
    21. data(){
    22. return {
    23. collapsed:false,
    24. menus:[]
    25. }
    26. },
    27. created(){
    28. this.$root.Bus.$on("collapsed-side", (v)=>{
    29. this.collapsed= v ;
    30. });
    31. //向后台拿树形节点的数据
    32. let url = this.axios.urls.SYSTEM_MENU_TREE;
    33. this.axios.post(url, {})
    34. .then(resp => { //代表成功 箭头函数 jdk8的语法
    35. console.log(resp);
    36. //debugger
    37. this.menus = resp.data.result;
    38. }).catch(function() { //代表失败
    39. });
    40. }
    41. }
    42. script>
    43. <style>
    44. .el-menu-vertical-demo:not(.el-menu--collapse) {
    45. width: 240px;
    46. min-height: 400px;
    47. }
    48. .el-menu-vertical-demo:not(.el-menu--collapse) {
    49. border: none;
    50. text-align: left;
    51. }
    52. .el-menu-item-group__title {
    53. padding: 0px;
    54. }
    55. .el-menu-bg {
    56. background-color: #1f2d3d !important;
    57. }
    58. .el-menu {
    59. border: none;
    60. }
    61. .logobox {
    62. height: 40px;
    63. line-height: 40px;
    64. color: #9d9d9d;
    65. font-size: 20px;
    66. text-align: center;
    67. padding: 20px 0px;
    68. }
    69. .logoimg {
    70. height: 40px;
    71. }
    72. style>

     二、文章管理实现数据表格$分页

            我们接下来实现点击文章管理绑定数据:

    ①创建组件

    创建一个组件用来放置我们的文章管理的内容

    Articles.vue

     ②定义绑定组件与路由的关系

    index.js:

    1. import Vue from 'vue'
    2. import Router from 'vue-router'
    3. import HelloWorld from '@/components/HelloWorld'
    4. import AppMain from '@/vue/AppMain'
    5. import LeftNav from '@/vue/LeftNav'
    6. import TopNav from '@/vue/TopNav'
    7. import Login from '@/views/Login'
    8. import Reg from '@/views/Reg'
    9. import Articles from '@/vue/sys/Articles'
    10. Vue.use(Router)
    11. export default new Router({
    12. routes: [{
    13. path: '/',
    14. name: 'Login',
    15. component: Login
    16. },
    17. {
    18. path: '/Login',
    19. name: 'Login',
    20. component: Login
    21. },
    22. {
    23. path: '/Reg',
    24. name: 'Reg',
    25. component: Reg
    26. },
    27. {
    28. path: '/AppMain',
    29. name: 'AppMain',
    30. component: AppMain,
    31. children: [{
    32. path: '/LeftNav',
    33. name: 'LeftNav',
    34. component: LeftNav
    35. },
    36. {
    37. path: '/TopNav',
    38. name: 'TopNav',
    39. component: TopNav
    40. }
    41. ,{
    42. path: '/sys/Articles',
    43. name: 'Articles',
    44. component: Articles
    45. }
    46. ]
    47. }
    48. ]
    49. })

    Articles.vue:

    1. <template>
    2. <div>
    3. <el-form :inline="true" :model="formInline" class="user-search">
    4. <el-form-item label="搜索:">
    5. <el-input size="small" v-model="formInline.title" placeholder="输入文章标题">el-input>
    6. el-form-item>
    7. <el-form-item>
    8. <el-button size="small" type="primary" icon="el-icon-search" @click="search">搜索el-button>
    9. el-form-item>
    10. el-form>
    11. <el-table size="small" :data="listData" element-loading-text="拼命加载中" style="width: 100%;">
    12. <el-table-column align="center" type="selection" min-width="1">
    13. el-table-column>
    14. <el-table-column sortable prop="id" label="文章ID" min-width="1">
    15. el-table-column>
    16. <el-table-column sortable prop="title" label="文章标题" min-width="3">
    17. el-table-column>
    18. <el-table-column sortable prop="body" label="文章内容" min-width="5">
    19. el-table-column>
    20. el-table>
    21. <el-pagination style="margin-top: 20px;" @size-change="handleSizeChange" @current-change="handleCurrentChange"
    22. :current-page="formInline.page" :page-sizes="[10, 20, 30, 50]" :page-size="100" layout="total, sizes, prev, pager, next, jumper"
    23. :total="total">
    24. el-pagination>
    25. div>
    26. template>
    27. <script>
    28. export default {
    29. data() {
    30. return {
    31. listData: [],
    32. formInline: {
    33. page: 1,
    34. rows: 10,
    35. title: ''
    36. },
    37. total: 0
    38. };
    39. },
    40. methods: {
    41. handleSizeChange(rows) {
    42. this.formInline.page = 1;
    43. this.formInline.rows = rows;
    44. this.search();
    45. },
    46. handleCurrentChange(page) {
    47. this.formInline.page = page;
    48. this.search();
    49. },
    50. doSearch(params) {
    51. let url = this.axios.urls.SYSTEM_ARTICLE_LIST;
    52. // let url = 'http://localhost:8080/T216_SSH/vue/userAction_login.action';
    53. this.axios.post(url, params).then((response) => {
    54. console.log(response);
    55. this.listData = response.data.result;
    56. this.total = response.data.pageBean.total;
    57. }).catch(function(error) {
    58. console.log(error);
    59. });
    60. },
    61. search(){
    62. this.doSearch(this.formInline);
    63. }
    64. },
    65. created() {
    66. this.doSearch({});
    67. }
    68. }
    69. script>
    70. <style>
    71. style>

    效果展示:

     

  • 相关阅读:
    Ubuntu22上安装cuda-12-3
    Docker基础(CentOS 7)
    数据安全发展趋势与密码保护技术研究
    基于Springboot + vue 开发的外卖餐购项目(后台管理+消费者端)
    调试分析Linux 0.00引导程序
    Linux动态库
    Leetcode—3148. 矩阵中的最大得分【中等】
    k8s /apis/batch/v1beta1 /apis/policy/v1beta1 接口作用
    java mvn install导致RELEASE包不同环境不一致导致依赖冲突
    Differential (mathematics)
  • 原文地址:https://blog.csdn.net/weixin_66110079/article/details/126829368