当前位置: 首页 > news >正文

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)

十三、文章分类页面 - [element-plus 表格]

Git仓库:https://gitee.com/msyycn/vue3-hei-ma.git

基本架子 - PageContainer

功能需求说明:

  1. 基本架子-PageContainer封装
  2. 文章分类渲染 & loading处理
  3. 文章分类添加编辑[element-plus弹层]
  4. 文章分类删除
  1. 基本结构样式,用到了el-card 组件
<template><el-card class="page-container"><template #header><div class="header"><span>文章分类</span><div class="extra"><el-button type="primary">添加分类</el-button></div></div></template>...</el-card>
</template><style lang="scss" scoped>
.page-container {min-height: 100%;box-sizing: border-box;.header {display: flex;align-items: center;justify-content: space-between;}
}
</style>
  1. 考虑到多个页面复用,封装成组件
    • props 定制标题(父传子)
    • 默认插槽 default 定制内容主体
    • 具名插槽 extra 定制头部右侧额外的按钮
<script setup>
defineProps({title: {required: true,type: String}
})
</script><template><el-card class="page-container"><template #header><div class="header"><span>{{ title }}</span><div class="extra"><slot name="extra"></slot></div></div></template><slot></slot></el-card>
</template><style lang="scss" scoped>
.page-container {min-height: 100%;box-sizing: border-box;.header {display: flex;align-items: center;justify-content: space-between;}
}
</style>
  1. 页面中直接使用测试 ( unplugin-vue-components 会自动注册)
  • 文章分类测试:
<template><page-container title="文章分类"><template #extra><el-button type="primary"> 添加分类 </el-button></template>主体部分</page-container>
</template>
  • 文章管理测试:
<template><page-container title="文章管理"><template #extra><el-button type="primary">发布文章</el-button></template>主体部分</page-container>
</template>

视图预览请添加图片描述

文章分类渲染

封装API - 请求获取表格数据

  1. 新建 api/article.js 封装获取频道列表的接口
import request from '@/utils/request'
export const artGetChannelsService = () => request.get('/my/cate/list')
  1. 页面中调用接口,获取数据存储
const channelList = ref([])const getChannelList = async () => {const res = await artGetChannelsService()channelList.value = res.data.data
}
  1. ArticleChannel.vue
<script setup>
import { artGetChannelsService } from '@/api/article'
import {ref} from 'vue'const channelList = ref([]) // 文章分类列表
// 获取文章分类列表
const getChannelList = async () => {const res = await artGetChannelsService()channelList.value = res.data.dataconsole.log('文章分类列表',channelList.value);}// 调用获取文章分类列表
getChannelList()
</script><template><div><!-- 按需引入 --><page-container title="文章分类"> <!-- 右侧按钮 - 添加文章 - 具名插槽 --><template #extra><el-button>添加分类</el-button></template>主体部分--表格</page-container></div>
</template><style lang="scss" scoped>
</style>

视图预览

请添加图片描述

el-table 表格动态渲染

<el-table :data="channelList" style="width: 100%"><el-table-column label="序号" width="100" type="index"> </el-table-column><el-table-column label="分类名称" prop="cate_name"></el-table-column><el-table-column label="分类别名" prop="cate_alias"></el-table-column><el-table-column label="操作" width="100"><template #default="{ row }"><el-button:icon="Edit"circleplaintype="primary"@click="onEditChannel(row)"></el-button><el-button:icon="Delete"circleplaintype="danger"@click="onDelChannel(row)"></el-button></template></el-table-column><template #empty><el-empty description="没有数据" /></template>
</el-table>const onEditChannel = (row) => {console.log(row)
}
const onDelChannel = (row) => {console.log(row)
}

预览视图

请添加图片描述

el-table 表格 loading 效果

  1. 定义变量,v-loading绑定
const loading = ref(false)<el-table v-loading="loading">
  1. 发送请求前开启,请求结束关闭
const getChannelList = async () => {loading.value = trueconst res = await artGetChannelsService()channelList.value = res.data.dataloading.value = false
}

ArticleChannel.vue

