commit
This commit is contained in:
@@ -9,7 +9,7 @@ package io.v.nutz.base.utils;
|
|||||||
public class SmsTemplate {
|
public class SmsTemplate {
|
||||||
|
|
||||||
//邀请附议人发送消息
|
//邀请附议人发送消息
|
||||||
// public static final String inviteSecondedTemplate = "{}邀请您附议[{}]提案,请您通过门户网站或企业微信登录智慧工会平台进行附议。";
|
// public static final String inviteSecondedTemplate = "{}邀请您附议[{}]提案,请您通过门户网站或钉钉登录智慧工会平台进行附议。";
|
||||||
public static final String inviteSecondedTemplate = "{}代表,您好,{}代表的提案《{}》,邀请您作为附议人,请您登陆学校智慧工会系统-提案管理系统-附议提案进行附议,感谢您对教代会提案工作的大力支持!";
|
public static final String inviteSecondedTemplate = "{}代表,您好,{}代表的提案《{}》,邀请您作为附议人,请您登陆学校智慧工会系统-提案管理系统-附议提案进行附议,感谢您对教代会提案工作的大力支持!";
|
||||||
|
|
||||||
//附议人通过或者拒绝给提案人发送消息
|
//附议人通过或者拒绝给提案人发送消息
|
||||||
@@ -18,7 +18,7 @@ public class SmsTemplate {
|
|||||||
|
|
||||||
|
|
||||||
//附议完给团长发送消息
|
//附议完给团长发送消息
|
||||||
// public static final String TZ_TEMPLATE = "[{}]提案待您审核,请您通过门户网站或企业微信登录智慧工会平台进行审核";
|
// public static final String TZ_TEMPLATE = "[{}]提案待您审核,请您通过门户网站或钉钉登录智慧工会平台进行审核";
|
||||||
public static final String TZ_TEMPLATE = "{}代表团团长,您好,{}代表的提案《{}》,已经完成附议,请您登陆学校智慧工会系统-提案管理系统-附议提案进行审核,感谢您对教代会提案工作的大力支持!";
|
public static final String TZ_TEMPLATE = "{}代表团团长,您好,{}代表的提案《{}》,已经完成附议,请您登陆学校智慧工会系统-提案管理系统-附议提案进行审核,感谢您对教代会提案工作的大力支持!";
|
||||||
|
|
||||||
//团长审核给提案人发送消息
|
//团长审核给提案人发送消息
|
||||||
|
|||||||
+1
-1
@@ -72,7 +72,7 @@ public class ClubMyApplyController {
|
|||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
c.*,
|
c.*,
|
||||||
d.NAME AS typeName,
|
d.`name` AS typeName,
|
||||||
u.username,
|
u.username,
|
||||||
u.unitname as fzr_unit_name,
|
u.unitname as fzr_unit_name,
|
||||||
s.stateName,
|
s.stateName,
|
||||||
|
|||||||
+8
-1
@@ -112,7 +112,9 @@ public class ClubRegistApplyController {
|
|||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
u.loginname,
|
u.loginname,
|
||||||
u.username
|
u.username,
|
||||||
|
u.unionid,
|
||||||
|
u.unionname
|
||||||
FROM
|
FROM
|
||||||
`sys_user_role` userRole
|
`sys_user_role` userRole
|
||||||
LEFT JOIN sys_role role ON role.id = userRole.roleId
|
LEFT JOIN sys_role role ON role.id = userRole.roleId
|
||||||
@@ -123,6 +125,11 @@ public class ClubRegistApplyController {
|
|||||||
""").setParam("unionId", Vi.getUnionId());
|
""").setParam("unionId", Vi.getUnionId());
|
||||||
List<NutMap> list = memberCommonService.listMap(sql);
|
List<NutMap> list = memberCommonService.listMap(sql);
|
||||||
|
|
||||||
|
// 如果是基层单位申请,记录归属的协会
|
||||||
|
NutMap nutMap = list.stream().findFirst().orElse(NutMap.NEW());
|
||||||
|
club.setUnionId(nutMap.getString("unionid"));
|
||||||
|
club.setUnionName(nutMap.getString("unionname"));
|
||||||
|
|
||||||
List<String> unionLeaderLoginNames = list.stream().map(v -> v.getString("loginname")).toList();
|
List<String> unionLeaderLoginNames = list.stream().map(v -> v.getString("loginname")).toList();
|
||||||
//分工会审核
|
//分工会审核
|
||||||
ClubRegisterApplyToDoHandler.CREATE_UNION_TASK.exec(club, NutMap.NEW().addv("unionLeaderLoginNames", unionLeaderLoginNames));
|
ClubRegisterApplyToDoHandler.CREATE_UNION_TASK.exec(club, NutMap.NEW().addv("unionLeaderLoginNames", unionLeaderLoginNames));
|
||||||
|
|||||||
+4
-4
@@ -95,22 +95,22 @@ public class ClubXghReplyController {
|
|||||||
audit = dao.insert(audit);
|
audit = dao.insert(audit);
|
||||||
Sys_club club = dao.fetch(Sys_club.class, clubId);
|
Sys_club club = dao.fetch(Sys_club.class, clubId);
|
||||||
|
|
||||||
ClubRegisterApplyToDoHandler.COMPLETE_PROCESS.exec(club, NutMap.NEW().addv("nodeName", "校工会批复完成"));
|
ClubRegisterApplyToDoHandler.COMPLETE_PROCESS.exec(club, NutMap.NEW().addv("nodeName", "校工会审核完成"));
|
||||||
if (pass == 1) {
|
if (pass == 1) {
|
||||||
club.setState(ClubRegistAuditState.XGH_REJECTED);
|
club.setState(ClubRegistAuditState.XGH_REJECTED);
|
||||||
dao.clear(Sys_user_role.class, Cnd.where("stid", "=", clubId)
|
dao.clear(Sys_user_role.class, Cnd.where("stid", "=", clubId)
|
||||||
.and("roleid", "in", Lang.array(Roles.club01, Roles.club02, Roles.club03, Roles.club04)));
|
.and("roleid", "in", Lang.array(Roles.club01, Roles.club02, Roles.club03, Roles.club04)));
|
||||||
ClubRegisterApplyToDoHandler.REFUSE_UNION_TASK.exec(club, NutMap.NEW().addv("nodeName","校工会批复拒绝"));
|
ClubRegisterApplyToDoHandler.REFUSE_UNION_TASK.exec(club, NutMap.NEW().addv("nodeName","校工会审核拒绝"));
|
||||||
} else if (pass == 2) {
|
} else if (pass == 2) {
|
||||||
club.setState(ClubRegistAuditState.XGH_BACK_MODIFY);
|
club.setState(ClubRegistAuditState.XGH_BACK_MODIFY);
|
||||||
dao.clear(Sys_user_role.class, Cnd.where("stid", "=", clubId)
|
dao.clear(Sys_user_role.class, Cnd.where("stid", "=", clubId)
|
||||||
.and("roleid", "in", Lang.array(Roles.club01, Roles.club02, Roles.club03, Roles.club04)));
|
.and("roleid", "in", Lang.array(Roles.club01, Roles.club02, Roles.club03, Roles.club04)));
|
||||||
//退回修改
|
//退回修改
|
||||||
ClubRegisterApplyToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(club, NutMap.NEW().addv("nodeName","校工会批复退回修改"));
|
ClubRegisterApplyToDoHandler.CREATE_APPLY_RE_MODIFY_TASK.exec(club, NutMap.NEW().addv("nodeName","校工会退回修改"));
|
||||||
} else {
|
} else {
|
||||||
club.setState(ClubRegistAuditState.SCHOOL_PASS);
|
club.setState(ClubRegistAuditState.SCHOOL_PASS);
|
||||||
//审核通过
|
//审核通过
|
||||||
ClubRegisterApplyToDoHandler.COMPLETE_SCHOOL_TASK.exec(club, null);
|
ClubRegisterApplyToDoHandler.COMPLETE_SCHOOL_TASK.exec(club, NutMap.NEW().addv("nodeName","校工会审核通过"));
|
||||||
ClubRegisterApplyToDoHandler.COMPLETE_PROCESS.exec(club, null);
|
ClubRegisterApplyToDoHandler.COMPLETE_PROCESS.exec(club, null);
|
||||||
//审核通过加角色
|
//审核通过加角色
|
||||||
List<Sys_user_role> userRoles = new ArrayList<>();
|
List<Sys_user_role> userRoles = new ArrayList<>();
|
||||||
|
|||||||
@@ -0,0 +1,154 @@
|
|||||||
|
package io.v.nutz.task.job.proposal;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import io.v.nutz.base.utils.MsgApi;
|
||||||
|
import io.v.nutz.base.utils.Roles;
|
||||||
|
import io.v.nutz.sys.models.Sys_user;
|
||||||
|
import io.v.nutz.zhgh.jdh.model.cb.Jdh_jdhxx;
|
||||||
|
import io.v.nutz.zhgh.proposal.constants.ProposalState;
|
||||||
|
import io.v.nutz.zhgh.proposal.models.ProposalInfo;
|
||||||
|
import io.v.nutz.zhgh.proposal.models.ProposalSeconded;
|
||||||
|
import org.nutz.dao.Chain;
|
||||||
|
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.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
import org.quartz.Job;
|
||||||
|
import org.quartz.JobExecutionContext;
|
||||||
|
import org.quartz.JobExecutionException;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author zzr
|
||||||
|
* @name:ProposalPromptJob
|
||||||
|
* @Date 2025/4/22 10:03
|
||||||
|
* @注释 提案,邀请附议人,附议人附议,团长审核超过24小时提醒一次,超过三天提醒一次
|
||||||
|
*/
|
||||||
|
@IocBean
|
||||||
|
public class ProposalPromptJob implements Job {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Dao dao;
|
||||||
|
@Inject
|
||||||
|
private MsgApi msgApi;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||||
|
// 查询最新届次的教代会
|
||||||
|
Jdh_jdhxx jdhxx = dao.fetch(Jdh_jdhxx.class, Cnd.where("jdhkqzt", "=", 1).desc("jdhkqsj"));
|
||||||
|
|
||||||
|
// 当前时间
|
||||||
|
DateTime now = DateUtil.date();
|
||||||
|
// 邀请附议人链接
|
||||||
|
String unSubmitLinkUrl = "https://zhgh.hmc.edu.cn/mobile/proposal/compose";
|
||||||
|
// 附议人附议链接
|
||||||
|
String secondedLinkUrl = "https://zhgh.hmc.edu.cn/mobile/proposal/seconded";
|
||||||
|
// 团长审核链接
|
||||||
|
String delegationLinkUrl = "https://zhgh.hmc.edu.cn/mobile/proposal/delegation";
|
||||||
|
|
||||||
|
// 待邀请附议人的提案
|
||||||
|
List<ProposalInfo> unSubmitProposalInfos = dao.query(ProposalInfo.class,
|
||||||
|
Cnd.where("stateCode", "=", ProposalState.UNSUBMIT)
|
||||||
|
.and("teacherMeetingId", "=", jdhxx.getId()));
|
||||||
|
for (ProposalInfo info : unSubmitProposalInfos) {
|
||||||
|
DateTime createDate = DateUtil.date(info.getOpAt());
|
||||||
|
// 首次进来的时候,lastReminderTime 为空
|
||||||
|
DateTime lastReminderTime = DateUtil.date(info.getLastReminderTime());
|
||||||
|
|
||||||
|
// 判断是否过了24小时或三天,并且上次提醒时间是否为空或超过24小时/三天
|
||||||
|
if ((DateUtil.betweenDay(createDate, now, true) == 1 || DateUtil.betweenDay(createDate, now, true) == 3)
|
||||||
|
&& (lastReminderTime == null || DateUtil.betweenDay(lastReminderTime, now, true) >= 1)) {
|
||||||
|
Sys_user user = dao.fetch(Sys_user.class, Cnd.where("id", "=", info.getCreateUser()));
|
||||||
|
String content = StrUtil.format("{}代表,您好,您撰写的《{}》提案还未邀请附议人,请点击邀请!", user.getUsername(), info.getProposalName());
|
||||||
|
// msgApi.sendMsg(List.of("DingTalk"), user.getLoginname(), 2, "提案邀请附议人提醒", content, "", unSubmitLinkUrl);
|
||||||
|
|
||||||
|
// 更新 lastReminderTime 为当前时间
|
||||||
|
info.setLastReminderTime(now);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// dao.update(unSubmitProposalInfos);
|
||||||
|
|
||||||
|
|
||||||
|
// 附议人还没附议的提案
|
||||||
|
Sql noSecondedSql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
ps.*,
|
||||||
|
info.proposalName,
|
||||||
|
u.username,
|
||||||
|
u.loginname
|
||||||
|
FROM
|
||||||
|
`proposal_seconded` ps
|
||||||
|
LEFT JOIN proposal_info info ON info.id = ps.proposalId
|
||||||
|
LEFT JOIN sys_user u ON u.id = ps.seconderId
|
||||||
|
WHERE
|
||||||
|
ps.secondedTime IS NULL AND info.teacherMeetingId = @teacherMeetingId
|
||||||
|
GROUP BY
|
||||||
|
ps.id
|
||||||
|
""").setParam("teacherMeetingId", jdhxx.getId());
|
||||||
|
noSecondedSql.setCallback(Sqls.callback.maps());
|
||||||
|
dao.execute(noSecondedSql);
|
||||||
|
List<NutMap> noSecondedList = (List<NutMap>) noSecondedSql.getResult();
|
||||||
|
|
||||||
|
for (NutMap seconded : noSecondedList) {
|
||||||
|
DateTime createDate = DateUtil.parse(seconded.getString("inviteTime"));
|
||||||
|
DateTime lastReminderTime = DateUtil.parse(seconded.getString("lastReminderTime"));
|
||||||
|
|
||||||
|
// 判断是否过了24小时或三天,并且上次提醒时间是否为空或超过24小时/三天
|
||||||
|
if ((DateUtil.betweenDay(createDate, now, true) == 1 || DateUtil.betweenDay(createDate, now, true) == 3)
|
||||||
|
&& (lastReminderTime == null || DateUtil.betweenDay(lastReminderTime, now, true) >= 1)) {
|
||||||
|
String content = StrUtil.format("{}代表,您好,《{}》提案待您附议,请点击附议!",
|
||||||
|
seconded.getString("username"), seconded.getString("proposalName"));
|
||||||
|
// msgApi.sendMsg(List.of("DingTalk"), seconded.getString("loginname"), 2, "提案附议提醒", content, "", secondedLinkUrl);
|
||||||
|
|
||||||
|
// 更新 lastReminderTime 为当前时间
|
||||||
|
// dao.update(ProposalSeconded.class, Chain.make("lastReminderTime", now), Cnd.where("id", "=", seconded.getString("id")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 待团长审核的提案超过24小时提醒一次,超过三天提醒一次
|
||||||
|
Sql delegationSql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
info.*,
|
||||||
|
u.loginname,
|
||||||
|
u.username
|
||||||
|
FROM
|
||||||
|
proposal_info info
|
||||||
|
LEFT JOIN sys_user_role role ON role.dbtid = info.delegationId
|
||||||
|
AND role.jdhid = info.teacherMeetingId
|
||||||
|
AND role.roleId = @roleId
|
||||||
|
LEFT JOIN sys_user u ON u.id = role.userId
|
||||||
|
WHERE
|
||||||
|
info.stateCode = @stateCode
|
||||||
|
AND info.teacherMeetingId = @teacherMeetingId
|
||||||
|
AND info.delegationId IS NOT NULL
|
||||||
|
AND info.delegationAuditId IS NULL
|
||||||
|
""").setParam("roleId", Roles.DBT_TZ)
|
||||||
|
.setParam("stateCode", ProposalState.DELEGATION)
|
||||||
|
.setParam("teacherMeetingId", jdhxx.getId());
|
||||||
|
delegationSql.setCallback(Sqls.callback.maps());
|
||||||
|
dao.execute(delegationSql);
|
||||||
|
List<NutMap> delegationList = (List<NutMap>) delegationSql.getResult();
|
||||||
|
|
||||||
|
for (NutMap delegation : delegationList) {
|
||||||
|
DateTime createDate = DateUtil.parse(delegation.getString("secondReminderTime"));
|
||||||
|
DateTime lastReminderTime = DateUtil.parse(delegation.getString("lastDelegationReminderTime"));
|
||||||
|
|
||||||
|
// 判断是否过了24小时或三天,并且上次提醒时间是否为空或超过24小时/三天
|
||||||
|
if ((DateUtil.betweenDay(createDate, now, true) == 1 || DateUtil.betweenDay(createDate, now, true) == 3)
|
||||||
|
&& (lastReminderTime == null || DateUtil.betweenDay(lastReminderTime, now, true) >= 1)) {
|
||||||
|
String content = StrUtil.format("{}团长,您好,《{}》提案待您审核,请点击审核!",
|
||||||
|
delegation.getString("username"), delegation.getString("proposalName"));
|
||||||
|
// msgApi.sendMsg(List.of("DingTalk"), delegation.getString("loginname"), 2, "提案审核提醒", content, "", delegationLinkUrl);
|
||||||
|
}
|
||||||
|
// dao.update(ProposalInfo.class, Chain.make("lastDelegationReminderTime", now), Cnd.where("id", "=", delegation.getString("id")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -126,6 +126,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object queryUserByIds(String[] ids) {
|
public Object queryUserByIds(String[] ids) {
|
||||||
Sql sql = Sqls.create("select id,loginname,username,unitname,unionname,sex,mobile from user where id in (@id)");
|
Sql sql = Sqls.create("select id,loginname,username,unitname,unionname,sex,mobile from user where id in (@id)");
|
||||||
sql.setParam("id", ids);
|
sql.setParam("id", ids);
|
||||||
@@ -140,6 +141,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object queryUserById(String id) {
|
public Object queryUserById(String id) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
select
|
select
|
||||||
@@ -171,6 +173,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getCampus() {
|
public Object getCampus() {
|
||||||
return sysUnitService.list(Sqls.create("""
|
return sysUnitService.list(Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -189,6 +192,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object dictOptions(String code) {
|
public Object dictOptions(String code) {
|
||||||
return sysDictService.getSubListByCode(code);
|
return sysDictService.getSubListByCode(code);
|
||||||
}
|
}
|
||||||
@@ -200,6 +204,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getSystemNameByDict() {
|
public Object getSystemNameByDict() {
|
||||||
return sysDictService.query(Cnd.where("parentId", "=", DICT_SYSTEM_ID).and("disabled", "=", false).asc("location"));
|
return sysDictService.query(Cnd.where("parentId", "=", DICT_SYSTEM_ID).and("disabled", "=", false).asc("location"));
|
||||||
}
|
}
|
||||||
@@ -211,6 +216,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getJcByDict() {
|
public Object getJcByDict() {
|
||||||
return sysDictService.query(Cnd.where("parentId", "=", DICT_JC_ID).and("disabled", "=", false).asc("location"));
|
return sysDictService.query(Cnd.where("parentId", "=", DICT_JC_ID).and("disabled", "=", false).asc("location"));
|
||||||
}
|
}
|
||||||
@@ -222,6 +228,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getFileTypeByDict() {
|
public Object getFileTypeByDict() {
|
||||||
return sysDictService.query(Cnd.where("parentId", "=", DICT_FILETYPE_ID).and("disabled", "=", false).asc("location"));
|
return sysDictService.query(Cnd.where("parentId", "=", DICT_FILETYPE_ID).and("disabled", "=", false).asc("location"));
|
||||||
}
|
}
|
||||||
@@ -233,6 +240,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getJcgbJsByDict() {
|
public Object getJcgbJsByDict() {
|
||||||
return sysDictService.list(Sqls.create("SELECT\n" +
|
return sysDictService.list(Sqls.create("SELECT\n" +
|
||||||
"\tdict.id,\n" +
|
"\tdict.id,\n" +
|
||||||
@@ -256,6 +264,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getSpyJsByDict() {
|
public Object getSpyJsByDict() {
|
||||||
return sysDictService.list(Sqls.create("SELECT\n" +
|
return sysDictService.list(Sqls.create("SELECT\n" +
|
||||||
"\tdict.id,\n" +
|
"\tdict.id,\n" +
|
||||||
@@ -278,6 +287,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object welfareUnits() {
|
public Object welfareUnits() {
|
||||||
return sysWelfareUnitService.query(Cnd.orderBy().asc("welfare_unit_code"));
|
return sysWelfareUnitService.query(Cnd.orderBy().asc("welfare_unit_code"));
|
||||||
}
|
}
|
||||||
@@ -302,6 +312,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getDbt(String jdhId) {
|
public Object getDbt(String jdhId) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -327,6 +338,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object unions(@Param(value = "delegationId", required = false) String delegationId, boolean isPermission) {
|
public Object unions(@Param(value = "delegationId", required = false) String delegationId, boolean isPermission) {
|
||||||
if (Strings.isBlank(delegationId)) {
|
if (Strings.isBlank(delegationId)) {
|
||||||
Cnd cndX = Cnd.NEW();
|
Cnd cndX = Cnd.NEW();
|
||||||
@@ -349,6 +361,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object unionList(@Param(value = "unionId", required = false) String unionId) {
|
public Object unionList(@Param(value = "unionId", required = false) String unionId) {
|
||||||
if (Strings.isBlank(unionId)) {
|
if (Strings.isBlank(unionId)) {
|
||||||
return sysUnionService.query(Cnd.orderBy().asc("unioncode"));
|
return sysUnionService.query(Cnd.orderBy().asc("unioncode"));
|
||||||
@@ -380,12 +393,14 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object clubs() {
|
public Object clubs() {
|
||||||
return sysClubService.query(Cnd.where("state", "=", 930).asc("code"));
|
return sysClubService.query(Cnd.where("state", "=", 930).asc("code"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getGroup(@Param(value = "jdhId", required = false) String jdhId) {
|
public Object getGroup(@Param(value = "jdhId", required = false) String jdhId) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -402,6 +417,7 @@ public class ViCommonCon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getUnit(String unionid) {
|
public Object getUnit(String unionid) {
|
||||||
try {
|
try {
|
||||||
if (Strings.isBlank(unionid)) {
|
if (Strings.isBlank(unionid)) {
|
||||||
@@ -422,6 +438,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getClubsByRole() {
|
public Object getClubsByRole() {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
@@ -457,6 +474,7 @@ public class ViCommonCon {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getClubsByUser() {
|
public Object getClubsByUser() {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -484,6 +502,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getClubTypeByDict() {
|
public Object getClubTypeByDict() {
|
||||||
return sysDictService.query(Cnd.where("parentId", "=", DICT_CLUBTYPE_ID).and("disabled", "=", false).asc("location"));
|
return sysDictService.query(Cnd.where("parentId", "=", DICT_CLUBTYPE_ID).and("disabled", "=", false).asc("location"));
|
||||||
}
|
}
|
||||||
@@ -494,6 +513,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object units(@Param(value = "unionId", required = false) String unionId) {
|
public Object units(@Param(value = "unionId", required = false) String unionId) {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("unitlevel", "=", 2);
|
cnd.and("unitlevel", "=", 2);
|
||||||
@@ -519,6 +539,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getUnitsByUnions(@Param(value = "unionId", required = false) String[] unionId) {
|
public Object getUnitsByUnions(@Param(value = "unionId", required = false) String[] unionId) {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("unitlevel", "=", 2);
|
cnd.and("unitlevel", "=", 2);
|
||||||
@@ -544,6 +565,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object threeUnitsByUnionGroupOrUnitId(@Param(value = "unitId", required = false) String unitId,
|
public Object threeUnitsByUnionGroupOrUnitId(@Param(value = "unitId", required = false) String unitId,
|
||||||
@Param(value = "groupId", required = false) String groupId) {
|
@Param(value = "groupId", required = false) String groupId) {
|
||||||
if (Strings.isNotBlank(groupId)) {
|
if (Strings.isNotBlank(groupId)) {
|
||||||
@@ -561,6 +583,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getThreeUnitsByUnionGroupsOrUnitIds(@Param(value = "unitId", required = false) String[] unitId,
|
public Object getThreeUnitsByUnionGroupsOrUnitIds(@Param(value = "unitId", required = false) String[] unitId,
|
||||||
@Param(value = "groupId", required = false) String[] groupId) {
|
@Param(value = "groupId", required = false) String[] groupId) {
|
||||||
if (groupId != null && groupId.length > 0) {
|
if (groupId != null && groupId.length > 0) {
|
||||||
@@ -577,6 +600,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object unionGroupsByUnionId(@Param(value = "unionId", required = false) String unionId) {
|
public Object unionGroupsByUnionId(@Param(value = "unionId", required = false) String unionId) {
|
||||||
if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,flwyh01,H04")) {
|
if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,flwyh01,H04")) {
|
||||||
List<Sys_user_role> userRole = sysUserService.dao().query(Sys_user_role.class, Cnd.where("roleId", "=", Roles.ghxzzz)
|
List<Sys_user_role> userRole = sysUserService.dao().query(Sys_user_role.class, Cnd.where("roleId", "=", Roles.ghxzzz)
|
||||||
@@ -599,6 +623,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getUnionGroupsByUnions(@Param(value = "unionId", required = false) String[] unionId) {
|
public Object getUnionGroupsByUnions(@Param(value = "unionId", required = false) String[] unionId) {
|
||||||
if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,flwyh01,H04")) {
|
if (!ShiroUtil.hasAnyRoles("sysadmin,SchoolUnionAdmin,flwyh01,H04")) {
|
||||||
List<Sys_user_role> userRole = sysUserService.dao().query(Sys_user_role.class, Cnd.where("roleId", "=", Roles.ghxzzz)
|
List<Sys_user_role> userRole = sysUserService.dao().query(Sys_user_role.class, Cnd.where("roleId", "=", Roles.ghxzzz)
|
||||||
@@ -619,6 +644,7 @@ public class ViCommonCon {
|
|||||||
//协会负责人登录获取成员所在的单位
|
//协会负责人登录获取成员所在的单位
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getClubUnits() {
|
public Object getClubUnits() {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
select
|
select
|
||||||
@@ -637,6 +663,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object unionUnits() {
|
public Object unionUnits() {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("unitlevel", "=", 2);
|
cnd.and("unitlevel", "=", 2);
|
||||||
@@ -660,6 +687,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object searchUser(@Param(value = "query", required = false) String query,
|
public Object searchUser(@Param(value = "query", required = false) String query,
|
||||||
@Param(value = "unionId", required = false) String unionId,
|
@Param(value = "unionId", required = false) String unionId,
|
||||||
@Param(value = "unitId", required = false) String unitId,
|
@Param(value = "unitId", required = false) String unitId,
|
||||||
@@ -696,7 +724,7 @@ public class ViCommonCon {
|
|||||||
cnd.andEX("unit.unionid", "=", unionId);
|
cnd.andEX("unit.unionid", "=", unionId);
|
||||||
cnd.andEX("u.unitid", "=", unitId);
|
cnd.andEX("u.unitid", "=", unitId);
|
||||||
cnd.andEX("u.sex", "=", sex);
|
cnd.andEX("u.sex", "=", sex);
|
||||||
if (member) {
|
if (member != null && member) {
|
||||||
cnd.and("u.member", "=", member);
|
cnd.and("u.member", "=", member);
|
||||||
}
|
}
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
@@ -711,6 +739,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getGdh(Boolean open) {
|
public Object getGdh(Boolean open) {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("startState", "=", open).desc("year");
|
cnd.and("startState", "=", open).desc("year");
|
||||||
@@ -726,12 +755,14 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object dictState(String code) {
|
public Object dictState(String code) {
|
||||||
return baseService.dao().fetch("sys_dict", Cnd.where("code", "=", code));
|
return baseService.dao().fetch("sys_dict", Cnd.where("code", "=", code));
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getActivityUnions() {
|
public Object getActivityUnions() {
|
||||||
return sysUnionService.query();
|
return sysUnionService.query();
|
||||||
}
|
}
|
||||||
@@ -739,6 +770,7 @@ public class ViCommonCon {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getActivityUnits(@Param(value = "unionId", required = false) String unionId) {
|
public Object getActivityUnits(@Param(value = "unionId", required = false) String unionId) {
|
||||||
if (Strings.isBlank(unionId)) {
|
if (Strings.isBlank(unionId)) {
|
||||||
return sysUnitService.dao().query(ActivityBasicUnit.class, Cnd.where("unitlevel", "=", 2).asc("id"));
|
return sysUnitService.dao().query(ActivityBasicUnit.class, Cnd.where("unitlevel", "=", 2).asc("id"));
|
||||||
@@ -747,6 +779,7 @@ public class ViCommonCon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
|
@RequiresAuthentication
|
||||||
public Object getUnion() {
|
public Object getUnion() {
|
||||||
try {
|
try {
|
||||||
List<Record> unionList;
|
List<Record> unionList;
|
||||||
@@ -799,6 +832,7 @@ public class ViCommonCon {
|
|||||||
*/
|
*/
|
||||||
@At(value = "/platform/basics/downloadTemplate", top = true)
|
@At(value = "/platform/basics/downloadTemplate", top = true)
|
||||||
@Ok("void")
|
@Ok("void")
|
||||||
|
@RequiresAuthentication
|
||||||
public void downloadTemplate(String filePath, String fileName, HttpServletResponse response) {
|
public void downloadTemplate(String filePath, String fileName, HttpServletResponse response) {
|
||||||
String TEMPLATE_PATH = "templates";
|
String TEMPLATE_PATH = "templates";
|
||||||
try {
|
try {
|
||||||
|
|||||||
+6
-5
@@ -128,11 +128,12 @@ public class ActivityUnionManageController {
|
|||||||
SELECT id userId,username userName,loginname loginName,sex,mobile,unitname unitName,unionname unionName FROM `user` $condition
|
SELECT id userId,username userName,loginname loginName,sex,mobile,unitname unitName,unionname unionName FROM `user` $condition
|
||||||
""");
|
""");
|
||||||
if (!ShiroUtil.hasRole("sysadmin")) {
|
if (!ShiroUtil.hasRole("sysadmin")) {
|
||||||
if (activity_type == 40002) {
|
// if (activity_type == 40002) {
|
||||||
|
// cnd.and("unionId", "=", vi.getUnionId());
|
||||||
|
// } else if (activity_type == 40003) {
|
||||||
|
// cnd.and("id", "in", " SELECT userid FROM sys_club_user WHERE clubid = '%s' ".formatted(vi.getClubId()));
|
||||||
|
// }
|
||||||
cnd.and("unionId", "=", vi.getUnionId());
|
cnd.and("unionId", "=", vi.getUnionId());
|
||||||
} else if (activity_type == 40003) {
|
|
||||||
cnd.and("id", "in", " SELECT userid FROM sys_club_user WHERE clubid = '%s' ".formatted(vi.getClubId()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Strings.isNotBlank(serachWord)) {
|
if (Strings.isNotBlank(serachWord)) {
|
||||||
@@ -218,7 +219,7 @@ public class ActivityUnionManageController {
|
|||||||
|
|
||||||
if (tissue.getIsEnrollSystem()) {
|
if (tissue.getIsEnrollSystem()) {
|
||||||
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
|
Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity();
|
||||||
sysHomeActivity.setEnable(true);
|
sysHomeActivity.setEnable(ShiroUtil.hasAnyRoles("sysadmin,A06"));
|
||||||
activitySchoolService.dao().insertOrUpdate(sysHomeActivity);
|
activitySchoolService.dao().insertOrUpdate(sysHomeActivity);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
+2
@@ -107,6 +107,8 @@ public class ActivityUnionPlanController {
|
|||||||
activityPlan.setType("40001");
|
activityPlan.setType("40001");
|
||||||
}
|
}
|
||||||
activityPlanService.insert(activityPlan);
|
activityPlanService.insert(activityPlan);
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ public class HMCFieldCode {
|
|||||||
put("15", "因公出国");
|
put("15", "因公出国");
|
||||||
put("16", "停薪留职");
|
put("16", "停薪留职");
|
||||||
put("17", "待岗");
|
put("17", "待岗");
|
||||||
put("99", "其他");
|
put("99", "其他减员");
|
||||||
}};
|
}};
|
||||||
/**
|
/**
|
||||||
* 校区码
|
* 校区码
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public interface SourceData {
|
|||||||
put("MZMC", new String[]{"nation"});// 民族码
|
put("MZMC", new String[]{"nation"});// 民族码
|
||||||
put("SJ", new String[]{"mobile"}); // 手机号
|
put("SJ", new String[]{"mobile"}); // 手机号
|
||||||
put("ZZMMM", new String[]{"political"}); // 政治面貌码
|
put("ZZMMM", new String[]{"political"}); // 政治面貌码
|
||||||
put("DQZTM", new String[]{"userState"}); // 在职状态码
|
put("DQZTM", new String[]{"userState", "personalStatus"}); // 在职状态码
|
||||||
put("RYFLMC", new String[]{"personType"}); // 人员类型码
|
put("RYFLMC", new String[]{"personType"}); // 人员类型码
|
||||||
put("ZGXLM", new String[]{"education"}); // 最高学历码
|
put("ZGXLM", new String[]{"education"}); // 最高学历码
|
||||||
put("ZGXWM", new String[]{"academicDegree"}); // 最高学位码
|
put("ZGXWM", new String[]{"academicDegree"}); // 最高学位码
|
||||||
@@ -66,14 +66,14 @@ public interface SourceData {
|
|||||||
put("ZYJSZWDJ", new String[]{"professionalTechnicalLevel"}); // 专业技术等级
|
put("ZYJSZWDJ", new String[]{"professionalTechnicalLevel"}); // 专业技术等级
|
||||||
put("JZGLBM", new String[]{"userCategory"}); // 教职工类别
|
put("JZGLBM", new String[]{"userCategory"}); // 教职工类别
|
||||||
put("GWLBM", new String[]{"jobCategory"}); // 岗位类别
|
put("GWLBM", new String[]{"jobCategory"}); // 岗位类别
|
||||||
put("LXRQ", new String[]{"schoolTime"}); // 岗位类别
|
put("LXRQ", new String[]{"schoolTime", "memberJoinTime"}); // 来校日期
|
||||||
|
put("LTQSRQ", new String[]{"retireDate"}); // 离退起始日期
|
||||||
}};
|
}};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字段插件
|
* 字段插件
|
||||||
*/
|
*/
|
||||||
Map<String, Exp4> USER_FIELD_PLUGIN = new HashMap<String, Exp4>() {{
|
Map<String, Exp4> USER_FIELD_PLUGIN = new HashMap<String, Exp4>() {{
|
||||||
// put("ZZZTMC", v -> Strings.sBlank(USER_STATE_CODE.get(v), ""));
|
|
||||||
put("XBM", v -> Strings.sBlank(HMCFieldCode.SEX_CODE.get(v), ""));
|
put("XBM", v -> Strings.sBlank(HMCFieldCode.SEX_CODE.get(v), ""));
|
||||||
put("ZZMMM", v -> Strings.sBlank(HMCFieldCode.POLITICAL_CODE.get(v), ""));
|
put("ZZMMM", v -> Strings.sBlank(HMCFieldCode.POLITICAL_CODE.get(v), ""));
|
||||||
put("DQZTM", v -> Strings.sBlank(HMCFieldCode.USER_STATE_CODE.get(v), ""));
|
put("DQZTM", v -> Strings.sBlank(HMCFieldCode.USER_STATE_CODE.get(v), ""));
|
||||||
@@ -154,8 +154,6 @@ public interface SourceData {
|
|||||||
int page = 1;
|
int page = 1;
|
||||||
String body = HttpUtil.createPost(DATA_URL).body(JSON.toJSONString(new NutMap().addv("address", "rsxt_dwjbsj").addv("params", new NutMap())
|
String body = HttpUtil.createPost(DATA_URL).body(JSON.toJSONString(new NutMap().addv("address", "rsxt_dwjbsj").addv("params", new NutMap())
|
||||||
.addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 100))).execute().body();
|
.addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 100))).execute().body();
|
||||||
// String body = HttpUtil.get(DATA_URL, new NutMap().addv("address", "rsxt_dwjbsj").addv("params", new NutMap())
|
|
||||||
// .addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 1000));
|
|
||||||
NutMap map = Json.fromJson(NutMap.class, body);
|
NutMap map = Json.fromJson(NutMap.class, body);
|
||||||
// checkSuccess(map);
|
// checkSuccess(map);
|
||||||
List<NutMap> data = map.getAsList("data", NutMap.class);
|
List<NutMap> data = map.getAsList("data", NutMap.class);
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ public class SourceUserController {
|
|||||||
CndPlus cnd = CndPlus.create();
|
CndPlus cnd = CndPlus.create();
|
||||||
cnd.and(pageForm);
|
cnd.and(pageForm);
|
||||||
|
|
||||||
cnd.andEx("unitid", "=", unitId);
|
cnd.andEX("unitid", "=", unitId);
|
||||||
cnd.andEx("personType", "=", personType);
|
cnd.andEX("personType", "=", personType);
|
||||||
cnd.andEx("userState", "=", userState);
|
cnd.andEX("userState", "=", userState);
|
||||||
|
|
||||||
if(!StringUtils.isEmpty(importDate)){
|
if(!StringUtils.isEmpty(importDate)){
|
||||||
cnd.and("DATE(u.pullTime)", "=", importDate);
|
cnd.and("DATE(u.pullTime)", "=", importDate);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package io.v.nutz.zhgh.data.controller;
|
|||||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.dao.CndPlus;
|
import io.v.nutz.base.dao.CndPlus;
|
||||||
import io.v.nutz.base.utils.ViResource;
|
import io.v.nutz.base.utils.ViResource;
|
||||||
@@ -77,12 +78,14 @@ public class UpdateUserController {
|
|||||||
CndPlus cnd = CndPlus.create();
|
CndPlus cnd = CndPlus.create();
|
||||||
cnd.and(pageForm);
|
cnd.and(pageForm);
|
||||||
|
|
||||||
cnd.andEx("u.unitid", "=", unitId);
|
cnd.andEX("u.unitid", "=", unitId);
|
||||||
cnd.andEx("u.personType", "=", personType);
|
cnd.andEX("u.personType", "=", personType);
|
||||||
cnd.andEx("u.userState", "=", userState);
|
cnd.andEX("u.userState", "=", userState);
|
||||||
|
|
||||||
cnd.andEx("Date(his.changeTime)", "=", changeDate);
|
if (StrUtil.isNotBlank(changeDate)) {
|
||||||
cnd.andEx("his.changeType", "=", changeType);
|
cnd.and("DATE(his.changeTime)", "=", changeDate);
|
||||||
|
}
|
||||||
|
cnd.andEX("his.changeType", "=", changeType);
|
||||||
|
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
|
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 这里是杭医的不进系统人员的判断,其他学校用不到的话删掉
|
||||||
boolean isNotEnterUser = NOT_ENTERING_PERSON_TYPE.contains(source.getPersonType())
|
boolean isNotEnterUser = NOT_ENTERING_PERSON_TYPE.contains(source.getPersonType())
|
||||||
|| NOT_ENTERING_USER_LOGIN_NAME.contains(source.getLoginname())
|
|| NOT_ENTERING_USER_LOGIN_NAME.contains(source.getLoginname())
|
||||||
|| NOT_ENTERING_USER_STATE.contains(source.getUserState());
|
|| NOT_ENTERING_USER_STATE.contains(source.getUserState());
|
||||||
@@ -243,7 +244,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
if (user != null) {
|
if (user != null) {
|
||||||
histories.add(history);
|
histories.add(history);
|
||||||
}
|
}
|
||||||
if (!isNotEnterUser && history.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
if (!isNotEnterUser && Lang.isNotEmpty(history.getChangeTypes()) && history.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
||||||
needInitUserList.add(u);
|
needInitUserList.add(u);
|
||||||
histories.add(history);
|
histories.add(history);
|
||||||
}
|
}
|
||||||
@@ -255,7 +256,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
if (user != null) {
|
if (user != null) {
|
||||||
middleTables.add(table);
|
middleTables.add(table);
|
||||||
}
|
}
|
||||||
if (!isNotEnterUser && table.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
if (!isNotEnterUser && Lang.isNotEmpty(table.getChangeTypes()) && table.getChangeTypes().contains(MemberChangeType.NEW.getType())) {
|
||||||
needInitUserList.add(u);
|
needInitUserList.add(u);
|
||||||
middleTables.add(table);
|
middleTables.add(table);
|
||||||
}
|
}
|
||||||
@@ -287,7 +288,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
// 加入进行中的福利项目,暂时没写
|
// 加入进行中的福利项目,暂时没写
|
||||||
|
|
||||||
|
|
||||||
// 历史记录表插入数据
|
// 历史记录表插入数据 artificial
|
||||||
if ("automatic".equals(changeConfig.getSourceChangeType())) {
|
if ("automatic".equals(changeConfig.getSourceChangeType())) {
|
||||||
// 自动更新,修改数据表,存储历史记录
|
// 自动更新,修改数据表,存储历史记录
|
||||||
if ("part".equals(sourceType)) {
|
if ("part".equals(sourceType)) {
|
||||||
@@ -528,6 +529,9 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
// 变更记录
|
// 变更记录
|
||||||
List<NutMap> changeList = new ArrayList<>();
|
List<NutMap> changeList = new ArrayList<>();
|
||||||
for (String fieldName : allowChangeFieldNames) {
|
for (String fieldName : allowChangeFieldNames) {
|
||||||
|
if (allowChangeFieldNames.contains("retireDate") || allowChangeFieldNames.contains("welfareStopDate")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||||
}
|
}
|
||||||
if (Lang.isEmpty(changeList)) {
|
if (Lang.isEmpty(changeList)) {
|
||||||
@@ -573,6 +577,9 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
NutMap sourceMap = Lang.obj2nutmap(user);
|
NutMap sourceMap = Lang.obj2nutmap(user);
|
||||||
List<NutMap> changeList = new ArrayList<>();
|
List<NutMap> changeList = new ArrayList<>();
|
||||||
for (String fieldName : allowChangeFieldNames) {
|
for (String fieldName : allowChangeFieldNames) {
|
||||||
|
if (allowChangeFieldNames.contains("retireDate") || allowChangeFieldNames.contains("welfareStopDate")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
memberCommonService.extractChange(newMap, sourceMap, fieldName, dictMap, changeList);
|
||||||
}
|
}
|
||||||
if (Lang.isEmpty(changeList)) {
|
if (Lang.isEmpty(changeList)) {
|
||||||
|
|||||||
@@ -53,14 +53,14 @@ public enum ProposalAuditEnum {
|
|||||||
if (flag == 0) {
|
if (flag == 0) {
|
||||||
newStateCode = ProposalState.DELEGATION_BACK;
|
newStateCode = ProposalState.DELEGATION_BACK;
|
||||||
proposalSecondedService.clear(Cnd.where("proposalId", "=", audit.getProposalId()));
|
proposalSecondedService.clear(Cnd.where("proposalId", "=", audit.getProposalId()));
|
||||||
String rollBackTemplate = "{}团长审核并退回了您的[{}]提案,请您通过门户网站或企业微信登录到智慧工会平台修改并重新邀请附议人";
|
String rollBackTemplate = "{}团长审核并退回了您的[{}]提案,请您通过门户网站或钉钉登录到智慧工会平台修改并重新邀请附议人";
|
||||||
} else if (flag == 1) {
|
} else if (flag == 1) {
|
||||||
//通过
|
//通过
|
||||||
newStateCode = proposalProcessService.getStateCode(info.getId(), ProposalStateDirectionEnum.NEXT, false);
|
newStateCode = proposalProcessService.getStateCode(info.getId(), ProposalStateDirectionEnum.NEXT, false);
|
||||||
} else {
|
} else {
|
||||||
//建议撤销
|
//建议撤销
|
||||||
newStateCode = ProposalState.DELEGATION_REVOKE;
|
newStateCode = ProposalState.DELEGATION_REVOKE;
|
||||||
String rollBackTemplate = "{}团长审核并建议撤销了您的[{}]提案,请您通过门户网站或企业微信登录到智慧工会平台修改并重新邀请附议人";
|
String rollBackTemplate = "{}团长审核并建议撤销了您的[{}]提案,请您通过门户网站或钉钉登录到智慧工会平台修改并重新邀请附议人";
|
||||||
// msgApi.sendMsg(StrUtil.format(rollBackTemplate, audit.getUsername(), info.getProposalName()), List.of(proposalCreater.getLoginname()));
|
// msgApi.sendMsg(StrUtil.format(rollBackTemplate, audit.getUsername(), info.getProposalName()), List.of(proposalCreater.getLoginname()));
|
||||||
}
|
}
|
||||||
audit.setFlag(flag == 1);
|
audit.setFlag(flag == 1);
|
||||||
@@ -77,7 +77,7 @@ public enum ProposalAuditEnum {
|
|||||||
//退回
|
//退回
|
||||||
ProposalToDoHandler.CREATE_TEAM_LEADER_BACK_TASK.exec(info.getId(), nutMap);
|
ProposalToDoHandler.CREATE_TEAM_LEADER_BACK_TASK.exec(info.getId(), nutMap);
|
||||||
} else if (flag == 1) {
|
} else if (flag == 1) {
|
||||||
//通过
|
//通过,杭医是到提案工作组组长审阅
|
||||||
ProposalToDoHandler.CREATE_CASE_TASK.exec(info.getId(), nutMap);
|
ProposalToDoHandler.CREATE_CASE_TASK.exec(info.getId(), nutMap);
|
||||||
} else if (flag == 2) {
|
} else if (flag == 2) {
|
||||||
//建议撤销
|
//建议撤销
|
||||||
|
|||||||
@@ -52,16 +52,16 @@ public interface ProposalState {
|
|||||||
*/
|
*/
|
||||||
Integer UNITREPLY = 500;
|
Integer UNITREPLY = 500;
|
||||||
|
|
||||||
/**
|
|
||||||
* 待反馈评分
|
|
||||||
*/
|
|
||||||
Integer FEEDBACKSCORE = 600;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分管校领导审批
|
* 分管校领导审批
|
||||||
*/
|
*/
|
||||||
Integer LEADER_SUFFIX_AUDIT = 700;
|
Integer LEADER_SUFFIX_AUDIT = 700;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待反馈评分
|
||||||
|
*/
|
||||||
|
Integer FEEDBACKSCORE = 800;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已完结
|
* 已完结
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.v.nutz.zhgh.proposal.constants;
|
package io.v.nutz.zhgh.proposal.constants;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import io.v.nutz.base.utils.DateUtil;
|
import io.v.nutz.base.utils.DateUtil;
|
||||||
import io.v.nutz.base.utils.ViResource;
|
import io.v.nutz.base.utils.ViResource;
|
||||||
import io.v.nutz.sys.models.Sys_user;
|
import io.v.nutz.sys.models.Sys_user;
|
||||||
@@ -164,6 +165,48 @@ public enum ProposalToDoHandler {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提案工作组组长审阅待办
|
||||||
|
*/
|
||||||
|
CREATE_PROPOSAL_TEAM_LEADER_REVIEW_TASK() {
|
||||||
|
@Override
|
||||||
|
public void exec(String proposalId, NutMap extra) {
|
||||||
|
localProcessService.createTask(
|
||||||
|
"proposal_info@" + proposalId,
|
||||||
|
"proposalTeamLeaderRAuditId",
|
||||||
|
"待提案工作组组长查阅",
|
||||||
|
ShiroUtil.getUserId(),
|
||||||
|
proposalCommonService.getCommitteeLeader(proposalId),
|
||||||
|
"/platform/proposal/transact/caseRead",
|
||||||
|
"/platform/proposal/transact/caseRead",
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
localProcessService.updateProcessNodeName(
|
||||||
|
"proposal_info@" + proposalId,
|
||||||
|
"待提案工作组组长查阅"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提案工作组组长完成待办
|
||||||
|
*/
|
||||||
|
COMPLETE_PROPOSAL_TEAM_LEADER_REVIEW_TASK() {
|
||||||
|
@Override
|
||||||
|
public void exec(String proposalId, NutMap extra) {
|
||||||
|
//完成待办
|
||||||
|
localProcessService.completeTask(
|
||||||
|
"proposalTeamLeaderRAuditId",
|
||||||
|
"proposal_info@" + proposalId,
|
||||||
|
ShiroUtil.getUserId(),
|
||||||
|
extra.getString("opinion")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建委员会待办
|
* 创建委员会待办
|
||||||
*/
|
*/
|
||||||
@@ -173,7 +216,7 @@ public enum ProposalToDoHandler {
|
|||||||
localProcessService.createTask(
|
localProcessService.createTask(
|
||||||
"proposal_info@" + proposalId,
|
"proposal_info@" + proposalId,
|
||||||
"caseAuditId",
|
"caseAuditId",
|
||||||
"待提案委员会立案",
|
"待提案工作组立案审核",
|
||||||
ShiroUtil.getUserId(),
|
ShiroUtil.getUserId(),
|
||||||
proposalCommonService.getCommitteeLeader(proposalId),
|
proposalCommonService.getCommitteeLeader(proposalId),
|
||||||
"/platform/proposal/transact/case/case",
|
"/platform/proposal/transact/case/case",
|
||||||
@@ -183,7 +226,7 @@ public enum ProposalToDoHandler {
|
|||||||
);
|
);
|
||||||
localProcessService.updateProcessNodeName(
|
localProcessService.updateProcessNodeName(
|
||||||
"proposal_info@" + proposalId,
|
"proposal_info@" + proposalId,
|
||||||
"待提案委员会立案"
|
ObjectUtil.defaultIfBlank(extra.getString("opinion"), "待提案工作组立案审核")
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+36
@@ -303,4 +303,40 @@ public class ProposalUndertakeController {
|
|||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
return sysUserService.list(sql);
|
return sysUserService.list(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置其他单位为承办单位负责人
|
||||||
|
* @param id 单位Id
|
||||||
|
* @param userId 用户Id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@RequiresPermissions("proposal.basics.undertake")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
public Object doAdminOtherUnit(@Param("unitId") String id, @Param("userId") String userId){
|
||||||
|
// 删除该用户在承办单位负责人
|
||||||
|
sysUserRoleService.clear(Cnd.where("userId", "=", userId).and("cbdwid", "=", id)
|
||||||
|
.and("roleId", "=", Roles.CONTRACTOR_PERSON));
|
||||||
|
|
||||||
|
Sys_user_role sysUserRole = new Sys_user_role();
|
||||||
|
sysUserRole.setUserId(userId);
|
||||||
|
sysUserRole.setCbdwid(id);
|
||||||
|
sysUserRole.setRoleId(Roles.CONTRACTOR_PERSON);
|
||||||
|
sysUserRoleService.insert(sysUserRole);
|
||||||
|
|
||||||
|
// 删除该用户二级单位负责人
|
||||||
|
ProposalUndertake proposalUndertake = dao.fetch(ProposalUndertake.class, id);
|
||||||
|
dao.clear(Sys_user_role.class, Cnd.where("userId", "=", userId).and("roleId", "=", Roles.UNIT_MANGER)
|
||||||
|
.and("unitid", "=", proposalUndertake.getUnitCode()));
|
||||||
|
sysUserRole.setRoleId(Roles.UNIT_MANGER);
|
||||||
|
sysUserRole.setCbdwid(null);
|
||||||
|
sysUserRole.setUnitid(proposalUndertake.getUnitCode());
|
||||||
|
sysUserRoleService.insert(sysUserRole);
|
||||||
|
|
||||||
|
// 清缓存
|
||||||
|
sysUserService.deleteCacheAndUpdate(userId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -55,7 +55,7 @@ public class ProposalAllFinishedQueryController {
|
|||||||
@Param(value = "searchKeyword2",required = false)String searchKeyword2) {
|
@Param(value = "searchKeyword2",required = false)String searchKeyword2) {
|
||||||
CndPlus cnd = CndPlus.create();
|
CndPlus cnd = CndPlus.create();
|
||||||
|
|
||||||
cnd.andEx("info.stateCode", "=", stateCode);
|
// cnd.andEx("info.stateCode", "=", stateCode);
|
||||||
|
|
||||||
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06", "tamange"})) {
|
if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06", "tamange"})) {
|
||||||
if (ShiroUtil.hasAnyRoles("jdhdbt01,jdhdbt02")) {
|
if (ShiroUtil.hasAnyRoles("jdhdbt01,jdhdbt02")) {
|
||||||
@@ -146,9 +146,9 @@ public class ProposalAllFinishedQueryController {
|
|||||||
group.orLike("su.loginname", search.getCreateUser());
|
group.orLike("su.loginname", search.getCreateUser());
|
||||||
cnd.and(group);
|
cnd.and(group);
|
||||||
}
|
}
|
||||||
cnd.andEx("info.delegationId", "=", search.getDelegationId());
|
cnd.andEX("info.delegationId", "=", search.getDelegationId());
|
||||||
cnd.andEx("su.unionId", "=", search.getUnionId());
|
cnd.andEX("su.unionId", "=", search.getUnionId());
|
||||||
cnd.andEx("su.unitId", "=", search.getUnitId());
|
cnd.andEX("su.unitId", "=", search.getUnitId());
|
||||||
cnd.groupBy("info.id");
|
cnd.groupBy("info.id");
|
||||||
cnd.desc("info.proposalCode");
|
cnd.desc("info.proposalCode");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
|
|||||||
+8
-4
@@ -133,9 +133,11 @@ public class ProposalBranchLeaderSuffixAuditController {
|
|||||||
@POST
|
@POST
|
||||||
@ViReturn
|
@ViReturn
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@RequiresPermissions("proposal.transact.branchLeaderPrefixAudit")
|
// @RequiresPermissions("proposal.transact.branchLeaderPrefixAudit")
|
||||||
|
@RequiresPermissions("proposal.transact.branchLeaderSuffixAudit")
|
||||||
@SLog(type = "proposal", tag = "分管领导审批答复", msg = "分管领导审批答复")
|
@SLog(type = "proposal", tag = "分管领导审批答复", msg = "分管领导审批答复")
|
||||||
public Object doAudit(@Param(value = "sign", required = false) String sign, @Param("audit") ProposalAudit proposalAudit, @Param("pblsaId") String pblsaId) {
|
public Object doAudit(@Param(value = "sign", required = false) String sign, @Param("audit") ProposalAudit proposalAudit, @Param("pblsaId") String pblsaId) {
|
||||||
|
String proposalId = proposalAudit.getProposalId();
|
||||||
//签字
|
//签字
|
||||||
String signId = null;
|
String signId = null;
|
||||||
if (StrUtil.isNotBlank(sign)) {
|
if (StrUtil.isNotBlank(sign)) {
|
||||||
@@ -150,10 +152,12 @@ public class ProposalBranchLeaderSuffixAuditController {
|
|||||||
.add("auditId", proposalAudit.getId()),
|
.add("auditId", proposalAudit.getId()),
|
||||||
Cnd.where("id", "=", pblsaId));
|
Cnd.where("id", "=", pblsaId));
|
||||||
|
|
||||||
dao.update(ProposalInfo.class, Chain.make("stateCode", ProposalState.FINISH), Cnd.where("id", "=", proposalAudit.getProposalId()));
|
dao.update(ProposalInfo.class, Chain.make("stateCode", ProposalState.FEEDBACKSCORE), Cnd.where("id", "=", proposalId));
|
||||||
|
ProposalToDoHandler.COMPLETE_BRANCH_LEADER_SUFFIX_AUDIT_TASK.exec(proposalId, NutMap.NEW().addv("pblsaId", pblsaId).addv("opinion", proposalAudit.getOpinion()));
|
||||||
|
|
||||||
|
//反馈评分待办
|
||||||
|
ProposalToDoHandler.CREATE_FEEDBACK_TASK.exec(proposalId, null);
|
||||||
|
|
||||||
ProposalToDoHandler.COMPLETE_BRANCH_LEADER_SUFFIX_AUDIT_TASK.exec(proposalAudit.getProposalId(), NutMap.NEW().addv("pblsaId", pblsaId).addv("opinion", proposalAudit.getOpinion()));
|
|
||||||
ProposalToDoHandler.COMPLETE_PROCESS.exec(proposalAudit.getProposalId(), null);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+21
-11
@@ -10,6 +10,8 @@ import io.v.nutz.base.dao.CndPlus;
|
|||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.zhgh.proposal.constants.ProposalConstant;
|
import io.v.nutz.zhgh.proposal.constants.ProposalConstant;
|
||||||
import io.v.nutz.zhgh.proposal.constants.ProposalState;
|
import io.v.nutz.zhgh.proposal.constants.ProposalState;
|
||||||
|
import io.v.nutz.zhgh.proposal.constants.ProposalStateDirectionEnum;
|
||||||
|
import io.v.nutz.zhgh.proposal.constants.ProposalToDoHandler;
|
||||||
import io.v.nutz.zhgh.proposal.models.ProposalAudit;
|
import io.v.nutz.zhgh.proposal.models.ProposalAudit;
|
||||||
import io.v.nutz.zhgh.proposal.models.ProposalInfo;
|
import io.v.nutz.zhgh.proposal.models.ProposalInfo;
|
||||||
import io.v.nutz.zhgh.proposal.models.ProposalSearch;
|
import io.v.nutz.zhgh.proposal.models.ProposalSearch;
|
||||||
@@ -19,6 +21,7 @@ import io.v.nutz.sys.models.Sys_user_role;
|
|||||||
import io.v.nutz.sys.models.User;
|
import io.v.nutz.sys.models.User;
|
||||||
import io.v.nutz.sys.services.SysSignatureService;
|
import io.v.nutz.sys.services.SysSignatureService;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||||
|
import io.v.nutz.zhgh.proposal.services.ProposalProcessService;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
@@ -46,6 +49,8 @@ public class ProposalCaseReadController {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ProposalInfoService proposalInfoService;
|
private ProposalInfoService proposalInfoService;
|
||||||
|
@Inject
|
||||||
|
private ProposalProcessService proposalProcessService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Dao dao;
|
private Dao dao;
|
||||||
@@ -114,17 +119,17 @@ public class ProposalCaseReadController {
|
|||||||
// proposalInfoService.sortAndSearch(cnd,page,search);
|
// proposalInfoService.sortAndSearch(cnd,page,search);
|
||||||
Pagination pagination = (Pagination) proposalInfoService.initSql(sql, page, search, cnd);
|
Pagination pagination = (Pagination) proposalInfoService.initSql(sql, page, search, cnd);
|
||||||
|
|
||||||
List<NutMap> list = pagination.getList();
|
// List<NutMap> list = pagination.getList();
|
||||||
for (NutMap map : list) {
|
// for (NutMap map : list) {
|
||||||
if (StrUtil.isNotBlank(search.getIsAudit()) && "true".equals(search.getIsAudit())) {
|
// if (StrUtil.isNotBlank(search.getIsAudit()) && "true".equals(search.getIsAudit())) {
|
||||||
String membersOpinions = map.getString("membersOpinions");
|
// String membersOpinions = map.getString("membersOpinions");
|
||||||
List<String> mlist = Json.fromJsonAsList(String.class, membersOpinions);
|
// List<String> mlist = Json.fromJsonAsList(String.class, membersOpinions);
|
||||||
map.putAll(getCommitteeOpinion(mlist));
|
// map.putAll(getCommitteeOpinion(mlist));
|
||||||
} else {
|
// } else {
|
||||||
map.putAll(NutMap.NEW().addv("caseNum", "暂无")
|
// map.putAll(NutMap.NEW().addv("caseNum", "暂无")
|
||||||
.addv("opinionNum", "暂无").addv("notGiveNum", "暂无"));
|
// .addv("opinionNum", "暂无").addv("notGiveNum", "暂无"));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
// pagination.setList(list);
|
// pagination.setList(list);
|
||||||
return pagination;
|
return pagination;
|
||||||
}
|
}
|
||||||
@@ -180,6 +185,11 @@ public class ProposalCaseReadController {
|
|||||||
membersOpinions.add(proposalAudit.getId());
|
membersOpinions.add(proposalAudit.getId());
|
||||||
proposalInfo.setMembersOpinions(membersOpinions);
|
proposalInfo.setMembersOpinions(membersOpinions);
|
||||||
proposalInfoService.updateIgnoreNull(proposalInfo);
|
proposalInfoService.updateIgnoreNull(proposalInfo);
|
||||||
|
// // 提案小组组长审核后,修改提案状态之后,流程开始往下走
|
||||||
|
// proposalInfo.setStateCode(proposalProcessService.getStateCode(proposalId, ProposalStateDirectionEnum.NEXT, false));
|
||||||
|
// ProposalToDoHandler.COMPLETE_PROPOSAL_TEAM_LEADER_REVIEW_TASK.exec(proposalInfo.getId(), NutMap.NEW().setv("opinion", "提案工作组组长审阅完成"));
|
||||||
|
// // 创建校党委审议待办
|
||||||
|
// ProposalToDoHandler.CREATE_CASE_TASK.exec(proposalInfo.getId(), NutMap.NEW().setv("opinion", "提案工作组组长审阅完成"));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-12
@@ -200,18 +200,9 @@ public class ProposalFeedbackScoreController {
|
|||||||
ProposalToDoHandler.CREATE_UNDERTAKE_TASK.exec(proposalFeedback.getProposalId(), null);
|
ProposalToDoHandler.CREATE_UNDERTAKE_TASK.exec(proposalFeedback.getProposalId(), null);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
dao.update(ProposalInfo.class, Chain.make("stateCode", ProposalState.LEADER_SUFFIX_AUDIT), Cnd.where("id", "=", proposalFeedback.getProposalId()));
|
// 流程结束
|
||||||
|
dao.update(ProposalInfo.class, Chain.make("stateCode", ProposalState.FINISH), Cnd.where("id", "=", lastReply.getProposalId()));
|
||||||
//插入领导审批记录
|
ProposalToDoHandler.COMPLETE_PROCESS.exec(lastReply.getProposalId(), null);
|
||||||
ProposalBranchLeaderSuffixAudit leaderSuffixAudit = new ProposalBranchLeaderSuffixAudit();
|
|
||||||
leaderSuffixAudit.setProposalId(proposalFeedback.getProposalId());
|
|
||||||
leaderSuffixAudit.setUnderTakeId(lastReply.getReplyUnitId());
|
|
||||||
leaderSuffixAudit.setIsMaster(true);
|
|
||||||
leaderSuffixAudit.setIsAudit(false);
|
|
||||||
dao.insert(leaderSuffixAudit);
|
|
||||||
|
|
||||||
ProposalToDoHandler.CREATE_BRANCH_LEADER_SUFFIX_AUDIT_TASK.exec(proposalFeedback.getProposalId(), NutMap.NEW().addv("leaderSuffixAudit", leaderSuffixAudit));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
+97
-12
@@ -1,16 +1,19 @@
|
|||||||
package io.v.nutz.zhgh.proposal.controller.transact;
|
package io.v.nutz.zhgh.proposal.controller.transact;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.base.Result;
|
import cn.wizzer.framework.base.Result;
|
||||||
import cn.wizzer.framework.base.service.BaseService;
|
import cn.wizzer.framework.base.service.BaseService;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.utils.DateUtil;
|
import io.v.nutz.base.utils.DateUtil;
|
||||||
|
import io.v.nutz.base.utils.MsgApi;
|
||||||
import io.v.nutz.base.utils.Roles;
|
import io.v.nutz.base.utils.Roles;
|
||||||
import io.v.nutz.base.dao.CndPlus;
|
import io.v.nutz.base.dao.CndPlus;
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
|
import io.v.nutz.sys.models.Sys_local_process_instance;
|
||||||
|
import io.v.nutz.sys.models.Sys_local_process_instance_task;
|
||||||
import io.v.nutz.web.commons.base.Globals;
|
import io.v.nutz.web.commons.base.Globals;
|
||||||
import io.v.nutz.zhgh.proposal.constants.ProposalMannerEnum;
|
import io.v.nutz.zhgh.proposal.constants.ProposalMannerEnum;
|
||||||
import io.v.nutz.zhgh.proposal.constants.ProposalState;
|
import io.v.nutz.zhgh.proposal.constants.ProposalState;
|
||||||
import io.v.nutz.zhgh.proposal.constants.ProposalStateDirectionEnum;
|
|
||||||
import io.v.nutz.zhgh.proposal.constants.ProposalToDoHandler;
|
import io.v.nutz.zhgh.proposal.constants.ProposalToDoHandler;
|
||||||
import io.v.nutz.zhgh.proposal.models.ProposalInfo;
|
import io.v.nutz.zhgh.proposal.models.ProposalInfo;
|
||||||
import io.v.nutz.zhgh.proposal.models.ProposalSearch;
|
import io.v.nutz.zhgh.proposal.models.ProposalSearch;
|
||||||
@@ -41,11 +44,8 @@ import org.nutz.lang.Strings;
|
|||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
import org.nutz.mvc.annotation.*;
|
import org.nutz.mvc.annotation.*;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -62,25 +62,20 @@ public class ProposalMineController {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Dao dao;
|
private Dao dao;
|
||||||
|
@Inject
|
||||||
|
private MsgApi msgApi;
|
||||||
@Inject
|
@Inject
|
||||||
private BaseService baseService;
|
private BaseService baseService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private SysUserService sysUserService;
|
private SysUserService sysUserService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private SysSignatureService sysSignatureService;
|
private SysSignatureService sysSignatureService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ProposalInfoService proposalInfoService;
|
private ProposalInfoService proposalInfoService;
|
||||||
|
|
||||||
@Inject("ProposalSeconded")
|
@Inject("ProposalSeconded")
|
||||||
private ViService<ProposalSeconded> secondedService;
|
private ViService<ProposalSeconded> secondedService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ProposalProcessService proposalProcessService;
|
private ProposalProcessService proposalProcessService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private SysLocalProcessService sysLocalProcessService;
|
private SysLocalProcessService sysLocalProcessService;
|
||||||
|
|
||||||
@@ -235,11 +230,23 @@ public class ProposalMineController {
|
|||||||
ProposalSeconded seconded = new ProposalSeconded();
|
ProposalSeconded seconded = new ProposalSeconded();
|
||||||
seconded.setProposalId(proposalId);
|
seconded.setProposalId(proposalId);
|
||||||
seconded.setSeconderId(userId);
|
seconded.setSeconderId(userId);
|
||||||
seconded.setInviteTime(DateUtil.getDate());
|
seconded.setInviteTime(cn.hutool.core.date.DateUtil.now());
|
||||||
return seconded;
|
return seconded;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
dao.insert(secondedList);
|
dao.insert(secondedList);
|
||||||
|
|
||||||
|
String linkUrl = Globals.AppDomain + "/mobile/proposal/seconded";
|
||||||
|
// 提案人信息
|
||||||
|
Sys_user sysUser = dao.fetch(Sys_user.class, Cnd.where("id", "=", proposalInfo.getCreateUser()));
|
||||||
|
// 附议人发送短信
|
||||||
|
List<Sys_user> userList = dao.query(Sys_user.class, Cnd.where("id", "in", users));
|
||||||
|
for (Sys_user user : userList) {
|
||||||
|
String template = "{}代表,您好,{}代表的提案《{}》邀请您作为附议人,请您点击此消息或登录“智慧工会”系统进行附议,感谢您对教代会提案工作的大力支持!";
|
||||||
|
String content = StrUtil.format(template, user.getUsername(), sysUser.getUsername(), proposalInfo.getProposalName());
|
||||||
|
System.out.println(content);
|
||||||
|
msgApi.sendMsg(List.of("DingTalk"), user.getLoginname(), 2, "提案附议邀请", content, "", linkUrl);
|
||||||
|
}
|
||||||
|
|
||||||
ProposalToDoHandler.CREATE_SECONDED_TASK.exec(proposalId, NutMap.NEW().addv("secondedList", secondedList));
|
ProposalToDoHandler.CREATE_SECONDED_TASK.exec(proposalId, NutMap.NEW().addv("secondedList", secondedList));
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -485,4 +492,82 @@ public class ProposalMineController {
|
|||||||
return secondedService.listMap(sql);
|
return secondedService.listMap(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤回提案
|
||||||
|
* @param proposalId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@RequiresPermissions("proposal.transact.compose")
|
||||||
|
public Object doRevoke(String proposalId) {
|
||||||
|
// 提案撰写人信息
|
||||||
|
Sql userSql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
u.loginname,
|
||||||
|
u.username,
|
||||||
|
info.id AS proposalId,
|
||||||
|
info.proposalName
|
||||||
|
FROM
|
||||||
|
proposal_info info
|
||||||
|
LEFT JOIN sys_user u ON info.createUser = u.id
|
||||||
|
WHERE
|
||||||
|
info.id = @proposalId
|
||||||
|
""").setParam("proposalId", proposalId);
|
||||||
|
userSql.setCallback(Sqls.callback.map());
|
||||||
|
dao.execute(userSql);
|
||||||
|
NutMap userMap = (NutMap) userSql.getResult();
|
||||||
|
|
||||||
|
|
||||||
|
// 查询出这个提案下的所有附议人,发送提案撤销消息
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
ps.*,
|
||||||
|
u.loginname,
|
||||||
|
u.username
|
||||||
|
FROM
|
||||||
|
proposal_seconded ps
|
||||||
|
LEFT JOIN sys_user u ON ps.seconderId = u.id
|
||||||
|
WHERE
|
||||||
|
ps.proposalId = @proposalId
|
||||||
|
""").setParam("proposalId", proposalId);
|
||||||
|
sql.setCallback(Sqls.callback.maps());
|
||||||
|
dao.execute(sql);
|
||||||
|
List<NutMap> secondedList = (List<NutMap>) sql.getResult();
|
||||||
|
|
||||||
|
// 同意的附议人
|
||||||
|
List<NutMap> agreeList = secondedList.stream().filter(v -> "1".equals(v.getString("isAgree"))).toList();
|
||||||
|
// 没有附议的人员
|
||||||
|
List<NutMap> noSecondedList = secondedList.stream().filter(v -> StrUtil.isBlank(v.getString("isAgree"))).toList();
|
||||||
|
|
||||||
|
if (Lang.isNotEmpty(agreeList)) {
|
||||||
|
// 循环发送消息
|
||||||
|
for (NutMap map : agreeList) {
|
||||||
|
String template = "{}代表,您好,您附议的提案《{}》已被{}代表(起草人)撤回重新修改,特此告知,烦请知悉。感谢您对教代会提案工作的大力支持!";
|
||||||
|
String content = StrUtil.format(template, map.getString("username"),
|
||||||
|
userMap.getString("proposalName"), userMap.getString("username"));
|
||||||
|
msgApi.sendMsg(List.of("DingTalk"), map.getString("loginname"), 1, "提案重新起草通知", content, "", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Lang.isNotEmpty(noSecondedList)) {
|
||||||
|
for (NutMap map : noSecondedList) {
|
||||||
|
String template = "{}代表,您好,您附议的提案《{}》已被{}代表(起草人)撤回重新修改,您已无需附议。特此告知,烦请知悉。感谢您对教代会提案工作的大力支持!";
|
||||||
|
String content = StrUtil.format(template, map.getString("username"),
|
||||||
|
userMap.getString("proposalName"), userMap.getString("username"));
|
||||||
|
msgApi.sendMsg(List.of("DingTalk"), map.getString("loginname"), 1, "提案无需附议通知", content, "", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dao.update(ProposalInfo.class, Chain.make("stateCode", ProposalState.UNSUBMIT), Cnd.where("id", "=", proposalId));
|
||||||
|
dao.clear(ProposalSeconded.class, Cnd.where("proposalId", "=", proposalId));
|
||||||
|
|
||||||
|
dao.clear(Sys_local_process_instance.class, Cnd.where("processUniqueId", "=", "proposal_info@" + proposalId));
|
||||||
|
dao.clear(Sys_local_process_instance_task.class, Cnd.where("processUniqueId", "=", "proposal_info@" + proposalId));
|
||||||
|
|
||||||
|
ProposalToDoHandler.START_PROCESS.exec(proposalId, null);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -1,9 +1,9 @@
|
|||||||
package io.v.nutz.zhgh.proposal.controller.transact;
|
package io.v.nutz.zhgh.proposal.controller.transact;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.page.Pagination;
|
import cn.wizzer.framework.page.Pagination;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.utils.DateUtil;
|
|
||||||
import io.v.nutz.base.utils.MsgApi;
|
import io.v.nutz.base.utils.MsgApi;
|
||||||
import io.v.nutz.base.dao.CndPlus;
|
import io.v.nutz.base.dao.CndPlus;
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
@@ -210,7 +210,7 @@ public class ProposalSecondedController {
|
|||||||
ProposalConfig proposalConfig = dao.fetch(ProposalConfig.class);
|
ProposalConfig proposalConfig = dao.fetch(ProposalConfig.class);
|
||||||
//签字
|
//签字
|
||||||
String seconderSignId = sysSignatureService.insert(new Sys_signature(seconderSign)).getId();
|
String seconderSignId = sysSignatureService.insert(new Sys_signature(seconderSign)).getId();
|
||||||
dao.update(ProposalSeconded.class, Chain.make("isAgree", flag).add("seconderSignId", seconderSignId).add("secondedTime", DateUtil.getDate()), Cnd.where("id", "=", secondedId));
|
dao.update(ProposalSeconded.class, Chain.make("isAgree", flag).add("seconderSignId", seconderSignId).add("secondedTime", DateUtil.now()), Cnd.where("id", "=", secondedId));
|
||||||
|
|
||||||
//完成附议待办
|
//完成附议待办
|
||||||
ProposalToDoHandler.COMPLETE_SECONDED_TASK.exec(proposalId, NutMap.NEW().addv("secondedId", secondedId));
|
ProposalToDoHandler.COMPLETE_SECONDED_TASK.exec(proposalId, NutMap.NEW().addv("secondedId", secondedId));
|
||||||
@@ -224,7 +224,7 @@ public class ProposalSecondedController {
|
|||||||
long agreeCount = secondedList.stream().filter(v -> v.getInt("isAgree") == 1).count();
|
long agreeCount = secondedList.stream().filter(v -> v.getInt("isAgree") == 1).count();
|
||||||
if (agreeCount == proposalConfig.getSeconderNum() || (proposalInfo.getStateCode().equals(ProposalState.INVIRTE) && agreeCount > proposalConfig.getSeconderNum())) {
|
if (agreeCount == proposalConfig.getSeconderNum() || (proposalInfo.getStateCode().equals(ProposalState.INVIRTE) && agreeCount > proposalConfig.getSeconderNum())) {
|
||||||
int stateCode = proposalProcessService.getSomeNodeNextStateCode(ProposalState.INVIRTE, ProposalStateDirectionEnum.NEXT);
|
int stateCode = proposalProcessService.getSomeNodeNextStateCode(ProposalState.INVIRTE, ProposalStateDirectionEnum.NEXT);
|
||||||
dao.update(ProposalInfo.class, Chain.make("stateCode", stateCode), Cnd.where("id", "=", proposalId));
|
dao.update(ProposalInfo.class, Chain.make("stateCode", stateCode).add("secondReminderTime", DateUtil.date()), Cnd.where("id", "=", proposalId));
|
||||||
|
|
||||||
ProposalToDoHandler.CREATE_TEAM_LEADER_TASK.exec(proposalId, null);
|
ProposalToDoHandler.CREATE_TEAM_LEADER_TASK.exec(proposalId, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import org.nutz.lang.util.NutMap;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -247,6 +248,21 @@ public class ProposalInfo extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.BOOLEAN)
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
private Boolean caseCheckNeedSecondAudit;
|
private Boolean caseCheckNeedSecondAudit;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("上次催办时间")
|
||||||
|
@ColDefine(type = ColType.DATETIME)
|
||||||
|
private Date lastReminderTime;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("附议完成的时间")
|
||||||
|
@ColDefine(type = ColType.DATETIME)
|
||||||
|
private Date secondReminderTime;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("上次团长催办的时间")
|
||||||
|
@ColDefine(type = ColType.DATETIME)
|
||||||
|
private Date lastDelegationReminderTime;
|
||||||
|
|
||||||
/*---------------审核相关 end ---------------*/
|
/*---------------审核相关 end ---------------*/
|
||||||
|
|
||||||
public List<NutMap> emptyList() {
|
public List<NutMap> emptyList() {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package io.v.nutz.zhgh.proposal.models;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.nutz.dao.entity.annotation.*;
|
import org.nutz.dao.entity.annotation.*;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: Aaron
|
* @author: Aaron
|
||||||
* @create: 2021-01-25 11:03
|
* @create: 2021-01-25 11:03
|
||||||
@@ -49,4 +51,8 @@ public class ProposalSeconded {
|
|||||||
@ColDefine(type = ColType.BOOLEAN)
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
private Boolean isAgree;
|
private Boolean isAgree;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("上次催办时间")
|
||||||
|
@ColDefine(type = ColType.DATETIME)
|
||||||
|
private Date lastReminderTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package io.v.nutz.zhgh.proposal.services;
|
|||||||
*/
|
*/
|
||||||
public interface ProposalSecondedService {
|
public interface ProposalSecondedService {
|
||||||
|
|
||||||
String TZ_TEMPLATE = "[{}]提案待您审核,请您通过门户网站或企业微信登录智慧工会平台进行审核";
|
String TZ_TEMPLATE = "[{}]提案待您审核,请您通过门户网站或钉钉登录智慧工会平台进行审核";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送信息给提案人的团长
|
* 发送信息给提案人的团长
|
||||||
|
|||||||
+8
-6
@@ -196,13 +196,15 @@ public class ProposalCaseConfirmServiceImpl extends ViServiceImpl implements Pro
|
|||||||
//完成审核待办
|
//完成审核待办
|
||||||
ProposalToDoHandler.COMPLETE_CASE_UNIT_TASK.exec(id, null);
|
ProposalToDoHandler.COMPLETE_CASE_UNIT_TASK.exec(id, null);
|
||||||
|
|
||||||
if (resultCode.equals(ProposalConstant.DETERMINE)) {
|
// if (resultCode.equals(ProposalConstant.DETERMINE)) {
|
||||||
//推送分管校领导审批待办
|
// //推送分管校领导审批待办
|
||||||
ProposalToDoHandler.CREATE_BRANCH_LEADER_PREFIX_AUDIT_TASK.exec(id, NutMap.NEW().addv("hostBranchAudit", hostBranchAudit));
|
// ProposalToDoHandler.CREATE_BRANCH_LEADER_PREFIX_AUDIT_TASK.exec(id, NutMap.NEW().addv("hostBranchAudit", hostBranchAudit));
|
||||||
} else if (resultCode.equals(ProposalConstant.OPINION)) {
|
// } else if (resultCode.equals(ProposalConstant.OPINION)) {
|
||||||
|
// //推送承办单位答复待办
|
||||||
|
// ProposalToDoHandler.CREATE_UNDERTAKE_TASK.exec(id, null);
|
||||||
|
// }
|
||||||
//推送承办单位答复待办
|
//推送承办单位答复待办
|
||||||
ProposalToDoHandler.CREATE_UNDERTAKE_TASK.exec(id, null);
|
ProposalToDoHandler.CREATE_CASE_UNIT_TASK.exec(id, null);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -229,12 +229,9 @@ public class ProposalCaseServiceImpl extends ViServiceImpl implements ProposalCa
|
|||||||
|
|
||||||
ProposalToDoHandler.COMPLETE_CASE_TASK.exec(id,NutMap.NEW().addv("opinion",audit.getOpinion()));
|
ProposalToDoHandler.COMPLETE_CASE_TASK.exec(id,NutMap.NEW().addv("opinion",audit.getOpinion()));
|
||||||
|
|
||||||
if (resultCode.equals(ProposalConstant.NOTGIVE)) {
|
switch (resultCode) {
|
||||||
sysLocalProcessService.completeProcess("proposal_info@" + id);
|
case ProposalConstant.NOTGIVE -> sysLocalProcessService.completeProcess("proposal_info@" + id);
|
||||||
} else if (resultCode.equals(ProposalConstant.DETERMINE)) {
|
case ProposalConstant.DETERMINE, ProposalConstant.OPINION -> ProposalToDoHandler.CREATE_CASE_UNIT_TASK.exec(id, null);
|
||||||
ProposalToDoHandler.CREATE_CASE_UNIT_TASK.exec(id,null);
|
|
||||||
} else if (resultCode.equals(ProposalConstant.OPINION)) {
|
|
||||||
ProposalToDoHandler.CREATE_CASE_UNIT_TASK.exec(id,null);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,7 @@ import org.nutz.lang.Lang;
|
|||||||
import org.nutz.lang.Strings;
|
import org.nutz.lang.Strings;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -216,11 +214,30 @@ public class ProposalCommonServiceImpl extends ViServiceImpl implements Proposal
|
|||||||
basicInfo.setv("caseUnitAudit", null);
|
basicInfo.setv("caseUnitAudit", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 承办单位提出意见
|
||||||
|
Sql underTakeFirstOpinionSql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
po.*,
|
||||||
|
pu.unitName AS underTakeName
|
||||||
|
FROM
|
||||||
|
proposal_under_take_first_opinion po
|
||||||
|
LEFT JOIN proposal_undertake pu ON pu.id = po.underTakeId
|
||||||
|
WHERE
|
||||||
|
po.proposalId = @proposalId
|
||||||
|
""").setParam("proposalId", proposalId);
|
||||||
|
List<NutMap> underTakeFirstOpinionList = proposalAuditService.listMap(underTakeFirstOpinionSql);
|
||||||
|
if (Lang.isNotEmpty(underTakeFirstOpinionList)) {
|
||||||
|
basicInfo.setv("underTakeFirstOpinion", underTakeFirstOpinionList);
|
||||||
|
} else {
|
||||||
|
basicInfo.setv("underTakeFirstOpinion", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//分管校领导审批立案
|
//分管校领导审批立案
|
||||||
Sql branchCaseSql = Sqls.create("select auditId from proposal_branch_leader_audit where proposalId = @proposalId");
|
Sql branchCaseSql = Sqls.create("select auditId from proposal_branch_leader_audit where proposalId = @proposalId");
|
||||||
branchCaseSql.setParam("proposalId", proposalId);
|
branchCaseSql.setParam("proposalId", proposalId);
|
||||||
String[] branchCaseArray = (String[]) Daos.query(dao(), branchCaseSql.toString(), Sqls.callback.strs());
|
String[] branchCaseArray = (String[]) Daos.query(dao(), branchCaseSql.toString(), Sqls.callback.strs());
|
||||||
if (Lang.isNotEmpty(branchCaseArray)) {
|
if (Lang.isNotEmpty(branchCaseArray) && !Arrays.stream(branchCaseArray).allMatch(Objects::isNull)) {
|
||||||
basicInfo.setv("branchLeaderOpinion", CollectionUtil.addAll(new ArrayList<>(), proposalAuditService.getAuditRecordList(branchCaseArray)));
|
basicInfo.setv("branchLeaderOpinion", CollectionUtil.addAll(new ArrayList<>(), proposalAuditService.getAuditRecordList(branchCaseArray)));
|
||||||
} else {
|
} else {
|
||||||
basicInfo.setv("branchLeaderOpinion", Collections.emptyList());
|
basicInfo.setv("branchLeaderOpinion", Collections.emptyList());
|
||||||
|
|||||||
@@ -66,11 +66,11 @@ public class ProposalConfigServiceImpl extends ViServiceImpl<ProposalConfig> imp
|
|||||||
|
|
||||||
dao().updateWith(config, null);
|
dao().updateWith(config, null);
|
||||||
|
|
||||||
Sys_dict dict = sysDictService.fetch(Cnd.where("code", "=", "proposal_manner"));
|
// Sys_dict dict = sysDictService.fetch(Cnd.where("code", "=", "proposal_manner"));
|
||||||
sysDictService.update(Chain.make("disabled", true), Cnd.where("parentId", "=", Strings.sNull(dict.getId())));
|
// sysDictService.update(Chain.make("disabled", true), Cnd.where("parentId", "=", Strings.sNull(dict.getId())));
|
||||||
for (String s : mannerList) {
|
// for (String s : mannerList) {
|
||||||
sysDictService.update(Chain.make("disabled", false), Cnd.where("id", "=", s));
|
// sysDictService.update(Chain.make("disabled", false), Cnd.where("id", "=", s));
|
||||||
}
|
// }
|
||||||
|
|
||||||
Jdh_jdhxx latestJdh = dao().fetch(Jdh_jdhxx.class, Cnd.where("jdhkqzt", "=", 1).desc("jdhkqsj"));
|
Jdh_jdhxx latestJdh = dao().fetch(Jdh_jdhxx.class, Cnd.where("jdhkqzt", "=", 1).desc("jdhkqsj"));
|
||||||
if (latestJdh != null) {
|
if (latestJdh != null) {
|
||||||
|
|||||||
+45
-19
@@ -171,6 +171,8 @@ public class ProposalExportServiceImpl extends BaseServiceImpl implements Propos
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
List<NutMap> oneAuditRecordList = new ArrayList<>();
|
||||||
|
if (StrUtil.isNotBlank(nutMap.getString("caseAuditId"))) {
|
||||||
Sql oneAuditRecordSql = Sqls.create("""
|
Sql oneAuditRecordSql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
pa.*,
|
pa.*,
|
||||||
@@ -180,7 +182,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl implements Propos
|
|||||||
LEFT JOIN sys_signature sign ON sign.id = pa.signId
|
LEFT JOIN sys_signature sign ON sign.id = pa.signId
|
||||||
where pa.id in (@id)
|
where pa.id in (@id)
|
||||||
""").setParam("id", Json.fromJsonAsList(String.class, nutMap.getString("caseAuditId")));
|
""").setParam("id", Json.fromJsonAsList(String.class, nutMap.getString("caseAuditId")));
|
||||||
List<NutMap> oneAuditRecordList = proposalInfoService.listMap(oneAuditRecordSql);
|
oneAuditRecordList = proposalInfoService.listMap(oneAuditRecordSql);
|
||||||
if (Lang.isNotEmpty(oneAuditRecordList)) {
|
if (Lang.isNotEmpty(oneAuditRecordList)) {
|
||||||
oneAuditRecordList.forEach(v -> {
|
oneAuditRecordList.forEach(v -> {
|
||||||
try {
|
try {
|
||||||
@@ -188,15 +190,16 @@ public class ProposalExportServiceImpl extends BaseServiceImpl implements Propos
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
if (nutMap.getString("resultCode").equals("determine")) {
|
if ("determine".equals(nutMap.getString("resultCode"))) {
|
||||||
v.setv("resultAudit", "经提案工作委员会研究,符合提案立案条件,予以立案,此提案建议由%s办理,%s协办。".formatted(nutMap.getString("under1Unit"), (Strings.isNotBlank(nutMap.getString("under2Unit")) ? nutMap.getString("under2Unit") : "暂无")));
|
v.setv("resultAudit", "经提案工作组审理,符合提案立案条件,予以立案,此提案建议由%s办理,%s协办。".formatted(nutMap.getString("under1Unit"), (Strings.isNotBlank(nutMap.getString("under2Unit")) ? nutMap.getString("under2Unit") : "暂无")));
|
||||||
} else if (nutMap.getString("resultCode").equals("opinion")) {
|
} else if ("opinion".equals(nutMap.getString("resultCode"))) {
|
||||||
v.setv("resultAudit", "作为意见建议转送参考");
|
v.setv("resultAudit", "作为意见建议转送参考");
|
||||||
} else {
|
} else {
|
||||||
v.setv("resultAudit", "该提案不予立项,不予立案原因属于以下提案内容");
|
v.setv("resultAudit", "该提案不予立项,不予立案原因属于以下提案内容");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Sql branchCaseSql = Sqls.create("select auditId from proposal_branch_leader_audit where proposalId = @proposalId AND isMaster=true").setParam("proposalId", proposalId);
|
Sql branchCaseSql = Sqls.create("select auditId from proposal_branch_leader_audit where proposalId = @proposalId AND isMaster=true").setParam("proposalId", proposalId);
|
||||||
String[] branchCaseArray = (String[]) Daos.query(dao(), branchCaseSql.toString(), Sqls.callback.strs());
|
String[] branchCaseArray = (String[]) Daos.query(dao(), branchCaseSql.toString(), Sqls.callback.strs());
|
||||||
@@ -302,30 +305,53 @@ public class ProposalExportServiceImpl extends BaseServiceImpl implements Propos
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Sql leaderListSql = Sqls.create("""
|
||||||
|
// SELECT
|
||||||
|
// pr.*,
|
||||||
|
// pu.unitName,
|
||||||
|
// u.username,
|
||||||
|
// u.loginname,
|
||||||
|
// sign.`data`
|
||||||
|
// FROM
|
||||||
|
// proposal_reply pr
|
||||||
|
// LEFT JOIN proposal_undertake pu ON pu.id = pr.replyUnitId
|
||||||
|
// LEFT JOIN `user` u ON u.id = pr.leaderId
|
||||||
|
// LEFT JOIN sys_signature sign ON sign.id=pr.leaderSignId
|
||||||
|
// WHERE
|
||||||
|
// pr.proposalId = @proposalId
|
||||||
|
// AND pr.leaderId IS NOT NULL
|
||||||
|
// And pr.undertakeType=1
|
||||||
|
// ORDER BY
|
||||||
|
// pr.undertakeType ASC,
|
||||||
|
// pr.leaderCheckNumber ASC
|
||||||
|
// """).setParam("proposalId", proposalId);
|
||||||
|
// List<NutMap> leaderList = proposalInfoService.listMap(leaderListSql);
|
||||||
|
// if (Lang.isNotEmpty(leaderList)) {
|
||||||
|
// leaderList.forEach(v -> {
|
||||||
|
// v.setv("replyContent", Html2Text.toPlainText(v.getString("replyContent")));
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
Sql leaderListSql = Sqls.create("""
|
Sql leaderListSql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
pr.*,
|
pa.username,
|
||||||
pu.unitName,
|
sign.`data`,
|
||||||
u.username,
|
pa.auditTime AS replyTime,
|
||||||
u.loginname,
|
pa.opinion AS leaderCheckOpinion
|
||||||
sign.`data`
|
|
||||||
FROM
|
FROM
|
||||||
proposal_reply pr
|
proposal_branch_leader_suffix_audit pblsa
|
||||||
LEFT JOIN proposal_undertake pu ON pu.id = pr.replyUnitId
|
LEFT JOIN `proposal_audit` pa ON pa.id = pblsa.auditId
|
||||||
LEFT JOIN `user` u ON u.id = pr.leaderId
|
LEFT JOIN `sys_signature` sign ON sign.id = pa.signId
|
||||||
LEFT JOIN sys_signature sign ON sign.id=pr.leaderSignId
|
|
||||||
WHERE
|
WHERE
|
||||||
pr.proposalId = @proposalId
|
pblsa.proposalId = @proposalId
|
||||||
AND pr.leaderId IS NOT NULL
|
AND pblsa.isAudit = 1
|
||||||
And pr.undertakeType=1
|
|
||||||
ORDER BY
|
ORDER BY
|
||||||
pr.undertakeType ASC,
|
createdAt DESC
|
||||||
pr.leaderCheckNumber ASC
|
|
||||||
""").setParam("proposalId", proposalId);
|
""").setParam("proposalId", proposalId);
|
||||||
List<NutMap> leaderList = proposalInfoService.listMap(leaderListSql);
|
List<NutMap> leaderList = proposalInfoService.listMap(leaderListSql);
|
||||||
if (Lang.isNotEmpty(leaderList)) {
|
if (Lang.isNotEmpty(leaderList)) {
|
||||||
leaderList.forEach(v -> {
|
leaderList.forEach(v -> {
|
||||||
v.setv("replyContent", Html2Text.toPlainText(v.getString("replyContent")));
|
v.setv("leaderCheckOpinion", Html2Text.toPlainText(v.getString("leaderCheckOpinion")));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,9 +81,9 @@ public class ProposalReplyServiceImpl extends ViServiceImpl<ProposalReply> imple
|
|||||||
|
|
||||||
Sql sql = Sqls.create(COMMON_SQL);
|
Sql sql = Sqls.create(COMMON_SQL);
|
||||||
if (StrUtil.isNotBlank(search.getIsAudit())) {
|
if (StrUtil.isNotBlank(search.getIsAudit())) {
|
||||||
int isReply = search.getIsAudit().equals("true") ? 1 : 0;
|
int isReply = "true".equals(search.getIsAudit()) ? 1 : 0;
|
||||||
sql.setVar("temp_sql", "AND isReply = %d group by proposalId".formatted(isReply));
|
sql.setVar("temp_sql", "AND isReply = %d group by proposalId".formatted(isReply));
|
||||||
cnd.and("info.stateCode", search.getIsAudit().equals("true") ? ">=" : "=", ProposalState.UNITREPLY);
|
cnd.and("info.stateCode", "true".equals(search.getIsAudit()) ? ">=" : "=", ProposalState.UNITREPLY);
|
||||||
} else {
|
} else {
|
||||||
sql.setVar("temp_sql", "group by proposalId");
|
sql.setVar("temp_sql", "group by proposalId");
|
||||||
cnd.and("info.stateCode", ">=", ProposalState.UNITREPLY);
|
cnd.and("info.stateCode", ">=", ProposalState.UNITREPLY);
|
||||||
@@ -137,8 +137,8 @@ public class ProposalReplyServiceImpl extends ViServiceImpl<ProposalReply> imple
|
|||||||
|
|
||||||
// cnd.and("pr.replyUnitId", "in", manageUnderTakeIds);
|
// cnd.and("pr.replyUnitId", "in", manageUnderTakeIds);
|
||||||
if (Strings.isNotBlank(search.getIsAudit())) {
|
if (Strings.isNotBlank(search.getIsAudit())) {
|
||||||
cnd.and("pr.isReply", "=", search.getIsAudit().equals("true") ? 1 : 0);
|
cnd.and("pr.isReply", "=", "true".equals(search.getIsAudit()) ? 1 : 0);
|
||||||
cnd.and("info.stateCode", search.getIsAudit().equals("true") ? ">=" : "=", ProposalState.UNITREPLY);
|
cnd.and("info.stateCode", "true".equals(search.getIsAudit()) ? ">=" : "=", ProposalState.UNITREPLY);
|
||||||
} else {
|
} else {
|
||||||
cnd.and("info.stateCode", ">=", ProposalState.UNITREPLY);
|
cnd.and("info.stateCode", ">=", ProposalState.UNITREPLY);
|
||||||
}
|
}
|
||||||
@@ -307,7 +307,6 @@ public class ProposalReplyServiceImpl extends ViServiceImpl<ProposalReply> imple
|
|||||||
chain.add("isReply", isSave ? 0 : 1);
|
chain.add("isReply", isSave ? 0 : 1);
|
||||||
chain.add("replyFiles", reply.getReplyFiles());
|
chain.add("replyFiles", reply.getReplyFiles());
|
||||||
|
|
||||||
|
|
||||||
List<String> conjoin = proposalCommonService.findConjoin(proposalId);
|
List<String> conjoin = proposalCommonService.findConjoin(proposalId);
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("proposalId", "in", conjoin);
|
cnd.and("proposalId", "in", conjoin);
|
||||||
@@ -325,9 +324,15 @@ public class ProposalReplyServiceImpl extends ViServiceImpl<ProposalReply> imple
|
|||||||
if (proposalInfo.getResultCode().equals(ProposalConstant.DETERMINE)) {
|
if (proposalInfo.getResultCode().equals(ProposalConstant.DETERMINE)) {
|
||||||
int stateCode = proposalProcessService.getStateCode(proposalId, ProposalStateDirectionEnum.NEXT, false);
|
int stateCode = proposalProcessService.getStateCode(proposalId, ProposalStateDirectionEnum.NEXT, false);
|
||||||
proposalInfo.setStateCode(stateCode);
|
proposalInfo.setStateCode(stateCode);
|
||||||
|
//插入领导审批记录
|
||||||
|
ProposalBranchLeaderSuffixAudit leaderSuffixAudit = new ProposalBranchLeaderSuffixAudit();
|
||||||
|
leaderSuffixAudit.setProposalId(proposalId);
|
||||||
|
leaderSuffixAudit.setUnderTakeId(replyUnitId);
|
||||||
|
leaderSuffixAudit.setIsMaster(true);
|
||||||
|
leaderSuffixAudit.setIsAudit(false);
|
||||||
|
dao().insert(leaderSuffixAudit);
|
||||||
|
|
||||||
//反馈评分待办
|
ProposalToDoHandler.CREATE_BRANCH_LEADER_SUFFIX_AUDIT_TASK.exec(proposalId, NutMap.NEW().addv("leaderSuffixAudit", leaderSuffixAudit));
|
||||||
ProposalToDoHandler.CREATE_FEEDBACK_TASK.exec(proposalId, null);
|
|
||||||
} else {
|
} else {
|
||||||
proposalInfo.setStateCode(ProposalState.FINISH);
|
proposalInfo.setStateCode(ProposalState.FINISH);
|
||||||
//流程完结
|
//流程完结
|
||||||
|
|||||||
@@ -59,6 +59,15 @@ public class QsvSurveyController {
|
|||||||
return Result.success(report);
|
return Result.success(report);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@Ok("void")
|
||||||
|
@RequiresPermissions("qsv.survey")
|
||||||
|
public void exportReportXlsx(String activityId, HttpServletResponse response){
|
||||||
|
qsvSurveyService.exportReportXlsx(activityId, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 选项选择详情
|
// 选项选择详情
|
||||||
@At
|
@At
|
||||||
@RequiresPermissions("qsv.survey")
|
@RequiresPermissions("qsv.survey")
|
||||||
@@ -72,8 +81,9 @@ public class QsvSurveyController {
|
|||||||
// 用户答题
|
// 用户答题
|
||||||
@At
|
@At
|
||||||
@RequiresPermissions("qsv.survey")
|
@RequiresPermissions("qsv.survey")
|
||||||
public Result userAnswer(@Valid String activityId) {
|
public Result userAnswer(PageForm pageForm, @Valid String activityId) { //@Valid String activityId
|
||||||
NutMap map = qsvSurveyService.userAnswer(activityId);
|
// NutMap map = qsvSurveyService.userAnswer(activityId);
|
||||||
|
NutMap map = qsvSurveyService.userAnswer(pageForm, activityId);
|
||||||
return Result.success(map);
|
return Result.success(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,6 +99,7 @@ public class QsvSurveyController {
|
|||||||
|
|
||||||
// 导出用户答题记录xlsx
|
// 导出用户答题记录xlsx
|
||||||
@At
|
@At
|
||||||
|
@Ok("void")
|
||||||
@RequiresPermissions("qsv.survey")
|
@RequiresPermissions("qsv.survey")
|
||||||
public void exportUserAnswerXlsx(@Valid String activityId, HttpServletResponse response) {
|
public void exportUserAnswerXlsx(@Valid String activityId, HttpServletResponse response) {
|
||||||
qsvSurveyService.exportUserAnswerXlsx(activityId, response);
|
qsvSurveyService.exportUserAnswerXlsx(activityId, response);
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class H5QsvSurveyController {
|
|||||||
QsvUserAnswerRecord answerRecord = dao.fetch(QsvUserAnswerRecord.class, Cnd.where("activityId", "=", activityId)
|
QsvUserAnswerRecord answerRecord = dao.fetch(QsvUserAnswerRecord.class, Cnd.where("activityId", "=", activityId)
|
||||||
.and("userId", "=", ShiroUtil.getUserId()));
|
.and("userId", "=", ShiroUtil.getUserId()));
|
||||||
if (answerRecord == null) {
|
if (answerRecord == null) {
|
||||||
List<QsvSubject> subjects = dao.query(QsvSubject.class, Cnd.where("activityId", "=", activityId));
|
List<QsvSubject> subjects = dao.query(QsvSubject.class, Cnd.where("activityId", "=", activityId).asc("sortNum"));
|
||||||
qsvUserAnswerRecordService.insertRecord(activityId, subjects.stream().map(QsvSubject::getId).toList());
|
qsvUserAnswerRecordService.insertRecord(activityId, subjects.stream().map(QsvSubject::getId).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public class H5QsvSurveyController {
|
|||||||
|
|
||||||
answerRecordId = answerRecord2.getId();
|
answerRecordId = answerRecord2.getId();
|
||||||
|
|
||||||
List<QsvSubject> subjects = dao.query(QsvSubject.class, Cnd.where("id", "in", answerRecord2.getSubjectIds()));
|
List<QsvSubject> subjects = dao.query(QsvSubject.class, Cnd.where("id", "in", answerRecord2.getSubjectIds()).asc("sortNum"));
|
||||||
dao.fetchLinks(subjects, "options", Cnd.NEW().asc("sortNum"));
|
dao.fetchLinks(subjects, "options", Cnd.NEW().asc("sortNum"));
|
||||||
|
|
||||||
for (QsvSubject subject : subjects) {
|
for (QsvSubject subject : subjects) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.v.nutz.zhgh.qsv.service;
|
package io.v.nutz.zhgh.qsv.service;
|
||||||
|
|
||||||
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.base.service.BaseService;
|
import io.v.nutz.base.service.BaseService;
|
||||||
import io.v.nutz.zhgh.qsv.models.QsvUserAnswerRecord;
|
import io.v.nutz.zhgh.qsv.models.QsvUserAnswerRecord;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
@@ -11,7 +12,10 @@ public interface QsvSurveyService extends BaseService<QsvUserAnswerRecord> {
|
|||||||
|
|
||||||
List<NutMap> report(String activityId);
|
List<NutMap> report(String activityId);
|
||||||
|
|
||||||
|
void exportReportXlsx(String activityId, HttpServletResponse response);
|
||||||
|
|
||||||
void exportUserAnswerXlsx(String activityId, HttpServletResponse response);
|
void exportUserAnswerXlsx(String activityId, HttpServletResponse response);
|
||||||
|
|
||||||
NutMap userAnswer(String activityId);
|
// NutMap userAnswer(String activityId);
|
||||||
|
NutMap userAnswer(PageForm pageForm, String activityId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
|||||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
|
import cn.afterturn.easypoi.excel.export.ExcelExportService;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
|
import io.v.nutz.base.page.Pagination;
|
||||||
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.base.service.impl.BaseServiceImpl;
|
import io.v.nutz.base.service.impl.BaseServiceImpl;
|
||||||
import io.v.nutz.base.utils.CommonDownloadUtil;
|
import io.v.nutz.base.utils.CommonDownloadUtil;
|
||||||
import io.v.nutz.zhgh.qsv.models.QsvActivity;
|
import io.v.nutz.zhgh.qsv.models.QsvActivity;
|
||||||
@@ -16,6 +19,7 @@ import io.v.nutz.zhgh.qsv.models.QsvUserAnswerRecord;
|
|||||||
import io.v.nutz.zhgh.qsv.service.QsvSurveyService;
|
import io.v.nutz.zhgh.qsv.service.QsvSurveyService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
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.Sqls;
|
||||||
@@ -79,6 +83,10 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
}
|
}
|
||||||
// 处理单选类型题目 处理多选类型题目
|
// 处理单选类型题目 处理多选类型题目
|
||||||
else if ("radio".equals(subjectType) || "checkbox".equals(subjectType)) {
|
else if ("radio".equals(subjectType) || "checkbox".equals(subjectType)) {
|
||||||
|
long selectTotal = answerExtList.stream()
|
||||||
|
.filter(ext -> ext.containsKey(subject.getString("id")))
|
||||||
|
.count();
|
||||||
|
|
||||||
subjectOptions.forEach(subjectOption -> {
|
subjectOptions.forEach(subjectOption -> {
|
||||||
long selectCount = answerExtList.stream()
|
long selectCount = answerExtList.stream()
|
||||||
.filter(ext ->
|
.filter(ext ->
|
||||||
@@ -89,15 +97,22 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
&& jsonObject.getJSONArray("optionIds").contains(subjectOption.getString("id"));
|
&& jsonObject.getJSONArray("optionIds").contains(subjectOption.getString("id"));
|
||||||
})
|
})
|
||||||
.count();
|
.count();
|
||||||
|
long round = Math.round((double) selectCount / selectTotal * 100);
|
||||||
|
subjectOption.put("selectPercent", round + "%");
|
||||||
subjectOption.put("selectCount", selectCount);
|
subjectOption.put("selectCount", selectCount);
|
||||||
});
|
});
|
||||||
|
|
||||||
long selectTotal = answerExtList.stream()
|
subjectOptions.sort((o1, o2) -> {
|
||||||
.filter(ext -> ext.containsKey(subject.getString("id")))
|
int count1 = o1.getInt("selectCount");
|
||||||
.count();
|
int count2 = o2.getInt("selectCount");
|
||||||
|
if (count1 == count2) {
|
||||||
|
return Integer.compare(o1.getInt("sortNum"), o2.getInt("sortNum"));
|
||||||
|
}
|
||||||
|
return Integer.compare(count2, count1);
|
||||||
|
});
|
||||||
|
|
||||||
subject.put("selectTotal", selectTotal);
|
subject.put("selectTotal", selectTotal);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加选项到题目中
|
// 添加选项到题目中
|
||||||
subject.addv("options", subjectOptions);
|
subject.addv("options", subjectOptions);
|
||||||
}
|
}
|
||||||
@@ -109,6 +124,32 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exportReportXlsx(String activityId, HttpServletResponse response) {
|
||||||
|
List<NutMap> report = report(activityId);
|
||||||
|
|
||||||
|
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||||
|
exportEntities.add(new ExcelExportEntity("选项名称", "text", 20));
|
||||||
|
exportEntities.add(new ExcelExportEntity("选择人数", "selectCount", 20));
|
||||||
|
exportEntities.add(new ExcelExportEntity("选择比例", "selectPercent", 20));
|
||||||
|
|
||||||
|
Map<String, List<NutMap>> listMap = report.stream().collect(Collectors.groupingBy(v -> v.getString("id")));
|
||||||
|
Workbook workbook = new XSSFWorkbook();
|
||||||
|
listMap.forEach((k, v) -> {
|
||||||
|
NutMap nutMap = v.get(0);
|
||||||
|
ExcelExportService service = new ExcelExportService();
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setTitle(nutMap.getString("title"));
|
||||||
|
exportParams.setSheetName(nutMap.getString("title"));
|
||||||
|
exportParams.setType(ExcelType.XSSF);
|
||||||
|
service.createSheetForMap(workbook, exportParams, exportEntities, nutMap.getList("options", NutMap.class));
|
||||||
|
});
|
||||||
|
|
||||||
|
CommonDownloadUtil.download("调研分析.xlsx", workbook, response);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exportUserAnswerXlsx(String activityId, HttpServletResponse response) {
|
public void exportUserAnswerXlsx(String activityId, HttpServletResponse response) {
|
||||||
// 检查活动ID是否为空
|
// 检查活动ID是否为空
|
||||||
@@ -160,16 +201,24 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NutMap userAnswer(String activityId) {
|
public NutMap userAnswer(PageForm pageForm, String activityId) {
|
||||||
// 检查活动ID是否为空
|
// 检查活动ID是否为空
|
||||||
if (activityId == null || activityId.isEmpty()) {
|
if (activityId == null || activityId.isEmpty()) {
|
||||||
throw new IllegalArgumentException("活动ID不能为空");
|
throw new IllegalArgumentException("活动ID不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.and("activityId", "=", activityId);
|
||||||
|
cnd.and("isFinish", "=", true);
|
||||||
|
// Cnd.where("activityId", "=", activityId)
|
||||||
|
// .and("isFinish", "=", true)
|
||||||
|
Pagination pagination = listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
|
||||||
|
List<NutMap> answerRecords = pagination.getList();
|
||||||
|
|
||||||
// 查询用户答题记录
|
// 查询用户答题记录
|
||||||
List<QsvUserAnswerRecord> answerRecords = dao().query(QsvUserAnswerRecord.class, Cnd.where("activityId", "=", activityId)
|
// List<QsvUserAnswerRecord> answerRecords = dao().query(QsvUserAnswerRecord.class, Cnd.where("activityId", "=", activityId)
|
||||||
.and("isFinish", "=", true));
|
// .and("isFinish", "=", true));
|
||||||
// 将答题记录的扩展JSON转换为JSONObject列表
|
// 将答题记录的扩展JSON转换为JSONObject列表
|
||||||
// List<JSONObject> answerExtList = answerRecords.stream().map(QsvUserAnswerRecord::getExtJson).toList();
|
// List<JSONObject> answerExtList = answerRecords.stream().map(QsvUserAnswerRecord::getExtJson).toList();
|
||||||
|
|
||||||
@@ -188,7 +237,33 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
// 构建Excel导出实体
|
// 构建Excel导出实体
|
||||||
List<ExcelExportEntity> excelExportEntities = buildExcelExportEntities(subjects);
|
List<ExcelExportEntity> excelExportEntities = buildExcelExportEntities(subjects);
|
||||||
// 构建答题记录列表
|
// 构建答题记录列表
|
||||||
List<NutMap> list = buildAnswerRecords(answerRecords, subjectMap, options);
|
List<NutMap> list = answerRecords.stream().map(record -> {
|
||||||
|
NutMap map = NutMap.NEW()
|
||||||
|
.addv("id", record.getString("id"))
|
||||||
|
.addv("loginName", record.getString("loginName"))
|
||||||
|
.addv("userName", record.getString("userName"))
|
||||||
|
.addv("unitName", record.getString("unitName"))
|
||||||
|
.addv("unionName", record.getString("unionName"));
|
||||||
|
JSONObject extJson = record.getAs("extJson", JSONObject.class);
|
||||||
|
extJson.forEach((k, v) -> {
|
||||||
|
JSONObject jsonVal = (JSONObject) v;
|
||||||
|
|
||||||
|
String type = subjectMap.get(k).getType();
|
||||||
|
if (type.equals("text")) {
|
||||||
|
map.addv(k, jsonVal.getStr("text"));
|
||||||
|
} else if (type.equals("radio") || type.equals("checkbox")) {
|
||||||
|
JSONArray optionIds = jsonVal.getJSONArray("optionIds");
|
||||||
|
String selectOptionTexts = options.stream().filter(option -> optionIds.contains(option.getId()))
|
||||||
|
.map(QsvOption::getText).collect(Collectors.joining(";"));
|
||||||
|
map.addv(k, selectOptionTexts);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return map;
|
||||||
|
}).toList();
|
||||||
|
pagination.setList(list);
|
||||||
|
|
||||||
|
|
||||||
|
// List<NutMap> list = buildAnswerRecords(answerRecords, subjectMap, options);
|
||||||
|
|
||||||
// 构建表格列信息
|
// 构建表格列信息
|
||||||
List<NutMap> tableColumns = excelExportEntities.stream()
|
List<NutMap> tableColumns = excelExportEntities.stream()
|
||||||
@@ -197,7 +272,7 @@ public class QsvSurveyServiceImpl extends BaseServiceImpl<QsvUserAnswerRecord> i
|
|||||||
|
|
||||||
return NutMap.NEW()
|
return NutMap.NEW()
|
||||||
.addv("tableColumns", tableColumns)
|
.addv("tableColumns", tableColumns)
|
||||||
.addv("tableData", list);
|
.addv("tableData", pagination);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException("获取用户答题记录失败", e);
|
throw new RuntimeException("获取用户答题记录失败", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.v.nutz.zhgh.staffmanage.member.constant;
|
package io.v.nutz.zhgh.staffmanage.member.constant;
|
||||||
|
|
||||||
|
import com.aspose.slides.internal.og.and;
|
||||||
import io.v.nutz.base.annontation.SelectEnum;
|
import io.v.nutz.base.annontation.SelectEnum;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -26,7 +27,7 @@ public enum MemberChangeType {
|
|||||||
RESIGN("RESIGN","辞职"),
|
RESIGN("RESIGN","辞职"),
|
||||||
OUT("OUT","调出"),
|
OUT("OUT","调出"),
|
||||||
LEAVE_OFFICE("LEAVE_OFFICE","离职"),
|
LEAVE_OFFICE("LEAVE_OFFICE","离职"),
|
||||||
OTHER("OTHER","其他"),
|
OTHER("OTHER","其他减员"),
|
||||||
UNIT_CHANGE("UNIT_CHANGE","单位异动"),
|
UNIT_CHANGE("UNIT_CHANGE","单位异动"),
|
||||||
UNION_CHANGE("UNION_CHANGE","工会关系异动"),
|
UNION_CHANGE("UNION_CHANGE","工会关系异动"),
|
||||||
BASIC_CHANGE("BASIC_CHANGE","基本信息异动");
|
BASIC_CHANGE("BASIC_CHANGE","基本信息异动");
|
||||||
|
|||||||
+13
@@ -8,9 +8,11 @@ import cn.wizzer.framework.page.Pagination;
|
|||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.model.Audit;
|
import io.v.nutz.base.model.Audit;
|
||||||
import io.v.nutz.base.utils.MsgApi;
|
import io.v.nutz.base.utils.MsgApi;
|
||||||
|
import io.v.nutz.base.utils.Roles;
|
||||||
import io.v.nutz.base.utils.Vi;
|
import io.v.nutz.base.utils.Vi;
|
||||||
import io.v.nutz.sys.models.Sys_union;
|
import io.v.nutz.sys.models.Sys_union;
|
||||||
import io.v.nutz.sys.models.Sys_user;
|
import io.v.nutz.sys.models.Sys_user;
|
||||||
|
import io.v.nutz.sys.models.Sys_user_role;
|
||||||
import io.v.nutz.sys.models.User;
|
import io.v.nutz.sys.models.User;
|
||||||
import io.v.nutz.sys.services.SysLocalProcessService;
|
import io.v.nutz.sys.services.SysLocalProcessService;
|
||||||
import io.v.nutz.sys.services.SysUserService;
|
import io.v.nutz.sys.services.SysUserService;
|
||||||
@@ -166,6 +168,17 @@ public class MemberApplyBranchUnionAuditController {
|
|||||||
sysUser.setId(user.getId());
|
sysUser.setId(user.getId());
|
||||||
dao.updateIgnoreNull(sysUser);
|
dao.updateIgnoreNull(sysUser);
|
||||||
|
|
||||||
|
// 还要设置会员角色
|
||||||
|
int count = dao.count(Sys_user_role.class, Cnd.where("userId", "=", user.getId()).and("roleId", "=", Roles.MEMBER));
|
||||||
|
if (count == 0) {
|
||||||
|
Sys_user_role userRole = new Sys_user_role();
|
||||||
|
userRole.setUserId(user.getId());
|
||||||
|
userRole.setRoleId(Roles.MEMBER);
|
||||||
|
dao.insert(userRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
sysUserService.deleteCacheAndUpdate(user.getId());
|
||||||
|
|
||||||
MemberApplyToDoHandler.COMPLETE_PROCESS.exec(record, null);
|
MemberApplyToDoHandler.COMPLETE_PROCESS.exec(record, null);
|
||||||
String content = "尊敬的%s老师,您已正式成为杭医工会会员,会员关系在%s,欢迎您的加入!"
|
String content = "尊敬的%s老师,您已正式成为杭医工会会员,会员关系在%s,欢迎您的加入!"
|
||||||
.formatted(user.getUsername(), union.getUnionname());
|
.formatted(user.getUsername(), union.getUnionname());
|
||||||
|
|||||||
+7
-4
@@ -362,6 +362,7 @@ public class MemberChangeManageController {
|
|||||||
public Object allIsWelfareMember(PageForm pageForm,
|
public Object allIsWelfareMember(PageForm pageForm,
|
||||||
@Param(value = "startDate", required = false) String startDate,
|
@Param(value = "startDate", required = false) String startDate,
|
||||||
@Param(value = "endDate", required = false) String endDate,
|
@Param(value = "endDate", required = false) String endDate,
|
||||||
|
@Param(value = "birthMonth", required = false) String birthMonth,
|
||||||
@Param(value = "year", required = false) Integer year,
|
@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "unionId", required = false) String[] unionId,
|
@Param(value = "unionId", required = false) String[] unionId,
|
||||||
@Param(value = "unitId", required = false) String[] unitId,
|
@Param(value = "unitId", required = false) String[] unitId,
|
||||||
@@ -380,7 +381,7 @@ public class MemberChangeManageController {
|
|||||||
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord,
|
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord,
|
||||||
@Param(value = "isAppendWelfareMember", required = false) Boolean isAppendWelfareMember) {
|
@Param(value = "isAppendWelfareMember", required = false) Boolean isAppendWelfareMember) {
|
||||||
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, unionId, unitId, personTypes, userStates, null, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, birthMonth, unionId, unitId, personTypes, userStates, null, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT u.id from $table
|
SELECT u.id from $table
|
||||||
LEFT JOIN sys_user_role sur ON sur.userid = u.id
|
LEFT JOIN sys_user_role sur ON sur.userid = u.id
|
||||||
@@ -420,9 +421,9 @@ public class MemberChangeManageController {
|
|||||||
|
|
||||||
|
|
||||||
Trans.exec(() -> {
|
Trans.exec(() -> {
|
||||||
// if (!isAppendWelfareMember) {
|
if (!isAppendWelfareMember) {
|
||||||
// memberService.update(Chain.make("welfareMember", WelfareMemberMode.NONE.getCode()), Cnd.where("welfareMember", "=", WelfareMemberMode.NORMAL.getCode()));
|
memberService.update(Chain.make("welfareMember", WelfareMemberMode.NONE.getCode()), Cnd.where("welfareMember", "=", WelfareMemberMode.NORMAL.getCode()));
|
||||||
// }
|
}
|
||||||
// memberService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("member", "=", MemberMode.NORMAL.getCode()).and("id", "in", ids));
|
// memberService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("member", "=", MemberMode.NORMAL.getCode()).and("id", "in", ids));
|
||||||
dao.update(Sys_user.class, Chain.make("welfareMember", true), Cnd.where("id", "in", ids));
|
dao.update(Sys_user.class, Chain.make("welfareMember", true), Cnd.where("id", "in", ids));
|
||||||
});
|
});
|
||||||
@@ -729,6 +730,8 @@ public class MemberChangeManageController {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage());
|
log.error(e.getMessage());
|
||||||
return Result.error();
|
return Result.error();
|
||||||
|
} finally {
|
||||||
|
lock.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -73,6 +73,7 @@ public class MemberInquireIntegrateController {
|
|||||||
@Param(value = "isUnion", required = false) String isUnion,
|
@Param(value = "isUnion", required = false) String isUnion,
|
||||||
@Param(value = "startDate", required = false) String startDate,
|
@Param(value = "startDate", required = false) String startDate,
|
||||||
@Param(value = "endDate", required = false) String endDate,
|
@Param(value = "endDate", required = false) String endDate,
|
||||||
|
@Param(value = "birthMonth", required = false) String birthMonth,
|
||||||
@Param(value = "year", required = false) Integer year,
|
@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "unionId", required = false) String[] unionId,
|
@Param(value = "unionId", required = false) String[] unionId,
|
||||||
@Param(value = "unitId", required = false) String[] unitId,
|
@Param(value = "unitId", required = false) String[] unitId,
|
||||||
@@ -93,7 +94,7 @@ public class MemberInquireIntegrateController {
|
|||||||
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord) {
|
@Param(value = "memberSearchKeyWord", required = false) String memberSearchKeyWord) {
|
||||||
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
|
|
||||||
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, unionId, unitId, personTypes, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, birthMonth, unionId, unitId, personTypes, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
||||||
|
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT u.* from $table
|
SELECT u.* from $table
|
||||||
@@ -442,6 +443,7 @@ public class MemberInquireIntegrateController {
|
|||||||
@Param(value = "searchKeyword", required = false) String searchKeyword,
|
@Param(value = "searchKeyword", required = false) String searchKeyword,
|
||||||
@Param(value = "startDate", required = false) String startDate,
|
@Param(value = "startDate", required = false) String startDate,
|
||||||
@Param(value = "endDate", required = false) String endDate,
|
@Param(value = "endDate", required = false) String endDate,
|
||||||
|
@Param(value = "birthMonth", required = false) String birthMonth,
|
||||||
@Param(value = "year", required = false) Integer year,
|
@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "unionId", required = false) String[] unionId,
|
@Param(value = "unionId", required = false) String[] unionId,
|
||||||
@Param(value = "unitId", required = false) String[] unitId,
|
@Param(value = "unitId", required = false) String[] unitId,
|
||||||
@@ -464,7 +466,7 @@ public class MemberInquireIntegrateController {
|
|||||||
try {
|
try {
|
||||||
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
|
||||||
|
|
||||||
Cnd cnd = MemberUtils.getCnd(null, startDate, endDate, unionId, unitId, personTypes, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
Cnd cnd = MemberUtils.getCnd(null, startDate, endDate, birthMonth, unionId, unitId, personTypes, userStates, preparedBys, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
|
||||||
|
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT u.* from $table
|
SELECT u.* from $table
|
||||||
|
|||||||
@@ -239,5 +239,10 @@ public class MemberChangeRecord {
|
|||||||
@PrevInsert(now = true)
|
@PrevInsert(now = true)
|
||||||
private Date applyDateTime;
|
private Date applyDateTime;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("福利享受截止日期")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
private String welfareStopDate;
|
||||||
|
|
||||||
private Boolean edit;
|
private Boolean edit;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.v.nutz.zhgh.staffmanage.member.utils;
|
package io.v.nutz.zhgh.staffmanage.member.utils;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
import io.v.nutz.zhgh.activity.models.ActivityUserCnd;
|
import io.v.nutz.zhgh.activity.models.ActivityUserCnd;
|
||||||
@@ -22,6 +23,7 @@ public class MemberUtils {
|
|||||||
public static Cnd getCnd(PageForm pageForm,
|
public static Cnd getCnd(PageForm pageForm,
|
||||||
String startDate,
|
String startDate,
|
||||||
String endDate,
|
String endDate,
|
||||||
|
String birthMonth,
|
||||||
String[] unionId,
|
String[] unionId,
|
||||||
String[] unitId,
|
String[] unitId,
|
||||||
String[] personTypes,
|
String[] personTypes,
|
||||||
@@ -76,7 +78,7 @@ public class MemberUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!Lang.isEmptyArray(age)) {
|
if (!Lang.isEmptyArray(age)) {
|
||||||
if (!age[1].equals("0")) {
|
if (!"0".equals(age[1])) {
|
||||||
if (reverseSelection) {
|
if (reverseSelection) {
|
||||||
cnd.andNot("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", "between", age);
|
cnd.andNot("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", "between", age);
|
||||||
} else {
|
} else {
|
||||||
@@ -117,6 +119,9 @@ public class MemberUtils {
|
|||||||
cnd.and(group);*/
|
cnd.and(group);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(birthMonth)) {
|
||||||
|
cnd.and("MONTH(birthday)", EQ_OR_NEQ_OP, NumberUtil.parseInt(birthMonth));
|
||||||
|
}
|
||||||
cnd.andEX("u.unionid", IN_OR_NIN_OP, unionId);
|
cnd.andEX("u.unionid", IN_OR_NIN_OP, unionId);
|
||||||
cnd.andEX("u.unitid", IN_OR_NIN_OP, unitId);
|
cnd.andEX("u.unitid", IN_OR_NIN_OP, unitId);
|
||||||
cnd.andEX("u.threeUnitId", IN_OR_NIN_OP, threeUnitId);
|
cnd.andEX("u.threeUnitId", IN_OR_NIN_OP, threeUnitId);
|
||||||
|
|||||||
+7
-7
@@ -106,13 +106,13 @@ public class SourceChangeManageController {
|
|||||||
cnd.and(seg);
|
cnd.and(seg);
|
||||||
}
|
}
|
||||||
|
|
||||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
cnd.andEX("u.unionId", "=", pageForm.getUnionId());
|
||||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
cnd.andEX("u.unitId", "=", pageForm.getUnitId());
|
||||||
cnd.andEX("sex", "=", pageForm.getSex());
|
cnd.andEX("u.sex", "=", pageForm.getSex());
|
||||||
cnd.andEX("personType", "=", pageForm.getPersonType());
|
cnd.andEX("scmt.personType", "=", pageForm.getPersonType());
|
||||||
cnd.andEX("preparedBy", "=", pageForm.getPreparedBy());
|
cnd.andEX("scmt.preparedBy", "=", pageForm.getPreparedBy());
|
||||||
cnd.andEX("userState", "=", pageForm.getUserState());
|
cnd.andEX("scmt.userState", "=", pageForm.getUserState());
|
||||||
cnd.andEX("isOperate", "=", pageForm.getIsOperate());
|
cnd.andEX("scmt.isOperate", "=", pageForm.getIsOperate());
|
||||||
if (StrUtil.isAllNotBlank(pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())) {
|
if (StrUtil.isAllNotBlank(pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())) {
|
||||||
cnd.and(new Static(String.format("Date(changeTime) >= '%s' and Date(changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())));
|
cnd.and(new Static(String.format("Date(changeTime) >= '%s' and Date(changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+3
-1
@@ -133,7 +133,7 @@ public class SpecialStaffManageController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@RequiresPermissions("staff.special.manage")
|
@RequiresPermissions("staff.special.manage")
|
||||||
public Result queryUser(String keyWord) {
|
public Result queryUser(String keyWord, Boolean flag) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
select
|
select
|
||||||
id,
|
id,
|
||||||
@@ -148,7 +148,9 @@ public class SpecialStaffManageController {
|
|||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
|
if (flag) {
|
||||||
cnd.and("id", "not in", "(select userId from special_staff)");
|
cnd.and("id", "not in", "(select userId from special_staff)");
|
||||||
|
}
|
||||||
if (StrUtil.isNotBlank(keyWord)) {
|
if (StrUtil.isNotBlank(keyWord)) {
|
||||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
seg.orLike("username", keyWord);
|
seg.orLike("username", keyWord);
|
||||||
|
|||||||
@@ -13,11 +13,14 @@ import cn.hutool.core.lang.Assert;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.base.Result;
|
import cn.wizzer.framework.base.Result;
|
||||||
|
import cn.wizzer.framework.page.Pagination;
|
||||||
import io.v.nutz.base.annontation.ViReturn;
|
import io.v.nutz.base.annontation.ViReturn;
|
||||||
import io.v.nutz.base.dao.CndPlus;
|
import io.v.nutz.base.dao.CndPlus;
|
||||||
import io.v.nutz.base.query.PageForm;
|
import io.v.nutz.base.query.PageForm;
|
||||||
|
import io.v.nutz.base.utils.MsgApi;
|
||||||
import io.v.nutz.base.utils.Vi;
|
import io.v.nutz.base.utils.Vi;
|
||||||
import io.v.nutz.base.utils.ViTool;
|
import io.v.nutz.base.utils.ViTool;
|
||||||
|
import io.v.nutz.sys.models.User;
|
||||||
import io.v.nutz.web.commons.base.Globals;
|
import io.v.nutz.web.commons.base.Globals;
|
||||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||||
import io.v.nutz.zhgh.welfare.feature.WelfareFeature;
|
import io.v.nutz.zhgh.welfare.feature.WelfareFeature;
|
||||||
@@ -42,6 +45,7 @@ import org.nutz.ioc.loader.annotation.Inject;
|
|||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.json.Json;
|
import org.nutz.json.Json;
|
||||||
import org.nutz.lang.Lang;
|
import org.nutz.lang.Lang;
|
||||||
|
import org.nutz.lang.random.R;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
import org.nutz.mvc.annotation.AdaptBy;
|
import org.nutz.mvc.annotation.AdaptBy;
|
||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
@@ -71,15 +75,15 @@ import java.util.stream.Collectors;
|
|||||||
@At("/platform/welfare/list/mange")
|
@At("/platform/welfare/list/mange")
|
||||||
public class WelfareListController {
|
public class WelfareListController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Dao dao;
|
||||||
|
@Inject
|
||||||
|
private MsgApi msgApi;
|
||||||
@Inject
|
@Inject
|
||||||
private WelfareListService welfareListService;
|
private WelfareListService welfareListService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private WelfareProjectService projectService;
|
private WelfareProjectService projectService;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private Dao dao;
|
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@Ok("beetl:/platform/welfare/list/ListMange.html")
|
@Ok("beetl:/platform/welfare/list/ListMange.html")
|
||||||
@RequiresPermissions("welfare.list.mange")
|
@RequiresPermissions("welfare.list.mange")
|
||||||
@@ -116,7 +120,7 @@ public class WelfareListController {
|
|||||||
wus.userSign,
|
wus.userSign,
|
||||||
wus.courierNumber,
|
wus.courierNumber,
|
||||||
wus.receiveAddress,
|
wus.receiveAddress,
|
||||||
GROUP_CONCAT( DISTINCT wuso.optionName, '(', wus.selectNum, '份)' ) AS gist_list
|
GROUP_CONCAT( DISTINCT wuso.optionName, IF(wus.selectSpecs is not null, (CONCAT('—规格:', wus.selectSpecs)), ''), '(', wus.selectNum, '份)' ) AS gist_list
|
||||||
FROM
|
FROM
|
||||||
view_welfare_list wl
|
view_welfare_list wl
|
||||||
LEFT JOIN welfare_project_user_selection wus ON wus.welfareId = wl.projectId
|
LEFT JOIN welfare_project_user_selection wus ON wus.welfareId = wl.projectId
|
||||||
@@ -276,8 +280,9 @@ public class WelfareListController {
|
|||||||
selection.setSubjectId(v.getString("subjectId"));
|
selection.setSubjectId(v.getString("subjectId"));
|
||||||
selection.setSelectNum(v.getInt("selectNum"));
|
selection.setSelectNum(v.getInt("selectNum"));
|
||||||
selection.setUserSign(finalSign);
|
selection.setUserSign(finalSign);
|
||||||
|
selection.setSelectSpecs(v.getString("selectSpecs"));
|
||||||
return selection;
|
return selection;
|
||||||
}).collect(Collectors.toList());
|
}).toList();
|
||||||
|
|
||||||
List<WelfareUserSelection> userSelections1 = userSelections.stream().filter(v -> v.getSelectNum() > 0).collect(Collectors.toList());
|
List<WelfareUserSelection> userSelections1 = userSelections.stream().filter(v -> v.getSelectNum() > 0).collect(Collectors.toList());
|
||||||
dao.insert(userSelections1);
|
dao.insert(userSelections1);
|
||||||
@@ -394,8 +399,7 @@ public class WelfareListController {
|
|||||||
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
|
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
|
||||||
public Object importCourierNumber(@Param("file") TempFile file,
|
public Object importCourierNumber(@Param("file") TempFile file,
|
||||||
@Param("projectId") String projectId,
|
@Param("projectId") String projectId,
|
||||||
@Param("optionId") String optionId
|
@Param("optionId") String optionId) {
|
||||||
) {
|
|
||||||
if (Lang.isEmpty(file)) {
|
if (Lang.isEmpty(file)) {
|
||||||
return Result.error("上传的文件不能为空");
|
return Result.error("上传的文件不能为空");
|
||||||
}
|
}
|
||||||
@@ -668,4 +672,80 @@ public class WelfareListController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@RequiresPermissions("welfare.list.mange")
|
||||||
|
public Object queryNotWelfareListUsers(@Param("projectId") String projectId, @Param("query") String query){
|
||||||
|
if (StrUtil.isBlank(query)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
loginname,
|
||||||
|
username,
|
||||||
|
unitid,
|
||||||
|
unitname
|
||||||
|
FROM
|
||||||
|
`user`
|
||||||
|
$condition
|
||||||
|
AND id not in (select userId from welfare_list where projectId = @projectId)
|
||||||
|
""").setParam("projectId", projectId);
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||||
|
seg.orLike("loginname", query);
|
||||||
|
seg.orLike("username", query);
|
||||||
|
cnd.and(seg);
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
Pagination pagination = welfareListService.listPageMap(1, 10, sql);
|
||||||
|
return pagination;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@RequiresPermissions("welfare.list.mange")
|
||||||
|
public Object addWelfareList(@Param("projectId") String projectId, @Param("userIds") String[] userIds) {
|
||||||
|
List<String> userIdList = Arrays.stream(userIds).toList();
|
||||||
|
|
||||||
|
Sql sql = Sqls.create("select id,loginname,username,unionid,unitid,userState,personType from `user` where id in (@userIdList)")
|
||||||
|
.setParam("userIdList", userIdList);
|
||||||
|
sql.setCallback(Sqls.callback.maps());
|
||||||
|
dao.execute(sql);
|
||||||
|
List<NutMap> userInfoList = (List<NutMap>) sql.getResult();
|
||||||
|
|
||||||
|
List<WelfareList> welfareLists = userInfoList.stream().map(v -> {
|
||||||
|
WelfareList welfareList = new WelfareList();
|
||||||
|
welfareList.setId(R.UU32());
|
||||||
|
welfareList.setProjectId(projectId);
|
||||||
|
welfareList.setUserId(v.getString("id"));
|
||||||
|
welfareList.setWelfareUnitId(v.getString("unionid"));
|
||||||
|
welfareList.setWelfareSecondLevelUnitId(v.getString("unitid"));
|
||||||
|
welfareList.setIsReceive(null);
|
||||||
|
welfareList.setIsAutoSelect(null);
|
||||||
|
welfareList.setUserState(v.getString("userState"));
|
||||||
|
welfareList.setPersonType(v.getString("personType"));
|
||||||
|
return welfareList;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
dao.fastInsert(welfareLists);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@RequiresPermissions("welfare.list.mange")
|
||||||
|
public Object sendMsg(@Param("projectId") String projectId, @Param("title") String title,
|
||||||
|
@Param("content") String content, @Param("loginname") String loginname){
|
||||||
|
if (StrUtil.isNotBlank(loginname)) {
|
||||||
|
String link = Globals.AppDomain + "/mobile/welfare/list/receive?projectId=%s".formatted(projectId);
|
||||||
|
msgApi.sendMsg(List.of("DingTalk"), loginname, 2, title, content, "", link);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ public class WelfareMineController {
|
|||||||
WHEN wus.selectUserId IS NOT NULL THEN 1
|
WHEN wus.selectUserId IS NOT NULL THEN 1
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END AS isChoose,
|
END AS isChoose,
|
||||||
GROUP_CONCAT(DISTINCT wuso.optionName,wus.selectNum) AS gist_list,
|
GROUP_CONCAT( DISTINCT wuso.optionName, IF(wus.selectSpecs is not null, (CONCAT('—规格:', wus.selectSpecs)), ''), '(', wus.selectNum, '份)' ) AS gist_list,
|
||||||
wus.receiveAddress,
|
wus.receiveAddress,
|
||||||
wcn.courierNumber,
|
wcn.courierNumber,
|
||||||
wl.userId
|
wl.userId
|
||||||
@@ -121,7 +121,7 @@ public class WelfareMineController {
|
|||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
@RequiresPermissions("welfare.mine")
|
@RequiresPermissions("welfare.mine")
|
||||||
public Object getUserSelection(String projectId, String userId) {
|
public Object getUserSelection(String projectId, @Param(value = "userId", required = false) String userId) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
wpus.id AS selectId,
|
wpus.id AS selectId,
|
||||||
@@ -133,6 +133,7 @@ public class WelfareMineController {
|
|||||||
wpus.userSign,
|
wpus.userSign,
|
||||||
wpus.courierNumber,
|
wpus.courierNumber,
|
||||||
wpus.selectTime,
|
wpus.selectTime,
|
||||||
|
wpus.selectSpecs,
|
||||||
wpso.imgUrl,
|
wpso.imgUrl,
|
||||||
wpso.simpleDesc,
|
wpso.simpleDesc,
|
||||||
wpso.simpleDesc,
|
wpso.simpleDesc,
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import io.v.nutz.zhgh.welfare.model.WelfareProjectSubjectOption;
|
|||||||
import io.v.nutz.zhgh.welfare.model.WelfareUserSelection;
|
import io.v.nutz.zhgh.welfare.model.WelfareUserSelection;
|
||||||
import io.v.nutz.zhgh.welfare.service.WelfareListService;
|
import io.v.nutz.zhgh.welfare.service.WelfareListService;
|
||||||
import io.v.nutz.zhgh.welfare.service.WelfareProjectService;
|
import io.v.nutz.zhgh.welfare.service.WelfareProjectService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Chain;
|
import org.nutz.dao.Chain;
|
||||||
@@ -53,6 +54,7 @@ import java.util.stream.Collectors;
|
|||||||
* @date: 2021/2/3
|
* @date: 2021/2/3
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@IocBean
|
@IocBean
|
||||||
@Ok("json")
|
@Ok("json")
|
||||||
@At("/platform/welfare/project/mange")
|
@At("/platform/welfare/project/mange")
|
||||||
@@ -120,6 +122,7 @@ public class WelfareProjectMangeController {
|
|||||||
@RequiresPermissions("welfare.project.mange")
|
@RequiresPermissions("welfare.project.mange")
|
||||||
public Object save(WelfareProject project) {
|
public Object save(WelfareProject project) {
|
||||||
|
|
||||||
|
System.out.println(project);
|
||||||
|
|
||||||
Trans.exec(() -> {
|
Trans.exec(() -> {
|
||||||
project.setYear(DateUtil.thisYear());
|
project.setYear(DateUtil.thisYear());
|
||||||
@@ -202,6 +205,7 @@ public class WelfareProjectMangeController {
|
|||||||
optionChain.add("shoppingName", o.getShoppingName());
|
optionChain.add("shoppingName", o.getShoppingName());
|
||||||
optionChain.add("supplier", o.getSupplier());
|
optionChain.add("supplier", o.getSupplier());
|
||||||
optionChain.add("simpleDesc", o.getSimpleDesc());
|
optionChain.add("simpleDesc", o.getSimpleDesc());
|
||||||
|
optionChain.add("specs", o.getSpecs());
|
||||||
dao.insert(WelfareProjectSubjectOption.class, optionChain);
|
dao.insert(WelfareProjectSubjectOption.class, optionChain);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -296,7 +300,7 @@ public class WelfareProjectMangeController {
|
|||||||
@At
|
@At
|
||||||
@ViReturn
|
@ViReturn
|
||||||
@RequiresPermissions("welfare.list.mange")
|
@RequiresPermissions("welfare.list.mange")
|
||||||
public Object sendMsgToNotWelfareUsers(String projectId, String sendMsgValue) {
|
public Object sendMsgToNotWelfareUsers(String projectId, String title, String sendMsgValue) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
u.loginname
|
u.loginname
|
||||||
@@ -326,7 +330,7 @@ public class WelfareProjectMangeController {
|
|||||||
if ("51e3449b5f234dd58757de63142d6b48".equals(projectId)) {
|
if ("51e3449b5f234dd58757de63142d6b48".equals(projectId)) {
|
||||||
msgApi.sendMsg(List.of("DingTalk"), loginNames, 2, "答题纪念品!点开有惊喜!", sendMsgValue, "", link);
|
msgApi.sendMsg(List.of("DingTalk"), loginNames, 2, "答题纪念品!点开有惊喜!", sendMsgValue, "", link);
|
||||||
} else {
|
} else {
|
||||||
msgApi.sendMsg(List.of("DingTalk"), loginNames, 2, "职工福利", sendMsgValue, "", link);
|
msgApi.sendMsg(List.of("DingTalk"), loginNames, 2, title, sendMsgValue, "", link);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class WelfareUserChooseController {
|
|||||||
ELSE 0
|
ELSE 0
|
||||||
END AS isChoose,
|
END AS isChoose,
|
||||||
wus.selectTime,
|
wus.selectTime,
|
||||||
GROUP_CONCAT(DISTINCT wuso.optionName ,'(',wus.selectNum,'份)') AS gist_list,
|
GROUP_CONCAT( DISTINCT wuso.optionName, IF(wus.selectSpecs is not null, (CONCAT('—规格:', wus.selectSpecs)), ''), '(', wus.selectNum, '份)' ) AS gist_list,
|
||||||
wus.receiveAddress
|
wus.receiveAddress
|
||||||
FROM
|
FROM
|
||||||
welfare_project wp
|
welfare_project wp
|
||||||
|
|||||||
+2
-3
@@ -99,8 +99,7 @@ public class WelfareSingleController {
|
|||||||
@Param(value = "month", required = false) String month,
|
@Param(value = "month", required = false) String month,
|
||||||
@Param(value = "welfareUnitCode", required = false) String welfareUnitCode,
|
@Param(value = "welfareUnitCode", required = false) String welfareUnitCode,
|
||||||
@Param(value = "unionGroupId", required = false) String unionGroupId,
|
@Param(value = "unionGroupId", required = false) String unionGroupId,
|
||||||
@Param(value = "personType", required = false) String personType
|
@Param(value = "personType", required = false) String personType) {
|
||||||
) {
|
|
||||||
return welfareSingleService.pageData(projectId, month, welfareUnitCode, unionGroupId, personType);
|
return welfareSingleService.pageData(projectId, month, welfareUnitCode, unionGroupId, personType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -389,7 +388,7 @@ public class WelfareSingleController {
|
|||||||
u.idcard AS idCard,
|
u.idcard AS idCard,
|
||||||
u.mobile,
|
u.mobile,
|
||||||
IF(LOCATE('undefined',wpus.receiveAddress)>0,NULL,wpus.receiveAddress) as receiveAddress,
|
IF(LOCATE('undefined',wpus.receiveAddress)>0,NULL,wpus.receiveAddress) as receiveAddress,
|
||||||
GROUP_CONCAT(DISTINCT wpso.optionName ,'(',wpus.selectNum,'份)') optionName,
|
GROUP_CONCAT(DISTINCT wpso.optionName, IF(wpus.selectSpecs is not null, (CONCAT('—规格:', wpus.selectSpecs)), ''), '(',wpus.selectNum,'份)') optionName,
|
||||||
wpus.courierNumber
|
wpus.courierNumber
|
||||||
FROM
|
FROM
|
||||||
welfare_project_user_selection wpus
|
welfare_project_user_selection wpus
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.v.nutz.zhgh.welfare.model;
|
package io.v.nutz.zhgh.welfare.model;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
import io.v.nutz.base.model.BaseModel;
|
import io.v.nutz.base.model.BaseModel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@@ -7,6 +8,8 @@ import lombok.experimental.Accessors;
|
|||||||
import org.nutz.dao.entity.annotation.*;
|
import org.nutz.dao.entity.annotation.*;
|
||||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zxy
|
* @author zxy
|
||||||
* @Description TODO
|
* @Description TODO
|
||||||
@@ -90,6 +93,12 @@ public class WelfareProjectSubjectOption extends BaseModel {
|
|||||||
@ColDefine(type = ColType.VARCHAR,width = 100)
|
@ColDefine(type = ColType.VARCHAR,width = 100)
|
||||||
private String simpleDesc;
|
private String simpleDesc;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("商品规格")
|
||||||
|
@ColDefine(type = ColType.MYSQL_JSON)
|
||||||
|
private List<JSONObject> specs;
|
||||||
|
|
||||||
|
|
||||||
private Integer rank;
|
private Integer rank;
|
||||||
private Long selectCount;
|
private Long selectCount;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,6 +86,11 @@ public class WelfareUserSelection {
|
|||||||
@ColDefine(type = ColType.DATETIME)
|
@ColDefine(type = ColType.DATETIME)
|
||||||
private Date selectExpressDate;
|
private Date selectExpressDate;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("选择规格参数")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
|
private String selectSpecs;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public static class LogisticsTrace {
|
public static class LogisticsTrace {
|
||||||
//运单号物流流转当前最新变更时间
|
//运单号物流流转当前最新变更时间
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ public class WelfareSingleServiceImpl extends ViServiceImpl<WelfareProject> impl
|
|||||||
u.mobile,
|
u.mobile,
|
||||||
IF(LOCATE('undefined',wpus.receiveAddress)>0,NULL,wpus.receiveAddress) as receiveAddress,
|
IF(LOCATE('undefined',wpus.receiveAddress)>0,NULL,wpus.receiveAddress) as receiveAddress,
|
||||||
wpus.userSign,
|
wpus.userSign,
|
||||||
GROUP_CONCAT(DISTINCT wpso.optionName ,'(',wpus.selectNum,'份)') optionName,
|
GROUP_CONCAT(DISTINCT wpso.optionName, IF(wpus.selectSpecs is not null, (CONCAT('—规格:', wpus.selectSpecs)), ''), '(',wpus.selectNum,'份)') optionName,
|
||||||
wpus.courierNumber
|
wpus.courierNumber
|
||||||
FROM
|
FROM
|
||||||
welfare_project_user_selection wpus
|
welfare_project_user_selection wpus
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function include() {
|
|||||||
/**
|
/**
|
||||||
* 提案
|
* 提案
|
||||||
*/
|
*/
|
||||||
inputScript("/assets/platform/module/proposal/common.js?v=1.0.0")
|
inputScript("/assets/platform/module/proposal/common.js?v=1.0.1")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提案api
|
* 提案api
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ window.proposal = {
|
|||||||
|
|
||||||
LEADERAUDIT: 500,
|
LEADERAUDIT: 500,
|
||||||
UNITREPLY: 500,
|
UNITREPLY: 500,
|
||||||
FEEDBACKSCORE: 600,
|
// FEEDBACKSCORE: 600,
|
||||||
|
FEEDBACKSCORE: 800,
|
||||||
FINISH: 900,
|
FINISH: 900,
|
||||||
|
|
||||||
//开启的状态
|
//开启的状态
|
||||||
|
|||||||
@@ -406,7 +406,7 @@ ol,ul {
|
|||||||
left: 0;
|
left: 0;
|
||||||
width: 4px;
|
width: 4px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background-color: #ee0a24;
|
background-color: #1867b0;
|
||||||
-webkit-transform: translateY(-50%);
|
-webkit-transform: translateY(-50%);
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
content: ''
|
content: ''
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<th>活动名称</th>
|
<th>活动名称</th>
|
||||||
<td>{{ viewData.name }}</td>
|
<td>{{ viewData.name }}</td>
|
||||||
<th>活动类型</th>
|
<th>活动类型</th>
|
||||||
<td>{{ viewData.type === 1 ? "分工会活动" : viewData.type === 2 ? "协会协会活动" : "校工会活动" }}</td>
|
<td>{{ viewData.type === 40001 ? "校工会活动" : (viewData.type === 40002 ? "分工会活动" : "协会活动") }}</td>
|
||||||
<th>活动项目类型</th>
|
<th>活动项目类型</th>
|
||||||
<td>{{ viewData.projectTypeName }}( {{ viewData.projectTypeCode }})</td>
|
<td>{{ viewData.projectTypeName }}( {{ viewData.projectTypeCode }})</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="活动二维码"
|
:title="title"
|
||||||
:visible.sync="codeDialogVisible"
|
:visible.sync="codeDialogVisible"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
width="40%">
|
width="40%">
|
||||||
@@ -27,7 +27,7 @@ module.exports = {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
codeDialogVisible: false,
|
codeDialogVisible: false,
|
||||||
|
title: '活动二维码',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -47,7 +47,7 @@ module.exports = {
|
|||||||
var filename = name + '_' + (new Date()).getTime() + '.' + type;
|
var filename = name + '_' + (new Date()).getTime() + '.' + type;
|
||||||
this.saveFile(dataurl, filename);
|
this.saveFile(dataurl, filename);
|
||||||
},
|
},
|
||||||
openCode(url) {
|
openCode(url, title) {
|
||||||
this.codeDialogVisible = true
|
this.codeDialogVisible = true
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
$("#qrcode").html("")
|
$("#qrcode").html("")
|
||||||
@@ -59,6 +59,7 @@ module.exports = {
|
|||||||
correctLevel: 3 //容错级别,默认为2,最高为3,为了让用户扫码最快,容错级别应当设为最低
|
correctLevel: 3 //容错级别,默认为2,最高为3,为了让用户扫码最快,容错级别应当设为最低
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
this.title = title ? title : '活动二维码'
|
||||||
console.log(APP_DOMAIN + url)
|
console.log(APP_DOMAIN + url)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,10 +95,18 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="备注2">
|
<!-- <el-table-column label="备注2">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-input v-model="row.simpleDesc" type="textarea" max="100"></el-input>
|
<el-input v-model="row.simpleDesc" type="textarea" max="100"></el-input>
|
||||||
</template>
|
</template>
|
||||||
|
</el-table-column>-->
|
||||||
|
|
||||||
|
<el-table-column label="规格">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-link type="primary"
|
||||||
|
@click="openSpecs(scope.row.specs,idx,scope.$index)">编辑规格
|
||||||
|
</el-link>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="排序" width="120px">
|
<el-table-column label="排序" width="120px">
|
||||||
@@ -188,6 +196,46 @@
|
|||||||
<el-button type="primary" @click="saveRichText">确 定</el-button>
|
<el-button type="primary" @click="saveRichText">确 定</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:visible.sync="specsDialog"
|
||||||
|
title="编辑规格"
|
||||||
|
:append-to-body="true"
|
||||||
|
width="60%">
|
||||||
|
<el-table :data="specs" border size="small">
|
||||||
|
<el-table-column label="规格名称" prop="value">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-input v-model="row.value" maxlength="200"
|
||||||
|
placeholder="请输入规格名称"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column width="100px">
|
||||||
|
<template slot="header" slot-scope="scope">
|
||||||
|
<el-button type="primary" size="mini"
|
||||||
|
@click="specs.push({})">添加
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
size="mini"
|
||||||
|
@click="specs.splice(scope.$index,1)"
|
||||||
|
></el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="specsDialog = false">取 消</el-button>
|
||||||
|
<el-button type="danger" @click="specs = []">清 空</el-button>
|
||||||
|
<el-button type="primary" @click="saveSpecs">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -197,7 +245,7 @@ let questionRichTextEditor = null
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
components: {
|
components: {
|
||||||
vuedraggable: window.vuedraggable,
|
vuedraggable: window.vuedraggable
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
subject(val) {
|
subject(val) {
|
||||||
@@ -222,8 +270,11 @@ module.exports = {
|
|||||||
oidx: null,
|
oidx: null,
|
||||||
|
|
||||||
//富文本内容
|
//富文本内容
|
||||||
descRichTextContent: ''
|
descRichTextContent: "",
|
||||||
|
|
||||||
|
// 规格相关
|
||||||
|
specsDialog: false,
|
||||||
|
specs: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -249,11 +300,11 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
addSubject(type) {
|
addSubject(type) {
|
||||||
let subject = {
|
let subject = {
|
||||||
subjectName: '题目' + (this.subject.length + 1),
|
subjectName: "题目" + (this.subject.length + 1),
|
||||||
subjectType: type,
|
subjectType: type,
|
||||||
options: [
|
options: [
|
||||||
{optionName: '选项一', imgUrl: null},
|
{ optionName: "选项一", imgUrl: null },
|
||||||
{optionName: '选项一', imgUrl: null}
|
{ optionName: "选项一", imgUrl: null }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
this.subject.push(subject)
|
this.subject.push(subject)
|
||||||
@@ -289,6 +340,23 @@ module.exports = {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 规格相关
|
||||||
|
* @param specs
|
||||||
|
* @param sIdx
|
||||||
|
* @param oIdx
|
||||||
|
*/
|
||||||
|
openSpecs(specs, sIdx, oIdx) {
|
||||||
|
this.specs = specs ? specs : []
|
||||||
|
this.specsDialog = true
|
||||||
|
this.subjectIndex = sIdx
|
||||||
|
this.optionIndex = oIdx
|
||||||
|
},
|
||||||
|
saveSpecs() {
|
||||||
|
this.subject[this.subjectIndex]["options"][this.optionIndex].specs = this.specs
|
||||||
|
this.specsDialog = false
|
||||||
|
console.log(this.subject)
|
||||||
|
},
|
||||||
openDescRichText(richText, sIdx, oIdx) {
|
openDescRichText(richText, sIdx, oIdx) {
|
||||||
this.descRichTextContent = richText
|
this.descRichTextContent = richText
|
||||||
this.richTextDialog = true
|
this.richTextDialog = true
|
||||||
@@ -296,7 +364,7 @@ module.exports = {
|
|||||||
this.optionIndex = oIdx
|
this.optionIndex = oIdx
|
||||||
},
|
},
|
||||||
saveRichText() {
|
saveRichText() {
|
||||||
this.subject[this.subjectIndex]['options'][this.optionIndex].description = this.descRichTextContent
|
this.subject[this.subjectIndex]["options"][this.optionIndex].description = this.descRichTextContent
|
||||||
this.richTextDialog = false
|
this.richTextDialog = false
|
||||||
},
|
},
|
||||||
async getShoppingType() {
|
async getShoppingType() {
|
||||||
@@ -304,14 +372,14 @@ module.exports = {
|
|||||||
this.shoppingTypeOptions = resp.data
|
this.shoppingTypeOptions = resp.data
|
||||||
},
|
},
|
||||||
doCopy(row) {
|
doCopy(row) {
|
||||||
const input = document.createElement('input')
|
const input = document.createElement("input")
|
||||||
input.value = APP_DOMAIN + FILE_STREAM_PREVIEW_ADDRESS + "?id=" + row.id // 设置复制内容
|
input.value = APP_DOMAIN + FILE_STREAM_PREVIEW_ADDRESS + "?id=" + row.id // 设置复制内容
|
||||||
document.body.appendChild(input) // 添加临时实例
|
document.body.appendChild(input) // 添加临时实例
|
||||||
input.select() // 选择实例内容
|
input.select() // 选择实例内容
|
||||||
document.execCommand('Copy') // 执行复制
|
document.execCommand("Copy") // 执行复制
|
||||||
document.body.removeChild(input) // 删除临时实例
|
document.body.removeChild(input) // 删除临时实例
|
||||||
this.$message.success('复制成功!')
|
this.$message.success("复制成功!")
|
||||||
},
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|||||||
@@ -10,19 +10,19 @@
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="提案编号">{{ viewData.proposalCode }}</el-descriptions-item>
|
<el-descriptions-item label="提案编号">{{ viewData.proposalCode }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="提案人">{{
|
<el-descriptions-item label="提案人">{{
|
||||||
viewData.createUserName + '-' + viewData.loginname
|
viewData.createUserName + "-" + viewData.loginname
|
||||||
}}
|
}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="提案时间">{{ viewData.createTime }}</el-descriptions-item>
|
<el-descriptions-item label="提案时间">{{ viewData.createTime }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="教代会届次"> {{ viewData.meetingName || '暂无' }}</el-descriptions-item>
|
<el-descriptions-item label="教代会届次"> {{ viewData.meetingName || "暂无" }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="提案人工会">{{ viewData.unionName }}</el-descriptions-item>
|
<el-descriptions-item label="提案人工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||||
<el-descriptions-item :label="viewData.mannerCode!=='W03'?'代表团名称':'委员会名称'">
|
<el-descriptions-item :label="viewData.mannerCode!=='W03'?'代表团名称':'委员会名称'">
|
||||||
{{ viewData.mannerCode !== 'W03' ? viewData.delegationName : viewData.committeeName }}
|
{{ viewData.mannerCode !== "W03" ? viewData.delegationName : viewData.committeeName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="提案类型">{{ viewData.typeName }}</el-descriptions-item>
|
<el-descriptions-item label="提案类型">{{ viewData.typeName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="立案结果" span="2"> {{
|
<el-descriptions-item label="立案结果" span="2"> {{
|
||||||
viewData.resultName ? viewData.resultName : '暂无'
|
viewData.resultName ? viewData.resultName : "暂无"
|
||||||
}}
|
}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<!-- <el-descriptions-item label="提案方式" >{{ viewData.mannerName }}</el-descriptions-item>-->
|
<!-- <el-descriptions-item label="提案方式" >{{ viewData.mannerName }}</el-descriptions-item>-->
|
||||||
@@ -34,6 +34,11 @@
|
|||||||
<el-descriptions-item label="可行性分析" span="3">
|
<el-descriptions-item label="可行性分析" span="3">
|
||||||
<div class="text-left" v-html="viewData.measures"></div>
|
<div class="text-left" v-html="viewData.measures"></div>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="附件" span="3">
|
||||||
|
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||||
|
:files="viewData.files" :view="true"></file-upload>
|
||||||
|
<span v-else>无</span>
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="签  字" span="3">
|
<el-descriptions-item label="签  字" span="3">
|
||||||
<el-image v-if="viewData.createUserSign" :src="viewData.createUserSign" class="item-sign"
|
<el-image v-if="viewData.createUserSign" :src="viewData.createUserSign" class="item-sign"
|
||||||
fit="contain"></el-image>
|
fit="contain"></el-image>
|
||||||
@@ -41,9 +46,6 @@
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
|
||||||
:files="viewData.files" :view="true"></file-upload>
|
|
||||||
|
|
||||||
<slot name="seconded"></slot>
|
<slot name="seconded"></slot>
|
||||||
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
@@ -94,10 +96,10 @@
|
|||||||
<el-tab-pane label="团长审核" name="3" v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0">
|
<el-tab-pane label="团长审核" name="3" v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0">
|
||||||
<el-descriptions border>
|
<el-descriptions border>
|
||||||
<template v-for="(o,i) in viewData.delegationAudit">
|
<template v-for="(o,i) in viewData.delegationAudit">
|
||||||
<el-descriptions-item label="审核人">{{ o.username + '-' + o.loginName }}</el-descriptions-item>
|
<el-descriptions-item label="审核人">{{ o.username + "-" + o.loginName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核结果">
|
<el-descriptions-item label="审核结果">
|
||||||
{{ o.flag ? '通过' : '退回' }}
|
{{ o.flag ? "通过" : "退回" }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item span="3" label="审核意见">{{ o.opinion }}</el-descriptions-item>
|
<el-descriptions-item span="3" label="审核意见">{{ o.opinion }}</el-descriptions-item>
|
||||||
<el-descriptions-item span="3" label="团长签字">
|
<el-descriptions-item span="3" label="团长签字">
|
||||||
@@ -110,18 +112,42 @@
|
|||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane v-if="viewData.caseAuditId && viewData.caseAudit" label="提案委员会立案" name="5">
|
<el-tab-pane label="提案工作组意见" name="4"
|
||||||
|
v-if="viewData.membersOpinions && viewData.membersOpinions.length>0">
|
||||||
|
<template v-for="(o,i) in viewData.membersOpinions">
|
||||||
|
<el-descriptions border :column="3">
|
||||||
|
<el-descriptions-item label="审核人">
|
||||||
|
{{ o.username + "-" + o.loginName }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="立案意见">
|
||||||
|
{{ o.dictName || "暂无" }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="审核意见" span="3">{{ o.opinion }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="签字" span="3">
|
||||||
|
<el-image v-if="o.auditSign"
|
||||||
|
style="width: 300px; height: 100px"
|
||||||
|
:src="o.auditSign"
|
||||||
|
fit="contain"></el-image>
|
||||||
|
<span v-else>暂无</span>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</template>
|
||||||
|
</el-tab-pane>
|
||||||
|
|
||||||
|
|
||||||
|
<el-tab-pane v-if="viewData.caseAuditId && viewData.caseAudit" label="提案工作组立案审核" name="5">
|
||||||
<template v-for="(o,i) in viewData.caseAudit">
|
<template v-for="(o,i) in viewData.caseAudit">
|
||||||
<el-descriptions border :column="3">
|
<el-descriptions border :column="3">
|
||||||
<el-descriptions-item label="审核人">
|
<el-descriptions-item label="审核人">
|
||||||
{{ o.username + '-' + o.loginName }}
|
{{ o.username + "-" + o.loginName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<!-- <el-descriptions-item label="立案结果">
|
<!-- <el-descriptions-item label="立案结果">
|
||||||
{{ viewData.resultName ? viewData.resultName : '暂无' }}
|
{{ viewData.resultName ? viewData.resultName : '暂无' }}
|
||||||
<!– {{ viewData.determineTypeCode ? '(' + viewData.laLevelName + ')' : '' }}–>
|
<!– {{ viewData.determineTypeCode ? '(' + viewData.laLevelName + ')' : '' }}–>
|
||||||
</el-descriptions-item>-->
|
</el-descriptions-item>-->
|
||||||
<el-descriptions-item label="审核结果">
|
<el-descriptions-item label="审核结果">
|
||||||
{{ o.flag ? '通过' : '退回修改' }}
|
{{ o.flag ? "通过" : "退回修改" }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||||
|
|
||||||
@@ -155,35 +181,37 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane label="承办单位初步意见" name="6"
|
<el-tab-pane label="承办单位意见" name="6"
|
||||||
v-if="viewData.underTakeFirstOpinion&&viewData.underTakeFirstOpinion.length>0">
|
v-if="viewData.underTakeFirstOpinion&&viewData.underTakeFirstOpinion.length>0">
|
||||||
<el-descriptions border>
|
<el-descriptions border>
|
||||||
<template v-for="(o,i) in viewData.underTakeFirstOpinion">
|
<template v-for="(o,i) in viewData.underTakeFirstOpinion">
|
||||||
<el-descriptions-item label="承办单位">{{ o.underTakeName }}</el-descriptions-item>
|
<el-descriptions-item label="承办单位">{{ o.underTakeName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="时间">{{ o.opionTime }}</el-descriptions-item>
|
<el-descriptions-item label="时间">{{ o.opionTime }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核结果">
|
<el-descriptions-item label="审核结果">
|
||||||
{{ o.canTake ? '可以承办' : '无法承办' }}
|
<el-tag v-if="o.canTake">同意承办</el-tag>
|
||||||
|
<el-tag v-else type="danger">无法承办</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item span="3" label="意见">{{ o.opinion }}</el-descriptions-item>
|
<el-descriptions-item span="3" label="意见">{{ o.opinion }}</el-descriptions-item>
|
||||||
</template>
|
</template>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane label="委员会确认承办单位" name="10" v-if="viewData.caseUnitAuditId && viewData.caseUnitAudit">
|
<el-tab-pane label="提案工作组确认承办单位" name="10" v-if="viewData.caseUnitAuditId && viewData.caseUnitAudit">
|
||||||
<el-descriptions border>
|
<el-descriptions border>
|
||||||
<el-descriptions-item label="审核人">
|
<el-descriptions-item label="审核人">
|
||||||
{{ viewData.caseUnitAudit.username + '-' + viewData.caseUnitAudit.loginName }}
|
{{ viewData.caseUnitAudit.username + "-" + viewData.caseUnitAudit.loginName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核结果">{{ viewData.resultName }}</el-descriptions-item>
|
<el-descriptions-item label="审核结果">{{ viewData.resultName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核时间">{{ viewData.caseUnitAudit.auditTime }}</el-descriptions-item>
|
<el-descriptions-item label="审核时间">{{ viewData.caseUnitAudit.auditTime }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="承办单位" span="3" v-if="viewData.resultCode!=='notGive'">
|
<el-descriptions-item label="承办单位" span="3" v-if="viewData.resultCode!=='notGive'">
|
||||||
<template v-for="(item,index) in viewData.undertake">
|
<template v-for="(item,index) in viewData.undertake">
|
||||||
{{ item.unitName }}
|
{{ item.unitName }}
|
||||||
({{ item.undertakeType === 1 ? '主办' : '协办' }})
|
({{ item.undertakeType === 1 ? "主办" : "协办" }})
|
||||||
{{ index + 1 === viewData.undertake.length ? '' : '、' }}
|
{{ index + 1 === viewData.undertake.length ? "" : "、" }}
|
||||||
</template>
|
</template>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核意见" span="3">{{ viewData.caseUnitAudit.opinion }}</el-descriptions-item>
|
<el-descriptions-item label="审核意见" span="3">{{ viewData.caseUnitAudit.opinion }}
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="签字" span="3">
|
<el-descriptions-item label="签字" span="3">
|
||||||
<el-image v-if="viewData.caseUnitAudit.auditSign"
|
<el-image v-if="viewData.caseUnitAudit.auditSign"
|
||||||
style="width: 300px; height: 100px"
|
style="width: 300px; height: 100px"
|
||||||
@@ -194,8 +222,8 @@
|
|||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane label="分管校领导批示" name="8"
|
<el-tab-pane label="分管校领导批示" name="8" v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||||
v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
{{ viewData.branchLeaderOpinion }}
|
||||||
<template v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
<template v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||||
<el-descriptions :column="2" border class="wrap-table">
|
<el-descriptions :column="2" border class="wrap-table">
|
||||||
<template v-for="(o,i) in viewData.branchLeaderOpinion">
|
<template v-for="(o,i) in viewData.branchLeaderOpinion">
|
||||||
@@ -216,33 +244,54 @@
|
|||||||
|
|
||||||
<el-tab-pane label="承办单位办理" name="11"
|
<el-tab-pane label="承办单位办理" name="11"
|
||||||
v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply || v.leaderCheckResult!=null)">
|
v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply || v.leaderCheckResult!=null)">
|
||||||
<el-descriptions border class="wrap-table-4" column="5">
|
|
||||||
<template v-for="(o,i) in viewData.replyInfo.filter(v=>v.isReply || v.leaderCheckResult!=null)">
|
<template v-for="(o,i) in viewData.replyInfo.filter(v=>v.isReply || v.leaderCheckResult!=null)">
|
||||||
|
<el-descriptions border column="3" style="margin-top: 10px">
|
||||||
<el-descriptions-item label="承办单位">{{
|
<el-descriptions-item label="承办单位">{{
|
||||||
o.unitName
|
o.unitName
|
||||||
}}({{ o.undertakeType === 1 ? '主办' : '协办' }})
|
}}({{ o.undertakeType === 1 ? "主办" : "协办" }})
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="办理人">{{ o.dfrUserName }}</el-descriptions-item>
|
<el-descriptions-item label="办理人">{{ o.dfrUserName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="办理时间">{{ o.replyTime }}</el-descriptions-item>
|
<el-descriptions-item label="办理时间">{{ o.replyTime }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="办理次数">{{ o.replyNumber }}</el-descriptions-item>
|
<el-descriptions-item label="办理次数">{{ o.replyNumber }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="落实情况">{{ o.implementState }}</el-descriptions-item>
|
<el-descriptions-item label="落实情况" span="2">{{ o.implementState }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="办理内容" span="5">
|
<el-descriptions-item label="办理内容" span="3">
|
||||||
<div class="text-left" v-html="o.replyContent"></div>
|
<div class="text-left" v-html="o.replyContent"></div>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="承办单位签字" span="5">
|
<el-descriptions-item label="承办单位签字" span="3">
|
||||||
<el-image v-if="o.replySignData"
|
<el-image v-if="o.replySignData"
|
||||||
style="width: 300px; height: 100px"
|
style="width: 300px; height: 100px"
|
||||||
:src="o.replySignData"
|
:src="o.replySignData"
|
||||||
fit="contain"></el-image>
|
fit="contain"></el-image>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="附件" span="5">
|
<el-descriptions-item label="附件" span="3">
|
||||||
<file-upload v-if="JSON.parse(o.replyFiles)&&JSON.parse(o.replyFiles).length"
|
<file-upload v-if="JSON.parse(o.replyFiles)&&JSON.parse(o.replyFiles).length"
|
||||||
:files="JSON.parse(o.replyFiles)" :view="true"></file-upload>
|
:files="JSON.parse(o.replyFiles)" :view="true"></file-upload>
|
||||||
<span v-else>无</span>
|
<span v-else>无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</template>
|
||||||
|
</el-tab-pane>
|
||||||
|
|
||||||
|
<el-tab-pane label="分管校领导审批" name="14"
|
||||||
|
v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
||||||
|
<template
|
||||||
|
v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
||||||
|
<el-descriptions :column="2" border class="wrap-table">
|
||||||
|
<template v-for="(o,i) in viewData.branchLeaderSuffixAuditOpinion">
|
||||||
|
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item span="4" label="分管校领导签字">
|
||||||
|
<el-image v-if="o.auditSign"
|
||||||
|
style="width: 300px; height: 100px"
|
||||||
|
:src="o.auditSign"
|
||||||
|
fit="contain"></el-image>
|
||||||
|
<span v-else>暂无</span>
|
||||||
|
</el-descriptions-item>
|
||||||
</template>
|
</template>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
</template>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane label="反馈评分信息" name="13" v-if="viewData.feedback&&viewData.feedback.length>0">
|
<el-tab-pane label="反馈评分信息" name="13" v-if="viewData.feedback&&viewData.feedback.length>0">
|
||||||
@@ -267,26 +316,6 @@
|
|||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane label="分管校领导审批" name="14"
|
|
||||||
v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
|
||||||
<template v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
|
||||||
<el-descriptions :column="2" border class="wrap-table">
|
|
||||||
<template v-for="(o,i) in viewData.branchLeaderSuffixAuditOpinion">
|
|
||||||
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item span="4" label="分管校领导签字">
|
|
||||||
<el-image v-if="o.auditSign"
|
|
||||||
style="width: 300px; height: 100px"
|
|
||||||
:src="o.auditSign"
|
|
||||||
fit="contain"></el-image>
|
|
||||||
<span v-else>暂无</span>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</template>
|
|
||||||
</el-descriptions>
|
|
||||||
</template>
|
|
||||||
</el-tab-pane>
|
|
||||||
|
|
||||||
|
|
||||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||||
<slot name="handle"></slot>
|
<slot name="handle"></slot>
|
||||||
@@ -303,11 +332,11 @@ module.exports = {
|
|||||||
id: String,
|
id: String,
|
||||||
handle: {
|
handle: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false
|
||||||
},
|
},
|
||||||
label: {
|
label: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '审核'
|
default: "审核"
|
||||||
},
|
},
|
||||||
panes: {
|
panes: {
|
||||||
type: Array,
|
type: Array,
|
||||||
@@ -316,18 +345,18 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
hostUnit: '',
|
hostUnit: "",
|
||||||
helpUnit: [],
|
helpUnit: [],
|
||||||
unitOptions: [],
|
unitOptions: [],
|
||||||
activeName: '1',
|
activeName: "1",
|
||||||
activeCollapse: '',
|
activeCollapse: "",
|
||||||
loading: true,
|
loading: true,
|
||||||
viewData: {},
|
viewData: {},
|
||||||
config: {}
|
config: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
"file-upload": httpVueLoader("/components/plugins/FileUpload.vue")
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
hasPane(name) {
|
hasPane(name) {
|
||||||
@@ -343,7 +372,7 @@ module.exports = {
|
|||||||
console.log(this.viewData)
|
console.log(this.viewData)
|
||||||
|
|
||||||
if (!this.viewData) {
|
if (!this.viewData) {
|
||||||
this.$notify.error({title: '失败', message: '获取提案信息失败'});
|
this.$notify.error({ title: "失败", message: "获取提案信息失败" })
|
||||||
this.loading = false
|
this.loading = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -359,7 +388,7 @@ module.exports = {
|
|||||||
const helpUnit = this.unitOptions.find(z => other.helpUnit[i] === z.id).unitName
|
const helpUnit = this.unitOptions.find(z => other.helpUnit[i] === z.id).unitName
|
||||||
this.helpUnit.push(helpUnit)
|
this.helpUnit.push(helpUnit)
|
||||||
})
|
})
|
||||||
this.helpUnit = this.helpUnit.join('、')
|
this.helpUnit = this.helpUnit.join("、")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<template name="提案基本信息">
|
<template name="提案基本信息">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
提案基本信息
|
提案基本信息
|
||||||
</div>
|
</div>
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="viewData.seconded" name="附议信息">
|
<template v-if="viewData.seconded" name="附议信息">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
附议信息
|
附议信息
|
||||||
</div>
|
</div>
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<template v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0" name="团长审核信息">
|
<template v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0" name="团长审核信息">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
团长审核信息
|
团长审核信息
|
||||||
</div>
|
</div>
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="viewData.secretaryAudit&&viewData.secretaryAudit.length>0" name="提案委员会立案信息">
|
<template v-if="viewData.secretaryAudit&&viewData.secretaryAudit.length>0" name="提案委员会立案信息">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
提案委员会立案信息
|
提案委员会立案信息
|
||||||
</div>
|
</div>
|
||||||
@@ -129,8 +129,8 @@
|
|||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="viewData.caseAudit" name="确认承办单位">
|
<template v-if="viewData.caseAudit && viewData.caseAudit.length > 0" name="确认承办单位">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
确认承办单位
|
确认承办单位
|
||||||
</div>
|
</div>
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="viewData.makeLeader" name="分管校领导批示信息">
|
<template v-if="viewData.makeLeader" name="分管校领导批示信息">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
分管校领导批示信息
|
分管校领导批示信息
|
||||||
</div>
|
</div>
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
|
|
||||||
<template v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply)"
|
<template v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply)"
|
||||||
name="承办单位答复">
|
name="承办单位答复">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
承办单位答复信息
|
承办单位答复信息
|
||||||
</div>
|
</div>
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="viewData.feedback&&viewData.feedback.length>0" name="反馈评分信息">
|
<template v-if="viewData.feedback&&viewData.feedback.length>0" name="反馈评分信息">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
反馈评分信息
|
反馈评分信息
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -81,8 +81,8 @@ module.exports = {
|
|||||||
clearInterval(signatureInterval)
|
clearInterval(signatureInterval)
|
||||||
const ts = new Date().getTime() + (Math.floor(Math.random() * (1000 - 1 + 1)) + 1).toString()
|
const ts = new Date().getTime() + (Math.floor(Math.random() * (1000 - 1 + 1)) + 1).toString()
|
||||||
console.log(ts)
|
console.log(ts)
|
||||||
this.postAddress = location.protocol + '//' + location.host + '/signature?prefix=' + this.prefix + '&id=' + ts + "&is_value_base64=" + this.is_value_base64
|
// this.postAddress = location.protocol + '//' + location.host + '/signature?prefix=' + this.prefix + '&id=' + ts + "&is_value_base64=" + this.is_value_base64
|
||||||
// this.postAddress = 'https://zhgh.hmc.edu.cn/signature?prefix=' + this.prefix + '&id=' + ts + "&is_value_base64=" + this.is_value_base64
|
this.postAddress = 'https://zhgh.hmc.edu.cn/signature?prefix=' + this.prefix + '&id=' + ts + "&is_value_base64=" + this.is_value_base64
|
||||||
|
|
||||||
this.showQrCode = true
|
this.showQrCode = true
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
<script src="${base!}/assets/platform/module/mixins/initTableMixins.js?v=1.0.3"></script>
|
<script src="${base!}/assets/platform/module/mixins/initTableMixins.js?v=1.0.3"></script>
|
||||||
<script src="${base!}/assets/platform/module/mixins/styleMixin.js"></script>
|
<script src="${base!}/assets/platform/module/mixins/styleMixin.js"></script>
|
||||||
<script src="${base!}/assets/platform/js/includeModel.js?v=1.0.5"></script>
|
<script src="${base!}/assets/platform/js/includeModel.js?v=1.0.6"></script>
|
||||||
<script src="${base!}/assets/platform/js/component.js?v=1.0.2"></script>
|
<script src="${base!}/assets/platform/js/component.js?v=1.0.2"></script>
|
||||||
<script src="${base!}/assets/platform/js/v.js?v=1.0.5"></script>
|
<script src="${base!}/assets/platform/js/v.js?v=1.0.5"></script>
|
||||||
<script src="${base!}/assets/platform/plugins/wangeditor/wangEditor.js"></script>
|
<script src="${base!}/assets/platform/plugins/wangeditor/wangEditor.js"></script>
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<script src="${base!}/assets/platform/module/mixins/initTableMixins.js?v=1.0.3"></script>
|
<script src="${base!}/assets/platform/module/mixins/initTableMixins.js?v=1.0.3"></script>
|
||||||
<script src="${base!}/assets/platform/js/includeModel.js?v=1.0.5"></script>
|
<script src="${base!}/assets/platform/js/includeModel.js?v=1.0.6"></script>
|
||||||
<script src="${base!}/assets/platform/js/component.js?v=1.0.2"></script>
|
<script src="${base!}/assets/platform/js/component.js?v=1.0.2"></script>
|
||||||
<script src="${base!}/assets/platform/js/v.js?v=1.0.5"></script>
|
<script src="${base!}/assets/platform/js/v.js?v=1.0.5"></script>
|
||||||
<script src="${base!}/assets/platform/plugins/wangeditor/wangEditor.js"></script>
|
<script src="${base!}/assets/platform/plugins/wangeditor/wangEditor.js"></script>
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ layout("/mobile/platform.html"){
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
height: calc(100vh - 46px - 44px);
|
height: calc(100vh - 46px - 44px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.remark-content *{
|
.remark-content *{
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ layout("/mobile/platform.html"){
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
height: calc(100vh - 46px - 44px);
|
height: calc(100vh - 46px - 44px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.remark-content *{
|
.remark-content *{
|
||||||
@@ -58,6 +59,14 @@ layout("/mobile/platform.html"){
|
|||||||
</van-button>
|
</van-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div v-else style="margin: 20px 20px 10px 20px">
|
||||||
|
<van-button color="red" disabled
|
||||||
|
block style="border-radius: 10px"
|
||||||
|
type="info">
|
||||||
|
报名已结束
|
||||||
|
</van-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!--<div style="margin: 20px 20px 10px 20px"
|
<!--<div style="margin: 20px 20px 10px 20px"
|
||||||
v-if="isRegister && moment().valueOf() < moment(o.endTime).valueOf() && moment().valueOf() > moment(o.startTime).valueOf()">
|
v-if="isRegister && moment().valueOf() < moment(o.endTime).valueOf() && moment().valueOf() > moment(o.startTime).valueOf()">
|
||||||
<van-button
|
<van-button
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ layout("/mobile/platform.html"){
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
height: calc(100vh - 46px - 44px);
|
height: calc(100vh - 46px - 44px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.remark-content *{
|
.remark-content *{
|
||||||
@@ -135,6 +136,13 @@ layout("/mobile/platform.html"){
|
|||||||
<van-button @click="doCancel" block color="red" style="border-radius: 10px; margin-top: 10px" type="info">取消报名</van-button>
|
<van-button @click="doCancel" block color="red" style="border-radius: 10px; margin-top: 10px" type="info">取消报名</van-button>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else style="margin: 20px 20px 10px 20px">
|
||||||
|
<van-button color="red" disabled
|
||||||
|
block style="border-radius: 10px"
|
||||||
|
type="info">
|
||||||
|
报名已结束
|
||||||
|
</van-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<van-popup class="joinPopup" position="right" v-model:show="showActivityInfoPopup">
|
<van-popup class="joinPopup" position="right" v-model:show="showActivityInfoPopup">
|
||||||
<van-nav-bar @click-left="showActivityInfoPopup = false" fixed left-arrow placeholder title="活动内容"></van-nav-bar>
|
<van-nav-bar @click-left="showActivityInfoPopup = false" fixed left-arrow placeholder title="活动内容"></van-nav-bar>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<link rel="stylesheet" href="${base!}/assets/mobile/css/theme.css">
|
<link rel="stylesheet" href="${base!}/assets/mobile/css/theme.css">
|
||||||
<link rel="stylesheet" href="${base!}/assets/mobile/css/main.css">
|
<link rel="stylesheet" href="${base!}/assets/mobile/css/main.css">
|
||||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/vant.css">
|
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/vant.css?v=1.0.1">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
window._AMapSecurityConfig = {
|
window._AMapSecurityConfig = {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ layout("/mobile/platform.html"){
|
|||||||
left-arrow
|
left-arrow
|
||||||
placeholder
|
placeholder
|
||||||
fixed
|
fixed
|
||||||
@click-left="history.back()"
|
@click-left="pjaxReplace('/mobile/index')"
|
||||||
></van-nav-bar>
|
></van-nav-bar>
|
||||||
<van-dropdown-menu>
|
<van-dropdown-menu>
|
||||||
<van-dropdown-item v-model="pageForm.sessionId" :options="sessionList"
|
<van-dropdown-item v-model="pageForm.sessionId" :options="sessionList"
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ layout("/mobile/platform.html"){
|
|||||||
left-arrow
|
left-arrow
|
||||||
placeholder
|
placeholder
|
||||||
fixed
|
fixed
|
||||||
@click-left="history.back()"
|
@click-left="pjaxReplace('/mobile/index')"
|
||||||
safe-area-inset-top
|
safe-area-inset-top
|
||||||
></van-nav-bar>
|
></van-nav-bar>
|
||||||
|
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
基本信息
|
基本信息
|
||||||
</div>
|
</div>
|
||||||
@@ -32,7 +32,7 @@ layout("/mobile/platform.html"){
|
|||||||
<van-cell title="职称">{{ viewData.zc }}</van-cell>
|
<van-cell title="职称">{{ viewData.zc }}</van-cell>
|
||||||
<van-cell title="职务">{{ viewData.zw }}</van-cell>
|
<van-cell title="职务">{{ viewData.zw }}</van-cell>
|
||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
个人简历
|
个人简历
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ layout("/mobile/platform.html"){
|
|||||||
left-arrow
|
left-arrow
|
||||||
placeholder
|
placeholder
|
||||||
fixed
|
fixed
|
||||||
@click-left="history.back()"
|
@click-left="pjaxReplace('/mobile/index')"
|
||||||
safe-area-inset-top
|
safe-area-inset-top
|
||||||
></van-nav-bar>
|
></van-nav-bar>
|
||||||
<div class="search-fixed">
|
<div class="search-fixed">
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ layout("/mobile/platform.html"){
|
|||||||
#-->
|
#-->
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<van-nav-bar title="团长审核" fixed placeholder safe-area-inset-top @click-left="history.back()"
|
<van-nav-bar title="团长审核" fixed placeholder safe-area-inset-top @click-left="pjaxReplace('/mobile/index')"
|
||||||
:left-arrow="leftArrow"></van-nav-bar>
|
:left-arrow="leftArrow"></van-nav-bar>
|
||||||
<proposal-info :proposal_id="proposalId" title="团长审核" :handle="handle" ref="info">
|
<proposal-info :proposal_id="proposalId" title="团长审核" :handle="handle" ref="info">
|
||||||
<template #handle>
|
<template #handle>
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
团长审核
|
团长审核
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ layout("/mobile/platform.html"){
|
|||||||
left-arrow
|
left-arrow
|
||||||
placeholder
|
placeholder
|
||||||
fixed
|
fixed
|
||||||
@click-left="history.back()"
|
@click-left="pjaxReplace('/mobile/index')"
|
||||||
></van-nav-bar>
|
></van-nav-bar>
|
||||||
|
|
||||||
<div class="search-fixed">
|
<div class="search-fixed">
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ layout("/mobile/platform.html"){
|
|||||||
left-arrow
|
left-arrow
|
||||||
placeholder
|
placeholder
|
||||||
fixed
|
fixed
|
||||||
@click-left="history.back()"
|
@click-left="pjaxReplace('/mobile/index')"
|
||||||
safe-area-inset-top
|
safe-area-inset-top
|
||||||
></van-nav-bar>
|
></van-nav-bar>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ layout("/mobile/platform.html"){
|
|||||||
#-->
|
#-->
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<van-nav-bar title="提案信息" fixed placeholder :left-arrow="leftArrow" safe-area-inset-top
|
<van-nav-bar title="提案信息" fixed placeholder :left-arrow="leftArrow" safe-area-inset-top
|
||||||
@click-left="history.back()"></van-nav-bar>
|
@click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
|
||||||
<proposal-info :proposal_id="proposalId" ref="pi"></proposal-info>
|
<proposal-info :proposal_id="proposalId" ref="pi"></proposal-info>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ layout("/mobile/platform.html"){
|
|||||||
left-arrow
|
left-arrow
|
||||||
placeholder
|
placeholder
|
||||||
fixed
|
fixed
|
||||||
@click-left="history.back()"
|
@click-left="pjaxReplace('/mobile/index')"
|
||||||
></van-nav-bar>
|
></van-nav-bar>
|
||||||
|
|
||||||
<div class="search-fixed">
|
<div class="search-fixed">
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ layout("/mobile/platform.html"){
|
|||||||
#-->
|
#-->
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<van-nav-bar title="附议提案" fixed placeholder :left-arrow="leftArrow" safe-area-inset-top
|
<van-nav-bar title="附议提案" fixed placeholder :left-arrow="leftArrow" safe-area-inset-top
|
||||||
@click-left="history.back()"></van-nav-bar>
|
@click-left="pjaxReplace('/mobile/proposal/seconded')"></van-nav-bar>
|
||||||
<proposal-info :proposal_id="proposalId" ref="pi"></proposal-info>
|
<proposal-info :proposal_id="proposalId" ref="pi"></proposal-info>
|
||||||
|
|
||||||
<van-row v-if="secondedInfo.isAgree==null">
|
<van-row v-if="secondedInfo.isAgree==null">
|
||||||
<div class="van-cell-group__title">
|
<div class="van-cell-group__title" style="padding: 5px 0 0 0 !important;">
|
||||||
<div class="van-sidebar-item van-sidebar-item--select">
|
<div class="van-sidebar-item van-sidebar-item--select">
|
||||||
附议提案
|
附议提案
|
||||||
</div>
|
</div>
|
||||||
@@ -59,18 +59,16 @@ layout("/mobile/platform.html"){
|
|||||||
proposalId: this.proposalId,
|
proposalId: this.proposalId,
|
||||||
flag: flag
|
flag: flag
|
||||||
})
|
})
|
||||||
|
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
loading.type = 'success'
|
|
||||||
loading.message = '提交成功'
|
|
||||||
loading.close()
|
loading.close()
|
||||||
this.$refs.pi.openView(this.proposalId)
|
this.$refs.pi.openView(this.proposalId)
|
||||||
this.getSecondedCount()
|
this.getSecondedCount()
|
||||||
|
this.$toast.success("操作成功")
|
||||||
}, 1200)
|
}, 1200)
|
||||||
} else {
|
} else {
|
||||||
loading.type = 'fail'
|
loading.close()
|
||||||
loading.message = '提交失败,请联系管理员'
|
this.$toast.fail("操作失败,请及时联系管理员")
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ layout("/mobile/platform.html"){
|
|||||||
left-arrow
|
left-arrow
|
||||||
placeholder
|
placeholder
|
||||||
fixed
|
fixed
|
||||||
@click-left="history.back()"
|
@click-left="pjaxReplace('/mobile/index')"
|
||||||
></van-nav-bar>
|
></van-nav-bar>
|
||||||
|
|
||||||
<div class="search-fixed">
|
<div class="search-fixed">
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ layout("/mobile/platform.html"){
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder
|
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder
|
||||||
title="撰写提案"></van-nav-bar>
|
title="撰写提案"></van-nav-bar>
|
||||||
<van-form :show-error-message="false" input-align="right" ref="addForm">
|
<van-form :show-error-message="false" input-align="right" ref="addForm">
|
||||||
|
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ layout("/mobile/platform.html"){
|
|||||||
<van-image :src="FILE_STREAM_PREVIEW_ADDRESS+'?id='+option.imgUrl"
|
<van-image :src="FILE_STREAM_PREVIEW_ADDRESS+'?id='+option.imgUrl"
|
||||||
fit="contain"
|
fit="contain"
|
||||||
style="width: 100px;height: 100px;border-radius: 10px"></van-image>
|
style="width: 100px;height: 100px;border-radius: 10px"></van-image>
|
||||||
<span style="position: absolute; bottom: 0;left: 10px;right: 10px;height: 20px;background: rgb(0 0 0 / 50%);text-align:center;color: #FFF;">{{option.selectCount}}人已选</span>
|
<!--<span style="position: absolute; bottom: 0;left: 10px;right: 10px;height: 20px;background: rgb(0 0 0 / 50%);text-align:center;color: #FFF;">{{option.selectCount}}人已选</span>-->
|
||||||
<!-- @click="vant.ImagePreview([CREATE_PREVIEW_URL(option.imgUrl)])"-->
|
<!-- @click="vant.ImagePreview([CREATE_PREVIEW_URL(option.imgUrl)])"-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -355,9 +355,26 @@ layout("/mobile/platform.html"){
|
|||||||
desc=""
|
desc=""
|
||||||
style="border-radius: 8px;background: #FFFFFF"
|
style="border-radius: 8px;background: #FFFFFF"
|
||||||
:thumb="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.imgUrl"
|
:thumb="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.imgUrl"
|
||||||
v-for="item in selectedOptions"
|
v-for="(item,index) in selectedOptions"
|
||||||
></van-card>
|
>
|
||||||
|
<template #price>
|
||||||
|
<span v-if="item.specs && item.specs.length > 0" style="font-size: 15px;color: #0a84ff"
|
||||||
|
@click="openSelectSpecs(item)">
|
||||||
|
{{ item.selectSpecs ? ('规格:' + item.selectSpecs) : '点我选择规格参数' }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</van-card>
|
||||||
</van-cell>
|
</van-cell>
|
||||||
|
|
||||||
|
<van-popup v-model="selectSpecsPopup" position="bottom">
|
||||||
|
<van-picker
|
||||||
|
title="规格选择"
|
||||||
|
show-toolbar
|
||||||
|
:columns="specsPickerOptions"
|
||||||
|
@confirm="specsSelectConfirm"
|
||||||
|
@cancel="selectSpecsPopup = false"
|
||||||
|
></van-picker>
|
||||||
|
</van-popup>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--邮寄到家 填写收货地址-->
|
<!--邮寄到家 填写收货地址-->
|
||||||
@@ -427,7 +444,12 @@ layout("/mobile/platform.html"){
|
|||||||
descPopup: false,
|
descPopup: false,
|
||||||
signData: null,
|
signData: null,
|
||||||
|
|
||||||
clickUpOrDown: false
|
clickUpOrDown: false,
|
||||||
|
|
||||||
|
// 选择规格相关
|
||||||
|
selectSpecsPopup: false,
|
||||||
|
specsPickerOptions: [],
|
||||||
|
selectedOptionsId: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -490,6 +512,32 @@ layout("/mobile/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
/**
|
||||||
|
* 选择规格
|
||||||
|
* @param item
|
||||||
|
*/
|
||||||
|
openSelectSpecs(item) {
|
||||||
|
this.specsPickerOptions = []
|
||||||
|
this.selectedOptionsId = item.id
|
||||||
|
if (item.specs && item.specs.length > 0) {
|
||||||
|
this.specsPickerOptions = item.specs.map(v => {
|
||||||
|
return {text: v.value, value: v.value}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.selectSpecsPopup = true
|
||||||
|
},
|
||||||
|
specsSelectConfirm(value) {
|
||||||
|
debugger
|
||||||
|
this.selectSpecsPopup = false
|
||||||
|
if (value) {
|
||||||
|
this.projectInfo.welfareProjectSubjects[0].options.forEach(v => {
|
||||||
|
if (v.id === this.selectedOptionsId) {
|
||||||
|
v.selectSpecs = value.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// this.projectInfo.welfareProjectSubjects[0].options[this.selectedOptionsIndex].selectSpecs = value.value
|
||||||
|
}
|
||||||
|
},
|
||||||
editAddress(item) {
|
editAddress(item) {
|
||||||
pjaxReplace('/mobile/welfare/mine/addressEdit?projectId=' + this.projectId + '&id=' + item.id)
|
pjaxReplace('/mobile/welfare/mine/addressEdit?projectId=' + this.projectId + '&id=' + item.id)
|
||||||
window.sessionStorage.setItem('welfareProjectId', this.projectId)
|
window.sessionStorage.setItem('welfareProjectId', this.projectId)
|
||||||
@@ -629,14 +677,29 @@ layout("/mobile/platform.html"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const formData = this.projectInfo.welfareProjectSubjects[0].options.filter(v => v.selectNum >= 1).map(v => {
|
const options = this.projectInfo.welfareProjectSubjects[0].options.filter(v => v.selectNum >= 1)
|
||||||
|
|
||||||
|
for (const option of options) {
|
||||||
|
// 检查是否有 specs
|
||||||
|
if (option.specs) {
|
||||||
|
// 检查 selectSpecs 是否为空或未定义
|
||||||
|
if (!option.selectSpecs) {
|
||||||
|
this.$toast.fail('请选择' + option.optionName + '的规格')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const formData = options.map(v => {
|
||||||
return {
|
return {
|
||||||
welfareId: this.projectId,
|
welfareId: this.projectId,
|
||||||
subjectId: v.subjectId,
|
subjectId: v.subjectId,
|
||||||
selectOptionId: v.id,
|
selectOptionId: v.id,
|
||||||
receiveAddress: this.selectAddress,
|
receiveAddress: this.selectAddress,
|
||||||
userSign: this.signData,
|
userSign: this.signData,
|
||||||
selectNum: v.selectNum
|
selectNum: v.selectNum,
|
||||||
|
selectSpecs: v.selectSpecs
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const {
|
const {
|
||||||
@@ -655,7 +718,7 @@ layout("/mobile/platform.html"){
|
|||||||
} else {
|
} else {
|
||||||
vant.Dialog.alert({
|
vant.Dialog.alert({
|
||||||
title: '温馨提示',
|
title: '温馨提示',
|
||||||
message: "您已完成本次福利选择。",
|
message: "您已完成本次选择。",
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
this.confirmPopup = false
|
this.confirmPopup = false
|
||||||
await this.getProjectInfo()
|
await this.getProjectInfo()
|
||||||
@@ -739,6 +802,9 @@ layout("/mobile/platform.html"){
|
|||||||
if (option) {
|
if (option) {
|
||||||
v.selectNum = option.selectNum
|
v.selectNum = option.selectNum
|
||||||
selectNum = Number(selectNum) + Number(v.selectNum)
|
selectNum = Number(selectNum) + Number(v.selectNum)
|
||||||
|
if (option.selectSpecs) {
|
||||||
|
v.selectSpecs = option.selectSpecs
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.selectNum = selectNum
|
this.selectNum = selectNum
|
||||||
|
|||||||
@@ -192,7 +192,7 @@
|
|||||||
v-for="item in activityGroupList"></el-option>
|
v-for="item in activityGroupList"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div v-if="type !== 40003">
|
||||||
<el-button
|
<el-button
|
||||||
@click="$refs.drawerUserScope.userScopeDialog = true"
|
@click="$refs.drawerUserScope.userScopeDialog = true"
|
||||||
type="primary">设置
|
type="primary">设置
|
||||||
@@ -688,6 +688,7 @@
|
|||||||
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
projectTypeCode: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
projectTypeCode: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
|
signUpMethod: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
address: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
address: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
plannedDate: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
plannedDate: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
},
|
},
|
||||||
@@ -1137,8 +1138,12 @@
|
|||||||
},
|
},
|
||||||
async getActivityGroup() {
|
async getActivityGroup() {
|
||||||
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||||
|
if (type === 40003) {
|
||||||
|
this.activityGroupList = resp.data.filter(v => v.groupId === 6)
|
||||||
|
} else {
|
||||||
this.activityGroupList = resp.data
|
this.activityGroupList = resp.data
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
await this.getActivityGroup()
|
await this.getActivityGroup()
|
||||||
|
|||||||
@@ -144,13 +144,13 @@
|
|||||||
:disabled="row.projectTypeCode==50004">
|
:disabled="row.projectTypeCode==50004">
|
||||||
删除
|
删除
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item :command="{type:'sendMsg',row}">
|
<!--<el-dropdown-item v-if="row.state === 3" :command="{type:'sendMsg',row}">
|
||||||
通知
|
通知
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>-->
|
||||||
<el-dropdown-item :command="{type:'openCode',row}">
|
<el-dropdown-item v-if="row.state === 3" :command="{type:'openCode',row}">
|
||||||
报名二维码
|
报名二维码
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item :command="{type:'openSignCode',row}">
|
<el-dropdown-item v-if="row.state === 3" :command="{type:'openSignCode',row}">
|
||||||
签到二维码
|
签到二维码
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<!-- <el-dropdown-item :command="{type:'export',row}">
|
<!-- <el-dropdown-item :command="{type:'export',row}">
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
name="viewport">
|
name="viewport">
|
||||||
<title>签字</title>
|
<title>签字</title>
|
||||||
<!-- 引入样式文件 -->
|
<!-- 引入样式文件 -->
|
||||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/vant.css">
|
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/vant.css?v=1.0.1">
|
||||||
<link href="https://res.wx.qq.com/open/libs/weui/2.2.0/weui.min.css" rel="stylesheet">
|
<link href="https://res.wx.qq.com/open/libs/weui/2.2.0/weui.min.css" rel="stylesheet">
|
||||||
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
|
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
|
||||||
<script src="${base!}/assets/platform/plugins/vue/vue.min.js"></script>
|
<script src="${base!}/assets/platform/plugins/vue/vue.min.js"></script>
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ layout("/layouts/platform.html"){
|
|||||||
const resp = await $.post(loc() + '/pull')
|
const resp = await $.post(loc() + '/pull')
|
||||||
this.pullLoading = false
|
this.pullLoading = false
|
||||||
if(resp.code===0){
|
if(resp.code===0){
|
||||||
|
await this.getLatelyUpdateTimes()
|
||||||
this.pageData()
|
this.pageData()
|
||||||
}else{
|
}else{
|
||||||
this.notifyWarning(resp.msg)
|
this.notifyWarning(resp.msg)
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-button size="medium" type="primary"
|
<el-button size="medium" type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
@click="openCy()">
|
@click="openCy()">
|
||||||
设置委员
|
设置提案工作组成员
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -224,9 +224,9 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column prop="jdhallname" align="center" label="届次"></el-table-column>
|
<el-table-column prop="jdhallname" align="center" label="届次"></el-table-column>
|
||||||
<el-table-column sortable prop="sf" label="身份">
|
<el-table-column sortable prop="sf" label="身份">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<span class="text-primary" v-if="row.sf===1">委员</span>
|
<span class="text-primary" v-if="row.sf===1">组长</span>
|
||||||
<span v-if="row.sf===2" class="text-primary">副主任</span>
|
<span v-if="row.sf===2" class="text-primary">副组长</span>
|
||||||
<span v-if="row.sf===3" class="text-primary">主任</span>
|
<span v-if="row.sf===3" class="text-primary">组员</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="操作" width="100px">
|
<el-table-column align="center" label="操作" width="100px">
|
||||||
@@ -242,15 +242,15 @@ layout("/layouts/platform.html"){
|
|||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item v-if="row.sf!==3"
|
<el-dropdown-item v-if="row.sf!==3"
|
||||||
@click.native="updateSf(row,3)"
|
@click.native="updateSf(row,3)"
|
||||||
class="text-primary">设置主任
|
class="text-primary">设置组长
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item v-if="row.sf!==2"
|
<el-dropdown-item v-if="row.sf!==2"
|
||||||
@click.native="updateSf(row,2)"
|
@click.native="updateSf(row,2)"
|
||||||
class="text-primary">设置副主任
|
class="text-primary">设置副组长
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item v-if="row.sf!==1"
|
<el-dropdown-item v-if="row.sf!==1"
|
||||||
@click.native="updateSf(row,1)"
|
@click.native="updateSf(row,1)"
|
||||||
class="text-primary">设置委员
|
class="text-primary">设置组员
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
@@ -344,7 +344,7 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
</guava>
|
</guava>
|
||||||
|
|
||||||
<el-dialog :visible.sync="cyDialogVisible" title="设置委员" width="40%">
|
<el-dialog :visible.sync="cyDialogVisible" title="设置提案工作组成员" width="40%">
|
||||||
<el-form label-width="100px">
|
<el-form label-width="100px">
|
||||||
<el-form-item prop="jdhallname" label="届次">
|
<el-form-item prop="jdhallname" label="届次">
|
||||||
<el-select v-model="pageForm.jdhid" disabled style="width: 100%">
|
<el-select v-model="pageForm.jdhid" disabled style="width: 100%">
|
||||||
@@ -379,9 +379,9 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
<el-form-item prop="sf" label="身份">
|
<el-form-item prop="sf" label="身份">
|
||||||
<el-radio-group v-model="cyFormData.sf">
|
<el-radio-group v-model="cyFormData.sf">
|
||||||
<el-radio-button label="1">委 员</el-radio-button>
|
<el-radio-button label="1">组 长</el-radio-button>
|
||||||
<el-radio-button label="2">副主任</el-radio-button>
|
<el-radio-button label="2">副组长</el-radio-button>
|
||||||
<el-radio-button label="3">主 任</el-radio-button>
|
<el-radio-button label="3">组 员</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|||||||
@@ -50,11 +50,45 @@ layout("/layouts/platform.html"){
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="12" v-if="formData.activity_id != null && formData.activity_id !== ''">
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="activity_type" label="项目类型">
|
||||||
|
<el-select v-model="formData.activity_type" placeholder="请选择项目" style="width: 100%"
|
||||||
|
@change="getProjectCodeChange">
|
||||||
|
<el-option
|
||||||
|
v-for="item in activityType"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<!--<el-col :span="12" v-if="formData.activity_id != null && formData.activity_id !== ''">
|
||||||
<el-button @click="openView" type="primary">查看活动详细信息</el-button>
|
<el-button @click="openView" type="primary">查看活动详细信息</el-button>
|
||||||
|
</el-col>-->
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="user_name" label="申请人姓名">
|
||||||
|
<el-input disabled v-model="formData.user_name" type="text"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="apply_time" label="申请时间">
|
||||||
|
<el-input disabled v-model="formData.apply_time" type="text"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="mobile" label="联系方式">
|
||||||
|
<el-input v-model="formData.mobile" type="text"></el-input>
|
||||||
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
<!--<el-row :gutter="20">
|
<!--<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item prop="activity_id" label="活动名称">
|
<el-form-item prop="activity_id" label="活动名称">
|
||||||
@@ -334,6 +368,9 @@ layout("/layouts/platform.html"){
|
|||||||
'tissue-info': httpVueLoader('/components/activity/school/tissueInfo.vue'),
|
'tissue-info': httpVueLoader('/components/activity/school/tissueInfo.vue'),
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleSelect(){
|
||||||
|
|
||||||
|
},
|
||||||
openView() {
|
openView() {
|
||||||
this.activityDialogVisible = true
|
this.activityDialogVisible = true
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ const MEMBER_CHANGE = {
|
|||||||
<el-descriptions-item label="工作单位">
|
<el-descriptions-item label="工作单位">
|
||||||
<el-form-item prop="unitId">
|
<el-form-item prop="unitId">
|
||||||
<el-select clearable filterable placeholder="请选择工作单位" style="width: 100%"
|
<el-select clearable filterable placeholder="请选择工作单位" style="width: 100%"
|
||||||
:disabled="allowFields('unitId')" @change="getUnionName(formData.unitId)"
|
:disabled="allowFields('unitId')" @change="getUnionName"
|
||||||
v-model="formData.unitId">
|
v-model="formData.unitId">
|
||||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
v-for="item in units"></el-option>
|
v-for="item in units"></el-option>
|
||||||
@@ -134,6 +134,14 @@ const MEMBER_CHANGE = {
|
|||||||
:disabled="allowFields('userState')" style="width: 100%"></dict-select>
|
:disabled="allowFields('userState')" style="width: 100%"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="人员类型">
|
||||||
|
<el-form-item prop="personType">
|
||||||
|
<dict-select v-model="formData.personType" code="PERSON_TYPE"
|
||||||
|
:disabled="allowFields('personType')" style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item></el-descriptions-item>
|
||||||
|
|
||||||
<template v-if="formData.userState == '退休'">
|
<template v-if="formData.userState == '退休'">
|
||||||
<el-descriptions-item label="退休日期">
|
<el-descriptions-item label="退休日期">
|
||||||
<el-form-item prop="retireDate">
|
<el-form-item prop="retireDate">
|
||||||
@@ -145,14 +153,19 @@ const MEMBER_CHANGE = {
|
|||||||
style="width: 100%"></el-date-picker>
|
style="width: 100%"></el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</template>
|
<el-descriptions-item label="福利享受截止日期">
|
||||||
<el-descriptions-item label="人员类型">
|
<el-form-item prop="welfareStopDate">
|
||||||
<el-form-item prop="personType">
|
<el-date-picker v-model="formData.welfareStopDate"
|
||||||
<dict-select v-model="formData.personType" code="PERSON_TYPE"
|
type="date"
|
||||||
:disabled="allowFields('personType')" style="width: 100%"></dict-select>
|
:disabled="isView"
|
||||||
|
placeholder="请选择福利享受截止日期"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item v-if="formData.userState == null || formData.userState != '退休'"></el-descriptions-item>
|
<el-descriptions-item></el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
<el-descriptions-item label="会员状态">
|
<el-descriptions-item label="会员状态">
|
||||||
<el-form-item prop="member">
|
<el-form-item prop="member">
|
||||||
@@ -373,6 +386,10 @@ const MEMBER_CHANGE = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getUnionName(val){
|
||||||
|
const data = this.units.find(v => v.id === val)
|
||||||
|
this.$set(this.formData, 'unionName', data ? data.unionname : '')
|
||||||
|
},
|
||||||
allowFields(prop) {
|
allowFields(prop) {
|
||||||
return !this.allowChangeFields.map(v => v.code).includes(prop)
|
return !this.allowChangeFields.map(v => v.code).includes(prop)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -88,12 +88,12 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
<div class="search-item-label">人员类型:</div>
|
<div class="search-item-label">人员性质:</div>
|
||||||
<div class="search-item-option">
|
<div class="search-item-option">
|
||||||
<dict-select v-model="pageForm.preparedBy"
|
<dict-select v-model="pageForm.preparedBy"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
clearable
|
clearable
|
||||||
placeholder="人员类型"
|
placeholder="人员性质"
|
||||||
code="PREPARED_BY"></dict-select>
|
code="PREPARED_BY"></dict-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -53,6 +53,12 @@ layout("/layouts/platform.html"){
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.monthStyle{
|
||||||
|
.el-date-picker__header--bordered {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
@@ -181,7 +187,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row type="flex" align="middle" class="query-row">
|
<!--<el-row type="flex" align="middle" class="query-row">
|
||||||
<el-col class="query-row-title">会员状态:</el-col>
|
<el-col class="query-row-title">会员状态:</el-col>
|
||||||
<el-col class="query-row-content">
|
<el-col class="query-row-content">
|
||||||
<el-tag
|
<el-tag
|
||||||
@@ -204,7 +210,7 @@ layout("/layouts/platform.html"){
|
|||||||
type="success">全部
|
type="success">全部
|
||||||
</el-link>
|
</el-link>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>-->
|
||||||
<el-row type="flex" align="middle" class="query-row">
|
<el-row type="flex" align="middle" class="query-row">
|
||||||
<el-col class="query-row-title">人员类型:</el-col>
|
<el-col class="query-row-title">人员类型:</el-col>
|
||||||
<el-col class="query-row-content">
|
<el-col class="query-row-content">
|
||||||
@@ -342,6 +348,15 @@ layout("/layouts/platform.html"){
|
|||||||
@change="determineEndDate"
|
@change="determineEndDate"
|
||||||
placeholder="选择结束日期">
|
placeholder="选择结束日期">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="pageForm.birthMonth"
|
||||||
|
popper-class="monthStyle"
|
||||||
|
value-format="MM"
|
||||||
|
format="MM"
|
||||||
|
@change="doSearch"
|
||||||
|
type="month"
|
||||||
|
placeholder="请选择月度">
|
||||||
|
</el-date-picker>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
@@ -573,6 +588,7 @@ layout("/layouts/platform.html"){
|
|||||||
startDate: '',
|
startDate: '',
|
||||||
endDate: '',
|
endDate: '',
|
||||||
memberType:2,
|
memberType:2,
|
||||||
|
birthMonth: '',
|
||||||
},
|
},
|
||||||
|
|
||||||
personTypeOptions: [],
|
personTypeOptions: [],
|
||||||
@@ -669,6 +685,7 @@ layout("/layouts/platform.html"){
|
|||||||
const preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
const preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||||
window.location.href = loc() + "/doExport?unionId=" + this.pageForm.unionId + "&unitId=" + this.pageForm.unitId
|
window.location.href = loc() + "/doExport?unionId=" + this.pageForm.unionId + "&unitId=" + this.pageForm.unitId
|
||||||
+ "&year=" + this.pageForm.year
|
+ "&year=" + this.pageForm.year
|
||||||
|
+ "&birthMonth=" + this.pageForm.birthMonth
|
||||||
+ "&memberStatus=" + memberStatus
|
+ "&memberStatus=" + memberStatus
|
||||||
+ "&personTypes=" + personTypes
|
+ "&personTypes=" + personTypes
|
||||||
+ "&userStates=" + userStates
|
+ "&userStates=" + userStates
|
||||||
@@ -695,6 +712,7 @@ layout("/layouts/platform.html"){
|
|||||||
const {
|
const {
|
||||||
startDate,
|
startDate,
|
||||||
endDate,
|
endDate,
|
||||||
|
birthMonth,
|
||||||
campus,
|
campus,
|
||||||
memberType,
|
memberType,
|
||||||
reverseSelection,
|
reverseSelection,
|
||||||
@@ -705,7 +723,7 @@ layout("/layouts/platform.html"){
|
|||||||
window.location.href = loc() + "/doExportByUnion?=searchName=" + this.pageForm.searchName
|
window.location.href = loc() + "/doExportByUnion?=searchName=" + this.pageForm.searchName
|
||||||
+ "&searchKeyword=" + this.pageForm.searchKeyword + "&unitId=" + unitId + "&unionId=" + unionId
|
+ "&searchKeyword=" + this.pageForm.searchKeyword + "&unitId=" + unitId + "&unionId=" + unionId
|
||||||
+ "&unionGroupId=" + unionGroupId + "&threeUnitId=" + threeUnitId + "&sexTypes=" + sexTypes + "&memberType=" + memberType
|
+ "&unionGroupId=" + unionGroupId + "&threeUnitId=" + threeUnitId + "&sexTypes=" + sexTypes + "&memberType=" + memberType
|
||||||
+ "&roleIds=" + roleIds + "&age=" + age + "&year=" + this.pageForm.year + "&memberStatus=" + memberStatus
|
+ "&roleIds=" + roleIds + "&age=" + age + "&year=" + this.pageForm.year + "&memberStatus=" + memberStatus + "&birthMonth=" + birthMonth
|
||||||
+ "&startDate=" + (startDate ? this.getDate(startDate) : '') + "&endDate=" + (endDate ? this.getDate(endDate) : '') + "&campus=" + (campus ? campus : '')
|
+ "&startDate=" + (startDate ? this.getDate(startDate) : '') + "&endDate=" + (endDate ? this.getDate(endDate) : '') + "&campus=" + (campus ? campus : '')
|
||||||
+ "&reverseSelection=" + (reverseSelection ? reverseSelection : '') + "&memberSearchName=" + (memberSearchName ? memberSearchName : '')
|
+ "&reverseSelection=" + (reverseSelection ? reverseSelection : '') + "&memberSearchName=" + (memberSearchName ? memberSearchName : '')
|
||||||
+ "&memberSearchKeyWord=" + (memberSearchKeyWord ? memberSearchKeyWord : '') + "&personTypes=" + personTypes
|
+ "&memberSearchKeyWord=" + (memberSearchKeyWord ? memberSearchKeyWord : '') + "&personTypes=" + personTypes
|
||||||
|
|||||||
@@ -93,9 +93,9 @@ layout("/layouts/platform.html"){
|
|||||||
<el-dropdown-item :command="{type:'edit',data:row}">
|
<el-dropdown-item :command="{type:'edit',data:row}">
|
||||||
编辑
|
编辑
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<!-- <el-dropdown-item :command="{type:'delete',data:row}">
|
<el-dropdown-item :command="{type:'delete',data:row}">
|
||||||
删除
|
删除
|
||||||
</el-dropdown-item>-->
|
</el-dropdown-item>
|
||||||
<el-dropdown-item :command="{type:'enable',data:row}">
|
<el-dropdown-item :command="{type:'enable',data:row}">
|
||||||
{{row.isEnable?'关闭':'开启'}}
|
{{row.isEnable?'关闭':'开启'}}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
|
|||||||
@@ -150,6 +150,11 @@ layout("/layouts/platform.html"){
|
|||||||
<div v-if="node.level==2" style="padding:0 10px">
|
<div v-if="node.level==2" style="padding:0 10px">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<div class="text-right">
|
<div class="text-right">
|
||||||
|
|
||||||
|
<template v-if="activeName === 'two'">
|
||||||
|
<el-button size="medium" type="primary" @click="openAddOtherUnitAdmin">添加非本单位负责人</el-button>
|
||||||
|
</template>
|
||||||
|
|
||||||
<el-button size="medium" type="primary" @click="openAdmin(adminPageForm,adminPageForm.flag)">
|
<el-button size="medium" type="primary" @click="openAdmin(adminPageForm,adminPageForm.flag)">
|
||||||
{{butTitle}}
|
{{butTitle}}
|
||||||
</el-button>
|
</el-button>
|
||||||
@@ -158,7 +163,7 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
<el-tabs v-model="activeName" type="card" @tab-click="handleTabClick" class="mt10">
|
<el-tabs v-model="activeName" type="card" @tab-click="handleTabClick" class="mt10">
|
||||||
<el-tab-pane label="分管校领导" name="one"></el-tab-pane>
|
<el-tab-pane label="分管校领导" name="one"></el-tab-pane>
|
||||||
<el-tab-pane label="负责人" name="two"></el-tab-pane>
|
<el-tab-pane label="部门负责人" name="two"></el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<el-table highlight-current-row :data="adminTableData" style="width: 100%;" height="661px">
|
<el-table highlight-current-row :data="adminTableData" style="width: 100%;" height="661px">
|
||||||
@@ -224,6 +229,34 @@ layout("/layouts/platform.html"){
|
|||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 添加非本单位的负责人 -->
|
||||||
|
<el-dialog title="添加非本单位负责人" :visible.sync="adminOtherUnitDialogVisible" width="40%" :close-on-click-modal="false">
|
||||||
|
<el-form ref="addOtherUnitAdminForm" :model="addOtherUnitAdminFormData" label-width="120px">
|
||||||
|
<el-form-item label="单位名称" prop="unitName">
|
||||||
|
<el-input v-model="addOtherUnitAdminFormData.unitName" placeholder="请输入承办单位编码" readonly></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="负责人" prop="userId">
|
||||||
|
<el-select
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="addOtherUnitAdminFormData.userId"
|
||||||
|
filterable
|
||||||
|
remote
|
||||||
|
placeholder="请输入工号或姓名进行搜索"
|
||||||
|
:remote-method="userRemoteMethod">
|
||||||
|
<el-option
|
||||||
|
v-for="item in users"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.username+'('+item.loginname+')-' + item.unitname"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="adminOtherUnitDialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="doAdminOtherUnit">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -270,6 +303,11 @@ layout("/layouts/platform.html"){
|
|||||||
unitName: [{required: true, message: '请输入承办单位名称', trigger: ['blur', 'change']}],
|
unitName: [{required: true, message: '请输入承办单位名称', trigger: ['blur', 'change']}],
|
||||||
isEnable: [{required: true, message: '请选择是否启用', trigger: ['blur', 'change']}],
|
isEnable: [{required: true, message: '请选择是否启用', trigger: ['blur', 'change']}],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 添加非本单位负责人
|
||||||
|
adminOtherUnitDialogVisible: false,
|
||||||
|
addOtherUnitAdminFormData: {},
|
||||||
|
users: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -278,6 +316,44 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async doAdminOtherUnit(){
|
||||||
|
if (!this.addOtherUnitAdminFormData.userId) {
|
||||||
|
this.$message.warning('请选择负责人')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const resp = await $.post('/platform/proposal/basics/undertake/doAdminOtherUnit', {
|
||||||
|
unitId: this.addOtherUnitAdminFormData.id,
|
||||||
|
userId: this.addOtherUnitAdminFormData.userId
|
||||||
|
})
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.adminOtherUnitDialogVisible = false
|
||||||
|
await this.adminPageData()
|
||||||
|
this.pageData()
|
||||||
|
this.$message.success(resp.msg)
|
||||||
|
} else {
|
||||||
|
this.$message.warning('添加失败')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openAddOtherUnitAdmin(){
|
||||||
|
console.log(this.checkData)
|
||||||
|
this.addOtherUnitAdminFormData = {
|
||||||
|
id: this.checkData.id,
|
||||||
|
unitName: this.checkData.unitName,
|
||||||
|
userId: '',
|
||||||
|
}
|
||||||
|
this.adminOtherUnitDialogVisible = true
|
||||||
|
},
|
||||||
|
async userRemoteMethod(query){
|
||||||
|
this.users = []
|
||||||
|
const resp = await $.post('/platform/vi/common/searchUser', {
|
||||||
|
query: query
|
||||||
|
})
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.users = resp.data.list
|
||||||
|
} else {
|
||||||
|
this.$message.warning("查询失败")
|
||||||
|
}
|
||||||
|
},
|
||||||
dropdownCommand(command) {
|
dropdownCommand(command) {
|
||||||
const {type, data} = command
|
const {type, data} = command
|
||||||
if (type === 'leader') {
|
if (type === 'leader') {
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ layout("/layouts/platform.html"){
|
|||||||
el: '#app',
|
el: '#app',
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
components: {
|
components: {
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ layout("/layouts/platform.html"){
|
|||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
components: {
|
components: {
|
||||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.1'),
|
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.1'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ layout("/layouts/platform.html"){
|
|||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
components: {
|
components: {
|
||||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ layout("/layouts/platform.html"){
|
|||||||
el: '#app',
|
el: '#app',
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
components: {
|
components: {
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ layout("/layouts/platform.html"){
|
|||||||
components: {
|
components: {
|
||||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.1'),
|
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.1'),
|
||||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ layout("/layouts/platform.html"){
|
|||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
components: {
|
components: {
|
||||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue?v=1.0.1'),
|
||||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||||
},
|
},
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user