帮企业做网站的,免费建站网站一级大,旅游网站建设费用预算,网站开发模型工具♥️作者#xff1a;小宋1021 #x1f935;♂️个人主页#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识#xff0c;和大家一起努力呀#xff01;#xff01;#xff01; #x1f388;#x1f388;加油#xff01; 加油#xff01…♥️作者小宋1021 ♂️个人主页小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识和大家一起努力呀 加油 加油 加油 加油 欢迎评论 点赞 收藏 加关注 目录
后端
实体类
CancleClassRespVO
controller
CancleClassMapper
xml文件
CancleClassService
实现类
前端
index.vue
ClassCkeck.vue
index.ts(api)
axios.index.ts 目的多表联查
数据库学员表(study_student) 字段学生姓名sts_student_name、手机号(sts_phone)
班级管理teach_class_manage字段班级名称teach_class_manage、idid
教师管理hr_teacher_manage字段教师姓名teacher_name
课程管理teach_course_manage字段 课程名称course_name 中间表
班级管理-关联课程教师teach_class_manage_course 字段class_id、course_id、teacher_id 班级管理-关联学员teach_class_manage_student 字段class_id、student_id 数据关系班级课程多对多班级学员多对多 要查出如下字段 后端
实体类
package com.todod.education.module.study.dal.dataobject.cancleclass;import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.todod.education.framework.mybatis.core.dataobject.BaseDO;/*** 消课记录 DO** author 平台管理员*/
TableName(study_cancle_class)
KeySequence(study_cancle_class_seq) // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库可不写。
Data
EqualsAndHashCode(callSuper true)
ToString(callSuper true)
Builder
NoArgsConstructor
AllArgsConstructor
public class CancleClassDO extends BaseDO {/*** 主键id*/TableIdprivate Long id;/*** 学员id*/private Long studentId;/*** 班级id*/private Long classId;/*** 课程id*/private Long courseId;/*** 学员姓名*/TableField(exist false)private String stsStudentName;/*** 手机号*/TableField(exist false)private String stsPhone;/*** 班级名称*/TableField(exist false)private String className;/*** 班级类型*/TableField(exist false)private String classType;/*** 所报课程*/TableField(exist false)private String courseName;/*** 授课教师*/TableField(exist false)private String teacherName;/*** 上课时间*/private LocalDateTime classTime;/*** 消课人*/private String cancelClassPerson;/*** 消课时间*/private LocalDateTime cancelClassTime;/*** 实到人数*/private Integer arrivedNum;/*** 应到人数*/private Integer arrivingNum;/*** 点名操作人员*/private String rollCallPerson;/*** 点名时间*/private LocalDateTime rollCallTime;/*** 操作人*/private String operaName;/*** 操作时间*/private LocalDateTime operaTime;/*** 操作类型*/private String operaType;/*** 操作说明*/private String operaExplain;}
CancleClassRespVO
package com.todod.education.module.study.controller.admin.cancleclass.vo;import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;Schema(description 管理后台 - 消课记录 Response VO)
Data
ExcelIgnoreUnannotated
public class CancleClassRespVO {Schema(description 主键id, requiredMode Schema.RequiredMode.REQUIRED, example 18505)private Long id;Schema(description 学员id, requiredMode Schema.RequiredMode.REQUIRED, example 18505)private Long studentId;Schema(description 班级id, requiredMode Schema.RequiredMode.REQUIRED, example 18505)private Long classId;Schema(description 课程id, requiredMode Schema.RequiredMode.REQUIRED, example 18505)private Long courseId;Schema(description 学员姓名, example 芋艿)private String stsStudentName;Schema(description 手机号)private String stsPhone;Schema(description 班级名称, example 李四)ExcelProperty(班级名称)private String className;Schema(description 班级类型, example 1)ExcelProperty(班级类型)private String classType;Schema(description 所报课程)ExcelProperty(所报课程)private String courseName;Schema(description 上课时间)ExcelProperty(上课时间)private LocalDateTime classTime;Schema(description 授课教师)ExcelProperty(授课教师)private String teacherName;Schema(description 消课人)ExcelProperty(消课人)private String cancelClassPerson;Schema(description 消课时间)ExcelProperty(消课时间)private LocalDateTime cancelClassTime;Schema(description 创建时间)ExcelProperty(创建时间)private LocalDateTime createTime;Schema(description 操作人, example 王五)private String operaName;Schema(description 操作时间)private LocalDateTime operaTime;Schema(description 操作类型, example 2)private String operaType;Schema(description 操作说明)private String operaExplain;Schema(description 实到人数)private Integer arrivedNum;Schema(description 应到人数)private Integer arrivingNum;Schema(description 点名操作人员)private String rollCallPerson;Schema(description 点名时间)private LocalDateTime rollCallTime;
}
controller Tag(name 管理后台 - 消课记录)
RestController
RequestMapping(/study/cancle-class)
Validated
public class CancleClassController {Resourceprivate CancleClassService cancleClassService;GetMapping(/get)Operation(summary 获得消课记录)Parameter(name id, description 编号, required true, example 1024)PreAuthorize(ss.hasPermission(study:cancle-class:query))public CommonResultCancleClassRespVO getCancleClass(RequestParam(id) Long id) {CancleClassDO cancleClass cancleClassService.getCancleClass(id);return success(BeanUtils.toBean(cancleClass, CancleClassRespVO.class));}GetMapping(/findByIds)public ListCancleClassDO findUsersByIds(RequestParam Long id) {return cancleClassService.selectCheck(id);}GetMapping(/get2)Operation(summary 获得消课记录2)Parameter(name id, description 编号, required true, example 1024)PreAuthorize(ss.hasPermission(study:cancle-class:query))public CommonResultCancleClassRespVO getCancleClass2(RequestParam(id) Long id) {CancleClassDO cancleClass cancleClassService.getCancleClass2(id);return success(BeanUtils.toBean(cancleClass, CancleClassRespVO.class));}GetMapping(/page)Operation(summary 获得消课记录分页)PreAuthorize(ss.hasPermission(study:cancle-class:query))public CommonResultPageResultCancleClassRespVO getCancleClassPage(Valid CancleClassPageReqVO pageReqVO) {PageResultCancleClassDO pageResult cancleClassService.getCancleClassPage(pageReqVO);return success(BeanUtils.toBean(pageResult, CancleClassRespVO.class));}GetMapping(/page2)Operation(summary 获得消课记录分页2)PreAuthorize(ss.hasPermission(study:cancle-class:query))public CommonResultPageResultCancleClassRespVO getCancleClassPage2(Valid CancleClassPageReqVO pageReqVO) {PageResultCancleClassDO pageResult cancleClassService.getCancleClassPage2(pageReqVO);return success(BeanUtils.toBean(pageResult, CancleClassRespVO.class));}}
CancleClassMapper
package com.todod.education.module.study.dal.mysql.cancleclass;import java.util.*;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.todod.education.framework.common.pojo.PageResult;
import com.todod.education.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.todod.education.framework.mybatis.core.mapper.BaseMapperX;
import com.todod.education.module.study.controller.admin.entranceexam.vo.EntranceExamPageReqVO;
import com.todod.education.module.study.dal.dataobject.cancleclass.CancleClassDO;
import com.todod.education.module.study.dal.dataobject.entranceexam.EntranceExamDO;
import org.apache.ibatis.annotations.Mapper;
import com.todod.education.module.study.controller.admin.cancleclass.vo.*;
import org.apache.ibatis.annotations.Param;/*** 消课记录 Mapper** author 平台管理员*/
Mapper
public interface CancleClassMapper extends BaseMapperXCancleClassDO {default PageResultCancleClassDO selectPage(CancleClassPageReqVO reqVO) {return selectPage(reqVO, new LambdaQueryWrapperXCancleClassDO().likeIfPresent(CancleClassDO::getClassName, reqVO.getClassName()).betweenIfPresent(CancleClassDO::getClassTime, reqVO.getClassTime()).betweenIfPresent(CancleClassDO::getCancelClassTime, reqVO.getCancelClassTime()).betweenIfPresent(CancleClassDO::getCreateTime, reqVO.getCreateTime()).orderByDesc(CancleClassDO::getId));}IPageCancleClassDO fetchPageResults(IPageCancleClassDO page, Param(queryEntry) CancleClassPageReqVO pageReqVO);ListCancleClassDO selectCheck(Param(id) Long id);
}
xml文件
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.todod.education.module.study.dal.mysql.cancleclass.CancleClassMapperselect idfetchPageResults resultTypecom.todod.education.module.study.dal.dataobject.cancleclass.CancleClassDOSELECT tcm.class_name,tcm.id AS class_id,tcm.class_type,tcmc.teacherNames,tcmc.courseNames,tcms.studentsFROM teach_class_manage tcmINNER JOIN (SELECT tcmc.class_id,string_agg(htm.teacher_name, ,) AS teacherNames,string_agg(tcm.course_name, ,) AS courseNamesFROM teach_class_manage_course tcmcINNER JOIN hr_teacher_manage htm ON htm.id tcmc.teacher_idINNER JOIN teach_course_manage tcm ON tcm.id tcmc.course_idGROUP BY tcmc.class_id) tcmc ON tcm.id tcmc.class_idLEFT JOIN (SELECT tcms.class_id,COALESCE(COUNT(*), 0) AS studentsFROM teach_class_manage_student tcmsGROUP BY tcms.class_id) tcms ON tcm.id tcms.class_idWHERE 1 1 AND tcm.deleted 0if test queryEntry.stsStudentName ! null and queryEntry.stsStudentName ! and queryEntry.stsStudentName ! null AND ss.sts_student_name like %${queryEntry.stsStudentName}/ifORDER BYtcm.create_time desc/selectselect idselectCheck resultTypecom.todod.education.module.study.dal.dataobject.cancleclass.CancleClassDOSELECTtcm.class_name,ss.sts_student_name,ss.sts_phone,tcs.student_id,tcmc.course_id,tcm2.course_name,htm.teacher_nameFROMteach_class_manage tcmJOIN teach_class_manage_student tcs ON tcm.id tcs.class_idJOIN study_student ss ON tcs.student_id ss.id -- 这里假设study_student的id字段对应于student_idJOIN teach_class_manage_course tcmc ON tcm.id tcmc.class_idJOIN teach_course_manage tcm2 ON tcmc.course_id tcm2.idJOIN hr_teacher_manage htm ON tcmc.teacher_id htm.idWHEREtcm.id #{id}ORDER BYtcs.student_id, tcmc.course_id;/select/mapper
CancleClassService
package com.todod.education.module.study.service.cancleclass;import java.util.*;
import jakarta.validation.*;
import com.todod.education.module.study.controller.admin.cancleclass.vo.*;
import com.todod.education.module.study.dal.dataobject.cancleclass.CancleClassDO;
import com.todod.education.framework.common.pojo.PageResult;
import com.todod.education.framework.common.pojo.PageParam;/*** 消课记录 Service 接口** author 平台管理员*/
public interface CancleClassService {/*** 获得消课记录** param id 编号* return 消课记录*/CancleClassDO getCancleClass(Long id);/*** 获得消课记录** param id 编号* return 消课记录*/CancleClassDO getCancleClass2(Long id);/*** 获得消课记录分页** param pageReqVO 分页查询* return 消课记录分页*/PageResultCancleClassDO getCancleClassPage(CancleClassPageReqVO pageReqVO);/*** 获得消课记录分页2** param pageReqVO 分页查询* return 消课记录分页*/PageResultCancleClassDO getCancleClassPage2(CancleClassPageReqVO pageReqVO);ListCancleClassDO selectCheck(Long id);
}
实现类
package com.todod.education.module.study.service.cancleclass;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzt.logapi.context.LogRecordContext;
import com.mzt.logapi.service.impl.DiffParseFunction;
import com.mzt.logapi.starter.annotation.LogRecord;
import com.todod.education.module.study.controller.admin.monthexam.vo.MonthExamPageReqVO;
import com.todod.education.module.study.controller.admin.plan.vo.PlanSaveReqVO;
import com.todod.education.module.study.dal.dataobject.monthexam.MonthExamDO;
import com.todod.education.module.study.dal.dataobject.plan.PlanDO;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;import java.util.*;
import com.todod.education.module.study.controller.admin.cancleclass.vo.*;
import com.todod.education.module.study.dal.dataobject.cancleclass.CancleClassDO;
import com.todod.education.framework.common.pojo.PageResult;
import com.todod.education.framework.common.pojo.PageParam;
import com.todod.education.framework.common.util.object.BeanUtils;import com.todod.education.module.study.dal.mysql.cancleclass.CancleClassMapper;import static com.todod.education.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.todod.education.module.study.enums.ErrorCodeConstants.*;
import static com.todod.education.module.system.enums.LogRecordConstants.*;/*** 消课记录 Service 实现类** author 平台管理员*/
Service
Validated
public class CancleClassServiceImpl implements CancleClassService {Resourceprivate CancleClassMapper cancleClassMapper;Overridepublic CancleClassDO getCancleClass(Long id) {return cancleClassMapper.selectById(id);}Overridepublic CancleClassDO getCancleClass2(Long id) {return cancleClassMapper.selectById(id);}Overridepublic PageResultCancleClassDO getCancleClassPage(CancleClassPageReqVO pageReqVO) {return cancleClassMapper.selectPage(pageReqVO);}Overridepublic PageResultCancleClassDO getCancleClassPage2(CancleClassPageReqVO pageReqVO) {IPageCancleClassDO page new Page(pageReqVO.getPageNo(), pageReqVO.getPageSize());cancleClassMapper.fetchPageResults(page, pageReqVO);return new PageResult(page.getRecords(), page.getTotal());}Overridepublic ListCancleClassDO selectCheck(Long id) {return cancleClassMapper.selectCheck(id);}
}
前端
index.vue
templatediv ContentWrap!-- 搜索工作栏 --el-formclass-mb-15px:modelqueryParamsrefqueryFormRef:inlinetruelabel-width68pxel-form-item label班级名称 propclassName stylewidth: 21.8%;el-inputv-modelqueryParams.classNameplaceholder请输入班级名称clearablekeyup.enterhandleQueryclass!w-240px//el-form-itemel-form-item label上课时间 propclassTime stylewidth: 21.8%;el-date-pickerv-modelqueryParams.classTimevalue-formatYYYY-MM-DD HH:mm:sstypedaterangestart-placeholder开始日期end-placeholder结束日期:default-time[new Date(1 00:00:00), new Date(1 23:59:59)]class!w-240px//el-form-itemel-form-item label消课时间 propcancelClassTime stylewidth: 21.8%;el-date-pickerv-modelqueryParams.cancelClassTimevalue-formatYYYY-MM-DD HH:mm:sstypedaterangestart-placeholder开始日期end-placeholder结束日期:default-time[new Date(1 00:00:00), new Date(1 23:59:59)]class!w-240px//el-form-itemel-form-item label所报课程 propreportCourse stylewidth: 21.8%;el-selectv-modelqueryParams.reportCourseplaceholder请选择所报课程clearableclass!w-240pxel-optionv-fordict in getIntDictOptions(DICT_TYPE.REPORT_COURSE):keydict.value:labeldict.label:valuedict.value//el-select/el-form-itemel-form-itemel-button clickhandleQueryIcon iconep:search classmr-5px / 搜索/el-buttonel-button clickresetQueryIcon iconep:refresh classmr-5px / 重置/el-button!-- el-buttontypesuccessplainclickhandleExport:loadingexportLoadingv-hasPermi[study:cancle-class:export]Icon iconep:download classmr-5px / 导出/el-button --!-- el-buttonclickclassChecktypeprimary发送课时核对/el-button --el-button plain clickouterVisible true发送课时核对/el-buttonel-dialog v-modelouterVisible title发送课时核对 width800 refcourseCheck :studentIdsstudentIdspan要为所选中的学员发送课时记录么/spanel-dialogv-modelinnerVisiblewidth500title发送成功append-to-bodyspan发送成功/span/el-dialogtemplate #footerdiv classdialog-footerel-button clickouterVisible false取消/el-buttonel-button typeprimary clickinnerVisible true确认/el-button/div/template/el-dialog/el-form-item/el-form/ContentWrap!-- 列表 --ContentWrapel-table v-loadingloading :datalist :stripetrue :show-overflow-tooltiptrueel-table-columnlabel序号typeindexheader-aligncenteraligncenterwidth60pxfixed/el-table-column typeselection width55 /el-table-column label班级名称 aligncenter propclassName /el-table-column label班级类型 aligncenter propclassTypetemplate #defaultscopedict-tag :typeDICT_TYPE.COURSE_TYPE :valuescope.row.classType //template/el-table-columnel-table-column label所报课程 aligncenter propcourseNametemplate #defaultscopedict-tag :typeDICT_TYPE.REPORT_COURSE :valuescope.row.courseName //template/el-table-columnel-table-columnlabel上课时间aligncenterpropclassTime:formatterdateFormatter3width180px/el-table-column label授课教师 aligncenter propteacherName /el-table-column label消课人 aligncenter propcancelClassPerson /el-table-columnlabel消课时间aligncenterpropcancelClassTime:formatterdateFormatter3width180px/el-table-column label操作 aligncentertemplate #defaultscopeel-buttonlinktypeprimaryclickcancleCourse(update, scope.row.classId)消课/el-buttonel-buttonlinktypeprimaryclickdetails(update, scope.row.classId)v-hasPermi[study:add-course-record:query]详情/el-buttonel-buttonlinktypeprimaryclickoperate(update, scope.row.classId)v-hasPermi[study:add-course-record:query]日志/el-button/template/el-table-column/el-table!-- 分页 --Pagination:totaltotalv-model:pagequeryParams.pageNov-model:limitqueryParams.pageSizepaginationgetList//ContentWrap
/div!-- 表单弹窗添加/修改 --CancleClassForm refformRef successgetList /!-- 表单弹窗详情 --el-drawerv-modeldrawertitle详情:directiondirectionv-ifdrawersize 71%classdrawerdestory-on-closeDetailForm refdetailRef :detailIddetailId//el-drawer!-- 表单弹窗详情 --el-drawerv-modeldrawer2title日志:directiondirectionv-ifdrawer2size 71%classdrawerdestory-on-closeOperate refoperateRef :detailIddetailId//el-drawerClassCkeck refdetailRef2 successgetList //templatescript setup langts
import { dateFormatter,dateFormatter2,dateFormatter3 } from /utils/formatTime
import download from /utils/download
import { getIntDictOptions, DICT_TYPE } from /utils/dict
import { CancleClassApi, CancleClassVO } from /api/study/cancleclass
import DetailForm from /views/study/cancleclassPlus/Index.vue
import Operate from /views/study/cancleclassPlus/Index.vue
import CancleClassForm from ./CancleClassForm.vue
import ClassCkeck from ./ClassCkeck.vue
import type { DrawerProps } from element-plus
import type { Action } from element-plus
import { ref } from vue;
import { ElMessageBox } from element-plus
const outerVisible ref(false)
const innerVisible ref(false)/** 消课记录 列表 */
defineOptions({ name: CancleClass })const message useMessage() // 消息弹窗
const { t } useI18n() // 国际化
const direction refDrawerProps[direction](rtl)
const loading ref(true) // 列表的加载中
const list refCancleClassVO[]([]) // 列表的数据
const total ref(0) // 列表的总页数
const queryParams reactive({pageNo: 1,pageSize: 10,classId: undefined,
})
const queryFormRef ref() // 搜索的表单
const exportLoading ref(false) // 导出的加载中/** 查询列表 */
const getList async () {loading.value truetry {const data await CancleClassApi.getCancleClassPage2(queryParams)list.value data.listtotal.value data.total} finally {loading.value false}
}const classref ref()/** 搜索按钮操作 */
const handleQuery () {queryParams.pageNo 1getList()
}
// 课时核对
const courseCkeck ref()
const courseCkeck1 () {if(studentId.value.length 0){message.warning(请选择要消课的学员)}else{courseCkeck.value.open()}}
/** 查看详情 */
const detailRef ref()
const drawer ref(false)
const detailId ref()
const details (type: string, classId?: number) {drawer.valuetruedetailId.valueclassId
}
const detailRef2 ref()
const cancleCourse (type: string, classId?: number) {detailRef2.value.open(type, classId)}
/** 查看详情 */
const operateRef ref()
const drawer2 ref(false)
const operate (type: string, id?: number) {drawer2.valuetruedetailId.valueid
}/** 重置按钮操作 */
const resetQuery () {queryFormRef.value.resetFields()handleQuery()
}/** 添加/修改操作 */
const formRef ref()
const openForm (type: string, id?: number) {formRef.value.open(type, id)
}/** 删除按钮操作 */
const handleDelete async (id: number) {try {// 删除的二次确认await message.delConfirm()// 发起删除await CancleClassApi.deleteCancleClass(id)message.success(t(common.delSuccess))// 刷新列表await getList()} catch {}
}// /** 导出按钮操作 */
// const handleExport async () {
// try {
// // 导出的二次确认
// await message.exportConfirm()
// // 发起导出
// exportLoading.value true
// const data await CancleClassApi.exportCancleClass(queryParams)
// download.excel(data, 消课记录.xls)
// } catch {
// } finally {
// exportLoading.value false
// }
// }/** 初始化 **/
onMounted(() {getList()
})
/script
ClassCkeck.vue
templateDialog :titledialogTitle v-modeldialogVisible
!-- 列表 --ContentWrapel-buttontypeprimaryplain消课/el-buttonel-table v-loadingloading :datalist :stripetrue :show-overflow-tooltiptrueel-table-columnlabel序号typeindexheader-aligncenteraligncenterwidth60pxfixed/el-table-column label班级名称 aligncenter propclassName /el-table-column label班级类型 aligncenter propclassTypetemplate #defaultscopedict-tag :typeDICT_TYPE.COURSE_TYPE :valuescope.row.classType //template/el-table-columnel-table-column label学生姓名 aligncenter propstsStudentName /el-table-column label手机号 aligncenter propstsPhone /el-table-column label所报课程 aligncenter propcourseName /el-table-columnlabel上课时间aligncenterpropclassTime:formatterdateFormatterwidth180px/el-table-column label授课教师 aligncenter propteacherName //el-table!-- 分页 --Pagination:totaltotalv-model:pagequeryParams.pageNov-model:limitqueryParams.pageSizepaginationgetList/
/ContentWrap/Dialog
/templatescript setup langts
import { dateFormatter } from /utils/formatTime
import { getIntDictOptions, DICT_TYPE } from /utils/dict
import { CancleClassApi, CancleClassVO } from /api/study/cancleclass
import { ref } from vue;/** 消课记录 列表 */
defineOptions({ name: CancleClass })
const dialogVisible ref(false) // 弹窗的是否展示
const dialogTitle ref() // 弹窗的标题
const loading ref(true) // 列表的加载中
const list ref([]) // 列表的数据
const queryParams reactive({
pageNo: 1,
pageSize: 10,})const open async (type: string, classId?: number) {dialogVisible.value trueloading.value true
try {console.log(await CancleClassApi.getCancleClassDetail(7))const data await CancleClassApi.getCancleClassDetail(classId)console.log(data,sadsads)list.value data
} finally {loading.value false
}
}
defineExpose({ open }) // 提供 open 方法用于打开弹窗
/** 查询列表 */
// const getList async () {// }// onMounted(() {
// getList()
// })
/script
style scoped langscss:deep(.el-dialog__body){width: 1000px !important;height: 1000px !important;
}
/style
index.ts(api)
import request from /config/axios// 消课记录 VO
export interface CancleClassVO {id: number // 主键idclassName: string // 班级名称classType: string // 班级类型reportCourse: string // 所报课程classTime: Date // 上课时间classTeacher: string // 授课教师cancelClassPerson: string // 消课人cancelClassTime: Date // 消课时间studentName: string // 学员姓名phone: string // 手机号arrivedNum: number // 实到人数arrivingNum: number // 应到人数rollCallPerson: string // 点名操作人员rollCallTime: Date // 店面时间operaName: string // 操作人operaTime: Date // 操作时间operaType: string // 操作类型operaExplain: string // 操作说明
}// 消课记录 API
export const CancleClassApi {// 查询消课记录分页getCancleClassPage: async (params: any) {return await request.get({ url: /study/cancle-class/page, params })},// 查询消课记录分页getCancleClassPage2: async (params: any) {return await request.get({ url: /study/cancle-class/page2, params })},// 查询消课记录详情getCancleClass: async (id: number) {return await request.get({ url: /study/cancle-class/get?id id })},// 查询消课记录详情getCancleClass2: async (id: number) {return await request.get({ url: /study/cancle-class/get2?id id })},// 查询消课记录详情getCancleClassDetail: async (id: number) {return await request.gets({ url: /study/cancle-class/findByIds?id id })},// 新增消课记录createCancleClass: async (data: CancleClassVO) {return await request.post({ url: /study/cancle-class/create, data })},// 修改消课记录updateCancleClass: async (data: CancleClassVO) {return await request.put({ url: /study/cancle-class/update, data })},// 删除消课记录deleteCancleClass: async (id: number) {return await request.delete({ url: /study/cancle-class/delete?id id })},// 导出消课记录 ExcelexportCancleClass: async (params) {return await request.download({ url: /study/cancle-class/export-excel, params })},
}axios.index.ts
import { service } from ./serviceimport { config } from ./configconst { default_headers } configconst request (option: any) {const { url, method, params, data, headersType, responseType, ...config } optionreturn service({url: url,method,params,data,...config,responseType: responseType,headers: {Content-Type: headersType || default_headers}})
}
export default {get: async T any(option: any) {const res await request({ method: GET, ...option })return res.data as unknown as T},gets: async T any(option: any) {const res await request({ method: GET, ...option })return res as unknown as T},post: async T any(option: any) {const res await request({ method: POST, ...option })return res.data as unknown as T},postOriginal: async (option: any) {const res await request({ method: POST, ...option })return res},delete: async T any(option: any) {const res await request({ method: DELETE, ...option })return res.data as unknown as T},put: async T any(option: any) {const res await request({ method: PUT, ...option })return res.data as unknown as T},download: async T any(option: any) {const res await request({ method: GET, responseType: blob, ...option })return res as unknown as PromiseT},upload: async T any(option: any) {option.headersType multipart/form-dataconst res await request({ method: POST, ...option })return res as unknown as PromiseT},download1: async T any(option: any) {const res await request({ method: POST, responseType: blob, ...option })return res as unknown as PromiseT}
} 文章转载自: http://www.morning.fqljq.cn.gov.cn.fqljq.cn http://www.morning.trfrl.cn.gov.cn.trfrl.cn http://www.morning.gskzy.cn.gov.cn.gskzy.cn http://www.morning.ykrss.cn.gov.cn.ykrss.cn http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.slwqt.cn.gov.cn.slwqt.cn http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn http://www.morning.gfznl.cn.gov.cn.gfznl.cn http://www.morning.wfbs.cn.gov.cn.wfbs.cn http://www.morning.jjpk.cn.gov.cn.jjpk.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.ztnmc.cn.gov.cn.ztnmc.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.rkrl.cn.gov.cn.rkrl.cn http://www.morning.qynpw.cn.gov.cn.qynpw.cn http://www.morning.mslsn.cn.gov.cn.mslsn.cn http://www.morning.nhzxr.cn.gov.cn.nhzxr.cn http://www.morning.thbqp.cn.gov.cn.thbqp.cn http://www.morning.qzxb.cn.gov.cn.qzxb.cn http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn http://www.morning.njstzsh.com.gov.cn.njstzsh.com http://www.morning.zhiheliuxue.com.gov.cn.zhiheliuxue.com http://www.morning.wkgyz.cn.gov.cn.wkgyz.cn http://www.morning.yswxq.cn.gov.cn.yswxq.cn http://www.morning.kwyq.cn.gov.cn.kwyq.cn http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com http://www.morning.cnhgc.cn.gov.cn.cnhgc.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.wyfpc.cn.gov.cn.wyfpc.cn http://www.morning.qdxwf.cn.gov.cn.qdxwf.cn http://www.morning.wptrm.cn.gov.cn.wptrm.cn http://www.morning.njfgl.cn.gov.cn.njfgl.cn http://www.morning.rcntx.cn.gov.cn.rcntx.cn http://www.morning.cnfxr.cn.gov.cn.cnfxr.cn http://www.morning.znpyw.cn.gov.cn.znpyw.cn http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn http://www.morning.pkrtz.cn.gov.cn.pkrtz.cn http://www.morning.cnprt.cn.gov.cn.cnprt.cn http://www.morning.nicetj.com.gov.cn.nicetj.com http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn http://www.morning.xysdy.cn.gov.cn.xysdy.cn http://www.morning.tqbw.cn.gov.cn.tqbw.cn http://www.morning.mrcpy.cn.gov.cn.mrcpy.cn http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.ejknty.cn.gov.cn.ejknty.cn http://www.morning.cbpkr.cn.gov.cn.cbpkr.cn http://www.morning.sgqw.cn.gov.cn.sgqw.cn http://www.morning.prmbn.cn.gov.cn.prmbn.cn http://www.morning.xlxmy.cn.gov.cn.xlxmy.cn http://www.morning.khpgd.cn.gov.cn.khpgd.cn http://www.morning.mhmcr.cn.gov.cn.mhmcr.cn http://www.morning.ysckr.cn.gov.cn.ysckr.cn http://www.morning.rkzb.cn.gov.cn.rkzb.cn http://www.morning.wmglg.cn.gov.cn.wmglg.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.xprq.cn.gov.cn.xprq.cn http://www.morning.zyndj.cn.gov.cn.zyndj.cn http://www.morning.srndk.cn.gov.cn.srndk.cn http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.ydmml.cn.gov.cn.ydmml.cn http://www.morning.gmwdl.cn.gov.cn.gmwdl.cn http://www.morning.kqcqr.cn.gov.cn.kqcqr.cn http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn http://www.morning.nllst.cn.gov.cn.nllst.cn http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn http://www.morning.ngzkt.cn.gov.cn.ngzkt.cn http://www.morning.nnwnl.cn.gov.cn.nnwnl.cn http://www.morning.hxpsp.cn.gov.cn.hxpsp.cn http://www.morning.lflsq.cn.gov.cn.lflsq.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.ldwxj.cn.gov.cn.ldwxj.cn http://www.morning.jpnfm.cn.gov.cn.jpnfm.cn http://www.morning.ydflc.cn.gov.cn.ydflc.cn