<script setup>
import { artGetChannelsService } from '@/api/article'
import { Delete,Edit } from   '@element-plus/icons-vue'import {ref} from 'vue'const channelList = ref([]) // 文章分类列表
const loading = ref(false) //加载状态
// 获取文章分类列表
const getChannelList = async () => {// 发请求之前先将loading设置为trueloading.value = true// 调用接口const res = await artGetChannelsService()channelList.value = res.data.data// 发完请求,关闭loadingloading.value = false// console.log('文章分类列表',channelList.value);}// 调用获取文章分类列表
getChannelList()// 编辑文章分类
const onEditChannel =(row,$index) =>{
console.log(row,$index)}// 删除文章分类
const onDelChannel =(row,$index)=>{console.log(row,$index)}
</script><template><div><!-- 按需引入 --><page-container title="文章分类"> <!-- 右侧按钮 - 添加文章 - 具名插槽 --><template #extra><el-button>添加分类</el-button></template><!-- 主体部分--表格 --><el-table :data="channelList" style="width: 100%" v-loading="loading"><el-table-column   label="序号"    type="index"  width="100" ></el-table-column><el-table-column   label="分类名称" prop="cate_name" ></el-table-column><el-table-column   label="分类别名" prop="cate_alias" ></el-table-column><el-table-column   label="操作"      width="100"><template #default="{row,$index}"><el-button  @click="onEditChannel(row,$index)" plain :icon="Edit" circle type="primary" ></el-button><el-button  @click="onDelChannel(row,$index)" plain :icon="Delete" circle type="danger" ></el-button></template></el-table-column></el-table></page-container></div>
</template><style lang="scss" scoped>
</style>

请添加图片描述

请求到的数组为空时

 channelList.value = []

请添加图片描述

添加element-plus插槽:

     <!-- 主体部分--表格 --><el-table :data="channelList" style="width: 100%" v-loading="loading"><el-table-column   label="序号"    type="index"  width="100" ></el-table-column><el-table-column   label="分类名称" prop="cate_name" ></el-table-column><el-table-column   label="分类别名" prop="cate_alias" ></el-table-column><el-table-column   label="操作"      width="100"><template #default="{row,$index}"><el-button  @click="onEditChannel(row,$index)" plain :icon="Edit" circle type="primary" ></el-button><el-button  @click="onDelChannel(row,$index)" plain :icon="Delete" circle type="danger" ></el-button></template></el-table-column><!-- 没有数据 --><template #empty><el-empty description="暂无数据"></el-empty></template></el-table>

请添加图片描述
下期见!

相关文章:

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)

十三、文章分类页面 - [element-plus 表格] Git仓库&#xff1a;https://gitee.com/msyycn/vue3-hei-ma.git 基本架子 - PageContainer 功能需求说明&#xff1a; 基本架子-PageContainer封装文章分类渲染 & loading处理文章分类添加编辑[element-plus弹层]文章分类删除…...

众数信科AI智能体政务服务解决方案——寻知智能笔录系统

政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内…...

OpenCV特征检测(4)检测图像中的角点函数cornerHarris()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 Harris 角点检测器。 该函数在图像上运行 Harris 角点检测器。类似于 cornerMinEigenVal 和 cornerEigenValsAndVecs&#xff0c;对于每个像素 (…...

Apache Doris 2.1.6 版本正式发布

亲爱的社区小伙伴们&#xff0c;Apache Doris 2.1.6 版本已于 2024 年 9 月 10 日正式发布。2.1.6 版本在 Lakehouse、异步物化视图、半结构化数据管理持续升级改进&#xff0c;同时在查询优化器、执行引擎、存储管理、数据导入与导出以及权限管理等方面完成了若干修复。欢迎大…...

一些常用的 Docker 命令

一些常用的 Docker 命令 涵盖了查看镜像、启动镜像等基本操作&#xff1a; 1. 查看 Docker 镜像 列出所有本地存储的镜像&#xff1a; docker images这会显示所有已经下载到本地的镜像&#xff0c;包括仓库名、标签、镜像 ID、创建时间和大小。 2. 拉取 Docker 镜像 从 Dock…...

【机器学习】--- 自然语言推理(NLI)

引言 随着自然语言处理&#xff08;NLP&#xff09;的迅速发展&#xff0c;**自然语言推理&#xff08;Natural Language Inference, NLI&#xff09;**已成为一项重要的研究任务。它的目标是判断两个文本片段之间的逻辑关系。这一任务广泛应用于机器阅读理解、问答系统、对话…...

大话C++:第11篇 类的定义与封装

