Vue 实现用户管理(展示用户列表功能)

在这里插入图片描述
components下新建user文件夹,user下新建User.vue
在这里插入图片描述

index.js中配置路由(注意在home页面下)

const routes = [
    // 访问根路径的时候跳转到login
    {
        path: '/',
        redirect: '/login'
    },
    {
        path: '/login',
        component: Login
    },
    {
        path: '/home',
        component: () =>
            import ('../components/Home.vue'),
        redirect: '/welcome',
        children: [{
                path: '/welcome',
                component: () =>
                    import ('../components/index/Welcome.vue')
            },
            {
                path: '/users',
                component: () =>
                    import ('../components/user/User.vue')
            }
        ]
    }
]

实现用户管理=>用户列表的面包屑效果

<template>
  <div>
    <!-- 面包屑导航-->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>用户管理</el-breadcrumb-item>
      <el-breadcrumb-item>用户列表</el-breadcrumb-item>
    </el-breadcrumb>

    <!-- 卡片试图-->
    <el-card>
        card
    </el-card>
  </div>
</template>

<script>
export default {};
</script>

在global.css中设置全局样式(面包屑和卡片)

html,
body,
#app {
    margin: 0;
    padding: 0;
    height: 100%;
    min-width: 1366px;
}

.el-breadcrumb {
    font-size: 12px;
    margin-bottom: 15px;
}

.el-card {
    box-shadow: 0 1px 1px rgba(0, 0, 0, .15) !important;
}
<!-- 卡片试图-->
    <el-card>
      <!-- 搜索和添加 -->
      <!-- gutter每列之间的间隔 槽宽 -->
      <el-row :gutter="20">
        <el-col :span="8">
          <el-input
            placeholder="请输入内容"
           
            class="input-with-select"
          >
            <el-button slot="append" icon="el-icon-search"></el-button>
          </el-input>
        </el-col>
        <el-col :span="4">
          <el-button type="primary">添加用户</el-button>
        </el-col>
      </el-row>
    </el-card>
<script>
export default {
    data(){
        return{
            // 查询用户列表的参数对象
            queryInfo:{
                query:'',
                pagenum:1,//页码
                pagesize:5,// 页大小
            },
            // 用户列表数据
            users:[]
        }
    },

    created(){
        this.getUserList()
    },
    methods:{
        async getUserList(){
            const {data:res} = await this.$http.get('users',{
                params:this.queryInfo
            })
            
            if(res.meta.status !== 200){
                return this.$message.error("获取用户列表失败")
            }
            console.log(res)
        }
    }
    
};
</script>

由于很多地方都要用到这个判断,可以定义一个全局的

if(res.meta.status !== 200){
return this.$message.error("获取用户列表失败")}

在vscode 文件=》首选项=>用户片段 定义一个代码片段
在这里插入图片描述

"element-message": {
		"scope": "javascript,typescript,vue",
		"prefix": "msg",
		"body": [
			"if(res.meta.status !== 200){",
                "    return this.\\$message.error('获取$1失败')",
            "}"
		],
		"description": "element-message"
	}

这样每次需要输入这个提示信息时直接输msg就可以出来了

<script>
export default {
    data(){
        return{
            // 查询用户列表的参数对象
            queryInfo:{
                query:'',
                pagenum:1,//页码
                pagesize:5,// 页大小
            },
            // 用户列表数据
            userList:[]
        }
    },

    created(){
        this.getUserList()
    },
    methods:{
        async getUserList(){
            const {data:res} = await this.$http.get('users',{
                params:this.queryInfo
            })
            
            if(res.meta.status !== 200){
                return this.$message.error('获取失败')
            }
            this.userList = res.data.users
            console.log(this.userList)
        }
    }
    
};
</script>

返回的数据

