会员整改
This commit is contained in:
@@ -10,6 +10,7 @@ import org.nutz.dao.entity.annotation.*;
|
|||||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||||
import org.nutz.json.JsonField;
|
import org.nutz.json.JsonField;
|
||||||
|
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -181,6 +182,11 @@ public class Sys_user extends BaseModel implements Serializable {
|
|||||||
@DataCenterColumn(name = "来校时间", key = "LXRQ")
|
@DataCenterColumn(name = "来校时间", key = "LXRQ")
|
||||||
private String arrivalAtSchoolDate;
|
private String arrivalAtSchoolDate;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("工作时间")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||||
|
private String workDate;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("身份类型")
|
@Comment("身份类型")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
@@ -192,6 +198,12 @@ public class Sys_user extends BaseModel implements Serializable {
|
|||||||
@DataCenterColumn(name = "当前状态码", key = "DQZTM", dict = "USER_STATE")
|
@DataCenterColumn(name = "当前状态码", key = "DQZTM", dict = "USER_STATE")
|
||||||
private String userState;
|
private String userState;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("人员属性")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
@Size(max = 50)
|
||||||
|
private String userAttribute;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("在岗情况")
|
@Comment("在岗情况")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
@@ -323,6 +335,11 @@ public class Sys_user extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
private String homeAddress;
|
private String homeAddress;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("校区")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||||
|
private String campus;
|
||||||
|
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("常用审批意见")
|
@Comment("常用审批意见")
|
||||||
@@ -400,7 +417,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
|||||||
private Boolean aidFundMember;
|
private Boolean aidFundMember;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("基金会员类型")
|
@Comment("基金会员类型(人员分类)")
|
||||||
@ColDefine(type = ColType.VARCHAR,width = 10)
|
@ColDefine(type = ColType.VARCHAR,width = 10)
|
||||||
private String aidFundMemberUserType;
|
private String aidFundMemberUserType;
|
||||||
|
|
||||||
|
|||||||
@@ -225,4 +225,7 @@ public class View_user {
|
|||||||
|
|
||||||
@Column
|
@Column
|
||||||
private String oldLoginName;
|
private String oldLoginName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private String userAttribute;
|
||||||
}
|
}
|
||||||
|
|||||||
+219
@@ -24,6 +24,9 @@ import com.budwk.app.flow.entity.ProcessInstance;
|
|||||||
import com.budwk.app.flow.entity.ProcessTask;
|
import com.budwk.app.flow.entity.ProcessTask;
|
||||||
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||||
import com.budwk.app.sys.models.Sys_config;
|
import com.budwk.app.sys.models.Sys_config;
|
||||||
|
import com.budwk.app.sys.models.Sys_union;
|
||||||
|
import com.budwk.app.sys.models.Sys_unit;
|
||||||
|
import com.budwk.app.sys.models.Sys_user;
|
||||||
import com.budwk.app.sys.views.View_user;
|
import com.budwk.app.sys.views.View_user;
|
||||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
@@ -43,12 +46,15 @@ import org.nutz.dao.sql.Sql;
|
|||||||
import org.nutz.ioc.aop.Aop;
|
import org.nutz.ioc.aop.Aop;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.json.Json;
|
||||||
import org.nutz.lang.Lang;
|
import org.nutz.lang.Lang;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
import org.nutz.mvc.annotation.POST;
|
||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -176,6 +182,219 @@ public class MemberChangeManageController {
|
|||||||
return Result.success(map);
|
return Result.success(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@POST
|
||||||
|
@RepeatSubmit
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog(tag = "会员高级管理-批量设置人员属性", msg = "批量设置人员属性")
|
||||||
|
@SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR)
|
||||||
|
public Result batchUpdateUserAttribute(@Param("users") String usersJson) {
|
||||||
|
try {
|
||||||
|
List<NutMap> userList = Json.fromJsonAsList(NutMap.class, usersJson);
|
||||||
|
if (Lang.isEmpty(userList)) {
|
||||||
|
return Result.error("请选择要修改的用户");
|
||||||
|
}
|
||||||
|
|
||||||
|
int successCount = 0;
|
||||||
|
for (NutMap userMap : userList) {
|
||||||
|
MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id"));
|
||||||
|
if (record != null) {
|
||||||
|
record.setUserAttribute(userMap.getString("userAttribute"));
|
||||||
|
successCount += applyManualChange(record);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (successCount <= 0) {
|
||||||
|
return Result.error("未检测到可保存的变更数据");
|
||||||
|
}
|
||||||
|
return Result.success("批量设置人员属性成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("批量设置人员属性失败", e);
|
||||||
|
return Result.error("批量设置人员属性失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@POST
|
||||||
|
@RepeatSubmit
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog(tag = "会员高级管理-批量设置会员", msg = "批量设置会员")
|
||||||
|
@SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR)
|
||||||
|
public Result batchUpdateMember(@Param("users") String usersJson) {
|
||||||
|
try {
|
||||||
|
List<NutMap> userList = Json.fromJsonAsList(NutMap.class, usersJson);
|
||||||
|
if (Lang.isEmpty(userList)) {
|
||||||
|
return Result.error("请选择要修改的用户");
|
||||||
|
}
|
||||||
|
|
||||||
|
int successCount = 0;
|
||||||
|
for (NutMap userMap : userList) {
|
||||||
|
MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id"));
|
||||||
|
if (record != null) {
|
||||||
|
Boolean member = userMap.getBoolean("member");
|
||||||
|
record.setMember(member);
|
||||||
|
record.setWelfareMember(userMap.getBoolean("welfareMember"));
|
||||||
|
int changed = applyManualChange(record);
|
||||||
|
if (changed > 0 && Boolean.TRUE.equals(member)) {
|
||||||
|
Sys_user user = dao.fetch(Sys_user.class, userMap.getString("id"));
|
||||||
|
if (user != null && user.getMemberTime() == null) {
|
||||||
|
user.setMemberTime(new Date());
|
||||||
|
dao.updateIgnoreNull(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
successCount += changed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (successCount <= 0) {
|
||||||
|
return Result.error("未检测到可保存的变更数据");
|
||||||
|
}
|
||||||
|
return Result.success("批量设置会员成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("批量设置会员失败", e);
|
||||||
|
return Result.error("批量设置会员失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@POST
|
||||||
|
@RepeatSubmit
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog(tag = "会员高级管理-批量设置人员分类", msg = "批量设置人员分类")
|
||||||
|
@SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR)
|
||||||
|
public Result batchUpdateAidFundType(@Param("users") String usersJson) {
|
||||||
|
try {
|
||||||
|
List<NutMap> userList = Json.fromJsonAsList(NutMap.class, usersJson);
|
||||||
|
if (Lang.isEmpty(userList)) {
|
||||||
|
return Result.error("请选择要修改的用户");
|
||||||
|
}
|
||||||
|
|
||||||
|
int successCount = 0;
|
||||||
|
for (NutMap userMap : userList) {
|
||||||
|
MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id"));
|
||||||
|
if (record != null) {
|
||||||
|
record.setAidFundMemberUserType(userMap.getString("aidFundMemberUserType"));
|
||||||
|
successCount += applyManualChange(record);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (successCount <= 0) {
|
||||||
|
return Result.error("未检测到可保存的变更数据");
|
||||||
|
}
|
||||||
|
return Result.success("批量设置人员分类成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("批量设置人员分类失败", e);
|
||||||
|
return Result.error("批量设置人员分类失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@POST
|
||||||
|
@RepeatSubmit
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog(tag = "会员高级管理-批量设置在职状态", msg = "批量设置在职状态")
|
||||||
|
@SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR)
|
||||||
|
public Result batchUpdateUserState(@Param("users") String usersJson) {
|
||||||
|
try {
|
||||||
|
List<NutMap> userList = Json.fromJsonAsList(NutMap.class, usersJson);
|
||||||
|
if (Lang.isEmpty(userList)) {
|
||||||
|
return Result.error("请选择要修改的用户");
|
||||||
|
}
|
||||||
|
|
||||||
|
int successCount = 0;
|
||||||
|
for (NutMap userMap : userList) {
|
||||||
|
MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id"));
|
||||||
|
if (record != null) {
|
||||||
|
record.setUserState(userMap.getString("userState"));
|
||||||
|
successCount += applyManualChange(record);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (successCount <= 0) {
|
||||||
|
return Result.error("未检测到可保存的变更数据");
|
||||||
|
}
|
||||||
|
return Result.success("批量设置在职状态成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("批量设置在职状态失败", e);
|
||||||
|
return Result.error("批量设置在职状态失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@POST
|
||||||
|
@RepeatSubmit
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog(tag = "会员高级管理-单位调整", msg = "批量单位调整")
|
||||||
|
@SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR)
|
||||||
|
public Result unitMove(@Param("unitId") String unitId, @Param("userIds") String userIdsJson) {
|
||||||
|
try {
|
||||||
|
if (StrUtil.isBlank(unitId)) {
|
||||||
|
return Result.error("请选择新单位");
|
||||||
|
}
|
||||||
|
if (StrUtil.isBlank(userIdsJson)) {
|
||||||
|
return Result.error("请选择要修改的用户");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> userIds = Json.fromJsonAsList(String.class, userIdsJson);
|
||||||
|
if (Lang.isEmpty(userIds)) {
|
||||||
|
return Result.error("请选择要修改的用户");
|
||||||
|
}
|
||||||
|
|
||||||
|
Sys_unit unit = dao.fetch(Sys_unit.class, unitId);
|
||||||
|
if (unit == null) {
|
||||||
|
return Result.error("单位不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
Sys_union union = StrUtil.isNotBlank(unit.getUnionId()) ? dao.fetch(Sys_union.class, unit.getUnionId()) : null;
|
||||||
|
int successCount = 0;
|
||||||
|
for (String userId : userIds) {
|
||||||
|
MemberChangeRecord record = buildManualChangeRecord(userId);
|
||||||
|
if (record != null) {
|
||||||
|
record.setUnitId(unitId);
|
||||||
|
record.setUnitName(unit.getName());
|
||||||
|
record.setUnionId(unit.getUnionId());
|
||||||
|
record.setUnionName(union != null ? union.getName() : "");
|
||||||
|
successCount += applyManualChange(record);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (successCount <= 0) {
|
||||||
|
return Result.error("未检测到可保存的变更数据");
|
||||||
|
}
|
||||||
|
return Result.success("单位调整成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("单位调整失败", e);
|
||||||
|
return Result.error("单位调整失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private MemberChangeRecord buildManualChangeRecord(String userId) {
|
||||||
|
if (StrUtil.isBlank(userId)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", userId));
|
||||||
|
if (user == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
MemberChangeRecord record = new MemberChangeRecord();
|
||||||
|
BeanUtil.copyProperties(user, record);
|
||||||
|
record.setUserId(user.getId());
|
||||||
|
return record;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int applyManualChange(MemberChangeRecord record) {
|
||||||
|
try {
|
||||||
|
memberCommonService.validateChangeAndSetBasicData(record, MemberChangeOrigin.HAND_MOVEMENT);
|
||||||
|
memberCommonService.compareChangeInfoAndUpdateMember(record);
|
||||||
|
return 1;
|
||||||
|
} catch (BaseException e) {
|
||||||
|
if (StrUtil.contains(e.getMessage(), "未获取到异动数据")) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void doExport() {
|
public void doExport() {
|
||||||
|
|
||||||
|
|||||||
+80
@@ -0,0 +1,80 @@
|
|||||||
|
package com.budwk.app.zhgh.staffmanage.member.controller.info;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.budwk.app.base.annotation.SLog;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||||
|
import com.budwk.app.sys.models.Sys_union;
|
||||||
|
import com.budwk.app.sys.models.Sys_user;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.ioc.aop.Aop;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.Strings;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
import org.nutz.mvc.annotation.POST;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author hqw
|
||||||
|
* @name:MemberInfoInputController
|
||||||
|
* @Date 2026/4/8 19:31
|
||||||
|
* @注释 人员补录
|
||||||
|
*/
|
||||||
|
@At("/platform/member/info/input")
|
||||||
|
@Ok("json:full")
|
||||||
|
@IocBean
|
||||||
|
public class MemberInfoInputController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private MemberInfoService memberInfoService;
|
||||||
|
|
||||||
|
@At("")
|
||||||
|
@Ok("beetl:/platform/zhgh/staffmanage/member/info/input/index.html")
|
||||||
|
@SaCheckPermission("member.info.input")
|
||||||
|
public void index() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SaCheckPermission("member.info.input")
|
||||||
|
public Result pageData(MemberInfoPageForm pageForm) {
|
||||||
|
Sql sql = memberInfoService.getMemberInputSql(pageForm);
|
||||||
|
Pagination pagination = memberInfoService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
return Result.success(pagination);
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@POST
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SaCheckPermission("member.info.input")
|
||||||
|
@SLog(tag = "会员信息录入", type = "add", msg = "新增会员")
|
||||||
|
public Result add(Sys_user user) {
|
||||||
|
try {
|
||||||
|
memberInfoService.addMember(user);
|
||||||
|
return Result.success("新增成功");
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
+11
-12
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.staffmanage.member.controller.statistics;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberStatisticsPageForm;
|
||||||
import com.budwk.app.zhgh.staffmanage.member.service.MemberStatisticsService;
|
import com.budwk.app.zhgh.staffmanage.member.service.MemberStatisticsService;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
@@ -38,13 +39,12 @@ public class MemberSummaryController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("member.statistics.summary")
|
@SaCheckPermission("member.statistics.summary")
|
||||||
public Result pageData(@Param("queryId") String queryId, @Param("queryType") String queryType,
|
public Result pageData(MemberStatisticsPageForm pageForm) {
|
||||||
@Param("currentYear") Integer currentYear) {
|
|
||||||
List<NutMap> list = new ArrayList<>();
|
List<NutMap> list = new ArrayList<>();
|
||||||
if ("fgh".equals(queryType)) {
|
if ("fgh".equals(pageForm.getQueryType())) {
|
||||||
list = memberStatisticsService.getUnionStatisticsData(queryId, currentYear);
|
list = memberStatisticsService.getUnionStatisticsData(pageForm);
|
||||||
} else {
|
} else {
|
||||||
list = memberStatisticsService.getUnitStatisticsData(queryId, currentYear);
|
list = memberStatisticsService.getUnitStatisticsData(pageForm);
|
||||||
}
|
}
|
||||||
return Result.success(list);
|
return Result.success(list);
|
||||||
}
|
}
|
||||||
@@ -53,16 +53,15 @@ public class MemberSummaryController {
|
|||||||
@At
|
@At
|
||||||
@Ok("void")
|
@Ok("void")
|
||||||
@SaCheckPermission("member.statistics.summary")
|
@SaCheckPermission("member.statistics.summary")
|
||||||
public void doExport(@Param("queryId") String queryId, @Param("queryType") String queryType,
|
public void doExport(MemberStatisticsPageForm pageForm, HttpServletResponse response) {
|
||||||
@Param("currentYear") Integer currentYear, HttpServletResponse response) {
|
|
||||||
List<NutMap> list = new ArrayList<>();
|
List<NutMap> list = new ArrayList<>();
|
||||||
if ("union".equals(queryType)) {
|
if ("union".equals(pageForm.getQueryType())) {
|
||||||
list = memberStatisticsService.getUnionStatisticsData(queryId, currentYear);
|
list = memberStatisticsService.getUnionStatisticsData(pageForm);
|
||||||
} else {
|
} else {
|
||||||
list = memberStatisticsService.getUnitStatisticsData(queryId, currentYear);
|
list = memberStatisticsService.getUnitStatisticsData(pageForm);
|
||||||
}
|
}
|
||||||
NutMap map = NutMap.NEW();
|
NutMap map = NutMap.NEW();
|
||||||
map.put("union".equals(queryType) ? "unionName" : "unitName", "合计");
|
map.put("union".equals(pageForm.getQueryType()) ? "unionName" : "unitName", "合计");
|
||||||
map.put("totalNumber", list.stream().mapToInt(v -> v.getInt("TotalNumber")).sum());
|
map.put("totalNumber", list.stream().mapToInt(v -> v.getInt("TotalNumber")).sum());
|
||||||
map.put("maleMember", list.stream().mapToInt(v -> v.getInt("maleMember")).sum());
|
map.put("maleMember", list.stream().mapToInt(v -> v.getInt("maleMember")).sum());
|
||||||
map.put("femaleMember", list.stream().mapToInt(v -> v.getInt("femaleMember")).sum());
|
map.put("femaleMember", list.stream().mapToInt(v -> v.getInt("femaleMember")).sum());
|
||||||
@@ -73,7 +72,7 @@ public class MemberSummaryController {
|
|||||||
try {
|
try {
|
||||||
response.setContentType("application/octet-stream");
|
response.setContentType("application/octet-stream");
|
||||||
response.setHeader("Content-Disposition", "attachment;filename=" + new String(("会员性别统计.xlsx").getBytes("utf-8"), "ISO8859-1"));
|
response.setHeader("Content-Disposition", "attachment;filename=" + new String(("会员性别统计.xlsx").getBytes("utf-8"), "ISO8859-1"));
|
||||||
Workbook workbook = memberStatisticsService.exportStatisticsExcel(list, queryType);
|
Workbook workbook = memberStatisticsService.exportStatisticsExcel(list, pageForm.getQueryType());
|
||||||
workbook.write(response.getOutputStream());
|
workbook.write(response.getOutputStream());
|
||||||
workbook.close();
|
workbook.close();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.staffmanage.member.models;
|
|||||||
|
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import com.budwk.app.base.model.BaseModel;
|
import com.budwk.app.base.model.BaseModel;
|
||||||
|
import com.budwk.app.sys.annotation.DataCenterColumn;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
@@ -124,6 +125,17 @@ public class MemberChangeRecord extends BaseModel {
|
|||||||
@Size(max = 50)
|
@Size(max = 50)
|
||||||
private String userState;
|
private String userState;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("人员属性")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
@Size(max = 50)
|
||||||
|
private String userAttribute;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("职称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
private String professionalTitle;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("编制类别")
|
@Comment("编制类别")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
@@ -220,5 +232,10 @@ public class MemberChangeRecord extends BaseModel {
|
|||||||
@ColDefine(type = ColType.TEXT)
|
@ColDefine(type = ColType.TEXT)
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("基金会员类型(人员分类)")
|
||||||
|
@ColDefine(type = ColType.VARCHAR,width = 10)
|
||||||
|
private String aidFundMemberUserType;
|
||||||
|
|
||||||
private Boolean edit;
|
private Boolean edit;
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -41,6 +41,12 @@ public class MemberChangePageForm extends PageForm {
|
|||||||
@ApiModelProperty("教职工类别")
|
@ApiModelProperty("教职工类别")
|
||||||
private List<String> personTypes;
|
private List<String> personTypes;
|
||||||
|
|
||||||
|
@ApiModelProperty("人员分类")
|
||||||
|
private String aidFundMemberUserType;
|
||||||
|
|
||||||
|
@ApiModelProperty("人员属性")
|
||||||
|
private String userAttribute;
|
||||||
|
|
||||||
|
|
||||||
public void buildSearch(Cnd cnd, String prefix){
|
public void buildSearch(Cnd cnd, String prefix){
|
||||||
if (cnd == null) {
|
if (cnd == null) {
|
||||||
@@ -59,5 +65,7 @@ public class MemberChangePageForm extends PageForm {
|
|||||||
cnd.andEX(prefix + "userState", "in", this.getUserStates());
|
cnd.andEX(prefix + "userState", "in", this.getUserStates());
|
||||||
cnd.andEX(prefix + "preparedBy", "in", this.getPreparedBys());
|
cnd.andEX(prefix + "preparedBy", "in", this.getPreparedBys());
|
||||||
cnd.andEX(prefix + "personType", "in", this.getPersonTypes());
|
cnd.andEX(prefix + "personType", "in", this.getPersonTypes());
|
||||||
|
cnd.andEX(prefix + "aidFundMemberUserType", "=", this.getAidFundMemberUserType());
|
||||||
|
cnd.andEX(prefix + "userAttribute", "=", this.getUserAttribute());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+44
-8
@@ -98,6 +98,18 @@ public class MemberInfoPageForm extends PageForm {
|
|||||||
@ApiModelProperty("导出的数据")
|
@ApiModelProperty("导出的数据")
|
||||||
private List<Map<String, String>> columns;
|
private List<Map<String, String>> columns;
|
||||||
|
|
||||||
|
@ApiModelProperty("人员分类")
|
||||||
|
private String aidFundMemberUserType;
|
||||||
|
|
||||||
|
@ApiModelProperty("人员分类组")
|
||||||
|
private List<String> aidFundMemberUserTypes;
|
||||||
|
|
||||||
|
@ApiModelProperty("人员属性")
|
||||||
|
private String userAttribute;
|
||||||
|
|
||||||
|
@ApiModelProperty("人员属性组")
|
||||||
|
private List<String> userAttributes;
|
||||||
|
|
||||||
public void buildSearch(Cnd cnd, String prefix){
|
public void buildSearch(Cnd cnd, String prefix){
|
||||||
if (cnd == null) {
|
if (cnd == null) {
|
||||||
cnd = Cnd.NEW();
|
cnd = Cnd.NEW();
|
||||||
@@ -128,15 +140,39 @@ public class MemberInfoPageForm extends PageForm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cnd.andEX(prefix + "unitId", "=", this.getUnitId());
|
cnd.andEX(prefix + "unitId", "=", this.getUnitId());
|
||||||
cnd.andEX(prefix + "userState", "in", this.getUserStates());
|
if (StrUtil.isNotBlank(this.getUserState())) {
|
||||||
cnd.andEX(prefix + "preparedBy", "in", this.getPreparedBys());
|
cnd.and(prefix + "userState", "=", this.getUserState());
|
||||||
cnd.andEX(prefix + "personType", "in", this.getPersonTypes());
|
} else if (Lang.isNotEmpty(this.getUserStates())) {
|
||||||
|
cnd.and(prefix + "userState", "in", this.getUserStates());
|
||||||
if(StrUtil.isAllBlank(this.getPageOrderName(),this.getPageOrderBy())){
|
|
||||||
cnd.asc("unionCode").asc("unitCode");
|
|
||||||
}else{
|
|
||||||
cnd.orderBy(this.getPageOrderName(), PageUtil.getOrder(this.getPageOrderBy()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(this.getPreparedBy())) {
|
||||||
|
cnd.and(prefix + "preparedBy", "=", this.getPreparedBy());
|
||||||
|
} else if (Lang.isNotEmpty(this.getPreparedBys())) {
|
||||||
|
cnd.and(prefix + "preparedBy", "in", this.getPreparedBys());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(this.getPersonType())) {
|
||||||
|
cnd.and(prefix + "personType", "=", this.getPersonType());
|
||||||
|
} else if (Lang.isNotEmpty(this.getPersonTypes())) {
|
||||||
|
cnd.and(prefix + "personType", "in", this.getPersonTypes());
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(this.getUserAttribute())) {
|
||||||
|
cnd.and(prefix + "userAttribute", "=", this.getUserAttribute());
|
||||||
|
} else if (Lang.isNotEmpty(this.getUserAttributes())) {
|
||||||
|
cnd.and(prefix + "userAttribute", "in", this.getUserAttributes());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(this.getAidFundMemberUserType())) {
|
||||||
|
cnd.and(prefix + "aidFundMemberUserType", "=", this.getAidFundMemberUserType());
|
||||||
|
} else if (Lang.isNotEmpty(this.getAidFundMemberUserTypes())) {
|
||||||
|
cnd.and(prefix + "aidFundMemberUserType", "in", this.getAidFundMemberUserTypes());
|
||||||
|
}
|
||||||
|
// if(StrUtil.isAllBlank(this.getPageOrderName(),this.getPageOrderBy())){
|
||||||
|
// cnd.asc("unionCode").asc("unitCode");
|
||||||
|
// }else{
|
||||||
|
// cnd.orderBy(this.getPageOrderName(), PageUtil.getOrder(this.getPageOrderBy()));
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -38,6 +38,10 @@ public class MemberManagePageForm extends PageForm {
|
|||||||
|
|
||||||
private String userState;
|
private String userState;
|
||||||
|
|
||||||
|
private String aidFundMemberUserType;
|
||||||
|
|
||||||
|
private String userAttribute;
|
||||||
|
|
||||||
private String changeType;
|
private String changeType;
|
||||||
|
|
||||||
//变更状态数组
|
//变更状态数组
|
||||||
@@ -88,6 +92,8 @@ public class MemberManagePageForm extends PageForm {
|
|||||||
cnd.andEX("u.preparedBy", "=", pageForm.getPreparedBy());
|
cnd.andEX("u.preparedBy", "=", pageForm.getPreparedBy());
|
||||||
cnd.andEX("u.sex", "=", pageForm.getSex());
|
cnd.andEX("u.sex", "=", pageForm.getSex());
|
||||||
cnd.andEX("u.personType", "=", pageForm.getPersonType());
|
cnd.andEX("u.personType", "=", pageForm.getPersonType());
|
||||||
|
cnd.andEX("u.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType());
|
||||||
|
cnd.andEX("u.userAttribute", "=", pageForm.getUserAttribute());
|
||||||
|
|
||||||
if (StrUtil.isNotBlank(pageForm.getChangeDateBefore()) && StrUtil.isNotBlank(pageForm.getChangeDateEnd())) {
|
if (StrUtil.isNotBlank(pageForm.getChangeDateBefore()) && StrUtil.isNotBlank(pageForm.getChangeDateEnd())) {
|
||||||
cnd.and(new Static(String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())));
|
cnd.and(new Static(String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd())));
|
||||||
@@ -141,6 +147,8 @@ public class MemberManagePageForm extends PageForm {
|
|||||||
cnd.andEX("record.userState", "=", pageForm.getUserState());
|
cnd.andEX("record.userState", "=", pageForm.getUserState());
|
||||||
cnd.andEX("record.preparedBy", "=", pageForm.getPreparedBy());
|
cnd.andEX("record.preparedBy", "=", pageForm.getPreparedBy());
|
||||||
cnd.andEX("record.personType", "=", pageForm.getPersonType());
|
cnd.andEX("record.personType", "=", pageForm.getPersonType());
|
||||||
|
cnd.andEX("record.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType());
|
||||||
|
cnd.andEX("record.userAttribute", "=", pageForm.getUserAttribute());
|
||||||
|
|
||||||
cnd.groupBy("record.id,task.id");
|
cnd.groupBy("record.id,task.id");
|
||||||
}
|
}
|
||||||
|
|||||||
+10
@@ -19,6 +19,12 @@ import java.util.Map;
|
|||||||
@Data
|
@Data
|
||||||
public class MemberStatisticsPageForm extends PageForm {
|
public class MemberStatisticsPageForm extends PageForm {
|
||||||
|
|
||||||
|
private String queryId;
|
||||||
|
|
||||||
|
private String queryType;
|
||||||
|
|
||||||
|
private Integer currentYear;
|
||||||
|
|
||||||
private String isUnit;
|
private String isUnit;
|
||||||
|
|
||||||
private String isUnion;
|
private String isUnion;
|
||||||
@@ -44,6 +50,10 @@ public class MemberStatisticsPageForm extends PageForm {
|
|||||||
|
|
||||||
private List<String> preparedBys;
|
private List<String> preparedBys;
|
||||||
|
|
||||||
|
private List<String> aidFundMemberUserTypes;
|
||||||
|
|
||||||
|
private List<String> userAttributes;
|
||||||
|
|
||||||
private List<String> userStates;
|
private List<String> userStates;
|
||||||
|
|
||||||
private List<String> memberStatus;
|
private List<String> memberStatus;
|
||||||
|
|||||||
@@ -27,6 +27,19 @@ public interface MemberInfoService extends BaseService<Sys_user> {
|
|||||||
*/
|
*/
|
||||||
Sql getSql(MemberInfoPageForm pageForm);
|
Sql getSql(MemberInfoPageForm pageForm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取查询人员补录Sql(变更表)
|
||||||
|
* @param pageForm
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Sql getMemberInputSql(MemberInfoPageForm pageForm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增会员
|
||||||
|
* @param user 会员信息
|
||||||
|
*/
|
||||||
|
void addMember(Sys_user user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取会员历史
|
* 获取会员历史
|
||||||
* @param pageForm
|
* @param pageForm
|
||||||
|
|||||||
+2
-2
@@ -65,7 +65,7 @@ public interface MemberStatisticsService extends BaseService<Sys_user> {
|
|||||||
* @param currentYear
|
* @param currentYear
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<NutMap> getUnionStatisticsData(String unionId, Integer currentYear);
|
List<NutMap> getUnionStatisticsData(MemberStatisticsPageForm pageForm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取单位统计数据
|
* 获取单位统计数据
|
||||||
@@ -73,7 +73,7 @@ public interface MemberStatisticsService extends BaseService<Sys_user> {
|
|||||||
* @param currentYear
|
* @param currentYear
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<NutMap> getUnitStatisticsData(String unitId, Integer currentYear);
|
List<NutMap> getUnitStatisticsData(MemberStatisticsPageForm pageForm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出统计数据
|
* 导出统计数据
|
||||||
|
|||||||
+151
@@ -9,6 +9,7 @@ import cn.hutool.core.util.DesensitizedUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
|
import com.budwk.app.base.exception.BaseException;
|
||||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
import com.budwk.app.base.utils.*;
|
import com.budwk.app.base.utils.*;
|
||||||
import com.budwk.app.base.utils.easyexcel.EasyExcelUtil;
|
import com.budwk.app.base.utils.easyexcel.EasyExcelUtil;
|
||||||
@@ -18,6 +19,9 @@ import com.budwk.app.sys.models.Sys_user_role;
|
|||||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||||
import com.budwk.app.sys.models.Sys_user;
|
import com.budwk.app.sys.models.Sys_user;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.member.models.MemberChangeRecord;
|
||||||
import com.budwk.app.zhgh.staffmanage.member.models.MemberHistory;
|
import com.budwk.app.zhgh.staffmanage.member.models.MemberHistory;
|
||||||
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
|
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
|
||||||
import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService;
|
import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService;
|
||||||
@@ -41,6 +45,7 @@ import org.nutz.mvc.upload.TempFile;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -113,6 +118,152 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Sql getMemberInputSql(MemberInfoPageForm pageForm) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
info.id,
|
||||||
|
info.userId,
|
||||||
|
info.username,
|
||||||
|
info.loginname,
|
||||||
|
info.unitId,
|
||||||
|
info.unionId,
|
||||||
|
info.sex,
|
||||||
|
info.birthday,
|
||||||
|
info.idCard,
|
||||||
|
info.nation,
|
||||||
|
info.political,
|
||||||
|
info.education,
|
||||||
|
info.academicDegree,
|
||||||
|
info.userState,
|
||||||
|
info.preparedBy,
|
||||||
|
info.personType,
|
||||||
|
info.mobile,
|
||||||
|
info.email,
|
||||||
|
info.member,
|
||||||
|
info.welfareMember,
|
||||||
|
info.retireDate,
|
||||||
|
info.families,
|
||||||
|
info.personalData,
|
||||||
|
info.userAttribute,
|
||||||
|
info.campus,
|
||||||
|
info.professionalTitle,
|
||||||
|
info.aidFundMemberUserType,
|
||||||
|
info.changeType,
|
||||||
|
info.changeOrigin,
|
||||||
|
info.applyDateTime,
|
||||||
|
info.createdAt,
|
||||||
|
info.createdBy,
|
||||||
|
info.updatedAt,
|
||||||
|
info.updatedBy,
|
||||||
|
FROM_UNIXTIME(info.createdAt / 1000, '%Y-%m-%d %H:%i:%s') AS createdAtStr,
|
||||||
|
creator.username AS createdByUsername,
|
||||||
|
su.name AS unitName,
|
||||||
|
sui.name AS unionName
|
||||||
|
FROM
|
||||||
|
member_change_record info
|
||||||
|
INNER JOIN `vw_user` u ON u.id = info.userId
|
||||||
|
LEFT JOIN sys_user creator ON creator.id = info.createdBy
|
||||||
|
LEFT JOIN sys_unit su ON su.id = info.unitId
|
||||||
|
LEFT JOIN sys_union sui ON sui.id = su.unionId
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.and("changeOrigin", "=", "HAND_MOVEMENT");
|
||||||
|
pageForm.buildSearch(cnd, "info.");
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
return sql;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
public void addMember(Sys_user user) {
|
||||||
|
if (StrUtil.isBlank(user.getLoginname())) {
|
||||||
|
throw new BaseException("工号不能为空");
|
||||||
|
}
|
||||||
|
if (StrUtil.isBlank(user.getUsername())) {
|
||||||
|
throw new BaseException("姓名不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
Sys_user existUser = dao().fetch(Sys_user.class, Cnd.where("loginname", "=", user.getLoginname()));
|
||||||
|
if (existUser != null) {
|
||||||
|
throw new BaseException("该工号已存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
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()));
|
||||||
|
user.setId(R.UU32());
|
||||||
|
user.setCreateAt(System.currentTimeMillis());
|
||||||
|
user.setLoginCount(0);
|
||||||
|
user.setDisabled(false);
|
||||||
|
|
||||||
|
if (user.getMember() == null) {
|
||||||
|
user.setMember(true);
|
||||||
|
}
|
||||||
|
if (user.getWelfareMember() == null) {
|
||||||
|
user.setWelfareMember(false);
|
||||||
|
}
|
||||||
|
if (user.getSex() == null) {
|
||||||
|
user.setSex("男");
|
||||||
|
}
|
||||||
|
|
||||||
|
dao().insert(user);
|
||||||
|
|
||||||
|
if (publicRole != null) {
|
||||||
|
Sys_user_role userRole = new Sys_user_role();
|
||||||
|
userRole.setUserId(user.getId());
|
||||||
|
userRole.setRoleId(publicRole.getId());
|
||||||
|
dao().insert(userRole);
|
||||||
|
}
|
||||||
|
if (memberRole != null) {
|
||||||
|
Sys_user_role userRole = new Sys_user_role();
|
||||||
|
userRole.setUserId(user.getId());
|
||||||
|
userRole.setRoleId(memberRole.getId());
|
||||||
|
dao().insert(userRole);
|
||||||
|
|
||||||
|
if (user.getMemberTime() == null) {
|
||||||
|
user.setMemberTime(new Date());
|
||||||
|
dao().update(user, Cnd.where("id", "=", user.getId()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MemberChangeRecord changeRecord = new MemberChangeRecord();
|
||||||
|
changeRecord.setUserId(user.getId());
|
||||||
|
changeRecord.setUsername(user.getUsername());
|
||||||
|
changeRecord.setLoginname(user.getLoginname());
|
||||||
|
changeRecord.setUnitId(user.getUnitId());
|
||||||
|
changeRecord.setUnitName(user.getUnit() != null ? user.getUnit().getName() : "");
|
||||||
|
changeRecord.setUnionId(user.getUnion() != null ? user.getUnion().getId() : null);
|
||||||
|
changeRecord.setUnionName(user.getUnion() != null ? user.getUnion().getName() : "");
|
||||||
|
changeRecord.setSex(user.getSex());
|
||||||
|
changeRecord.setBirthday(user.getBirthday());
|
||||||
|
changeRecord.setIdCard(user.getIdCard());
|
||||||
|
changeRecord.setNation(user.getNation());
|
||||||
|
changeRecord.setPolitical(user.getPolitical());
|
||||||
|
changeRecord.setEducation(user.getEducation());
|
||||||
|
changeRecord.setAcademicDegree(user.getAcademicDegree());
|
||||||
|
changeRecord.setUserState(user.getUserState());
|
||||||
|
changeRecord.setPreparedBy(user.getPreparedBy());
|
||||||
|
changeRecord.setPersonType(user.getPersonType());
|
||||||
|
changeRecord.setMobile(user.getMobile());
|
||||||
|
changeRecord.setEmail(user.getEmail());
|
||||||
|
changeRecord.setMember(user.getMember());
|
||||||
|
changeRecord.setWelfareMember(user.getWelfareMember());
|
||||||
|
changeRecord.setRetireDate(user.getRetireDate());
|
||||||
|
changeRecord.setFamilies(user.getFamilies());
|
||||||
|
changeRecord.setPersonalData(user.getPersonalData());
|
||||||
|
changeRecord.setUserAttribute(user.getUserAttribute());
|
||||||
|
changeRecord.setCampus(user.getCampus());
|
||||||
|
changeRecord.setProfessionalTitle(user.getProfessionalTitle());
|
||||||
|
changeRecord.setAidFundMemberUserType(user.getAidFundMemberUserType());
|
||||||
|
changeRecord.setChangeType(MemberChangeType.NEW.name());
|
||||||
|
changeRecord.setChangeOrigin(MemberChangeOrigin.HAND_MOVEMENT.name());
|
||||||
|
changeRecord.setApplyDateTime(new Date());
|
||||||
|
|
||||||
|
dao().insert(changeRecord);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Sql getMemberHistorySql(MemberInfoPageForm pageForm) {
|
public Sql getMemberHistorySql(MemberInfoPageForm pageForm) {
|
||||||
|
|||||||
+2
@@ -93,6 +93,8 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
|
|||||||
u.personType,
|
u.personType,
|
||||||
u.welfareMember,
|
u.welfareMember,
|
||||||
u.isModelWorker,
|
u.isModelWorker,
|
||||||
|
u.userAttribute,
|
||||||
|
u.aidFundMemberUserType,
|
||||||
his.id hisId,
|
his.id hisId,
|
||||||
his.changeTypes,
|
his.changeTypes,
|
||||||
his.changeTime
|
his.changeTime
|
||||||
|
|||||||
+12
-2
@@ -90,6 +90,8 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
|||||||
handleField("unitId", pageForm.getUnitId(), 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);
|
handleField("personType", pageForm.getPersonTypes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||||
handleField("preparedBy", pageForm.getPreparedBys(), reverseSelection, IN_OR_NIN_OP, cnd);
|
handleField("preparedBy", pageForm.getPreparedBys(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||||
|
handleField("aidFundMemberUserType", pageForm.getAidFundMemberUserTypes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||||
|
handleField("userAttribute", pageForm.getUserAttributes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||||
handleField("userState", pageForm.getUserStates(), 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);
|
handleField("sex", pageForm.getSexTypes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||||
cnd.andEX("sur.roleId", IN_OR_NIN_OP, pageForm.getRoleIds());
|
cnd.andEX("sur.roleId", IN_OR_NIN_OP, pageForm.getRoleIds());
|
||||||
@@ -145,6 +147,8 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
|||||||
u.arrivalAtSchoolDate,
|
u.arrivalAtSchoolDate,
|
||||||
u.personType,
|
u.personType,
|
||||||
u.preparedBy,
|
u.preparedBy,
|
||||||
|
u.aidFundMemberUserType,
|
||||||
|
u.userAttribute,
|
||||||
u.identityType,
|
u.identityType,
|
||||||
u.userState,
|
u.userState,
|
||||||
u.unionName,
|
u.unionName,
|
||||||
@@ -309,7 +313,9 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<NutMap> getUnionStatisticsData(String unionId, Integer currentYear) {
|
public List<NutMap> getUnionStatisticsData(MemberStatisticsPageForm pageForm) {
|
||||||
|
String unionId = pageForm.getQueryId();
|
||||||
|
Integer currentYear = pageForm.getCurrentYear();
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
un.id,
|
un.id,
|
||||||
@@ -341,6 +347,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
|||||||
sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear)));
|
sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear)));
|
||||||
// sql.setVar("abbr", new Static("his"));
|
// sql.setVar("abbr", new Static("his"));
|
||||||
}
|
}
|
||||||
|
cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes());
|
||||||
cnd.groupBy("un.id", "un.unionCode", "un.name");
|
cnd.groupBy("un.id", "un.unionCode", "un.name");
|
||||||
cnd.asc("un.unionCode");
|
cnd.asc("un.unionCode");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
@@ -348,7 +355,9 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<NutMap> getUnitStatisticsData(String unitId, Integer currentYear) {
|
public List<NutMap> getUnitStatisticsData(MemberStatisticsPageForm pageForm) {
|
||||||
|
String unitId = pageForm.getQueryId();
|
||||||
|
Integer currentYear = pageForm.getCurrentYear();
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
un.id,
|
un.id,
|
||||||
@@ -378,6 +387,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
|||||||
sql.setVar("table", new Static("member_history"));
|
sql.setVar("table", new Static("member_history"));
|
||||||
sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear)));
|
sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear)));
|
||||||
}
|
}
|
||||||
|
cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes());
|
||||||
cnd.and("un.unitLevel", "=", 2);
|
cnd.and("un.unitLevel", "=", 2);
|
||||||
cnd.groupBy("un.id", "un.unitcode", "un.name");
|
cnd.groupBy("un.id", "un.unitcode", "un.name");
|
||||||
cnd.asc("un.unitcode");
|
cnd.asc("un.unitcode");
|
||||||
|
|||||||
+10
@@ -30,6 +30,14 @@ const COMMON_QUERY = {
|
|||||||
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
|
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
|
||||||
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
|
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="人员分类">
|
||||||
|
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||||
|
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="人员属性">
|
||||||
|
<dict-select v-model="pageForm.userAttribute" placeholder="请选择人员属性" @change="doSearch"
|
||||||
|
code="USER_ATTRIBUTE"></dict-select>
|
||||||
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
`,
|
`,
|
||||||
store,
|
store,
|
||||||
@@ -45,6 +53,8 @@ const COMMON_QUERY = {
|
|||||||
userStates: [],
|
userStates: [],
|
||||||
personTypes: [],
|
personTypes: [],
|
||||||
preparedBys: [],
|
preparedBys: [],
|
||||||
|
aidFundMemberUserType: '',
|
||||||
|
userAttribute: '',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+23
-7
@@ -62,12 +62,12 @@ const MEMBER_CHANGE = {
|
|||||||
code="USER_ACADEMIC_DEGREE"></dict-select>
|
code="USER_ACADEMIC_DEGREE"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="党政职务">
|
<!-- <el-descriptions-item label="党政职务">-->
|
||||||
<el-form-item prop="position">
|
<!-- <el-form-item prop="position">-->
|
||||||
<el-input v-model="formData.position" placeholder="请输入党政职务"
|
<!-- <el-input v-model="formData.position" placeholder="请输入党政职务"-->
|
||||||
:disabled="allowFields('position')" maxlength="50"></el-input>
|
<!-- :disabled="allowFields('position')" maxlength="50"></el-input>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-descriptions-item>
|
<!-- </el-descriptions-item>-->
|
||||||
|
|
||||||
<!--<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, SCHOOL_UNION_MEMBER_ADMIN')">
|
<!--<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, SCHOOL_UNION_MEMBER_ADMIN')">
|
||||||
<el-descriptions-item label="工作单位">
|
<el-descriptions-item label="工作单位">
|
||||||
@@ -151,6 +151,18 @@ const MEMBER_CHANGE = {
|
|||||||
:disabled="allowFields('preparedBy')" style="width: 100%"></dict-select>
|
:disabled="allowFields('preparedBy')" style="width: 100%"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="人员属性">
|
||||||
|
<el-form-item prop="userAttribute">
|
||||||
|
<dict-select v-model="formData.userAttribute" code="USER_ATTRIBUTE"
|
||||||
|
style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="人员分类">
|
||||||
|
<el-form-item prop="aidFundMemberUserType">
|
||||||
|
<dict-select v-model="formData.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
|
||||||
|
style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
<template v-if="formData.userState == '退休'">
|
<template v-if="formData.userState == '退休'">
|
||||||
<el-descriptions-item label="退休日期">
|
<el-descriptions-item label="退休日期">
|
||||||
@@ -174,7 +186,7 @@ const MEMBER_CHANGE = {
|
|||||||
style="width: 100%"></el-date-picker>
|
style="width: 100%"></el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item></el-descriptions-item>
|
<!-- <el-descriptions-item></el-descriptions-item>-->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-descriptions-item label="会员状态" :span="1.5">
|
<el-descriptions-item label="会员状态" :span="1.5">
|
||||||
@@ -439,6 +451,8 @@ const MEMBER_CHANGE = {
|
|||||||
userState,
|
userState,
|
||||||
personType,
|
personType,
|
||||||
preparedBy,
|
preparedBy,
|
||||||
|
userAttribute,
|
||||||
|
aidFundMemberUserType,
|
||||||
idCard,
|
idCard,
|
||||||
mobile,
|
mobile,
|
||||||
email,
|
email,
|
||||||
@@ -463,6 +477,8 @@ const MEMBER_CHANGE = {
|
|||||||
this.$set(this.formData, "userState", userState)
|
this.$set(this.formData, "userState", userState)
|
||||||
this.$set(this.formData, "personType", personType)
|
this.$set(this.formData, "personType", personType)
|
||||||
this.$set(this.formData, "preparedBy", preparedBy)
|
this.$set(this.formData, "preparedBy", preparedBy)
|
||||||
|
this.$set(this.formData, "userAttribute", userAttribute)
|
||||||
|
this.$set(this.formData, "aidFundMemberUserType", aidFundMemberUserType)
|
||||||
this.$set(this.formData, "unitName", unit ? unit.name : null)
|
this.$set(this.formData, "unitName", unit ? unit.name : null)
|
||||||
this.$set(this.formData, "unitId", unit ? unit.id : null)
|
this.$set(this.formData, "unitId", unit ? unit.id : null)
|
||||||
this.$set(this.formData, "unionName", union ? union.name : null)
|
this.$set(this.formData, "unionName", union ? union.name : null)
|
||||||
|
|||||||
+448
-2
@@ -38,6 +38,14 @@ layout("/layouts/platform.html"){
|
|||||||
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
|
<dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"
|
||||||
code="USER_PREPARED_BY_TYPE"></dict-select>
|
code="USER_PREPARED_BY_TYPE"></dict-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="人员分类">
|
||||||
|
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||||
|
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="人员属性">
|
||||||
|
<dict-select v-model="pageForm.userAttribute" placeholder="请选择人员属性" @change="doSearch"
|
||||||
|
code="USER_ATTRIBUTE"></dict-select>
|
||||||
|
</search-item>
|
||||||
<search-item label="更新日期">
|
<search-item label="更新日期">
|
||||||
<el-date-picker :picker-options="pickerOptions" @change="changeDateRangeChange"
|
<el-date-picker :picker-options="pickerOptions" @change="changeDateRangeChange"
|
||||||
align="right" end-placeholder="结束日期" format="yyyy-MM-dd"
|
align="right" end-placeholder="结束日期" format="yyyy-MM-dd"
|
||||||
@@ -50,6 +58,31 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
<el-card shadow="never" class="mt10">
|
<el-card shadow="never" class="mt10">
|
||||||
<table-tool label="人员列表(工会小组或分工会提交的变更还需校工会审核哦)">
|
<table-tool label="人员列表(工会小组或分工会提交的变更还需校工会审核哦)">
|
||||||
|
<el-button :disabled="!checkUsers.length" @click="openBatchEditMember" class="ml5" icon="el-icon-edit"
|
||||||
|
size="small" type="primary">
|
||||||
|
设置会员
|
||||||
|
</el-button>
|
||||||
|
|
||||||
|
<el-button :disabled="!checkUsers.length" @click="openBatchEditAidFundType" class="ml5" icon="el-icon-edit"
|
||||||
|
size="small" type="primary">
|
||||||
|
设置人员分类
|
||||||
|
</el-button>
|
||||||
|
|
||||||
|
<el-button :disabled="!checkUsers.length" @click="openBatchEditUserAttribute" class="ml5" icon="el-icon-edit"
|
||||||
|
size="small" type="primary">
|
||||||
|
设置人员属性
|
||||||
|
</el-button>
|
||||||
|
|
||||||
|
<el-button :disabled="!checkUsers.length" @click="openBatchEditUserState" class="ml5" icon="el-icon-edit"
|
||||||
|
size="small" type="primary">
|
||||||
|
设置在职状态
|
||||||
|
</el-button>
|
||||||
|
|
||||||
|
<el-button :disabled="!checkUsers.length" @click="openUnitMove" class="ml5" icon="el-icon-edit"
|
||||||
|
size="small" type="primary">
|
||||||
|
单位调整
|
||||||
|
</el-button>
|
||||||
|
|
||||||
<el-radio-group @change="doSearch" class="mr5"
|
<el-radio-group @change="doSearch" class="mr5"
|
||||||
size="small"
|
size="small"
|
||||||
v-model="pageForm.isMember">
|
v-model="pageForm.isMember">
|
||||||
@@ -107,8 +140,9 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
</table-tool>
|
</table-tool>
|
||||||
|
|
||||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
<el-table :data="tableData" :size="tableSize" @selection-change="tableHandleSelectionChange" @sort-change="pageOrder"
|
||||||
class="vi-table" ref="table" row-key="id" style="width: 100%">
|
class="vi-table" ref="table" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column :reserve-selection="true" type="selection"></el-table-column>
|
||||||
<el-table-column :index="indexMethod" align="center" header-align="center"
|
<el-table-column :index="indexMethod" align="center" header-align="center"
|
||||||
label="序号" type="index" width="80px" fixed="left"></el-table-column>
|
label="序号" type="index" width="80px" fixed="left"></el-table-column>
|
||||||
<el-table-column :label="column.label" :prop="column.prop"
|
<el-table-column :label="column.label" :prop="column.prop"
|
||||||
@@ -195,6 +229,241 @@ layout("/layouts/platform.html"){
|
|||||||
<template #edit>
|
<template #edit>
|
||||||
<member-all-change ref="memberAllChangeRef"></member-all-change>
|
<member-all-change ref="memberAllChangeRef"></member-all-change>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<el-drawer
|
||||||
|
:before-close="handleClose"
|
||||||
|
:visible.sync="batchEditUserAttributeVisible"
|
||||||
|
size="1000px" title="批量设置人员属性">
|
||||||
|
<el-timeline style="margin-right: 40px">
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-form :model="batchFormDataUserAttribute" label-width="100px" ref="batchFormUserAttribute">
|
||||||
|
<el-row :gutter="60">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="人员属性">
|
||||||
|
<dict-select
|
||||||
|
@change="checkUsers.map(v => $set(v, 'userAttribute', batchFormDataUserAttribute.userAttribute))"
|
||||||
|
clearable code="USER_ATTRIBUTE"
|
||||||
|
placeholder="请选择人员属性"
|
||||||
|
style="width: 300px"
|
||||||
|
v-model="batchFormDataUserAttribute.userAttribute"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-timeline-item>
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-table :data="checkUsers" class="vi-table" height="70vh" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column align="center" header-align="center" label="工号" prop="loginname" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="姓名" prop="username" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属单位" prop="unitName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属工会" prop="unionName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="人员属性" prop="userAttribute" show-overflow-tooltip width="300px">
|
||||||
|
<template scope="{row}">
|
||||||
|
<dict-select clearable code="USER_ATTRIBUTE" placeholder="请选择人员属性" style="width: 200px"
|
||||||
|
v-model="row.userAttribute"></dict-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-timeline-item>
|
||||||
|
</el-timeline>
|
||||||
|
|
||||||
|
<span style="position: absolute;bottom: 20px;right: 20px">
|
||||||
|
<el-button @click="batchEditUserAttributeVisible = false;checkUsers=[];$refs.table.clearSelection()">取消</el-button>
|
||||||
|
<el-button :loading="batchEditLoading" @click="doBatchEditUserAttribute" type="primary">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-drawer>
|
||||||
|
|
||||||
|
<el-drawer
|
||||||
|
:before-close="handleClose"
|
||||||
|
:visible.sync="batchEditMemberVisible"
|
||||||
|
size="1000px" title="批量设置会员">
|
||||||
|
<el-timeline style="margin-right: 40px">
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-form :model="batchFormDataMember" label-width="100px" ref="batchFormMember">
|
||||||
|
<el-row :gutter="60">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="是否会员">
|
||||||
|
<el-switch
|
||||||
|
@change="checkUsers.map(v => $set(v, 'member', batchFormDataMember.member))"
|
||||||
|
v-model="batchFormDataMember.member"
|
||||||
|
active-text="是"
|
||||||
|
inactive-text="否">
|
||||||
|
</el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="是否福利会员">
|
||||||
|
<el-switch
|
||||||
|
@change="checkUsers.map(v => $set(v, 'welfareMember', batchFormDataMember.welfareMember))"
|
||||||
|
v-model="batchFormDataMember.welfareMember"
|
||||||
|
active-text="是"
|
||||||
|
inactive-text="否">
|
||||||
|
</el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-timeline-item>
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-table :data="checkUsers" class="vi-table" height="70vh" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column align="center" header-align="center" label="工号" prop="loginname" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="姓名" prop="username" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属单位" prop="unitName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属工会" prop="unionName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="是否会员" prop="member" show-overflow-tooltip width="150px">
|
||||||
|
<template scope="{row}">
|
||||||
|
<el-switch v-model="row.member" active-text="是" inactive-text="否"></el-switch>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="是否福利会员" prop="welfareMember" show-overflow-tooltip width="150px">
|
||||||
|
<template scope="{row}">
|
||||||
|
<el-switch v-model="row.welfareMember" active-text="是" inactive-text="否"></el-switch>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-timeline-item>
|
||||||
|
</el-timeline>
|
||||||
|
|
||||||
|
<span style="position: absolute;bottom: 20px;right: 20px">
|
||||||
|
<el-button @click="batchEditMemberVisible = false;checkUsers=[];$refs.table.clearSelection()">取消</el-button>
|
||||||
|
<el-button :loading="batchEditLoading" @click="doBatchEditMember" type="primary">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-drawer>
|
||||||
|
|
||||||
|
<el-drawer
|
||||||
|
:before-close="handleClose"
|
||||||
|
:visible.sync="batchEditAidFundTypeVisible"
|
||||||
|
size="1000px" title="批量设置人员分类">
|
||||||
|
<el-timeline style="margin-right: 40px">
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-form :model="batchFormDataAidFundType" label-width="100px" ref="batchFormAidFundType">
|
||||||
|
<el-row :gutter="60">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="人员分类">
|
||||||
|
<dict-select
|
||||||
|
@change="checkUsers.map(v => $set(v, 'aidFundMemberUserType', batchFormDataAidFundType.aidFundMemberUserType))"
|
||||||
|
clearable code="AIDFUND_MEMBER_USER_TYPE"
|
||||||
|
placeholder="请选择人员分类"
|
||||||
|
style="width: 300px"
|
||||||
|
v-model="batchFormDataAidFundType.aidFundMemberUserType"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-timeline-item>
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-table :data="checkUsers" class="vi-table" height="70vh" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column align="center" header-align="center" label="工号" prop="loginname" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="姓名" prop="username" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属单位" prop="unitName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属工会" prop="unionName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="人员分类" prop="aidFundMemberUserType" show-overflow-tooltip width="300px">
|
||||||
|
<template scope="{row}">
|
||||||
|
<dict-select clearable code="AIDFUND_MEMBER_USER_TYPE" placeholder="请选择人员分类" style="width: 200px"
|
||||||
|
v-model="row.aidFundMemberUserType"></dict-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-timeline-item>
|
||||||
|
</el-timeline>
|
||||||
|
|
||||||
|
<span style="position: absolute;bottom: 20px;right: 20px">
|
||||||
|
<el-button @click="batchEditAidFundTypeVisible = false;checkUsers=[];$refs.table.clearSelection()">取消</el-button>
|
||||||
|
<el-button :loading="batchEditLoading" @click="doBatchEditAidFundType" type="primary">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-drawer>
|
||||||
|
|
||||||
|
<el-drawer
|
||||||
|
:before-close="handleClose"
|
||||||
|
:visible.sync="batchEditUserStateVisible"
|
||||||
|
size="1000px" title="批量设置在职状态">
|
||||||
|
<el-timeline style="margin-right: 40px">
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-form :model="batchFormDataUserState" label-width="100px" ref="batchFormUserState">
|
||||||
|
<el-row :gutter="60">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="在职状态">
|
||||||
|
<dict-select
|
||||||
|
@change="checkUsers.map(v => $set(v, 'userState', batchFormDataUserState.userState))"
|
||||||
|
clearable code="USER_STATE"
|
||||||
|
placeholder="请选择在职状态"
|
||||||
|
style="width: 300px"
|
||||||
|
v-model="batchFormDataUserState.userState"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-timeline-item>
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-table :data="checkUsers" class="vi-table" height="70vh" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column align="center" header-align="center" label="工号" prop="loginname" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="姓名" prop="username" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属单位" prop="unitName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="所属工会" prop="unionName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="在职状态" prop="userState" show-overflow-tooltip width="300px">
|
||||||
|
<template scope="{row}">
|
||||||
|
<dict-select clearable code="USER_STATE" placeholder="请选择在职状态" style="width: 200px"
|
||||||
|
v-model="row.userState"></dict-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-timeline-item>
|
||||||
|
</el-timeline>
|
||||||
|
|
||||||
|
<span style="position: absolute;bottom: 20px;right: 20px">
|
||||||
|
<el-button @click="batchEditUserStateVisible = false;checkUsers=[];$refs.table.clearSelection()">取消</el-button>
|
||||||
|
<el-button :loading="batchEditLoading" @click="doBatchEditUserState" type="primary">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-drawer>
|
||||||
|
|
||||||
|
<el-drawer
|
||||||
|
:before-close="handleClose"
|
||||||
|
:visible.sync="unitMoveVisible"
|
||||||
|
size="1000px" title="批量单位调整">
|
||||||
|
<el-timeline style="margin-right: 40px">
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-form :model="unitMoveFormData" label-width="100px" ref="unitMoveForm">
|
||||||
|
<el-row :gutter="60">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="所属工会">
|
||||||
|
<el-select clearable filterable placeholder="请选择所属工会" style="width: 300px"
|
||||||
|
v-model="unitMoveFormData.unionId" @change="moveUnionsChange">
|
||||||
|
<el-option v-for="item in unitMoveUnions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="所属单位">
|
||||||
|
<el-select clearable filterable placeholder="请选择所属单位" style="width: 300px"
|
||||||
|
v-model="unitMoveFormData.unitId" @change="moveUnitChange">
|
||||||
|
<el-option v-for="item in unitMoveUnits" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-timeline-item>
|
||||||
|
<el-timeline-item placement="top" timestamp="">
|
||||||
|
<el-table :data="checkUsers" class="vi-table" height="70vh" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column align="center" header-align="center" label="工号" prop="loginname" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="姓名" prop="username" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="当前单位" prop="unitName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="当前工会" prop="unionName" show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="调整后工会" show-overflow-tooltip>
|
||||||
|
<template>{{ unitMoveFormData.unionName }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="调整后单位" show-overflow-tooltip>
|
||||||
|
<template>{{ unitMoveFormData.unitName }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-timeline-item>
|
||||||
|
</el-timeline>
|
||||||
|
|
||||||
|
<span style="position: absolute;bottom: 20px;right: 20px">
|
||||||
|
<el-button @click="unitMoveVisible = false;checkUsers=[];$refs.table.clearSelection()">取消</el-button>
|
||||||
|
<el-button :loading="batchEditLoading" @click="doUnitMove" type="primary">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-drawer>
|
||||||
</guava>
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -244,10 +513,31 @@ layout("/layouts/platform.html"){
|
|||||||
changed: 2,
|
changed: 2,
|
||||||
isMember: 1,
|
isMember: 1,
|
||||||
changeTypes: [],
|
changeTypes: [],
|
||||||
|
aidFundMemberUserType: "",
|
||||||
|
userAttribute: "",
|
||||||
},
|
},
|
||||||
unions: [],
|
unions: [],
|
||||||
units: [],
|
units: [],
|
||||||
id: "",
|
id: "",
|
||||||
|
checkUsers: [],
|
||||||
|
batchEditLoading: false,
|
||||||
|
batchEditUserAttributeVisible: false,
|
||||||
|
batchEditMemberVisible: false,
|
||||||
|
batchEditAidFundTypeVisible: false,
|
||||||
|
batchEditUserStateVisible: false,
|
||||||
|
unitMoveVisible: false,
|
||||||
|
batchFormDataUserAttribute: {},
|
||||||
|
batchFormDataMember: {member: false, welfareMember: false},
|
||||||
|
batchFormDataAidFundType: {},
|
||||||
|
batchFormDataUserState: {},
|
||||||
|
unitMoveFormData: {
|
||||||
|
unitId: "",
|
||||||
|
unionId: "",
|
||||||
|
unitName: "",
|
||||||
|
unionName: ""
|
||||||
|
},
|
||||||
|
unitMoveUnions: [],
|
||||||
|
unitMoveUnits: [],
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: "loginname", label: "工号", width: 120, fixed: "left"},
|
{ prop: "loginname", label: "工号", width: 120, fixed: "left"},
|
||||||
{ prop: "username", label: "姓名", width: 120, fixed: "left" },
|
{ prop: "username", label: "姓名", width: 120, fixed: "left" },
|
||||||
@@ -258,11 +548,13 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系电话", width: 120 },
|
{ prop: "mobile", label: "联系电话", width: 120 },
|
||||||
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
||||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||||
{ prop: "personType", label: "教职工类别", width: 120, sortable: true },
|
{ prop: "personType", label: "教职工类别", width: 120, sortable: true, checked: 0 },
|
||||||
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||||
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
||||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||||
|
{ prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||||
|
{ prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||||
{ prop: "idCard", 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: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||||
@@ -381,6 +673,160 @@ layout("/layouts/platform.html"){
|
|||||||
invertCheck() {
|
invertCheck() {
|
||||||
const all = this.tableColumns.map(c => c.prop);
|
const all = this.tableColumns.map(c => c.prop);
|
||||||
this.checkedFields = all.filter(p => !this.checkedFields.includes(p));
|
this.checkedFields = all.filter(p => !this.checkedFields.includes(p));
|
||||||
|
},
|
||||||
|
tableHandleSelectionChange(val) {
|
||||||
|
this.checkUsers = JSON.parse(JSON.stringify([...val]))
|
||||||
|
},
|
||||||
|
handleClose(done) {
|
||||||
|
this.$confirm("确认关闭?").then(() => {
|
||||||
|
done()
|
||||||
|
this.checkUsers = []
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
openBatchEditUserAttribute() {
|
||||||
|
this.batchFormDataUserAttribute = {}
|
||||||
|
this.batchEditUserAttributeVisible = true
|
||||||
|
},
|
||||||
|
openBatchEditMember() {
|
||||||
|
this.batchFormDataMember = {member: false, welfareMember: false}
|
||||||
|
this.batchEditMemberVisible = true
|
||||||
|
},
|
||||||
|
openBatchEditAidFundType() {
|
||||||
|
this.batchFormDataAidFundType = {}
|
||||||
|
this.batchEditAidFundTypeVisible = true
|
||||||
|
},
|
||||||
|
openBatchEditUserState() {
|
||||||
|
this.batchFormDataUserState = {}
|
||||||
|
this.batchEditUserStateVisible = true
|
||||||
|
},
|
||||||
|
async openUnitMove() {
|
||||||
|
this.unitMoveFormData = {
|
||||||
|
unitId: "",
|
||||||
|
unionId: "",
|
||||||
|
unitName: "",
|
||||||
|
unionName: ""
|
||||||
|
}
|
||||||
|
this.unitMoveUnits = []
|
||||||
|
this.unitMoveVisible = true
|
||||||
|
const isAdmin = this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])
|
||||||
|
if (isAdmin) {
|
||||||
|
this.unitMoveUnions = await this.$businessTool.listUnion(this.pageForm.unionId)
|
||||||
|
} else {
|
||||||
|
this.unitMoveUnions = await this.$businessTool.listUnion(this.$store.state.user.union.id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async moveUnionsChange(val) {
|
||||||
|
if (val) {
|
||||||
|
this.unitMoveUnits = await this.$businessTool.listUnit(val)
|
||||||
|
const union = this.unitMoveUnions.find(v => v.id === val)
|
||||||
|
this.$set(this.unitMoveFormData, "unionName", union ? union.name : "")
|
||||||
|
this.$set(this.unitMoveFormData, "unitId", "")
|
||||||
|
this.$set(this.unitMoveFormData, "unitName", "")
|
||||||
|
} else {
|
||||||
|
this.$set(this.unitMoveFormData, "unitId", "")
|
||||||
|
this.$set(this.unitMoveFormData, "unitName", "")
|
||||||
|
this.$set(this.unitMoveFormData, "unionName", "")
|
||||||
|
this.unitMoveUnits = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
moveUnitChange(val) {
|
||||||
|
if (val) {
|
||||||
|
const unit = this.unitMoveUnits.find(v => v.id === val)
|
||||||
|
this.$set(this.unitMoveFormData, "unitName", unit ? unit.name : "")
|
||||||
|
} else {
|
||||||
|
this.$set(this.unitMoveFormData, "unitName", "")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async doBatchEditUserAttribute() {
|
||||||
|
const batch = this.checkUsers.map(v => {
|
||||||
|
return {id: v.id, userAttribute: v.userAttribute}
|
||||||
|
})
|
||||||
|
this.batchEditLoading = true
|
||||||
|
const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateUserAttribute", {users: JSON.stringify(batch)})
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.$message.success(resp.msg)
|
||||||
|
this.pageData()
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
this.batchEditUserAttributeVisible = false
|
||||||
|
this.checkUsers = []
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.msg)
|
||||||
|
}
|
||||||
|
this.batchEditLoading = false
|
||||||
|
},
|
||||||
|
async doBatchEditMember() {
|
||||||
|
const batch = this.checkUsers.map(v => {
|
||||||
|
return {id: v.id, member: v.member, welfareMember: v.welfareMember}
|
||||||
|
})
|
||||||
|
this.batchEditLoading = true
|
||||||
|
const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateMember", {users: JSON.stringify(batch)})
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.$message.success(resp.msg)
|
||||||
|
this.pageData()
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
this.batchEditMemberVisible = false
|
||||||
|
this.checkUsers = []
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.msg)
|
||||||
|
}
|
||||||
|
this.batchEditLoading = false
|
||||||
|
},
|
||||||
|
async doBatchEditAidFundType() {
|
||||||
|
const batch = this.checkUsers.map(v => {
|
||||||
|
return {id: v.id, aidFundMemberUserType: v.aidFundMemberUserType}
|
||||||
|
})
|
||||||
|
this.batchEditLoading = true
|
||||||
|
const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateAidFundType", {users: JSON.stringify(batch)})
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.$message.success(resp.msg)
|
||||||
|
this.pageData()
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
this.batchEditAidFundTypeVisible = false
|
||||||
|
this.checkUsers = []
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.msg)
|
||||||
|
}
|
||||||
|
this.batchEditLoading = false
|
||||||
|
},
|
||||||
|
async doBatchEditUserState() {
|
||||||
|
const batch = this.checkUsers.map(v => {
|
||||||
|
return {id: v.id, userState: v.userState}
|
||||||
|
})
|
||||||
|
this.batchEditLoading = true
|
||||||
|
const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateUserState", {users: JSON.stringify(batch)})
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.$message.success(resp.msg)
|
||||||
|
this.pageData()
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
this.batchEditUserStateVisible = false
|
||||||
|
this.checkUsers = []
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.msg)
|
||||||
|
}
|
||||||
|
this.batchEditLoading = false
|
||||||
|
},
|
||||||
|
async doUnitMove() {
|
||||||
|
if (!this.unitMoveFormData.unitId) {
|
||||||
|
this.$message.warning("请选择新单位!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const params = {
|
||||||
|
unitId: this.unitMoveFormData.unitId,
|
||||||
|
userIds: JSON.stringify(this.checkUsers.map(v => v.id))
|
||||||
|
}
|
||||||
|
this.batchEditLoading = true
|
||||||
|
const resp = await this.$axios.post("/platform/member/change/manage/unitMove", params)
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.$message.success(resp.msg)
|
||||||
|
this.pageData()
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
this.unitMoveVisible = false
|
||||||
|
this.checkUsers = []
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.msg)
|
||||||
|
}
|
||||||
|
this.batchEditLoading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|||||||
@@ -35,6 +35,14 @@ layout("/layouts/platform.html"){
|
|||||||
<dict-select v-model="pageForm.changeType" placeholder="变更类型" @change="doSearch"
|
<dict-select v-model="pageForm.changeType" placeholder="变更类型" @change="doSearch"
|
||||||
code="MEMBER_CHANGE_TYPE"></dict-select>
|
code="MEMBER_CHANGE_TYPE"></dict-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="人员分类">
|
||||||
|
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||||
|
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="人员属性">
|
||||||
|
<dict-select v-model="pageForm.userAttribute" placeholder="请选择人员属性" @change="doSearch"
|
||||||
|
code="USER_ATTRIBUTE"></dict-select>
|
||||||
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
@@ -132,6 +140,16 @@ layout("/layouts/platform.html"){
|
|||||||
unions: [],
|
unions: [],
|
||||||
units: [],
|
units: [],
|
||||||
changeTypeData: [],
|
changeTypeData: [],
|
||||||
|
pageForm: {
|
||||||
|
searchKeyword: "",
|
||||||
|
unionId: "",
|
||||||
|
unitId: "",
|
||||||
|
userState: "",
|
||||||
|
personType: "",
|
||||||
|
changeType: "",
|
||||||
|
aidFundMemberUserType: "",
|
||||||
|
userAttribute: ""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const MEMBER_INFO = {
|
const MEMBER_INFO = {
|
||||||
template: /*language=html*/ `
|
template: /*language=html*/ `
|
||||||
<div>
|
<div>
|
||||||
<!-- 基本信息 -->
|
<!-- 基本信息 -->
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<!-- 第 3 行 -->
|
<!-- 第 3 行 -->
|
||||||
<el-descriptions-item label="证件类型">{{ viewData.idCardType }}</el-descriptions-item>
|
<el-descriptions-item label="证件类型">{{ viewData.idCardType }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="身份证号码">{{ viewData.idcard }}</el-descriptions-item>
|
<el-descriptions-item label="身份证号码">{{ viewData.idCard }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
|
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
|
||||||
|
|
||||||
<!-- 第 4 行 -->
|
<!-- 第 4 行 -->
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<el-descriptions-item label="所属校区">{{ viewData.campus }}</el-descriptions-item>
|
<el-descriptions-item label="所属校区">{{ viewData.campus }}</el-descriptions-item>
|
||||||
|
|
||||||
<!-- 第 2 行 -->
|
<!-- 第 2 行 -->
|
||||||
<el-descriptions-item label="进校时间">{{ viewData.arrivalAtSchoolDate ? $moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD') : null }}</el-descriptions-item>
|
<el-descriptions-item label="入校时间">{{ viewData.arrivalAtSchoolDate ? $moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD') : null }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="从教年月">{{ viewData.teachingTime ? $moment(viewData.teachingTime).format('YYYY-MM-DD') : null }}</el-descriptions-item>
|
<el-descriptions-item label="从教年月">{{ viewData.teachingTime ? $moment(viewData.teachingTime).format('YYYY-MM-DD') : null }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="预/已离校时间">{{ viewData.expectedLeaveSchoolDate ? $moment(viewData.expectedLeaveSchoolDate).format('YYYY-MM-DD') : null }}</el-descriptions-item>
|
<el-descriptions-item label="预/已离校时间">{{ viewData.expectedLeaveSchoolDate ? $moment(viewData.expectedLeaveSchoolDate).format('YYYY-MM-DD') : null }}</el-descriptions-item>
|
||||||
|
|
||||||
@@ -82,6 +82,9 @@
|
|||||||
<el-descriptions-item label="行政级别(管理岗位)">{{ viewData.administrativeLevel }}</el-descriptions-item>
|
<el-descriptions-item label="行政级别(管理岗位)">{{ viewData.administrativeLevel }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="岗级">{{ viewData.positionLevel }}</el-descriptions-item>
|
<el-descriptions-item label="岗级">{{ viewData.positionLevel }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="行政岗级">{{ viewData.administrativePositionLevel }}</el-descriptions-item>
|
<el-descriptions-item label="行政岗级">{{ viewData.administrativePositionLevel }}</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="人员分类">{{ viewData.aidFundMemberUserType }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="人员属性">{{ viewData.userAttribute }}</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
@@ -100,4 +103,4 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -45,6 +45,14 @@ const COMMON_QUERY = {
|
|||||||
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
|
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
|
||||||
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
|
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></dict-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="人员分类">
|
||||||
|
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||||
|
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="人员属性">
|
||||||
|
<dict-select v-model="pageForm.userAttribute" placeholder="请选择人员属性" @change="doSearch"
|
||||||
|
code="USER_ATTRIBUTE"></dict-select>
|
||||||
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
`,
|
`,
|
||||||
store,
|
store,
|
||||||
@@ -68,6 +76,8 @@ const COMMON_QUERY = {
|
|||||||
userStates: [],
|
userStates: [],
|
||||||
personTypes: [],
|
personTypes: [],
|
||||||
preparedBys: [],
|
preparedBys: [],
|
||||||
|
aidFundMemberUserType: '',
|
||||||
|
userAttribute: '',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+348
@@ -0,0 +1,348 @@
|
|||||||
|
const MEMBER_ADD_FORM = {
|
||||||
|
template: /*language=HTML*/ `
|
||||||
|
<div>
|
||||||
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
||||||
|
<el-descriptions :column="3" border>
|
||||||
|
<el-descriptions-item label="工号">
|
||||||
|
<el-form-item prop="loginname">
|
||||||
|
<el-input v-model="formData.loginname" placeholder="请输入工号" size="small"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="姓名">
|
||||||
|
<el-form-item prop="username">
|
||||||
|
<el-input v-model="formData.username" placeholder="请输入姓名" size="small"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="性别">
|
||||||
|
<el-form-item prop="sex">
|
||||||
|
<el-radio-group v-model="formData.sex" size="small">
|
||||||
|
<el-radio border label="男">男</el-radio>
|
||||||
|
<el-radio border label="女">女</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="民族">
|
||||||
|
<el-form-item prop="nation">
|
||||||
|
<dict-select style="width: 100%" placeholder="请选择民族" v-model="formData.nation"
|
||||||
|
code="USER_NATION"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="出生日期">
|
||||||
|
<el-form-item prop="birthday">
|
||||||
|
<el-date-picker v-model="formData.birthday" type="date"
|
||||||
|
placeholder="请选择出生日期"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="政治面貌">
|
||||||
|
<el-form-item prop="political">
|
||||||
|
<dict-select style="width: 100%" placeholder="请选择政治面貌" v-model="formData.political"
|
||||||
|
code="USER_POLITICAL"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-descriptions-item label="学历">
|
||||||
|
<el-form-item prop="education">
|
||||||
|
<dict-select style="width: 100%" placeholder="请选择学历" v-model="formData.education"
|
||||||
|
code="USER_EDUCATION"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="学位">
|
||||||
|
<el-form-item prop="academicDegree">
|
||||||
|
<dict-select style="width: 100%" placeholder="请选择学位" v-model="formData.academicDegree"
|
||||||
|
code="USER_ACADEMIC_DEGREE"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="职称">
|
||||||
|
<el-form-item prop="professionalTitle">
|
||||||
|
<dict-select v-model="formData.professionalTitle" code="TECHNICAL_TITLE_LEVEL"
|
||||||
|
style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item label="党政职务">-->
|
||||||
|
<!-- <el-form-item prop="position">-->
|
||||||
|
<!-- <el-input v-model="formData.position" placeholder="请输入党政职务"-->
|
||||||
|
<!-- maxlength="50"></el-input>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-descriptions-item>-->
|
||||||
|
|
||||||
|
<el-descriptions-item label="所属单位">
|
||||||
|
<el-form-item prop="unitId">
|
||||||
|
<el-select clearable filterable placeholder="请选择所属单位" style="width: 100%"
|
||||||
|
@change="getUnionName"
|
||||||
|
v-model="formData.unitId">
|
||||||
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in units"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="所属工会">
|
||||||
|
<el-form-item prop="unionId">
|
||||||
|
<el-select disabled clearable filterable placeholder="请选择所属工会" style="width: 100%"
|
||||||
|
v-model="formData.unionId">
|
||||||
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in unions"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="所属校区">
|
||||||
|
<el-form-item prop="campus">
|
||||||
|
<dict-select style="width: 100%" placeholder="请选择所属校区" v-model="formData.campus"
|
||||||
|
code="USER_CAMPUS"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-descriptions-item label="在职状态">
|
||||||
|
<el-form-item prop="userState">
|
||||||
|
<dict-select v-model="formData.userState" code="USER_STATE"
|
||||||
|
style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="人员属性">
|
||||||
|
<el-form-item prop="userAttribute">
|
||||||
|
<dict-select v-model="formData.userAttribute" code="USER_ATTRIBUTE"
|
||||||
|
style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="人员分类">
|
||||||
|
<el-form-item prop="aidFundMemberUserType">
|
||||||
|
<dict-select v-model="formData.aidFundMemberUserType" code="AIDFUND_MEMBER_USER_TYPE"
|
||||||
|
style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item label="编制类别">-->
|
||||||
|
<!-- <el-form-item prop="preparedBy">-->
|
||||||
|
<!-- <dict-select v-model="formData.preparedBy" code="USER_PREPARED_BY_TYPE"-->
|
||||||
|
<!-- style="width: 100%"></dict-select>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-descriptions-item>-->
|
||||||
|
<!-- <el-descriptions-item label="教职工类别">-->
|
||||||
|
<!-- <el-form-item prop="personType">-->
|
||||||
|
<!-- <dict-select v-model="formData.personType" code="USER_PERSON_TYPE"-->
|
||||||
|
<!-- style="width: 100%"></dict-select>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-descriptions-item>-->
|
||||||
|
|
||||||
|
<el-descriptions-item label="身份证号码">
|
||||||
|
<el-form-item prop="idCard">
|
||||||
|
<el-input v-model="formData.idCard" placeholder="请输入身份证号码" maxlength="18"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="联系电话">
|
||||||
|
<el-form-item prop="mobile">
|
||||||
|
<el-input v-model="formData.mobile" placeholder="请输入联系电话" maxlength="32"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="电子邮箱">
|
||||||
|
<el-form-item prop="email">
|
||||||
|
<el-input v-model="formData.email" placeholder="请输入电子邮箱" maxlength="50"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
|
<el-descriptions-item label="婚姻状况">
|
||||||
|
<el-form-item prop="marriage">
|
||||||
|
<dict-select v-model="formData.marriage" code="USER_MARRIAGE"
|
||||||
|
style="width: 100%"></dict-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="入校时间">
|
||||||
|
<el-form-item prop="arrivalAtSchoolDate">
|
||||||
|
<el-date-picker v-model="formData.arrivalAtSchoolDate" type="date"
|
||||||
|
placeholder="请选择入校时间"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="工作时间">
|
||||||
|
<el-form-item prop="workDate">
|
||||||
|
<el-date-picker v-model="formData.workDate" type="date"
|
||||||
|
placeholder="请选择工作时间"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
style="width: 100%"></el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="家庭住址" :span="3">
|
||||||
|
<el-form-item prop="homeAddress">
|
||||||
|
<el-input v-model="formData.homeAddress" placeholder="请输入家庭住址" maxlength="100"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="家庭主要成员" :span="3">
|
||||||
|
<el-form-item prop="families">
|
||||||
|
<el-table :data="formData.families" border size="small">
|
||||||
|
<el-table-column label="关系" prop="relation">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-input v-model="row.relation" maxlength="50"
|
||||||
|
placeholder="请输入与本人关系"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="姓名" prop="name">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-input v-model="row.name" maxlength="50" placeholder="请输入姓名"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="工作单位" prop="unit">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-input v-model="row.unit" maxlength="100"
|
||||||
|
placeholder="请输入工作单位"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="备注" prop="remark">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-input v-model="row.remark" maxlength="100" placeholder="请输入备注"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column width="100px">
|
||||||
|
<template slot="header" slot-scope="scope">
|
||||||
|
<el-button type="primary" size="mini"
|
||||||
|
@click="formData.families.push({})">添加
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
size="mini"
|
||||||
|
:disabled="formData.families.length===0"
|
||||||
|
@click="formData.families.splice(scope.$index,1)"
|
||||||
|
></el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="个人简况" :span="3">
|
||||||
|
<el-form-item prop="personalData">
|
||||||
|
<text-editor v-model="formData.personalData"></text-editor>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<!-- <el-descriptions-item label="会员状态">-->
|
||||||
|
<!-- <el-form-item prop="member">-->
|
||||||
|
<!-- <el-switch v-model="formData.member" active-text="是" inactive-text="否"></el-switch>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-descriptions-item>-->
|
||||||
|
<!-- <el-descriptions-item label="福利会员状态">-->
|
||||||
|
<!-- <el-form-item prop="welfareMember">-->
|
||||||
|
<!-- <el-switch v-model="formData.welfareMember" active-text="是" inactive-text="否"></el-switch>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </el-descriptions-item>-->
|
||||||
|
<!-- <el-descriptions-item></el-descriptions-item>-->
|
||||||
|
|
||||||
|
<el-descriptions-item label="特长及获奖情况" :span="3">
|
||||||
|
<el-form-item prop="specialty">
|
||||||
|
<text-editor v-model="formData.specialty"></text-editor>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<div style="margin-top: 20px; text-align: right;">
|
||||||
|
<el-button @click="handleCancel">取消</el-button>
|
||||||
|
<el-button type="primary" @click="handleSubmit" :loading="submitLoading">提交</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
store,
|
||||||
|
dicts: ["USER_NATION", "USER_POLITICAL", "USER_EDUCATION", "USER_ACADEMIC_DEGREE", "USER_CAMPUS",
|
||||||
|
"USER_STATE", "USER_PREPARED_BY_TYPE", "USER_PERSON_TYPE", "USER_MARRIAGE","AIDFUND_MEMBER_USER_TYPE","USER_ATTRIBUTE"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
loginname: '',
|
||||||
|
username: '',
|
||||||
|
sex: '男',
|
||||||
|
nation: '',
|
||||||
|
birthday: '',
|
||||||
|
political: '',
|
||||||
|
education: '',
|
||||||
|
academicDegree: '',
|
||||||
|
position: '',
|
||||||
|
unitId: '',
|
||||||
|
unionId: '',
|
||||||
|
campus: '',
|
||||||
|
userState: '',
|
||||||
|
preparedBy: '',
|
||||||
|
personType: '',
|
||||||
|
idCard: '',
|
||||||
|
mobile: '',
|
||||||
|
email: '',
|
||||||
|
marriage: '',
|
||||||
|
arrivalAtSchoolDate: '',
|
||||||
|
homeAddress: '',
|
||||||
|
families: [],
|
||||||
|
personalData: '',
|
||||||
|
specialty: '',
|
||||||
|
member: false,
|
||||||
|
welfareMember: false
|
||||||
|
},
|
||||||
|
formRules: {
|
||||||
|
loginname: [{ required: true, message: '请输入工号', trigger: 'blur' }],
|
||||||
|
username: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
|
||||||
|
sex: [{ required: true, message: '请选择性别', trigger: 'change' }],
|
||||||
|
idCard: [{ required: true, message: '请输入身份证号码', trigger: 'blur' }],
|
||||||
|
mobile: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
|
||||||
|
unitId: [{ required: true, message: '请选择工作单位', trigger: 'change' }],
|
||||||
|
unionId: [{ required: true, message: '请选择所属工会', trigger: 'change' }],
|
||||||
|
userState: [{ required: true, message: '请选择在职状态', trigger: 'change' }]
|
||||||
|
},
|
||||||
|
units: [],
|
||||||
|
unions: [],
|
||||||
|
submitLoading: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async initUnits() {
|
||||||
|
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
|
||||||
|
this.units = await this.$businessTool.listUnit()
|
||||||
|
this.unions = await this.$businessTool.listUnion()
|
||||||
|
} else {
|
||||||
|
this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id)
|
||||||
|
this.unions = await this.$businessTool.listUnion(this.$store.state.user.union.id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getUnionName(unitId) {
|
||||||
|
const unit = this.units.find(u => u.id === unitId)
|
||||||
|
if (unit && unit.unionId) {
|
||||||
|
this.formData.unionId = unit.unionId
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleSubmit() {
|
||||||
|
this.$refs.formRef.validate((valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
const loading = createLoading()
|
||||||
|
this.$axios.post('/platform/member/info/input/add', this.formData).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
commonUtil.pjaxPush("/platform/member/info/input")
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel() {
|
||||||
|
this.$refs.formRef.resetFields()
|
||||||
|
this.formData.families = []
|
||||||
|
this.$parent.$parent.close()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.initUnits()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -126,11 +126,13 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系电话", width: 120 },
|
{ prop: "mobile", label: "联系电话", width: 120 },
|
||||||
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
||||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||||
{ prop: "personType", label: "教职工类别", width: 120, sortable: true },
|
{ prop: "personType", label: "教职工类别", width: 120, sortable: true, checked: 0 },
|
||||||
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||||
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
||||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||||
|
{ prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||||
|
{ prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||||
{ prop: "idCard", 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: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ layout("/layouts/platform.html"){
|
|||||||
code="USER_PREPARED_BY_TYPE"
|
code="USER_PREPARED_BY_TYPE"
|
||||||
></dict-select>
|
></dict-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="人员分类">
|
||||||
|
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch" code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="人员属性">
|
||||||
|
<dict-select v-model="pageForm.userAttribute" placeholder="请选择人员属性" @change="doSearch" code="USER_ATTRIBUTE"></dict-select>
|
||||||
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
@@ -103,13 +109,15 @@ layout("/layouts/platform.html"){
|
|||||||
new Vue({
|
new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
dicts: ["USER_STATE", "USER_PERSON_TYPE", "MEMBER_CHANGE_TYPE"],
|
dicts: ["USER_STATE", "USER_PERSON_TYPE", "MEMBER_CHANGE_TYPE", "AIDFUND_MEMBER_USER_TYPE", "USER_ATTRIBUTE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pageForm: {
|
pageForm: {
|
||||||
year: new Date().getFullYear() - 1 + "",
|
year: new Date().getFullYear() - 1 + "",
|
||||||
memberSearchName: "",
|
memberSearchName: "",
|
||||||
memberSearchKeyWord: ""
|
memberSearchKeyWord: "",
|
||||||
|
aidFundMemberUserType: "",
|
||||||
|
userAttribute: ""
|
||||||
},
|
},
|
||||||
userId: "",
|
userId: "",
|
||||||
unions: [],
|
unions: [],
|
||||||
|
|||||||
@@ -0,0 +1,186 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
|
||||||
|
<div id="app">
|
||||||
|
<guava ref="guava">
|
||||||
|
<template>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="年度">
|
||||||
|
<el-date-picker
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="pageForm.year"
|
||||||
|
value-format="yyyy"
|
||||||
|
type="year"
|
||||||
|
placeholder="请选择年度"
|
||||||
|
></el-date-picker>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="姓名/工号">
|
||||||
|
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="模糊查询">
|
||||||
|
<member-cnd @cnd="(v)=>pageForm={...pageForm,...v}"></member-cnd>
|
||||||
|
</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="在职状态">
|
||||||
|
<dict-select v-model="pageForm.userState" placeholder="请选择在职状态" @change="doSearch" code="USER_STATE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="教职工类别">
|
||||||
|
<dict-select v-model="pageForm.personType" placeholder="请选择教职工类别" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<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.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch" code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="人员属性">
|
||||||
|
<dict-select v-model="pageForm.userAttribute" placeholder="请选择人员属性" @change="doSearch" code="USER_ATTRIBUTE"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card shadow="never" class="mt10">
|
||||||
|
<table-tool label="用户列表">
|
||||||
|
<el-button class="m10" type="primary" size="small" @click="openAdd">新增人员</el-button>
|
||||||
|
</table-tool>
|
||||||
|
|
||||||
|
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" class="vi-table" ref="table" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
header-align="center"
|
||||||
|
type="index"
|
||||||
|
:index="indexMethod"
|
||||||
|
label="序号"
|
||||||
|
width="80px"
|
||||||
|
></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
header-align="center"
|
||||||
|
v-for="column in tableColumns"
|
||||||
|
show-overflow-tooltip
|
||||||
|
:label="column.label"
|
||||||
|
:prop="column.prop"
|
||||||
|
:sortable="column.sortable"
|
||||||
|
></el-table-column>
|
||||||
|
<el-table-column label="操作" width="100px">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-button @click="openView(row)" size="mini">查看</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #view>
|
||||||
|
<member-info ref="memberInfoRef"></member-info>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #edit>
|
||||||
|
<member-add-form ref="memberAddFormRef"></member-add-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</guava>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script nonce="${cspNonce!}">
|
||||||
|
<!--#include("../../common/info/memberInfo.js"){}#-->
|
||||||
|
<!--#include("../common/memberAddForm.js"){}#-->
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
el: "#app",
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
dicts: ["USER_STATE", "USER_PERSON_TYPE", "MEMBER_CHANGE_TYPE","AIDFUND_MEMBER_USER_TYPE","USER_ATTRIBUTE"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageForm: {
|
||||||
|
year: new Date().getFullYear() - 1 + "",
|
||||||
|
memberSearchName: "",
|
||||||
|
memberSearchKeyWord: ""
|
||||||
|
},
|
||||||
|
userId: "",
|
||||||
|
unions: [],
|
||||||
|
units: [],
|
||||||
|
addDialogVisible: false,
|
||||||
|
tableColumns: [
|
||||||
|
{ prop: "loginname", label: "工号" },
|
||||||
|
{ prop: "username", label: "姓名" },
|
||||||
|
{ prop: "sex", label: "性别" },
|
||||||
|
{ prop: "mobile", label: "联系电话" },
|
||||||
|
{ prop: "userState", label: "在职状态", sortable: true },
|
||||||
|
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||||
|
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||||
|
{ prop: "createdAtStr", label: "录入时间", sortable: true },
|
||||||
|
{ prop: "createdByUsername", label: "录入人", sortable: true },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
"member-cnd": httpVueLoader("/components/module/member/MemberCnd.vue?v=" + new Date().getTime()),
|
||||||
|
"member-info": MEMBER_INFO,
|
||||||
|
"member-add-form": MEMBER_ADD_FORM
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openAdd() {
|
||||||
|
this.$refs.guava.edit(() => {
|
||||||
|
// 可以在这里初始化表单数据
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleAddSuccess() {
|
||||||
|
this.doSearch()
|
||||||
|
},
|
||||||
|
openView(row) {
|
||||||
|
this.$refs.guava.view(() => {
|
||||||
|
this.$refs.memberInfoRef.onOpen(row.userId)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
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(this.$store.state.user.union.id)
|
||||||
|
this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async flushUnits() {
|
||||||
|
this.$set(this.pageForm, "unitId", null)
|
||||||
|
this.units = []
|
||||||
|
if (this.pageForm.unionId) {
|
||||||
|
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.pageData()
|
||||||
|
this.initData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
+7
-1
@@ -158,11 +158,13 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系电话", width: 120 },
|
{ prop: "mobile", label: "联系电话", width: 120 },
|
||||||
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
||||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||||
{ prop: "personType", label: "教职工类别", width: 120, sortable: true },
|
{ prop: "personType", label: "教职工类别", width: 120, sortable: true, checked: 0 },
|
||||||
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
{ prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||||
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
||||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||||
|
{ prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||||
|
{ prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||||
{ prop: "idCard", 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: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||||
@@ -201,6 +203,8 @@ layout("/layouts/platform.html"){
|
|||||||
pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes)
|
pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes)
|
||||||
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
||||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||||
|
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||||
|
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||||
const data = this.tableColumns.filter(item => this.checkedFields.includes(item.prop)).map(item => {
|
const data = this.tableColumns.filter(item => this.checkedFields.includes(item.prop)).map(item => {
|
||||||
return {prop: item.prop, label: item.label}
|
return {prop: item.prop, label: item.label}
|
||||||
@@ -224,6 +228,8 @@ layout("/layouts/platform.html"){
|
|||||||
pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes)
|
pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes)
|
||||||
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
||||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||||
|
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||||
|
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||||
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||||
pageForm.memberStatus = JSON.stringify(this.pageForm.memberStatus)
|
pageForm.memberStatus = JSON.stringify(this.pageForm.memberStatus)
|
||||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||||
|
|||||||
+62
@@ -112,6 +112,56 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</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 aidFundMemberUserTypeOptions"
|
||||||
|
:key="item.code"
|
||||||
|
:type="item.name"
|
||||||
|
:effect="pageForm.aidFundMemberUserTypes.includes(item.code)?'dark':'plain'"
|
||||||
|
@click="tagClick('aidFundMemberUserTypes',item.code)">
|
||||||
|
{{ item.name }}
|
||||||
|
</el-tag>
|
||||||
|
|
||||||
|
<el-link type="danger"
|
||||||
|
v-if="aidFundMemberUserTypeOptions.length&&pageForm.aidFundMemberUserTypes.length"
|
||||||
|
:underline="false"
|
||||||
|
@click="pageForm.aidFundMemberUserTypes=[];doSearch()">清空
|
||||||
|
</el-link>
|
||||||
|
<el-link :underline="false"
|
||||||
|
@click="pageForm.aidFundMemberUserTypes=aidFundMemberUserTypeOptions.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">
|
||||||
|
<el-tag
|
||||||
|
style="margin-right: 10px;cursor: pointer"
|
||||||
|
v-for="item in userAttributeOptions"
|
||||||
|
:key="item.code"
|
||||||
|
:type="item.name"
|
||||||
|
:effect="pageForm.userAttributes.includes(item.code)?'dark':'plain'"
|
||||||
|
@click="tagClick('userAttributes',item.code)">
|
||||||
|
{{ item.name }}
|
||||||
|
</el-tag>
|
||||||
|
|
||||||
|
<el-link type="danger"
|
||||||
|
v-if="userAttributeOptions.length&&pageForm.userAttributes.length"
|
||||||
|
:underline="false"
|
||||||
|
@click="pageForm.userAttributes=[];doSearch()">清空
|
||||||
|
</el-link>
|
||||||
|
<el-link :underline="false"
|
||||||
|
@click="pageForm.userAttributes=userAttributeOptions.map(p=>p.code);doSearch()"
|
||||||
|
type="success">全部
|
||||||
|
</el-link>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
<el-row type="flex" align="middle" class="query-row">
|
<el-row type="flex" align="middle" class="query-row">
|
||||||
<el-col class="query-row-content">
|
<el-col class="query-row-content">
|
||||||
<el-row>
|
<el-row>
|
||||||
@@ -208,6 +258,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
|||||||
searchName: "username",
|
searchName: "username",
|
||||||
personTypes: [],
|
personTypes: [],
|
||||||
preparedBys: [],
|
preparedBys: [],
|
||||||
|
aidFundMemberUserTypes: [],
|
||||||
|
userAttributes: [],
|
||||||
userStates: [],
|
userStates: [],
|
||||||
memberStatus: [],
|
memberStatus: [],
|
||||||
year: moment().format("YYYY"),
|
year: moment().format("YYYY"),
|
||||||
@@ -224,6 +276,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
|||||||
},
|
},
|
||||||
personTypeOptions: [],
|
personTypeOptions: [],
|
||||||
preparedByOptions: [],
|
preparedByOptions: [],
|
||||||
|
aidFundMemberUserTypeOptions: [],
|
||||||
|
userAttributeOptions: [],
|
||||||
userStateOptions: [],
|
userStateOptions: [],
|
||||||
memberStatusOptions: [],
|
memberStatusOptions: [],
|
||||||
unions: [],
|
unions: [],
|
||||||
@@ -315,6 +369,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
|||||||
this.pageForm.sexTypes = []
|
this.pageForm.sexTypes = []
|
||||||
this.pageForm.personTypes = []
|
this.pageForm.personTypes = []
|
||||||
this.pageForm.preparedBys = []
|
this.pageForm.preparedBys = []
|
||||||
|
this.pageForm.aidFundMemberUserTypes = []
|
||||||
|
this.pageForm.userAttributes = []
|
||||||
this.pageForm.memberStatus = []
|
this.pageForm.memberStatus = []
|
||||||
this.pageForm.userStates = []
|
this.pageForm.userStates = []
|
||||||
this.pageForm.unionId = []
|
this.pageForm.unionId = []
|
||||||
@@ -352,6 +408,12 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
|||||||
this.$businessTool.getDictOptions("USER_PREPARED_BY_TYPE").then((data) => {
|
this.$businessTool.getDictOptions("USER_PREPARED_BY_TYPE").then((data) => {
|
||||||
this.preparedByOptions = data
|
this.preparedByOptions = data
|
||||||
})
|
})
|
||||||
|
this.$businessTool.getDictOptions("AIDFUND_MEMBER_USER_TYPE").then((data) => {
|
||||||
|
this.aidFundMemberUserTypeOptions = data
|
||||||
|
})
|
||||||
|
this.$businessTool.getDictOptions("USER_ATTRIBUTE").then((data) => {
|
||||||
|
this.userAttributeOptions = data
|
||||||
|
})
|
||||||
this.$businessTool.getDictOptions("USER_STATE").then((data) => {
|
this.$businessTool.getDictOptions("USER_STATE").then((data) => {
|
||||||
this.userStateOptions = data
|
this.userStateOptions = data
|
||||||
})
|
})
|
||||||
|
|||||||
+66
-2
@@ -1,6 +1,28 @@
|
|||||||
<!--#
|
<!--#
|
||||||
layout("/layouts/platform.html"){
|
layout("/layouts/platform.html"){
|
||||||
#-->
|
#-->
|
||||||
|
<style> .query-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-row-title {
|
||||||
|
width: 120px;
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-row-content {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-row-content-tag {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<guava ref="guava">
|
<guava ref="guava">
|
||||||
<template>
|
<template>
|
||||||
@@ -39,6 +61,33 @@ layout("/layouts/platform.html"){
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</search-item>
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
|
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card shadow="never" class="mt10">
|
||||||
|
<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 userAttributeOptions"
|
||||||
|
:key="item.code"
|
||||||
|
:type="item.name"
|
||||||
|
:effect="pageForm.userAttributes.includes(item.code)?'dark':'plain'"
|
||||||
|
@click="tagClick(item.code)">
|
||||||
|
{{ item.name }}
|
||||||
|
</el-tag>
|
||||||
|
|
||||||
|
<el-link type="danger"
|
||||||
|
v-if="userAttributeOptions.length&&pageForm.userAttributes.length"
|
||||||
|
:underline="false"
|
||||||
|
@click="pageForm.userAttributes=[];doSearch()">清空
|
||||||
|
</el-link>
|
||||||
|
<el-link :underline="false"
|
||||||
|
@click="pageForm.userAttributes=userAttributeOptions.map(p=>p.code);doSearch()"
|
||||||
|
type="success">全部
|
||||||
|
</el-link>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card shadow="never" class="mt10">
|
<el-card shadow="never" class="mt10">
|
||||||
@@ -84,9 +133,11 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
unions: [],
|
unions: [],
|
||||||
units: [],
|
units: [],
|
||||||
|
userAttributeOptions: [],
|
||||||
pageForm: {
|
pageForm: {
|
||||||
currentYear: moment().format("YYYY"),
|
currentYear: moment().format("YYYY"),
|
||||||
queryType: "fgh"
|
queryType: "fgh",
|
||||||
|
userAttributes: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -107,9 +158,22 @@ layout("/layouts/platform.html"){
|
|||||||
this.units = data
|
this.units = data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
this.$businessTool.getDictOptions("USER_ATTRIBUTE").then((data) => {
|
||||||
|
this.userAttributeOptions = data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
tagClick(code) {
|
||||||
|
if (this.pageForm.userAttributes.includes(code)) {
|
||||||
|
this.pageForm.userAttributes.splice(this.pageForm.userAttributes.indexOf(code), 1)
|
||||||
|
} else {
|
||||||
|
this.pageForm.userAttributes.push(code)
|
||||||
|
}
|
||||||
|
this.doSearch()
|
||||||
},
|
},
|
||||||
pageData() {
|
pageData() {
|
||||||
this.$axios.post(loc() + "/pageData", this.pageForm).then((res) => {
|
const pageForm = clone(this.pageForm)
|
||||||
|
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||||
|
this.$axios.post(loc() + "/pageData", pageForm).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.tableData = res.data
|
this.tableData = res.data
|
||||||
this.pageForm.totalCount = res.data.totalCount
|
this.pageForm.totalCount = res.data.totalCount
|
||||||
|
|||||||
Reference in New Issue
Block a user