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

相关文章

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

vue3项目将所有访问后端springboot的接口统一管理带跨域

vue3项目将所有访问后端springboot的接口统一管理带跨域 一、前言1.安装Axios2.创建Axios实例3.创建API服务文件4.在组件中使用API服务 二、跨域三、总结 一、前言 在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTT

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

局域网内vue2 配置本地IP地址访问项目

在日常开发中同事可能需要访问你的前端项目,可以通过配置实现通过ip访问 一.首先找到config文件夹目录下的 index.js文件             将此处的host的值修改为0.0.0.0(即 host: 0.0.0.0) // Various Dev Server settings//host: 'localhost' //将localhost进行替换成 0.0.0.0host:

Python分解多重列表对象,isinstance实现

“”“待打印的字符串列表:['ft','bt',['ad',['bm','dz','rc'],'mzd']]分析可知,该列表内既有字符对象,又有列表对象(Python允许列表对象不一致)现将所有字符依次打印并组成新的列表”“”a=['ft','bt',['ad',['bm','dz','rc'],'mzd']]x=[]def func(y):for i in y:if isinst

把Tiled中做出的地图弄到项目中~~就是懒,为了以后直接复制写过来

1.现在.h中声明private: cocos2d::CCSprite* ninja; cocos2d::CCTMXTiledMap*  tileMap; 然后.cpp中加入tileMap = CCTMXTiledMap::create("MyTileMap.tmx"); CCTMXLayer* backLayer = tileMap->layerNamed("Tile L