会员整改
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.json.JsonField;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -181,6 +182,11 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@DataCenterColumn(name = "来校时间", key = "LXRQ")
|
||||
private String arrivalAtSchoolDate;
|
||||
|
||||
@Column
|
||||
@Comment("工作时间")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
private String workDate;
|
||||
|
||||
@Column
|
||||
@Comment("身份类型")
|
||||
@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")
|
||||
private String userState;
|
||||
|
||||
@Column
|
||||
@Comment("人员属性")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@Size(max = 50)
|
||||
private String userAttribute;
|
||||
|
||||
@Column
|
||||
@Comment("在岗情况")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@@ -323,6 +335,11 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String homeAddress;
|
||||
|
||||
@Column
|
||||
@Comment("校区")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String campus;
|
||||
|
||||
|
||||
@Column
|
||||
@Comment("常用审批意见")
|
||||
@@ -400,7 +417,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
private Boolean aidFundMember;
|
||||
|
||||
@Column
|
||||
@Comment("基金会员类型")
|
||||
@Comment("基金会员类型(人员分类)")
|
||||
@ColDefine(type = ColType.VARCHAR,width = 10)
|
||||
private String aidFundMemberUserType;
|
||||
|
||||
|
||||
@@ -225,4 +225,7 @@ public class View_user {
|
||||
|
||||
@Column
|
||||
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.enums.ProcessSubmitTypeEnum;
|
||||
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.web.commons.auth.utils.AuthUtil;
|
||||
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.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.POST;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -176,6 +182,219 @@ public class MemberChangeManageController {
|
||||
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() {
|
||||
|
||||
|
||||
+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 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 org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
@@ -38,13 +39,12 @@ public class MemberSummaryController {
|
||||
|
||||
@At
|
||||
@SaCheckPermission("member.statistics.summary")
|
||||
public Result pageData(@Param("queryId") String queryId, @Param("queryType") String queryType,
|
||||
@Param("currentYear") Integer currentYear) {
|
||||
public Result pageData(MemberStatisticsPageForm pageForm) {
|
||||
List<NutMap> list = new ArrayList<>();
|
||||
if ("fgh".equals(queryType)) {
|
||||
list = memberStatisticsService.getUnionStatisticsData(queryId, currentYear);
|
||||
if ("fgh".equals(pageForm.getQueryType())) {
|
||||
list = memberStatisticsService.getUnionStatisticsData(pageForm);
|
||||
} else {
|
||||
list = memberStatisticsService.getUnitStatisticsData(queryId, currentYear);
|
||||
list = memberStatisticsService.getUnitStatisticsData(pageForm);
|
||||
}
|
||||
return Result.success(list);
|
||||
}
|
||||
@@ -53,16 +53,15 @@ public class MemberSummaryController {
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("member.statistics.summary")
|
||||
public void doExport(@Param("queryId") String queryId, @Param("queryType") String queryType,
|
||||
@Param("currentYear") Integer currentYear, HttpServletResponse response) {
|
||||
public void doExport(MemberStatisticsPageForm pageForm, HttpServletResponse response) {
|
||||
List<NutMap> list = new ArrayList<>();
|
||||
if ("union".equals(queryType)) {
|
||||
list = memberStatisticsService.getUnionStatisticsData(queryId, currentYear);
|
||||
if ("union".equals(pageForm.getQueryType())) {
|
||||
list = memberStatisticsService.getUnionStatisticsData(pageForm);
|
||||
} else {
|
||||
list = memberStatisticsService.getUnitStatisticsData(queryId, currentYear);
|
||||
list = memberStatisticsService.getUnitStatisticsData(pageForm);
|
||||
}
|
||||
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("maleMember", list.stream().mapToInt(v -> v.getInt("maleMember")).sum());
|
||||
map.put("femaleMember", list.stream().mapToInt(v -> v.getInt("femaleMember")).sum());
|
||||
@@ -73,7 +72,7 @@ public class MemberSummaryController {
|
||||
try {
|
||||
response.setContentType("application/octet-stream");
|
||||
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.close();
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.staffmanage.member.models;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.budwk.app.base.model.BaseModel;
|
||||
import com.budwk.app.sys.annotation.DataCenterColumn;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -124,6 +125,17 @@ public class MemberChangeRecord extends BaseModel {
|
||||
@Size(max = 50)
|
||||
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
|
||||
@Comment("编制类别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@@ -220,5 +232,10 @@ public class MemberChangeRecord extends BaseModel {
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String remark;
|
||||
|
||||
@Column
|
||||
@Comment("基金会员类型(人员分类)")
|
||||
@ColDefine(type = ColType.VARCHAR,width = 10)
|
||||
private String aidFundMemberUserType;
|
||||
|
||||
private Boolean edit;
|
||||
}
|
||||
|
||||
+8
@@ -41,6 +41,12 @@ public class MemberChangePageForm extends PageForm {
|
||||
@ApiModelProperty("教职工类别")
|
||||
private List<String> personTypes;
|
||||
|
||||
@ApiModelProperty("人员分类")
|
||||
private String aidFundMemberUserType;
|
||||
|
||||
@ApiModelProperty("人员属性")
|
||||
private String userAttribute;
|
||||
|
||||
|
||||
public void buildSearch(Cnd cnd, String prefix){
|
||||
if (cnd == null) {
|
||||
@@ -59,5 +65,7 @@ public class MemberChangePageForm extends PageForm {
|
||||
cnd.andEX(prefix + "userState", "in", this.getUserStates());
|
||||
cnd.andEX(prefix + "preparedBy", "in", this.getPreparedBys());
|
||||
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("导出的数据")
|
||||
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){
|
||||
if (cnd == null) {
|
||||
cnd = Cnd.NEW();
|
||||
@@ -128,15 +140,39 @@ public class MemberInfoPageForm extends PageForm {
|
||||
}
|
||||
|
||||
cnd.andEX(prefix + "unitId", "=", this.getUnitId());
|
||||
cnd.andEX(prefix + "userState", "in", this.getUserStates());
|
||||
cnd.andEX(prefix + "preparedBy", "in", this.getPreparedBys());
|
||||
cnd.andEX(prefix + "personType", "in", this.getPersonTypes());
|
||||
|
||||
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.getUserState())) {
|
||||
cnd.and(prefix + "userState", "=", this.getUserState());
|
||||
} else if (Lang.isNotEmpty(this.getUserStates())) {
|
||||
cnd.and(prefix + "userState", "in", this.getUserStates());
|
||||
}
|
||||
|
||||
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 aidFundMemberUserType;
|
||||
|
||||
private String userAttribute;
|
||||
|
||||
private String changeType;
|
||||
|
||||
//变更状态数组
|
||||
@@ -88,6 +92,8 @@ public class MemberManagePageForm extends PageForm {
|
||||
cnd.andEX("u.preparedBy", "=", pageForm.getPreparedBy());
|
||||
cnd.andEX("u.sex", "=", pageForm.getSex());
|
||||
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())) {
|
||||
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.preparedBy", "=", pageForm.getPreparedBy());
|
||||
cnd.andEX("record.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("record.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType());
|
||||
cnd.andEX("record.userAttribute", "=", pageForm.getUserAttribute());
|
||||
|
||||
cnd.groupBy("record.id,task.id");
|
||||
}
|
||||
|
||||
+10
@@ -19,6 +19,12 @@ import java.util.Map;
|
||||
@Data
|
||||
public class MemberStatisticsPageForm extends PageForm {
|
||||
|
||||
private String queryId;
|
||||
|
||||
private String queryType;
|
||||
|
||||
private Integer currentYear;
|
||||
|
||||
private String isUnit;
|
||||
|
||||
private String isUnion;
|
||||
@@ -44,6 +50,10 @@ public class MemberStatisticsPageForm extends PageForm {
|
||||
|
||||
private List<String> preparedBys;
|
||||
|
||||
private List<String> aidFundMemberUserTypes;
|
||||
|
||||
private List<String> userAttributes;
|
||||
|
||||
private List<String> userStates;
|
||||
|
||||
private List<String> memberStatus;
|
||||
|
||||
@@ -27,6 +27,19 @@ public interface MemberInfoService extends BaseService<Sys_user> {
|
||||
*/
|
||||
Sql getSql(MemberInfoPageForm pageForm);
|
||||
|
||||
/**
|
||||
* 获取查询人员补录Sql(变更表)
|
||||
* @param pageForm
|
||||
* @return
|
||||
*/
|
||||
Sql getMemberInputSql(MemberInfoPageForm pageForm);
|
||||
|
||||
/**
|
||||
* 新增会员
|
||||
* @param user 会员信息
|
||||
*/
|
||||
void addMember(Sys_user user);
|
||||
|
||||
/**
|
||||
* 获取会员历史
|
||||
* @param pageForm
|
||||
|
||||
+2
-2
@@ -65,7 +65,7 @@ public interface MemberStatisticsService extends BaseService<Sys_user> {
|
||||
* @param currentYear
|
||||
* @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
|
||||
* @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.json.JSONUtil;
|
||||
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.utils.*;
|
||||
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.sys.models.Sys_user;
|
||||
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.param.pageform.MemberInfoPageForm;
|
||||
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 java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -113,6 +118,152 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
|
||||
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
|
||||
public Sql getMemberHistorySql(MemberInfoPageForm pageForm) {
|
||||
|
||||
+2
@@ -93,6 +93,8 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
|
||||
u.personType,
|
||||
u.welfareMember,
|
||||
u.isModelWorker,
|
||||
u.userAttribute,
|
||||
u.aidFundMemberUserType,
|
||||
his.id hisId,
|
||||
his.changeTypes,
|
||||
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("personType", pageForm.getPersonTypes(), 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("sex", pageForm.getSexTypes(), reverseSelection, IN_OR_NIN_OP, cnd);
|
||||
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.personType,
|
||||
u.preparedBy,
|
||||
u.aidFundMemberUserType,
|
||||
u.userAttribute,
|
||||
u.identityType,
|
||||
u.userState,
|
||||
u.unionName,
|
||||
@@ -309,7 +313,9 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
|
||||
|
||||
@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("""
|
||||
SELECT
|
||||
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("abbr", new Static("his"));
|
||||
}
|
||||
cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes());
|
||||
cnd.groupBy("un.id", "un.unionCode", "un.name");
|
||||
cnd.asc("un.unionCode");
|
||||
sql.setCondition(cnd);
|
||||
@@ -348,7 +355,9 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
}
|
||||
|
||||
@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("""
|
||||
SELECT
|
||||
un.id,
|
||||
@@ -378,6 +387,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
sql.setVar("table", new Static("member_history"));
|
||||
sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear)));
|
||||
}
|
||||
cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes());
|
||||
cnd.and("un.unitLevel", "=", 2);
|
||||
cnd.groupBy("un.id", "un.unitcode", "un.name");
|
||||
cnd.asc("un.unitcode");
|
||||
|
||||
+10
@@ -30,6 +30,14 @@ const COMMON_QUERY = {
|
||||
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></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>
|
||||
`,
|
||||
store,
|
||||
@@ -45,6 +53,8 @@ const COMMON_QUERY = {
|
||||
userStates: [],
|
||||
personTypes: [],
|
||||
preparedBys: [],
|
||||
aidFundMemberUserType: '',
|
||||
userAttribute: '',
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+24
-8
@@ -62,12 +62,12 @@ const MEMBER_CHANGE = {
|
||||
code="USER_ACADEMIC_DEGREE"></dict-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="党政职务">
|
||||
<el-form-item prop="position">
|
||||
<el-input v-model="formData.position" placeholder="请输入党政职务"
|
||||
:disabled="allowFields('position')" maxlength="50"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="党政职务">-->
|
||||
<!-- <el-form-item prop="position">-->
|
||||
<!-- <el-input v-model="formData.position" placeholder="请输入党政职务"-->
|
||||
<!-- :disabled="allowFields('position')" maxlength="50"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
|
||||
<!--<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, SCHOOL_UNION_MEMBER_ADMIN')">
|
||||
<el-descriptions-item label="工作单位">
|
||||
@@ -150,7 +150,19 @@ const MEMBER_CHANGE = {
|
||||
<dict-select v-model="formData.preparedBy" code="USER_PREPARED_BY_TYPE"
|
||||
:disabled="allowFields('preparedBy')" style="width: 100%"></dict-select>
|
||||
</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 == '退休'">
|
||||
<el-descriptions-item label="退休日期">
|
||||
@@ -174,7 +186,7 @@ const MEMBER_CHANGE = {
|
||||
style="width: 100%"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item></el-descriptions-item>
|
||||
<!-- <el-descriptions-item></el-descriptions-item>-->
|
||||
</template>
|
||||
|
||||
<el-descriptions-item label="会员状态" :span="1.5">
|
||||
@@ -439,6 +451,8 @@ const MEMBER_CHANGE = {
|
||||
userState,
|
||||
personType,
|
||||
preparedBy,
|
||||
userAttribute,
|
||||
aidFundMemberUserType,
|
||||
idCard,
|
||||
mobile,
|
||||
email,
|
||||
@@ -463,6 +477,8 @@ const MEMBER_CHANGE = {
|
||||
this.$set(this.formData, "userState", userState)
|
||||
this.$set(this.formData, "personType", personType)
|
||||
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, "unitId", unit ? unit.id : null)
|
||||
this.$set(this.formData, "unionName", union ? union.name : null)
|
||||
|
||||
+449
-3
@@ -38,6 +38,14 @@ layout("/layouts/platform.html"){
|
||||
<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-item label="更新日期">
|
||||
<el-date-picker :picker-options="pickerOptions" @change="changeDateRangeChange"
|
||||
align="right" end-placeholder="结束日期" format="yyyy-MM-dd"
|
||||
@@ -50,6 +58,31 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<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"
|
||||
size="small"
|
||||
v-model="pageForm.isMember">
|
||||
@@ -107,8 +140,9 @@ layout("/layouts/platform.html"){
|
||||
|
||||
</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%">
|
||||
<el-table-column :reserve-selection="true" type="selection"></el-table-column>
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center"
|
||||
label="序号" type="index" width="80px" fixed="left"></el-table-column>
|
||||
<el-table-column :label="column.label" :prop="column.prop"
|
||||
@@ -195,6 +229,241 @@ layout("/layouts/platform.html"){
|
||||
<template #edit>
|
||||
<member-all-change ref="memberAllChangeRef"></member-all-change>
|
||||
</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>
|
||||
</div>
|
||||
|
||||
@@ -244,10 +513,31 @@ layout("/layouts/platform.html"){
|
||||
changed: 2,
|
||||
isMember: 1,
|
||||
changeTypes: [],
|
||||
aidFundMemberUserType: "",
|
||||
userAttribute: "",
|
||||
},
|
||||
unions: [],
|
||||
units: [],
|
||||
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: [
|
||||
{ prop: "loginname", 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: "political", 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: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||
{ prop: "unionName", 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: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||
@@ -381,7 +673,161 @@ layout("/layouts/platform.html"){
|
||||
invertCheck() {
|
||||
const all = this.tableColumns.map(c => c.prop);
|
||||
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: {
|
||||
showColumns() {
|
||||
|
||||
@@ -35,6 +35,14 @@ layout("/layouts/platform.html"){
|
||||
<dict-select v-model="pageForm.changeType" placeholder="变更类型" @change="doSearch"
|
||||
code="MEMBER_CHANGE_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>
|
||||
|
||||
@@ -132,6 +140,16 @@ layout("/layouts/platform.html"){
|
||||
unions: [],
|
||||
units: [],
|
||||
changeTypeData: [],
|
||||
pageForm: {
|
||||
searchKeyword: "",
|
||||
unionId: "",
|
||||
unitId: "",
|
||||
userState: "",
|
||||
personType: "",
|
||||
changeType: "",
|
||||
aidFundMemberUserType: "",
|
||||
userAttribute: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const MEMBER_INFO = {
|
||||
const MEMBER_INFO = {
|
||||
template: /*language=html*/ `
|
||||
<div>
|
||||
<!-- 基本信息 -->
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<!-- 第 3 行 -->
|
||||
<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>
|
||||
|
||||
<!-- 第 4 行 -->
|
||||
@@ -64,7 +64,7 @@
|
||||
<el-descriptions-item label="所属校区">{{ viewData.campus }}</el-descriptions-item>
|
||||
|
||||
<!-- 第 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.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.positionLevel }}</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>
|
||||
</div>
|
||||
`,
|
||||
@@ -100,4 +103,4 @@
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -45,6 +45,14 @@ const COMMON_QUERY = {
|
||||
<dict-select v-model="pageForm.preparedBys" placeholder="请选择编制类别" @change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE" multiple collapse-tags></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>
|
||||
`,
|
||||
store,
|
||||
@@ -68,6 +76,8 @@ const COMMON_QUERY = {
|
||||
userStates: [],
|
||||
personTypes: [],
|
||||
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: "political", 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: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||
{ prop: "unionName", 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: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 },
|
||||
|
||||
@@ -51,9 +51,15 @@ layout("/layouts/platform.html"){
|
||||
v-model="pageForm.preparedBy"
|
||||
placeholder="请选择编制类别"
|
||||
@change="doSearch"
|
||||
code="USER_PREPARED_BY_TYPE"
|
||||
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>
|
||||
|
||||
@@ -103,13 +109,15 @@ layout("/layouts/platform.html"){
|
||||
new Vue({
|
||||
el: "#app",
|
||||
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() {
|
||||
return {
|
||||
pageForm: {
|
||||
year: new Date().getFullYear() - 1 + "",
|
||||
memberSearchName: "",
|
||||
memberSearchKeyWord: ""
|
||||
memberSearchKeyWord: "",
|
||||
aidFundMemberUserType: "",
|
||||
userAttribute: ""
|
||||
},
|
||||
userId: "",
|
||||
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: "political", 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: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||
{ prop: "unionName", 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: "idCard", 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.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
||||
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)
|
||||
const data = this.tableColumns.filter(item => this.checkedFields.includes(item.prop)).map(item => {
|
||||
return {prop: item.prop, label: item.label}
|
||||
@@ -224,6 +228,8 @@ layout("/layouts/platform.html"){
|
||||
pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes)
|
||||
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
|
||||
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.memberStatus = JSON.stringify(this.pageForm.memberStatus)
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
|
||||
+62
@@ -112,6 +112,56 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-col class="query-row-title">人员分类:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
style="margin-right: 10px;cursor: pointer"
|
||||
v-for="item in 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-col class="query-row-content">
|
||||
<el-row>
|
||||
@@ -208,6 +258,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
searchName: "username",
|
||||
personTypes: [],
|
||||
preparedBys: [],
|
||||
aidFundMemberUserTypes: [],
|
||||
userAttributes: [],
|
||||
userStates: [],
|
||||
memberStatus: [],
|
||||
year: moment().format("YYYY"),
|
||||
@@ -224,6 +276,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
},
|
||||
personTypeOptions: [],
|
||||
preparedByOptions: [],
|
||||
aidFundMemberUserTypeOptions: [],
|
||||
userAttributeOptions: [],
|
||||
userStateOptions: [],
|
||||
memberStatusOptions: [],
|
||||
unions: [],
|
||||
@@ -315,6 +369,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
this.pageForm.sexTypes = []
|
||||
this.pageForm.personTypes = []
|
||||
this.pageForm.preparedBys = []
|
||||
this.pageForm.aidFundMemberUserTypes = []
|
||||
this.pageForm.userAttributes = []
|
||||
this.pageForm.memberStatus = []
|
||||
this.pageForm.userStates = []
|
||||
this.pageForm.unionId = []
|
||||
@@ -352,6 +408,12 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
this.$businessTool.getDictOptions("USER_PREPARED_BY_TYPE").then((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.userStateOptions = data
|
||||
})
|
||||
|
||||
+66
-2
@@ -1,6 +1,28 @@
|
||||
<!--#
|
||||
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>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
@@ -39,6 +61,33 @@ layout("/layouts/platform.html"){
|
||||
</el-radio-group>
|
||||
</search-item>
|
||||
</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 shadow="never" class="mt10">
|
||||
@@ -84,9 +133,11 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
unions: [],
|
||||
units: [],
|
||||
userAttributeOptions: [],
|
||||
pageForm: {
|
||||
currentYear: moment().format("YYYY"),
|
||||
queryType: "fgh"
|
||||
queryType: "fgh",
|
||||
userAttributes: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -107,9 +158,22 @@ layout("/layouts/platform.html"){
|
||||
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() {
|
||||
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) {
|
||||
this.tableData = res.data
|
||||
this.pageForm.totalCount = res.data.totalCount
|
||||
|
||||
Reference in New Issue
Block a user