黑马大事件学习-19(文章)

文章列表查询-页面搭建

复制文件

ArticleManager.vue

main.js

javascript 复制代码
import locale from 'element-plus/dist/locale/zh-cn.js'
app.use(ElementPlus,{locale})

回显文章分类

ArticleManager.vue

javascript 复制代码
//回显文章分类
import {articleCategoryListService} from '@/api/article.js'
const articleCategoryList = async () => {
    let result = await articleCategoryListService();
    categorys.value=result.data;
}
articleCategoryList()

文章列表查询-接口调用

ArticleManager.vue

javascript 复制代码
//获取文章列表数据
const articleList = async () => { 
    let params={
        pageNum:pageNum.value,
        pageSize:pageSize.value,
        categoryId:categoryId.value?categoryId.value:null,
        state:state.value?state.value:null
    }
    let result = await articleListService(params);
    //渲染试图
    total.value=result.data.total;
    articles.value=result.data.items;
}

article.js

javascript 复制代码
//文章列表查询
export const articleListService = (params)=>{
    return request.get('/article',{params:params})
}

分类名称

ArticleManager.vue

javascript 复制代码
 //处理数据,给数据模型扩展一个属性,分类名称
    for(let i=0;i<result.data.items.length;i++){
        let article=articles.value[i];
        for(let j=0;j<categorys.value.length;j++){
           if(article.categoryId==categorys.value[j].id){
            article.categoryName=categorys.value[j].categoryName;
            }
        }
    }
    

文章列表查询-事件处理

ArticleManager.vue

javascript 复制代码
 //当每页条数发生了变化,调用此函数
const onSizeChange = (size) => {
    pageSize.value = size
    articleList()
}
//当前页码发生变化,调用此函数
const onCurrentChange = (num) => {
    pageNum.value = num
    articleList()
}


<el-button type="primary" @click="articleList">搜索</el-button>
                <el-button @click="categoryId='';state=''">重置</el-button>

添加文章-页面搭建

复制文件

ArticleManager.vue

配置下载富文本编辑器Quill

添加文章-文章封面图片上传

ArticleManager.vue

javascript 复制代码
//导入token
import {useTokenStore} from '@/stores/token.js'
const tokenStore=useTokenStore();
//上传成功的回调函数
const uploadSuccess = (result) => {
    articleModel.value.coverImg=result.data;
    console.log(result.data);
}

  <!-- 
                    auto-upload:设置是否自动上传
                    action:设置服务器接口路径
                    name:设置上传文件的参数名称
                    headers:设置请求头
                    on-success:设置上传成功后的回调函数
                     -->
                    <el-upload class="avatar-uploader" :auto-upload="true" :show-file-list="false"
                    action="/api/upload" 
                    name="file" 
                    :headers="{Authorization:tokenStore.token}"
                    :on-success="uploadSuccess"
                    >

添加文章-接口调用

article.js

javascript 复制代码
//文章添加
export const articleAddService = (articleData)=>{
    return request.post('/article',articleData)
}

ArticleManager.vue

javascript 复制代码
                    <el-button type="primary" @click="addArticle('已发布')">发布</el-button>
                    <el-button type="info" @click="addArticle('草稿')">草稿</el-button>

import {articleCategoryListService,articleListService, articleAddService} from '@/api/article.js'

//添加文章
import { ElMessage } from 'element-plus'
const addArticle = async (clickState) => { 
    //把发布状态复制给数据模型
    articleModel.value.state=clickState;
    //调用接口
    let result = await articleAddService(articleModel.value);
    ElMessage.success(result.msg ? result.msg:'添加成功')
    //让抽屉消失
    visibleDrawer.value=false;
    //刷新当前列表
    articleList()
}
相关推荐
Java后端的Ai之路9 小时前
06-React-Props
前端·react.js·前端框架
滕州市燕猫虎计算机科技工作室个体工商户9 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
Flynt9 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
别动我齐刘海10 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
Csvn10 小时前
渲染管线
前端
程序员大阳10 小时前
副队长CSS教程(33)–圆角与透明
前端·css·透明·圆角
志尊宝10 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金11 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
柳杉11 小时前
借助 Codex 和可视化工作流,从调研到完整实现,3D 大屏竟然可以这么简单
前端·ai编程·数据可视化
IMPYLH11 小时前
HTML 的 <wbr> 元素
前端·html