commit
This commit is contained in:
@@ -153,7 +153,7 @@ public class SysUnionController {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
gh.*,
|
||||
GROUP_CONCAT( u.username,'(',u.mobile,')' ) AS chairman
|
||||
GROUP_CONCAT( u.username,'(',u.loginname,')' ) AS chairman
|
||||
FROM
|
||||
sys_union gh
|
||||
LEFT JOIN sys_user_role sur ON sur.unionId = gh.id
|
||||
|
||||
@@ -110,7 +110,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
* 检查用户是否符合会员条件
|
||||
*
|
||||
* @param userState 用户状态
|
||||
* @param preparedBy 聘用方式
|
||||
* @param preparedBy 编制类别
|
||||
* @param postDoctoralJoinDate 博士后进站时间
|
||||
* @return 是否符合会员条件
|
||||
*/
|
||||
|
||||
+1
-1
@@ -109,7 +109,7 @@ public class MemberChangeManageController {
|
||||
throw new BaseException("没有权限,或未设置工会小组");
|
||||
}
|
||||
|
||||
memberCommonService.validateChangeAndSetBasicData(record);
|
||||
memberCommonService.validateChangeAndSetBasicData(record, changeOrigin);
|
||||
dao.insertOrUpdate(record);
|
||||
|
||||
// 开启流程实例
|
||||
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.controller.check;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.ManyAddOrRenewUtil;
|
||||
import com.budwk.app.sys.models.Sys_user;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.staffmanage.member.models.check.MemberCheckTask;
|
||||
import com.budwk.app.zhgh.staffmanage.member.models.check.MemberCheckTaskUser;
|
||||
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberCheckPageForm;
|
||||
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberStatisticsPageForm;
|
||||
import com.budwk.app.zhgh.staffmanage.member.service.MemberCheckTaskService;
|
||||
import com.budwk.app.zhgh.staffmanage.member.service.MemberCommonService;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.random.R;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckTaskController
|
||||
* @Date 2025/9/24 9:53
|
||||
* @注释 会员核对任务创建
|
||||
*/
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json")
|
||||
@At("/platform/member/check/task")
|
||||
public class MemberCheckTaskController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private ManyAddOrRenewUtil renewUtil;
|
||||
@Inject
|
||||
private MemberCheckTaskService memberCheckTaskService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/staffmanage/member/check/task/index.html")
|
||||
@SaCheckPermission("member.check.task")
|
||||
public void index() {}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("页面数据")
|
||||
@SaCheckPermission("member.check.task")
|
||||
public Result pageData(MemberCheckPageForm pageForm) {
|
||||
Sql sql = Sqls.create("select * from member_check_task $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("`year`", "=", pageForm.getYear());
|
||||
cnd.andEX("checkTaskId", "=", pageForm.getCheckTaskId());
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCheckTaskService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("添加或修改")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("member.check.task")
|
||||
@SLog(tag = "会员核对任务创建", msg = "添加或修改会员核对任务创建:${args[0].taskName}")
|
||||
public Result doAddOrModify(MemberCheckTask memberCheckTask) {
|
||||
dao.insertOrUpdate(memberCheckTask);
|
||||
|
||||
dao.clear(MemberCheckTaskUser.class, Cnd.where(MemberCheckTaskUser::getCheckTaskId, "=", memberCheckTask.getId()));
|
||||
|
||||
List<String> userStates = memberCheckTask.getUserStates();
|
||||
|
||||
List<Sys_user> query = dao.query(Sys_user.class, Cnd.where(Sys_user::getUserState, "in", userStates).or(Sys_user::getMember, "=", 1));
|
||||
List<MemberCheckTaskUser> list = query.stream().map(v -> {
|
||||
MemberCheckTaskUser memberCheckTaskUser = new MemberCheckTaskUser();
|
||||
BeanUtil.copyProperties(v, memberCheckTaskUser);
|
||||
memberCheckTaskUser.setId(R.UU32());
|
||||
memberCheckTaskUser.setCheckTaskId(memberCheckTask.getId());
|
||||
memberCheckTaskUser.setUserId(v.getId());
|
||||
return memberCheckTaskUser;
|
||||
}).toList();
|
||||
|
||||
renewUtil.asyncExecuteFastInsert(list, 200);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
+179
@@ -0,0 +1,179 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.controller.check;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberCheckPageForm;
|
||||
import com.budwk.app.zhgh.staffmanage.member.service.MemberCheckTaskService;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.Lang;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckTaskUnionController
|
||||
* @Date 2025/9/24 11:24
|
||||
* @注释
|
||||
*/
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json")
|
||||
@At("/platform/member/checkTask/union")
|
||||
public class MemberCheckTaskUnionController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private MemberCheckTaskService memberCheckTaskService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/staffmanage/member/check/union/index.html")
|
||||
@SaCheckPermission("member.checkTask.union")
|
||||
public void index() {}
|
||||
|
||||
@At
|
||||
@ApiOperation("页面数据")
|
||||
@SaCheckPermission("member.checkTask.union")
|
||||
public Result pageData(MemberCheckPageForm pageForm){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
u.id,
|
||||
u.loginname,
|
||||
u.username,
|
||||
u.sex,
|
||||
u.birthday,
|
||||
u.political,
|
||||
u.joinPartyDate,
|
||||
u.nation,
|
||||
u.nativePlace,
|
||||
u.nationality,
|
||||
u.idCardType,
|
||||
u.mobile,
|
||||
u.education,
|
||||
u.academicDegree,
|
||||
u.position,
|
||||
u.personType,
|
||||
u.preparedBy,
|
||||
u.identityType,
|
||||
u.userState,
|
||||
u.unionName,
|
||||
u.unitName,
|
||||
u.member,
|
||||
u.postDoctoralJoinDate
|
||||
FROM
|
||||
`vw_user` u
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = getCnd(pageForm);
|
||||
if (StrUtil.isNotBlank(pageForm.getIsUnit())) {
|
||||
cnd.and("u.unitId", "true".equals(pageForm.getIsUnit()) ? "is not" : "is", null);
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getIsUnion())) {
|
||||
cnd.and("u.unionId", "true".equals(pageForm.getIsUnion()) ? "is not" : "is", null);
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or("u.username", "like", "%" + pageForm.getSearchKeyword() + "%");
|
||||
seg.or("u.loginname", "like", "%" + pageForm.getSearchKeyword() + "%");
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and(Cnd.exps("u.unionId", "=", SecurityUtil.getUnionId())
|
||||
.or("u.unionId", "is", null).or("u.unionId", "=", ""));
|
||||
}
|
||||
cnd.desc("u.unionName,u.id");
|
||||
cnd.groupBy("u.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = memberCheckTaskService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
public Cnd getCnd(MemberCheckPageForm pageForm) {
|
||||
Boolean reverseSelection = pageForm.getReverseSelection();
|
||||
String IN_OR_NIN_OP = reverseSelection ? "NOT IN" : "IN";
|
||||
String EQ_OR_NEQ_OP = reverseSelection ? "!=" : "=";
|
||||
//小于等于
|
||||
String LE_OR_NLE_OP = reverseSelection ? ">=" : "<=";
|
||||
//大于等于
|
||||
String GE_OR_NGE_OP = reverseSelection ? "<=" : ">=";
|
||||
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isAllNotBlank(pageForm.getPageOrderBy(), pageForm.getPageOrderName())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), "ascending".equalsIgnoreCase(pageForm.getPageOrderBy()) ? "ASC" : "DESC");
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(pageForm.getUserTypes())) {
|
||||
if (pageForm.getUserTypes().contains("工会会员")) {
|
||||
cnd.and("u.member", EQ_OR_NEQ_OP, true);
|
||||
}
|
||||
if (pageForm.getUserTypes().contains("福利会员")) {
|
||||
cnd.and("u.welfareMember", EQ_OR_NEQ_OP, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(pageForm.getAge()) && !"0".equals(pageForm.getAge().get(1))) {
|
||||
if (reverseSelection) {
|
||||
cnd.andNot("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", "between", pageForm.getAge().toArray());
|
||||
} else {
|
||||
cnd.and("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", "between", pageForm.getAge().toArray());
|
||||
}
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(pageForm.getBirthdayStartDate()) && Strings.isNotBlank(pageForm.getBirthdayEndDate())) {
|
||||
if (reverseSelection) {
|
||||
cnd.andNot("DATE(u.birthday)", "between", new String[]{pageForm.getBirthdayStartDate(), pageForm.getBirthdayEndDate()});
|
||||
} else {
|
||||
cnd.and("DATE(u.birthday)", "between", new String[]{pageForm.getBirthdayStartDate(), pageForm.getBirthdayEndDate()});
|
||||
}
|
||||
}
|
||||
|
||||
if (Strings.isNotBlank(pageForm.getBirthdayStartDate()) && Strings.isBlank(pageForm.getBirthdayEndDate())) {
|
||||
cnd.and("DATE(u.birthday)", GE_OR_NGE_OP, pageForm.getBirthdayStartDate());
|
||||
}
|
||||
|
||||
if (Strings.isBlank(pageForm.getBirthdayStartDate()) && Strings.isNotBlank(pageForm.getBirthdayEndDate())) {
|
||||
cnd.and("DATE(u.birthday)", LE_OR_NLE_OP, pageForm.getBirthdayEndDate());
|
||||
}
|
||||
|
||||
try {
|
||||
handleField("id", pageForm.getUserInfos(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("unionId", pageForm.getUnionIds(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("unitId", pageForm.getUnitIds(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("personType", pageForm.getPersonTypes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("preparedBy", pageForm.getPreparedBys(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("userState", pageForm.getUserStates(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("sex", pageForm.getSexTypes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return cnd;
|
||||
}
|
||||
|
||||
void handleField(String fieldName, Object fieldValue, boolean reverseSelection, String IN_OR_NIN_OP, Cnd cnd) {
|
||||
if (reverseSelection && Lang.isNotEmpty(fieldValue)) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or("u." + fieldName, "is", null);
|
||||
seg.or("u." + fieldName, IN_OR_NIN_OP, fieldValue);
|
||||
cnd.and(seg);
|
||||
} else {
|
||||
cnd.andEX("u." + fieldName, IN_OR_NIN_OP, fieldValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
+15
-49
@@ -36,13 +36,17 @@ 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;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
@@ -85,34 +89,12 @@ public class MemberBatchMakeController {
|
||||
unitName,
|
||||
mobile
|
||||
from
|
||||
`user`
|
||||
`vw_user`
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("member", "=", false);
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("username", pageForm.getSearchKeyword());
|
||||
seg.orLike("loginname", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
// 权限判断
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or("unionId", "=", SecurityUtil.getUnionId());
|
||||
seg.or("unionId", "is", null);
|
||||
seg.or("unionId", "=", "");
|
||||
cnd.and(seg);
|
||||
} else {
|
||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
||||
}
|
||||
|
||||
cnd.andEX("userState", "in", pageForm.getUserStates());
|
||||
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
|
||||
cnd.andEX("personType", "in", pageForm.getPersonTypes());
|
||||
|
||||
pageForm.buildSearch(cnd, "");
|
||||
sql.setCondition(cnd);
|
||||
|
||||
Pagination pagination = memberCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
@@ -126,7 +108,11 @@ public class MemberBatchMakeController {
|
||||
@SLog(tag = "会员信息", msg = "批量设置会员")
|
||||
@SaCheckPermission("member.info.batchMake")
|
||||
public Result batchMake(MemberBatchMakeParam param){
|
||||
List<String> userIds = param.getUserIds();
|
||||
List<String> userIds = Optional.ofNullable(param.getUserIds()).orElse(Collections.emptyList())
|
||||
.stream().filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
if (Lang.isEmpty(userIds)) {
|
||||
throw new BaseException("请传递数据");
|
||||
}
|
||||
// 查询会员角色
|
||||
Sys_role role = sysRoleService.getByCode(RoleConstant.MEMBER);
|
||||
if (role == null) {
|
||||
@@ -153,7 +139,7 @@ public class MemberBatchMakeController {
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("member.statistics.comprehensive")
|
||||
public void doExport(MemberStatisticsPageForm pageForm, HttpServletResponse response){
|
||||
public void doExport(MemberInfoPageForm pageForm, HttpServletResponse response){
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
id,
|
||||
@@ -172,33 +158,13 @@ public class MemberBatchMakeController {
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("member", "=", false);
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("username", pageForm.getSearchKeyword());
|
||||
seg.orLike("loginname", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
// 权限判断
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or("unionId", "=", SecurityUtil.getUnionId());
|
||||
seg.or("unionId", "is", null);
|
||||
seg.or("unionId", "=", "");
|
||||
cnd.and(seg);
|
||||
} else {
|
||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
||||
}
|
||||
|
||||
cnd.andEX("userState", "in", pageForm.getUserStates());
|
||||
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
|
||||
cnd.andEX("personType", "in", pageForm.getPersonTypes());
|
||||
pageForm.buildSearch(cnd, "u.");
|
||||
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> list = memberCommonService.listMap(sql);
|
||||
for (NutMap row : list) {
|
||||
row.put("mobile", DesensitizedUtil.mobilePhone(row.getString("mobile")));
|
||||
row.put("idCard", DesensitizedUtil.idCardNum(row.getString("idCard"), 3, 4));
|
||||
}
|
||||
try {
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
@@ -207,7 +173,7 @@ public class MemberBatchMakeController {
|
||||
exportEntities.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
exportEntities.add(new ExcelExportEntity("联系电话", "mobile", 20));
|
||||
exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20));
|
||||
exportEntities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
|
||||
exportEntities.add(new ExcelExportEntity("编制类别", "preparedBy", 20));
|
||||
exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 30));
|
||||
|
||||
+4
-2
@@ -67,6 +67,7 @@ public class MemberInfoGroupController {
|
||||
Pagination<NutMap> pagination = memberInfoService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
for (NutMap row : pagination.getList()) {
|
||||
row.put("mobile",DesensitizedUtil.mobilePhone(row.getString("mobile")));
|
||||
row.put("idCard",DesensitizedUtil.idCardNum(row.getString("idCard"), 3, 4));
|
||||
}
|
||||
return Result.success(pagination);
|
||||
}
|
||||
@@ -125,9 +126,10 @@ public class MemberInfoGroupController {
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("member.info.group")
|
||||
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
|
||||
public Result importMember(TempFile file) {
|
||||
public Result importMember(TempFile file, Boolean isFlag) {
|
||||
try {
|
||||
NutMap nutMap = memberInfoService.handlingMemberImport(file);
|
||||
System.out.println(isFlag);
|
||||
NutMap nutMap = memberInfoService.handlingMemberImport(file, isFlag);
|
||||
if (Lang.isNotEmpty(nutMap)) {
|
||||
return Result.success(nutMap);
|
||||
}
|
||||
|
||||
+24
-1
@@ -1,5 +1,9 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.controller.statistics;
|
||||
|
||||
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.hutool.core.util.DesensitizedUtil;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
@@ -12,12 +16,16 @@ import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
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 javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
@@ -50,6 +58,7 @@ public class MemberComprehensiveController {
|
||||
Pagination<NutMap> pagination = memberStatisticsService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
for (NutMap row : pagination.getList()) {
|
||||
row.put("mobile", DesensitizedUtil.mobilePhone(row.getString("mobile")));
|
||||
row.put("idCard", DesensitizedUtil.idCardNum(row.getString("idCard"), 3, 4));
|
||||
}
|
||||
return Result.success(pagination);
|
||||
}
|
||||
@@ -63,9 +72,23 @@ public class MemberComprehensiveController {
|
||||
List<NutMap> list = memberStatisticsService.listMap(sql);
|
||||
for (NutMap row : list) {
|
||||
row.put("mobile", DesensitizedUtil.mobilePhone(row.getString("mobile")));
|
||||
row.put("idCard", DesensitizedUtil.idCardNum(row.getString("idCard"), 3, 4));
|
||||
}
|
||||
try {
|
||||
Workbook workbook = memberInfoService.setHistoryExcelData(list);
|
||||
Workbook workbook = null;
|
||||
if (Lang.isNotEmpty(pageForm.getColumns())) {
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
|
||||
pageForm.getColumns().forEach(column -> {
|
||||
exportEntities.add(new ExcelExportEntity(column.get("label"), column.get("prop"), 20));
|
||||
});
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
|
||||
workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
||||
} else {
|
||||
workbook = memberInfoService.setHistoryExcelData(list);
|
||||
}
|
||||
CommonDownloadUtil.download("会员综合统计表.xlsx", workbook, response);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
@Accessors(chain = true)
|
||||
@Table("member_list_verification_user")
|
||||
@Comment("会员名单核对事项用户表")
|
||||
public class MemberListVerificationUser extends MemberApplyRecord {
|
||||
public class MemberListVerificationUser extends MemberChangeRecord {
|
||||
|
||||
@Name
|
||||
@Comment("ID")
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.models.check;
|
||||
|
||||
import com.budwk.app.base.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckTask
|
||||
* @Date 2025/9/24 11:03
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
@Table
|
||||
@Comment("会员核对事项表")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MemberCheckTask extends BaseModel {
|
||||
|
||||
@Column
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("年度")
|
||||
@ColDefine(type = ColType.INT)
|
||||
private Integer year;
|
||||
|
||||
@Column
|
||||
@Comment("任务名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String taskName;
|
||||
|
||||
@Column
|
||||
@Comment("说明")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String description;
|
||||
|
||||
@Column
|
||||
@Comment("开始时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
private Date startTime;
|
||||
|
||||
@Column
|
||||
@Comment("结束时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
private Date endTime;
|
||||
|
||||
@Column
|
||||
@Comment("模式")
|
||||
@ColDefine(type = ColType.INT)
|
||||
private Integer taskMode;
|
||||
|
||||
@Column
|
||||
@Comment("在职状态")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<String> userStates;
|
||||
|
||||
@Column
|
||||
@Comment("是否开启")
|
||||
@Default(value = "1")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isEnabled;
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.models.check;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.budwk.app.base.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckTaskUnionFeedback
|
||||
* @Date 2025/9/24 11:09
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
@Table
|
||||
@Comment("核对分工会反馈表")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MemberCheckTaskUnionFeedback extends BaseModel {
|
||||
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("核对事项Id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String checkTaskId;
|
||||
|
||||
@Column
|
||||
@Comment("分工会Id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String unionId;
|
||||
|
||||
@Column
|
||||
@Comment("分工会编码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String unionCode;
|
||||
|
||||
@Column
|
||||
@Comment("分工会名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String unionName;
|
||||
|
||||
@Column
|
||||
@Comment("分工会是否已提交")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default("0")
|
||||
private Boolean branchUnionSubmit;
|
||||
|
||||
@Column
|
||||
@Comment("校工会是否审核")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default("0")
|
||||
private Boolean schoolUnionAudit;
|
||||
|
||||
@Column
|
||||
@Comment("反馈人Id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String feedbackUserId;
|
||||
|
||||
@Column
|
||||
@Comment("反馈人姓名")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
private String feedbackUserName;
|
||||
|
||||
@Column
|
||||
@Comment("反馈人工号")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String feedbackLoginName;
|
||||
|
||||
@Column
|
||||
@Comment("反馈文件")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<JSONObject> feedbackFiles;
|
||||
|
||||
@Column
|
||||
@Comment("校工会是否退回")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isRollback;
|
||||
|
||||
@Column
|
||||
@Comment("退回原因")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 200)
|
||||
private String rollbackReason;
|
||||
|
||||
@Column
|
||||
@Comment("当前状态")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
private String status;
|
||||
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.models.check;
|
||||
|
||||
import com.budwk.app.base.model.BaseModel;
|
||||
import com.budwk.app.zhgh.staffmanage.member.models.MemberChangeRecord;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckTaskUser
|
||||
* @Date 2025/9/24 11:08
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
@Table
|
||||
@Comment("会员核对人表")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MemberCheckTaskUser extends MemberChangeRecord {
|
||||
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("核对事项ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String checkTaskId;
|
||||
|
||||
@Column
|
||||
@Default("0")
|
||||
@Comment("分工会是否已核对")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean branchUnionChecked;
|
||||
|
||||
@Column
|
||||
@Default("0")
|
||||
@Comment("校工会是否已核对")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean schoolUnionChecked;
|
||||
|
||||
@Column
|
||||
@Default("0")
|
||||
@Comment("是否变更")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isChanged;
|
||||
|
||||
/**
|
||||
* 1,校工会拒绝 2,校工会通过
|
||||
*/
|
||||
@Column
|
||||
@Comment("当前状态")
|
||||
@ColDefine(type = ColType.INT)
|
||||
private Integer currentState;
|
||||
}
|
||||
+1
-1
@@ -34,7 +34,7 @@ public class MemberChangePageForm extends PageForm {
|
||||
private List<String> userStates;
|
||||
|
||||
// 在职状态
|
||||
@ApiModelProperty("编制类型")
|
||||
@ApiModelProperty("编制类别")
|
||||
private List<String> preparedBys;
|
||||
|
||||
// 人员类型
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.param.pageform;
|
||||
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckPageForm
|
||||
* @Date 2025/9/24 9:59
|
||||
* @注释
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("核对参数")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class MemberCheckPageForm extends PageForm {
|
||||
|
||||
@ApiModelProperty("核对年份")
|
||||
private Integer year;
|
||||
|
||||
@ApiModelProperty("是否有单位")
|
||||
private String isUnit;
|
||||
|
||||
@ApiModelProperty("是否有工会")
|
||||
private String isUnion;
|
||||
|
||||
@ApiModelProperty("核对任务id")
|
||||
private String checkTaskId;
|
||||
|
||||
// 工会id
|
||||
@ApiModelProperty("工会id")
|
||||
private String unionIds;
|
||||
|
||||
// 单位id
|
||||
@ApiModelProperty("单位id")
|
||||
private String unitIds;
|
||||
|
||||
@ApiModelProperty("出生日期开始时间")
|
||||
private String birthdayStartDate;
|
||||
|
||||
@ApiModelProperty("出生日期结束时间")
|
||||
private String birthdayEndDate;
|
||||
|
||||
// 在职状态
|
||||
@ApiModelProperty("在职状态")
|
||||
private List<String> userStates;
|
||||
|
||||
// 在职状态
|
||||
@ApiModelProperty("编制类别")
|
||||
private List<String> preparedBys;
|
||||
|
||||
// 人员类型
|
||||
@ApiModelProperty("人员类型")
|
||||
private List<String> personTypes;
|
||||
|
||||
@ApiModelProperty("年龄区间")
|
||||
private List<String> age;
|
||||
|
||||
@ApiModelProperty("性别")
|
||||
private List<String> sexTypes;
|
||||
|
||||
@ApiModelProperty("人员类型(会员、福利会员之类的)")
|
||||
private List<String> userTypes;
|
||||
|
||||
@ApiModelProperty("是否反选")
|
||||
private Boolean reverseSelection;
|
||||
|
||||
@ApiModelProperty("导出字段")
|
||||
private String props;
|
||||
|
||||
@ApiModelProperty("用户信息查询列表")
|
||||
private List<String> userInfos;
|
||||
}
|
||||
+1
-1
@@ -52,7 +52,7 @@ public class MemberInfoPageForm extends PageForm {
|
||||
@ApiModelProperty("在职状态")
|
||||
private String userState;
|
||||
|
||||
@ApiModelProperty("编制类型")
|
||||
@ApiModelProperty("编制类别")
|
||||
private String preparedBy;
|
||||
|
||||
@ApiModelProperty("人员类型")
|
||||
|
||||
+7
@@ -1,10 +1,12 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.param.pageform;
|
||||
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
@@ -29,6 +31,9 @@ public class MemberStatisticsPageForm extends PageForm {
|
||||
|
||||
private Integer year;
|
||||
|
||||
@ApiModelProperty("人员Id")
|
||||
private List<String> userIds;
|
||||
|
||||
private List<String> unionId;
|
||||
|
||||
private List<String> unitId;
|
||||
@@ -59,4 +64,6 @@ public class MemberStatisticsPageForm extends PageForm {
|
||||
|
||||
private String memberSearchKeyWord;
|
||||
|
||||
@ApiModelProperty("导出的数据")
|
||||
private List<Map<String, String>> columns;
|
||||
}
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.service;
|
||||
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.zhgh.staffmanage.member.models.check.MemberCheckTaskUser;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckTaskService
|
||||
* @Date 2025/9/24 11:02
|
||||
* @注释
|
||||
*/
|
||||
public interface MemberCheckTaskService extends BaseService<MemberCheckTaskUser> {
|
||||
}
|
||||
@@ -64,7 +64,8 @@ public interface MemberInfoService extends BaseService<Sys_user> {
|
||||
|
||||
/**
|
||||
* 导入会员数据处理
|
||||
* @param file
|
||||
* @param file 文件
|
||||
* @param isFlag 是否清空更新
|
||||
*/
|
||||
NutMap handlingMemberImport(TempFile file);
|
||||
NutMap handlingMemberImport(TempFile file, Boolean isFlag);
|
||||
}
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.budwk.app.zhgh.staffmanage.member.service.impl;
|
||||
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.zhgh.staffmanage.member.models.check.MemberCheckTask;
|
||||
import com.budwk.app.zhgh.staffmanage.member.models.check.MemberCheckTaskUser;
|
||||
import com.budwk.app.zhgh.staffmanage.member.service.MemberCheckTaskService;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:MemberCheckTaskServiceImpl
|
||||
* @Date 2025/9/24 11:22
|
||||
* @注释
|
||||
*/
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class MemberCheckTaskServiceImpl extends BaseServiceImpl<MemberCheckTaskUser> implements MemberCheckTaskService {
|
||||
|
||||
public MemberCheckTaskServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
}
|
||||
}
|
||||
+80
-64
@@ -5,6 +5,7 @@ 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.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.DesensitizedUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
@@ -23,6 +24,7 @@ import com.budwk.app.zhgh.staffmanage.member.vo.MemberImportVo;
|
||||
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.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -63,64 +65,49 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
|
||||
public Sql getSql(MemberInfoPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
id,
|
||||
loginname,
|
||||
username,
|
||||
sex,
|
||||
birthday,
|
||||
mobile,
|
||||
personType,
|
||||
userState,
|
||||
preparedBy,
|
||||
unionId,
|
||||
unionName,
|
||||
unitId,
|
||||
unitName,
|
||||
education,
|
||||
nation,
|
||||
postDoctoralJoinDate
|
||||
u.id,
|
||||
u.loginname,
|
||||
u.username,
|
||||
u.sex,
|
||||
DATE_FORMAT(u.birthday, '%Y-%m-%d') AS birthday,
|
||||
u.political,
|
||||
DATE_FORMAT(u.joinPartyDate, '%Y-%m-%d') AS joinPartyDate,
|
||||
u.nation,
|
||||
u.nativePlace,
|
||||
u.nationality,
|
||||
u.idCardType,
|
||||
u.mobile,
|
||||
u.idCard,
|
||||
u.marriage,
|
||||
u.education,
|
||||
u.academicDegree,
|
||||
u.position,
|
||||
u.jobCategory,
|
||||
u.professionalTitle,
|
||||
u.professionalLevel,
|
||||
u.employeeSource,
|
||||
u.administrativeLevel,
|
||||
u.positionSeries,
|
||||
u.positionLevel,
|
||||
u.administrativePositionLevel,
|
||||
u.arrivalAtSchoolDate,
|
||||
u.personType,
|
||||
u.preparedBy,
|
||||
u.identityType,
|
||||
u.userState,
|
||||
u.unionName,
|
||||
u.unitName,
|
||||
DATE_FORMAT(u.teachingTime, '%Y-%m-%d') AS teachingTime,
|
||||
DATE_FORMAT(u.expectedLeaveSchoolDate, '%Y-%m-%d') AS expectedLeaveSchoolDate,
|
||||
u.member,
|
||||
DATE_FORMAT(u.postDoctoralJoinDate, '%Y-%m-%d') AS postDoctoralJoinDate
|
||||
FROM
|
||||
vw_user
|
||||
vw_user u
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("unitId", "=", pageForm.getUnitId());
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or("username", "like", "%" + pageForm.getSearchKeyword() + "%");
|
||||
seg.or("loginname", "like", "%" + pageForm.getSearchKeyword() + "%");
|
||||
cnd.and(seg);
|
||||
}
|
||||
|
||||
if (StrUtil.isAllNotBlank(pageForm.getMemberSearchName(), pageForm.getMemberSearchKeyWord())) {
|
||||
cnd.and(new SqlExpressionGroup().andLike(pageForm.getMemberSearchName(), pageForm.getMemberSearchKeyWord()));
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(pageForm.getPersonTypes())) {
|
||||
cnd.andEX("personType", "in", pageForm.getPersonTypes());
|
||||
}
|
||||
if (Lang.isNotEmpty(pageForm.getPreparedBys())) {
|
||||
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(pageForm.getUserStates())) {
|
||||
cnd.andEX("userState", "in", pageForm.getUserStates());
|
||||
}
|
||||
cnd.andEX("sex", "=", pageForm.getSex());
|
||||
cnd.andEX("sex", "in", pageForm.getSexTypes());
|
||||
|
||||
cnd.and("member", "=", true);
|
||||
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("unionId", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
|
||||
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
|
||||
cnd.asc("unionCode").asc("unitCode");
|
||||
}else{
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
}
|
||||
pageForm.buildSearch(cnd, "u.");
|
||||
sql.setCondition(cnd);
|
||||
return sql;
|
||||
}
|
||||
@@ -237,7 +224,7 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
|
||||
exportEntities.add(new ExcelExportEntity("联系电话", "mobile", 20));
|
||||
// exportEntities.add(new ExcelExportEntity("身份证号", "idCard", 30));
|
||||
exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20));
|
||||
exportEntities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
|
||||
exportEntities.add(new ExcelExportEntity("编制类别", "preparedBy", 20));
|
||||
exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
|
||||
exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 30));
|
||||
@@ -255,26 +242,58 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
|
||||
public void exportMember(MemberInfoPageForm pageForm, HttpServletResponse response) {
|
||||
Sql sql = getSql(pageForm);
|
||||
List<NutMap> list = listMap(sql);
|
||||
Workbook workbook = setHistoryExcelData(list);
|
||||
for (NutMap row : list) {
|
||||
row.put("mobile", DesensitizedUtil.mobilePhone(row.getString("mobile")));
|
||||
row.put("idCard",DesensitizedUtil.idCardNum(row.getString("idCard"), 3, 4));
|
||||
}
|
||||
|
||||
Workbook workbook = null;
|
||||
if (Lang.isNotEmpty(pageForm.getColumns())) {
|
||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||
|
||||
pageForm.getColumns().forEach(column -> {
|
||||
exportEntities.add(new ExcelExportEntity(column.get("label"), column.get("prop"), 20));
|
||||
});
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
|
||||
workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
||||
} else {
|
||||
workbook = setHistoryExcelData(list);
|
||||
}
|
||||
|
||||
CommonDownloadUtil.download("会员档案表.xlsx", workbook, response);
|
||||
}
|
||||
|
||||
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@Override
|
||||
public NutMap handlingMemberImport(TempFile file) {
|
||||
public NutMap handlingMemberImport(TempFile file, Boolean isFlag) {
|
||||
Sys_role memberRole = dao().fetch(Sys_role.class, Cnd.where("`code`", "=", RoleConstant.MEMBER.name()));
|
||||
Sys_role publicRole = dao().fetch(Sys_role.class, Cnd.where("`code`", "=", RoleConstant.PUBLIC.name()));
|
||||
|
||||
List<T> ts = EasyExcelUtil.syncReadModel(file.getFile(), MemberImportVo.class, 0, 1);
|
||||
List<MemberImportVo> list = JSONUtil.parseArray(JSONUtil.toJsonStr(ts)).toList(MemberImportVo.class);
|
||||
|
||||
// 如果flag为true,文件里面没有但是系统里面有的会员,需要清空
|
||||
if (isFlag) {
|
||||
List<String> loginNameList = list.stream().map(MemberImportVo::getLoginname).toList();
|
||||
Sql sql = Sqls.create("select id from sys_user where member = 1 and loginname not in (@loginNameList)").setParam("loginNameList", loginNameList);
|
||||
sql.setCallback(Sqls.callback.strList());
|
||||
dao().execute(sql);
|
||||
List<String> userIds = sql.getList(String.class);
|
||||
if (Lang.isNotEmpty(userIds)) {
|
||||
dao().clear(Sys_user_role.class, Cnd.where("userId", "in", userIds).and("roleId", "=", memberRole.getId()));
|
||||
dao().update(Sys_user.class, Chain.make("member", false), Cnd.where("id", "in", userIds));
|
||||
}
|
||||
}
|
||||
|
||||
// 获取系统用户
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(),RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("unionId","=",SecurityUtil.getUnionId());
|
||||
}
|
||||
List<Sys_user> dataUserList = dao().query(Sys_user.class, cnd);
|
||||
Map<String, Sys_user> userMap = dataUserList.stream().collect(Collectors.toMap(Sys_user::getLoginname, v -> v));
|
||||
|
||||
List<Sys_unit> unitList = dao().query(Sys_unit.class, Cnd.where("unitLevel", "is not", null).and("unitLevel", "!=", "").groupBy("name"));
|
||||
List<Sys_unit> unitList = dao().query(Sys_unit.class, Cnd.where("unitTypeCode", "=", "1").groupBy("name"));
|
||||
|
||||
//单位名称,单位Id
|
||||
Map<String, String> unitNameLevelTwoMap = unitList.stream().filter(v -> v.getUnitLevel() == 2).collect(Collectors.toMap(Sys_unit::getName, Sys_unit::getId));
|
||||
@@ -360,9 +379,6 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
|
||||
if (Lang.isNotEmpty(insertOrUpdateUserList)) {
|
||||
manyAddOrRenewUtil.asyncExecuteInsertOrUpdate(insertOrUpdateUserList,200);
|
||||
|
||||
Sys_role memberRole = dao().fetch(Sys_role.class, Cnd.where("`code`", "=", RoleConstant.MEMBER.name()));
|
||||
Sys_role publicRole = dao().fetch(Sys_role.class, Cnd.where("`code`", "=", RoleConstant.PUBLIC.name()));
|
||||
|
||||
dao().clear(Sys_user_role.class, Cnd.where("roleId","=", memberRole.getId()));
|
||||
|
||||
//新增用户赋值普通角色
|
||||
@@ -372,7 +388,7 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
|
||||
newUserSql.setCallback(Sqls.callback.maps());
|
||||
dao().execute(newUserSql);
|
||||
List<NutMap> newUserSqlList = newUserSql.getList(NutMap.class);
|
||||
List<String> newUserIds = newUserSqlList.stream().map(user -> user.getString("id")).collect(Collectors.toList());
|
||||
List<String> newUserIds = newUserSqlList.stream().map(user -> user.getString("id")).toList();
|
||||
|
||||
List<Sys_user_role> newUserRoles = newUserIds.stream().map(userId -> {
|
||||
Sys_user_role sysUserRole = new Sys_user_role();
|
||||
|
||||
+1
-1
@@ -143,7 +143,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
|
||||
his.loginname,
|
||||
his.username,
|
||||
his.mobile,
|
||||
his.birthday,
|
||||
DATE_FORMAT(his.birthday, '%Y-%m-%d') AS birthday,
|
||||
his.userState,
|
||||
his.preparedBy,
|
||||
his.personType,
|
||||
|
||||
+16
-7
@@ -85,6 +85,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
}
|
||||
|
||||
try {
|
||||
handleField("id", pageForm.getUserIds(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("unionId", pageForm.getUnionId(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("unitId", pageForm.getUnitId(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
handleField("personType", pageForm.getPersonTypes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
@@ -120,21 +121,27 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
u.loginname,
|
||||
u.username,
|
||||
u.sex,
|
||||
u.birthday,
|
||||
DATE_FORMAT(u.birthday, '%Y-%m-%d') AS birthday,
|
||||
u.political,
|
||||
u.joinPartyDate,
|
||||
DATE_FORMAT(u.joinPartyDate, '%Y-%m-%d') AS joinPartyDate,
|
||||
u.nation,
|
||||
u.nativePlace,
|
||||
u.nationality,
|
||||
u.idCardType,
|
||||
u.mobile,
|
||||
u.idCard,
|
||||
u.marriage,
|
||||
u.education,
|
||||
u.academicDegree,
|
||||
u.technicalTitle,
|
||||
u.technicalTitleLevel,
|
||||
u.position,
|
||||
u.jobCategory,
|
||||
u.professionalTitle,
|
||||
u.professionalLevel,
|
||||
u.employeeSource,
|
||||
u.administrativeLevel,
|
||||
u.positionSeries,
|
||||
u.positionLevel,
|
||||
u.employeeLevel,
|
||||
u.administrativePositionLevel,
|
||||
u.arrivalAtSchoolDate,
|
||||
u.personType,
|
||||
u.preparedBy,
|
||||
@@ -142,8 +149,10 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
u.userState,
|
||||
u.unionName,
|
||||
u.unitName,
|
||||
DATE_FORMAT(u.teachingTime, '%Y-%m-%d') AS teachingTime,
|
||||
DATE_FORMAT(u.expectedLeaveSchoolDate, '%Y-%m-%d') AS expectedLeaveSchoolDate,
|
||||
u.member,
|
||||
u.postDoctoralJoinDate
|
||||
DATE_FORMAT(u.postDoctoralJoinDate, '%Y-%m-%d') AS postDoctoralJoinDate
|
||||
FROM
|
||||
$table
|
||||
$hisUser
|
||||
@@ -188,7 +197,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
}
|
||||
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("u.unionId", "in", SecurityUtil.getUnionId());
|
||||
cnd.and("u.unionId", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
// cnd.desc("u.unitId");
|
||||
cnd.desc("u.unionName,u.id");
|
||||
|
||||
+2
-4
@@ -109,7 +109,7 @@ public class SpecialStaffManageController {
|
||||
BeanUtil.copyProperties(specialStaffVo, staff);
|
||||
if (specialStaffVo.getIsManyUnit()!=null && specialStaffVo.getIsManyUnit()) {
|
||||
// 如果是多单位人员, 更改单位为工会关系
|
||||
// user.setUnitid(specialStaffVo.getUnionRelationUnitId());
|
||||
user.setUnitId(specialStaffVo.getUnionRelationUnitId());
|
||||
// user.setThreeUnitId(specialStaffVo.getUnionRelationThreeUnitId());
|
||||
// user.setIsManyUnit(true);
|
||||
dao.updateIgnoreNull(user);
|
||||
@@ -136,9 +136,7 @@ public class SpecialStaffManageController {
|
||||
public Result removeSpecialStaff(@Valid String userId) {
|
||||
SpecialStaff staff = dao.fetch(SpecialStaff.class, Cnd.where("userId", "=", userId));
|
||||
if (staff.getIsManyUnit()) {
|
||||
dao.update(Sys_user.class, Chain.make("unitId", staff.getPersonnelRelationUnitId())
|
||||
.add("threeUnitId", staff.getPersonnelRelationThreeUnitId())
|
||||
.add("isManyUnit", null), Cnd.where("id", "=", userId));
|
||||
dao.update(Sys_user.class, Chain.make("unitId", staff.getPersonnelRelationUnitId()), Cnd.where("id", "=", userId));
|
||||
SysUserPublisher.notify(SysUserEvent.builder().userId(userId).memberChangeType(MemberChangeType.UNIT_CHANGE).build());
|
||||
}
|
||||
dao.clear(SpecialStaff.class, Cnd.where("userId", "=", userId));
|
||||
|
||||
+3
-7
@@ -88,13 +88,9 @@ public class SpecialStaffManageServiceImpl extends BaseServiceImpl<SpecialStaff>
|
||||
id AS userId,
|
||||
username,
|
||||
loginname,
|
||||
unitid AS personnelRelationUnitId,
|
||||
unitname AS personnelRelationUnitName,
|
||||
unionname AS personnelRelationUnionName,
|
||||
threeUnitId AS personnelRelationThreeUnitId,
|
||||
threeUnitName AS personnelRelationThreeUnitName,
|
||||
unionGroupId AS personnelRelationUnionGroupId,
|
||||
unionGroupName AS personnelRelationUnionGroupName,
|
||||
unitId AS personnelRelationUnitId,
|
||||
unitName AS personnelRelationUnitName,
|
||||
unionName AS personnelRelationUnionName,
|
||||
userState,
|
||||
personType,
|
||||
mobile
|
||||
|
||||
@@ -73,7 +73,7 @@ public class WelfareList extends BaseModel{
|
||||
private String userState;
|
||||
|
||||
@Column
|
||||
@Comment("聘用方式")
|
||||
@Comment("编制类别")
|
||||
@ColDefine(type = ColType.VARCHAR)
|
||||
private String preparedBy;
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ public class WelfareFilterUserPageForm extends PageForm {
|
||||
@ApiModelProperty("人员类型")
|
||||
private String[] personTypes;
|
||||
|
||||
@ApiModelProperty("聘用方式")
|
||||
@ApiModelProperty("编制类别")
|
||||
private String[] preparedBys;
|
||||
|
||||
@ApiModelProperty("在职状态")
|
||||
|
||||
@@ -49,7 +49,7 @@ public class WelfareListPageForm extends PageForm {
|
||||
@ApiModelProperty("人员类型")
|
||||
private String[] personTypes;
|
||||
|
||||
@ApiModelProperty("聘用方式")
|
||||
@ApiModelProperty("编制类别")
|
||||
private String[] preparedBys;
|
||||
|
||||
@ApiModelProperty("在职状态")
|
||||
|
||||
@@ -598,7 +598,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
|
||||
entities.add(new ExcelExportEntity("性别", "sex", 20));
|
||||
entities.add(new ExcelExportEntity("出生日期", "birthday", 20));
|
||||
entities.add(new ExcelExportEntity("人员类型", "personType", 20));
|
||||
entities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
|
||||
entities.add(new ExcelExportEntity("编制类别", "preparedBy", 20));
|
||||
entities.add(new ExcelExportEntity("在职状态", "userState", 20));
|
||||
entities.add(new ExcelExportEntity("所属工会", "welfareUnionName", 20));
|
||||
entities.add(new ExcelExportEntity("所属单位", "welfareUnitName", 20));
|
||||
|
||||
+1
-1
@@ -201,7 +201,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
|
||||
entities.add(new ExcelExportEntity("生日", "birthday", 20));
|
||||
entities.add(new ExcelExportEntity("在职状态", "userState", 20));
|
||||
entities.add(new ExcelExportEntity("教职工类别", "personType", 20));
|
||||
entities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
|
||||
entities.add(new ExcelExportEntity("编制类别", "preparedBy", 20));
|
||||
entities.add(new ExcelExportEntity("进站时间", "postDoctoralJoinDate", 20));
|
||||
entities.add(new ExcelExportEntity("单位", "welfareUnitName", 20));
|
||||
entities.add(new ExcelExportEntity("工会", "welfareUnionName", 20));
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
{{ viewData.arrivalAtSchoolDate ? $moment(viewData.arrivalAtSchoolDate).format("YYYY-MM-DD") : null }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份类别">{{ viewData.identityType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="聘用方式">{{ viewData.preparedBy }}</el-descriptions-item>
|
||||
<el-descriptions-item label="编制类别">{{ viewData.preparedBy }}</el-descriptions-item>
|
||||
<el-descriptions-item label="教职工类别">{{ viewData.personType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="在职状态">{{ viewData.userState }}</el-descriptions-item>
|
||||
<el-descriptions-item label="预计离退休时间">
|
||||
|
||||
@@ -128,7 +128,8 @@ module.exports = {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: "正在导入中,请稍后...",
|
||||
spinner: "el-icon-loading"
|
||||
spinner: "el-icon-loading",
|
||||
background: "rgba(0, 0, 0, 0.7)"
|
||||
})
|
||||
this.$axios.post(this.post_url, data).then((res) => {
|
||||
loading.close()
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "loginName", label: "工号", sortable: true },
|
||||
{ prop: "userName", label: "姓名", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
|
||||
@@ -85,7 +85,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "loginName", label: "工号", sortable: true },
|
||||
{ prop: "userName", label: "姓名", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "loginName", label: "工号", sortable: true },
|
||||
{ prop: "userName", label: "姓名", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
|
||||
+3
-3
@@ -42,8 +42,8 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="在职状态">
|
||||
<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>
|
||||
<search-item label="编制类别">
|
||||
<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>
|
||||
@@ -245,7 +245,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "username", label: "姓名", sortable: true },
|
||||
{ prop: "sex", label: "性别", sortable: true, width: "100px" },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
// {prop: "preparedBy", label: "聘用方式", sortable: true},
|
||||
// {prop: "preparedBy", label: "编制类别", sortable: true},
|
||||
// {prop: 'personType', label: '人员类型', sortable: true},
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
|
||||
@@ -32,6 +32,7 @@ const COMMON_QUERY = {
|
||||
</search-item>
|
||||
</search>
|
||||
`,
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return{
|
||||
|
||||
@@ -50,28 +50,30 @@ const INFO = {
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item></el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="家庭主要成员" :span="3">
|
||||
<el-table v-if="viewData.families&&viewData.families.length"
|
||||
:data="viewData.families" size="mini" border
|
||||
:header-cell-style="{background:'#eff3f6'}"
|
||||
style="width: 100%">
|
||||
<el-table-column prop="relation" label="与本人关系" align="center"
|
||||
header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="unit" label="单位" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="个人简况" :span="3">
|
||||
<template slot="label">个人简况</template>
|
||||
<div v-if="viewData.vita" class="text-left" v-html="viewData.vita"></div>
|
||||
<span v-else>无数据</span>
|
||||
</el-descriptions-item>
|
||||
<template v-if="viewData.loginname == $store.state.user.loginname">
|
||||
<el-descriptions-item label="家庭主要成员" :span="3">
|
||||
<el-table v-if="viewData.families&&viewData.families.length"
|
||||
:data="viewData.families" size="mini" border
|
||||
:header-cell-style="{background:'#eff3f6'}"
|
||||
style="width: 100%">
|
||||
<el-table-column prop="relation" label="与本人关系" align="center"
|
||||
header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="unit" label="单位" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" header-align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="个人简况" :span="3">
|
||||
<template slot="label">个人简况</template>
|
||||
<div v-if="viewData.personalData" class="text-left" v-html="viewData.personalData"></div>
|
||||
<span v-else>无数据</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="变更信息" name="changeInfo" v-if="viewData.changeInfos">
|
||||
|
||||
+1
-1
@@ -139,7 +139,7 @@ const MEMBER_CHANGE = {
|
||||
:disabled="allowFields('userState')" style="width: 100%"></dict-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="编制类型">
|
||||
<el-descriptions-item label="编制类别">
|
||||
<el-form-item prop="preparedBy">
|
||||
<dict-select v-model="formData.preparedBy" code="USER_PREPARED_BY_TYPE"
|
||||
:disabled="allowFields('preparedBy')" style="width: 100%"></dict-select>
|
||||
|
||||
@@ -255,11 +255,15 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
|
||||
async doSubmit(data) {
|
||||
const resp = this.$axios.post("/platform/member/change/manage/doSubmitChange", data)
|
||||
const loading = createLoading('正在提交中')
|
||||
const resp = await this.$axios.post("/platform/member/change/manage/doSubmitChange", data)
|
||||
loading.close()
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.$refs.guava.index()
|
||||
this.pageData()
|
||||
} else {
|
||||
this.$message.error(resp.msg)
|
||||
}
|
||||
},
|
||||
getChangeTypes(changeTypes){
|
||||
|
||||
@@ -62,7 +62,7 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="异动信息" header-align="center">
|
||||
<el-table-column label="更新时间" prop="applyDateTime" min-width="145px"
|
||||
<el-table-column label="更新时间" prop="changeTime" min-width="130px"
|
||||
header-align="center"
|
||||
sortable
|
||||
align="center" show-overflow-tooltip>
|
||||
@@ -88,7 +88,7 @@ layout("/layouts/platform.html"){
|
||||
label="操作"
|
||||
width="100px" fixed="right">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openView(row.userId)">查看</el-button>
|
||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
+2
-2
@@ -27,8 +27,8 @@ const MEMBER_MANAGE_QUERY = {
|
||||
<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"
|
||||
<search-item label="编制类别">
|
||||
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
|
||||
+1
-1
@@ -154,7 +154,7 @@ const MEMBER_MANAGE_TABLE = {
|
||||
{ prop: "sex", label: "性别", sortable: true, width: "100px" },
|
||||
{ prop: "birthday", label: "出生年月", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true }
|
||||
|
||||
+60
-10
@@ -8,8 +8,14 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="非会员列表"></table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
|
||||
<table-tool label="非会员列表">
|
||||
<el-button @click="doExport" size="mini" type="primary">导出</el-button>
|
||||
<el-button :disabled="!selection || selection.length == 0"
|
||||
@click="batchMake" size="mini" type="primary">批量设置为会员</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table"
|
||||
row-key="id" @selection-change="handleSelectionChange" style="width: 100%">
|
||||
<el-table-column :reserve-selection="true" type="selection" width="55"></el-table-column>
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center"
|
||||
label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column :label="column.label"
|
||||
@@ -30,6 +36,10 @@ layout("/layouts/platform.html"){
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<member-info ref="memberInfo"></member-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
@@ -44,29 +54,69 @@ layout("/layouts/platform.html"){
|
||||
return {
|
||||
pageForm: {},
|
||||
tableColumns: [
|
||||
{ prop: "loginName", label: "工号", sortable: true },
|
||||
{ prop: "userName", label: "姓名", sortable: true },
|
||||
{ prop: "loginname", label: "工号", sortable: true },
|
||||
{ prop: "username", label: "姓名", sortable: true },
|
||||
{ prop: "sex", label: "性别", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类型", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
]
|
||||
],
|
||||
|
||||
selection: [],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"common-query": COMMON_QUERY,
|
||||
"member-info": MEMBER_INFO
|
||||
},
|
||||
methods: {
|
||||
// 查看会员
|
||||
openView() {
|
||||
|
||||
// 查看信息
|
||||
openView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.memberInfo.onOpen(row.id)
|
||||
})
|
||||
},
|
||||
// 单个设置会员
|
||||
singleMake(row) {
|
||||
|
||||
const data = [row.id]
|
||||
const msg = "确定将【" + row.username + "】设置为会员吗?"
|
||||
this.setMemberFun(msg, data)
|
||||
},
|
||||
// 批量设置会员
|
||||
batchMake() {
|
||||
const msg = "确定将【" + this.selection.length + "】条数据设置为会员吗?"
|
||||
const data = this.selection.map(item => item.id)
|
||||
this.setMemberFun(msg, data)
|
||||
},
|
||||
setMemberFun(msg, data) {
|
||||
this.$confirm(msg, "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(async () => {
|
||||
debugger
|
||||
const loading = createLoading('正在提交中')
|
||||
const resp = await this.$axios.post("/platform/member/info/batchMake/batchMake", {
|
||||
userIds: JSON.stringify(data)
|
||||
})
|
||||
loading.close()
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.pageData()
|
||||
this.selection = []
|
||||
this.$refs.table.clearSelection()
|
||||
} else {
|
||||
this.$message.error(resp.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
doExport() {
|
||||
|
||||
},
|
||||
handleSelectionChange(val){
|
||||
this.selection = val;
|
||||
},
|
||||
search(pageForm) {
|
||||
if (pageForm) {
|
||||
|
||||
+10
-4
@@ -18,20 +18,26 @@ const COMMON_QUERY = {
|
||||
v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="在职状态">
|
||||
<search-item label="在职状态" v-if="!query_disable">
|
||||
<dict-select v-model="pageForm.userStates" placeholder="在职状态" @change="doSearch"
|
||||
code="USER_STATE" multiple collapse-tags></dict-select>
|
||||
code="USER_STATE" multiple collapse-tags></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人事编制">
|
||||
<dict-select v-model="pageForm.preparedBys" placeholder="人事编制" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
<search-item label="人员类型" v-if="!query_disable">
|
||||
<dict-select v-model="pageForm.personTypes" placeholder="人员类型" @change="doSearch"
|
||||
code="USER_PERSON_TYPE" multiple collapse-tags></dict-select>
|
||||
code="USER_PERSON_TYPE" multiple collapse-tags></dict-select>
|
||||
</search-item>
|
||||
</search>
|
||||
`,
|
||||
props: {
|
||||
query_disable: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return{
|
||||
|
||||
+2
-2
@@ -59,7 +59,7 @@ layout("/layouts/platform.html"){
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<common-query ref="commonQueryRef" @search="search"></common-query>
|
||||
<common-query ref="commonQueryRef" @search="search" query_disable></common-query>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
@@ -208,7 +208,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "sex", label: "性别", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类型", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
],
|
||||
|
||||
@@ -5,65 +5,7 @@ layout("/layouts/platform.html"){
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="姓名/工号">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会">
|
||||
<el-select
|
||||
@change="flushUnits"
|
||||
@clear="flushUnits"
|
||||
clearable
|
||||
filterable
|
||||
placeholder="所属工会"
|
||||
style="width: 100%"
|
||||
v-model="pageForm.unionId"
|
||||
>
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in unions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select clearable filterable placeholder="请选择" style="width: 100%" v-model="pageForm.unitId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="性别">
|
||||
<el-select v-model="pageForm.sexTypes" clearable multiple placeholder="性别">
|
||||
<el-option label="男" value="男"></el-option>
|
||||
<el-option label="女" value="女"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="在职状态">
|
||||
<dict-select
|
||||
clearable
|
||||
code="USER_STATE"
|
||||
multiple
|
||||
collapse-tags
|
||||
placeholder="请选择人员状态"
|
||||
v-model="pageForm.userStates"
|
||||
></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
<dict-select
|
||||
clearable
|
||||
code="USER_PERSON_TYPE"
|
||||
multiple
|
||||
collapse-tags
|
||||
placeholder="请选择人员类型"
|
||||
v-model="pageForm.personTypes"
|
||||
></dict-select>
|
||||
</search-item>
|
||||
<search-item label="聘用方式">
|
||||
<dict-select
|
||||
clearable
|
||||
code="USER_PREPARED_BY_TYPE"
|
||||
multiple
|
||||
collapse-tags
|
||||
placeholder="请选择聘用方式"
|
||||
v-model="pageForm.preparedBys"
|
||||
></dict-select>
|
||||
</search-item>
|
||||
</search>
|
||||
<common-query ref="commonQueryRef" @search="search"></common-query>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
@@ -79,6 +21,37 @@ layout("/layouts/platform.html"){
|
||||
备份历史会员
|
||||
</el-button>
|
||||
<el-button type="primary" size="small" icon="el-icon-download" @click="exportMember">会员档案导出</el-button>
|
||||
<el-popover
|
||||
placement="bottom"
|
||||
trigger="click"
|
||||
width="200">
|
||||
<!-- 点击外部/空白自动关闭,无需额外代码 -->
|
||||
|
||||
<div style="padding:4px 0;">
|
||||
<el-button type="text" size="mini" @click="checkAll">全选</el-button>
|
||||
<el-button type="text" size="mini" @click="invertCheck">反选</el-button>
|
||||
</div>
|
||||
|
||||
<el-checkbox-group v-model="checkedFields">
|
||||
<el-checkbox
|
||||
v-for="f in tableColumns"
|
||||
:key="f.prop"
|
||||
:label="f.prop"
|
||||
style="display:block;margin:6px 0;">
|
||||
{{ f.label }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
|
||||
<!-- 触发器:文字按钮 -->
|
||||
<el-button
|
||||
slot="reference"
|
||||
type="text"
|
||||
icon="el-icon-s-operation"
|
||||
size="small"
|
||||
style="margin-left:12px;">
|
||||
列设置
|
||||
</el-button>
|
||||
</el-popover>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder" :size="tableSize" class="vi-table">
|
||||
@@ -86,6 +59,7 @@ layout("/layouts/platform.html"){
|
||||
align="center"
|
||||
header-align="center"
|
||||
type="index"
|
||||
fixed="left"
|
||||
:index="indexMethod"
|
||||
label="序号"
|
||||
width="80px"
|
||||
@@ -95,7 +69,9 @@ layout("/layouts/platform.html"){
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
v-if="checkedFields.includes(column.prop)"
|
||||
:label="column.label"
|
||||
:fixed="column.fixed"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
@@ -113,7 +89,7 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<member-info ref="applyInfoRef"></member-info>
|
||||
<member-info ref="infoRef"></member-info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
@@ -122,6 +98,7 @@ layout("/layouts/platform.html"){
|
||||
<el-dialog title="会员导入" :visible.sync="importDialog" width="50%" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-import
|
||||
ref="viewImport"
|
||||
is_show_radio
|
||||
temp_url="/platform/member/info/group/downloadMemberTemplate"
|
||||
post_url="/platform/member/info/group/importMember"
|
||||
@flush="successImport"
|
||||
@@ -129,52 +106,57 @@ layout("/layouts/platform.html"){
|
||||
</el-dialog>
|
||||
</div>
|
||||
<script>
|
||||
<!--#include("archiveMember.js"){}#-->
|
||||
<!--#include("../common/commonQuery.js"){}#-->
|
||||
<!--#include("../../common/info/memberInfo.js"){}#-->
|
||||
<!--#include("archiveMember.js"){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
searchKeyword: "",
|
||||
unionId: "",
|
||||
unitId: "",
|
||||
personTypes: [],
|
||||
preparedBys: [],
|
||||
userStates: [],
|
||||
sexTypes: [],
|
||||
totalCount: 0,
|
||||
cnd: ""
|
||||
},
|
||||
userId: "",
|
||||
unions: [],
|
||||
units: [],
|
||||
tableColumns: [
|
||||
{ prop: "loginname", label: "工号" },
|
||||
{ prop: "username", label: "姓名" },
|
||||
{ prop: "sex", label: "性别" },
|
||||
{ prop: "birthday", label: "出生年月", sortable: true },
|
||||
{ prop: "mobile", label: "联系电话" },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true }
|
||||
],
|
||||
personTypeOptions: [],
|
||||
preparedByOptions: [],
|
||||
userStateOptions: [],
|
||||
pageForm: {},
|
||||
tableColumns: [
|
||||
{ prop: "loginname", label: "工号", width: 120, fixed: "left"},
|
||||
{ prop: "username", label: "姓名", width: 120, fixed: "left" },
|
||||
{ prop: "sex", label: "性别", width: 120},
|
||||
{ prop: "birthday", label: "出生年月", width: 120, sortable: true },
|
||||
{ prop: "nationality", label: "国籍", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "nation", label: "民族", width: 120, sortable: true},
|
||||
{ prop: "mobile", label: "联系电话", width: 120 },
|
||||
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||
{ prop: "personType", label: "教职工类别", width: 120, sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "jobCategory", label: "岗位类别", width: 120, sortable: true, checked: 0 },
|
||||
|
||||
{ prop: "professionalTitle", label: "职称", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "professionalLevel", label: "职级", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "employeeSource", label: "职工来源", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "administrativeLevel", label: "行政级别(管理岗位)", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "positionSeries", label: "岗位系列", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "positionLevel", label: "岗级", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "administrativePositionLevel", label: "行政岗级", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "arrivalAtSchoolDate", label: "来校时间", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "teachingTime", label: "从教年月", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "expectedLeaveSchoolDate", label: "预计/最后离校时间", width: 120, sortable: true, checked: 0 },
|
||||
],
|
||||
checkedFields: [],
|
||||
|
||||
importDialog: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"member-cnd": httpVueLoader("/components/module/member/MemberCnd.vue?v=" + new Date().getTime()),
|
||||
"file-import": httpVueLoader("/components/plugins/sysImport/index.vue?v=" + new Date().getTime()),
|
||||
"archive-member": ARCHIVE_MEMBER,
|
||||
"member-info": MEMBER_INFO
|
||||
"member-info": MEMBER_INFO,
|
||||
"common-query": COMMON_QUERY,
|
||||
},
|
||||
methods: {
|
||||
openImport() {
|
||||
@@ -182,12 +164,14 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
successImport() {
|
||||
this.importDialog = false
|
||||
this.pageData()
|
||||
},
|
||||
exportMember() {
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||
|
||||
this.$downLoad(loc() + "/exportMember", pageForm)
|
||||
},
|
||||
openArchive() {
|
||||
@@ -195,9 +179,16 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
openView(userId) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.applyInfoRef.onOpen(userId)
|
||||
this.$refs.infoRef.onOpen(userId)
|
||||
})
|
||||
},
|
||||
search(pageForm) {
|
||||
this.pageForm = {
|
||||
...this.pageForm,
|
||||
...pageForm,
|
||||
}
|
||||
this.pageData()
|
||||
},
|
||||
pageData() {
|
||||
this.tableLoading = true
|
||||
const pageForm = clone(this.pageForm)
|
||||
@@ -217,29 +208,23 @@ layout("/layouts/platform.html"){
|
||||
this.tableLoading = false
|
||||
})
|
||||
},
|
||||
async initData() {
|
||||
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
|
||||
this.unions = await this.$businessTool.listUnion(this.pageForm.unionId)
|
||||
this.units = await this.$businessTool.listUnit()
|
||||
} else {
|
||||
this.unions = await this.$businessTool.listUnion(store?.state.user.union.id)
|
||||
this.units = await this.$businessTool.listUnit(store?.state.user.union.id)
|
||||
}
|
||||
this.personTypeOptions = await this.$businessTool.getDictOptions("USER_STAFF_TYPE")
|
||||
this.preparedByOptions = await this.$businessTool.getDictOptions("USER_EMPLOYMENT_TYPE")
|
||||
this.userStateOptions = await this.$businessTool.getDictOptions("USER_STATE")
|
||||
},
|
||||
async flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", null)
|
||||
this.units = []
|
||||
if (this.pageForm.unionId) {
|
||||
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||
}
|
||||
}
|
||||
|
||||
checkAll() {
|
||||
this.checkedFields = this.tableColumns.map(c => c.prop);
|
||||
},
|
||||
invertCheck() {
|
||||
const all = this.tableColumns.map(c => c.prop);
|
||||
this.checkedFields = all.filter(p => !this.checkedFields.includes(p));
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
showColumns() {
|
||||
return this.tableColumns.filter(c => this.checkedFields.includes(c.prop));
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.checkedFields = this.tableColumns.filter(c => c.checked !== 0).map(c => c.prop);
|
||||
this.pageData()
|
||||
this.initData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -43,10 +43,10 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="在职状态">
|
||||
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="聘用方式">
|
||||
<search-item label="编制类别">
|
||||
<dict-select
|
||||
v-model="pageForm.preparedBy"
|
||||
placeholder="聘用方式"
|
||||
placeholder="编制类别"
|
||||
@change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE"
|
||||
></dict-select>
|
||||
@@ -120,7 +120,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "sex", label: "性别" },
|
||||
{ prop: "mobile", label: "联系电话" },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true }
|
||||
|
||||
+3
-3
@@ -19,8 +19,8 @@ const SCHOOL_VIEW_AND_HANDLE = {
|
||||
<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"
|
||||
<search-item label="编制类别">
|
||||
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
@@ -140,7 +140,7 @@ const SCHOOL_VIEW_AND_HANDLE = {
|
||||
{ label: "工号", prop: "loginname" },
|
||||
{ label: "性别", prop: "sex" },
|
||||
{ label: "在职状态", prop: "userState" },
|
||||
{ label: "聘用方式", prop: "preparedBy" },
|
||||
{ label: "编制类别", prop: "preparedBy" },
|
||||
{ label: "人员类型", prop: "personType" },
|
||||
{ label: "所属单位", prop: "unitName" },
|
||||
{ label: "是否变更", prop: "isChanged" },
|
||||
|
||||
+3
-3
@@ -17,8 +17,8 @@ const VIEW_CHANGE_TYPE_USER = {
|
||||
<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"
|
||||
<search-item label="编制类别">
|
||||
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
@@ -76,7 +76,7 @@ const VIEW_CHANGE_TYPE_USER = {
|
||||
{ prop: "loginname", label: "工号", sortable: true },
|
||||
{ prop: "username", label: "姓名", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
|
||||
+2
-2
@@ -32,8 +32,8 @@ const VERIFICATION_SET_USER_LIST = {
|
||||
<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"
|
||||
<search-item label="编制类别">
|
||||
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="变更类型">
|
||||
|
||||
+3
-3
@@ -26,8 +26,8 @@ const VERIFICATION_SHOW_SELECTION_USERS = {
|
||||
<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"
|
||||
<search-item label="编制类别">
|
||||
<dict-select v-model="pageForm.preparedBy" placeholder="编制类别" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员类型">
|
||||
@@ -43,7 +43,7 @@ const VERIFICATION_SHOW_SELECTION_USERS = {
|
||||
<el-table-column label="姓名" prop="username"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="在职状态" prop="userState"></el-table-column>
|
||||
<el-table-column label="聘用方式" prop="preparedBy"></el-table-column>
|
||||
<el-table-column label="编制类别" prop="preparedBy"></el-table-column>
|
||||
<el-table-column label="人员类型" prop="personType"></el-table-column>
|
||||
<el-table-column label="所属工会" prop="unionName"></el-table-column>
|
||||
<el-table-column label="所属单位" prop="unitName"></el-table-column>
|
||||
|
||||
+85
-11
@@ -47,7 +47,39 @@ layout("/layouts/platform.html"){
|
||||
<el-option label="无工会" value="false"></el-option>
|
||||
</el-select>
|
||||
|
||||
<el-button icon="el-icon-printer" type="primary" style="float: right" size="small" @click="doExport">导出</el-button>
|
||||
<el-button icon="el-icon-printer" type="primary" size="small" @click="doExport">导出</el-button>
|
||||
|
||||
<el-popover
|
||||
placement="bottom"
|
||||
trigger="click"
|
||||
width="200">
|
||||
<!-- 点击外部/空白自动关闭,无需额外代码 -->
|
||||
|
||||
<div style="padding:4px 0;">
|
||||
<el-button type="text" size="mini" @click="checkAll">全选</el-button>
|
||||
<el-button type="text" size="mini" @click="invertCheck">反选</el-button>
|
||||
</div>
|
||||
|
||||
<el-checkbox-group v-model="checkedFields">
|
||||
<el-checkbox
|
||||
v-for="f in tableColumns"
|
||||
:key="f.prop"
|
||||
:label="f.prop"
|
||||
style="display:block;margin:6px 0;">
|
||||
{{ f.label }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
|
||||
<!-- 触发器:文字按钮 -->
|
||||
<el-button
|
||||
slot="reference"
|
||||
type="text"
|
||||
icon="el-icon-s-operation"
|
||||
size="small"
|
||||
style="margin-left:12px;">
|
||||
列设置
|
||||
</el-button>
|
||||
</el-popover>
|
||||
</table-tool>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@@ -62,6 +94,7 @@ layout("/layouts/platform.html"){
|
||||
align="center"
|
||||
header-align="center"
|
||||
type="index"
|
||||
fixed="left"
|
||||
:index="indexMethod"
|
||||
label="序号"
|
||||
width="80px"
|
||||
@@ -71,9 +104,11 @@ layout("/layouts/platform.html"){
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
show-overflow-tooltip
|
||||
v-if="checkedFields.includes(column.prop)"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:width="column.width"
|
||||
:fixed="column.fixed"
|
||||
:sortable="column.sortable"
|
||||
>
|
||||
<template v-if="column.prop==='memberJoinTime'" scope="{row}">{{$moment(row.memberJoinTime).format('YYYY-MM-DD')}}</template>
|
||||
@@ -83,7 +118,7 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="操作" width="100px">
|
||||
<el-table-column align="center" header-align="center" label="操作" width="100px" fixed="right">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" @click="openView(row.id)" type="primary">查看</el-button>
|
||||
</template>
|
||||
@@ -114,20 +149,38 @@ layout("/layouts/platform.html"){
|
||||
units: [],
|
||||
childrenData: {},
|
||||
tableColumns: [
|
||||
{ prop: "loginname", label: "工号", fixed: "left" },
|
||||
{ prop: "username", label: "姓名", fixed: "left" },
|
||||
{ prop: "sex", label: "性别" },
|
||||
{ prop: "loginname", label: "工号", width: 120, fixed: "left"},
|
||||
{ prop: "username", label: "姓名", width: 120, fixed: "left" },
|
||||
{ prop: "sex", label: "性别", width: 120},
|
||||
{ prop: "birthday", label: "出生年月", width: 120, sortable: true },
|
||||
{ prop: "mobile", label: "联系电话" },
|
||||
{ prop: "nationality", label: "国籍", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "nation", label: "民族", width: 120, sortable: true},
|
||||
{ prop: "mobile", label: "联系电话", width: 120 },
|
||||
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||
{ prop: "personType", label: "教职工类别", width: 120, sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", width: 120, sortable: true },
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true },
|
||||
{ prop: "identityType", label: "身份类型", width: 120, sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||
{ prop: "arrivalAtSchoolDate", label: "来校年月", width: 120, sortable: true }
|
||||
]
|
||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "jobCategory", label: "岗位类别", width: 120, sortable: true, checked: 0 },
|
||||
|
||||
{ prop: "professionalTitle", label: "职称", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "professionalLevel", label: "职级", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "employeeSource", label: "职工来源", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "administrativeLevel", label: "行政级别(管理岗位)", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "positionSeries", label: "岗位系列", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "positionLevel", label: "岗级", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "administrativePositionLevel", label: "行政岗级", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "arrivalAtSchoolDate", label: "来校时间", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "teachingTime", label: "从教年月", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "expectedLeaveSchoolDate", label: "预计/最后离校时间", width: 120, sortable: true, checked: 0 },
|
||||
],
|
||||
|
||||
checkedFields: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
@@ -142,12 +195,17 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
doExport() {
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.userIds = JSON.stringify(this.pageForm.userIds)
|
||||
pageForm.unionId = JSON.stringify(this.pageForm.unionId)
|
||||
pageForm.unitId = JSON.stringify(this.pageForm.unitId)
|
||||
pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes)
|
||||
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
const data = this.tableColumns.filter(item => this.checkedFields.includes(item.prop)).map(item => {
|
||||
return {prop: item.prop, label: item.label}
|
||||
})
|
||||
pageForm.columns = JSON.stringify(data)
|
||||
this.$downLoad("/platform/member/statistics/comprehensive/doExport", pageForm)
|
||||
},
|
||||
search(pageForm) {
|
||||
@@ -159,6 +217,7 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
pageData() {
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.userIds = JSON.stringify(this.pageForm.userIds)
|
||||
pageForm.age = JSON.stringify(this.pageForm.age)
|
||||
pageForm.unionId = JSON.stringify(this.pageForm.unionId)
|
||||
pageForm.unitId = JSON.stringify(this.pageForm.unitId)
|
||||
@@ -188,7 +247,22 @@ layout("/layouts/platform.html"){
|
||||
this.$message.error(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
checkAll() {
|
||||
this.checkedFields = this.tableColumns.map(c => c.prop);
|
||||
},
|
||||
invertCheck() {
|
||||
const all = this.tableColumns.map(c => c.prop);
|
||||
this.checkedFields = all.filter(p => !this.checkedFields.includes(p));
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
showColumns() {
|
||||
return this.tableColumns.filter(c => this.checkedFields.includes(c.prop));
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.checkedFields = this.tableColumns.filter(c => c.checked !== 0).map(c => c.prop);
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
+73
-73
@@ -1,59 +1,27 @@
|
||||
const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
template: /*language=HTML*/ `
|
||||
<el-card shadow="never">
|
||||
<el-row type="flex" align="middle" class="query-row">
|
||||
<el-col class="query-row-title">年  度:</el-col>
|
||||
<el-col class="query-row-content" :span="12">
|
||||
<el-row style="margin-left: 3px">
|
||||
<el-date-picker @change="doSearch()"
|
||||
style="width: 85%"
|
||||
:picker-options="pickerOptions"
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="选择年" :clearable="false">
|
||||
</el-date-picker>
|
||||
<el-link type="primary" style="margin-left: 10px"
|
||||
:underline="false"
|
||||
@click="setNowYear();doSearch()">
|
||||
本年
|
||||
</el-link>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-row class="query-row">
|
||||
<el-col class="query-row-title">姓名/工号:</el-col>
|
||||
<el-col class="query-row-content" :span="12">
|
||||
<el-row style="width: 92%">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row type="flex" align="middle" class="query-row">
|
||||
<el-col class="query-row-content">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<span>所属工会:</span>
|
||||
<el-select placeholder="所属工会" v-model="pageForm.unionId"
|
||||
clearable multiple style="margin-left: 33px;width: 80%"
|
||||
@change="flushUnits();doSearch()"
|
||||
@clear="flushUnits();doSearch()"
|
||||
filterable>
|
||||
<el-option v-for="item in unions" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<span>所属单位:</span>
|
||||
<el-select placeholder="所属单位" v-model="pageForm.unitId"
|
||||
clearable multiple style="margin-left: 33px;width: 80%" filterable>
|
||||
<el-option v-for="item in units" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-select
|
||||
clearable
|
||||
v-model="pageForm.userIds"
|
||||
filterable
|
||||
remote
|
||||
collapse-tags
|
||||
placeholder="输入工号或者姓名查找"
|
||||
:remote-method="queryUser"
|
||||
@change="doSearch"
|
||||
style="width: 100%"
|
||||
multiple
|
||||
>
|
||||
<el-option v-for="o in userList" :label="o.username + '(' + o.loginname + ')'" :value="o.id"
|
||||
:key="o.id"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row class="query-row">
|
||||
<el-col class="query-row-title">性别:</el-col>
|
||||
<el-col class="query-row-content">
|
||||
@@ -69,6 +37,31 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-col class="query-row-title">在职状态:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
style="margin-right: 10px;cursor: pointer"
|
||||
v-for="item in userStateOptions"
|
||||
:key="item.code"
|
||||
:type="item.name"
|
||||
:effect="pageForm.userStates.includes(item.name)?'dark':'plain'"
|
||||
@click="tagClick('userStates',item.name)">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
|
||||
<el-link type="danger"
|
||||
v-if="userStateOptions.length&&pageForm.userStates.length"
|
||||
:underline="false"
|
||||
@click="pageForm.userStates=[];doSearch()">清空
|
||||
</el-link>
|
||||
<el-link :underline="false"
|
||||
@click="pageForm.userStates=userStateOptions.map(p=>p.code);doSearch()"
|
||||
type="success">全部
|
||||
</el-link>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-col class="query-row-title">人员类型:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
@@ -119,31 +112,32 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-col class="query-row-title">在职状态:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
style="margin-right: 10px;cursor: pointer"
|
||||
v-for="item in userStateOptions"
|
||||
:key="item.code"
|
||||
:type="item.name"
|
||||
:effect="pageForm.userStates.includes(item.name)?'dark':'plain'"
|
||||
@click="tagClick('userStates',item.name)">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
|
||||
<el-link type="danger"
|
||||
v-if="userStateOptions.length&&pageForm.userStates.length"
|
||||
:underline="false"
|
||||
@click="pageForm.userStates=[];doSearch()">清空
|
||||
</el-link>
|
||||
<el-link :underline="false"
|
||||
@click="pageForm.userStates=userStateOptions.map(p=>p.code);doSearch()"
|
||||
type="success">全部
|
||||
</el-link>
|
||||
<el-row type="flex" align="middle" class="query-row">
|
||||
<el-col class="query-row-content">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<span>所属工会:</span>
|
||||
<el-select placeholder="所属工会" v-model="pageForm.unionId"
|
||||
clearable multiple style="margin-left: 38px;width: 80%"
|
||||
@change="flushUnits();doSearch()"
|
||||
@clear="flushUnits();doSearch()"
|
||||
filterable>
|
||||
<el-option v-for="item in unions" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<span>所属单位:</span>
|
||||
<el-select placeholder="所属单位" v-model="pageForm.unitId"
|
||||
clearable multiple style="margin-left: 33px;width: 80%" filterable>
|
||||
<el-option v-for="item in units" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row class="query-row" type="flex" align="middle">
|
||||
<el-col class="query-row-title">出生日期:</el-col>
|
||||
<el-col class="query-row-content">
|
||||
@@ -202,7 +196,9 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
store,
|
||||
data() {
|
||||
return {
|
||||
userList: [],
|
||||
pageForm: {
|
||||
userIds: [],
|
||||
isUnit: "",
|
||||
isUnion: "",
|
||||
unionId: [],
|
||||
@@ -247,6 +243,10 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
"member-cnd": httpVueLoader("/components/module/member/MemberCnd.vue?v=" + new Date().getTime())
|
||||
},
|
||||
methods: {
|
||||
async queryUser(val) {
|
||||
const resp = await $.get("/open/common/userOptions", {query: val})
|
||||
this.userList = resp.data
|
||||
},
|
||||
determineEndDate() {
|
||||
if (this.pageForm.startDate) {
|
||||
if (Date.parse(this.pageForm.startDate) > Date.parse(this.pageForm.endDate)) {
|
||||
@@ -310,7 +310,7 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
this.doSearch()
|
||||
},
|
||||
doReset() {
|
||||
this.pageForm.userId = []
|
||||
this.pageForm.userIds = []
|
||||
this.pageForm.memberTypes = []
|
||||
this.pageForm.sexTypes = []
|
||||
this.pageForm.personTypes = []
|
||||
|
||||
@@ -133,20 +133,7 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-if="isThreeUnit">
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属科室(人事关系)" prop="personnelRelationThreeUnitName">
|
||||
<el-input v-model="formData.personnelRelationThreeUnitName" placeholder="请输入工号或姓名查询,查询后自动读取" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工会小组(人事关系)" prop="personnelRelationUnionGroupName">
|
||||
<el-input v-model="formData.personnelRelationUnionGroupName" placeholder="请输入工号或姓名查询,查询后自动读取" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="特殊人员类型" prop="specialStaffType">
|
||||
@@ -179,35 +166,6 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<template v-if="isThreeUnit">
|
||||
<el-row :gutter="10">
|
||||
<el-col :span=12>
|
||||
<el-form-item label="所属科室(工会关系)" prop="unionRelationThreeUnitId">
|
||||
<el-select
|
||||
v-model="formData.unionRelationThreeUnitId"
|
||||
filterable
|
||||
clearable
|
||||
:disabled="isView"
|
||||
placeholder="请选择工会关系所属科室"
|
||||
style="width: 100%"
|
||||
@change="unionRelationThreeUnitChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="unit in threeUnits"
|
||||
:key="unit.id"
|
||||
:label="unit.name"
|
||||
:value="unit.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span=12>
|
||||
<el-form-item label="工会小组(工会关系)" prop="unionRelationUnionGroupName">
|
||||
<el-input :value="formData.unionRelationUnionGroupName" placeholder="请选择工会关系所属科室,查询后自动读取" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
</template>
|
||||
|
||||
@@ -366,38 +324,18 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
unionRelationUnitChange(v) {
|
||||
this.$set(this.formData, 'unionRelationThreeUnitId', null)
|
||||
this.$set(this.formData, 'unionRelationUnionGroupName', null)
|
||||
this.threeUnits = []
|
||||
if (v) {
|
||||
this.getThreeUnits(v)
|
||||
}
|
||||
const unit = this.units.find((item) => item.id === v)
|
||||
if (unit) {
|
||||
this.$set(this.formData, "unionRelationUnitId", unit.id)
|
||||
this.$set(this.formData, "unionRelationUnitName", unit.name)
|
||||
this.$set(this.formData, "unionRelationUnionId", unit.unionid)
|
||||
this.$set(this.formData, "unionRelationUnionName", unit.unionname)
|
||||
this.$set(this.formData, "unionRelationUnionId", unit.unionId)
|
||||
this.$set(this.formData, "unionRelationUnionName", unit.unionName)
|
||||
} else {
|
||||
this.$set(this.formData, "unionRelationUnionId", null)
|
||||
this.$set(this.formData, "unionRelationUnionName", null)
|
||||
}
|
||||
},
|
||||
unionRelationThreeUnitChange(val) {
|
||||
if (val) {
|
||||
const threeUnit = this.threeUnits.find(v => v.id === val)
|
||||
const groupName = threeUnit.groupname ? threeUnit.groupname : null
|
||||
this.$set(this.formData, 'unionRelationThreeUnitId', threeUnit.id)
|
||||
this.$set(this.formData, 'unionRelationThreeUnitName', threeUnit.name)
|
||||
this.$set(this.formData, 'unionRelationUnionGroupId', threeUnit.uniongroupid)
|
||||
this.$set(this.formData, 'unionRelationUnionGroupName', groupName)
|
||||
} else {
|
||||
this.$set(this.formData, 'unionRelationUnionGroupName', null)
|
||||
}
|
||||
},
|
||||
async getThreeUnits(val) {
|
||||
this.threeUnits = await threeUnitsByUnionGroupOrUnitId(val)
|
||||
},
|
||||
|
||||
queryUser(keyWord, flag = true) {
|
||||
if (!keyWord) {
|
||||
return
|
||||
@@ -428,7 +366,7 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.pageForm, "unitId", null)
|
||||
this.units = []
|
||||
if (this.pageForm.unionId) {
|
||||
this.unions = await getUnions()
|
||||
this.units = this.$businessTool.listUnit(this.pageForm.unionId)
|
||||
}
|
||||
},
|
||||
async initData() {
|
||||
@@ -436,13 +374,10 @@ layout("/layouts/platform.html"){
|
||||
this.specialStaffTypeList = data
|
||||
})
|
||||
this.unionRelationUnionOptions = await this.$businessTool.listUnion()
|
||||
this.$businessTool.listUnit().then((data) => {
|
||||
this.units = data
|
||||
})
|
||||
this.units = await this.$businessTool.listUnit()
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
// this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
|
||||
this.initData()
|
||||
this.pageData()
|
||||
},
|
||||
|
||||
@@ -84,7 +84,7 @@ const filterUser = {
|
||||
v-model="pageForm.personTypes"></dict-select>
|
||||
</search-item>
|
||||
|
||||
<search-item label="聘用方式:">
|
||||
<search-item label="编制类别:">
|
||||
<dict-select clearable code="USER_PREPARED_BY_TYPE"
|
||||
multiple
|
||||
collapse-tags
|
||||
@@ -169,7 +169,7 @@ const filterUser = {
|
||||
{ prop: "sex", label: "性别", sortable: true, checked: 0 },
|
||||
{ prop: "birthday", label: "出生日期", sortable: true, checked: 0 },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true }
|
||||
|
||||
@@ -51,7 +51,7 @@ const selectedUser = {
|
||||
{ label: "生日", prop: "birthday" },
|
||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||
{ prop: "personType", label: "教职工类别", width: 120, sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", width: 120, sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true },
|
||||
{ label: "单位", prop: "welfareUnitName" },
|
||||
{ label: "手机号", prop: "mobile" },
|
||||
|
||||
@@ -50,7 +50,7 @@ const unSelectedUser = {
|
||||
{ label: "生日", prop: "birthday" },
|
||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||
{ prop: "personType", label: "教职工类别", width: 120, sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", width: 120, sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true },
|
||||
{ label: "单位", prop: "welfareUnitName" }
|
||||
]
|
||||
|
||||
@@ -86,7 +86,7 @@ const addUser = {
|
||||
v-model="pageForm.personTypes"></dict-select>
|
||||
</search-item>
|
||||
|
||||
<search-item label="聘用方式:">
|
||||
<search-item label="编制类别:">
|
||||
<dict-select clearable code="USER_PREPARED_BY_TYPE"
|
||||
multiple
|
||||
collapse-tags
|
||||
@@ -175,7 +175,7 @@ const addUser = {
|
||||
{ prop: "sex", label: "性别", sortable: true, checked: 0 },
|
||||
{ prop: "birthday", label: "出生日期", sortable: true, checked: 0 },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true }
|
||||
|
||||
@@ -98,7 +98,7 @@ layout("/layouts/platform.html"){
|
||||
></dict-select>
|
||||
</search-item>
|
||||
|
||||
<search-item label="聘用方式:">
|
||||
<search-item label="编制类别:">
|
||||
<dict-select
|
||||
clearable
|
||||
code="USER_PREPARED_BY_TYPE"
|
||||
@@ -265,7 +265,7 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "sex", label: "性别", sortable: true, checked: 0 },
|
||||
{ prop: "birthday", label: "出生日期", sortable: true, checked: 0 },
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "preparedBy", label: "聘用方式", sortable: true },
|
||||
{ prop: "preparedBy", label: "编制类别", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "welfareUnionName", label: "所属工会", sortable: true },
|
||||
{ prop: "welfareUnitName", label: "所属单位", sortable: true },
|
||||
|
||||
Reference in New Issue
Block a user