commit
This commit is contained in:
+83
-1
@@ -1,18 +1,32 @@
|
||||
package com.budwk.app.zhgh.dayofficework.literacy.controller.manage;
|
||||
|
||||
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.result.Result;
|
||||
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 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.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.IocBean;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName LiteracyCourseController
|
||||
* @Author JyuHsin
|
||||
@@ -40,8 +54,76 @@ public class LiteracyCourseController {
|
||||
|
||||
@At
|
||||
@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();
|
||||
}
|
||||
|
||||
@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)
|
||||
public class LiteracyActivity extends BaseModel implements Serializable, SysHomeConvert {
|
||||
|
||||
@Name
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
+4
-2
@@ -15,8 +15,10 @@ import java.util.Date;
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class LiteracyActivityCourse {
|
||||
|
||||
@Name
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
+4
-3
@@ -13,9 +13,10 @@ import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class LiteracyBlackList {
|
||||
|
||||
@Name
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
+10
-122
@@ -16,10 +16,12 @@ import java.util.List;
|
||||
@Comment("职工素养的子活动")
|
||||
@Table
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class LiteracyCourse extends BaseModel implements Serializable {
|
||||
public class LiteracyCourse extends LiteracySourceCourse implements Serializable {
|
||||
|
||||
@Name
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@@ -27,137 +29,23 @@ public class LiteracyCourse extends BaseModel implements Serializable {
|
||||
@Comment("活动ID")
|
||||
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")
|
||||
private List<LiteracyActivityCourse> courseTimeList;
|
||||
|
||||
@Column
|
||||
@Comment("分工会人数限制")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<NutMap> unionLimit;
|
||||
|
||||
//已报人数
|
||||
private Integer hasRegisterNum;
|
||||
|
||||
private Boolean isBringFamily;
|
||||
|
||||
private Boolean isAddFamily;
|
||||
|
||||
//是否报过该课程
|
||||
private Boolean isSign;
|
||||
|
||||
//还能报该类型的课程吗
|
||||
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 String courseTimeName;
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -17,10 +17,10 @@ public class LiteracyMobileSignColumn {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Name
|
||||
@Comment("id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@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
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Name
|
||||
@Comment("id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
@@ -21,10 +21,10 @@ public class LiteracyType extends BaseModel implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Name
|
||||
@Comment("id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
+4
-4
@@ -17,10 +17,10 @@ public class LiteracyTypeLimit implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Name
|
||||
@Comment("id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
@@ -19,8 +19,10 @@ import java.util.List;
|
||||
@TableIndexes({@Index(name = "INDEX_TRAIN_SIGN_UP_USER_COURSEID", fields = {"courseId"}, unique = false)})
|
||||
public class LiteracyUser implements Serializable {
|
||||
|
||||
@Name
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
+4
-2
@@ -20,8 +20,10 @@ import java.util.Date;
|
||||
})
|
||||
public class LiteracyUserCourse implements Serializable {
|
||||
|
||||
@Name
|
||||
@PrevInsert(uu32 = true)
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
|
||||
@@ -3,7 +3,18 @@ layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<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>
|
||||
|
||||
<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">
|
||||
<search @search="doSearch">
|
||||
<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 label="课程类型:">
|
||||
<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="课程名称" prop="courseName"></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="reservedNumber"></el-table-column>
|
||||
<el-table-column label="课程人数" prop="coursePeopleNumber"></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="teacherName"></el-table-column>
|
||||
<el-table-column label="操作" width="230px">
|
||||
@@ -67,15 +67,17 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
|
||||
<template #edit>
|
||||
|
||||
<basic-form ref="formRef" @refresh="refresh"></basic-form>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
|
||||
<info ref="infoRef"></info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
<!--#include('basicForm.js'){}#-->
|
||||
<!--#include('info.js'){}#-->
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
@@ -86,15 +88,47 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
||||
"basic-form": basicForm,
|
||||
"info": info,
|
||||
},
|
||||
methods: {
|
||||
onAdd() {},
|
||||
onView(row) {},
|
||||
onEdit(row) {},
|
||||
onDelete(row) {},
|
||||
onAdd() {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.$refs.formRef.onOpen()
|
||||
})
|
||||
},
|
||||
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() {
|
||||
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) {
|
||||
this.tableData = res.data.list
|
||||
this.pageForm.totalCount = res.data.totalCount
|
||||
@@ -113,6 +147,7 @@ layout("/layouts/platform.html"){
|
||||
async created() {
|
||||
this.typeOptions = await this.queryTypes()
|
||||
this.teacherOptions = await this.queryTeachers()
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</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">
|
||||
<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>
|
||||
</el-table-column>
|
||||
|
||||
@@ -331,6 +333,7 @@ const basicForm = {
|
||||
},
|
||||
campusList: [],
|
||||
courseTypeList: [],
|
||||
sourceCourseList: [],
|
||||
}
|
||||
},
|
||||
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) {
|
||||
this.activityGroupList = await this.getActivityGroup()
|
||||
this.historicalActList = await this.getHistoricalActList()
|
||||
this.courseTypeList = await this.getAllType()
|
||||
this.sourceCourseList = await this.querySourceCourses()
|
||||
await this.init(row)
|
||||
},
|
||||
},
|
||||
|
||||
@@ -3,7 +3,18 @@ layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<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>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
|
||||
Reference in New Issue
Block a user