{
    "data": {
        "total": 5,
        "pagenum": 1,
        "users": [
            {
                "id": 25,
                "username": "tom",
                "mobile": "13951783475",
                "type": 1,
                "email": "1049901079@qq.com",
                "create_time": "2020-11-09T20:36:26.000Z",
                "mg_state": true, // 当前用户的状态
                "role_name": "超级管理员"
            }
        ]
    },
    "meta": {
        "msg": "获取成功",
        "status": 200
    }
}
<!-- 用户表格-->
      <!-- 一页有很多行,这个不用关心 会自动帮我们循环 -->
      <el-table :data="userList">
        <el-table-column prop="username" label="姓名"> </el-table-column>
        <el-table-column prop="email" label="邮箱"> </el-table-column>
        <el-table-column prop="mobile" label="电话"> </el-table-column>
        <el-table-column prop="role_name" label="角色"> </el-table-column>
        <el-table-column  label="状态">
          <!--自定义模板 使用作用域插槽,通过scope.row获取当前行数据-->
          <template slot-scope="scope">
            <div>
              <el-switch
                v-model="scope.row.mg_state"
              >
              </el-switch>
            </div>
          </template>
        </el-table-column>
      </el-table>

在这里插入图片描述
完整代码

<template>
  <div>
    <!-- 面包屑导航-->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>用户管理</el-breadcrumb-item>
      <el-breadcrumb-item>用户列表</el-breadcrumb-item>
    </el-breadcrumb>

    <!-- 卡片试图-->
    <el-card>
      <!-- 搜索和添加 -->
      <!-- gutter每列之间的间隔 槽宽 -->
      <el-row :gutter="20">
        <el-col :span="8">
          <el-input placeholder="请输入内容" class="input-with-select">
            <el-button slot="append" icon="el-icon-search"></el-button>
          </el-input>
        </el-col>
        <el-col :span="4">
          <el-button type="primary">添加用户</el-button>
        </el-col>
      </el-row>

      <!-- 用户表格-->
      <!-- 一页有很多行,这个不用关心 会自动帮我们循环 stripe隔行展示 -->
      <el-table :data="userList" border stripe>
          <!-- type="index" 会自动排序 -->
          <el-table-column type="index" label="索引"> </el-table-column>
        <el-table-column prop="username" label="姓名"> </el-table-column>
        <el-table-column prop="email" label="邮箱"> </el-table-column>
        <el-table-column prop="mobile" label="电话"> </el-table-column>
        <el-table-column prop="role_name" label="角色"> </el-table-column>
        <el-table-column label="状态">
          <!--自定义模板 使用作用域插槽,通过scope.row获取当前行数据-->
          <template slot-scope="scope">
            <div>
              <el-switch
                v-model="scope.row.mg_state"
              >
              </el-switch>
            </div>
          </template>
        </el-table-column>
        <el-table-column label="操作">
            <!-- enterable 文字是否可以移入提示信息,默认是可以的 -->
        
      <el-button type="primary" icon="el-icon-edit" size="mini"></el-button>

      <el-button type="danger" icon="el-icon-delete" size="mini"></el-button>
  
         <el-tooltip effect="dark"  placement="top"  content="分配角色" :enterable='false'>
      <el-button type="warning" icon="el-icon-setting" size="mini"></el-button>
    </el-tooltip>
            
            </el-table-column>
      </el-table>
    </el-card>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 查询用户列表的参数对象
      queryInfo: {
        query: "",
        pagenum: 1, //页码
        pagesize: 5, // 页大小
      },
      // 用户列表数据
      userList: [],
    };
  },

  created() {
    this.getUserList();
  },
  methods: {
    async getUserList() {
      const { data: res } = await this.$http.get("users", {
        params: this.queryInfo,
      });

      if (res.meta.status !== 200) {
        return this.$message.error("获取失败");
      }
      this.userList = res.data.users;
      console.log(this.userList);
    },
  },
};
</script>

给表格设置全局样式

.el-table {
    margin-top: 15px;
    font-size: 12px;
}

