前后端项目-part03
文章目录
- 5.4.4 机构名称
- 5.4.4.1 创建实体类Company
- 5.4.4.2 创建实体类CompanyMapper
- 5.4.4.3 创建实体类CompanyService
- 5.4.4.4 创建实体类CompanyController
- 5.4.4.5 后端测试
- 5.4.4.6 修改basic.js
- 5.4.4.7 修改course.vue
- 5.4.4.8 测试
- 5.4.5 课程标签
- 5.4.5.1 效果
- 5.4.5.2 修改course.vue
- 5.4.6 课程图片上传
- 5.4.6.1 前端开发
- 5.4.6.2 后端开发
- 5.4.6.3 测试
- 6 分页查课程信息
- 6.1 后台开发
- 6.1.1 修改实体类course
- 6.1.2 修改CourseController
- 6.1.3 准备启动类
- 6.1.4 准备配置文件
- 6.1.5 准备配置类
- 6.1.6 测试
- 6.2 前台开发
- 6.2.1 修改course.js
- 6.2.2 修改course.vue
- 6.2.3 测试
- 6.2.1 修改course.js
- 6.2.1 修改course.js
5.4.4 机构名称
5.4.4.1 创建实体类Company
package com.zx.system.entity;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;import java.util.Date;@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Accessors(chain = true)
@TableName("tb_company")
public class Company {private Integer id;private String name;//名称private String orgType;//c机构 p个人private String phone;//联系方式private String linkname;//联系人名称private String handPhotos;//手持证件照private String address;//机构地址private String logo;//机构logoprivate String email;//邮箱private String promiseLetter;//承诺书private String trademarkPic;//商标注册证private String intro;//简介private String briefIntro;private String mainCategory;//主营类目private String identityPic;//身份证照片private String workType;//工具性质private String businessPic;//营业执照private Date businessTerm;//营业执照有效期private String businessRegistNo;//营业执照注册号private String eduCertImg;//教育资质/学历证书照片private String eduCertTerm;//教育资质证书有效期private String eduCertNo;//教育资质/学历编号private String approvalStatus;//审核状态private String approvalComment;//审批意见private String approvalPeople;//审批人private Date approvalDate;//审批日期private Integer approvalNums;//审核次数private String remark;//备注private Date createDate;private Date changeDate;private Integer tenantId;//租户IDprivate String idCard;//身份证号private String teacherCertImg;//教师资格证照片private String teacherCertNo;//教师资格证号码private Integer status;//状态private String majorCertImg;//专业证件照片private String majorCertNo;//专业证件号码private String workExperience;//教学工作经历private String workResults;//教学工作成果private String title;//机构名称
}
5.4.4.2 创建实体类CompanyMapper
package com.zx.system.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zx.system.entity.Company;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface CompanyMapper extends BaseMapper<Company> {
}
5.4.4.3 创建实体类CompanyService
package com.zx.system.service;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zx.system.entity.Company;
import com.zx.system.mapper.CompanyMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class CompanyService extends ServiceImpl<CompanyMapper, Company> {@Autowiredprivate CompanyMapper companyMapper;public List<Company> selectAll(){QueryWrapper qw = new QueryWrapper();qw.select("id","name","org_type","phone","linkname");//查询指定列qw.eq("status",1);//1正常0停用qw.orderByDesc("create_date");//倒序return companyMapper.selectList(qw);}}
5.4.4.4 创建实体类CompanyController
package com.zx.system.controller;import com.zx.system.entity.Company;
import com.zx.system.service.CompanyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@CrossOrigin
@RequestMapping("/system/company")
public class CompanyController {@Autowiredprivate CompanyService companyService;@GetMapping("/selectAll")public List<Company> selectAll(){return companyService.selectAll();}
}
5.4.4.5 后端测试

5.4.4.6 修改basic.js
// 课程管理CRUD
import axios from '../axios.js'//获取分类信息
const zx_basic = 'http://localhost:9999/basic'//去后台,获取所有分类的三级树
export const AllCategory = async ()=>{const res = await axios.get(zx_basic+"/category/getTree")return res
}//去后台,获取一级分类
export const Level1Category = async ()=>{const res = await axios.get(zx_basic+"/category/level1Category")return res
}//根据字典编号,获取字典信息
export const GetDict = async (code)=>{const res = await axios.get(zx_basic+"/dictionary/getDicItems/"+code)return res
}//去后台//获取所有机构信息
const zx_system = 'http://localhost:8888/system'
export const GetCompany = async ()=>{const res = await axios.get(zx_system+"/company/selectAll")return res
}
5.4.4.7 修改course.vue
<template><el-card shadow="always"><h3><el-icon><ElementPlus /></el-icon>课程管理</h3><el-row style="padding:10px;" gutter="3"><el-col span="8"><el-button type="primary" size="small" @click="toAdd"><el-icon><CirclePlus /></el-icon> 新增</el-button><el-button v-if="multipleSelection.length" type="danger" size="small" @click="handlerMuchDel">删除多条</el-button></el-col><el-col span="16"><el-input size="small" v-model="searchName" placeholder="按课程名称搜索"><template #append><el-icon><Search/></el-icon></template></el-input></el-col></el-row><el-table :data="filterData" @selection-change="handleSelectionChange" border><el-table-column prop="id" type="selection" width="55"></el-table-column><el-table-column prop="planNum" label="计划数量" heder-align="center"></el-table-column><el-table-column prop="companyName" label="公司名称" heder-align="center" ></el-table-column><el-table-column prop="name" label="课程名称" heder-align="center"></el-table-column><el-table-column prop="tags" label="课程标签" heder-align="center" ></el-table-column><el-table-column prop="mtName" label="大分类名称" heder-align="center" ></el-table-column><el-table-column prop="stName" label="小分类名称" heder-align="center" ></el-table-column><el-table-column prop="grade" label="课程等级" heder-align="center" ></el-table-column><el-table-column prop="teachmode" label="教学模式" heder-align="center" ></el-table-column><el-table-column prop="auditStatus" label="审核状态" heder-align="center" ></el-table-column><el-table-column prop="coursePubId" label="发布标识" heder-align="center" ></el-table-column><el-table-column prop="price" label="课程单价" heder-align="center" ></el-table-column><el-table-column prop="createDate" label="创建时间" :formatter="formatDate" align="center"/><el-table-column prop="auditDate" label="审核时间" :formatter="formatDate" align="center"/><el-table-column label="操作" align="center"><template #default="scope"><el-button @click="toEdit(scope.$index)" type="success" size="small"><el-icon><EditPen/></el-icon>修改</el-button><el-button @click="handleDel(scope.row.id)" type="danger" size="small"><el-icon><Delete/></el-icon>删除</el-button><el-button @click="handlePub(scope.row.id)" type="danger" size="small"><el-icon><Delete/></el-icon>发布</el-button><el-button @click="handleDown(scope.row.id)" type="danger" size="small"><el-icon><Delete/></el-icon>下架</el-button></template></el-table-column></el-table><!-- 分页条 --><div style=""><el-pagination :current-page="page.pageNum" :page-size="page.pageSize" :page-sizes="[5,10,50,100]"layout="total,sizes,prev,pager,next,jumper" :total="page.total" @size-change="handleSizeChange" @current-change="handleCurrentChange"></el-pagination></div></el-card><!-- 设置对话框 --><el-dialog v-model="dialogVisible" draggable><template #header><h4><el-icon><Brush/></el-icon> {{dialogType==='add'?'新增':'修改'}}课程管理</h4></template><el-form :model="form.data" label-position="left" label-width="120px"><el-form-item label="机构名称"><el-select v-model="form.data.companyId" placeholder="请选择"><el-option v-for="item in companyOptions" :key="item.id" :label="item.name" :value="item.id"></el-option></el-select></el-form-item><el-form-item label="课程名称"><el-input v-model="form.data.name" show-word-limit maxlength="100"></el-input></el-form-item><el-form-item label="适用人群"><el-input v-model="form.data.users" type="textarea"show-word-limit maxlength="500" :autosize="{minRows:2,maxRows:4}"></el-input></el-form-item><el-form-item label="课程标签"><el-input v-model="form.data.tags"></el-input></el-form-item><!-- 4个下拉框 --><el-form-item label="一级分类"><el-select v-model="form.data.mt" placeholder="请选择"><el-option v-for="item in mtOptions" :key="item.id" :label="item.name" :value="item.id"></el-option></el-select></el-form-item><el-form-item label="二级分类"><!-- 二级分类树 --><el-select v-model="form.data.st" placeholder="请选择"><el-option :value="selectValue" :label="selectValue" style="height: 200px;overflow: auto;" ><el-tree :data="stOptions" @node-click="handleNodeClick"></el-tree></el-option></el-select></el-form-item><el-form-item label="课程等级"><el-select v-model="form.data.grade" placeholder="请选择"><!-- 遍历gradeOptions :key遍历的id :label要展示的数据 :value根据key获取到的value--><el-option v-for="item in gradeOptions" :key="item.code" :label="item.desc" :value="item.code"></el-option></el-select></el-form-item><el-form-item label="教学模式"><el-select v-model="form.data.teachmode" placeholder="请选择"><el-option v-for="item in teachmodeOptions" :key="item.code" :label="item.desc" :value="item.code"></el-option></el-select></el-form-item><el-form-item label="课程介绍"><el-input v-model="form.data.description" type="textarea"show-word-limit maxlength="1000" :autosize="{minRows:4,maxRows:10}"></el-input></el-form-item><el-form-item label="课程图片"><el-input v-model="form.data.pic"></el-input></el-form-item><el-form-item label="课程单价"><el-input v-model="form.data.price">(元)</el-input></el-form-item></el-form><div style=""><el-button @click="dialogSave" type="success">保存</el-button><el-button @click="dialogCancle" type="primary">取消</el-button></div></el-dialog>
</template><script setup>// 一级分类:::: 1.引入jsimport {GetCompany,Level1Category,AllCategory,GetDict} from '../../api/basic.js'import { ref, reactive } from 'vue'import {ElMessageBox} from 'element-plus'//导入消息提示框import {toast} from '../../tools/utils.js'import {CoursePage,CourseDel,CourseSave} from '../../api/course.js'const dialogVisible = ref(false)//对话框是否展示const dialogType = ref('add')//对话框新增还是修改const searchName = ref('')//按照课程名称查询//查后台数据,准备4个下拉框的值,value值是要传给后台的,label的值是要在页面展示的//:::: 一级分类:::: 2.使用1.引入js的结果,利用axios获取数据let mtOptions = ref([]) //一级分类//响应式声明变量Level1Category().then(res=>{// console.log(res)mtOptions.value = res //给响应式变量赋值要用value属性}).catch(err=>{})//:::: 二级分类:::: let stOptions = ref([]) AllCategory().then(res=>{stOptions=resconsole.log(res+'-'+stOptions)}).catch(err=>{console.log(err)})const selectValue=ref()const handleNodeClick=(e,node)=>{selectValue.value=e.value+'->'+e.labelform.data.st=selectValue.value}let gradeOptions = ref([]) //课程等级204,课程模式200GetDict(204).then((res=>{// console.log(res)gradeOptions.value=res})).catch(err=>{console.log(err)})let teachmodeOptions = ref([]) //教学模式GetDict(200).then(res=>{teachmodeOptions=res}).catch(err=>{console.log(err)})//===============机构名称let companyOptions = ref([]) GetCompany().then(res=>{companyOptions.value=res}).catch(err=>{console.log(err)})//多选const multipleSelection = ref([])//临时存放选中的数据,实际上就是多个rowconst handleSelectionChange=(val)=>{//当点击多选按钮时就会触发multipleSelection.value = val}//准备表格数据,const state = reactive({tableDate:[]})//空数组const handleDel=(id)=>{ElMessageBox.confirm('您是否确认删除此记录?','提示',{confirmButtonText:'确认',cancelButtonText:'取消',type:'warning'}).then(()=>{CourseDel(id).then(res=>{toast('删除记录成功!')loadingData(1,page.pageSize)//重新查询,默认展示第一页}).catch(err=>{console.log(err)})}).catch(()=>{})}//删除多条const handlerMuchDel=()=>{ElMessageBox.confirm('您是否确认删除此记录?','提示',{confirmButtonText:'确认',cancelButtonText相关文章:
前后端项目-part03
文章目录 5.4.4 机构名称5.4.4.1 创建实体类Company5.4.4.2 创建实体类CompanyMapper5.4.4.3 创建实体类CompanyService5.4.4.4 创建实体类CompanyController5.4.4.5 后端测试5.4.4.6 修改basic.js5.4.4.7 修改course.vue5.4.4.8 测试5.4.5 课程标签5.4.5.1 效果5.4.5.2 修改co…...
Java 1.8 docker 镜像制作
文章目录 一、下载文件二、精简JRE三、Dockerfile四、构建镜像五、容器测试 一、下载文件 glibc 下载地址 glibc-2.33-r0.apk glibc-bin-2.33-r0.apk glibc-i18n-2.33-r0.apk rsa sgerrand.rsa.pub jre 1.8 jre-8u201-linux-x64.tar.gz 二、精简JRE 解压 tar -zxvf jre-8…...
python中自定义报错
class MyError(Exception):def __init__(self,num):#录入的数Exception.__init__(self)self.numnumdef __str__(self):return 这是我定义的第%d个异常 %(self.num)使用 try:raise MyError(4) except MyError as e:print(e)raise 其作用是指定抛出的异常名称,以及异常…...
part1:sora技术
1.Sora能力边界探索 从sora的视频合集里看到了多段视频,假如我不知道这是sora视频合计,估计我第一反应并不是AI生成了这些视频,可以说在我这里通过了图灵测试😊。 在视频合集里还有同一场景的多角度/镜头的生成能力,让…...
RK3568平台开发系列讲解(基础篇)文件私有数据
🚀返回专栏总目录 文章目录 一、文件私有数据二、文件私有数据实验沉淀、分享、成长,让自己和他人都能有所收获!😄 一、文件私有数据 Linux 中并没有明确规定要使用文件私有数据,但是在 linux 驱动源码中,广泛使用了文件私有数据,这是 Linux 驱动遵循的“潜规则”,实…...
跨时钟信号处理方法
1. 背景 现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通常一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上,总线信号(比如DRAM BUS)会…...
OD(13)之Mermaid饼图和象限图
OD(13)之Mermaid饼图和象限图使用详解 Author: Once Day Date: 2024年2月29日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Mermaid使用指南_Once_day的博客-CSDN博客 参考文章: 关于 Mermaid | Mermaid 中文网 (nodejs.cn)Mermaid | Diagramming and charting tool…...
基于springboot+vue的智能无人仓库管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
图神经网络实战——图论
图神经网络实战——图论 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图与非加权图1.3 连通图非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前言 图论 (Graph theory) 是数学…...
【PHP进阶】Rabbitmq的实际使用
RabbitMQ是一个流行的消息队列中间件,它提供了可靠的消息传递机制。在使用RabbitMQ时,有几个重要的概念需要了解: 消息队列(Message Queue):RabbitMQ中的核心概念之一。它是消息的缓冲区,用于存…...
如何解决机器视觉高速图像处理软件的加密需求?
高速图像处理在机器视觉中的应用重要性 在机器视觉行业中,高速图像处理软件的作用至关重要,它使得机器能够迅速分析和处理成千上万的图像数据。这种能力在制造业、安防系统、交通监控等多个领域发挥着核心作用,如在制造业中,高速…...
Linux的条件变量
条件变量 条件变量本身不是锁,但是它可以造成线程阻塞。通常于互斥锁配合使用。给多线程提供一个会和的场合。 使用互斥量保护共享数据使用条件变量可以造成线程阻塞,等待某个条件的发生,当条件满足的时候解除阻塞。 条件变量的两个动作&a…...
【Python笔记-设计模式】状态模式
一、说明 状态模式是一种行为设计模式,用于解决对象在不同状态下具有不同行为 (一) 解决问题 在对象行为根据对象状态而改变时,规避使用大量的条件语句来判断对象的状态,提高系统可维护性 (二) 使用场景 当对象的行为取决于其状态&#…...
Pytorch 复习总结 5
Pytorch 复习总结,仅供笔者使用,参考教材: 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为:Pytorch 卷积神经网络。 本文先介绍了 Pytorch 语法汇总: Pytorch 张量的常见运算、…...
Codeforces Round 930 (Div. 2)
Codeforces Round 930 (Div. 2) Codeforces Round 930 (Div. 2) A. Shuffle Party 题意: 给出长度为n的整数数组a, a i a_i ai i,对于k>2的下标进行运算,设d为k除本身外最大的除数, 操作为交换( a k a_k ak…...
c语言求平方与倒数序列的部分和
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m21/m(m1)21/(m1)⋯n21/n。 输入格式: 输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。 输出格式: 在一行中按照“sum S”的格式输出部分和…...
Vue-4
自定义创建项目 目标:基于 VueCli 自定义创建项目架子 大致步骤: 安装脚手架创建项目 vue create 项目名称选择自定义 选择 Manually select features 这一项 step-1:按下空格 : 选择/取消--勾选请选择:Babel、Router、CSS、Linterstep-2…...
【Acwing】差分矩阵
图1:a和b数组映射表 由于a是b的前缀和数组,因此改变b[ x1][ y1]之后,受到影响的a中元素如右半图所示 图2:求b数组的前缀和 #include<bits/stdc.h> using namespace std;int n,m,q; int a[1010][1010]; int b[1010][1010]…...
Linux系统加固:如何有效管理系统账号
Linux系统加固:如何有效管理系统账号 1.1 口令重复次数限制1.2 避免系统存在uid相同的账号1.3 空密码的帐户1.4 口令复杂度1.5 口令生存期1.6 登录失败次数锁定策略 💖The Begin💖点点关注,收藏不迷路💖 在Linux系统中…...
在Windows中安装PyTorch
文章目录 1. 创建虚拟环境2. 检查显卡版本和CUDA3. 下载链接4. 下载5. 等待6. 检测 1. 创建虚拟环境 具体查看我之前写的 《在Windows中利用Python的venv和virtualenv创建虚拟环境》 2. 检查显卡版本和CUDA 这种情况是需要电脑上有单独的英伟达的显卡、或者英伟达的显卡和集显…...
OFDM自适应调制的“智能”从哪来?深入聊聊信道状态信息(CSI)的获取与反馈那些坑
OFDM自适应调制背后的工程智慧:信道状态信息实战指南 在无线通信系统的设计与优化中,OFDM自适应调制技术如同一位隐形的调音师,实时调整着每个子载波的"音调"(调制方式)以适应瞬息万变的信道环境。但这位调音…...
【GEE实践】Landsat8/9影像NDVI批量计算与区域统计全解析
1. 从零开始理解NDVI与Landsat数据 第一次接触NDVI这个概念时,我也被各种专业术语搞得一头雾水。简单来说,NDVI就像给地球做体检时用的"植被健康指数"。它通过比较植物对红光和近红外光的反射特性,告诉我们哪里草木茂盛,…...
Spring 实战入门:构建第一个可运行的 Java 应用
Spring 实战入门:构建第一个可运行的 Java 应用 前言 Spring 作为 Java 开发的主流框架,大大提升了应用开发效率和系统可维护性。本文将通过实战方式,带你搭建第一个可以运行的 Spring Java 应用,理解核心组件、掌握关键注解、避…...
【实战指南】在Vue+Element-UI项目中深度定制vue-quill-editor富文本编辑器
1. 为什么选择vue-quill-editor 在Vue项目中集成富文本编辑器时,我们通常会面临几个选择:UEditor、wangEditor、TinyMCE等。但为什么我最终选择了vue-quill-editor呢?这里有几个关键原因: 首先,vue-quill-editor是基于…...
5分钟图解数码管驱动:从段选码表到位选扫描实战
1. 数码管驱动基础:从LED到数字显示 数码管本质上是一组排列成特定形状的LED灯。每个数码管由8个LED段组成(包括小数点),通过点亮不同段的组合来显示数字或字母。我第一次接触数码管是在大学电子设计课上,当时为了做一…...
i.MX6UL开发板OpenWrt系统移植实战:从内核适配到镜像打包
1. 环境准备与工具链选择 第一次接触i.MX6UL开发板时,我花了两周时间才搞明白为什么官方OpenWrt 19.07无法直接运行。这个Cortex-A7架构的芯片虽然性能不错,但内核适配确实是个技术活。建议直接用Ubuntu 14.04系统,别问为什么——这是用三个不…...
DDL急救包!2026论文降AI率实测:10款润色工具稳保安全区
现在写论文最怕的,已经不是查重了。怕什么?怕那个AIGC率太高。 真的,越来越多学校开始抓AIGC检测报告了,重复率放一边,就看你AI痕迹多不多。我自己就是刚爬出坑的25届学姐,这坑我踩得死死的。怎么说呢&…...
RAG基本流程
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识检索与大语言模型(LLM)生成能力相结合的技术,用于提升回答的准确性、减少“幻觉”(Hallucination),并…...
AI赋能研发革命:从辅助工具到核心引擎,揭秘研发智能大模型如何重塑未来!
从"辅助工具"到"核心引擎",研发范式的深刻变革 近期,科技部在《"十四五"国家科技创新规划》中期评估中明确提出,要加快人工智能与研发创新的深度融合,推动构建研发智能大模型。这一政策导向背后&am…...
交直流混合微电网架构:拓扑优化与功率交互设计
在新型电力系统建设与能源转型的背景下,光伏、风电等分布式新能源规模化渗透,电动汽车、数据中心等多元负荷快速增长,纯交流或纯直流微电网的局限性日益凸显。交直流混合微电网融合了交流微电网“兼容传统电网、适配交流负荷”与直流微电网“…...