1 类的定义 在C中&#xff0c;类的定义通常使用class关键字开始&#xff0c;后面紧跟类的名称。类可以包含数据成员&#xff08;变量&#xff09;和成员函数&#xff08;方法&#xff09;。 在C中&#xff0c;类可以更加详细地展开&#xff0c;包括数据成员&#xff08;变量&…...

六种主流ETL工具的比较与Kettle的实践练习指南--MySQL、hive、hdfs等之间的数据迁移

在数据集成和数据仓库建设中&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;工具扮演着至关重要的角色。本文将对六种主流ETL工具进行比较&#xff0c;并深入探讨Kettle的实践应用。 一、六种主流ETL工具比较 1. DataPipeline 设计及架构&#xff1a;专为…...

一天一道算法题day07

找出字符中第一个匹配的下标 题目描述 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#…...

电机学习-有感BLDC开环控制(六步换相)

文章目录 1. 简介2. 六步换向控制3. 机械角度和电角度4.转子位置获取5.霍尔传感器读取测试6.速度开环控制6.1 PWM设置6.2死区时间 1. 简介 BLDC的反电动势一般是梯形的反电动势&#xff0c;所以采用方波控制。如图2-1所示&#xff0c;是一个简化的内转子无刷直流电机。我们通过…...

《深度学习》PyTorch框架 优化器、激活函数讲解

目录 一、深度学习核心框架的选择 1、TensorFlow 1&#xff09;概念 2&#xff09;优缺点 2、PyTorch 1&#xff09;概念 2&#xff09;优缺点 3、Keras 1&#xff09;概念 2&#xff09;优缺点 4、Caffe 1&#xff09;概念 2&#xff09;优缺点 二、pytorch安装 1、安装 2、…...

Linux:进程(四)

目录 一、进程优先级 二、Linux调度与切换 1.背景 2.进程切换 一、进程优先级 背景&#xff1a;在计算机中&#xff0c;软硬件资源是有限的&#xff0c;而进程想要访问某一种资源&#xff0c;就得通过排队来保证访问资源的过程是有条不紊的。 Linux下对优先级的定义。执行命…...

CTC loss 博客转载

论文地址&#xff1a; https://www.cs.toronto.edu/~graves/icml_2006.pdf 为了对应这个图&#xff0c;我们假设一种符合的模型情况&#xff1a; 英文OCR&#xff0c;37个类别&#xff08;26个小写字母10个汉字空格&#xff09;&#xff0c;最大输出长度8个字符 模型预测结果…...

TryHackMe 第3天 | Pre Security (中)

该学习路径讲解了网络安全入门的必备技术知识&#xff0c;比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识&#xff0c;本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…...

c语言中“qsort函数”和“结构体成员访问变量”

qsort函数&#xff1a; qsort是c语言中的库函数&#xff0c;这个函数是对数据进行排序&#xff08;对任意&#xff09; 冒泡排序中排列整数顺序用的函数只适用于整形&#xff0c;而qsort函数适用与所有数据 排序算法 冒泡排序 插入 选择 快速 void qsort{ void * base&…...

【MySQL】在MySQL中STR_TO_DATE()

1.在MySQL中STR_TO_DATE() 在MySQL中&#xff0c;STR_TO_DATE() 函数用于将字符串转换为日期格式。这个函数非常有用&#xff0c;当你需要将文本数据转换为可由MySQL日期和时间函数处理的格式时。 1.1 语法 STR_TO_DATE() 函数的基本语法如下&#xff1a; STR_TO_DATE(date…...

PCIE集成验证(五)MSI/MSI-X中断

PCI 总线最早采用的中断机制是 INTx&#xff0c;这是基于边带信号的。后续的 PCI/PCI-X版本&#xff0c;为了消除边带信号&#xff0c;降低系统的硬件设计复杂度&#xff0c;逐渐采用了 MSI(Message Signaled Interrupt)/MSI-X&#xff08;消息信号中断&#xff09;的中断机制。…...

leetcode 380.O(1) 时间插入、删除和获取随机元素

实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#xff0c;返回 false 。bool remove(int val) 当元素 val 存在时&#xff0…...

基于MicroPython的ESP8266控制PS2摇杆模块的设计方案