在这里插入图片描述

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: HTML百科展示页面是一个用于展示HTML(超文本标记语言)相关知识和信息的网页。它是为了方便用户了解和学习HTML而创建的一个在线资源。 该展示页面的设计和布局应该简洁明了,让用户能够轻松找到所需的信息。页面的导航菜单应该包含HTML的基本概念、标签、属性、语法等主要内容。这些菜单可以是一个列表或者是一个侧边栏,以便用户可以点击并跳转到相应的页面。 在每个页面上,相关信息应该以易于理解和使用的方式展示。可以使用适当的标题、子标题、段落和图表等来组织和呈现内容。对于每个HTML标签和属性,应该提供详细的解释和示例,让用户能够更好地理解其作用和用法。 为了增加互动性和更好地学习体验,可以添加一些实例和练习题供用户练习和测试。这些示例可以是一些简单的HTML代码片段,用户可以自行输入并查看效果。 此外,页面应该易于浏览和搜索。可以提供一个搜索框,让用户可以根据关键词快速找到想要的信息。还可以在每个页面的底部添加导航链接,使用户可以方便地跳转到其他相关页面。 最后,为了确保页面内容的准确性和更新性,应该经常审查和更新页面内容。可以在页面上添加一个反馈按钮,让用户可以反馈错误或提供更好的建议。 总之,HTML百科展示页面应该是一个易于使用、美观、内容丰富并提供良好学习体验的页面,让用户能够快速了解和学习HTML知识。 ### 回答2: HTML百科展示页面是一个用于展示HTML相关知识的网页。在这个页面中,可以包含HTML语法、标签、属性和常用的代码示例等内容。 页面的布局可以采用传统的网页布局,包括标题、导航栏和内容区域。标题可以简洁明了地说明这个页面是关于HTML的百科展示。导航栏可以包含HTML相关的主题,例如HTML基础、标签、属性和表单等,方便用户浏览和查找感兴趣的内容。 在页面的内容区域,可以逐步展开HTML知识点。可以首先介绍HTML的基本概念和作用,接着详细讲解HTML标签的用法和常见属性及其取值。针对常见的标签,可以给出实际的代码示例,展示标签的具体用法和效果。同时,还可以介绍常用的CSS样式,如颜色、字体、边框等,以及如何在HTML中使用它们。 此外,可以在页面中插入交互元素,如按钮、链接和折叠面板等,用于用户自主选择感兴趣的知识点进行学习。还可以提供一个搜索框,方便用户根据关键词查找相关的HTML知识。 最后,为了增加页面的可读性和吸引力,可以添加一些配图,用图文并茂的方式展示某些HTML标签的用法和效果。 总之,HTML百科展示页面应该具备简洁明了的布局、详细全面的HTML知识点,以及交互和可视化的展示手段,帮助用户更好地理解和学习HTML。 ### 回答3: HTML 百科展示页面是一个用来展示与HTML相关知识的网页。作为一种标记语言,HTML (Hypertext Markup Language) 用于创建网页结构和内容。这个展示页面的目的是向用户提供关于HTML的详细信息,包括标签、属性、元素以及常用的编码技巧和最佳实践。 首先,该页面应该包含一个简洁明了的导航栏,其中列出了各个HTML主题的链接,例如基础标签、文本格式化、图像和链接等。这样用户可以根据自己的需求选择他们感兴趣的主题,从而更快地找到相关的信息。 对于每个主题,应该提供简要但详细的介绍,解释该主题在HTML中的作用和用法。展示页面可以使用易于阅读的排版方式,例如使用不同的字体、颜色和大小来突出显示关键点。 为了更好地帮助用户理解和掌握HTML,页面还可以提供一些实例代码和实时预览功能用户可以看到代码的效果,并通过修改代码来实时查看更改后的结果。这样可以更加直观地展示HTML标签和属性的作用。 此外,展示页面还可以包括一些常见问题和解答,以及一些有用的资源和链接,帮助用户进一步扩展和深入了解HTML。这些资源可以包括编辑器推荐、在线教程和HTML规范的链接。 最后,展示页面应该是响应式设计的,能够适应不同设备和屏幕大小。这样用户无论是在电脑上还是在手机上都能方便地访问和使用。 总之,HTML百科展示页面应该提供简洁明了的导航栏、详细的主题介绍、实例代码和实时预览功能、常见问题和解答以及相关资源的链接。它的目标是通过有效的展示和交互,帮助用户更好地掌握和运用HTML。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

季布,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值