07-vuePC端项目(学科列表)

2024-03-14 04:48
文章标签 项目 学科 列表 07 vuepc

本文主要是介绍07-vuePC端项目(学科列表),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学科列表

其实学科列表与用户列表,企业列表基本上都是差不多的
subject文件夹的index.vue组件:

<template><div><el-card><!-- 搜索部分 --><el-form inline :model="searchForm" ref="searchFormRef" label-width="80px"><el-form-item label="学科编号" prop="rid"><el-input v-model="searchForm.rid"></el-input></el-form-item><el-form-item label="学科姓名" prop="name"><el-input v-model="searchForm.name"></el-input></el-form-item><el-form-item label="创建者" prop="username"><el-input v-model="searchForm.username"></el-input></el-form-item><el-form-item label="状态" prop="status"><el-select v-model="searchForm.status" placeholder="请选择状态"><el-option label="启用" value="1"></el-option><el-option label="禁用" value="0"></el-option></el-select></el-form-item><el-form-item><el-button type="primary" @click="search">搜索</el-button><el-button @click="clear">清除</el-button><el-button type="primary" @click="add">+新增学科</el-button></el-form-item></el-form></el-card><!-- 表格部分 --><el-card style="margin-top:15px"><el-table :data="subjectList" border stripe><el-table-column type="index" label="序号"></el-table-column><el-table-column prop="rid" label="学科编号"></el-table-column><el-table-column prop="name" label="学科名称"></el-table-column><el-table-column prop="short_name" label="简称"></el-table-column><el-table-column prop="username" label="创建者"></el-table-column><el-table-column prop="create_time" label="创建日期"></el-table-column><el-table-column label="状态"><template slot-scope="scope"><span:style="{color:scope.row.status === 1 ? '#85ce61':'red'}">{{scope.row.status === 1? '启用':'禁用'}}</span></template></el-table-column><el-table-column width="280" label="操作"><template slot-scope="scope"><el-button type="primary" @click="editSubject(scope.row)">编辑</el-button><el-button:type="scope.row.status===1?'info':'success'"@click="changeStatus(scope.row.id)">{{scope.row.status===1?'禁用':'启用'}}</el-button><el-button type="danger" @click="deletSubject(scope.row.id)">删除</el-button></template></el-table-column></el-table><!-- 分页部分 --><div style="margin-top:15px;text-align:center"><el-pagination@size-change="sizeChange"@current-change="currentChange":current-page="page":page-sizes="[2, 4, 6, 8]":page-size="limit"layout="total, sizes, prev, pager, next, jumper":total="total"background></el-pagination></div></el-card><subject-edit ref="subjectEditRef"></subject-edit></div>
</template><script>
import SubjectEdit from "./subject-add-or-update";
export default {components: {SubjectEdit},name: "Subject",data() {return {//模型,后台需要的searchForm: {rid: "", //学科编号name: "", //学科姓名username: "", //创建者status: "" //状态},page: 1, //页码limit: 2, //页容量subjectList: [], //学科列表total: 0 //总条数};},created() {this.getSubjectData();},methods: {// 获取学科列表async getSubjectData() {const res = await this.$axios.get("/subject/list", {params: {...this.searchForm,page: this.page,limit: this.limit}});if (res.data.code == 200) {// console.log(res);this.subjectList = res.data.data.items;this.total = res.data.data.pagination.total;}},// 搜索search() {this.page = 1;this.getSubjectData();},//清除{}clear() {this.$refs.searchFormRef.resetFields();// 显示第一页this.search();},//改变状态async changeStatus(id) {const res = await this.$axios.post("/subject/status", { id });if (res.data.code == 200) {this.$message({type: "success",message: "更新状态成功"});// 更改成功之后,发送请求显示当前页面数据this.getSubjectData();} else {this.$message.error(res.data.message);}},//删除deletSubject(id) {this.$confirm("你确定删除吗?", "提示", {confirmButtonText: "确定",cancelButtonText: "取消",type: "warning"}).then(async () => {const res = await this.$axios.post("/subject/remove", { id });if (res.data.code == 200) {this.$message({type: "success",message: "删除成功"});// 删除成功之后,发送请求显示第一页的数据this.search();}}).catch(() => {});},// 页容量改变sizeChange(val) {this.limit = val;this.search();},//当前页改变currentChange(val) {this.page = val;this.getSubjectData();},// 新增学科add() {this.$refs.subjectEditRef.modal = "add";this.$refs.subjectEditRef.dialogVisible = true;// 解决点击新增&编辑弹出的框里面还有数据和校验的问题(清空校验在子组件watch里面)this.$refs.subjectEditRef.subjectForm = {rid: "", //学科编号name: "", //学科名称short_name: "", //学科简称intro: "", //学科简介remark: "" //备注};},// 编辑editSubject(row) {this.$refs.subjectEditRef.modal = "edit";this.$refs.subjectEditRef.dialogVisible = true;// this.$refs.subjectEditRef.subjectForm = JSON.parse(JSON.stringify(row));// row里面有很多东西,有些东西后台不一定要,看后台文档,做对象解构要部分就行const { id, rid, name, short_name, intro, remark } = row;this.$refs.subjectEditRef.subjectForm = {id, //学科idrid, //学科编号name, //学科名称short_name, //学科简称intro, //学科简介remark //备注};}}
};
</script>

效果演示:
在这里插入图片描述

subject文件夹的subject-add-or-update.vue组件:

<template><div class="subject"><el-dialog center :visible.sync="dialogVisible" width="600px"><div slot="title" class="title">{{ modal === "add" ? "新增学科" : "编辑学科" }}</div><!-- form表单 --><el-form :model="subjectForm" :rules="rules" ref="subjectFormRef" label-width="80px"><el-form-item label="学科编号" prop="rid"><el-input v-model="subjectForm.rid"></el-input></el-form-item><el-form-item label="学科名称" prop="name"><el-input v-model="subjectForm.name"></el-input></el-form-item><el-form-item label="学科简称" prop="short_name"><el-input v-model="subjectForm.short_name"></el-input></el-form-item><el-form-item label="学科简介" prop="intro"><el-input v-model="subjectForm.intro"></el-input></el-form-item><el-form-item label="学科备注" prop="remark"><el-input v-model="subjectForm.remark"></el-input></el-form-item></el-form><!-- 两个按钮 --><span slot="footer"><el-button @click=" dialogVisible= false">取 消</el-button><el-button type="primary" @click="submit">确 定</el-button></span></el-dialog></div>
</template><script>
export default {name: "SubjectEdit",data() {return {dialogVisible: false,modal: "", //add新增 edit编辑//这里面定义的属性是要提交给后台的subjectForm: {rid: "", //学科编号name: "", //学科名称short_name: "", //学科简称intro: "", //学科简介remark: "" //备注},rules: {rid: [{ required: true, message: "请输入学科编号", trigger: "blur" }],name: [{ required: true, message: "请输入学科名称", trigger: "blur" }],short_name: [{ required: true, message: "请输入学科简称", trigger: "blur" }],intro: [{ required: true, message: "请输入学科简介", trigger: "blur" }],remark: [{ required: true, message: "请输入学科备注", trigger: "blur" }]}};},methods: {//点击确定按钮submit() {this.$refs.subjectFormRef.validate(async valid => {if (!valid) return;let res = "";if (this.modal === "add") {res = await this.$axios.post("/subject/add", this.subjectForm);} else {res = await this.$axios.post("/subject/edit", this.subjectForm);}if (res.data.code == 200) {//提示this.$message({type: "success",message: this.modal === "add" ? "新增成功" : "编辑成功"});//关闭当前对话框this.dialogVisible = false;//调用父组件的search方法刷新学科列表this.$parent.search();} else {this.$message.error(res.data.message);}});}},//监听dialogVisible的变化watch: {dialogVisible(newValue) {//当dialogVisible为false的时候if (!newValue) {this.$refs.subjectFormRef.clearValidate(); //清空校验}}}
};
</script>

效果演示:
在这里插入图片描述
在这里插入图片描述

学科列表代码说明:
  • ui展示
    • 搜索展示:el-form
    • 列表展示:el-table
    • 分页:el-pagination
  • 做功能
    • 修改状态
    • 删除
    • 新增学科
      • 弹出会话框
        1、新建一个子组件,里面写上 el-dialog相关的内容
        2、让刚刚新建的子组件,成为学科列表的子组件,记得给子组件设置一个 ref 属性,方便后续操作它
        3、点击新增的时候,更改子组件中 mode 和 dialogVisible
      • 完善会话框的布局
        1、标题:使用具名插槽 slot=title
        2、内容:el-form
                   完善获取用户输入的值
                   在data中定义一个模型值,模型中的属性名要跟后台的接口中规定的属性名名字保持一致
                   把定义好的模型赋值给 el-form的 model属性
                   给 el-form-item 下面的 el-input 设置 v-model
                   在开发者工具中,通过vue的工具查看下输入的值,是否能拿到了
        3、完善校验
                   在data中定义好rules并且写好验证规则
                   在el-form设置好 rules 属性,把模型中写好的rules规则绑定到 el-form 的rules属性上面
                   在 el-form-item 上面,一定要设置好 prop
      • footer
      • 发请求,进行新增
        前提:先对我们表单做最后一次校验,然后才发送请求给后台
        调用form表单的validate方法
    • 修改学科
      • 显示要更改的内容
      • 完成修改的操作
    const { id, rid, name, short_name, intro, remark } = row;this.$refs.subjectEditRef.subjectForm = {id, // 学科idrid, // 学科编号name, // 学科名称short_name, // 学科简称intro, // 学科简介remark, // 备注};
res = await this.$axios.post('/subject/edit',this.subjectForm)//发送请求修改学科

这篇关于07-vuePC端项目(学科列表)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/807243

相关文章

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl