commit
This commit is contained in:
+9
@@ -1,6 +1,8 @@
|
|||||||
package io.v.nutz.zhgh.staffmanage.sourcechange.service;
|
package io.v.nutz.zhgh.staffmanage.sourcechange.service;
|
||||||
|
|
||||||
import io.v.nutz.base.service.BaseService;
|
import io.v.nutz.base.service.BaseService;
|
||||||
|
import io.v.nutz.sys.models.User;
|
||||||
|
import io.v.nutz.zhgh.data.model.UserHistory;
|
||||||
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -25,4 +27,11 @@ public interface SourceChangeManageService extends BaseService<SourceChangeMiddl
|
|||||||
* 发送消息给新入职的老师,提醒可以入会
|
* 发送消息给新入职的老师,提醒可以入会
|
||||||
*/
|
*/
|
||||||
void sendMsgToNewTeacher(SourceChangeMiddleTable middleTable);
|
void sendMsgToNewTeacher(SourceChangeMiddleTable middleTable);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果有单位异动的,找出异动前和异动后的分工会,发送消息提醒两个分工会的会员管理员
|
||||||
|
* 如果在同一个分工会下异动,则只发送一条消息
|
||||||
|
*/
|
||||||
|
void sendUnitChangeTeacher(SourceChangeMiddleTable middleTable, UserHistory history);
|
||||||
}
|
}
|
||||||
|
|||||||
+85
@@ -30,6 +30,8 @@ import org.nutz.aop.interceptor.ioc.TransAop;
|
|||||||
import org.nutz.dao.Chain;
|
import org.nutz.dao.Chain;
|
||||||
import org.nutz.dao.Cnd;
|
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.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;
|
||||||
@@ -233,12 +235,22 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
|
|||||||
|
|
||||||
dao().update(SourceChangeMiddleTable.class, Chain.make("isOperate", 2), Cnd.where("id", "=", middleTable.getId()));
|
dao().update(SourceChangeMiddleTable.class, Chain.make("isOperate", 2), Cnd.where("id", "=", middleTable.getId()));
|
||||||
|
|
||||||
|
sysUserService.deleteCacheAndUpdate(userId);
|
||||||
sysUserService.clearCache();
|
sysUserService.clearCache();
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
|
|
||||||
|
// 如果有单位异动,发送消息提醒分工会
|
||||||
|
// if (middleTable.getChangeTypes().contains(MemberChangeType.UNIT_CHANGE.name())){
|
||||||
|
// sendUnitChangeTeacher(middleTable, history);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送入会邀请
|
||||||
|
* @param middleTable
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void sendMsgToNewTeacher(SourceChangeMiddleTable middleTable) {
|
public void sendMsgToNewTeacher(SourceChangeMiddleTable middleTable) {
|
||||||
String context = "尊敬的%s老师,欢迎您加入杭州医学院大家庭,请您点击此条信息或登录“智慧工会”平台申请成为杭医工会会员!"
|
String context = "尊敬的%s老师,欢迎您加入杭州医学院大家庭,请您点击此条信息或登录“智慧工会”平台申请成为杭医工会会员!"
|
||||||
@@ -246,4 +258,77 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
|
|||||||
String link = Globals.AppDomain + "/platform/member/apply/submit/h5";
|
String link = Globals.AppDomain + "/platform/member/apply/submit/h5";
|
||||||
msgApi.sendMsg(List.of("DingTalk"), middleTable.getLoginname(), 2, "入会邀请", context, "", link);
|
msgApi.sendMsg(List.of("DingTalk"), middleTable.getLoginname(), 2, "入会邀请", context, "", link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果有单位异动的,找出异动前和异动后的分工会,发送消息提醒两个分工会的会员管理员
|
||||||
|
* 如果在同一个分工会下异动,则只发送一条消息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void sendUnitChangeTeacher(SourceChangeMiddleTable middleTable, UserHistory history) {
|
||||||
|
// 查询出异动前的工会
|
||||||
|
Sql beforeUnionSql = Sqls.create("select un.id,un.unionname from sys_union un left join sys_unit unit on unit.unionid where unit.id = @unitId")
|
||||||
|
.setParam("unitId", history.getUnitid());
|
||||||
|
beforeUnionSql.setCallback(Sqls.callback.map());
|
||||||
|
dao().execute(beforeUnionSql);
|
||||||
|
NutMap beforeUnionMap = (NutMap) beforeUnionSql.getResult();
|
||||||
|
|
||||||
|
|
||||||
|
// 查询出异动后的工会
|
||||||
|
Sql afterUnionSql = Sqls.create("select un.id,un.unionname from sys_union un left join sys_unit unit on unit.unionid where unit.id = @unitId")
|
||||||
|
.setParam("unitId", middleTable.getUnitid());
|
||||||
|
afterUnionSql.setCallback(Sqls.callback.map());
|
||||||
|
dao().execute(afterUnionSql);
|
||||||
|
NutMap afterUnionMap = (NutMap) afterUnionSql.getResult();
|
||||||
|
|
||||||
|
// 如果这两个单位归属的是不同的分工会,发送消息提醒两个分工会
|
||||||
|
if (!beforeUnionMap.getString("id").equals(afterUnionMap.getString("id"))) {
|
||||||
|
// 找到变更前的分工会会员管理员,发送消息提醒
|
||||||
|
Sql beforeUnionAdminSql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
u.loginname,
|
||||||
|
u.username
|
||||||
|
FROM
|
||||||
|
`user` u
|
||||||
|
LEFT JOIN `sys_user_role` userRole ON userRole.userId = u.id
|
||||||
|
LEFT JOIN sys_role role ON role.id = userRole.roleId
|
||||||
|
WHERE
|
||||||
|
role.`code` = 'BranchUnionMemberAdmin'
|
||||||
|
AND u.unionid = @unionId
|
||||||
|
""").setParam("unionId", beforeUnionMap.getString("id"));
|
||||||
|
List<NutMap> beforeMapList = commonService.listMap(beforeUnionAdminSql);
|
||||||
|
if (Lang.isNotEmpty(beforeMapList)) {
|
||||||
|
for (NutMap map : beforeMapList) {
|
||||||
|
String beforeContent = "尊敬的%s老师,根据学校最新人员信息调整,%s老师的工会关系已从您处调整至%s。特此告知,烦请知悉。祝您生活愉快!"
|
||||||
|
.formatted(map.getString("username"), middleTable.getUsername(), afterUnionMap.getString("unionname"));
|
||||||
|
// msgApi.sendMsg(List.of("DingTalk"), map.getString("loginname"), 1, "工会关系转出通知", beforeContent, "", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 找到变更后的分工会会员管理员,发送消息提醒
|
||||||
|
Sql afterUnionAdminSql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
u.loginname,
|
||||||
|
u.username
|
||||||
|
FROM
|
||||||
|
`user` u
|
||||||
|
LEFT JOIN `sys_user_role` userRole ON userRole.userId = u.id
|
||||||
|
LEFT JOIN sys_role role ON role.id = userRole.roleId
|
||||||
|
WHERE
|
||||||
|
role.`code` = 'BranchUnionMemberAdmin'
|
||||||
|
AND u.unionid = @unionId
|
||||||
|
""").setParam("unionId", afterUnionMap.getString("id"));
|
||||||
|
List<NutMap> afterMapList = commonService.listMap(afterUnionAdminSql);
|
||||||
|
|
||||||
|
if (Lang.isNotEmpty(afterMapList)) {
|
||||||
|
for (NutMap map : afterMapList) {
|
||||||
|
String afterContent = "尊敬的%s老师,根据学校最新人员信息调整,%s老师的工会关系已从%s调整至您处。特此告知,烦请知悉。祝您生活愉快!"
|
||||||
|
.formatted(map.getString("username"), middleTable.getUsername(), beforeUnionMap.getString("unionname"));
|
||||||
|
// msgApi.sendMsg(List.of("DingTalk"), map.getString("loginname"), 1, "工会关系转入通知", afterContent, "", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -101,6 +101,7 @@ public class TrainSignUpActivityApplyController {
|
|||||||
tsuc.isReceiveGift,
|
tsuc.isReceiveGift,
|
||||||
tsuc.giftType,
|
tsuc.giftType,
|
||||||
tsuc.reserveMode,
|
tsuc.reserveMode,
|
||||||
|
tsuc.remarks,
|
||||||
type.lxname
|
type.lxname
|
||||||
FROM
|
FROM
|
||||||
`train_sign_up_course` tsuc
|
`train_sign_up_course` tsuc
|
||||||
|
|||||||
+2
@@ -1,6 +1,8 @@
|
|||||||
package io.v.nutz.zhgh.trainSignUp.controller.manage;
|
package io.v.nutz.zhgh.trainSignUp.controller.manage;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.base.utils.DateUtil;
|
import io.v.nutz.base.utils.DateUtil;
|
||||||
|
|||||||
@@ -81,14 +81,14 @@ public class TrainSignUpActivity extends BaseModel implements Serializable, SysH
|
|||||||
private Integer limitNum;
|
private Integer limitNum;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.MYSQL_JSON)
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
@Comment("活动封面")
|
@Comment("活动封面")
|
||||||
private Sys_file cover;
|
private String cover;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.MYSQL_JSON)
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
@Comment("微信群二维码")
|
@Comment("微信群二维码")
|
||||||
private Sys_file wechat;
|
private String wechat;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.BOOLEAN)
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
@@ -139,7 +139,7 @@ public class TrainSignUpActivity extends BaseModel implements Serializable, SysH
|
|||||||
Sys_home_activity sysHomeActivity = new Sys_home_activity();
|
Sys_home_activity sysHomeActivity = new Sys_home_activity();
|
||||||
sysHomeActivity.setId(this.getId());
|
sysHomeActivity.setId(this.getId());
|
||||||
sysHomeActivity.setName(this.getActivityName());
|
sysHomeActivity.setName(this.getActivityName());
|
||||||
sysHomeActivity.setCover(this.getCover().getFilepath());
|
sysHomeActivity.setCover(this.getCover());
|
||||||
sysHomeActivity.setUrl("/platform/trainSingUp/manage/apply");
|
sysHomeActivity.setUrl("/platform/trainSingUp/manage/apply");
|
||||||
sysHomeActivity.setH5Url("/platform/mobile/trainSignUpActivity/trainInfo?activityId=" + this.getId() + "&endTime=" + DateUtil.format(this.getActivityEndTime(), "yyyy-MM-dd HH:mm:ss"));
|
sysHomeActivity.setH5Url("/platform/mobile/trainSignUpActivity/trainInfo?activityId=" + this.getId() + "&endTime=" + DateUtil.format(this.getActivityEndTime(), "yyyy-MM-dd HH:mm:ss"));
|
||||||
if (Lang.isNotEmpty(this.getActivitySignUpStartTime())) {
|
if (Lang.isNotEmpty(this.getActivitySignUpStartTime())) {
|
||||||
|
|||||||
@@ -143,6 +143,10 @@ public class TrainSignUpCourse extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
private String assort;
|
private String assort;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("详细内容备注")
|
||||||
|
@ColDefine(type = ColType.TEXT)
|
||||||
|
private String remarks;
|
||||||
|
|
||||||
private String courseTimeName;
|
private String courseTimeName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,6 +153,15 @@ layout("/mobile/platform.html"){
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.remark-content{
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.remark-content *{
|
||||||
|
max-width: 100%!important;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<van-sticky>
|
<van-sticky>
|
||||||
@@ -213,7 +222,7 @@ layout("/mobile/platform.html"){
|
|||||||
<template v-else>
|
<template v-else>
|
||||||
<span v-if="o.courseTimeList && o.courseTimeList.length > 1" @click="trainClick(o)"
|
<span v-if="o.courseTimeList && o.courseTimeList.length > 1" @click="trainClick(o)"
|
||||||
style="color: #1867b0">点我查看</span>
|
style="color: #1867b0">点我查看</span>
|
||||||
<span @click="trainClick(o)" v-if="o.courseTimeList && o.courseTimeList.length === 1"
|
<span @click.stop="trainClick(o)" v-if="o.courseTimeList && o.courseTimeList.length === 1"
|
||||||
style="color: #1867b0">
|
style="color: #1867b0">
|
||||||
{{o.courseTimeList[0].courseStartTime.substring(11, 19) + ' ~ ' + o.courseTimeList[0].courseEndTime.substring(11, 19)}}
|
{{o.courseTimeList[0].courseStartTime.substring(11, 19) + ' ~ ' + o.courseTimeList[0].courseEndTime.substring(11, 19)}}
|
||||||
</span>
|
</span>
|
||||||
@@ -225,6 +234,12 @@ layout("/mobile/platform.html"){
|
|||||||
<span style="color: #1867b0">{{o.courseTimeName}}</span>
|
<span style="color: #1867b0">{{o.courseTimeName}}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-if="o.remarks">
|
||||||
|
<div>
|
||||||
|
<span class="train-title">详细信息:</span>
|
||||||
|
<span @click.stop="showRemark(o)" style="color: #1867b0">点我查看</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<div>
|
<div>
|
||||||
<span @click.stop="showPic(FILE_DOMAIN + '/fileStreamPreview?id=' + tableData.wechat.id)"
|
<span @click.stop="showPic(FILE_DOMAIN + '/fileStreamPreview?id=' + tableData.wechat.id)"
|
||||||
v-if="o.isSign === true && tableData.wechat"
|
v-if="o.isSign === true && tableData.wechat"
|
||||||
@@ -354,6 +369,11 @@ layout("/mobile/platform.html"){
|
|||||||
</van-popup>
|
</van-popup>
|
||||||
|
|
||||||
|
|
||||||
|
<van-action-sheet v-model="remarkShow" title="详情" >
|
||||||
|
<div class="remark-content" v-html="courseRemark" @click="remarkClick"></div>
|
||||||
|
</van-action-sheet>
|
||||||
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<van-tabbar v-model="tarBarActive">
|
<van-tabbar v-model="tarBarActive">
|
||||||
<van-tabbar-item icon="home-o" replace @click="pjaxReplace('/platform/mobile/trainSignUpActivity/trainList')">活动报名</van-tabbar-item>
|
<van-tabbar-item icon="home-o" replace @click="pjaxReplace('/platform/mobile/trainSignUpActivity/trainList')">活动报名</van-tabbar-item>
|
||||||
@@ -399,6 +419,9 @@ layout("/mobile/platform.html"){
|
|||||||
|
|
||||||
showCoursePicker: false,
|
showCoursePicker: false,
|
||||||
courseTimeSelectList: [],
|
courseTimeSelectList: [],
|
||||||
|
|
||||||
|
remarkShow: false,
|
||||||
|
courseRemark: '',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
@@ -427,8 +450,12 @@ layout("/mobile/platform.html"){
|
|||||||
+ ",<span style='color: red'>候补余" + lave2 + "</span>/" + o.courseReservedNumber + "人)"
|
+ ",<span style='color: red'>候补余" + lave2 + "</span>/" + o.courseReservedNumber + "人)"
|
||||||
return str
|
return str
|
||||||
} else {
|
} else {
|
||||||
let lave = o.coursePeopleNumber - (o.hasRegisterNum + o.courseReservedNumber)
|
if (Number(o.coursePeopleNumber) >= 1000) {
|
||||||
return "(<span style='color: red'>余" + lave +"</span>/" + o.coursePeopleNumber + "人)"
|
return "(<span style='color: #ff8400'>无名额限制</span>/已报<span style='color: red'>" + o.hasRegisterNum + "</span>人)"
|
||||||
|
} else {
|
||||||
|
let lave = o.coursePeopleNumber - (o.hasRegisterNum + o.courseReservedNumber)
|
||||||
|
return "(<span style='color: red'>余" + lave +"</span>/" + o.coursePeopleNumber + "人)"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getCourseTypeName(o) {
|
getCourseTypeName(o) {
|
||||||
@@ -728,6 +755,16 @@ layout("/mobile/platform.html"){
|
|||||||
}
|
}
|
||||||
this.popupShow = true
|
this.popupShow = true
|
||||||
},
|
},
|
||||||
|
showRemark(o){
|
||||||
|
this.remarkShow = true
|
||||||
|
this.courseRemark = o.remarks
|
||||||
|
},
|
||||||
|
remarkClick(event){
|
||||||
|
//如果点击的是图片
|
||||||
|
if(event.target.tagName === 'IMG'){
|
||||||
|
vant.ImagePreview([event.target.src])
|
||||||
|
}
|
||||||
|
},
|
||||||
initMap(o) {
|
initMap(o) {
|
||||||
if (o.courseLocationCoordinates && o.courseLocationCoordinates.length < 2) {
|
if (o.courseLocationCoordinates && o.courseLocationCoordinates.length < 2) {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -110,9 +110,9 @@ layout("/mobile/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
<div @click="welfareClick(o)">
|
<div @click="welfareClick(o)">
|
||||||
<div>
|
<div>
|
||||||
<van-image :src="CREATE_PREVIEW_URL(o.cover.id)"
|
<van-image :src="CREATE_PREVIEW_URL(o.cover)"
|
||||||
style="display: contents"
|
style="display: contents"
|
||||||
v-if="o.cover && o.cover.filepath"></van-image>
|
v-if="o.cover"></van-image>
|
||||||
<van-image src=""
|
<van-image src=""
|
||||||
style="display: contents"
|
style="display: contents"
|
||||||
v-else></van-image>
|
v-else></van-image>
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
courseIndex: 0,
|
courseIndex: 0,
|
||||||
setUpCourseDialog: false,
|
setUpCourseDialog: false,
|
||||||
|
remarkIndex: 0,
|
||||||
|
setUpRemarkDialog: false,
|
||||||
unionLimitIndex: 0,
|
unionLimitIndex: 0,
|
||||||
setUpUnionLimitDialog: false,
|
setUpUnionLimitDialog: false,
|
||||||
viewMapDialog: false,
|
viewMapDialog: false,
|
||||||
@@ -227,6 +229,10 @@ layout("/layouts/platform.html"){
|
|||||||
this.courseIndex = index
|
this.courseIndex = index
|
||||||
this.setUpCourseDialog = true
|
this.setUpCourseDialog = true
|
||||||
},
|
},
|
||||||
|
openSetUpCourseRemarks(index) {
|
||||||
|
this.remarkIndex = index
|
||||||
|
this.setUpRemarkDialog = true
|
||||||
|
},
|
||||||
//打开设置分工会人数限制
|
//打开设置分工会人数限制
|
||||||
async openSetUpUnionLimit(index) {
|
async openSetUpUnionLimit(index) {
|
||||||
this.unionLimitIndex = index
|
this.unionLimitIndex = index
|
||||||
|
|||||||
@@ -308,6 +308,12 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="详细信息" prop="remarks">
|
||||||
|
<template scope="{row}">
|
||||||
|
<el-button type="text" @click="openViewRemark(row)">点我查看详情</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column align="center" label="操作" width="150px">
|
<el-table-column align="center" label="操作" width="150px">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- <el-button type="primary" size="small">查看信息</el-button>-->
|
<!-- <el-button type="primary" size="small">查看信息</el-button>-->
|
||||||
@@ -447,6 +453,13 @@ layout("/layouts/platform.html"){
|
|||||||
<el-button type="primary" @click="doSubmit">提 交</el-button>
|
<el-button type="primary" @click="doSubmit">提 交</el-button>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog :visible.sync="remarkShow" title="详细信息" width="50%" append-to-body>
|
||||||
|
<div class="text-center" v-html="courseRemark"></div>
|
||||||
|
<el-row type="flex" justify="end" style="margin-top: 20px">
|
||||||
|
<el-button type="primary" @click="remarkShow = false">关 闭</el-button>
|
||||||
|
</el-row>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -465,9 +478,9 @@ layout("/layouts/platform.html"){
|
|||||||
activityList: [],
|
activityList: [],
|
||||||
courseTypeList: [],
|
courseTypeList: [],
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{prop: 'courseName', label: '名称', width: '350px'},
|
{prop: 'courseName', label: '名称', width: '250px'},
|
||||||
{prop: 'lxname', label: '类型', width: '80px'},
|
{prop: 'lxname', label: '类型', width: '70px'},
|
||||||
{prop: 'assort', label: '标识', width: '200px'},
|
{prop: 'assort', label: '标识', width: '150px'},
|
||||||
// {prop: 'coursePeopleNumber', label: '总人数', width: '80px'},
|
// {prop: 'coursePeopleNumber', label: '总人数', width: '80px'},
|
||||||
{prop: 'courseLocationCoordinates', label: '地点'},
|
{prop: 'courseLocationCoordinates', label: '地点'},
|
||||||
{prop: 'courseInstructor', label: '联系人'},
|
{prop: 'courseInstructor', label: '联系人'},
|
||||||
@@ -485,9 +498,20 @@ layout("/layouts/platform.html"){
|
|||||||
trainType: '培训班',
|
trainType: '培训班',
|
||||||
|
|
||||||
applyDialog: false,
|
applyDialog: false,
|
||||||
|
|
||||||
|
remarkShow: false,
|
||||||
|
courseRemark: '',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
openViewRemark(row){
|
||||||
|
if (!row.remarks) {
|
||||||
|
this.$message.warning('暂无详细信息')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.courseRemark = row.remarks
|
||||||
|
this.remarkShow = true
|
||||||
|
},
|
||||||
async doCancel(row){
|
async doCancel(row){
|
||||||
const msg = '您确认要取消' + row.courseName + '的报名吗?'
|
const msg = '您确认要取消' + row.courseName + '的报名吗?'
|
||||||
this.$confirm(msg, '提示', {
|
this.$confirm(msg, '提示', {
|
||||||
@@ -522,8 +546,12 @@ layout("/layouts/platform.html"){
|
|||||||
+ ",<span style='color: red'>候补余" + lave2 + "</span>/" + o.courseReservedNumber + "人)"
|
+ ",<span style='color: red'>候补余" + lave2 + "</span>/" + o.courseReservedNumber + "人)"
|
||||||
return str
|
return str
|
||||||
} else {
|
} else {
|
||||||
let lave = o.coursePeopleNumber - (o.hasRegisterNum + o.courseReservedNumber)
|
if (Number(o.coursePeopleNumber) >= 1000) {
|
||||||
return "(<span style='color: red'>余" + lave +"</span>/" + o.coursePeopleNumber + "人)"
|
return "(<span style='color: #ff8400'>无名额限制</span>/已报<span style='color: red'>" + o.hasRegisterNum + "</span>人)"
|
||||||
|
} else {
|
||||||
|
let lave = o.coursePeopleNumber - (o.hasRegisterNum + o.courseReservedNumber)
|
||||||
|
return "(<span style='color: red'>余" + lave +"</span>/" + o.coursePeopleNumber + "人)"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async doSubmit() {
|
async doSubmit() {
|
||||||
|
|||||||
@@ -144,19 +144,29 @@
|
|||||||
|
|
||||||
<el-form-item label="封面图片" prop="cover" :rules="{required:true,message: '请上传活动移动端封面图片', trigger: 'blur'}">
|
<el-form-item label="封面图片" prop="cover" :rules="{required:true,message: '请上传活动移动端封面图片', trigger: 'blur'}">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<file-upload ref="coverFileUpload" :files.sync="formData.cover" :max="1" :type="['jpg','jpeg','png','JPG','JPEG','PNG']">
|
<image-Upload :file-size="10" :file-type="['jpg','jpeg','png','JPG','JPEG','PNG']"
|
||||||
<template #el-upload__tip>
|
:height="70" :limit="1"
|
||||||
<div class="el-upload__tip" slot="tip">请上传一张jpg/png/jpeg等格式,且不大于2M的照片</div>
|
:width="140"
|
||||||
</template>
|
ref="coverFileUpload"
|
||||||
</file-upload>
|
v-model="formData.cover"></image-Upload>
|
||||||
|
<!-- <file-upload ref="coverFileUpload" :files.sync="formData.cover" :max="1" :type="['jpg','jpeg','png','JPG','JPEG','PNG']">-->
|
||||||
|
<!-- <template #el-upload__tip>-->
|
||||||
|
<!-- <div class="el-upload__tip" slot="tip">请上传一张jpg/png/jpeg等格式,且不大于2M的照片</div>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </file-upload>-->
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="微信群二维码" prop="wechat">
|
<el-form-item label="微信群二维码" prop="wechat">
|
||||||
<file-upload :files.sync="formData.wechat" :max="1" :type="['jpg','jpeg','png','JPG','JPEG','PNG']">
|
<image-Upload :file-size="10"
|
||||||
<template #el-upload__tip>
|
:file-type="['jpg','jpeg','png','JPG','JPEG','PNG']" :height="70"
|
||||||
<div slot="tip" class="el-upload__tip">请上传一张jpg/png/jpeg等格式,且不大于2M的照片</div>
|
:limit="1"
|
||||||
</template>
|
:width="140"
|
||||||
</file-upload>
|
v-model="formData.wechat"></image-Upload>
|
||||||
|
<!-- <file-upload :files.sync="formData.wechat" :max="1" :type="['jpg','jpeg','png','JPG','JPEG','PNG']">-->
|
||||||
|
<!-- <template #el-upload__tip>-->
|
||||||
|
<!-- <div slot="tip" class="el-upload__tip">请上传一张jpg/png/jpeg等格式,且不大于2M的照片</div>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </file-upload>-->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -170,7 +180,7 @@
|
|||||||
</vi-title2>
|
</vi-title2>
|
||||||
|
|
||||||
<el-table :data="formData.courseList">
|
<el-table :data="formData.courseList">
|
||||||
<el-table-column label="序号" prop="orderNum" width="120px">
|
<el-table-column fixed="left" label="序号" prop="orderNum" width="120px">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-input-number v-model="row.orderNum"
|
<el-input-number v-model="row.orderNum"
|
||||||
@change="courseOrderNumChange"
|
@change="courseOrderNumChange"
|
||||||
@@ -186,13 +196,13 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column :label="trainType + '名称'" prop="courseName">
|
<el-table-column fixed="left" :label="trainType + '名称'" prop="courseName" width="200">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-input v-model="row.courseName"></el-input>
|
<el-input v-model="row.courseName"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="类型" prop="courseType" sortable>
|
<el-table-column label="类型" prop="courseType" sortable width="200">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-select v-model="row.courseType" @change="(val) => {courseTypeChange(val, row)}">
|
<el-select v-model="row.courseType" @change="(val) => {courseTypeChange(val, row)}">
|
||||||
<el-option :label="c.lxname" :value="c.id" v-for="c in courseTypeList"></el-option>
|
<el-option :label="c.lxname" :value="c.id" v-for="c in courseTypeList"></el-option>
|
||||||
@@ -225,7 +235,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="校区" prop="campus">
|
<el-table-column label="校区" prop="campus" width="200">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-select v-model="row.campus" style="width: 100%">
|
<el-select v-model="row.campus" style="width: 100%">
|
||||||
<el-option :label="item.campus_name" :value="item.campus_name"
|
<el-option :label="item.campus_name" :value="item.campus_name"
|
||||||
@@ -234,31 +244,37 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column :label="trainType + '地点'" prop="courseLocation">
|
<el-table-column :label="trainType + '地点'" prop="courseLocation" width="250">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-input v-model="row.courseLocation"></el-input>
|
<el-input v-model="row.courseLocation"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column :label="trainType + '负责人'" prop="courseInstructor">
|
<el-table-column :label="trainType + '负责人'" prop="courseInstructor" width="200">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-input v-model="row.courseInstructor"></el-input>
|
<el-input v-model="row.courseInstructor"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="分类标识" prop="assort">
|
<el-table-column label="分类标识" prop="assort" width="200">
|
||||||
<template scope="{row}">
|
<template scope="{row}">
|
||||||
<el-input v-model="row.assort"></el-input>
|
<el-input v-model="row.assort"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column :label="trainType + '时间'">
|
<el-table-column :label="trainType + '时间'" width="200">
|
||||||
<template scope="scope">
|
<template scope="scope">
|
||||||
<el-button @click="openSetUpCourseTime(scope.$index)" type="text">设置{{ trainType }}时间</el-button>
|
<el-button @click="openSetUpCourseTime(scope.$index)" type="text">设置{{ trainType }}时间</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="操作" width="200">
|
<el-table-column label="详细信息" prop="remarks" width="120">
|
||||||
|
<template scope="scope">
|
||||||
|
<el-button @click="openSetUpCourseRemarks(scope.$index)" type="text">详细信息</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column fixed="right" label="操作" width="200">
|
||||||
<template scope="scope">
|
<template scope="scope">
|
||||||
<el-button @click="openMoreInfo(scope, scope.$index)"
|
<el-button @click="openMoreInfo(scope, scope.$index)"
|
||||||
size="mini" type="primary">
|
size="mini" type="primary">
|
||||||
@@ -415,6 +431,10 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog :close-on-click-modal="false" :visible.sync="setUpRemarkDialog" title="详细信息">
|
||||||
|
<text-editor v-model="formData.courseList[remarkIndex].remarks"></text-editor>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
<el-dialog :close-on-click-modal="false" :visible.sync="mapDialog" title="位置信息">
|
<el-dialog :close-on-click-modal="false" :visible.sync="mapDialog" title="位置信息">
|
||||||
<!--#include("/platform/trainSingUp/manage/include_activity_map.html"){}#-->
|
<!--#include("/platform/trainSingUp/manage/include_activity_map.html"){}#-->
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|||||||
Reference in New Issue
Block a user