飞道的博客

vue后台管理系统开发流程全记录(八)_标签管理功能开发: 表单 | 表格 | 分页

235人阅读  评论(0)

一篇博文对应一个类别,但是对应多个标签。

标签管理的功能也是,展示,修改等。

首先准备标签数据列表接口。

一 接口处理

1.1 创建接口

url: /article/label/search

method: post

描述: 标签分页查询列表

{
   
  "code": 20000,
  "message": "查询成功",
  "data": {
   
    "total": "@integer(100, 200)", // 总记录数    
    "records|20": [{
    //生成20条数据      
      "id|+1": 10, //初始值10开始,每条+1      
      "categoryName": "@cname", //类别ID      
      "name": "@cname", // 随机一个标签名      
      "createDate": "@date", // 随机创建时间      
      "updateDate": "@date" // 随机更新时间    
    }]
  }
}

1.2 封装接口

新建src/api/label.js,在其中放置标签相关接口。

import request from "@/utils/request"

export default {
       // 列表分页接口    
    getList(query, current = 1, size = 20) {
           
        return request({
               
            url: `/article/label/search`,            
            method: 'post',            
            data: {
    ...query, current, size } // 合并成一个对象        
        })    
    },
}  

和类别管理形同,传入查询条件,当前页,每页行数,取回数据。

1.3 调用接口

在src\views\label\index.vue中调用接口。

import api from '@/api/label.js'

export default {
   
    name: 'Label',
    data(){
   
        return {
   
            list: [],      
            page: {
    // 分页相关          
                total: 0, // 总记录数          
                current: 1, // 当前页码          
                size: 20, // 每页显示20条数据,      
            },      
            query: {
   }, // 查询条件
        }
    },
    created(){
   
        this.fetchData();
    },
    methods: {
   
        fetchData(){
   
            api.getList(this.query, this.page.current, this.page.size).then((res)=>{
   
                this.list = res.data.records;
                this.page.total = res.data.total;
            })
        }
    }
}

可以看出,这个页面与类别管理页面雷同,我们可能在后期进行抽象化处理,此时先复制修改。

二 页面绘制

整体来说在类别管理页面上做细微修改。

这里简单给出代码,不清楚的看上一章。

2.1 列表绘制

        <el-table
            :data="list"
            border
            style="100%"
        >
            <el-table-column
                align="center"
                type="index"
                label="序号"
                width="60">
            </el-table-column>
            <el-table-column
                align="center"
                prop="name"
                label="标签名称"
            >
            </el-table-column>
            <el-table-column
                align="center"
                prop="categoryName"
                label="分类名称"
            >
            </el-table-column>
            <el-table-column
                align="center"
                label="操作"
            >
                <template slot-scope="scope">
                    <el-button size="mini">编辑</el-button> 
                    <el-button type="danger" size="mini">删除</el-button> 
                </template>
            </el-table-column>
        </el-table>

三 分页查询实现

添加分页组件。

        <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="page.current"
            :page-sizes="[10, 20, 50]"
            :page-size="page.size"
            layout="total, sizes, prev, pager, next, jumper"
            :total="page.total">
        </el-pagination>

添加相关方法。

        handleCurrentChange(val){
   
            this.page.current = val;
            this.fetchData();
        },
        handleSizeChange(val){
   
            this.page.size = val;
            this.fetchData();
        }

四 条件查询实现

根据标签和分类查询信息。

这里需要你个新接口,返回所有可用的分类,用于分类下拉框的选项。

4.1 接口处理

4.1.1 接口创建

url: article/category/list

methods: get

描述: 查询所有可用分类

{
     
	"code": 20000,  
	"message": "查询成功",  
	"data|8": [{
    // 产生8条数据    
	"id|+1": 10, //初始值10开始,每条+1,     
	"name": "@cname", // 随机一个名字    
	"sort": "@integer(0,9)", // 0-9间的数字    
	"remark": "@csentence(5, 15)",    
	"status": 1, // 查询正常状态    
	"createDate": "@date", // 随机时间  
	}]
}

4.1.2 接口封装

api/category中加入方法。

    getNormalList(){
   
        return request({
               
            url: `/article/category/list`,            
            method: 'get',                    
        }) 
    }

4.1.3 接口调用

在created中调用该接口,将返回值附给对应变量,与界面下拉框绑定即可。

这里已在data中设置了变量categoryList,初始值为空数组。

methods: {
   
	...
	getCategoryList(){
   
        apiCategory.getNormalList().then((res) => {
   
            this.categoryList = res.data;
        })
    }
    ...
}        
    created(){
   
        this.fetchData();
        this.getCategoryList();
    }

4.2 绘制页面

将前一章节的分类管理-条件查询部分,改一下下拉框数据部分即可。

<el-form :inline="true" :model="query" class="demo-form-inline" size="mini">
     <el-form-item label="分类名称">
         <el-input v-model="query.name"></el-input>
     </el-form-item>
     <el-form-item label="状态">
         <el-select v-model="query.status" clearable filterable style="width: 85px">
              <el-option v-for="item in categoryList" :key="item.id" :label="item.name" :value="item.id"></el-option>
         </el-select>
     </el-form-item>
     <el-form-item>
         <el-button icon='el-icon-search' type="primary">查询</el-button>    
         <el-button icon='el-icon-refresh'>重置</el-button>    
         <el-button type="primary" icon="el-icon-circle-plus-outline">新增</el-button>
     </el-form-item>
</el-form>

4.3 方法定义

定义查询与重置方法,与上一章相同。

        queryData() {
         
	        // 将页码变为第1页      
	        this.page.current = 1;      
	        this.fetchData();    
        },
        reload() {
         
 	        this.query = {
   };      
 	        this.fetchData();    
        }

上一篇: vue后台管理系统开发流程全记录(七)_类别管理功能开发: 类别修改

下一篇: vue后台管理系统开发流程全记录(九)_标签管理功能开发: 标签新增

专栏地址:vue后台管理系统
源代码:https://github.com/kexr/vue-bolg-admin.git


转载:https://blog.csdn.net/weixin_45809580/article/details/116709883
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场