Merge remote-tracking branch 'origin/main'

This commit is contained in:
那些花儿
2025-10-19 20:50:10 +08:00
93 changed files with 929 additions and 715 deletions
@@ -109,6 +109,8 @@ public interface FlowConst {
// 流程实例名称
String PROCESS_INSTANCE_NAME = "instanceName";
//============================================扩展==================================================
// 开启之后不会校验任务执行所属权
String EXT_ENABLE_OPERATOR = "";
}
@@ -22,6 +22,9 @@ public class FlowCommonService {
public void executeTask(Dict args){
Long processTaskId = args.getLong(FlowConst.PROCESS_TASK_ID_KEY);
String operator = SecurityUtil.getUserId();
if (args.containsKey(FlowConst.EXT_ENABLE_OPERATOR)&&args.getBool(FlowConst.EXT_ENABLE_OPERATOR)){
operator = FlowConst.ADMIN_ID;
}
args.remove(FlowConst.PROCESS_TASK_ID_KEY);
Integer submitType = args.getInt(FlowConst.SUBMIT_TYPE);
if (submitType == null) {
@@ -354,7 +354,17 @@ public class SysUnionController {
@ApiOperation("分工会组成单位分页")
@SaCheckPermission("sys.manager.union")
public Result branchUnionPartUnitPageData(PageForm pageForm, String unionId) {
List<Sys_unit> list = dao.query(Sys_unit.class, Cnd.where("unionId", "=", unionId).asc("unitcode"));
Cnd cnd = Cnd.NEW();
cnd.and("unionId", "=", unionId);
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("`name`", pageForm.getSearchKeyword());
seg.orLike("unitcode", pageForm.getSearchKeyword());
cnd.and(seg);
}
cnd.desc("unitcode");
List<Sys_unit> list = dao.query(Sys_unit.class, cnd);
return Result.success(list);
}
@@ -46,6 +46,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
;
@@ -75,12 +76,13 @@ public class SysUnitController {
@At("/pageData")
@Ok("json")
@SaCheckLogin
public Object pageData(PageForm pageForm, String unitName, Integer unitLevel) {
public Object pageData(PageForm pageForm, String unitName, String unitId) {
Cnd cnd = Cnd.NEW();
// cnd.and("parentId", "is not", null).andEX("unitLevel", "=", unitLevel).asc("unitLevel").asc("unitcode");
cnd.and("parentId", "is not", null)
.and("unitTypeCode", "=", "1")
.asc("unitcode");
cnd.and("parentId", "is not", null);
cnd.andEX("parentId", "=", unitId);
// cnd.and("unitTypeCode", "=", "1");
cnd.asc("unitcode");
cnd.and(Cnd.likeEX("name", unitName));
Pagination<Sys_unit> listPage = sysUnitService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), Sys_unit.class, cnd);
@@ -92,14 +94,14 @@ public class SysUnitController {
@SaCheckLogin
public Object userPageData(PageForm pageForm, String unitId) {
Sql sql = Sqls.create("""
select username,loginname,sex,mobile,if(member = 1, '是', '否') as member from vw_user $condition
select username,loginname,sex,mobile,member from vw_user $condition
""").setParam("unitId", unitId);
Cnd cnd = Cnd.NEW();
cnd.and("unitid", "=", unitId);
if (Strings.isNotBlank(pageForm.getSearchName()) && Strings.isNotBlank(pageForm.getSearchKeyword())) {
cnd.and(pageForm.getSearchName(), "like", "%" + pageForm.getSearchKeyword() + "%");
}
cnd.asc("member");
cnd.desc("member");
sql.setCondition(cnd);
return Result.success(sysUnitService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql));
}
@@ -290,7 +292,13 @@ public class SysUnitController {
List<TreeNode<String>> nodeList = CollUtil.newArrayList();
for (int i = 0; i < list.size(); i++) {
nodeList.add(new TreeNode<>(list.get(i).getId(), list.get(i).getParentId(), list.get(i).getName(), i));
nodeList.add(new TreeNode<>(list.get(i).getId(), list.get(i).getParentId(), list.get(i).getName(), i)
.setExtra(
Map.of(
"unitType", list.get(i).getUnitType(),
"unitTypeCode", list.get(i).getUnitTypeCode()
)
));
}
List<Tree<String>> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "0000"));
@@ -43,7 +43,10 @@ public class SysUnionGroupServiceImpl extends BaseServiceImpl<Sys_union_group> i
@Override
@Aop(TransAop.READ_COMMITTED)
public void insert(Sys_union_group group) {
int count = dao().count(Sys_union_group.class, Cnd.where(Sys_union_group::getCode, "=", group.getCode()));
int count = dao().count(Sys_union_group.class,
Cnd.where(Sys_union_group::getCode, "=", group.getCode())
.and(Sys_union_group::getUnionId, "=", group.getUnionId())
);
if (count > 0) {
throw new BaseException("小组编码已存在");
}
@@ -54,8 +57,11 @@ public class SysUnionGroupServiceImpl extends BaseServiceImpl<Sys_union_group> i
@Override
@Aop(TransAop.READ_COMMITTED)
public void update(Sys_union_group group) {
int count = dao().count(Sys_union_group.class, Cnd.where(Sys_union_group::getCode, "=", group.getCode())
.and(Sys_union_group::getId, "!=", group.getId()));
int count = dao().count(Sys_union_group.class,
Cnd.where(Sys_union_group::getCode, "=", group.getCode())
.and(Sys_union_group::getId, "!=", group.getId())
.and(Sys_union_group::getUnionId, "=", group.getUnionId())
);
if (count > 0) {
throw new BaseException("小组编码已存在");
}
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.activity.basic.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.stp.StpUtil;
@@ -312,10 +313,10 @@ public class ActivityBasicScopeController {
propMap.forEach((k, v) -> {
entityList.add(new ExcelExportEntity(v, k, 40));
});
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(("人员名单.xls").getBytes("utf-8"), "ISO8859-1"));
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), entityList, map);
workbook.write(response.getOutputStream());
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, map);
CommonDownloadUtil.download("人员名单.xlsx", workbook, response);
} catch (Exception e) {
e.printStackTrace();
}
@@ -1,5 +1,9 @@
package com.budwk.app.zhgh.activity.basic.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ArrayUtil;
@@ -11,16 +15,19 @@ import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.EasyExcelUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
import com.budwk.app.zhgh.activity.basic.template.UserTemp;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.Workbook;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.dao.util.cri.Static;
import org.nutz.integration.jedis.RedisService;
import org.nutz.ioc.aop.Aop;
@@ -35,6 +42,7 @@ import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
@@ -94,8 +102,11 @@ public class ActivityBasicScopeUserDataController {
""");
Cnd cnd = Cnd.NEW();
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())){
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("u.username", pageForm.getSearchKeyword());
group.orLike("u.loginname", pageForm.getSearchKeyword());
cnd.and(group);
}
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
@@ -229,4 +240,50 @@ public class ActivityBasicScopeUserDataController {
return Result.success(nutMap);
}
@At
@Ok("void")
@ApiOperation("导出人员名单")
@SaCheckPermission("activity.basic.user")
public void doExportUser(Integer groupId, HttpServletResponse response) {
try {
Sql sql = Sqls.create("""
SELECT
u.username AS userName,
u.loginname AS loginName,
u.sex,
u.mobile,
u.unitname AS unitName,
u.unionName AS unionName
FROM
activity_user_scope aus
LEFT JOIN `vw_user` u ON u.id = aus.userId
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("aus.groupId", "=", groupId);
sql.setCondition(cnd);
List<NutMap> listMap = baseService.listMap(sql);
List<ExcelExportEntity> exportEntities = new ArrayList<>();
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
exportEntities.add(new ExcelExportEntity("工会", "unionName", 20));
exportEntities.add(new ExcelExportEntity("单位", "unitName", 20));
exportEntities.add(new ExcelExportEntity("手机号码", "mobile", 20));
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, listMap);
CommonDownloadUtil.download("人员名单.xlsx", workbook, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -89,7 +89,7 @@ public class ActivityCultureApplyUserController {
int count = dao.count(ActivityUserScope.class,
Cnd.where(ActivityUserScope::getUserId, "=", SecurityUtil.getUserId())
.and(ActivityUserScope::getGroupId, "=", tissue.getGroupId()));
if (count == 0){
if (count == 0) {
return Result.error("您没有权限报名!");
}
JSONObject dynamicFormParam = null;
@@ -120,14 +120,20 @@ public class ActivityCultureApplyUserController {
@At
@SaCheckLogin
@ApiOperation(value = "队友搜索")
public Result queryTeammate(@Valid String keyword,Integer signUpMethod) {
public Result queryTeammate(@Valid String keyword, Integer signUpMethod, String tissueId) {
Sql sql = Sqls.create("select id userId,username userName,loginname loginName,sex,mobile,unitName from vw_user $condition limit 0,10");
Cnd cnd = Cnd.NEW();
cnd.or(Cnd.likeEX("username", keyword));
cnd.or(Cnd.likeEX("loginname", keyword));
if (signUpMethod == 3){
if (signUpMethod == 3) {
cnd.and("unionid", "=", SecurityUtil.getUnionId());
}
if (StrUtil.isNotBlank(tissueId) && signUpMethod == 2) {
List<ActivityTissuePerson> personList = activityCultureApplyUserService.query(Cnd.where(ActivityTissuePerson::getTissueId, "=", tissueId)
.and(ActivityTissuePerson::getApplyUserId, "!=", SecurityUtil.getUserId()));
List<String> userIds = personList.stream().map(ActivityTissuePerson::getUserId).toList();
cnd.andEX("id", "not in", userIds);
}
sql.setCondition(cnd);
List<NutMap> list = activityCultureApplyUserService.listMap(sql);
return Result.success(list);
@@ -163,10 +169,9 @@ public class ActivityCultureApplyUserController {
@At
@SaCheckLogin
@ApiOperation(value = "是否报名")
public Result isSignUp(@Valid String activityId){
public Result isSignUp(@Valid String activityId) {
return Result.success();
}
}
@@ -110,10 +110,10 @@ public class ActivityCultureUserStatisticsController {
}
}
if (Strings.isNotBlank(page.getSearchKeyword())) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("atp.username", page.getSearchKeyword());
group.orLike("atp.loginanme", page.getSearchKeyword());
cnd.and(group);
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("atp.userName", page.getSearchKeyword());
group.orLike("atp.loginName", page.getSearchKeyword());
cnd.and(group);
}
if (StrUtil.isNotBlank(page.getPageOrderName()) && StrUtil.isNotBlank(page.getPageOrderBy())) {
cnd.orderBy(page.getPageOrderName(), page.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
@@ -155,7 +155,7 @@ public class ActivityCultureUserStatisticsController {
$condition
""").setParam("userId", SecurityUtil.getUserId());
Cnd cnd =Cnd.where("tissue.activity_type", "=", activity_type);
Cnd cnd = Cnd.where("tissue.activity_type", "=", activity_type);
cnd.and("tissue.projectTypeCode", "!=", 50004);
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("tissue.signUpMethod", "in", List.of(1, 2, 3));
@@ -168,6 +168,7 @@ public class ActivityCultureUserStatisticsController {
cnd.and("ins.state", "=", 20);
}
cnd.andEX("YEAR(tissue.startTime)", "=", year).desc("tissue.startTime");
cnd.groupBy("tissue.id");
sql.setCondition(cnd);
return Result.success(activityCultureApplyUserService.list(sql));
}
@@ -27,6 +27,7 @@ import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@@ -78,7 +79,7 @@ public class CadreTrainingCollectController {
String activityId,
String unionId,
String unitId,
String userName,
String searchKeyword,
String sex) {
Sql sql = Sqls.create("""
SELECT
@@ -125,9 +126,12 @@ public class CadreTrainingCollectController {
// 性别查询条件
cnd.andEX("info.sex", "=", sex);
// 姓名查询条件
if (StrUtil.isNotBlank(userName)) {
cnd.and("info.userName", "like", "%" + userName + "%");
// 姓名和工号查询条件
if (StrUtil.isNotBlank(searchKeyword)) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("info.userName", "%" + searchKeyword + "%");
seg.orLike("info.loginName", "%" + searchKeyword + "%");
cnd.and(seg);
}
// 只查询流程实例状态为20的数据(已完成状态)
@@ -18,6 +18,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
@@ -64,7 +65,7 @@ public class CadreTrainingSchoolAuditController {
String activityId,
String unionId,
String unitId,
String userName,
String searchKeyword,
String sex) {
Sql sql = Sqls.create("""
SELECT
@@ -121,9 +122,12 @@ public class CadreTrainingSchoolAuditController {
// 性别查询条件
cnd.andEX("info.sex", "=", sex);
// 姓名查询条件
if (StrUtil.isNotBlank(userName)) {
cnd.and("info.userName", "like", "%" + userName + "%");
// 姓名和工号查询条件
if (StrUtil.isNotBlank(searchKeyword)) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("info.userName", "%" + searchKeyword + "%");
seg.orLike("info.loginName", "%" + searchKeyword + "%");
cnd.and(seg);
}
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.desc("info.applyTime");
@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
@@ -61,7 +62,7 @@ public class EnrollmentRegistrationSchoolAuditController {
String unionId,
String unitId,
String registrationType,
Boolean approval) {
Boolean approval,String searchKeyword) {
Sql sql = Sqls.create("""
SELECT
info.*,
@@ -97,6 +98,13 @@ public class EnrollmentRegistrationSchoolAuditController {
cnd.andEX("info.unionId", "=", unionId);
cnd.andEX("info.unitId", "=", unitId);
cnd.andEX("info.registrationType", "=", registrationType);
// 姓名和工号查询条件
if (StrUtil.isNotBlank(searchKeyword)) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("info.userName", "%" + searchKeyword + "%");
seg.orLike("info.loginName", "%" + searchKeyword + "%");
cnd.and(seg);
}
if (approval) {
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
@@ -76,8 +76,8 @@ public class EnrollmentRegistrationSummaryController {
@At
@ApiOperation("分页查询")
@SaCheckPermission("enrollmentRegistration.summary")
public Result pageData(EnrollmentRegistrationPageForm pageForm) {
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm);
public Result pageData(EnrollmentRegistrationPageForm pageForm ,String searchKeyword) {
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm, searchKeyword);
Pagination pagination = enrollmentRegistrationSummaryService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@@ -100,7 +100,7 @@ public class EnrollmentRegistrationSummaryController {
@SaCheckPermission("enrollmentRegistration.summary")
public void doExportExcel(@Param("data") EnrollmentRegistrationPageForm pageForm, HttpServletResponse response) {
try {
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm);
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm, null);
List<NutMap> map = enrollmentRegistrationSummaryService.listMap(sql);
List<Sys_dict> dictList = sysDictService.getSubListByCode("ENROLLMENT_REGISTRATION_TYPE");
@@ -146,7 +146,7 @@ public class EnrollmentRegistrationSummaryController {
try {
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLUtil.encode("子女入学.zip"));
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm);
Sql sql = enrollmentRegistrationSummaryService.getSql(pageForm, null);
List<NutMap> map = enrollmentRegistrationSummaryService.listMap(sql);
List<Sys_dict> dictList = sysDictService.getSubListByCode("ENROLLMENT_REGISTRATION_TYPE");
@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
@@ -59,7 +60,7 @@ public class EnrollmentRegistrationUnionAuditController {
public Result pageData(PageForm pageForm,
Integer year,
String registrationType,
Boolean approval) {
Boolean approval,String searchKeyword) {
Sql sql = Sqls.create("""
SELECT
info.*,
@@ -94,6 +95,14 @@ public class EnrollmentRegistrationUnionAuditController {
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
cnd.andEX("info.registrationType","=",registrationType);
// 姓名和工号查询条件
if (StrUtil.isNotBlank(searchKeyword)) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("info.userName", "%" + searchKeyword + "%");
seg.orLike("info.loginName", "%" + searchKeyword + "%");
cnd.and(seg);
}
if (approval) {
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
} else {
@@ -8,5 +8,5 @@ public interface EnrollmentRegistrationSummaryService extends BaseService {
Sql getSql(EnrollmentRegistrationPageForm pageForm);
Sql getSql(EnrollmentRegistrationPageForm pageForm,String searchKeyword);
}
@@ -1,5 +1,6 @@
package com.budwk.app.zhgh.dayofficework.enrollmentRegistration.service.impl;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import com.budwk.app.zhgh.dayofficework.enrollmentRegistration.service.EnrollmentRegistrationSummaryService;
@@ -8,6 +9,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.IocBean;
/**
@@ -22,7 +24,7 @@ public class EnrollmentRegistrationSummaryServiceImpl extends BaseServiceImpl im
}
@Override
public Sql getSql(EnrollmentRegistrationPageForm pageForm) {
public Sql getSql(EnrollmentRegistrationPageForm pageForm ,String searchKeyword) {
Sql sql = Sqls.create("""
SELECT
info.*,
@@ -51,6 +53,13 @@ public class EnrollmentRegistrationSummaryServiceImpl extends BaseServiceImpl im
$condition
""");
Cnd cnd = Cnd.NEW();
// 姓名和工号查询条件
if (StrUtil.isNotBlank(searchKeyword)) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("info.userName", "%" + searchKeyword + "%");
seg.orLike("info.loginName", "%" + searchKeyword + "%");
cnd.and(seg);
}
cnd.andEX("YEAR(info.applyTime)", "=", pageForm.getYear());
cnd.and("ins.state", "=", ProcessTaskStateEnum.FINISHED.getCode());
cnd.andEX("info.unionId","=",pageForm.getUnionId());
@@ -13,6 +13,7 @@ import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.flow.service.FlowCommonService;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateActivity;
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateActivityService;
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
@@ -91,6 +92,13 @@ public class EvaluateApplyController {
@SaCheckPermission("evaluation.apply")
@ApiOperation("验证能否申请")
public Result valid(@Valid String id) {
EvaluateActivity activity = evaluateActivityService.fetch(id);
if (activity.getStartTime().after(new Date())){
return Result.success().addData(false).addMsg("活动未开始");
}
if (activity.getEndTime().before(new Date())){
return Result.success().addData(false).addMsg("活动已结束");
}
return Result.success().addData(true);
}
@@ -101,9 +101,6 @@ public class ExerciseCardServiceImpl extends BaseServiceImpl<ExerciseCard> imple
errorInfos.add(v);
continue;
}
if (StrUtil.isNotBlank(v.getUsername())) {
user.setUsername(v.getUsername());
}
insertOrUpdateUserList.add(user);
@@ -33,6 +33,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
@@ -100,6 +101,7 @@ public class HealthCheckupListController {
hcus.selectTime,
hcus.campus,
hcus.subjectId,
hcus.bz,
ca.campusName
FROM
health_checkup_user hcu
@@ -117,8 +119,11 @@ public class HealthCheckupListController {
cnd.andEX("hcu.unionId", "=", SecurityUtil.getUnionId());
}
if (StrUtil.isNotBlank(pageForm.getSearchName()) && StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword()));
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("hcu.userName", pageForm.getSearchKeyword());
group.orLike("hcu.loginName", pageForm.getSearchKeyword());
cnd.and(group);
}
cnd.groupBy("hcu.userId");
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && Strings.isNotBlank(pageForm.getPageOrderBy())) {
@@ -34,6 +34,7 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
@@ -348,7 +349,7 @@ public class HealthCheckupSingleController {
}
}
//如果有符合的就添加
if (subjectMoneyId != null){
if (subjectMoneyId != null) {
HealthCheckupUserSelection selection = new HealthCheckupUserSelection();
selection.setProjectId(projectId);
selection.setSelectUserId(v);
@@ -363,4 +364,15 @@ public class HealthCheckupSingleController {
});
return Result.success();
}
@At
@ApiOperation("给未选的人发送提醒")
@Ok("json:full")
@SaCheckPermission("healthCheckup.statisticsSingle")
@SLog(type = "healthCheckup", tag = "体检管理", msg = "管理员给未选的人发送提醒")
public Result msgNotSelect(@Valid String projectId) {
List<NutMap> userList = healthCheckupSingleService.receivePageData(projectId, null, "1");
return Result.success("暂未开启消息!");
}
}
@@ -7,7 +7,6 @@ import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.Page;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
@@ -24,6 +23,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
@@ -32,11 +32,8 @@ import org.nutz.lang.util.NutMap;
import org.nutz.mvc.Mvcs;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
@@ -83,9 +80,12 @@ public class HonorManageController {
cnd.andEX("h.honorType", "=", pageForm.getHonorType());
cnd.andEX("h.prize", "=", pageForm.getPrize());
cnd.andEX("h.honorLevel", "=", pageForm.getHonorLevel());
if (Strings.isNotBlank(pageForm.getUserName())) {
cnd.andEX("h.userName", "like", "%" + pageForm.getUserName() + "%");
cnd.andEX("h.unionId", "=", pageForm.getUnionId());
if (Strings.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("u.loginname", "%" + pageForm.getSearchKeyword() + "%");
group.orLike("u.username", "%" + pageForm.getSearchKeyword() + "%");
cnd.and(group);
}
if (Strings.isNotBlank(pageForm.getUnitName())) {
cnd.andEX("h.unitName", "like", "%" + pageForm.getUnitName() + "%");
@@ -105,7 +105,7 @@ public class HonorManageController {
Pagination pagination = honorViService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
List<NutMap> list = pagination.getList();
list.forEach(v -> {
if(StrUtil.isNotBlank(v.getString("awardMaterials"))){
if (StrUtil.isNotBlank(v.getString("awardMaterials"))) {
v.setv("awardMaterialsExcel", getBasicNameById(v.getString("awardMaterials")).toString());
}
});
@@ -195,11 +195,11 @@ public class HonorManageController {
v.setPrize(null);
}
}
if(v.getAwardMaterials() != null && !v.getAwardMaterials().isEmpty()) {
if (v.getAwardMaterials() != null && !v.getAwardMaterials().isEmpty()) {
v.setAwardMaterialsExcel(getBasicNameById(Json.toJson(v.getAwardMaterials())).toString());
}
v.setHonorType(singleHonor.get().getName());
if(StrUtil.isNotBlank(v.getUserId())) {
if (StrUtil.isNotBlank(v.getUserId())) {
Sys_user user = dao.fetch(Sys_user.class, v.getUserId());
v.setLoginname(user != null ? user.getLoginname() : "");
}
@@ -66,7 +66,7 @@ public class ActivityBudgetQueryStatisticsServiceImpl extends BaseServiceImpl im
} else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
Sql sql = Sqls.create("""
SELECT
@YEAR `year`,
@year `year`,
sc.clubCode,
sc.clubName,
ab.clubId,
@@ -104,6 +104,9 @@ public class OutlayReimburseApplyController {
Dict args = Dict.create();
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, outlayReimburse);
if (outlayReimburse.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_THREE")){
args.set("clubId", outlayReimburse.getClubId());
}
args.set("outlayManageSource", outlayReimburse.getOutlayManageSource());
ProcessInstance instance = flowEngine.startProcessInstanceByKey("FYBXSQ", outlayReimburse.getId(), SecurityUtil.getUserId(), args);
@@ -2,15 +2,22 @@ package com.budwk.app.zhgh.dayofficework.outlay.outlayReimburse.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.flow.constant.FlowConst;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessInstance;
import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import com.budwk.app.sys.services.SysDictService;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.dayofficework.outlay.outlayReimburse.model.OutlayReimburse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -22,6 +29,7 @@ import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
@@ -42,12 +50,17 @@ public class OutlayReimburseClubAuditController {
@Inject
private SysDictService sysDictService;
@Inject
private FlowEngine flowEngine;
@At("/index")
@Ok("beetl:/platform/zhgh/dayofficework/outlay/outlayReimburse/clubAudit/index.html")
@SaCheckPermission("outlay.reimburse.clubAudit")
public void index() {
}
@At("/h5")
@Ok("beetl:/platform/zhghh5/dayofficework/outlayReimburse/clubAudit/index.html")
@SaCheckPermission("h5.outlay.reimburse.clubAudit")
@@ -118,7 +131,24 @@ public class OutlayReimburseClubAuditController {
}
@At
@ApiOperation("协会审核")
@SaCheckPermission(value = {"outlay.reimburse.clubAudit", "h5.outlay.reimburse.clubAudit"}, mode = SaMode.OR)
public Result submit(@Param("data") OutlayReimburse outlayReimburse) {
// 开启流程实例
Dict args = Dict.create();
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, outlayReimburse);
args.set("clubId", outlayReimburse.getClubId());
ProcessInstance instance = flowEngine.startProcessInstanceByKey("FYBXSQ", outlayReimburse.getId(), SecurityUtil.getUserId(), args);
// 自动完成第一个申请任务
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
for (ProcessTask task : doingTaskList) {
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
}
return Result.success();
}
}
@@ -65,6 +65,7 @@ public class OutlayReimburseUnionAuditController {
String outlayManageSource) {
Sql sql = Sqls.create("""
SELECT
ta.actorId,
info.*,
YEAR(info.applyTime) year,
ins.id AS instanceId,
@@ -140,7 +140,7 @@ public class ExecutiveCommitteePushController {
ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class,
Cnd.where("teacherMeetId", "=", teacherMeetId));
if (ObjectUtil.isEmpty(config)) {
/* if (ObjectUtil.isEmpty(config)) {
return Result.error("请先配置基础信息");
}
if (config.getFirstStartTime().getTime() > System.currentTimeMillis()) {
@@ -148,7 +148,7 @@ public class ExecutiveCommitteePushController {
}
if (config.getFirstEndTime().getTime() < System.currentTimeMillis()) {
return Result.error("一次预选已结束");
}
}*/
int dbCount = dao.count(ExecutiveCommitteeOnePush.class,
Cnd.where("teacherMeetId", "=", teacherMeetId)
@@ -1,5 +1,6 @@
package com.budwk.app.zhgh.democratic.executiveCommittee.service.impl;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.zhgh.democratic.executiveCommittee.param.ExecutiveCommitteePageForm;
import com.budwk.app.zhgh.democratic.executiveCommittee.service.ExecutiveCommitteeMemberService;
@@ -51,11 +52,11 @@ public class ExecutiveCommitteeMemberServiceImpl extends BaseServiceImpl impleme
cnd.andEX("op.unitId", "=", pageForm.getUnitId());
cnd.andEX("it.unionid", "=", pageForm.getUnionId());
cnd.andEX("op.delegationId", "=", pageForm.getDelegationId());
if (Strings.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("op.userName", pageForm.getSearchKeyword());
group.orLike("op.loginName", pageForm.getSearchKeyword());
cnd.and(group);
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("op.userName", pageForm.getSearchKeyword());
group.orLike("op.loginName", pageForm.getSearchKeyword());
cnd.and(group);
}
cnd.desc("pushCount");
cnd.asc("op.firstLetter");
@@ -170,6 +170,7 @@ public class TeacherCongressDelegatePushController {
sql.setParam("sessionId", sessionId);
Cnd cnd = Cnd.NEW();
cnd.and("u.member", "=", 1);
cnd.and("u.username", "is not", null);
cnd.andEX("u.id", "not in", userIds);
cnd.and("tcd.userId", "is", null);
cnd.and("tcdp.id", "is", null);
@@ -249,6 +250,7 @@ public class TeacherCongressDelegatePushController {
// 自动完成第一个申请任务
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
for (ProcessTask task : doingTaskList) {
args.put(FlowConst.NEXT_NODE_OPERATOR, teacherCongressDelegatePush.getUserId());
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
}
});
@@ -287,35 +289,23 @@ public class TeacherCongressDelegatePushController {
Sql sql = Sqls.create("""
SELECT
info.*,
ins.id AS instanceId,
ins.businessNo,
ins.state instanceState,
ins.variable instanceVariable,
ins.processDefineId instanceProcessDefineId,
t.id taskId,
t.taskName AS taskKey,
t.displayName taskName,
t.taskType,
t.performType taskPerformType,
t.taskState,
t.finishTime,
t.taskParentId,
t.variable taskVariable,
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask') AS startTaskId
t.displayName taskName
FROM
teacher_congress_delegate_push info
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("info.sessionId", "=", sessionId);
cnd.andEX("info.unionId", "=", SecurityUtil.getUnionId());
cnd.andEX("t.taskName", "=", "53ff0c2a-ba93-45e9-a9fd-db51cdab3080");
cnd.andEX("t.taskName", "=", "0cacd1e7-7bb2-47dd-818b-6a73062e0c62");
cnd.groupBy("info.id");
sql.setCondition(cnd);
List<NutMap> writeList = baseService.listMap(sql);
// 已上报总人数
int total = writeList.size();
// 已上报女代表人数
@@ -338,21 +328,28 @@ public class TeacherCongressDelegatePushController {
if (total > allocation.getAllocationNum()) {
tips.append("上报总人数超出分配名额!");
}
/* if (female < allocation.getFemaleNum()) {
tips.append("女教师代表数不满足分配名额数!");
}
if (seniorTeacher < allocation.getSeniorTeaNum()) {
tips.append("高级职称专任教师数不满足分配名额数!");
}
if (intermediateBelow < allocation.getIntermediateBelowNum()) {
tips.append("中级职称及以下代表数不满足分配名额数!");
}
if (ordinaryTeacher < allocation.getOrdinaryTeaNum()) {
tips.append("专任教师数不满足分配名额数!");
if (cadre < allocation.getCadreNum()) {
tips.append("干部代表数不满足分配名额数!");
}
if (worker < allocation.getWorkerNum()) {
tips.append("工人代表数不满足分配名额数!");
}
if (female < allocation.getFemaleNum()) {
tips.append("女教师代表数不满足分配名额数!");
}
if (under45 < allocation.getLess45Num()) {
tips.append("45岁以下教师代表数不满足分配名额数!");
}*/
}
if (StrUtil.isNotBlank(tips)) {
return Result.error(tips.toString());
@@ -366,11 +363,14 @@ public class TeacherCongressDelegatePushController {
@ApiOperation("本单位代表上报情况")
@SaCheckPermission("tc.delegate.push")
public Result selfUnionPushMetric(String sessionId, String unionId) {
if (StrUtil.isBlank(unionId)) {
unionId = SecurityUtil.getUnionId();
}
Teacher_congress_quota_allocation allocation = dao.fetch(Teacher_congress_quota_allocation.class,
Cnd.where(Teacher_congress_quota_allocation::getSessionId, "=", sessionId)
.and(Teacher_congress_quota_allocation::getUnionId, "=", SecurityUtil.getUnionId()));
if(allocation == null){
.and(Teacher_congress_quota_allocation::getUnionId, "=", unionId));
if (allocation == null) {
return Result.success();
}
@@ -402,7 +402,7 @@ public class TeacherCongressDelegatePushController {
""");
Cnd cnd = Cnd.NEW();
cnd.andEX("info.sessionId", "=", sessionId);
cnd.andEX("info.unionId", "=", SecurityUtil.getUnionId());
cnd.andEX("info.unionId", "=", unionId);
cnd.andEX("info.representativeType", "=", "正式代表");
cnd.and("ins.state", "=", ProcessTaskStateEnum.FINISHED.getCode());
sql.setCondition(cnd);
@@ -414,23 +414,23 @@ public class TeacherCongressDelegatePushController {
// 女代表人数
int female = (int) writeList.stream().filter(v -> List.of("", "女性").contains(v.getString("sex"))).count();
// 高级职称专任教师人数
int seniorTeacher = (int) writeList.stream().filter(v->v.getBoolean("seniorTeacher")).count();
int seniorTeacher = (int) writeList.stream().filter(v -> v.getBoolean("seniorTeacher")).count();
// 中级职称及以下
int intermediateBelow = (int) writeList.stream().filter(v->v.getBoolean("intermediateBelow")).count();
int intermediateBelow = (int) writeList.stream().filter(v -> v.getBoolean("intermediateBelow")).count();
// 干部
int cadre = (int) writeList.stream().filter(v->v.getBoolean("cadre")).count();
int cadre = (int) writeList.stream().filter(v -> v.getBoolean("cadre")).count();
// 工人
int worker = (int) writeList.stream().filter(v->v.getBoolean("worker")).count();
int worker = (int) writeList.stream().filter(v -> v.getBoolean("worker")).count();
// 专任教师人数
int ordinaryTeacher = (int) writeList.stream().filter(v->v.getBoolean("ordinaryTeacher")).count();
int ordinaryTeacher = (int) writeList.stream().filter(v -> v.getBoolean("ordinaryTeacher")).count();
// 45岁以下代表
int under45 = (int) writeList.stream().filter(v -> Convert.toInt(v.getInt("age"), 0) <= 45).count();
// 少数民族代表
long ethnicMinority = writeList.stream().filter(v -> StrUtil.isNotBlank(v.getString("nation")) && !"汉族".equals(v.getString("nation"))).count();
// 校领导数
long schoolLeader = writeList.stream().filter(v->v.getBoolean("schoolLeader")).count();
long schoolLeader = writeList.stream().filter(v -> v.getBoolean("schoolLeader")).count();
// 中层领导数
long middleLevelLeader = writeList.stream().filter(v->v.getBoolean("middleLevelLeader")).count();
long middleLevelLeader = writeList.stream().filter(v -> v.getBoolean("middleLevelLeader")).count();
HashMap<String, Object> hashMap = new HashMap<>();
@@ -103,7 +103,7 @@ public class TeacherCongressDelegatePushWriteController {
@At
@ApiOperation("代表信息填写保存")
@SaCheckPermission("tc.delegate.push.write")
@SaCheckLogin
public Result save(TeacherCongressDelegatePush teacherCongressDelegatePush){
dao.updateIgnoreNull(teacherCongressDelegatePush);
return Result.success();
@@ -111,13 +111,14 @@ public class TeacherCongressDelegatePushWriteController {
@At
@ApiOperation("代表信息填写提交")
@SaCheckPermission("tc.delegate.push.write")
@SaCheckLogin
public Result submit(TeacherCongressDelegatePush teacherCongressDelegatePush,String taskId){
dao.updateIgnoreNull(teacherCongressDelegatePush);
Dict dict = Dict.create();
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.AGREE.getCode());
dict.set(FlowConst.EXT_ENABLE_OPERATOR,true);
flowCommonService.executeTask(dict);
return Result.success();
}
@@ -24,6 +24,7 @@ import com.budwk.app.sys.views.View_user;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCongressDelegatePush;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_union;
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_unit;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
@@ -227,15 +228,15 @@ public class TeacherCongressDelegatePushZgAuditController {
delegate.setSessionId(delegatePush.getSessionId());
Teacher_congress_delegation_union delegation_union = baseService.dao().fetch(Teacher_congress_delegation_union.class,
Cnd.where(Teacher_congress_delegation_union::getUnionId, "=", user.getUnionId())
Teacher_congress_delegation_unit delegation_unit = baseService.dao().fetch(Teacher_congress_delegation_unit.class,
Cnd.where(Teacher_congress_delegation_unit::getUnitId, "=", user.getUnitId())
.and(Teacher_congress_delegation_union::getSessionId, "=", delegatePush.getSessionId()));
if (ObjectUtil.isNotEmpty(delegation_union)) {
delegate.setDelegationId(delegation_union.getId());
userRole.setTcDelegationId(delegation_union.getId());
if (ObjectUtil.isNotEmpty(delegation_unit)) {
delegate.setDelegationId(delegation_unit.getId());
userRole.setTcDelegationId(delegation_unit.getId());
} else {
return Result.error(user.getUnionName() + "没有设置到代表团,请先在代表团管理里设置。");
return Result.error(user.getUnitName() + "没有设置到代表团,请先在代表团管理里设置。");
}
if ("正式代表".equals(delegatePush.getRepresentativeType())) {
Sys_role sys_role = baseService.dao().fetch(Sys_role.class, Cnd.where(Sys_role::getCode, "=", RoleConstant.TEACHER_CONGRESS_DELEGATE_FORMAL.name()));
@@ -67,6 +67,7 @@ public class TeacherCongressDelegatePushServiceImpl extends BaseServiceImpl<Teac
Dict dict = Dict.create();
dict.set(FlowConst.PROCESS_TASK_ID_KEY, push.getString("taskId"));
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.AGREE.getCode());
dict.set(FlowConst.EXT_ENABLE_OPERATOR,true);
flowCommonService.executeTask(dict);
});
}
@@ -149,7 +149,7 @@ public class DifficultHelpApplyController {
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("id", "<>", SecurityUtil.getUserId());
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name())) {
cnd.and("unionid", "=", SecurityUtil.getUnionId());
@@ -88,7 +88,7 @@ public class DifficultHelpReadingController {
""");
Cnd cnd = Cnd.NEW();
pageParam.buildSearch(cnd, "info.");
cnd.groupBy("t.id");
cnd.groupBy("info.id");
sql.setCondition(cnd);
Pagination<NutMap> pagination = difficultHelpCommonService.listPageMap(pageParam.getPageNumber(), pageParam.getPageSize(), sql);
return Result.success().addData(pagination);
@@ -18,6 +18,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
@@ -106,6 +107,13 @@ public class ExcellentRecuperationSchoolAuditController {
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
}
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())){
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("info.userName", pageForm.getSearchKeyword());
group.orLike("info.loginName", pageForm.getSearchKeyword());
cnd.and(group);
}
if (StrUtil.isNotBlank(pageForm.getSearchName())&& StrUtil.isNotBlank(pageForm.getSearchKeyword())){
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
}
@@ -10,6 +10,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.IocBean;
/**
@@ -61,8 +62,11 @@ public class ExcellentRecuperationSummaryServiceImpl extends BaseServiceImpl imp
cnd.andEX("info.unionId", "=", pageForm.getUnionId());
cnd.andEX("info.unitId", "=", pageForm.getUnitId());
cnd.and("ins.state", "=", ProcessTaskStateEnum.FINISHED.getCode());
if (StrUtil.isNotBlank(pageForm.getSearchName())&& StrUtil.isNotBlank(pageForm.getSearchKeyword())){
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())){
SqlExpressionGroup group = new SqlExpressionGroup();
group.orLike("info.userName", pageForm.getSearchKeyword());
group.orLike("info.loginName", pageForm.getSearchKeyword());
cnd.and(group);
}
sql.setCondition(cnd);
return sql;
@@ -181,11 +181,11 @@ public class ThirtyTeachController {
for (ThirtyTeachTemp temp : teachTempList) {
if (StrUtil.isBlank(temp.getUserName())) {
temp.setResult("获取不到该用户的姓名!");
/* temp.setResult("获取不到该用户的姓名!");
errorInfos.add(temp);
break;
break;*/
} else if (StrUtil.isBlank(temp.getLoginName())) {
temp.setResult("获取不到该用户的出生日期");
temp.setResult("获取不到该用户的工号");
errorInfos.add(temp);
break;
}else if (StrUtil.isBlank(temp.getThirtyCertificateProcessingTime())) {
@@ -28,17 +28,9 @@
<div class="search-item">
<div class="search-item-label">姓名/工号</div>
<div class="search-item-option">
<el-input
placeholder="请输入姓名或工号"
clearable
v-model="pageForm.searchKeyword"
style="width: 100%"
@keyup.enter.native="doSearch"
>
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型" style="width: 80px">
<el-option label="姓名" value="username"></el-option>
<el-option label="工号" value="loginname"></el-option>
</el-select>
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入姓名或工号"
v-model="pageForm.searchKeyword">
</el-input>
</div>
</div>
@@ -1,6 +1,6 @@
<template>
<el-select v-model="selectValue" :clearable="clearable" filterable remote :remote-method="selectUser"
@change="onChange" v-bind="$attrs">
placeholder="请输入姓名或工号查询" @change="onChange" v-bind="$attrs" style="width: 100%">
<el-option
v-for="item in options"
v-if="!item.disabled"
@@ -115,6 +115,7 @@ module.exports = {
},
created() {
this.clearOptions()
console.log(this.placeholder)
}
}
</script>
@@ -4,7 +4,7 @@ const branchUnionPartUnitManage = {
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter); margin-top: 10px">
<el-row type="flex" style="column-gap: 10px">
<el-input
placeholder="输入名称查询"
placeholder="输入单位编码或单位名称查询"
size="small"
style="width: 400px"
clearable
@@ -43,11 +43,12 @@ const branchUnionUserManage = {
<el-dialog title="添加" :visible.sync="dialogFormVisible" width="600px" :close-on-click-modal="false">
<el-form :model="formData" ref="form" size="small" label-width="80px">
<el-form-item prop="roleCode" label="角色">
<dict-select v-model="formData.roleCode" code="BRANCH_UNION_ROLES"></dict-select>
<dict-select v-model="formData.roleCode" code="BRANCH_UNION_ROLES" placeholder="请选择角色"></dict-select>
</el-form-item>
<el-form-item prop="userId" label="人员">
<user-select
v-model="formData.userId"
style="width: 100%"
api="/platform/sys/union/listUserSelect"
:api_params="{ unionId: union_id }"
:option_label_func="
@@ -136,5 +137,10 @@ const branchUnionUserManage = {
},
created() {
this.pageData()
}
},
style: /*language=CSS*/ `
/deep/ .el-select {
width: 100% !important;
}
`
}
@@ -34,21 +34,22 @@ layout("/layouts/platform.html"){
</el-card>
</el-col>
<el-col :span="19">
<el-card v-if="currentTreeNode==null || currentTreeNode.level===1" shadow="never">
<el-card v-if="currentTreeData && currentTreeData.unitTypeCode==0" shadow="never">
<unit-manage
:current-Node="currentTreeNode?.level"
:current-data="currentTreeData"
:unit-level="2"
@refresh="getTreeData()"
ref="bzlRef"
></unit-manage>
</el-card>
<el-card shadow="never" v-if="currentTreeNode && currentTreeNode.level===2">
<el-card shadow="never" v-if="currentTreeData && currentTreeData.unitTypeCode==1">
<el-tabs v-model="unitTabActive" type="card">
<el-tab-pane name="threeUnitManage">
<span slot="label">
<i class="el-icon-school"></i>
三级单位
下设单位
</span>
<unit-manage
:current-data="currentTreeData"
@@ -56,6 +57,7 @@ layout("/layouts/platform.html"){
:current-Node="currentTreeNode?.level"
@refresh="getTreeData()"
style="margin-top: 10px"
ref="bmlRef"
></unit-manage>
</el-tab-pane>
<el-tab-pane name="unitUserManage">
@@ -63,14 +65,14 @@ layout("/layouts/platform.html"){
<i class="el-icon-school"></i>
单位人员
</span>
<unit-user :current-data="currentTreeData"></unit-user>
<unit-user ref="userRef" :current-data="currentTreeData"></unit-user>
</el-tab-pane>
<el-tab-pane class="tab" name="unitLeaderManage">
<span slot="label">
<i class="el-icon-school"></i>
单位干部
</span>
<unit-leader-manage :current-data="currentTreeData"></unit-leader-manage>
<unit-leader-manage ref="leaderRef" :current-data="currentTreeData"></unit-leader-manage>
</el-tab-pane>
</el-tabs>
</el-card>
@@ -112,11 +114,17 @@ layout("/layouts/platform.html"){
})
},
treeNodeClick(data, node) {
if (node.level === 3) {
return
}
this.currentTreeData = data
this.currentTreeNode = node
this.$nextTick(()=>{
if (data.unitTypeCode==1) {
this.$refs.bmlRef.pageData()
this.$refs.userRef.pageData()
this.$refs.leaderRef.pageData()
} else {
this.$refs.bzlRef.pageData()
}
})
},
filterNode(value, data, node) {
if (!value) return true
@@ -206,7 +206,8 @@ const UNIT_MANAGE_TEMPLATE = {
this.pageData()
},
pageData() {
this.pageForm.unitLevel = this.unitLevel
this.pageForm.unitId = this.currentData.id
// this.pageForm.unitLevel = this.unitLevel
this.$axios.post(loc() + "/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = res.data.list
@@ -1,5 +1,5 @@
const UNIT_USER_MANAGE_TEMPLATE = {
template: `
template: /*language=HTML*/ `
<div>
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter); margin-top: 10px">
<el-row :gutter="10" type="flex">
@@ -26,7 +26,12 @@ const UNIT_USER_MANAGE_TEMPLATE = {
<el-table-column label="工号" prop="loginname"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="联系方式" prop="mobile"></el-table-column>
<el-table-column label="是否会员" prop="member"></el-table-column>
<el-table-column label="是否会员" prop="member">
<template v-slot="scope">
<el-tag v-if="scope.row.member" type="success">是</el-tag>
<el-tag v-else type="danger">否</el-tag>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
@@ -328,12 +328,12 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
<el-col :span="24">
<el-form-item label="报名表单" prop="formConfig"
v-if="formData.isEnrollSystem === true">
v-if="formData.isEnrollSystem&&formData.signUpMethod===1">
<custom-form-field v-model="formData.formConfig"></custom-form-field>
</el-form-item>
</el-col>
<el-col :span="24" v-if="formData.signUpMethod!=null">
<el-col :span="24" v-if="formData.signUpMethod!=null&&formData.isEnrollSystem">
<el-form-item label="封面图" prop="cover">
<file-upload :value.sync="formData.cover" accept=".jpg,.jpeg,.png"
:upload_number="1" upload_result_category="interval"
@@ -3,7 +3,7 @@ const ACTIVITY_CULTURE_INFO_ACTIVITY = {
<div>
<div class="process-title">
申请信息
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
<el-link type="primary" @click="openChart" v-if="viewData.activity_type !== 40001">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border class="margin-top" style="margin: 10px" title="">
<el-descriptions-item label="活动名称" span="3">
@@ -153,7 +153,7 @@ const singleSignUp = {
</div>
<!-- 分工会报名-->
<div v-else-if="viewData.signUpMethod===3">
<div class="process-title">选择报名人员,报名人数 <span style="color: red">{{viewData.teamNum}}</span>人
<div class="process-title">选择报名人员
</div>
<el-select
v-if="inApplyTime"
@@ -470,6 +470,7 @@ const singleSignUp = {
if (val) {
this.$axios.post("/platform/activity/culture/applyUser/queryTeammate", {
keyword: val,
tissueId: this.id,
signUpMethod: this.viewData.signUpMethod
}).then((res) => {
if (res.code === 0) {
@@ -512,7 +513,7 @@ const singleSignUp = {
const union = this.viewData.unionUserNumberLimit.find(v => v.id === this.$store.state.user.union.id)
this.viewData.teamNum = union.limitNum
this.listTeamUserUnion()
}else{
} else {
this.listTeamUser()
}
if (this.viewData.formConfig) {
@@ -29,8 +29,8 @@ const ACTIVITY_CULTURE_USER_STATISTICS = {
</el-select>
</search-item>
<search-item label="工会名称" v-if="activity_type===40002||activity_type===40001">
<el-select clearable filterable placeholder="请选择工会"
<search-item label="所属工会" v-if="activity_type===40002||activity_type===40001">
<el-select clearable filterable placeholder="请选择所属工会"
style="width: 100%"
v-model="pageForm.unionId">
<el-option
@@ -13,7 +13,9 @@ const ARTICLE_INFO = {
<el-descriptions-item label="投稿人联系方式">{{ viewData.mobile }}</el-descriptions-item>
<el-descriptions-item label="稿件修改人联系方式">{{ viewData.mobile2 }}</el-descriptions-item>
<el-descriptions-item label="投稿标题" :span="2">{{ viewData.title }}</el-descriptions-item>
<el-descriptions-item label="投稿说明" :span="2">{{ viewData.excerpt }}</el-descriptions-item>
<el-descriptions-item label="投稿说明" :span="2">
<span style="white-space: pre-line">{{ viewData.excerpt }}</span>
</el-descriptions-item>
<el-descriptions-item label="稿件" :span="2">
<file-preview :files="viewData.files" complete_result></file-preview>
</el-descriptions-item>
@@ -26,7 +26,7 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.userName" @keyup.enter.native="doSearch"></el-input>
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword" @keyup.enter.native="doSearch"></el-input>
</search-item>
<search-item label="性别">
<el-select v-model="pageForm.sex" placeholder="请选择性别" clearable style="width: 100%">
@@ -62,6 +62,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
<el-table-column prop="loginName" label="工号"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="unionName" label="所属工会"></el-table-column>
@@ -17,6 +17,7 @@ layout("/layouts/platform.html"){
<table-tool></table-tool>
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
<el-table-column prop="loginName" label="工号"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="unionName" label="所属工会"></el-table-column>
<el-table-column prop="unitName" label="所属单位"></el-table-column>
@@ -32,7 +33,7 @@ layout("/layouts/platform.html"){
<el-table-column label="操作" fixed="right" width="300px">
<template slot-scope="{row}">
<el-button @click="onView(row)" size="mini" type="primary">查看</el-button>
<el-button @click="onCancelSignUp(row)" size="mini" type="danger">取消报名
<el-button v-if="row.instanceState != 20" @click="onCancelSignUp(row)" size="mini" type="danger">取消报名</el-button>
</el-button>
</template>
</el-table-column>
@@ -25,7 +25,7 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.userName" @keyup.enter.native="doSearch"></el-input>
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword" @keyup.enter.native="doSearch"></el-input>
</search-item>
<search-item label="性别">
<el-select v-model="pageForm.sex" placeholder="请选择性别" clearable style="width: 100%">
@@ -64,6 +64,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
<el-table-column prop="loginName" label="工号"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="unionName" label="所属工会"></el-table-column>
@@ -17,17 +17,8 @@ layout("/layouts/platform.html"){
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="填报人">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="info.userName"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="登记类型">
<el-select clearable placeholder="登记类型"
@@ -10,24 +10,15 @@ layout("/layouts/platform.html"){
<search-item label="年度">
<el-date-picker
@change="doSearch"
placeholder="选择年"
placeholder="选择年"
style="width: 100%"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="填报人">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="info.userName"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="登记类型">
<el-select clearable placeholder="登记类型"
@@ -17,17 +17,8 @@ layout("/layouts/platform.html"){
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="填报人">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="info.userName"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="登记类型">
<el-select clearable placeholder="登记类型"
@@ -236,10 +236,20 @@ layout("/layouts/platform.html"){
openAdd() {
this.stepActive = 0
this.dialogVisible = true
this.formData={
name: "",
year: new Date().getFullYear().toString(),
startTime: null,
endTime: null,
notice: null,
quotaAllocations: null,
activityGroupId: "",
enable: true
}
this.$nextTick(() => {
this.$refs.formRef.resetFields()
this.$refs.formRef.clearValidate()
})
this.$refs.formRef.clearValidate()
this.$axios.post("/platform/evaluate/activity/initQuotaAllocations").then((res) => {
if (res.code === 0) {
this.$set(this.formData, "quotaAllocations", res.data)
@@ -28,15 +28,8 @@ layout("/layouts/platform.html"){
v-for="item in projectOptions"></el-option>
</el-select>
</search-item>
<search-item label="职工信息">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch" style="width: 100%">
<el-select v-model="pageForm.searchName" slot="prepend"
style="width: 80px;">
<el-option label="姓名" value="hcu.username"></el-option>
<el-option label="工号" value="hcu.loginname"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会" v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">
<el-select placeholder="请选择所属工会" v-model="pageForm.unionId"
@@ -189,7 +182,6 @@ layout("/layouts/platform.html"){
return {
pageForm: {
year: moment().format('YYYY'),
searchName: "hcu.username",
},
unions: [],
units: [],
@@ -69,9 +69,9 @@ layout("/layouts/platform.html"){
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
<!-- <el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'code',data:row}">
二维码
</el-dropdown-item>
@@ -463,6 +463,12 @@ layout("/layouts/platform.html"){
this.conditionStructureDialogVisible = true
if(row.matchCnd){
this.conditionGroup = row.matchCnd
}else{
this.conditionGroup = {
logic: "AND",
conditions: [],
groups: []
}
}
// this.$refs.conditionStructureDialog.onOpen(row.matchCnd ? row.matchCnd : null)
},
@@ -37,15 +37,15 @@ layout("/layouts/platform.html"){
:value="item.id" :key="item.id"></el-option>
</el-select>
</search-item>
<search-item label="所属单位">
<el-select placeholder="请选择所属单位" v-model="pageForm.unitId"
style="width: 100%;"
clearable
filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id" :key="item.id"></el-option>
</el-select>
</search-item>
<!-- <search-item label="所属单位">
<el-select placeholder="请选择所属单位" v-model="pageForm.unitId"
style="width: 100%;"
clearable
filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id" :key="item.id"></el-option>
</el-select>
</search-item>-->
</search>
</el-card>
@@ -80,6 +80,12 @@ layout("/layouts/platform.html"){
type="primary"
v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">一键选择去年数据
</el-button>
<el-button @click="msgNotSelect"
icon="el-icon-printer"
size="small"
type="primary"
v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">给未选发送消息
</el-button>
</template>
<el-button :disabled="!pageForm.projectId"
@@ -259,6 +265,28 @@ layout("/layouts/platform.html"){
}
},
methods: {
async msgNotSelect() {
const confirm = await this.$confirm('请确定未选择的教职工发送提醒短信?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.tableLoading = true
const resp = await $.get(loc() + '/msgNotSelect', {
projectId: this.pageForm.projectId
})
if (resp.code === 0) {
setTimeout(() => {
this.doSearch()
this.tableLoading = false
this.notifySuccess(resp.msg)
}, 2000)
} else {
this.notifyWarning(resp.msg)
}
}
},
async doSelectByAdmin() {
if (!this.noSelectOptionId || !this.campus) {
this.notifyWarning('请选择套餐/院区')
@@ -298,16 +326,15 @@ layout("/layouts/platform.html"){
type: 'warning'
})
if (confirm === "confirm") {
this.loading = true
this.tableLoading = true
const resp = await $.get(loc() + '/selectOptionByLastYear', {
projectId: this.pageForm.projectId
})
this.tableLoading = false
if (resp.code === 0) {
setTimeout(() => {
this.doSearch()
this.loading = false
this.notifySuccess(resp.msg)
}, 2000)
this.doSearch()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
@@ -7,21 +7,24 @@ layout("/layouts/platform.html"){
<search @search="doSearch">
<search-item label="授予年度">
<el-date-picker
v-model="pageForm.year"
type="year"
style="width: 100%"
value-format="yyyy"
placeholder="授予年度"
v-model="pageForm.year"
type="year"
style="width: 100%"
value-format="yyyy"
placeholder="授予年度"
></el-date-picker>
</search-item>
<search-item label="荣誉类型">
<el-select v-model="pageForm.honorType" placeholder="请选择荣誉类型" style="width: 100%" @change="honorTypeChange">
<el-select v-model="pageForm.honorType" placeholder="请选择荣誉类型" style="width: 100%"
@change="honorTypeChange">
<el-option v-for="o in honorTypeList" :key="o.id" :label="o.name" :value="o.id"></el-option>
</el-select>
</search-item>
<search-item label="获奖奖项">
<el-select v-model="pageForm.prize" filterable style="width: 100%" placeholder="请选择荣誉奖项" clearable>
<el-option v-for="o in honorPrizeList" :key="o.id" style="width: 100%" :label="o.name" :value="o.id"></el-option>
<el-select v-model="pageForm.prize" filterable style="width: 100%" placeholder="请选择荣誉奖项"
clearable>
<el-option v-for="o in honorPrizeList" :key="o.id" style="width: 100%" :label="o.name"
:value="o.id"></el-option>
</el-select>
</search-item>
<search-item label="荣誉级别">
@@ -29,12 +32,14 @@ layout("/layouts/platform.html"){
<el-option v-for="o in honorLevelList" :key="o.id" :label="o.name" :value="o.id"></el-option>
</el-select>
</search-item>
<search-item label="姓名">
<el-input v-model="pageForm.userName" placeholder="请输入姓名"></el-input>
<search-item label="姓名/工号">
<el-input v-model="pageForm.searchKeyword" placeholder="请输入姓名或工号" clearable=""></el-input>
</search-item>
<search-item label="获奖工会">
<el-select v-model="pageForm.unionName" placeholder="请选择获奖工会" @change="doSearch" style="width: 100%" clearable>
<el-option v-for="o in unionList" :key="o.id" :label="o.name" :value="o.id"></el-option>
<el-select v-model="pageForm.unionId" placeholder="请选择获奖工会" @change="doSearch"
style="width: 100%" clearable>
<el-option v-for="o in unionList" :key="o.id" :label="o.name"
:value="o.id"></el-option>
</el-select>
</search-item>
</search>
@@ -45,34 +50,44 @@ layout("/layouts/platform.html"){
<el-button type="primary" size="small" @click="doExport">导出</el-button>
</table-tool>
<el-table :data="tableData">
<el-table-column label="序号" type="index" header-align="center" align="center" width="50"></el-table-column>
<el-table-column label="序号" type="index"
width="50"></el-table-column>
<template v-if="pageForm.queryTypeCode=='HONOR_SINGLE'">
<el-table-column prop="userName" label="姓名" header-align="center" align="center" sortable></el-table-column>
<el-table-column prop="loginName" label="工号" header-align="center" align="center" sortable></el-table-column>
<el-table-column prop="unionName" label="所属工会" header-align="center" align="center" sortable></el-table-column>
<el-table-column prop="unitName" label="所属单位" header-align="center" align="center" sortable></el-table-column>
<el-table-column prop="userName" label="姓名"
sortable></el-table-column>
<el-table-column prop="loginname" label="工号"
sortable></el-table-column>
<el-table-column prop="unionName" label="所属工会"
sortable></el-table-column>
<el-table-column prop="unitName" label="所属单位"
sortable></el-table-column>
</template>
<template v-if="pageForm.queryTypeCode=='HONOR_LIST'">
<el-table-column prop="applyUnionName" label="申报分工会" header-align="center" align="center" sortable></el-table-column>
<el-table-column
prop="gameName"
label="参加比赛名称"
header-align="center"
align="center"
show-overflow-tooltip
></el-table-column>
<el-table-column prop="applyUnionName" label="申报分工会"
sortable></el-table-column>
<!-- <el-table-column
prop="gameName"
label="参加比赛名称"
header-align="center"
align="center"
show-overflow-tooltip
></el-table-column>-->
</template>
<el-table-column prop="prizeName" label="奖项" header-align="center" align="center" sortable></el-table-column>
<!--<el-table-column prop="prizeDesc" label="奖项说明" header-align="center" align="center"></el-table-column>-->
<el-table-column prop="typeName" label="荣誉类型" header-align="center" align="center"></el-table-column>
<el-table-column prop="levelName" label="级别" header-align="center" align="center" sortable></el-table-column>
<el-table-column prop="grantUnit" label="授予单位" header-align="center" align="center" show-overflow-tooltip></el-table-column>
<el-table-column prop="grantDate" label="授予时间" header-align="center" align="center" sortable></el-table-column>
<el-table-column prop="prizeName" label="奖项"
sortable></el-table-column>
<!--<el-table-column prop="prizeDesc" label="奖项说明" ></el-table-column>-->
<el-table-column prop="typeName" label="荣誉类型"></el-table-column>
<el-table-column prop="levelName" label="级别"
sortable></el-table-column>
<el-table-column prop="grantUnit" label="授予单位"
show-overflow-tooltip></el-table-column>
<el-table-column prop="grantDate" label="授予时间"
sortable></el-table-column>
<!--<el-table-column prop="archiveStatus" label="存档情况" header-align="center"
align="center"></el-table-column>-->
<el-table-column prop="awardMaterialsExcel" label="获奖材料" header-align="center" align="center"></el-table-column>
<el-table-column prop="awardMaterialsExcel" label="获奖材料"></el-table-column>
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="100px">
<el-table-column label="操作" fixed="right" width="100px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button plain size="mini">
@@ -191,7 +206,8 @@ layout("/layouts/platform.html"){
<el-row :gutter="20">
<el-col :span="24">
<el-form-item prop="user_name" label="附&emsp;&emsp;件">
<file-upload v-if="viewData.files&&viewData.files.length" :files="viewData.files" :view="true"></file-upload>
<file-upload v-if="viewData.files&&viewData.files.length" :files="viewData.files"
:view="true"></file-upload>
<span v-else>暂无</span>
</el-form-item>
</el-col>
@@ -229,7 +245,7 @@ layout("/layouts/platform.html"){
},
methods: {
dropdownCommand(command) {
const { type, row } = command
const {type, row} = command
if (type === "edit") {
this.openEdit(row)
} else if (type === "delete") {
@@ -246,7 +262,7 @@ layout("/layouts/platform.html"){
this.$refs.guava.view()
},
doExport() {
const { year, honorType, prize, honorLevel, userName, unitName } = this.pageForm
const {year, honorType, prize, honorLevel, userName, unitName} = this.pageForm
window.location.href =
"/platform/honor/manage/doExport?year=" +
year +
@@ -263,9 +279,10 @@ layout("/layouts/platform.html"){
},
openEdit(row) {
commonUtil.pjaxPush("/platform/honor/registration?id=" + row.id)
// window.location.href = "/platform/honor/registration?id=" + row.id
},
async doDelete(row) {
const { id } = row
const {id} = row
const confirm = await this.$confirm("确定要删除该记录吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
@@ -273,17 +290,17 @@ layout("/layouts/platform.html"){
})
if ("confirm" === confirm) {
this.$set(row, "loading", true)
const resp = await $.post(loc() + "/doDelete", { id: id })
const resp = await $.post(loc() + "/doDelete", {id: id})
if (resp.code === 0) {
this.$notify.success({ title: "成功", message: resp.msg })
this.$notify.success({title: "成功", message: resp.msg})
this.doSearch()
} else {
this.$notify.error({ title: "失败", message: resp.msg })
this.$notify.error({title: "失败", message: resp.msg})
}
}
},
async getHonorPrize(honorType) {
const res = await this.$axios.post("/platform/honor/basic/settings/getData", { parentId: honorType })
const res = await this.$axios.post("/platform/honor/basic/settings/getData", {parentId: honorType})
return res.data
},
getHonorType() {
@@ -315,6 +332,7 @@ layout("/layouts/platform.html"){
this.$businessTool.listUnit().then((data) => {
this.units = data
})
this.unionList = await this.$businessTool.listUnion()
if (this.honorTypeList && this.honorLevelList.length > 0) {
this.formData = {
honorType: this.honorTypeList[0].id,
@@ -324,7 +342,6 @@ layout("/layouts/platform.html"){
}
},
async honorTypeChange(val) {
this.tableData = []
this.honorPrizeList = await this.getHonorPrize(val)
const data = this.honorTypeList.find((v) => v.id === val)
if (data) {
@@ -334,7 +351,6 @@ layout("/layouts/platform.html"){
}
},
async created() {
this.unionList = await this.$businessTool.listUnion()
await this.initData()
await this.pageData()
}
@@ -12,7 +12,8 @@ layout("/layouts/platform.html"){
<el-col :span="24">
<el-form-item label="荣誉类型" prop="honorType">
<el-select v-model="formData.honorType" style="width: 100%" @change="honorTypeChange">
<el-option v-for="o in honorTypeList" :key="o.id" :label="o.name" :value="o.id"></el-option>
<el-option v-for="o in honorTypeList" :key="o.id" :label="o.name"
:value="o.id"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -30,15 +31,22 @@ layout("/layouts/platform.html"){
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
<el-form-item v-else prop="userId" label="姓名">
<user-select
v-model="formData.userId"
@change="userChange"
ref="beComfortedUserRef"
api="/platform/honor/registration/listBeComfortedUser"
api_input_key_name="keyWord"
:option_label_func="(item)=>{return item.userName + item.loginName + '(' + item.unitName + ')'}"
style="width: 100%"
></user-select>
<el-select
style="width: 100%"
v-model="formData.userId"
filterable remote
@change="userChange"
reserve-keyword
placeholder="请输入姓名或工号"
:remote-method="userRemoteMethod">
<el-option
v-for="item in userOptions"
:key="item.id"
:label="item.userName + item.loginName + '(' + item.unitName + ')'"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -55,28 +63,30 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="所属单位" prop="unitId">
<el-select
placeholder="所属单位"
v-model="formData.unitId"
clearable
style="width: 100%"
clearable
filterable
placeholder="所属单位"
v-model="formData.unitId"
clearable
style="width: 100%"
clearable
filterable
>
<el-option v-for="item in units" :label="item.name" :value="item.id" :key="item.id"></el-option>
<el-option v-for="item in units" :label="item.name" :value="item.id"
:key="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属工会" prop="unionId">
<el-select
placeholder="所属工会"
v-model="formData.unionId"
clearable
style="width: 100%"
clearable
filterable
placeholder="所属工会"
v-model="formData.unionId"
clearable
style="width: 100%"
clearable
filterable
>
<el-option v-for="item in unions" :label="item.name" :value="item.id" :key="item.id"></el-option>
<el-option v-for="item in unions" :label="item.name" :value="item.id"
:key="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -86,11 +96,11 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="生日" prop="birthday">
<el-date-picker
style="width: 100%"
v-model="formData.birthday"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
v-model="formData.birthday"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
></el-date-picker>
</el-form-item>
</el-col>
@@ -118,11 +128,11 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="加入工会时间" prop="joinTime">
<el-date-picker
style="width: 100%"
v-model="formData.joinTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
v-model="formData.joinTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
></el-date-picker>
</el-form-item>
</el-col>
@@ -138,15 +148,16 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="申报分工会" prop="unionId">
<el-select
placeholder="请选择申报分工会"
v-model="formData.unionId"
style="width: 100%"
disabled
clearable
filterable
@change="searchUnionInfo(formData.unionId)"
placeholder="请选择申报分工会"
v-model="formData.unionId"
style="width: 100%"
disabled
clearable
filterable
@change="searchUnionInfo(formData.unionId)"
>
<el-option v-for="item in unions" :label="item.name" :value="item.id" :key="item.id"></el-option>
<el-option v-for="item in unions" :label="item.name" :value="item.id"
:key="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -177,7 +188,8 @@ layout("/layouts/platform.html"){
</el-col>-->
<el-col :span="12">
<el-form-item label="会员人数" prop="memberNumber">
<el-input-number v-model="formData.memberNumber" :min="0" :max="2000" style="width: 100%"></el-input-number>
<el-input-number v-model="formData.memberNumber" :min="0" :max="2000"
style="width: 100%"></el-input-number>
</el-form-item>
</el-col>
</el-row>
@@ -192,14 +204,16 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="奖项" prop="prize">
<el-select v-model="formData.prize" style="width: 100%">
<el-option v-for="o in honorPrizeList" :key="o.id" :label="o.name" :value="o.id"></el-option>
<el-option v-for="o in honorPrizeList" :key="o.id" :label="o.name"
:value="o.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="获奖材料" prop="awardMaterials">
<el-select v-model="formData.awardMaterials" multiple style="width: 100%">
<el-option v-for="o in honorAwardList" :key="o.id" :label="o.name" :value="o.id"></el-option>
<el-option v-for="o in honorAwardList" :key="o.id" :label="o.name"
:value="o.id"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -219,26 +233,28 @@ layout("/layouts/platform.html"){
<el-col :span="12">
<el-form-item label="授予时间">
<el-date-picker
style="width: 100%"
v-model="formData.grantDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
v-model="formData.grantDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" :gutter="20">
<el-col :span="12" v-if="formData.queryTypeCode == 'HONOR_LIST'">
<el-col :span="12" v-if="formData.honorType== 'HONOR_LIST'">
<el-form-item label="参加比赛名称" prop="gameName">
<el-input v-model="formData.gameName" maxlength="100" placeholder="请输入参加比赛名称"></el-input>
<el-input v-model="formData.gameName" maxlength="100"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="级别">
<el-select v-model="formData.honorLevel" placeholder="请选择级别" style="width: 100%">
<el-option v-for="o in honorLevelList" :key="o.id" :label="o.name" :value="o.id"></el-option>
<el-select v-model="formData.honorLevel" placeholder="请选择级别"
style="width: 100%">
<el-option v-for="o in honorLevelList" :key="o.id" :label="o.name"
:value="o.id"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -253,7 +269,8 @@ layout("/layouts/platform.html"){
</el-row>
<el-col :span="24">
<el-form-item label="附件" prop="files">
<file-upload card :files.sync="formData.files" :max-size="50 * 1024 * 1024"></file-upload>
<file-upload card :files.sync="formData.files"
:max-size="50 * 1024 * 1024"></file-upload>
</el-form-item>
</el-col>
</template>
@@ -287,10 +304,17 @@ layout("/layouts/platform.html"){
userOptions: [],
isEdit: false,
firstInPage: true,
id: GetQueryString("id") ? GetQueryString("id") : ""
id: GetQueryString("id") ? GetQueryString("id") : "",
}
},
methods: {
async userRemoteMethod(query) {
if (query) {
this.userOptions = []
const resp = await this.$axios.post("/platform/honor/registration/listBeComfortedUser", {keyWord: query})
this.userOptions = resp.data
}
},
doBack() {
if (GetQueryString("id")) {
this.$store.dispatch("pjaxRoute", "/platform/honor/manage")
@@ -303,7 +327,7 @@ layout("/layouts/platform.html"){
if (res.code === 0) {
this.$message.success("操作成功,即将跳转至台账界面")
setTimeout(() => {
commonUtil.pjaxPush("/platform/honor/manage")
pjaxReplace("/platform/honor/manage")
}, 500)
} else {
this.$message.error(res.msg)
@@ -311,7 +335,7 @@ layout("/layouts/platform.html"){
})
},
userChange(id) {
this.$axios.post("/platform/honor/apply/getUserInfo", { id: id }).then((res) => {
this.$axios.post("/platform/honor/apply/getUserInfo", {id: id}).then((res) => {
if (res.code === 0) {
this.setFormData(res.data)
}
@@ -330,7 +354,7 @@ layout("/layouts/platform.html"){
this.$set(this.formData, "political", user.political)
},
async getUser(keyWord) {
const resp = await this.$axios.post("/platform/condolence/apply/listBeComfortedUser", { keyWord: keyWord })
const resp = await this.$axios.post("/platform/condolence/apply/listBeComfortedUser", {keyWord: keyWord})
return resp.data
},
async honorTypeChange(val) {
@@ -339,7 +363,7 @@ layout("/layouts/platform.html"){
const data = this.honorTypeList.find((v) => v.id === val)
if (data) {
this.$set(this.formData, "queryTypeCode", data.queryTypeCode)
if(data.queryTypeCode === 'HONOR_LIST') {
if (data.queryTypeCode === 'HONOR_LIST') {
this.$set(this.formData, "unionId", this.$store.state.user.union ? this.$store.state.user.union.id : "")
if (this.formData.unionId) {
this.searchUnionInfo(this.formData.unionId)
@@ -350,32 +374,29 @@ layout("/layouts/platform.html"){
}
},
async getHonorPrize(honorType) {
const res = await this.$axios.post("/platform/honor/basic/settings/getData", { parentId: honorType })
const res = await this.$axios.post("/platform/honor/basic/settings/getData", {parentId: honorType})
return res.data
},
getHonorType() {
this.$axios.post("/platform/honor/basic/settings/getHonorType").then((res) => {
if (res.code === 0) {
this.honorTypeList = res.data
}
})
async getHonorType() {
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorType")
if (res.code === 0) {
this.honorTypeList = res.data
}
},
getHonorLevel() {
this.$axios.post("/platform/honor/basic/settings/getHonorLevel").then((res) => {
if (res.code === 0) {
this.honorLevelList = res.data
}
})
async getHonorLevel() {
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorLevel")
if (res.code === 0) {
this.honorLevelList = res.data
}
},
getHonorAwardType() {
this.$axios.post("/platform/honor/basic/settings/getHonorAwardType").then((res) => {
if (res.code === 0) {
this.honorAwardList = res.data
}
})
async getHonorAwardType() {
const res = await this.$axios.post("/platform/honor/basic/settings/getHonorAwardType")
if (res.code === 0) {
this.honorAwardList = res.data
}
},
searchUnionInfo(id) {
this.$axios.post("/platform/honor/basic/settings/getUnionInfo", { id: id }).then((res) => {
this.$axios.post("/platform/honor/basic/settings/getUnionInfo", {id: id}).then((res) => {
if (res.code === 0) {
this.formData.memberNumber = res.data.memberNumber
this.formData.unionLeader = res.data.username
@@ -383,29 +404,28 @@ layout("/layouts/platform.html"){
})
},
async findData(id) {
const resp = await this.$axios.post(loc() + "/findData", { id: id })
const resp = await this.$axios.post(loc() + "/findData", {id: id})
const data1 = resp.data
this.formData = resp.data
if (this.formData.userId && this.formData.userId !== "") {
this.$nextTick(() => {
this.userChange(this.formData.userId)
})
await this.userRemoteMethod(this.formData.userName)
} else {
this.$set(this.formData, "userName", this.formData.userName)
}
await this.honorTypeChange(data1.honorType)
this.$set(this.formData, "prize", data1.prize)
this.$set(this.formData, "honorLevel", data1.honorLevel)
this.$set(this.formData, "political", data1.political)
this.$set(this.formData, "post", data1.post)
this.$set(this.formData, "title", data1.title)
this.$set(this.formData, "unionId", data1.unionId)
this.$set(this.formData, "unionLeader", data1.unionLeader)
/* this.$set(this.formData, "prize", data1.prize)
this.$set(this.formData, "honorLevel", data1.honorLevel)
this.$set(this.formData, "political", data1.political)
this.$set(this.formData, "post", data1.post)
this.$set(this.formData, "title", data1.title)
this.$set(this.formData, "unionId", data1.unionId)
this.$set(this.formData, "unionLeader", data1.unionLeader)*/
console.log(this.formData)
},
async initData() {
this.getHonorType()
this.getHonorLevel()
this.getHonorAwardType()
await this.getHonorType()
await this.getHonorLevel()
await this.getHonorAwardType()
this.unions = await this.$businessTool.listUnion()
this.units = await this.$businessTool.listUnit()
/*this.$set(this.formData, "unionId", this.$store.state.user.union ? this.$store.state.user.union.id : "")
@@ -421,9 +441,8 @@ layout("/layouts/platform.html"){
}
}
},
created() {
this.initData()
this.isEdit = GetQueryString("id")
async created() {
await this.initData()
if (GetQueryString("id")) {
this.findData(GetQueryString("id"))
}
@@ -145,7 +145,7 @@ layout("/layouts/platform.html"){
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post("/flow/common/executeTask", {
this.$axios.post("/platform/outlay/reimburse/clubAudit/submit", {
data: JSON.stringify({
...this.formData,
submitType: val
@@ -127,7 +127,6 @@ layout("/layouts/platform.html"){
return {
pageDataUrl: "/platform/executiveCommittee/executiveCommitteeMember/pageData",
pageForm: {
searchName: 'op.userName',
},
teacherMeets: [],
unionOptions: [],
@@ -153,8 +153,8 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column label="代表类型" prop="representativeType" show-overflow-tooltip
width="100"></el-table-column>
<el-table-column prop="taskName" label="当前节点" width="120"fixed="right"></el-table-column>
<el-table-column prop="instanceState" label="流程状态"fixed="right">
<el-table-column prop="taskName" label="当前节点" width="120" fixed="right"></el-table-column>
<el-table-column prop="instanceState" label="流程状态" fixed="right">
<template slot-scope="{row}">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
@@ -174,7 +174,9 @@ layout("/layouts/platform.html"){
删除
</el-button>
<el-button
v-else-if="row.taskKey === 'startTask' || row.taskKey==='53ff0c2a-ba93-45e9-a9fd-db51cdab3080' || !row.instanceId"
v-else-if="row.taskKey === 'startTask'
|| row.taskKey==='53ff0c2a-ba93-45e9-a9fd-db51cdab3080'
|| row.taskKey==='0cacd1e7-7bb2-47dd-818b-6a73062e0c62' || !row.instanceId"
@click="onDelete(row.id)"
size="mini" type="danger">删除
</el-button>
@@ -238,7 +240,7 @@ layout("/layouts/platform.html"){
this.pageData()
const fullName = this.sessionOptions.find(v => v.id === this.pageForm.sessionId)?.fullName;
this.$refs.pushProgressRef.refreshData(this.pageForm.sessionId, fullName)
this.$refs.pushProgressRef.refreshData(this.pageForm.sessionId, fullName, this.pageForm.unionId)
},
onView(row) {
this.writeDialog = true
@@ -278,18 +280,19 @@ layout("/layouts/platform.html"){
type: 'warning'
}).then(async () => {
const loading = createLoading('正在提交中')
const {code, msg} = await this.$axios.post('/platform/teacherCongress/delegate/push/batchSubmit', {
this.$axios.post('/platform/teacherCongress/delegate/push/batchSubmit', {
ids: JSON.stringify(selection.map(v => v.id)),
sessionId: this.pageForm.sessionId
}).then(resp => {
if (resp.code === 0) {
this.$message.success(resp.msg)
this.doSearch()
this.$refs.tableRef.clearSelection()
}
}).finally(() => {
loading.close()
})
loading.close()
if (code === 0) {
this.$message.success(msg)
this.doSearch()
this.$refs.tableRef.clearSelection()
} else {
this.$message.error(msg)
}
})
},
listUnion() {
@@ -51,131 +51,146 @@ const write = {
ref="formRef"
:model="formData"
:rules="rules"
label-width="100px"
label-position="top"
label-width="150px"
:class="{ hidden: !isSelected }"
:disabled="(formData && formData.taskKey!=='53ff0c2a-ba93-45e9-a9fd-db51cdab3080') || is_read"
>
<div class="form-section">
<h3 class="section-title">基本信息</h3>
<div class="form-grid">
<el-form-item label="姓名" prop="userName">
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
<el-form-item label="工号" prop="loginName">
<el-input v-model="formData.loginName" readonly></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-radio-group v-model="formData.sex" size="small">
<el-radio border label="男"></el-radio>
<el-radio border label="女"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="出生年月" prop="birthday">
<el-date-picker
v-model="formData.birthday"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
style="width: 100%"
></el-date-picker>
</el-form-item>
<el-form-item label="民族" prop="nation">
<dict-select v-model="formData.nation" style="width: 100%" placeholder="请选择民族"
code="USER_NATION"></dict-select>
</el-form-item>
<el-form-item label="政治面貌" prop="political">
<el-input maxlength="100" placeholder="政治面貌"
v-model="formData.political"></el-input>
</el-form-item>
<!-- <el-form-item label="学历" prop="education">
<dict-select v-model="formData.education" style="width: 100%" placeholder="请选择学历"
code="USER_EDUCATION"></dict-select>
</el-form-item>
<el-form-item label="学位" prop="academicDegree">
<dict-select v-model="formData.academicDegree" style="width: 100%"
placeholder="请选择学位"
code="USER_ACADEMIC_DEGREE"></dict-select>
</el-form-item>-->
<el-form-item label="所属工会">
<el-input
v-model="formData.unionName"
readonly
placeholder="请输入所属工会"
clearable
></el-input>
</el-form-item>
<el-form-item label="所属单位">
<el-input
v-model="formData.unitName"
readonly
placeholder="请输入所属单位"
clearable
></el-input>
</el-form-item>
<el-form-item label="职称" prop="professionalTitle">
<dict-select v-model="formData.professionalTitle" style="width: 100%"
placeholder="请选择职称"
code="technical_title_level"></dict-select>
</el-form-item>
<el-form-item label="职" prop="professionalLevel">
<dict-select v-model="formData.professionalLevel" style="width: 100%"
placeholder="请选择职"
code="JobTitle"></dict-select>
</el-form-item>
<!-- <el-form-item label="是否专任教师" prop="ordinaryTeacher">
<el-radio-group v-model="formData.ordinaryTeacher" size="small">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="姓名" prop="userName">
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工号" prop="loginName">
<el-input v-model="formData.loginName" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="sex">
<el-radio-group v-model="formData.sex" size="small">
<el-radio border label="男"></el-radio>
<el-radio border label="女"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出生年月" prop="birthday">
<el-date-picker
v-model="formData.birthday"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
style="width: 100%"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="民族" prop="nation">
<dict-select v-model="formData.nation" style="width: 100%" placeholder="请选择民族"
code="USER_NATION"></dict-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="政治面貌" prop="political">
<el-input maxlength="100" placeholder="政治面貌"
v-model="formData.political"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属工会">
<el-input
v-model="formData.unionName"
readonly
placeholder="请输入所属工会"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属单位">
<el-input
v-model="formData.unitName"
readonly
placeholder="请输入所属单位"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职" prop="professionalTitle">
<dict-select v-model="formData.professionalTitle" style="width: 100%"
placeholder="请选择职"
code="technical_title_level"></dict-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否高级职称" prop="seniorTeacher">
<el-radio-group v-model="formData.seniorTeacher" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>-->
</el-form-item>
<el-form-item label="是否高级职称" prop="seniorTeacher">
<el-radio-group v-model="formData.seniorTeacher" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否中级职称及以下" prop="intermediateBelow">
<el-radio-group v-model="formData.intermediateBelow" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否干部" prop="cadre">
<el-radio-group v-model="formData.cadre" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否工人" prop="worker">
<el-radio-group v-model="formData.worker" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="校级领导" prop="schoolLeader">
<el-radio-group v-model="formData.schoolLeader" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="中层领导" prop="middleLevelLeader">
<el-radio-group v-model="formData.middleLevelLeader" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="是否中级职称及以下" prop="intermediateBelow">
<el-radio-group v-model="formData.intermediateBelow" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="是否干部" prop="cadre">
<el-radio-group v-model="formData.cadre" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="是否工人" prop="worker">
<el-radio-group v-model="formData.worker" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="校级领导" prop="schoolLeader">
<el-radio-group v-model="formData.schoolLeader" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="中层领导" prop="middleLevelLeader">
<el-radio-group v-model="formData.middleLevelLeader" size="small">
<el-radio border :label="true"></el-radio>
<el-radio border :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</div>
<div class="form-grid">
@@ -27,21 +27,23 @@ layout("/layouts/platform.html"){
</el-descriptions-item>
<el-descriptions-item label="受补助人">
<template v-if="formData.mode == 2">
<el-select :remote-method="queryRecipients"
@change="userChange" clearable filterable
placeholder="输入工号或者姓名查找" remote
style="width: 100%" v-model="formData.userId">
<el-option :key="o.id"
:label="o.username+'('+o.loginname+')'"
:value="o.id"
v-for="o in subsidizedList"></el-option>
</el-select>
</template>
<template v-else>
<el-input readonly maxlength="100" type="text"
v-model="formData.userName"></el-input>
</template>
<el-form-item prop="userName">
<template v-if="formData.mode == 2">
<el-select :remote-method="queryRecipients"
@change="userChange" clearable filterable
placeholder="输入工号或者姓名查找" remote
style="width: 100%" v-model="formData.userId">
<el-option :key="o.id"
:label="o.username+'('+o.loginname+')'"
:value="o.id"
v-for="o in subsidizedList"></el-option>
</el-select>
</template>
<template v-else>
<el-input readonly maxlength="100" type="text"
v-model="formData.userName"></el-input>
</template>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="性别">
<el-form-item prop="sex">
@@ -112,7 +114,7 @@ layout("/layouts/platform.html"){
</el-descriptions-item>
<el-descriptions-item label="收款账户" :span="2">
<el-form-item prop="bankCardNum">
<el-input maxlength="20" clearable placeholder="请填写华夏银行工资卡号"
<el-input maxlength="20" clearable placeholder="请填写收款卡号"
v-model="formData.bankCardNum"></el-input>
</el-form-item>
</el-descriptions-item>
@@ -179,7 +181,7 @@ layout("/layouts/platform.html"){
:prop="'familyList.'+$index+'.monthlyIncome'"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input-number v-model="row.monthlyIncome" placeholder="请输入月收入"
:min="1" :step="1" style="width: 100%" clearable></el-input-number>
:min="0" :step="1" style="width: 100%" clearable></el-input-number>
</el-form-item>
</template>
</el-table-column>
@@ -250,17 +252,18 @@ layout("/layouts/platform.html"){
formRules: {
proxyUserName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
proxyLoginName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sex: [{required: true, message: '必填', trigger: ['blur', 'change']}],
unitName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
unionName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
monthlyIncome: [{required: true, message: '必填', trigger: ['blur', 'change']}],
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
idCard: [{required: true, message: '必填', trigger: ['blur', 'change']}],
bankCardNum: [{required: true, message: '必填', trigger: ['blur', 'change']}],
officialCapacity: [{required: true, message: '必填', trigger: ['blur', 'change']}],
subsidyStandards: [{required: true, message: '必填', trigger: ['blur', 'change']}],
reason: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}]
sex: [{required: true, message: '请填写性别', trigger: ['blur', 'change']}],
userName: [{required: true, message: '请填写受补助人', trigger: ['blur', 'change']}],
unitName: [{required: true, message: '请填写所属单位', trigger: ['blur', 'change']}],
unionName: [{required: true, message: '请填写所属工会', trigger: ['blur', 'change']}],
monthlyIncome: [{required: true, message: '请填写月收入', trigger: ['blur', 'change']}],
mobile: [{required: true, message: '请填写手机号码', trigger: ['blur', 'change']}],
idCard: [{required: true, message: '请填写身份证号', trigger: ['blur', 'change']}],
bankCardNum: [{required: true, message: '请填写收款账户卡号', trigger: ['blur', 'change']}],
officialCapacity: [{required: true, message: '请填写职务职称', trigger: ['blur', 'change']}],
subsidyStandards: [{required: true, message: '请选择困难类型', trigger: ['blur', 'change']}],
reason: [{required: true, message: '请填写申请原因', trigger: ['blur', 'change']}],
sign: [{required: true, message: '请签字', trigger: ['blur', 'change']}]
},
// 替他人申请相关
@@ -285,44 +288,75 @@ layout("/layouts/platform.html"){
},
// 提交
onSubmit() {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post('/platform/difficultHelp/apply/submit', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
commonUtil.pjaxPush('/platform/difficultHelp/mine')
}
})
async onSubmit() {
this.$refs.formRef.validate().then((valid) => {
if (valid) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
const result = this.isValidIdCard(this.formData.idCard)
if (result.status === 0) {
this.$message.warning(result.msg)
return
}
// const bankRes = this.validateCard(this.formData.bankCardNum)
// if (bankRes.status === 0) {
// this.$message.warning(bankRes.msg)
// return;
// }
this.$axios.post('/platform/difficultHelp/apply/submit', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
commonUtil.pjaxPush('/platform/difficultHelp/mine')
}
})
})
}
})
},
onFinishTask() {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$axios.post('/platform/difficultHelp/apply/submitAgain', {
data: JSON.stringify(this.formData),
taskId: GetQueryString("taskId")
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
commonUtil.pjaxPush('/platform/difficultHelp/mine')
}
})
async onFinishTask() {
this.$refs.formRef.validate().then((valid) => {
if (valid) {
this.$confirm("您确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
const result = this.isValidIdCard(this.formData.idCard)
if (result.status === 0) {
this.$message.warning(result.msg)
return
}
// const bankRes = this.validateCard(this.formData.bankCardNum)
// if (bankRes.status === 0) {
// this.$message.warning(bankRes.msg)
// return;
// }
this.$axios.post('/platform/difficultHelp/apply/submitAgain', {
data: JSON.stringify(this.formData),
taskId: GetQueryString("taskId")
}).then(res => {
if (res.code === 0) {
this.$message.success("提交成功")
commonUtil.pjaxPush('/platform/difficultHelp/mine')
}
})
})
}
})
},
// 查询受助人
queryRecipients(key) {
this.$axios.get("/platform/difficultHelp/apply/queryRecipients", {
this.$axios.post("/platform/difficultHelp/apply/queryRecipients", {
key
}).then(res => {
if (res.code === 0) {
@@ -334,6 +368,7 @@ layout("/layouts/platform.html"){
this.$axios.post('/platform/difficultHelp/mine/findOne', { id }).then(res => {
if (res.code === 0) {
this.formData = res.data
this.queryRecipients(res.data.loginName)
}
})
},
@@ -126,7 +126,7 @@ layout("/layouts/platform.html"){
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "subsidyStandards", label: "困难类型", sortable: true },
{ prop: "applyTime", label: "申请时间", sortable: true },
{ prop: "taskName", label: "当前节点"},
{ prop: "curTaskName", label: "当前节点"},
{ prop: "instanceState", label: "流程状态"}
],
unions: [],
@@ -105,7 +105,7 @@ layout("/layouts/platform.html"){
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "subsidyStandards", label: "困难类型", sortable: true },
{ prop: "applyTime", label: "申请时间", sortable: true },
{ prop: "curTaskName", label: "当前节点" },
{ prop: "taskName", label: "当前节点" },
{ prop: "instanceState", label: "流程状态" }
],
unions: [],
@@ -62,6 +62,9 @@ layout("/layouts/platform.html"){
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
size="small"></enum-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='taskName'">
<span>{{ row.instanceState == '20' ? '结束' : row.taskName }}</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="200px">
<template slot-scope="{row}">
@@ -99,7 +102,7 @@ layout("/layouts/platform.html"){
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "subsidyStandards", label: "困难类型", sortable: true },
{ prop: "applyTime", label: "申请时间", sortable: true },
{ prop: "curTaskName", label: "当前节点" },
{ prop: "taskName", label: "当前节点" },
{ prop: "instanceState", label: "流程状态" }
],
unions: [],
@@ -127,7 +127,7 @@ layout("/layouts/platform.html"){
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "subsidyStandards", label: "困难类型", sortable: true },
{ prop: "applyTime", label: "申请时间", sortable: true },
{ prop: "taskName", label: "当前节点"},
{ prop: "curTaskName", label: "当前节点"},
{ prop: "instanceState", label: "流程状态"}
],
unions: [],
@@ -6,7 +6,7 @@ const info = {
<el-descriptions-item label="年度">{{ viewData.year }}</el-descriptions-item>
<el-descriptions-item label="编号">{{ viewData.serialNumber }}</el-descriptions-item>
<el-descriptions-item label="线路名称">{{ viewData.lineName }}</el-descriptions-item>
<el-descriptions-item label="区域性质">{{ viewData.regionalNature }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="线路内容" :span="2">
<div v-html="viewData.content"></div>
</el-descriptions-item>
@@ -17,7 +17,8 @@ const info = {
{{ viewData.travelAgency.travelAgencyName }}
</el-descriptions-item>
<el-descriptions-item label="联系人">{{ viewData.travelAgency.contact }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ viewData.travelAgency.contactMobileNumber }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ viewData.travelAgency.contactMobileNumber }}
</el-descriptions-item>
<el-descriptions-item label="邮箱">{{ viewData.travelAgency.email }}</el-descriptions-item>
<el-descriptions-item label="官网">
<a :href="viewData.travelAgency.officialWebsite" class="text-primary" target="_blank">
@@ -35,17 +35,8 @@ layout("/layouts/platform.html"){
></el-option>
</el-select>
</search-item>
<search-item label="报名人">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="info.userName"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会">
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" clearable style="width: 100%"
@@ -115,7 +106,7 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="auditDialogVisible=false" size="small">取消</el-button>
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
@@ -141,7 +132,6 @@ layout("/layouts/platform.html"){
pageDataUrl: "/platform/excellentRecuperation/schoolAudit/pageData",
pageForm: {
year: moment().format('YYYY'),
searchName: "info.userName",
approval: false
},
activityList: [],
@@ -166,7 +156,7 @@ layout("/layouts/platform.html"){
})
}).then((res) => {
if (res.code === 0) {
this.auditDialogVisible = false
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
@@ -35,17 +35,8 @@ layout("/layouts/platform.html"){
></el-option>
</el-select>
</search-item>
<search-item label="报名人">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="info.userName"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会">
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" clearable style="width: 100%"
@@ -109,7 +100,6 @@ layout("/layouts/platform.html"){
pageDataUrl: "/platform/excellentRecuperation/summary/pageData",
pageForm: {
year: moment().format('YYYY'),
searchName: "info.userName",
},
activityList: [],
unionOptions: [],
@@ -21,8 +21,8 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="关键字">
<el-input placeholder="请输入旅行社名称或联系人查询" clearable v-model="pageForm.searchKeyword"
<search-item label="旅行社">
<el-input placeholder="请输入旅行社查询" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch"></el-input>
</search-item>
</search>
@@ -24,15 +24,15 @@ const COMMON_QUERY = {
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userStates" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userStates" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE" multiple collapse-tags></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personTypes" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personTypes" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE" multiple collapse-tags></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBys" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
</search-item>
</template>
@@ -90,7 +90,7 @@ layout("/layouts/platform.html"){
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "sign", label: "签字" },
{ prop: "curTaskName", label: "当前节点"},
{ prop: "taskName", label: "当前节点"},
{ prop: "instanceState", label: "流程状态"}
],
unions: [],
@@ -40,13 +40,13 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch" code="USER_STATE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch" code="USER_PREPARED_BY_TYPE"></dict-select>
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch" code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
</search-item>
</search>
</el-card>
@@ -19,15 +19,15 @@ const COMMON_QUERY = {
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userStates" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userStates" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE" multiple collapse-tags></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personTypes" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personTypes" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE" multiple collapse-tags></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBys" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
</search-item>
</search>
@@ -27,15 +27,15 @@ layout("/layouts/platform.html"){
code="USER_SEX"></dict-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="更新日期">
@@ -24,11 +24,11 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
<search-item label="变更类型">
@@ -24,15 +24,15 @@ const MEMBER_MANAGE_QUERY = {
code="USER_SEX"></dict-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
<search-item label="更新日期">
@@ -34,15 +34,15 @@ const COMMON_QUERY = {
</el-select>
</search-item>
<search-item label="在职状态" v-if="!query_disable">
<dict-select v-model="pageForm.userStates" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userStates" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE" multiple collapse-tags></dict-select>
</search-item>
<search-item label="教职工类别" v-if="!query_disable">
<dict-select v-model="pageForm.personTypes" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personTypes" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE" multiple collapse-tags></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBys" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
</search-item>
</search>
@@ -41,15 +41,15 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch" code="USER_STATE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select
v-model="pageForm.preparedBy"
placeholder="编制类别"
placeholder="请选择编制类别"
@change="doSearch"
code="USER_PREPARED_BY_TYPE"
></dict-select>
@@ -23,11 +23,11 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
</search>
@@ -16,15 +16,15 @@ const SCHOOL_VIEW_AND_HANDLE = {
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
</search>
@@ -14,15 +14,15 @@ const VIEW_CHANGE_TYPE_USER = {
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
</search>
@@ -20,11 +20,11 @@ const VERIFICATION_QUERY = {
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
<search-item label="变更类型">
@@ -25,15 +25,15 @@ const VERIFICATION_SET_USER_LIST = {
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="变更类型">
@@ -23,15 +23,15 @@ const VERIFICATION_SHOW_SELECTION_USERS = {
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="编制类别">
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="教职工类别">
<dict-select v-model="pageForm.personType" placeholder="教职工类别" @change="doSearch"
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch"
code="USER_PERSON_TYPE"></dict-select>
</search-item>
</search>
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
<template>
<el-card shadow="never">
<search @search="doSearch">
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"
style="width: 100%">
</el-input>
@@ -142,7 +142,7 @@ layout("/layouts/platform.html"){
<template #edit>
<file-import ref="viewImport" temp_url="/platform/thirtyTeach/manage/downloadImportTemp"
post_url="/platform/thirtyTeach/manage/doImport" is_show_radio
@flush="$refs.guava.index();pageData()"
@flush="pageData()"
></file-import>
</template>
</guava>
@@ -279,7 +279,7 @@ layout("/layouts/platform_h5.html"){
<!-- 分工会报名-->
<div v-else-if="viewData.signUpMethod===3" class="block">
<div class="notice-title left-tag-title">选择报名人员
<div class="notice-title left-tag-title">选择报名人员
<span v-if="viewData.userNumberLimit===2">
,报名人数 <span style="color: red">
{{viewData.unionTeamNum}}</span>
@@ -709,6 +709,7 @@ layout("/layouts/platform_h5.html"){
if (val) {
this.$axios.post("/platform/activity/culture/applyUser/queryTeammate", {
keyword: val,
tissueId: this.id,
signUpMethod: this.viewData.signUpMethod
}).then((res) => {
if (res.code === 0) {
@@ -41,7 +41,7 @@ layout("/layouts/platform_h5.html"){
<i class="fa fa-undo"></i>
<span>撤回</span>
</div>
<div class="action-btn delete" @click="onDelete(row)"
<div class="action-btn delete" @click="onDelete(row.id)"
v-if="row.taskKey === 'startTask' || !row.instanceId">
<i class="fa fa-trash"></i>
<span>删除</span>
@@ -3,65 +3,7 @@ layout("/layouts/platform_h5.html"){
#-->
<style>
.list-card {
position: relative;
margin: 10px;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 8px 12px #ebedf0;
width: auto;
}
.list-card > .content {
padding: 8px 5px;
display: flex;
max-height: 100px;
}
.content-right {
width: calc(100% - 150px);
max-width: calc(100% - 150px);
padding-left: 15px;
overflow: hidden;
text-overflow: ellipsis;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.cr-title {
line-height: 20px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: bold;
}
.concat, .mobile, .union {
font-size: 13px;
line-height: 18px;
width: 100%;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.desc_info div {
font-size: 12px;
}
.tag {
position: absolute;
display: inline-block;
background-color: #1867b0;
color: #fff;
font-size: 14px;
top: 0px;
border-radius: 6px;
right: -3px;
padding: 0px 6px;
transform: rotate(16deg);
}
</style>
@@ -84,48 +26,22 @@ layout("/layouts/platform_h5.html"){
</van-sticky>
<table-list api="/platform/healthCheckup/h5/pageData" :page_form.sync="pageForm" ref="tableListRef"
@ready="doSearch">
@ready="doSearch" img="cover">
<template v-slot="{index,row}">
<div class="list-card">
<div class="content" @click="viewProjectDetail(row)">
<van-image
height="76"
radius="8"
:src="row.cover"
width="100"
fit="cover">
<template #loading>
<van-loading type="spinner" size="20" />
</template>
<template #error>
<div style="font-size: 12px; color: #999;">暂无图片</div>
</template>
</van-image>
<div class="content-right">
<div v-if="row.selectCount <= 0" class="tag">未选择</div>
<div v-else class="tag" style="background-color: green">已选择</div>
<div class="cr-title">
<span>{{row.name}}</span>
</div>
<div class="desc_info">
<div class="concat">
<span>开始时间:</span>
{{row.choiceTimeStart}}
</div>
<div class="mobile">
<span>结束时间:</span>
{{row.choiceTimeEnd}}
</div>
</div>
</div>
<table-column label="开始时间">
{{$moment(row.choiceTimeStart).format('MM/DD HH:mm')}}
</table-column>
<table-column label="结束时间">
{{$moment(row.choiceTimeEnd).format('MM/DD HH:mm')}}
</table-column>
</template>
<template #actions="{index,row}">
<template v-if="$moment().isBefore($moment(row.choiceTimeEnd))">
<div class="action-btn" @click="onView(row)">
<i class="fa fa-edit"></i>
<span>去报名</span>
</div>
<div style="text-align: right; padding: 0 10px 10px 0;">
<div class="action-btn" @click="onView(row)">
<i class="fa fa-edit"></i>
<span>报名</span>
</div>
</div>
</div>
</template>
</template>
</table-list>
@@ -121,7 +121,7 @@ layout("/layouts/platform_h5.html"){
title: '温馨提示',
message: '您确定要提交吗?',
}).then(() => {
this.$axios.post('/flow/common/executeTask', {
this.$axios.post('/platform/outlay/reimburse/clubAudit/submit', {
data: JSON.stringify({
...this.formData,
submitType: val