commit
This commit is contained in:
+83
-1
@@ -1,18 +1,32 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.literacy.controller.manage;
|
package com.budwk.app.zhgh.dayofficework.literacy.controller.manage;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.budwk.app.base.annotation.SLog;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.base.service.BaseService;
|
import com.budwk.app.base.service.BaseService;
|
||||||
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.literacy.models.LiteracySourceCourse;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.literacy.models.LiteracyTeacher;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.ioc.aop.Aop;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName LiteracyCourseController
|
* @ClassName LiteracyCourseController
|
||||||
* @Author JyuHsin
|
* @Author JyuHsin
|
||||||
@@ -40,8 +54,76 @@ public class LiteracyCourseController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("literacy.course")
|
@SaCheckPermission("literacy.course")
|
||||||
public Result pageData(PageForm pageForm) {
|
public Result pageData(PageForm pageForm,
|
||||||
|
@Param("courseType") String courseType,
|
||||||
|
@Param("teacherId") String teacherId) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
sc.*,
|
||||||
|
t.typeName,
|
||||||
|
te.NAME AS teacherName
|
||||||
|
FROM
|
||||||
|
`literacy_source_course` sc
|
||||||
|
LEFT JOIN literacy_type t ON sc.courseType = t.id
|
||||||
|
LEFT JOIN literacy_teacher te ON sc.courseInstructor = te.id
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
|
||||||
|
cnd.and(Cnd.likeEX("sc.courseName", pageForm.getSearchKeyword()));
|
||||||
|
cnd.andEX("sc.courseType", "=", courseType);
|
||||||
|
cnd.andEX("sc.courseInstructor", "=", teacherId);
|
||||||
|
|
||||||
|
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||||
|
cnd.desc("sc.createdAt");
|
||||||
|
} else {
|
||||||
|
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
return Result.success(pagination);
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SaCheckPermission("literacy.course")
|
||||||
|
@SLog(type = "职工素养-课程管理", tag = "新增/编辑", msg = "新增/编辑教师")
|
||||||
|
public Result submit(LiteracySourceCourse sourceCourse) {
|
||||||
|
if(StrUtil.isNotBlank(sourceCourse.getId())) {
|
||||||
|
dao.updateIgnoreNull(sourceCourse);
|
||||||
|
} else {
|
||||||
|
sourceCourse.setOpenOtherUnion(false);
|
||||||
|
dao.insert(sourceCourse);
|
||||||
|
}
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SaCheckPermission("literacy.course")
|
||||||
|
@SLog(type = "职工素养-课程管理", tag = "删除", msg = "删除教师")
|
||||||
|
public Object delete(@Param(value = "id") String id) {
|
||||||
|
dao.clear(LiteracySourceCourse.class, Cnd.where("id", "=", id));
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SaCheckPermission("literacy")
|
||||||
|
public Object querySourceCourses() {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
sc.*,
|
||||||
|
t.typeName,
|
||||||
|
te.NAME AS teacherName,
|
||||||
|
te.NAME AS courseInstructor
|
||||||
|
FROM
|
||||||
|
`literacy_source_course` sc
|
||||||
|
LEFT JOIN literacy_type t ON sc.courseType = t.id
|
||||||
|
LEFT JOIN literacy_teacher te ON sc.courseInstructor = te.id
|
||||||
|
""");
|
||||||
|
List<NutMap> list = baseService.listMap(sql);
|
||||||
|
return Result.success(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -21,8 +21,10 @@ import java.util.List;
|
|||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class LiteracyActivity extends BaseModel implements Serializable, SysHomeConvert {
|
public class LiteracyActivity extends BaseModel implements Serializable, SysHomeConvert {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@PrevInsert(uu32 = true)
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
+4
-2
@@ -15,8 +15,10 @@ import java.util.Date;
|
|||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class LiteracyActivityCourse {
|
public class LiteracyActivityCourse {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@PrevInsert(uu32 = true)
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
+4
-3
@@ -13,9 +13,10 @@ import org.nutz.dao.interceptor.annotation.PrevInsert;
|
|||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class LiteracyBlackList {
|
public class LiteracyBlackList {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@Comment("ID")
|
||||||
@PrevInsert(uu32 = true)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
+10
-122
@@ -16,10 +16,12 @@ import java.util.List;
|
|||||||
@Comment("职工素养的子活动")
|
@Comment("职工素养的子活动")
|
||||||
@Table
|
@Table
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class LiteracyCourse extends BaseModel implements Serializable {
|
public class LiteracyCourse extends LiteracySourceCourse implements Serializable {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@PrevInsert(uu32 = true)
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@@ -27,137 +29,23 @@ public class LiteracyCourse extends BaseModel implements Serializable {
|
|||||||
@Comment("活动ID")
|
@Comment("活动ID")
|
||||||
private String activityId;
|
private String activityId;
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
|
||||||
@Comment("课程名称")
|
|
||||||
private String courseName;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT)
|
|
||||||
@Comment("课程人数")
|
|
||||||
private int coursePeopleNumber;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT)
|
|
||||||
@Default(value = "0")
|
|
||||||
@Comment("预留名额")
|
|
||||||
private int courseReservedNumber;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
|
||||||
@Comment("课程地点")
|
|
||||||
private String courseLocation;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
|
||||||
@Comment("课程类型")
|
|
||||||
private String courseType;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.MYSQL_JSON)
|
|
||||||
@Comment("课程地点坐标")
|
|
||||||
private List<Double> courseLocationCoordinates;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
|
||||||
@Comment("课程讲师")
|
|
||||||
private String courseInstructor;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
|
||||||
@Comment("校区")
|
|
||||||
private String campus;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.BOOLEAN)
|
|
||||||
@Comment("报名人数是否限制")
|
|
||||||
private Boolean courseIsLimitApply;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT)
|
|
||||||
@Comment("序号")
|
|
||||||
private int orderNum;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(customType = "longtext")
|
|
||||||
@Comment("详细信息")
|
|
||||||
private String introduce;
|
|
||||||
|
|
||||||
@Many(field = "courseId")
|
@Many(field = "courseId")
|
||||||
private List<LiteracyActivityCourse> courseTimeList;
|
private List<LiteracyActivityCourse> courseTimeList;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("分工会人数限制")
|
||||||
|
@ColDefine(type = ColType.MYSQL_JSON)
|
||||||
|
private List<NutMap> unionLimit;
|
||||||
|
|
||||||
//已报人数
|
//已报人数
|
||||||
private Integer hasRegisterNum;
|
private Integer hasRegisterNum;
|
||||||
|
|
||||||
private Boolean isBringFamily;
|
private Boolean isBringFamily;
|
||||||
|
|
||||||
private Boolean isAddFamily;
|
private Boolean isAddFamily;
|
||||||
|
|
||||||
//是否报过该课程
|
//是否报过该课程
|
||||||
private Boolean isSign;
|
private Boolean isSign;
|
||||||
|
|
||||||
//还能报该类型的课程吗
|
//还能报该类型的课程吗
|
||||||
private Boolean canSignThisCourseType;
|
private Boolean canSignThisCourseType;
|
||||||
|
|
||||||
@Column
|
|
||||||
@Comment("分工会人数限制")
|
|
||||||
@ColDefine(type = ColType.MYSQL_JSON)
|
|
||||||
private List<NutMap> unionLimit;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.BOOLEAN)
|
|
||||||
@Comment("移动端是否签到")
|
|
||||||
private boolean isMobileSign;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT)
|
|
||||||
@Comment("签到方式 1.扫描二维码签到 2.被扫 3.gps签到")
|
|
||||||
private Integer signType;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.BOOLEAN)
|
|
||||||
@Comment("移动端是否签收礼品")
|
|
||||||
private boolean isReceiveGift;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT)
|
|
||||||
@Comment("领取礼品方式 1.扫描二维码 2.线下")
|
|
||||||
private Integer giftType;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT)
|
|
||||||
@Comment("预留名额方式 1.报名人员减少模式 2.报名人数不变模式")
|
|
||||||
private Integer reserveMode;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@Comment("承办工会")
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
|
||||||
private String hostUnionId;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@Comment("对内报名时间")
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
|
||||||
private String interTime;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@Comment("是否开放给其他工会")
|
|
||||||
@ColDefine(type = ColType.BOOLEAN, width = 4)
|
|
||||||
private Boolean openOtherUnion;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@Comment("分类标识")
|
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
|
||||||
private String assort;
|
|
||||||
|
|
||||||
@Column
|
|
||||||
@ColDefine(type = ColType.INT)
|
|
||||||
@Default(value = "0")
|
|
||||||
@Comment("候补名额数")
|
|
||||||
private Integer waitingNum;
|
|
||||||
|
|
||||||
//候补已报人数
|
//候补已报人数
|
||||||
private Integer hasWaitingNum;
|
private Integer hasWaitingNum;
|
||||||
|
|
||||||
private String courseTimeName;
|
private String courseTimeName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -17,10 +17,10 @@ public class LiteracyMobileSignColumn {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@Comment("id")
|
@Comment("ID")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
@PrevInsert(uu32 = true)
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
+145
@@ -0,0 +1,145 @@
|
|||||||
|
package com.budwk.app.zhgh.dayofficework.literacy.models;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import com.budwk.app.base.model.BaseModel;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
import org.nutz.dao.entity.annotation.*;
|
||||||
|
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName LiteracySourceCourse
|
||||||
|
* @Author JyuHsin
|
||||||
|
* @Date 2025/9/28 14:46
|
||||||
|
* @Version 1.0
|
||||||
|
* @Description TODO
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@Comment("职工素养-课程管理")
|
||||||
|
@Table
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class LiteracySourceCourse extends BaseModel {
|
||||||
|
|
||||||
|
@Name
|
||||||
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
@Comment("课程名称")
|
||||||
|
private String courseName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Comment("课程人数")
|
||||||
|
private int coursePeopleNumber;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Default(value = "0")
|
||||||
|
@Comment("预留名额")
|
||||||
|
private int courseReservedNumber;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
@Comment("课程地点")
|
||||||
|
private String courseLocation;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@Comment("课程类型")
|
||||||
|
private String courseType;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.MYSQL_JSON)
|
||||||
|
@Comment("课程地点坐标")
|
||||||
|
private List<Double> courseLocationCoordinates;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
@Comment("课程讲师")
|
||||||
|
private String courseInstructor;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@Comment("校区")
|
||||||
|
private String campus;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
|
@Comment("报名人数是否限制")
|
||||||
|
private Boolean courseIsLimitApply;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Comment("序号")
|
||||||
|
private int orderNum;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(customType = "longtext")
|
||||||
|
@Comment("详细信息")
|
||||||
|
private String introduce;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
|
@Comment("移动端是否签到")
|
||||||
|
private boolean isMobileSign;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Comment("签到方式 1.扫描二维码签到 2.被扫 3.gps签到")
|
||||||
|
private Integer signType;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
|
@Comment("移动端是否签收礼品")
|
||||||
|
private boolean isReceiveGift;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Comment("领取礼品方式 1.扫描二维码 2.线下")
|
||||||
|
private Integer giftType;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Comment("预留名额方式 1.报名人员减少模式 2.报名人数不变模式")
|
||||||
|
private Integer reserveMode;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("承办工会")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String hostUnionId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("对内报名时间")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String interTime;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("是否开放给其他工会")
|
||||||
|
@ColDefine(type = ColType.BOOLEAN, width = 4)
|
||||||
|
private Boolean openOtherUnion;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("分类标识")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
|
private String assort;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
@Default(value = "0")
|
||||||
|
@Comment("候补名额数")
|
||||||
|
private Integer waitingNum;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.MYSQL_JSON)
|
||||||
|
@Comment("时间段")
|
||||||
|
private List<JSONObject> timeList;
|
||||||
|
}
|
||||||
@@ -20,10 +20,10 @@ public class LiteracyTeacher extends BaseModel implements Serializable {
|
|||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@Comment("id")
|
@Comment("ID")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
@PrevInsert(uu32 = true)
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ public class LiteracyType extends BaseModel implements Serializable {
|
|||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@Comment("id")
|
@Comment("ID")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
@PrevInsert(uu32 = true)
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
+4
-4
@@ -17,10 +17,10 @@ public class LiteracyTypeLimit implements Serializable {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@Comment("id")
|
@Comment("ID")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
@PrevInsert(uu32 = true)
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
@@ -19,8 +19,10 @@ import java.util.List;
|
|||||||
@TableIndexes({@Index(name = "INDEX_TRAIN_SIGN_UP_USER_COURSEID", fields = {"courseId"}, unique = false)})
|
@TableIndexes({@Index(name = "INDEX_TRAIN_SIGN_UP_USER_COURSEID", fields = {"courseId"}, unique = false)})
|
||||||
public class LiteracyUser implements Serializable {
|
public class LiteracyUser implements Serializable {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@PrevInsert(uu32 = true)
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
+4
-2
@@ -20,8 +20,10 @@ import java.util.Date;
|
|||||||
})
|
})
|
||||||
public class LiteracyUserCourse implements Serializable {
|
public class LiteracyUserCourse implements Serializable {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@PrevInsert(uu32 = true)
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
@@ -3,7 +3,18 @@ layout("/layouts/platform.html"){
|
|||||||
#-->
|
#-->
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.el-drawer__body {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
.my-drawer .el-col-4 {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.my-drawer .el-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.courseTimeButton {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
|
|||||||
@@ -0,0 +1,231 @@
|
|||||||
|
<!--#include('courseTime.js'){}#-->
|
||||||
|
const basicForm = {
|
||||||
|
template: /*language=HTML*/ `
|
||||||
|
<div>
|
||||||
|
<el-form label-width="120px" :model="formData" ref="form" :rules="rules">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="courseName" label="课程名称">
|
||||||
|
<el-input v-model="formData.courseName" placeholder="请输入课程名称"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="courseType" label="课程类型">
|
||||||
|
<el-select v-model="formData.courseType" placeholder="请选择课程类型" style="width: 100%" clearable filterable>
|
||||||
|
<el-option v-for="item in typeOptions" :key="item.id" :label="item.typeName"
|
||||||
|
:value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="coursePeopleNumber" label="课程人数">
|
||||||
|
<el-input v-model="formData.coursePeopleNumber" placeholder="请输入课程人数"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="courseReservedNumber" label="预留名额">
|
||||||
|
<el-input v-model="formData.courseReservedNumber" placeholder="请输入预留名额" type="number"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="campus" label="校区">
|
||||||
|
<el-select v-model="formData.campus" style="width: 100%" placeholder="请选择校区" clearable filterable>
|
||||||
|
<el-option :label="item.name" :value="item.name" :key="item.code" v-for="item in dict.type.USER_CAMPUS"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="courseLocation" label="上课地点">
|
||||||
|
<el-input v-model="formData.courseLocation" placeholder="请输入上课地点"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="courseInstructor" label="负责人">
|
||||||
|
<el-select v-model="formData.courseInstructor" placeholder="请选择负责人" style="width: 100%" clearable filterable>
|
||||||
|
<el-option v-for="item in teacherOptions" :key="item.id" :label="item.name"
|
||||||
|
:value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="assort" label="分类标识">
|
||||||
|
<el-input v-model="formData.assort" placeholder="请输入分类标识"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="hostUnionId" label="承办工会">
|
||||||
|
<el-select v-model="formData.hostUnionId" placeholder="请选择承办工会" style="width: 100%" clearable filterable>
|
||||||
|
<el-option :label="item.name" :value="item.id" :key="item.id"
|
||||||
|
v-for="item in unionList"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="interTime" label="对内报名时间">
|
||||||
|
<el-date-picker
|
||||||
|
placeholder="请选择对内报名时间"
|
||||||
|
style="width: 100%"
|
||||||
|
type="datetime"
|
||||||
|
v-model="formData.interTime"
|
||||||
|
format="yyyy-MM-dd HH:mm"
|
||||||
|
value-format="yyyy-MM-dd HH:mm"
|
||||||
|
></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="timeList" label="课程时间">
|
||||||
|
<el-button type="primary" @click="openSetUpCourseTime" size="small">点击设置课程时间</el-button>
|
||||||
|
<span style="color: #c64120">您已设置{{ formData.timeList.length || 0 }}个课程时间</span>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="isMobileSign" label="是否签到">
|
||||||
|
<el-radio-group v-model="formData.isMobileSign" size="small">
|
||||||
|
<el-radio border :label="true">签到</el-radio>
|
||||||
|
<el-radio border :label="false">不签到</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="signType" label="签到方式" v-if="formData.isMobileSign === true">
|
||||||
|
<el-radio-group v-model="formData.signType" size="small">
|
||||||
|
<el-radio border :label="1">扫描二维码</el-radio>
|
||||||
|
<el-radio border :label="2">被扫</el-radio>
|
||||||
|
<el-radio border :label="3">GPS定位签到</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="courseLocationCoordinates" label="地点坐标" v-if="formData.isMobileSign === true && formData.signType === 3">
|
||||||
|
<el-button type="primary" @click="" size="small">点击设置地点坐标</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="isReceiveGift" label="是否领取礼品">
|
||||||
|
<el-radio-group v-model="formData.isReceiveGift" size="small">
|
||||||
|
<el-radio border :label="true">领取</el-radio>
|
||||||
|
<el-radio border :label="false">不领取</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="giftType" label="领取方式" v-if="formData.isReceiveGift === true">
|
||||||
|
<el-radio-group v-model="formData.giftType" size="small">
|
||||||
|
<el-radio border :label="1">扫描二维码</el-radio>
|
||||||
|
<el-radio border :label="2">面对面确认</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="reserveMode" label="报名方式">
|
||||||
|
<el-radio-group v-model="formData.reserveMode" size="small">
|
||||||
|
<el-radio border :label="1">报名人员减少模式</el-radio>
|
||||||
|
<el-radio border :label="2">候补模式</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="waitingNum" label="候补数量" v-if="formData.reserveMode === 2">
|
||||||
|
<el-input placeholder="请输入候补数量" v-model="formData.waitingNum" type="number"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item prop="introduce" label="详细信息">
|
||||||
|
<text-editor v-model="formData.introduce"></text-editor>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<div style="float: right; margin: 20px 0">
|
||||||
|
<el-button @click="$emit('refresh')">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submit">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<course-time ref="courseTimeRef"></course-time>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
dicts: ["USER_CAMPUS"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
courseReservedNumber: 0,
|
||||||
|
timeList: [],
|
||||||
|
unionLimit: [],
|
||||||
|
isMobileSign: false,
|
||||||
|
signType: 1,
|
||||||
|
isReceiveGift: false,
|
||||||
|
giftType: 1,
|
||||||
|
reserveMode: 1,
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
courseName: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
courseType: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
coursePeopleNumber: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
courseReservedNumber: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
campus: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
courseLocation: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
courseInstructor: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
timeList: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
isMobileSign: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
signType: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
isReceiveGift: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
giftType: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
reserveMode: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
waitingNum: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
courseLocationCoordinates: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||||
|
},
|
||||||
|
typeOptions: [],
|
||||||
|
teacherOptions: [],
|
||||||
|
unionList: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
"course-time": courseTime,
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onOpen(row) {
|
||||||
|
if(row && row.timeList) {
|
||||||
|
row.timeList = JSON.parse(row.timeList)
|
||||||
|
}
|
||||||
|
this.formData = clone(row)
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
const valid = await this.$refs["form"].validate()
|
||||||
|
if (valid) {
|
||||||
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
const formData = clone(this.formData)
|
||||||
|
formData.timeList = JSON.stringify(formData.timeList)
|
||||||
|
this.$axios.post('/platform/literacy/course/submit', formData).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.$emit('refresh')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openSetUpCourseTime() {
|
||||||
|
this.$refs.courseTimeRef.onOpen(this.formData)
|
||||||
|
},
|
||||||
|
async getTypeOptions() {
|
||||||
|
const resp = await this.$axios.post("/platform/literacy/type/getAllType")
|
||||||
|
this.typeOptions = resp.data
|
||||||
|
},
|
||||||
|
async getTeacherOptions() {
|
||||||
|
const resp = await this.$axios.post("/platform/literacy/teacher/queryTeachers")
|
||||||
|
this.teacherOptions = resp.data
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
await this.getTypeOptions()
|
||||||
|
await this.getTeacherOptions()
|
||||||
|
this.unionList = await this.$businessTool.listUnion()
|
||||||
|
|
||||||
|
},
|
||||||
|
style: /*language=CSS*/ `
|
||||||
|
|
||||||
|
`
|
||||||
|
}
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
const courseTime = {
|
||||||
|
template: /*language=HTML*/ `
|
||||||
|
<div>
|
||||||
|
<el-dialog :close-on-click-modal="false" :visible.sync="setUpCourseDialog" title="设置时间" width="60%" append-to-body>
|
||||||
|
<div style="color: red; margin-bottom: 10px">温馨提示:有人员报名后,禁止修改下列时间,如有修改,请联系管理员</div>
|
||||||
|
<div class="left-span-label">选择日期</div>
|
||||||
|
<el-date-picker
|
||||||
|
@change="setUpCourseDataChange"
|
||||||
|
placeholder="选择一个或多个日期"
|
||||||
|
style="width: 100%"
|
||||||
|
type="dates"
|
||||||
|
v-model="formData.setUpCourseData"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
></el-date-picker>
|
||||||
|
<div class="left-span-label">设置时间</div>
|
||||||
|
<el-row style="margin-bottom: 10px">
|
||||||
|
<el-time-select
|
||||||
|
:picker-options="{
|
||||||
|
start: '08:30',
|
||||||
|
step: '00:05',
|
||||||
|
end: '23:30'
|
||||||
|
}"
|
||||||
|
placeholder="开始时间"
|
||||||
|
size="mini"
|
||||||
|
v-model="courseTimeOneKeySet.startTime"
|
||||||
|
></el-time-select>
|
||||||
|
<el-time-select
|
||||||
|
:picker-options="{
|
||||||
|
start: '08:30',
|
||||||
|
step: '00:05',
|
||||||
|
end: '23:30'
|
||||||
|
}"
|
||||||
|
placeholder="结束时间"
|
||||||
|
size="mini"
|
||||||
|
v-model="courseTimeOneKeySet.endTime"
|
||||||
|
></el-time-select>
|
||||||
|
<el-button @click="oneKeySetStartEndTime" size="mini" type="primary">一键设置开始/结束时间</el-button>
|
||||||
|
<span style="color: #ac3111">报名人数是否限制:</span>
|
||||||
|
<el-radio-group size="mini" v-model="formData.courseIsLimitApply">
|
||||||
|
<el-radio-button :label="true">是</el-radio-button>
|
||||||
|
<el-radio-button :label="false">否</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table :data="formData.timeList">
|
||||||
|
<el-table-column label="日期">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<i class="el-icon-time"></i>
|
||||||
|
{{$moment(row.courseDate).format('YYYY-MM-DD')}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="开始时间">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<el-time-select
|
||||||
|
:picker-options="{
|
||||||
|
start: '08:30',
|
||||||
|
step: '00:05',
|
||||||
|
end: '23:30'
|
||||||
|
}"
|
||||||
|
placeholder="开始时间"
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="row.courseStartTime"
|
||||||
|
></el-time-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="结束时间">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<el-time-select
|
||||||
|
:picker-options="{
|
||||||
|
start: '08:30',
|
||||||
|
step: '00:05',
|
||||||
|
end: '23:30'
|
||||||
|
}"
|
||||||
|
placeholder="结束时间"
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="row.courseEndTime"
|
||||||
|
></el-time-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<template v-if="formData.courseIsLimitApply">
|
||||||
|
<el-table-column label="人数限制">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<el-input-number v-model="row.courseLimitNum" :min="1" :max="1000"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="限制报名个数"></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<el-table-column label="操作" width="260">
|
||||||
|
<template v-slot="{row,$index}">
|
||||||
|
<el-button
|
||||||
|
@click="formData.timeList.splice($index,0,{courseDate:row.courseDate,courseStartTime:'',courseEndTime:''})"
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
|
新增同天时段
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="removeSetUpTableCourseRow(row,$index)" size="small" type="danger">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-row class="mt20" justify="end" type="flex">
|
||||||
|
<el-button @click="doConfirmSetUpCourse" type="primary">确定</el-button>
|
||||||
|
</el-row>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
setUpCourseDialog: false,
|
||||||
|
formData: {},
|
||||||
|
courseTimeOneKeySet: {
|
||||||
|
startTime: "",
|
||||||
|
endTime: ""
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
removeSetUpTableCourseRow(row, index) {
|
||||||
|
this.formData.timeList.splice(index, 1)
|
||||||
|
//培训时间列表日期数组
|
||||||
|
const courseDateArray = this.formData.timeList.map((v) =>
|
||||||
|
this.$moment(v.courseDate).format("YYYY-MM-DD")
|
||||||
|
)
|
||||||
|
//选择课程日期数组
|
||||||
|
const scdList = this.formData.setUpCourseData
|
||||||
|
this.formData.setUpCourseData = scdList.filter((v) => {
|
||||||
|
return courseDateArray.includes(this.$moment(v).format("YYYY-MM-DD"))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
oneKeySetStartEndTime() {
|
||||||
|
const { startTime, endTime } = this.courseTimeOneKeySet
|
||||||
|
this.formData.timeList.forEach((v) => {
|
||||||
|
this.$set(v, "courseStartTime", startTime)
|
||||||
|
this.$set(v, "courseEndTime", endTime)
|
||||||
|
})
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
|
setUpCourseDataChange(val) {
|
||||||
|
if (!val) {
|
||||||
|
this.formData.timeList = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//培训时间日期Set
|
||||||
|
if (this.formData.timeList === undefined) {
|
||||||
|
this.$set(this.formData, "timeList", [])
|
||||||
|
}
|
||||||
|
const ctList = new Set(
|
||||||
|
this.formData.timeList.map((v) => this.$moment(v.courseDate).format("YYYY-MM-DD"))
|
||||||
|
)
|
||||||
|
val.forEach((v) => {
|
||||||
|
if (!ctList.has(v)) {
|
||||||
|
this.formData.timeList.push({
|
||||||
|
courseDate: v,
|
||||||
|
courseTime: null
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.formData.timeList = this.formData.timeList.filter((v) => {
|
||||||
|
return val.includes(this.$moment(v.courseDate).format("YYYY-MM-DD"))
|
||||||
|
})
|
||||||
|
this.formData.timeList.sort((a, b) => {
|
||||||
|
return Date.parse(a["courseDate"]) - Date.parse(b["courseDate"])
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//设置课程时间确定
|
||||||
|
doConfirmSetUpCourse() {
|
||||||
|
const courseTableData = this.formData.timeList
|
||||||
|
if (courseTableData.length === 0) {
|
||||||
|
this.$message.warning("请填写时间!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (courseTableData && courseTableData.length > 0) {
|
||||||
|
const valid = courseTableData.every((v) => v.courseStartTime && v.courseEndTime && v.courseStartTime < v.courseEndTime)
|
||||||
|
if (!valid) {
|
||||||
|
this.$message.warning("时间填写不完整或者有误!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.setUpCourseDialog = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onOpen(formData) {
|
||||||
|
this.formData = formData
|
||||||
|
this.setUpCourseDialog = true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
style: /*language=CSS*/ `
|
||||||
|
|
||||||
|
`
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="课程名称:">
|
<search-item label="课程名称:">
|
||||||
<el-input clearable placeholder="请输入课程名称" v-model="pageForm.courseName"></el-input>
|
<el-input clearable placeholder="请输入课程名称" v-model="pageForm.searchKeyword"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="课程类型:">
|
<search-item label="课程类型:">
|
||||||
<el-select clearable filterable placeholder="请选择课程类型" style="width: 100%"
|
<el-select clearable filterable placeholder="请选择课程类型" style="width: 100%"
|
||||||
@@ -50,8 +50,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="序号" type="index" :index="indexMethod" width="60"></el-table-column>
|
<el-table-column label="序号" type="index" :index="indexMethod" width="60"></el-table-column>
|
||||||
<el-table-column label="课程名称" prop="courseName"></el-table-column>
|
<el-table-column label="课程名称" prop="courseName"></el-table-column>
|
||||||
<el-table-column label="类型名称" prop="typeName"></el-table-column>
|
<el-table-column label="类型名称" prop="typeName"></el-table-column>
|
||||||
<el-table-column label="课程人数" prop="peopleNumber"></el-table-column>
|
<el-table-column label="课程人数" prop="coursePeopleNumber"></el-table-column>
|
||||||
<el-table-column label="预留人数" prop="reservedNumber"></el-table-column>
|
<el-table-column label="预留人数" prop="courseReservedNumber"></el-table-column>
|
||||||
<el-table-column label="上课地点" prop="courseLocation"></el-table-column>
|
<el-table-column label="上课地点" prop="courseLocation"></el-table-column>
|
||||||
<el-table-column label="课程讲师" prop="teacherName"></el-table-column>
|
<el-table-column label="课程讲师" prop="teacherName"></el-table-column>
|
||||||
<el-table-column label="操作" width="230px">
|
<el-table-column label="操作" width="230px">
|
||||||
@@ -67,15 +67,17 @@ layout("/layouts/platform.html"){
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #edit>
|
<template #edit>
|
||||||
|
<basic-form ref="formRef" @refresh="refresh"></basic-form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #view>
|
<template #view>
|
||||||
|
<info ref="infoRef"></info>
|
||||||
</template>
|
</template>
|
||||||
</guava>
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
|
<!--#include('basicForm.js'){}#-->
|
||||||
|
<!--#include('info.js'){}#-->
|
||||||
new Vue({
|
new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
@@ -86,15 +88,47 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
"basic-form": basicForm,
|
||||||
|
"info": info,
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onAdd() {},
|
onAdd() {
|
||||||
onView(row) {},
|
this.$refs.guava.edit(() => {
|
||||||
onEdit(row) {},
|
this.$refs.formRef.onOpen()
|
||||||
onDelete(row) {},
|
})
|
||||||
|
},
|
||||||
|
onView(row) {
|
||||||
|
this.$refs.guava.view(() => {
|
||||||
|
this.$refs.infoRef.onOpen(row)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onEdit(row) {
|
||||||
|
this.$refs.guava.edit(() => {
|
||||||
|
this.$refs.formRef.onOpen(row)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onDelete(row) {
|
||||||
|
this.$confirm("您确定要删除吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
$.post("/platform/literacy/course/delete", { id: row.id }).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
|
},
|
||||||
|
refresh() {
|
||||||
|
this.pageData()
|
||||||
|
this.$refs.guava.index()
|
||||||
|
},
|
||||||
pageData() {
|
pageData() {
|
||||||
this.$axios.post("/platform/seniorUniversity/course/pageData", this.pageForm).then((res) => {
|
this.$axios.post("/platform/literacy/course/pageData", this.pageForm).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.tableData = res.data.list
|
this.tableData = res.data.list
|
||||||
this.pageForm.totalCount = res.data.totalCount
|
this.pageForm.totalCount = res.data.totalCount
|
||||||
@@ -113,6 +147,7 @@ layout("/layouts/platform.html"){
|
|||||||
async created() {
|
async created() {
|
||||||
this.typeOptions = await this.queryTypes()
|
this.typeOptions = await this.queryTypes()
|
||||||
this.teacherOptions = await this.queryTeachers()
|
this.teacherOptions = await this.queryTeachers()
|
||||||
|
this.pageData()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
const info = {
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<el-descriptions :column="2" border class="mt20">
|
||||||
|
<el-descriptions-item label="课程名称">
|
||||||
|
{{viewData.courseName}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="课程类型">
|
||||||
|
{{viewData.typeName}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="课程人数">
|
||||||
|
{{viewData.coursePeopleNumber}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="预留人数">
|
||||||
|
{{viewData.courseReservedNumber}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="校区">
|
||||||
|
{{viewData.campus}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="上课地点">
|
||||||
|
{{viewData.courseLocation}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="负责人">
|
||||||
|
{{viewData.teacherName}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="分类标识">
|
||||||
|
{{viewData.assort}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="承办工会">
|
||||||
|
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="对内报名时间">
|
||||||
|
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="是否签到">
|
||||||
|
{{viewData.isMobileSign ? '签到' : '不签到'}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item v-if="viewData.isMobileSign === true" label="签到方式">
|
||||||
|
<span v-if="viewData.signType === 1">扫描二维码</span>
|
||||||
|
<span v-if="viewData.signType === 2">被扫</span>
|
||||||
|
<span v-if="viewData.signType === 3">GPS签到</span>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="是否领取礼品">
|
||||||
|
{{viewData.isReceiveGift ? '领取' : '不领取'}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item v-if="viewData.isReceiveGift === true" label="领取方式">
|
||||||
|
<span v-if="viewData.giftType === 1">扫描二维码</span>
|
||||||
|
<span v-if="viewData.signType === 2">面对面确认</span>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="报名方式">
|
||||||
|
{{viewData.reserveMode ? '报名人员减少模式' : '候补模式'}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item v-if="viewData.reserveMode === 2" label="候补数量">
|
||||||
|
{{viewData.waitingNum}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="时间列表" :span="2">
|
||||||
|
<el-table :data="viewData.timeList" max-height="500" size="mini">
|
||||||
|
<el-table-column type="index" label="序号" prop="index" width="60"></el-table-column>
|
||||||
|
<el-table-column label="课程日期" prop="courseDate"></el-table-column>
|
||||||
|
<el-table-column label="开始时间" prop="courseStartTime"></el-table-column>
|
||||||
|
<el-table-column label="结束时间" prop="courseEndTime"></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
viewData: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onOpen(row) {
|
||||||
|
if(row && row.timeList) {
|
||||||
|
row.timeList = JSON.parse(row.timeList)
|
||||||
|
}
|
||||||
|
this.viewData = clone(row)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -158,7 +158,9 @@ const basicForm = {
|
|||||||
|
|
||||||
<el-table-column :label="trainType + '名称'" prop="courseName">
|
<el-table-column :label="trainType + '名称'" prop="courseName">
|
||||||
<template v-slot="{row}">
|
<template v-slot="{row}">
|
||||||
<el-input size="small" v-model="row.courseName" :placeholder="'请输入' + trainType + '名称'"></el-input>
|
<el-select size="small" v-model="row.courseId" allow-create filterable>
|
||||||
|
<el-option :label="item.courseName" :value="item.id" :key="item.id" v-for="item in sourceCourseList"></el-option>
|
||||||
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
@@ -331,6 +333,7 @@ const basicForm = {
|
|||||||
},
|
},
|
||||||
campusList: [],
|
campusList: [],
|
||||||
courseTypeList: [],
|
courseTypeList: [],
|
||||||
|
sourceCourseList: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
@@ -566,10 +569,15 @@ const basicForm = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
async querySourceCourses() {
|
||||||
|
const resp = await this.$axios.post("/platform/literacy/course/querySourceCourses", {})
|
||||||
|
return resp.data
|
||||||
|
},
|
||||||
async initData(row) {
|
async initData(row) {
|
||||||
this.activityGroupList = await this.getActivityGroup()
|
this.activityGroupList = await this.getActivityGroup()
|
||||||
this.historicalActList = await this.getHistoricalActList()
|
this.historicalActList = await this.getHistoricalActList()
|
||||||
this.courseTypeList = await this.getAllType()
|
this.courseTypeList = await this.getAllType()
|
||||||
|
this.sourceCourseList = await this.querySourceCourses()
|
||||||
await this.init(row)
|
await this.init(row)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -3,7 +3,18 @@ layout("/layouts/platform.html"){
|
|||||||
#-->
|
#-->
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.el-drawer__body {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
.my-drawer .el-col-4 {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.my-drawer .el-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.courseTimeButton {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
|
|||||||
Reference in New Issue
Block a user