以下是一个基于MicroPython的ESP8266控制PS2摇杆模块的设计方案&#xff1a; 一、硬件准备&#xff1a; 1. 一块ESP8266开发板&#xff0c;如NodeMCU 2. 一个带有X、Y轴模拟输出和Z轴(按钮)数字输出的PS2摇杆模块 3. 杜邦线若干 4. 3.3V直流电源 二、硬件连接&#xff1a…...

Spring Boot 3项目使用Swagger3教程

Spring Boot 3项目使用Swagger3教程 Swagger&#xff1a;自动生成接口文档 添加依赖(pom.xml) <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.1…...

Java数组工具类实战:设计不可实例化的静态工具类

实现一个工具类 MathUtils&#xff0c;满足以下要求&#xff1a; 1. 所有方法均为静态&#xff0c;且该类不能从外部实例化&#xff08;提示&#xff1a;使用私有构造器&#xff09;。 2. 提供三个静态方法&#xff1a;- maxArray(int[] arr)&#xff1a;返回较大值&#xff1b…...

科华UPS电源全品类汇总:选型与场景适配指南

科华UPS电源作为国内智慧电能领域的主流产品&#xff0c;覆盖家用、办公、机房、工业等全场景&#xff0c;产品系列丰富、规格齐全&#xff0c;但多数用户在选型时&#xff0c;常因分不清系列差异、功率适配、架构类型而踩坑。本文系统汇总科华UPS电源的核心分类、主流系列、核…...

巨量投放总结

巨量商务管理平台 &#xff1a; https://business.oceanengine.com 巨量广告投放平台&#xff1a; https://ad.oceanengine.com 商务管理平台 账户 广告组 计划 广告投放平台 层级关系: 广告组 -> 计划 -> 创意 对应FB: 系列 - > 广告组 -> 广告...

HarmonyOS 6学习:解决图片放大后无法移动至边缘的matrix4矩阵变换技巧

从"卡在中间"到"自由拖拽"&#xff1a;一次完整的图片缩放平移边界问题攻关在HarmonyOS 6应用开发中&#xff0c;我最近遇到了一个看似简单却让人头疼的图片查看器问题&#xff1a;用户双指放大图片后&#xff0c;想要拖动查看边缘细节&#xff0c;却发现图…...

Git Bash 中无法启动 Claude Code ?

最近需要在 git bash 中跑 Claude Code 。git bash 是随 git for windows 套件安装的&#xff0c;很久没更新了&#xff0c;结果启动 Claude Code 报错&#xff1a;Warning: no stdin data received in 3s, proceeding without it. If piping from a slow command, redirect st…...

AutoWall终极指南:如何在Windows上轻松设置炫酷动态壁纸

AutoWall终极指南&#xff1a;如何在Windows上轻松设置炫酷动态壁纸 【免费下载链接】AutoWall &#x1f30c; Live wallpapers on Windows 7/8/10/11 using open-source wallpaper engine 项目地址: https://gitcode.com/gh_mirrors/au/AutoWall 厌倦了千篇一律的静态桌…...

服务器数据下载安全:实时加密与动态访问控制实战

1. 这不是又一个“加个密码”的方案&#xff0c;而是服务器数据流动的实时安检闸机IP-guard安全网关——这个名字在企业IT运维圈里&#xff0c;常被误读为“桌面端U盘管控工具”或“员工上网行为审计系统”。但真正用过它来守服务器的人&#xff0c;会立刻意识到&#xff1a;它…...

Diablo Edit2:3步掌握暗黑破坏神2存档修改的终极秘籍

Diablo Edit2&#xff1a;3步掌握暗黑破坏神2存档修改的终极秘籍 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神2中刷装备的漫长过程感到疲惫吗&#xff1f;Diablo Edit2这款免费…...

如何永久保存微信聊天记录?WeChatMsg终极数据导出指南

如何永久保存微信聊天记录&#xff1f;WeChatMsg终极数据导出指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

别再手动改代码了!用Vivado的VIO IP核实时调试你的FPGA设计(附UART实例)

实时交互式FPGA调试革命&#xff1a;Vivado VIO核的UART实战指南 调试FPGA设计时&#xff0c;你是否经历过这样的痛苦循环&#xff1a;修改一行代码→全编译→下载比特流→测试→发现问题→再修改...这种"石器时代"的工作流正在吞噬工程师的创造力。Xilinx Vivado中的…...