Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1ddfa7e609 | ||
|
|
e7fbf4021e | ||
|
|
c21e92e418 | ||
|
|
134a11da09 | ||
|
|
506121ac5f | ||
|
|
8c401a5132 | ||
|
|
4d9fd57d6c | ||
|
|
fd117b4fc3 | ||
|
|
060e8d5bc7 | ||
|
|
894c720bb8 | ||
|
|
39ee74f0a9 | ||
|
|
7faa2730b5 | ||
|
|
fa019786d6 | ||
|
|
ffe782e538 | ||
|
|
3c65c9d561 | ||
|
|
89a77c41af | ||
|
|
0f460e6b1a | ||
|
|
d1050db6b3 | ||
|
|
e3f32fe72b | ||
|
|
b885f449c7 | ||
|
|
3f441828a1 |
@@ -20,6 +20,7 @@ RoleConstant {
|
||||
SCHOOL_UNION_CHAIRMAN("校工会主席"),
|
||||
SCHOOL_UNION_VICE_CHAIRMAN("校工会副主席"),
|
||||
SCHOOL_UNION_WELFARE_ADMIN("校工会福利管理员"),
|
||||
SCHOOL_UNION_WELFARE_COMMITTEE("校福利委员会"),
|
||||
SCHOOL_UNION_MEMBER_ADMIN("校工会会员管理员"),
|
||||
SCHOOL_UNION_TC_ADMIN("校工会教代会管理员"),
|
||||
SCHOOL_UNION_WC_ADMIN("校工会工代会管理员"),
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.budwk.app.flow.handler;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.exception.BaseException;
|
||||
import com.budwk.app.flow.engine.AssignmentHandler;
|
||||
import com.budwk.app.flow.engine.core.Execution;
|
||||
import com.budwk.app.flow.engine.core.ServiceContext;
|
||||
import com.budwk.app.flow.engine.model.TaskModel;
|
||||
import com.budwk.app.sys.models.Sys_role;
|
||||
import com.budwk.app.sys.models.Sys_user_role;
|
||||
import com.budwk.app.sys.services.SysRoleService;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class FlowSchoolUnionWelfareCommitteeHandler implements AssignmentHandler {
|
||||
@Override
|
||||
public List<String> assign(TaskModel model, Execution execution) {
|
||||
Dao dao = ServiceContext.find(Dao.class);
|
||||
SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class);
|
||||
Sys_role role = sysRoleService.getByCode(RoleConstant.SCHOOL_UNION_WELFARE_COMMITTEE);
|
||||
if (role == null || role.isDisabled()) {
|
||||
throw new BaseException("校福利委员会角色未配置或已禁用,请联系校工会!");
|
||||
}
|
||||
List<Sys_user_role> relations = dao.query(Sys_user_role.class,
|
||||
Cnd.where(Sys_user_role::getRoleId, "=", role.getId())
|
||||
.and(Sys_user_role::getEnable, "=", true));
|
||||
List<String> userIds = relations.stream().map(Sys_user_role::getUserId)
|
||||
.filter(StrUtil::isNotBlank).distinct().toList();
|
||||
if (userIds.isEmpty()) {
|
||||
throw new BaseException("校福利委员没有设置,请联系校工会!");
|
||||
}
|
||||
return userIds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "获取校福利委员";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return 14;
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
@@ -47,10 +48,10 @@ public class SysDataUserPullController {
|
||||
cnd.andEX(Sys_user_source::getPullTime, "=", pageForm.getPullTime());
|
||||
cnd.and(Cnd.likeEX(Sys_user_source::getUsername, pageForm.getUserName()));
|
||||
cnd.and(Cnd.likeEX(Sys_user_source::getLoginname, pageForm.getLoginName()));
|
||||
cnd.andEX(Sys_user_source::getUnitName, "=", pageForm.getUnitName());
|
||||
cnd.andEX(Sys_user_source::getUserState, "=", pageForm.getUserState());
|
||||
addSourceFilter(cnd, "us.unitName", pageForm.getUnitName());
|
||||
addSourceFilter(cnd, "us.userState", pageForm.getUserState());
|
||||
cnd.andEX(Sys_user_source::getPreparedBy, "=", pageForm.getPreparedBy());
|
||||
cnd.andEX(Sys_user_source::getPersonType, "=", pageForm.getPersonType());
|
||||
addSourceFilter(cnd, "us.personType", pageForm.getPersonType());
|
||||
|
||||
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
@@ -61,6 +62,15 @@ public class SysDataUserPullController {
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
private void addSourceFilter(Cnd cnd, String column, String value) {
|
||||
if ("__EMPTY__".equals(value)) {
|
||||
cnd.and(new Static("(%s IS NULL OR LOWER(%s) REGEXP '^[[:space:]]*(null)?[[:space:]]*$')"
|
||||
.formatted(column, column)));
|
||||
} else {
|
||||
cnd.andEX(column, "=", value);
|
||||
}
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("sys.data.user.pull")
|
||||
@ApiOperation("拉取用户数据")
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.budwk.app.sys.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.sys.services.SysDataUserPullService;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/sys/data/user/query")
|
||||
@Ok("json:full")
|
||||
public class SysDataUserQueryController {
|
||||
|
||||
@Inject
|
||||
private SysDataUserPullService sysUserPullService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/sys/data/user/query.html")
|
||||
@SaCheckPermission("sys.data.user.query")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("sys.data.user.query")
|
||||
public Result queryData(@Param("zgh") String zgh, @Param("pageNumber") int pageNumber,
|
||||
@Param("pageSize") int pageSize) {
|
||||
return Result.success(sysUserPullService.queryUsers(zgh, pageNumber, pageSize));
|
||||
}
|
||||
}
|
||||
@@ -98,6 +98,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Comment("证件类型")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@DataCenterColumn(name = "证件类型", key = "SFZJLXDM", dict = "USER_ID_CARD_TYPE")
|
||||
private String idCardType;
|
||||
|
||||
@Column
|
||||
@@ -133,6 +134,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Comment("岗位类别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@DataCenterColumn(name = "聘岗类型", key = "ZYJSGWLBDMMC")
|
||||
private String jobCategory;
|
||||
|
||||
@Column
|
||||
@@ -222,7 +224,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
private Integer pendingConfirmStatus;
|
||||
|
||||
@Column
|
||||
@Comment("编制类别码")
|
||||
@Comment("编制类别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@DataCenterColumn(name = "编制类别", key = "BZLBDMMC")
|
||||
private String preparedBy;
|
||||
@@ -295,6 +297,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Comment("是否双肩挑")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default(value = "0")
|
||||
@DataCenterColumn(name = "是否双肩挑", key = "SFSJT")
|
||||
private Boolean manyUnit;
|
||||
|
||||
@Column
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.budwk.app.sys.models;
|
||||
|
||||
import com.budwk.app.sys.annotation.DataCenterColumn;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -31,6 +32,42 @@ public class Sys_user_source extends Sys_user {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 255)
|
||||
private String unitName;
|
||||
|
||||
@Column
|
||||
@Comment("最高学历代码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
@DataCenterColumn(name = "最高学历代码", key = "ZGXLDM")
|
||||
private String educationCode;
|
||||
|
||||
@Column
|
||||
@Comment("最高学位代码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@DataCenterColumn(name = "最高学位代码", key = "XWDM")
|
||||
private String academicDegreeCode;
|
||||
|
||||
@Column
|
||||
@Comment("编制类别代码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@DataCenterColumn(name = "编制类别代码", key = "BZLBDM")
|
||||
private String preparedByCode;
|
||||
|
||||
@Column
|
||||
@Comment("聘岗类型代码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@DataCenterColumn(name = "聘岗类型代码", key = "ZYJSGWLBDM")
|
||||
private String jobCategoryCode;
|
||||
|
||||
@Column
|
||||
@Comment("专业技术职务代码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@DataCenterColumn(name = "专业技术职务代码", key = "ZYJSZWDM")
|
||||
private String professionalTitleCode;
|
||||
|
||||
@Column
|
||||
@Comment("当前状态代码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@DataCenterColumn(name = "当前状态代码", key = "DQZTDM")
|
||||
private String userStateCode;
|
||||
|
||||
@Column
|
||||
@Comment("拉取时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
|
||||
@@ -15,6 +15,8 @@ public interface SysDataUserPullService extends BaseService<Sys_user_source> {
|
||||
*/
|
||||
Date pull();
|
||||
|
||||
NutMap queryUsers(String zgh, int pageNumber, int pageSize);
|
||||
|
||||
/**
|
||||
* 拉取人员博士后的信息
|
||||
*/
|
||||
|
||||
@@ -7,4 +7,15 @@ import com.budwk.app.sys.param.SysDataUserUpdateParam;
|
||||
*/
|
||||
public interface SysDataUserUpdateService {
|
||||
String update(SysDataUserUpdateParam updateParam);
|
||||
|
||||
static boolean qualifiesAsUnionMember(String personType, String userState) {
|
||||
if (!"在岗".equals(userState) || personType == null) {
|
||||
return false;
|
||||
}
|
||||
return switch (personType) {
|
||||
case "在编", "兰溪编制", "聘用合同制(享受人事代理待遇)",
|
||||
"聘用合同制", "聘用制专家", "人事代理" -> true;
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,6 +164,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
// 创建用户对象
|
||||
Sys_user u = new Sys_user();
|
||||
BeanUtils.copyProperties(source, u);
|
||||
if (SysDataUserUpdateService.qualifiesAsUnionMember(u.getPersonType(), u.getUserState())) {
|
||||
u.setMember(true);
|
||||
}
|
||||
|
||||
if (user == null) {
|
||||
// 新增用户,初始化数据
|
||||
|
||||
@@ -123,6 +123,9 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic
|
||||
//加入到系统用户表
|
||||
List<Sys_user> sysUsers = BeanUtil.copyToList(userSources, Sys_user.class);
|
||||
for (Sys_user sysUser : sysUsers) {
|
||||
if (SysDataUserUpdateService.qualifiesAsUnionMember(sysUser.getPersonType(), sysUser.getUserState())) {
|
||||
sysUser.setMember(true);
|
||||
}
|
||||
//重新设置
|
||||
sysUser.setId(R.UU32());
|
||||
String salt = R.UU32();
|
||||
|
||||
@@ -98,7 +98,7 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
synchronized (SysDataUserPullServiceImpl.class) {
|
||||
if (fieldMappings == null) {
|
||||
List<FieldMapping> mappings = new ArrayList<>();
|
||||
Field[] fields = Sys_user.class.getDeclaredFields();
|
||||
Field[] fields = cn.hutool.core.util.ReflectUtil.getFields(Sys_user_source.class);
|
||||
for (Field field : fields) {
|
||||
DataCenterColumn annotation = field.getAnnotation(DataCenterColumn.class);
|
||||
if (annotation != null) {
|
||||
@@ -200,6 +200,8 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
mapping.field.set(sysUser, raw.getStr(mapping.key));
|
||||
}
|
||||
}
|
||||
} else if (mapping.field.getType() == Boolean.class) {
|
||||
mapping.field.set(sysUser, raw.getBool(mapping.key));
|
||||
} else if (mapping.field.getType() == Date.class) {
|
||||
String dateText = StrUtil.trim(raw.getStr(mapping.key));
|
||||
if (StrUtil.isNotBlank(dateText)) {
|
||||
@@ -332,12 +334,39 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
return url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NutMap queryUsers(String zgh, int pageNumber, int pageSize) {
|
||||
if (pageNumber < 1 || pageSize < 1 || pageSize > 200) {
|
||||
throw new BaseException("分页参数不合法");
|
||||
}
|
||||
if (!dataCenterProperties.isTokenEnabled()) {
|
||||
JSONObject response = DataCenterUtil.queryPage(getDmpUrl(DMP_TEACHER_KEY), zgh, pageNumber, pageSize);
|
||||
JSONObject pageInfo = response.getJSONObject("pageInfo");
|
||||
JSONArray data = response.getJSONArray("dataSet");
|
||||
if (pageInfo == null || pageInfo.getLong("total") == null || data == null) {
|
||||
throw new BaseException("数据中心接口未返回有效的分页数据");
|
||||
}
|
||||
return NutMap.NEW().addv("list", data).addv("totalCount", pageInfo.getLong("total"));
|
||||
}
|
||||
String accessToken = getDmpAccessToken();
|
||||
List<JSONObject> records = new ArrayList<>();
|
||||
records.addAll(pullDmpUsers(getDmpUrl(DMP_TEACHER_KEY), accessToken, "在岗教职工", StrUtil.trim(zgh)));
|
||||
records.addAll(pullDmpUsers(getDmpUrl(DMP_DISPATCH_KEY), accessToken, "在岗劳务派遣", StrUtil.trim(zgh)));
|
||||
int from = (int) Math.min((long) (pageNumber - 1) * pageSize, records.size());
|
||||
return NutMap.NEW().addv("list", records.subList(from, Math.min(from + pageSize, records.size())))
|
||||
.addv("totalCount", records.size());
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页拉取单个人员接口数据。
|
||||
* 入参 url 为人员接口地址,accessToken 为信息中心令牌,sourceName 用于日志区分接口来源。
|
||||
* 返回值为该接口所有分页合并后的原始人员 JSON 列表。
|
||||
*/
|
||||
private List<JSONObject> pullDmpUsers(String url, String accessToken, String sourceName) {
|
||||
return pullDmpUsers(url, accessToken, sourceName, null);
|
||||
}
|
||||
|
||||
private List<JSONObject> pullDmpUsers(String url, String accessToken, String sourceName, String zgh) {
|
||||
List<JSONObject> rawDataList = new ArrayList<>();
|
||||
int page = 1;
|
||||
int maxPage = 1;
|
||||
@@ -347,11 +376,14 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
// 信息中心接口单页最多返回1000条,按page循环拉完当前接口全部数据。
|
||||
HttpRequest httpRequest = HttpUtil.createPost(url);
|
||||
httpRequest.header(Header.CONTENT_TYPE, "application/json");
|
||||
httpRequest.body(JSONUtil.toJsonStr(Map.of(
|
||||
"access_token", accessToken,
|
||||
"per_page", String.valueOf(DMP_PAGE_SIZE),
|
||||
"page", String.valueOf(page)
|
||||
)));
|
||||
Map<String, Object> body = new HashMap<>();
|
||||
body.put("access_token", accessToken);
|
||||
body.put("per_page", String.valueOf(DMP_PAGE_SIZE));
|
||||
body.put("page", String.valueOf(page));
|
||||
if (StrUtil.isNotBlank(zgh)) {
|
||||
body.put("zgh", zgh);
|
||||
}
|
||||
httpRequest.body(JSONUtil.toJsonStr(body));
|
||||
|
||||
log.info("请求{}人员数据,第{}页: {}", sourceName, page, httpRequest);
|
||||
String resBody = httpRequest.execute().body();
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.budwk.app.sys.models.Sys_unit;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -40,7 +41,11 @@ public class DataCenterUtil {
|
||||
}
|
||||
|
||||
public static List<JSONObject> pullData(String url) {
|
||||
JSONObject firstResponse = requestData(url, Map.of("", ""));
|
||||
return pullData(url, Map.of("", ""));
|
||||
}
|
||||
|
||||
public static List<JSONObject> pullData(String url, Map<String, ?> params) {
|
||||
JSONObject firstResponse = requestData(url, params);
|
||||
JSONObject pageInfo = firstResponse.getJSONObject("pageInfo");
|
||||
Integer pages = pageInfo == null ? null : pageInfo.getInt("pages");
|
||||
if (pages == null || pages < 0) {
|
||||
@@ -48,7 +53,9 @@ public class DataCenterUtil {
|
||||
}
|
||||
List<JSONObject> records = new ArrayList<>();
|
||||
for (int page = 1; page <= pages; page++) {
|
||||
JSONObject response = requestData(url, Map.of("pageNum", page));
|
||||
Map<String, Object> body = new HashMap<>(params);
|
||||
body.put("pageNum", page);
|
||||
JSONObject response = requestData(url, body);
|
||||
JSONArray data = response.getJSONArray("dataSet");
|
||||
if (data == null) {
|
||||
throw new BaseException("数据中心接口第{}页缺少 dataSet", page);
|
||||
@@ -58,6 +65,16 @@ public class DataCenterUtil {
|
||||
return records;
|
||||
}
|
||||
|
||||
public static JSONObject queryPage(String url, String zgh, int pageNumber, int pageSize) {
|
||||
Map<String, Object> body = new HashMap<>();
|
||||
body.put("pageNum", pageNumber);
|
||||
body.put("pageSize", pageSize);
|
||||
if (StrUtil.isNotBlank(zgh)) {
|
||||
body.put("zgh", zgh.trim());
|
||||
}
|
||||
return requestData(url, body);
|
||||
}
|
||||
|
||||
private static JSONObject requestData(String url, Map<String, ?> body) {
|
||||
try (HttpResponse response = HttpUtil.createPost(url)
|
||||
.body(JSONUtil.toJsonStr(body)).execute()) {
|
||||
|
||||
@@ -10,6 +10,8 @@ import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.ioc.impl.PropertiesProxy;
|
||||
import org.nutz.lang.Strings;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -24,6 +26,8 @@ public class SmsMessageSendStrategy implements GlobalMessageSendStrategy {
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SmsService smsService;
|
||||
@Inject
|
||||
private PropertiesProxy conf;
|
||||
|
||||
@Override
|
||||
public GlobalMessageChannel getChannel() {
|
||||
@@ -118,7 +122,9 @@ public class SmsMessageSendStrategy implements GlobalMessageSendStrategy {
|
||||
|
||||
// 限制短信长度(一般短信限制70个字符)
|
||||
String smsContent = sb.toString();
|
||||
if (smsContent.length() > 67) {
|
||||
boolean intelligenceMode = Strings.isNotBlank(conf.get("custom.msg.platform.app-id"))
|
||||
&& conf.getBoolean("msg.platform.IntelligenceMode", false);
|
||||
if (!intelligenceMode && smsContent.length() > 67) {
|
||||
smsContent = smsContent.substring(0, 67) + "...";
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.ioc.impl.PropertiesProxy;
|
||||
import org.nutz.lang.Strings;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -24,12 +26,20 @@ public class WechatMessageSendStrategy implements GlobalMessageSendStrategy {
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private SmsService smsService;
|
||||
@Inject
|
||||
private PropertiesProxy conf;
|
||||
|
||||
@Override
|
||||
public GlobalMessageChannel getChannel() {
|
||||
return GlobalMessageChannel.WECHAT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return !(Strings.isNotBlank(conf.get("custom.msg.platform.app-id"))
|
||||
&& conf.getBoolean("msg.platform.IntelligenceMode", false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportAsync() {
|
||||
return true;
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.dayofficework.outlay.outlayManage.service;
|
||||
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
|
||||
/**
|
||||
* 分工会预算统计服务。
|
||||
@@ -28,4 +29,6 @@ public interface OutlayManageUnionStatisticsService extends BaseService {
|
||||
* @return 包含各项收入、支出和余额字段的合计数据
|
||||
*/
|
||||
NutMap queryIncomeExpenseSummary(Integer year, String unionId);
|
||||
|
||||
Sql buildIncomeExpenseSql(Integer year, String unionId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
package com.budwk.app.zhgh.dayofficework.outlay.outlayManage.service.impl;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.union.model.OutlayManageUnion;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Year;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class OutlayAnnualAllocateService extends BaseServiceImpl<OutlayManageUnion> {
|
||||
public OutlayAnnualAllocateService(Dao dao) { super(dao); }
|
||||
|
||||
public Sql sql(String text, Object... args) {
|
||||
Sql sql = Sqls.create(text);
|
||||
for (int i = 0; i < args.length; i += 2) sql.params().set(args[i].toString(), args[i + 1]);
|
||||
return sql;
|
||||
}
|
||||
|
||||
private NutMap first(Sql sql) {
|
||||
List<NutMap> rows = listMap(sql);
|
||||
return rows.isEmpty() ? null : rows.get(0);
|
||||
}
|
||||
|
||||
private String table(String type) {
|
||||
if ("base".equals(type)) return "outlay_annual_base";
|
||||
if ("special".equals(type)) return "outlay_annual_special";
|
||||
throw new IllegalArgumentException("经费类型错误");
|
||||
}
|
||||
|
||||
public Sql pageSql(String type, Integer year, String unionId, String projectName) {
|
||||
String table = table(type);
|
||||
return sql("SELECT a.*, un.name unionName, creator.username operatorName FROM " + table +
|
||||
" a LEFT JOIN sys_union un ON un.id=a.unionId LEFT JOIN sys_user creator ON creator.id=a.updatedBy " +
|
||||
"WHERE a.year=@year AND (@unionId='' OR a.unionId=@unionId)" +
|
||||
("special".equals(type) ? " AND (@projectName='' OR LOCATE(@projectName,a.projectName)>0)" : "") +
|
||||
" ORDER BY un.unionCode,a.createdAt DESC",
|
||||
"year", year, "unionId", StrUtil.blankToDefault(unionId, ""),
|
||||
"projectName", StrUtil.blankToDefault(StrUtil.trim(projectName), ""));
|
||||
}
|
||||
|
||||
public List<NutMap> summary(Integer year, String unionId) {
|
||||
return listMap(sql("""
|
||||
SELECT un.id, un.name unionName, COALESCE(b.money,0) baseMoney,
|
||||
COALESCE(s.money,0) specialMoney, COALESCE(b.money,0)+COALESCE(s.money,0) totalMoney
|
||||
FROM sys_union un
|
||||
LEFT JOIN (SELECT unionId,SUM(allocateMoney) money FROM outlay_annual_base
|
||||
WHERE year=@year AND status=1 GROUP BY unionId) b ON b.unionId=un.id
|
||||
LEFT JOIN (SELECT unionId,SUM(allocateMoney) money FROM outlay_annual_special
|
||||
WHERE year=@year AND status=1 GROUP BY unionId) s ON s.unionId=un.id
|
||||
WHERE (@unionId='' OR un.id=@unionId) ORDER BY un.unionCode
|
||||
""", "year", year, "unionId", StrUtil.blankToDefault(unionId, "")));
|
||||
}
|
||||
|
||||
public List<NutMap> historyRecords(Integer year, String unionId) {
|
||||
return listMap(sql("""
|
||||
SELECT a.year,un.name unionName,a.quarterly,a.allocateHeadMoney,a.allocateMoney
|
||||
FROM outlay_allocate_union a LEFT JOIN sys_union un ON un.id=a.unionId
|
||||
WHERE a.year=@year AND a.delFlag=0 AND (@unionId='' OR a.unionId=@unionId)
|
||||
ORDER BY un.unionCode,a.quarterly,a.id
|
||||
""", "year", year, "unionId", StrUtil.blankToDefault(unionId, "")));
|
||||
}
|
||||
|
||||
public Result generate(Integer year, BigDecimal standard, String unionId) {
|
||||
if (year == null || year < 1900 || year > Year.now().getValue() || !moneyValid(standard))
|
||||
return Result.error("请选择有效年度和人均标准(最多两位小数)");
|
||||
boolean current = year == Year.now().getValue();
|
||||
if (!current && first(sql("SELECT id FROM member_history WHERE year=@year LIMIT 1", "year", year)) == null)
|
||||
return Result.error("该年度没有会员历史快照,无法生成统计人数");
|
||||
List<NutMap> unions = listMap(sql("SELECT id FROM sys_union WHERE (@unionId='' OR id=@unionId) ORDER BY id",
|
||||
"unionId", StrUtil.blankToDefault(unionId, "")));
|
||||
int added = 0;
|
||||
for (NutMap union : unions) {
|
||||
String uid = union.getString("id");
|
||||
lockUnion(uid);
|
||||
if (first(sql("SELECT id FROM outlay_annual_base WHERE year=@year AND unionId=@unionId", "year", year, "unionId", uid)) != null) continue;
|
||||
NutMap count = first(sql("SELECT COUNT(DISTINCT id) memberCount FROM " + (current ? "vw_user" : "member_history") +
|
||||
" WHERE member=1 AND unionId=@unionId" + (current ? "" : " AND year=@year"), "unionId", uid, "year", year));
|
||||
int members = count.getInt("memberCount");
|
||||
BigDecimal calculated = standard.multiply(BigDecimal.valueOf(members));
|
||||
if (!moneyValid(calculated)) throw new IllegalArgumentException("计算金额超出允许范围");
|
||||
String id = UUID.randomUUID().toString().replace("-", "");
|
||||
execute(sql("""
|
||||
INSERT INTO outlay_annual_base
|
||||
(id,year,unionId,memberCount,standard,calculatedMoney,allocateMoney,remark,status,version,createdAt,createdBy,updatedAt,updatedBy)
|
||||
VALUES (@id,@year,@unionId,@count,@standard,@money,@money,'',0,0,@now,@actor,@now,@actor)
|
||||
""", "id", id, "year", year, "unionId", uid, "count", members, "standard", standard,
|
||||
"money", calculated, "now", System.currentTimeMillis(), "actor", StpUtil.getLoginIdAsString()));
|
||||
audit("base", id, "生成", null, first(sql("SELECT * FROM outlay_annual_base WHERE id=@id", "id", id)), "生成年度人数快照");
|
||||
added++;
|
||||
}
|
||||
return Result.success("已生成" + added + "条记录,已有记录保持不变");
|
||||
}
|
||||
|
||||
private void lockUnion(String unionId) {
|
||||
if (first(sql("SELECT id FROM sys_union WHERE id=@id FOR UPDATE", "id", unionId)) == null)
|
||||
throw new IllegalArgumentException("分工会不存在");
|
||||
}
|
||||
|
||||
private BigDecimal decimal(Object value) {
|
||||
return value == null ? BigDecimal.ZERO : new BigDecimal(value.toString());
|
||||
}
|
||||
|
||||
private boolean moneyValid(BigDecimal money) {
|
||||
return money != null && money.signum() >= 0 && money.scale() <= 2
|
||||
&& money.compareTo(new BigDecimal("99999999.99")) <= 0;
|
||||
}
|
||||
|
||||
public Result save(String type, String id, Integer year, String unionId, String projectName,
|
||||
Integer memberCount, BigDecimal standard, BigDecimal allocateMoney, String remark, Integer version) {
|
||||
String table = table(type);
|
||||
if (StrUtil.isBlank(id) || !id.matches("[a-fA-F0-9]{32}") || year == null || year < 1900 || year > 9999
|
||||
|| StrUtil.isBlank(unionId) || !moneyValid(allocateMoney) || remark != null && remark.length() > 1000)
|
||||
return Result.error("请填写有效年度、分工会和金额,说明最多1000字");
|
||||
lockUnion(unionId);
|
||||
NutMap old = first(sql("SELECT * FROM " + table + " WHERE id=@id FOR UPDATE", "id", id));
|
||||
if (old != null && (old.getInt("year") != year || !unionId.equals(old.getString("unionId"))))
|
||||
return Result.error("已有记录不能变更年度和分工会");
|
||||
if (old != null && (version == null || old.getInt("version") != version))
|
||||
return Result.error("记录已更新,请刷新后重试");
|
||||
boolean confirmed = old != null && old.getInt("status") == 1;
|
||||
BigDecimal calculated = null;
|
||||
if ("base".equals(type)) {
|
||||
if (old == null) return Result.error("请先生成基础经费记录");
|
||||
memberCount = old.getInt("memberCount");
|
||||
if (confirmed) {
|
||||
standard = new BigDecimal(old.get("standard").toString());
|
||||
}
|
||||
if (memberCount == null || memberCount < 0 || !moneyValid(standard)) return Result.error("人数和标准不正确");
|
||||
calculated = standard.multiply(BigDecimal.valueOf(memberCount));
|
||||
if (!moneyValid(calculated)) return Result.error("计算金额超出允许范围");
|
||||
if (allocateMoney.compareTo(calculated) != 0 && StrUtil.isBlank(remark)) return Result.error("实际金额与计算金额不一致,请填写调整说明");
|
||||
} else if (StrUtil.isBlank(projectName) || projectName.trim().length() > 100 || allocateMoney.signum() <= 0) {
|
||||
return Result.error("请填写专项名称(最多100字)和大于0的金额");
|
||||
}
|
||||
if (confirmed && StrUtil.isBlank(remark)) return Result.error("调整已下拨记录必须填写原因");
|
||||
if (confirmed) syncBudget(old, allocateMoney.subtract(new BigDecimal(old.get("allocateMoney").toString())));
|
||||
long now = System.currentTimeMillis();
|
||||
String actor = StpUtil.getLoginIdAsString();
|
||||
if (old == null) {
|
||||
execute(sql("""
|
||||
INSERT INTO outlay_annual_special
|
||||
(id,year,unionId,projectName,allocateMoney,remark,status,version,createdAt,createdBy,updatedAt,updatedBy)
|
||||
VALUES (@id,@year,@unionId,@name,@money,@remark,0,0,@now,@actor,@now,@actor)
|
||||
""", "id", id, "year", year, "unionId", unionId, "name", projectName.trim(), "money", allocateMoney,
|
||||
"remark", remark, "now", now, "actor", actor));
|
||||
} else {
|
||||
execute(sql("UPDATE " + table + " SET allocateMoney=@money,remark=@remark,updatedAt=@now,updatedBy=@actor,version=version+1" +
|
||||
("base".equals(type) ? ",memberCount=@count,standard=@standard,calculatedMoney=@calculated" : ",projectName=@name") + " WHERE id=@id",
|
||||
"money", allocateMoney, "remark", remark, "now", now, "actor", actor, "count", memberCount,
|
||||
"standard", standard, "calculated", calculated, "name", StrUtil.trim(projectName), "id", id));
|
||||
}
|
||||
audit(type, id, confirmed ? "调整下拨" : "保存", old, first(sql("SELECT * FROM " + table + " WHERE id=@id", "id", id)), remark);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
public Result confirm(String type, String id, Integer version) {
|
||||
String table = table(type);
|
||||
NutMap snapshot = first(sql("SELECT * FROM " + table + " WHERE id=@id", "id", id));
|
||||
if (snapshot == null) return Result.error("记录不存在");
|
||||
lockUnion(snapshot.getString("unionId"));
|
||||
NutMap row = first(sql("SELECT * FROM " + table + " WHERE id=@id FOR UPDATE", "id", id));
|
||||
if (row.getInt("status") == 1) return Result.success("该记录已下拨,无需重复操作");
|
||||
if (version == null || row.getInt("version") != version) return Result.error("记录已更新,请刷新后重试");
|
||||
confirmRecord(type, table, row);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
public Result batchConfirm(String type, Integer year, String unionId, String projectName) {
|
||||
String table = table(type);
|
||||
if (year == null || year < 1900 || year > 9999) return Result.error("请选择有效年度");
|
||||
List<NutMap> pending = listMap(sql("SELECT * FROM " + table +
|
||||
" WHERE year=@year AND status=0 AND (@unionId='' OR unionId=@unionId)" +
|
||||
("special".equals(type) ? " AND (@projectName='' OR LOCATE(@projectName,projectName)>0)" : "") +
|
||||
" ORDER BY unionId,id",
|
||||
"year", year, "unionId", StrUtil.blankToDefault(unionId, ""),
|
||||
"projectName", StrUtil.blankToDefault(StrUtil.trim(projectName), "")));
|
||||
int count = 0;
|
||||
for (NutMap candidate : pending) {
|
||||
lockUnion(candidate.getString("unionId"));
|
||||
NutMap row = first(sql("SELECT * FROM " + table + " WHERE id=@id FOR UPDATE", "id", candidate.getString("id")));
|
||||
if (row == null || row.getInt("status") == 1) continue;
|
||||
if (row.getInt("version") != candidate.getInt("version"))
|
||||
throw new IllegalArgumentException("待下拨记录已被修改,本次操作已取消,请刷新后重试");
|
||||
confirmRecord(type, table, row);
|
||||
count++;
|
||||
}
|
||||
return Result.success(count == 0 ? "当前筛选范围没有待下拨记录" : "成功下拨" + count + "条记录");
|
||||
}
|
||||
|
||||
private void confirmRecord(String type, String table, NutMap row) {
|
||||
String id = row.getString("id");
|
||||
syncBudget(row, new BigDecimal(row.get("allocateMoney").toString()));
|
||||
execute(sql("UPDATE " + table + " SET status=1,allocatedAt=@now,updatedAt=@now,updatedBy=@actor,version=version+1 WHERE id=@id",
|
||||
"id", id, "now", System.currentTimeMillis(), "actor", StpUtil.getLoginIdAsString()));
|
||||
audit(type, id, "确认下拨", row, first(sql("SELECT * FROM " + table + " WHERE id=@id", "id", id)), "确认下拨");
|
||||
}
|
||||
|
||||
private void syncBudget(NutMap row, BigDecimal delta) {
|
||||
List<NutMap> budgets = listMap(sql("SELECT * FROM outlay_manage_union WHERE year=@year AND unionId=@unionId FOR UPDATE",
|
||||
"year", row.getInt("year"), "unionId", row.getString("unionId")));
|
||||
if (budgets.size() > 1) throw new IllegalArgumentException("该分工会年度预算存在重复记录,不能下拨");
|
||||
if (budgets.isEmpty()) {
|
||||
if (delta.signum() < 0) throw new IllegalArgumentException("年度预算不存在,不能扣减");
|
||||
// 新建预算承接上年结余;已有预算仅增加本次差额,避免重复结转。
|
||||
NutMap previous = first(sql("SELECT COALESCE(totalQuota,0)-COALESCE(usedQuota,0) surplus FROM outlay_manage_union WHERE year=@year AND unionId=@unionId",
|
||||
"year", row.getInt("year") - 1, "unionId", row.getString("unionId")));
|
||||
BigDecimal carry = previous == null ? BigDecimal.ZERO : new BigDecimal(previous.get("surplus").toString());
|
||||
if (!moneyValid(carry.add(delta))) throw new IllegalArgumentException("下拨后年度总额度超出允许范围");
|
||||
execute(sql("""
|
||||
INSERT INTO outlay_manage_union (id,year,unionId,unionName,unionCode,totalQuota,usedQuota,delFlag,createdAt,updatedAt,createdBy,updatedBy)
|
||||
SELECT @id,@year,id,name,unionCode,@money,0,0,@now,@now,@actor,@actor FROM sys_union WHERE id=@unionId
|
||||
""", "id", UUID.randomUUID().toString().replace("-", ""), "year", row.getInt("year"),
|
||||
"unionId", row.getString("unionId"), "money", carry.add(delta), "now", System.currentTimeMillis(), "actor", StpUtil.getLoginIdAsString()));
|
||||
} else {
|
||||
NutMap budget = budgets.get(0);
|
||||
BigDecimal total = decimal(budget.get("totalQuota")).add(delta);
|
||||
if (!moneyValid(total)) throw new IllegalArgumentException("下拨后年度总额度超出允许范围");
|
||||
if (total.compareTo(decimal(budget.get("usedQuota"))) < 0)
|
||||
throw new IllegalArgumentException("调整后总额度不能低于已使用额度");
|
||||
execute(sql("UPDATE outlay_manage_union SET totalQuota=COALESCE(totalQuota,0)+@delta,updatedAt=@now,updatedBy=@actor WHERE id=@id",
|
||||
"delta", delta, "now", System.currentTimeMillis(), "actor", StpUtil.getLoginIdAsString(), "id", budget.getString("id")));
|
||||
}
|
||||
}
|
||||
|
||||
private void audit(String type, String id, String action, NutMap before, NutMap after, String remark) {
|
||||
execute(sql("""
|
||||
INSERT INTO outlay_annual_allocate_log (id,allocateType,allocateId,action,beforeData,afterData,remark,createdAt,createdBy)
|
||||
VALUES (@id,@type,@allocateId,@action,@before,@after,@remark,@now,@actor)
|
||||
""", "id", UUID.randomUUID().toString().replace("-", ""), "type", type, "allocateId", id,
|
||||
"action", action, "before", before == null ? null : Json.toJson(before), "after", Json.toJson(after),
|
||||
"remark", remark, "now", System.currentTimeMillis(), "actor", StpUtil.getLoginIdAsString()));
|
||||
}
|
||||
}
|
||||
@@ -42,39 +42,72 @@ public class OutlayManageUnionStatisticsServiceImpl extends BaseServiceImpl impl
|
||||
|
||||
@Override
|
||||
public NutMap queryIncomeExpenseSummary(Integer year, String unionId) {
|
||||
Cnd cnd = buildUnionManageCondition(year, unionId, true);
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
COALESCE(SUM(t.beginMoney), 0) AS beginMoney,
|
||||
COALESCE(SUM(t.feeJanApr), 0) AS feeJanApr,
|
||||
COALESCE(SUM(t.feeMayAug), 0) AS feeMayAug,
|
||||
COALESCE(SUM(t.feeSepDec), 0) AS feeSepDec,
|
||||
COALESCE(SUM(t.awardMoney), 0) AS awardMoney,
|
||||
COALESCE(SUM(t.usedMoney), 0) AS usedMoney,
|
||||
COALESCE(SUM(t.remainMoney), 0) AS remainMoney
|
||||
COALESCE(SUM(t.beginMoney),0) AS beginMoney,
|
||||
COALESCE(SUM(t.baseMoney),0) AS baseMoney,
|
||||
COALESCE(SUM(t.specialMoney),0) AS specialMoney,
|
||||
COALESCE(SUM(t.incomeMoney),0) AS incomeMoney,
|
||||
COALESCE(SUM(t.feeJanApr),0) AS feeJanApr,
|
||||
COALESCE(SUM(t.feeMayAug),0) AS feeMayAug,
|
||||
COALESCE(SUM(t.feeSepDec),0) AS feeSepDec,
|
||||
COALESCE(SUM(t.awardMoney),0) AS awardMoney,
|
||||
COALESCE(SUM(t.usedMoney),0) AS usedMoney,
|
||||
COALESCE(SUM(t.remainMoney),0) AS remainMoney
|
||||
FROM (
|
||||
SELECT
|
||||
mu.unionId,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 1 THEN au.allocateHeadMoney ELSE 0 END), 0) AS beginMoney,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 1 THEN au.allocateMoney ELSE 0 END), 0) AS feeJanApr,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 2 THEN au.allocateMoney ELSE 0 END), 0) AS feeMayAug,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 3 THEN au.allocateMoney ELSE 0 END), 0) AS feeSepDec,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 4 THEN au.allocateMoney ELSE 0 END), 0) AS awardMoney,
|
||||
COALESCE(mu.usedQuota, 0) AS usedMoney,
|
||||
COALESCE(mu.totalQuota, 0) - COALESCE(mu.usedQuota, 0) AS remainMoney
|
||||
FROM outlay_manage_union mu
|
||||
LEFT JOIN outlay_allocate_union au ON au.year = mu.year
|
||||
AND au.unionId = mu.unionId
|
||||
AND au.delFlag = 0
|
||||
LEFT JOIN sys_union su ON su.id = mu.unionId
|
||||
$condition
|
||||
GROUP BY mu.year, mu.unionId, mu.usedQuota, mu.totalQuota
|
||||
) t
|
||||
""");
|
||||
sql.setCondition(cnd);
|
||||
""" + incomeExpenseQuery() + ") t");
|
||||
sql.params().set("incomeYear", year == null ? DateUtil.thisYear() : year);
|
||||
sql.setCondition(buildUnionManageCondition(year, unionId, true));
|
||||
return executeMap(sql);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sql buildIncomeExpenseSql(Integer year, String unionId) {
|
||||
Sql sql = Sqls.create(incomeExpenseQuery() + " ORDER BY COALESCE(mu.unionCode,su.unionCode)");
|
||||
sql.params().set("incomeYear", year == null ? DateUtil.thisYear() : year);
|
||||
sql.setCondition(buildUnionManageCondition(year, unionId, true));
|
||||
return sql;
|
||||
}
|
||||
|
||||
private String incomeExpenseQuery() {
|
||||
// 历史会费并入年度基础经费,历史奖励并入专项经费;分别汇总避免关联后重复累计。
|
||||
// 年初数由年度总额度扣除当年各类下拨计算,兼容没有历史第一期记录的新流程。
|
||||
return """
|
||||
SELECT mu.year, mu.unionId,
|
||||
COALESCE(mu.unionName,su.name) AS unionName,
|
||||
COALESCE(mu.unionCode,su.unionCode) AS unionCode,
|
||||
COALESCE(mu.totalQuota,0) - (COALESCE(b.money,0) + COALESCE(sp.money,0) + COALESCE(au.feeJanApr,0) + COALESCE(au.feeMayAug,0) + COALESCE(au.feeSepDec,0) + COALESCE(au.awardMoney,0)) AS beginMoney,
|
||||
COALESCE(b.money,0) + COALESCE(au.feeJanApr,0) + COALESCE(au.feeMayAug,0) + COALESCE(au.feeSepDec,0) AS baseMoney,
|
||||
COALESCE(sp.money,0) + COALESCE(au.awardMoney,0) AS specialMoney,
|
||||
(COALESCE(b.money,0) + COALESCE(sp.money,0) + COALESCE(au.feeJanApr,0) + COALESCE(au.feeMayAug,0) + COALESCE(au.feeSepDec,0) + COALESCE(au.awardMoney,0)) AS incomeMoney,
|
||||
COALESCE(au.feeJanApr,0) AS feeJanApr,
|
||||
COALESCE(au.feeMayAug,0) AS feeMayAug,
|
||||
COALESCE(au.feeSepDec,0) AS feeSepDec,
|
||||
COALESCE(au.awardMoney,0) AS awardMoney,
|
||||
COALESCE(mu.usedQuota,0) AS usedMoney,
|
||||
COALESCE(mu.totalQuota,0)-COALESCE(mu.usedQuota,0) AS remainMoney
|
||||
FROM outlay_manage_union mu
|
||||
LEFT JOIN sys_union su ON su.id=mu.unionId
|
||||
LEFT JOIN (
|
||||
SELECT year,unionId,SUM(allocateMoney) money FROM outlay_annual_base
|
||||
WHERE year=@incomeYear AND status=1 GROUP BY year,unionId
|
||||
) b ON b.year=mu.year AND b.unionId=mu.unionId
|
||||
LEFT JOIN (
|
||||
SELECT year,unionId,SUM(allocateMoney) money FROM outlay_annual_special
|
||||
WHERE year=@incomeYear AND status=1 GROUP BY year,unionId
|
||||
) sp ON sp.year=mu.year AND sp.unionId=mu.unionId
|
||||
LEFT JOIN (
|
||||
SELECT year,unionId,
|
||||
SUM(CASE WHEN quarterly=1 THEN allocateMoney ELSE 0 END) feeJanApr,
|
||||
SUM(CASE WHEN quarterly=2 THEN allocateMoney ELSE 0 END) feeMayAug,
|
||||
SUM(CASE WHEN quarterly=3 THEN allocateMoney ELSE 0 END) feeSepDec,
|
||||
SUM(CASE WHEN quarterly=4 THEN allocateMoney ELSE 0 END) awardMoney
|
||||
FROM outlay_allocate_union WHERE year=@incomeYear AND delFlag=0 GROUP BY year,unionId
|
||||
) au ON au.year=mu.year AND au.unionId=mu.unionId
|
||||
$condition
|
||||
""";
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造两个列表共用的预算主表过滤条件,保证汇总和分页列表权限口径一致。
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
package com.budwk.app.zhgh.dayofficework.outlay.outlayManage.union.controller;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.sys.models.Sys_dict;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.service.impl.OutlayAnnualAllocateService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.UUID;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/outlay/outlayManage/unionAllocate/annual")
|
||||
@Ok("json:full")
|
||||
public class OutlayAnnualAllocateController {
|
||||
@Inject
|
||||
private OutlayAnnualAllocateService outlayAnnualAllocateService;
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
public Result pageData(PageForm pageForm, String type, Integer year, String unionId, String projectName) {
|
||||
return Result.success(outlayAnnualAllocateService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(),
|
||||
outlayAnnualAllocateService.pageSql(type, year, unionId, projectName)));
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
public Result summary(Integer year, String unionId) {
|
||||
return Result.success(outlayAnnualAllocateService.summary(year, unionId));
|
||||
}
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
public void doExport(String type, Integer year, String unionId, HttpServletResponse response) {
|
||||
int queryYear = year == null ? DateUtil.thisYear() : year;
|
||||
if (queryYear < 1900 || queryYear > 9999) throw new IllegalArgumentException("请选择有效年度");
|
||||
List<NutMap> rows;
|
||||
List<ExcelExportEntity> columns = new ArrayList<>();
|
||||
columns.add(new ExcelExportEntity("年度", "year", 12));
|
||||
columns.add(new ExcelExportEntity("分工会", "unionName", 30));
|
||||
String title;
|
||||
if ("summary".equals(type)) {
|
||||
title = "下拨汇总";
|
||||
rows = outlayAnnualAllocateService.summary(queryYear, unionId);
|
||||
for (NutMap row : rows) row.put("year", queryYear);
|
||||
columns.add(new ExcelExportEntity("基础经费已下拨(元)", "baseMoney", 24));
|
||||
columns.add(new ExcelExportEntity("专项经费已下拨(元)", "specialMoney", 24));
|
||||
columns.add(new ExcelExportEntity("新流程合计下拨(元)", "totalMoney", 24));
|
||||
} else if ("history".equals(type)) {
|
||||
title = "历史季度记录";
|
||||
rows = outlayAnnualAllocateService.historyRecords(queryYear, unionId);
|
||||
Map<String, String> projectNames = new HashMap<>();
|
||||
for (Sys_dict dict : sysDictService.getSubListByCode("OUTLAY_QUARTERLY")) {
|
||||
projectNames.put(dict.getCode(), dict.getName());
|
||||
}
|
||||
for (NutMap row : rows) {
|
||||
String code = row.getString("quarterly");
|
||||
row.put("projectName", projectNames.getOrDefault(code, code));
|
||||
}
|
||||
columns.add(new ExcelExportEntity("分配项目", "projectName", 24));
|
||||
columns.add(new ExcelExportEntity("分配前额度(元)", "allocateHeadMoney", 24));
|
||||
columns.add(new ExcelExportEntity("分配金额(元)", "allocateMoney", 24));
|
||||
} else {
|
||||
throw new IllegalArgumentException("不支持的导出类型");
|
||||
}
|
||||
ExportParams params = new ExportParams();
|
||||
params.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(params, columns, rows);
|
||||
CommonDownloadUtil.download(queryYear + "年" + title + ".xlsx", workbook, response);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
public Result newId() {
|
||||
return Result.success("", UUID.randomUUID().toString().replace("-", ""));
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
@POST
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result generate(Integer year, @Param("standard") BigDecimal standard, String unionId) {
|
||||
return outlayAnnualAllocateService.generate(year, standard, unionId);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
@POST
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result save(String type, String id, Integer year, String unionId, String projectName,
|
||||
Integer memberCount, @Param("standard") BigDecimal standard, @Param("allocateMoney") BigDecimal allocateMoney, String remark, Integer version) {
|
||||
return outlayAnnualAllocateService.save(type, id, year, unionId, projectName, memberCount, standard, allocateMoney, remark, version);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
@POST
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result confirm(String type, String id, Integer version) {
|
||||
return outlayAnnualAllocateService.confirm(type, id, version);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
@POST
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result batchConfirm(String type, Integer year, String unionId, String projectName) {
|
||||
return outlayAnnualAllocateService.batchConfirm(type, year, unionId, projectName);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
public Result logs(PageForm pageForm, String type, String id) {
|
||||
return Result.success(outlayAnnualAllocateService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), outlayAnnualAllocateService.sql("""
|
||||
SELECT l.*,u.username operatorName FROM outlay_annual_allocate_log l
|
||||
LEFT JOIN sys_user u ON u.id=l.createdBy
|
||||
WHERE l.allocateType=@type AND l.allocateId=@id ORDER BY l.createdAt DESC,l.id
|
||||
""", "type", type, "id", id)));
|
||||
}
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class OutlayManageUnionAllocateController {
|
||||
private OutlayManageUnionAllocateService outlayManageUnionAllocateService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/dayofficework/outlay/outlayManage/union/allocate/index.html")
|
||||
@Ok("beetl:/platform/zhgh/dayofficework/outlay/outlayManage/union/allocate/annual.html")
|
||||
@SaCheckPermission("outlay.outlayManage.union.allocate")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@@ -6,22 +6,17 @@ import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.service.OutlayManageUnionStatisticsService;
|
||||
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.union.vo.OutlayUnionIncomeExpenseVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
@@ -85,11 +80,10 @@ public class OutlayManageUnionIncomeExpenseController {
|
||||
ArrayList<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("单位", "unionName", 25));
|
||||
entities.add(new ExcelExportEntity("年初数", "beginMoney", 20));
|
||||
entities.add(new ExcelExportEntity("1-4月会费", "feeJanApr", 20));
|
||||
entities.add(new ExcelExportEntity("5-8月会费", "feeMayAug", 20));
|
||||
entities.add(new ExcelExportEntity("9-12月会费", "feeSepDec", 20));
|
||||
entities.add(new ExcelExportEntity("评优奖励", "awardMoney", 20));
|
||||
entities.add(new ExcelExportEntity("1-12月支出", "usedMoney", 20));
|
||||
entities.add(new ExcelExportEntity("年度基础经费", "baseMoney", 20));
|
||||
entities.add(new ExcelExportEntity("专项经费", "specialMoney", 20));
|
||||
entities.add(new ExcelExportEntity("合计下拨", "incomeMoney", 20));
|
||||
entities.add(new ExcelExportEntity("年度支出", "usedMoney", 20));
|
||||
entities.add(new ExcelExportEntity("经费余额", "remainMoney", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
@@ -98,52 +92,8 @@ public class OutlayManageUnionIncomeExpenseController {
|
||||
CommonDownloadUtil.download(queryYear + "年二级分工会经费收支使用情况表.xlsx", workbook, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计参数说明:
|
||||
* year 为统计年度,未传时默认当前年份;unionId 为二级分工会主键,管理员可为空查询全部。
|
||||
* 返回 VO 中 beginMoney 是年初数,feeJanApr/feeMayAug/feeSepDec 是三个会费收入段,
|
||||
* awardMoney 是评优奖励,usedMoney 是年度支出,remainMoney 是当前经费余额。
|
||||
*/
|
||||
private Sql buildIncomeExpenseSql(Integer year, String unionId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
mu.year AS year,
|
||||
mu.unionId AS unionId,
|
||||
COALESCE(mu.unionName, su.name) AS unionName,
|
||||
COALESCE(mu.unionCode, su.unionCode) AS unionCode,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 1 THEN au.allocateHeadMoney ELSE 0 END), 0) AS beginMoney,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 1 THEN au.allocateMoney ELSE 0 END), 0) AS feeJanApr,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 2 THEN au.allocateMoney ELSE 0 END), 0) AS feeMayAug,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 3 THEN au.allocateMoney ELSE 0 END), 0) AS feeSepDec,
|
||||
COALESCE(SUM(CASE WHEN au.quarterly = 4 THEN au.allocateMoney ELSE 0 END), 0) AS awardMoney,
|
||||
COALESCE(mu.usedQuota, 0) AS usedMoney,
|
||||
COALESCE(mu.totalQuota, 0) - COALESCE(mu.usedQuota, 0) AS remainMoney
|
||||
FROM outlay_manage_union mu
|
||||
LEFT JOIN sys_union su ON su.id = mu.unionId
|
||||
LEFT JOIN outlay_allocate_union au ON au.year = mu.year
|
||||
AND au.unionId = mu.unionId
|
||||
AND au.delFlag = 0
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("mu.delFlag", "=", false);
|
||||
cnd.and("mu.year", "=", getQueryYear(year));
|
||||
cnd.and("mu.totalQuota", "IS NOT", null);
|
||||
cnd.andEX("mu.unionId", "=", unionId);
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
cnd.and("mu.unionId", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
cnd.groupBy("mu.year");
|
||||
cnd.groupBy("mu.unionId");
|
||||
cnd.groupBy("mu.unionName");
|
||||
cnd.groupBy("mu.unionCode");
|
||||
cnd.groupBy("su.name");
|
||||
cnd.groupBy("su.unionCode");
|
||||
cnd.groupBy("mu.usedQuota");
|
||||
cnd.groupBy("mu.totalQuota");
|
||||
cnd.asc("mu.unionCode");
|
||||
sql.setCondition(cnd);
|
||||
return sql;
|
||||
return outlayManageUnionStatisticsService.buildIncomeExpenseSql(year, unionId);
|
||||
}
|
||||
|
||||
private Integer getQueryYear(Integer year) {
|
||||
|
||||
@@ -20,6 +20,12 @@ public class OutlayUnionIncomeExpenseVO {
|
||||
|
||||
private BigDecimal beginMoney;
|
||||
|
||||
private BigDecimal baseMoney;
|
||||
|
||||
private BigDecimal specialMoney;
|
||||
|
||||
private BigDecimal incomeMoney;
|
||||
|
||||
private BigDecimal feeJanApr;
|
||||
|
||||
private BigDecimal feeMayAug;
|
||||
|
||||
@@ -127,6 +127,7 @@ public class CondolenceApplyController {
|
||||
username as userName,
|
||||
loginname as loginName,
|
||||
sex,
|
||||
mobile,
|
||||
technicalTitle,
|
||||
IFNULL(unitname, '暂无') as unitName,
|
||||
unitid as unitId,
|
||||
|
||||
@@ -27,34 +27,34 @@ import org.nutz.mvc.annotation.Param;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName CondolenceBranchUnionApprovalController
|
||||
* @ClassName CondolenceFirstApprovalController
|
||||
* @Author JyuHsin
|
||||
* @Date 2025/7/28 11:33
|
||||
* @Version 1.0
|
||||
* @Description TODO
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/condolence/branchUnionApproval")
|
||||
@Api("职工慰问分工会审核")
|
||||
@At("/platform/condolence/firstApproval")
|
||||
@Api("职工慰问一级审核")
|
||||
@Ok("json:full")
|
||||
public class CondolenceBranchUnionApprovalController {
|
||||
public class CondolenceFirstApprovalController {
|
||||
|
||||
@Inject
|
||||
private CondolenceService condolenceService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/condolence/branchUnionApproval/index.html")
|
||||
@SaCheckPermission("condolence.branchUnionApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/condolence/firstApproval/index.html")
|
||||
@SaCheckPermission("condolence.firstApproval")
|
||||
public void index() {}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/condolence/branchUnionApproval/index.html")
|
||||
@SaCheckPermission("h5.condolence.branchUnionApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/condolence/firstApproval/index.html")
|
||||
@SaCheckPermission("h5.condolence.firstApproval")
|
||||
public void h5Index() {}
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission(value = {"condolence.branchUnionApproval", "h5.condolence.branchUnionApproval"}, mode = SaMode.OR)
|
||||
@SaCheckPermission(value = {"condolence.firstApproval", "h5.condolence.firstApproval"}, mode = SaMode.OR)
|
||||
public Result pageData(PageForm pageForm,
|
||||
@Param(value = "year") Integer year,
|
||||
@Param(value = "type") String type,
|
||||
@@ -29,30 +29,30 @@ import java.util.List;
|
||||
/**
|
||||
* @author zhf
|
||||
* @date 2025/12/23 14:13
|
||||
* @description 校工会预审
|
||||
* @description 二级审核
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/condolence/schoolPrincipalApproval")
|
||||
@Api("职工慰问校工会预审")
|
||||
@At("/platform/condolence/secondApproval")
|
||||
@Api("职工慰问二级审核")
|
||||
@Ok("json:full")
|
||||
public class CondolenceSchoolPrincipalApprovalController {
|
||||
public class CondolenceSecondApprovalController {
|
||||
|
||||
@Inject
|
||||
private CondolenceService condolenceService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/condolence/schoolPrincipalApproval/index.html")
|
||||
@SaCheckPermission("condolence.schoolPrincipalApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/condolence/secondApproval/index.html")
|
||||
@SaCheckPermission("condolence.secondApproval")
|
||||
public void index() {}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/condolence/schoolPrincipalApproval/index.html")
|
||||
@SaCheckPermission("h5.condolence.schoolPrincipalApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/condolence/secondApproval/index.html")
|
||||
@SaCheckPermission("h5.condolence.secondApproval")
|
||||
public void h5Index() {}
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission(value = {"condolence.schoolPrincipalApproval", "h5.condolence.schoolPrincipalApproval"}, mode = SaMode.OR)
|
||||
@SaCheckPermission(value = {"condolence.secondApproval", "h5.condolence.secondApproval"}, mode = SaMode.OR)
|
||||
public Result pageData(PageForm pageForm,
|
||||
@Param(value = "year") Integer year,
|
||||
@Param(value = "type") String type,
|
||||
@@ -27,34 +27,34 @@ import org.nutz.mvc.annotation.Param;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName CondolenceSchoolUnionApprovalController
|
||||
* @ClassName CondolenceThirdApprovalController
|
||||
* @Author JyuHsin
|
||||
* @Date 2025/7/29 16:23
|
||||
* @Version 1.0
|
||||
* @Description TODO
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/condolence/schoolUnionApproval")
|
||||
@Api("职工慰问校工会审核")
|
||||
@At("/platform/condolence/thirdApproval")
|
||||
@Api("职工慰问三级审核")
|
||||
@Ok("json:full")
|
||||
public class CondolenceSchoolUnionApprovalController {
|
||||
public class CondolenceThirdApprovalController {
|
||||
|
||||
@Inject
|
||||
private CondolenceService condolenceService;
|
||||
|
||||
@At("/")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/condolence/schoolUnionApproval/index.html")
|
||||
@SaCheckPermission("condolence.schoolUnionApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/condolence/thirdApproval/index.html")
|
||||
@SaCheckPermission("condolence.thirdApproval")
|
||||
public void index() {}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/condolence/schoolUnionApproval/index.html")
|
||||
@SaCheckPermission("h5.condolence.schoolUnionApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/condolence/thirdApproval/index.html")
|
||||
@SaCheckPermission("h5.condolence.thirdApproval")
|
||||
public void h5Index() {}
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission(value = {"condolence.schoolUnionApproval", "h5.condolence.schoolUnionApproval"}, mode = SaMode.OR)
|
||||
@SaCheckPermission(value = {"condolence.thirdApproval", "h5.condolence.thirdApproval"}, mode = SaMode.OR)
|
||||
public Result pageData(PageForm pageForm,
|
||||
@Param(value = "year") Integer year,
|
||||
@Param(value = "type") String type,
|
||||
@@ -184,6 +184,10 @@ public class DifficultHelpApplyController {
|
||||
birthday,
|
||||
mobile,
|
||||
sex,
|
||||
idCard,
|
||||
position,
|
||||
professionalTitle AS officialCapacity,
|
||||
(SELECT u.homeAddress FROM sys_user u WHERE u.id = vw_user.id) AS homeAddress,
|
||||
unitName,
|
||||
unionName,
|
||||
unionId,
|
||||
|
||||
@@ -25,15 +25,15 @@ import java.util.List;
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:DifficultHelpBranchUnionApprovalController
|
||||
* @name:DifficultHelpFirstApprovalController
|
||||
* @Date 2025/7/31 11:47
|
||||
* @注释
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json")
|
||||
@ApiOperation("困难补助分工会审核")
|
||||
@At("/platform/difficultHelp/branchUnionApproval")
|
||||
public class DifficultHelpBranchUnionApprovalController {
|
||||
@ApiOperation("困难补助一级审核")
|
||||
@At("/platform/difficultHelp/firstApproval")
|
||||
public class DifficultHelpFirstApprovalController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@@ -41,27 +41,27 @@ public class DifficultHelpBranchUnionApprovalController {
|
||||
private DifficultHelpCommonService difficultHelpCommonService;
|
||||
|
||||
@At("")
|
||||
@SaCheckPermission("difficultHelp.branchUnionApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/branchunionapproval/index.html")
|
||||
@SaCheckPermission("difficultHelp.firstApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/firstApproval/index.html")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("difficultHelp.branchUnionApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/branchunionapproval/form.html")
|
||||
@SaCheckPermission("difficultHelp.firstApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/firstApproval/form.html")
|
||||
public void form() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("h5.difficultHelp.branchUnionApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/difficulthelp/branchunionapproval/index.html")
|
||||
@SaCheckPermission("h5.difficultHelp.firstApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/difficulthelp/firstApproval/index.html")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("困难补助分工会审核列表")
|
||||
@SaCheckPermission("difficultHelp.branchUnionApproval")
|
||||
@ApiOperation("困难补助一级审核列表")
|
||||
@SaCheckPermission("difficultHelp.firstApproval")
|
||||
public Result pageData(DifficultHelpPageParam pageParam) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.staffbenefit.difficulthelp.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
@@ -68,6 +69,7 @@ public class DifficultHelpMineController {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.id,
|
||||
info.createdBy,
|
||||
info.proxyUserName,
|
||||
info.proxyLoginName,
|
||||
info.userName,
|
||||
@@ -103,7 +105,8 @@ public class DifficultHelpMineController {
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
pageParam.buildSearch(cnd, "info.");
|
||||
cnd.and("info.createdBy", "=", SecurityUtil.getUserId());
|
||||
cnd.and(Cnd.exps("info.createdBy", "=", SecurityUtil.getUserId())
|
||||
.or("info.userId", "=", SecurityUtil.getUserId()));
|
||||
if (StrUtil.isAllBlank(pageParam.getPageOrderName(), pageParam.getPageOrderBy())) {
|
||||
cnd.desc("info.applyTime");
|
||||
} else {
|
||||
@@ -121,6 +124,10 @@ public class DifficultHelpMineController {
|
||||
@SaCheckPermission("difficultHelp.mine")
|
||||
@SLog(tag = "困难补助申请", msg = "删除困难补助申请,id: ${args[0]}")
|
||||
public Result onDelete(@Valid String id){
|
||||
DifficultHelpInfo helpInfo = dao.fetch(DifficultHelpInfo.class, id);
|
||||
if (helpInfo == null || !SecurityUtil.getUserId().equals(helpInfo.getCreatedBy())) {
|
||||
return Result.error("只能删除自己创建的申请记录");
|
||||
}
|
||||
dao.clear(DifficultHelpInfo.class, Cnd.where("id", "=", id));
|
||||
// 删除流程相关操作
|
||||
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
|
||||
@@ -130,7 +137,7 @@ public class DifficultHelpMineController {
|
||||
|
||||
@At
|
||||
@ApiModelProperty("获取困难补助申请")
|
||||
@SaCheckPermission("difficultHelp.mine")
|
||||
@SaCheckPermission(value = {"difficultHelp.mine", "difficultHelp.reading"}, mode = SaMode.OR)
|
||||
public Result findOne(String id) {
|
||||
DifficultHelpInfo helpInfo = dao.fetch(DifficultHelpInfo.class, id);
|
||||
return Result.success().addData(helpInfo);
|
||||
|
||||
@@ -26,15 +26,15 @@ import java.util.List;
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:DifficultHelpBranchUnionApprovalController
|
||||
* @name:DifficultHelpSecondApprovalController
|
||||
* @Date 2025/7/31 11:47
|
||||
* @注释
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json")
|
||||
@ApiOperation("困难补助二级党组织审核")
|
||||
@At("/platform/difficultHelp/unionLeaderApproval")
|
||||
public class DifficultHelpBranchUnionLeaderApprovalController {
|
||||
@ApiOperation("困难补助二级审核")
|
||||
@At("/platform/difficultHelp/secondApproval")
|
||||
public class DifficultHelpSecondApprovalController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@@ -42,27 +42,27 @@ public class DifficultHelpBranchUnionLeaderApprovalController {
|
||||
private DifficultHelpCommonService difficultHelpCommonService;
|
||||
|
||||
@At("")
|
||||
@SaCheckPermission("difficultHelp.unionLeaderApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/unionLeaderApproval/index.html")
|
||||
@SaCheckPermission("difficultHelp.secondApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/secondApproval/index.html")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("difficultHelp.unionLeaderApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/unionLeaderApproval/form.html")
|
||||
@SaCheckPermission("difficultHelp.secondApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/secondApproval/form.html")
|
||||
public void form() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("h5.difficultHelp.unionLeaderApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/difficulthelp/unionLeaderApproval/index.html")
|
||||
@SaCheckPermission("h5.difficultHelp.secondApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/difficulthelp/secondApproval/index.html")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("困难补助分工会审核列表")
|
||||
@SaCheckPermission("difficultHelp.unionLeaderApproval")
|
||||
@ApiOperation("困难补助二级审核列表")
|
||||
@SaCheckPermission("difficultHelp.secondApproval")
|
||||
public Result pageData(DifficultHelpPageParam pageParam) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
@@ -30,15 +30,15 @@ import java.util.List;
|
||||
/**
|
||||
* @version 1.0
|
||||
* @Author zzr
|
||||
* @name:DifficultHelpSchoolUnionApprovalController
|
||||
* @name:DifficultHelpThirdApprovalController
|
||||
* @Date 2025/7/31 11:47
|
||||
* @注释
|
||||
*/
|
||||
@IocBean
|
||||
@Ok("json")
|
||||
@ApiOperation("困难补助校工会审核")
|
||||
@At("/platform/difficultHelp/schoolUnionApproval")
|
||||
public class DifficultHelpSchoolUnionApprovalController {
|
||||
@ApiOperation("困难补助三级审核")
|
||||
@At("/platform/difficultHelp/thirdApproval")
|
||||
public class DifficultHelpThirdApprovalController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@@ -46,26 +46,26 @@ public class DifficultHelpSchoolUnionApprovalController {
|
||||
private DifficultHelpCommonService difficultHelpCommonService;
|
||||
|
||||
@At("")
|
||||
@SaCheckPermission("difficultHelp.schoolUnionApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/schoolunionapproval/index.html")
|
||||
@SaCheckPermission("difficultHelp.thirdApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/thirdApproval/index.html")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("difficultHelp.schoolUnionApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/schoolunionapproval/form.html")
|
||||
@SaCheckPermission("difficultHelp.thirdApproval")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/difficulthelp/thirdApproval/form.html")
|
||||
public void form() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("h5.difficultHelp.schoolUnionApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/difficulthelp/schoolunionapproval/index.html")
|
||||
@SaCheckPermission("h5.difficultHelp.thirdApproval")
|
||||
@Ok("beetl:/platform/zhghh5/staffbenefit/difficulthelp/thirdApproval/index.html")
|
||||
public void h5() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("困难补助校工会审核列表")
|
||||
@SaCheckPermission("difficultHelp.schoolUnionApproval")
|
||||
@ApiOperation("困难补助三级审核列表")
|
||||
@SaCheckPermission("difficultHelp.thirdApproval")
|
||||
public Result pageData(DifficultHelpPageParam pageParam) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
@@ -131,7 +131,7 @@ public class DifficultHelpSchoolUnionApprovalController {
|
||||
|
||||
@At
|
||||
@ApiOperation("保存补助金额、级别")
|
||||
@SaCheckPermission("difficultHelp.schoolUnionApproval")
|
||||
@SaCheckPermission("difficultHelp.thirdApproval")
|
||||
@SLog(tag = "困难补助申请", msg = "保存申请,填写人: ${args[0].proxyUserName}")
|
||||
public Result save(@Param("data") DifficultHelpInfo difficultHelpInfo) {
|
||||
dao.updateIgnoreNull(difficultHelpInfo);
|
||||
@@ -260,7 +260,7 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
cnd.andEX("enroll.isNormal", "=", true);
|
||||
cnd.andEX("YEAR ( enroll.signingUptime )", "=", year);
|
||||
|
||||
if (StrUtil.isNotBlank(lotId)) {
|
||||
if (!"2".equals(state) && StrUtil.isNotBlank(lotId)) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.or("line.lotId", "=", lotId);
|
||||
// seg.or("agency.lotId", "=", lotId);
|
||||
@@ -275,7 +275,7 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
}
|
||||
cnd.andEX("enroll.selfUnionId", "=", unionId);
|
||||
} else {
|
||||
if (StrUtil.isNotBlank(state2)) {
|
||||
if ("1".equals(state) && StrUtil.isNotBlank(state2)) {
|
||||
//等于1本工会人员看自己工会线路人员
|
||||
if (state2.equals("1")) {
|
||||
cnd.andEX("enroll.selfUnionId", "=", TherapyContext.getUnionId());
|
||||
@@ -296,8 +296,10 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
}
|
||||
}
|
||||
cnd.andEX("enroll.selfUnitId", "=", unitId);
|
||||
cnd.andEX("lineu.lineId", "=", takePartInLineId);
|
||||
cnd.andEX("lineu.id", "=", selectId);
|
||||
if (!"2".equals(state)) {
|
||||
cnd.andEX("lineu.lineId", "=", takePartInLineId);
|
||||
cnd.andEX("lineu.id", "=", selectId);
|
||||
}
|
||||
addEnrollTravelAgencyCondition(cnd, agencyId);
|
||||
if (state.equals("1")) {
|
||||
cnd.andEX("line.regionalNature", "=", regionalNature);
|
||||
@@ -305,9 +307,8 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
cnd.and("enroll.takePartInLineId", "!=", "");
|
||||
sql.setVar("lotSql", ",(select lotName from inclusive_therapy_v3_lot where id = line.lotId) as lotName");
|
||||
} else if (state.equals("2")) {
|
||||
cnd.and("enroll.takePartInTravelAgencyId", "is not", null);
|
||||
cnd.and("enroll.takePartInTravelAgencyId", "!=", "");
|
||||
cnd.andEX("enroll.takePartInTravelAgencyId", "=", agencyId);
|
||||
cnd.and("agency.id", "is not", null);
|
||||
cnd.andEX("agency.id", "=", agencyId);
|
||||
} else if ("3".equals(state)) {
|
||||
cnd.and("enroll.takePartInBaseManagementId", "is not", null);
|
||||
cnd.andEX("enroll.takePartInBaseManagementId", "=", takePartInBaseManagementId);
|
||||
@@ -333,27 +334,35 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
public Object getLxsData(PageForm pageForm, String year, String agencyId) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT agency.*
|
||||
FROM (
|
||||
SELECT
|
||||
*,
|
||||
agency.*,
|
||||
files AS fileId,
|
||||
( SELECT COUNT( 1 ) FROM inclusive_therapy_v3_enroll WHERE agency.id = takePartInTravelAgencyId and isNormal=true and stateId=@stateId $unionCnd $yearCnd) agencyNum
|
||||
( SELECT COUNT(1)
|
||||
FROM inclusive_therapy_v3_enroll enroll
|
||||
LEFT JOIN inclusive_therapy_v3_line_union_select lineu ON lineu.id = enroll.takePartInLineId
|
||||
LEFT JOIN inclusive_therapy_v3_line line ON line.id = lineu.lineId
|
||||
WHERE agency.id = IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))
|
||||
AND enroll.isNormal = TRUE AND enroll.stateId = @stateId
|
||||
$agencyUnionCnd $agencyYearCnd
|
||||
) agencyNum
|
||||
FROM
|
||||
inclusive_therapy_v3_travel_agency agency
|
||||
) agency
|
||||
$condition
|
||||
""").setParam("stateId", TheRapyRecuperationState.PASS);
|
||||
if (!TherapyContext.hasAnyRoles("sysadmin,H06")) {
|
||||
sql.setVar("unionCnd", "AND selfUnionId = '%s' ".formatted(TherapyContext.getUnionId()));
|
||||
sql.setVar("agencyUnionCnd", "AND enroll.selfUnionId = '%s' ".formatted(TherapyContext.getUnionId()));
|
||||
}
|
||||
if (StrUtil.isNotBlank(year)) {
|
||||
sql.setVar("yearCnd", "AND YEAR(signingUptime) = '%s' ".formatted(year));
|
||||
sql.setVar("agencyYearCnd", "AND YEAR(enroll.signingUptime) = '%s' ".formatted(year));
|
||||
}
|
||||
cnd.andEX("agency.`year`", "=", year);
|
||||
cnd.andEX("agency.id", "=", agencyId);
|
||||
cnd.and("agency.agencyNum", ">", 0);
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = pagination.getList();
|
||||
List<NutMap> agencyNum = list.stream().filter(v -> v.getInt("agencyNum") > 0).collect(Collectors.toList());
|
||||
pagination.setList(agencyNum);
|
||||
return pagination;
|
||||
}
|
||||
|
||||
@@ -639,8 +648,8 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
//cnd1.and(Cnd.exps("enroll.selfUnionId", "=", Vi.getUnionId()));
|
||||
}
|
||||
} else if (state.equals("2")) {
|
||||
cnd1.and("enroll.takePartInTravelAgencyId", "is not", null)
|
||||
.and("enroll.takePartInTravelAgencyId", "!=", "")
|
||||
cnd1.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "is not", null)
|
||||
.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "!=", "")
|
||||
.and("enroll.selfUnionId", "=", TherapyContext.getUnionId());
|
||||
} else {
|
||||
cnd1.and("enroll.takePartInBaseManagementId", "is not", null).and("enroll.selfUnionId", "=", TherapyContext.getUnionId());
|
||||
@@ -675,8 +684,8 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
cnd1.and("enroll.takePartInLineId", "is not", null);
|
||||
cnd1.and("enroll.takePartInLineId", "!=", "");
|
||||
} else if (state.equals("2")) {
|
||||
cnd1.and("enroll.takePartInTravelAgencyId", "is not", null);
|
||||
cnd1.and("enroll.takePartInTravelAgencyId", "!=", "");
|
||||
cnd1.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "is not", null);
|
||||
cnd1.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "!=", "");
|
||||
cnd1.andEX("enroll.selfUnionId", "=", unionId);
|
||||
} else if (state.equals("3")) {
|
||||
cnd1.and("enroll.takePartInBaseManagementId", "is not", null);
|
||||
@@ -732,8 +741,8 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
//cnd2.and(Cnd.exps("enroll.selfUnionId", "=", Vi.getUnionId()));
|
||||
}
|
||||
} else if (state.equals("2")) {
|
||||
cnd2.and("enroll.takePartInTravelAgencyId", "is not", null)
|
||||
.and("enroll.takePartInTravelAgencyId", "!=", "")
|
||||
cnd2.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "is not", null)
|
||||
.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "!=", "")
|
||||
.and("enroll.selfUnionId", "=", TherapyContext.getUnionId());
|
||||
} else {
|
||||
cnd2.and("enroll.takePartInBaseManagementId", "is not", null).and("enroll.selfUnionId", "=", TherapyContext.getUnionId());
|
||||
@@ -768,8 +777,8 @@ public class TheRapyRecuperationUnionQueryController {
|
||||
cnd2.and("enroll.takePartInLineId", "is not", null);
|
||||
cnd2.and("enroll.takePartInLineId", "!=", "");
|
||||
} else if (state.equals("2")) {
|
||||
cnd2.and("enroll.takePartInTravelAgencyId", "is not", null);
|
||||
cnd2.and("enroll.takePartInTravelAgencyId", "!=", "");
|
||||
cnd2.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "is not", null);
|
||||
cnd2.and("IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))", "!=", "");
|
||||
cnd2.andEX("enroll.selfUnionId", "=", unionId);
|
||||
} else {
|
||||
cnd2.and("enroll.takePartInBaseManagementId", "is not", null);
|
||||
|
||||
@@ -99,8 +99,16 @@ public class TheRapyRecuperationEnrollServiceImpl extends TherapyServiceImpl<The
|
||||
@Inject
|
||||
private TheRapyRecuperationLineService lineService;
|
||||
|
||||
private boolean isCurrentUserInActivityScope() {
|
||||
TheRapyRecuperationConfig config = dao().fetch(TheRapyRecuperationConfig.class);
|
||||
return config != null && activityBasicScopeService.isUserInGroup(config.getActivityGroupId(), TherapyContext.getUserId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination enrollPageData(PageForm pageForm, Integer year, String unionId, int trrt, Integer lineUnionType, String lineKeyword, Integer signUpStatus) {
|
||||
if (!isCurrentUserInActivityScope()) {
|
||||
return new Pagination(pageForm.getPageNumber(), pageForm.getPageSize(), 0, Collections.emptyList());
|
||||
}
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (List.of(TheRapyRecuperationType.provinceInLine.getValue(), TheRapyRecuperationType.provinceOutLine.getValue()).contains(trrt)) {
|
||||
Sql lineSql = Sqls.create("""
|
||||
@@ -217,6 +225,9 @@ public class TheRapyRecuperationEnrollServiceImpl extends TherapyServiceImpl<The
|
||||
|
||||
@Override
|
||||
public List<NutMap> getSelectLineById(String lineId, String usId, String unionId, int trrt, Integer lineUnionType, Integer signUpStatus) {
|
||||
if (!isCurrentUserInActivityScope()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Sql lineSql = Sqls.create("""
|
||||
SELECT
|
||||
us.id as usId,
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.staffbenefit.therapyRecuperation.service.impl;
|
||||
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext;
|
||||
import com.budwk.app.zhgh.staffbenefit.therapyRecuperation.constant.TheRapyRecuperationState;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyServiceImpl;
|
||||
import com.budwk.app.zhgh.staffbenefit.therapyRecuperation.model.TheRapyRecuperationTravelAgency;
|
||||
@@ -114,11 +115,22 @@ public class TheRapyRecuperationTravelAgencyServiceImpl extends TherapyServiceIm
|
||||
( SELECT COUNT( 1 ) FROM inclusive_therapy_v3_enroll_companion WHERE trreId = enroll.id AND relation = '亲属' ) isFamily
|
||||
FROM
|
||||
`inclusive_therapy_v3_enroll` enroll
|
||||
LEFT JOIN inclusive_therapy_v3_travel_agency agency ON agency.id = enroll.takePartInTravelAgencyId
|
||||
LEFT JOIN inclusive_therapy_v3_line_union_select lineu ON lineu.id = enroll.takePartInLineId
|
||||
LEFT JOIN inclusive_therapy_v3_line line ON line.id = lineu.lineId
|
||||
LEFT JOIN inclusive_therapy_v3_travel_agency agency
|
||||
ON agency.id = IFNULL(enroll.takePartInTravelAgencyId, IFNULL(lineu.travelAgencyId, line.travelAgencyId))
|
||||
WHERE
|
||||
enroll.takePartInTravelAgencyId = @takePartInTravelAgencyId
|
||||
and enroll.selfUnionId = @unionId
|
||||
""").setParam("takePartInTravelAgencyId", id).setParam("unionId", TherapyContext.getUnionId());
|
||||
agency.id = @takePartInTravelAgencyId
|
||||
AND enroll.isNormal = TRUE
|
||||
AND enroll.stateId = @stateId
|
||||
AND YEAR(enroll.signingUptime) = agency.year
|
||||
$agencyUnionCnd
|
||||
""").setParam("takePartInTravelAgencyId", id)
|
||||
.setParam("stateId", TheRapyRecuperationState.PASS);
|
||||
if (!TherapyContext.hasAnyRoles("sysadmin,H06")) {
|
||||
sql.setVar("agencyUnionCnd", "AND enroll.selfUnionId = @unionId");
|
||||
sql.setParam("unionId", TherapyContext.getUnionId());
|
||||
}
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,16 @@ public class MemberHistory extends Sys_user {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("编制类别")
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String preparedBy;
|
||||
|
||||
@Column
|
||||
@Comment("岗位类别")
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String jobCategory;
|
||||
|
||||
@Column
|
||||
@Comment("年度")
|
||||
@ColDefine(type = ColType.INT, width = 4)
|
||||
|
||||
@@ -5,7 +5,6 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.afterturn.easypoi.excel.export.ExcelExportService;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
@@ -24,6 +23,13 @@ import com.budwk.app.zhgh.welfare.param.WelfareSelectionSituationPageForm;
|
||||
import com.budwk.app.zhgh.welfare.service.WelfareSelectionSituationService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.ClientAnchor;
|
||||
import org.apache.poi.ss.usermodel.Drawing;
|
||||
import org.apache.poi.ss.usermodel.Font;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
@@ -232,55 +238,69 @@ public class WelfareSelectionSituationServiceImpl extends BaseServiceImpl<Welfar
|
||||
List<WelfareProjectSubjectOption> optionList = dao().query(WelfareProjectSubjectOption.class, Cnd.where(WelfareProjectSubjectOption::getWelfareId, "=", pageForm.getProjectId()).asc("optionSort"));
|
||||
|
||||
for (NutMap map : list) {
|
||||
if (map.get("selectOptionIds") != null){
|
||||
String[] selectOptionIds = map.getString("selectOptionIds").split(",");
|
||||
for (WelfareProjectSubjectOption option : optionList) {
|
||||
if(Arrays.asList(selectOptionIds).contains(option.getId())){
|
||||
map.put(option.getOptionName(), "√");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (map.get("userSign") != null){
|
||||
if (map.get("userSign") != null) {
|
||||
try {
|
||||
Sys_file file = dao().fetch(Sys_file.class, Cnd.where(Sys_file::getDownloadPath, "=", map.getString("userSign")));
|
||||
byte[] userSignBytes = SysFileMinIoUtil.getFileBytes(file.getBucket(), file.getStoragePath());
|
||||
map.put("userSign", userSignBytes);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
log.error("下载图片失败", e);
|
||||
BufferedImage image = ImageIO.read(new ByteArrayInputStream(userSignBytes));
|
||||
if (image != null) {
|
||||
ByteArrayOutputStream png = new ByteArrayOutputStream();
|
||||
ImageIO.write(image, "png", png);
|
||||
map.put("userSign", png.toByteArray());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("下载签字图片失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<Map<String, Object>> safeList = list.stream().map(nutMap -> {
|
||||
Map<String, Object> map = new HashMap<>(nutMap);
|
||||
return map;
|
||||
}).toList();
|
||||
|
||||
// 分组
|
||||
Map<String, List<Map<String, Object>>> listMap = safeList.stream()
|
||||
.collect(Collectors.groupingBy(n -> (String) n.get("welfareUnionName")));
|
||||
|
||||
// 构建 Excel 列
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||
optionList.forEach(option -> {
|
||||
entities.add(new ExcelExportEntity(option.getOptionName(), option.getOptionName(), 20));
|
||||
});
|
||||
ExcelExportEntity userSignEntity = new ExcelExportEntity("签字", "userSign", 20);
|
||||
userSignEntity.setType(2);
|
||||
userSignEntity.setExportImageType(2);
|
||||
entities.add(userSignEntity);
|
||||
|
||||
// 导出
|
||||
Map<String, List<NutMap>> rowsByUnion = list.stream()
|
||||
.collect(Collectors.groupingBy(n -> n.getString("welfareUnionName")));
|
||||
Workbook workbook = new HSSFWorkbook();
|
||||
listMap.forEach((k, v) -> {
|
||||
ExcelExportService service = new ExcelExportService();
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setSheetName(k);
|
||||
exportParams.setType(ExcelType.HSSF);
|
||||
service.createSheetForMap(workbook, exportParams, entities, v);
|
||||
if (rowsByUnion.isEmpty()) {
|
||||
rowsByUnion.put("领取表", Collections.emptyList());
|
||||
}
|
||||
|
||||
CellStyle headerStyle = workbook.createCellStyle();
|
||||
Font headerFont = workbook.createFont();
|
||||
headerFont.setBold(true);
|
||||
headerStyle.setFont(headerFont);
|
||||
|
||||
List<String> headers = new ArrayList<>(List.of("工号", "姓名"));
|
||||
optionList.forEach(option -> headers.add(option.getOptionName()));
|
||||
headers.add("签字");
|
||||
int signColumn = headers.size() - 1;
|
||||
|
||||
rowsByUnion.forEach((unionName, records) -> {
|
||||
Sheet sheet = workbook.createSheet(unionName);
|
||||
Row header = sheet.createRow(0);
|
||||
for (int column = 0; column < headers.size(); column++) {
|
||||
sheet.setColumnWidth(column, 20 * 256);
|
||||
Cell cell = header.createCell(column);
|
||||
cell.setCellValue(headers.get(column));
|
||||
cell.setCellStyle(headerStyle);
|
||||
}
|
||||
|
||||
Drawing<?> drawing = sheet.createDrawingPatriarch();
|
||||
for (NutMap record : records) {
|
||||
Row row = sheet.createRow(sheet.getLastRowNum() + 1);
|
||||
row.createCell(0).setCellValue(Objects.toString(record.get("loginName"), ""));
|
||||
row.createCell(1).setCellValue(Objects.toString(record.get("userName"), ""));
|
||||
Set<String> selectedIds = new HashSet<>(Arrays.asList(
|
||||
Objects.toString(record.get("selectOptionIds"), "").split(",")));
|
||||
for (int i = 0; i < optionList.size(); i++) {
|
||||
row.createCell(i + 2).setCellValue(selectedIds.contains(optionList.get(i).getId()) ? "√" : "");
|
||||
}
|
||||
if (record.get("userSign") instanceof byte[] signature) {
|
||||
row.setHeightInPoints(40);
|
||||
ClientAnchor anchor = workbook.getCreationHelper().createClientAnchor();
|
||||
anchor.setCol1(signColumn);
|
||||
anchor.setCol2(signColumn + 1);
|
||||
anchor.setRow1(row.getRowNum());
|
||||
anchor.setRow2(row.getRowNum() + 1);
|
||||
drawing.createPicture(anchor, workbook.addPicture(signature, Workbook.PICTURE_TYPE_PNG));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
CommonDownloadUtil.download("领取表.xls", workbook, response);
|
||||
|
||||
@@ -34,7 +34,7 @@ sdk:
|
||||
appSecret: a65cec4fb69980bd88258fc8433a3eef
|
||||
redirectUri: /platform/wx/oauth2/callback
|
||||
cas:
|
||||
enable: true
|
||||
enable: false
|
||||
server-url-prefix: https://authserver.zjnu.edu.cn/authserver
|
||||
server-login-url: https://authserver.zjnu.edu.cn/authserver/login
|
||||
qi-wx-server-login-url: https://authserver.zjnu.edu.cn/authserver/login
|
||||
|
||||
@@ -68,7 +68,7 @@ custom:
|
||||
msg:
|
||||
platform:
|
||||
enabled: true
|
||||
IntelligenceMode: false
|
||||
IntelligenceMode: true
|
||||
app-id: 'MSG45363193'
|
||||
app-password: 'OGQxNzVmOTJkZjM5NzJhZDg1MDNiZGM0MDQ5ZTJlNDY'
|
||||
base-url: http://xxt.zjnu.edu.cn
|
||||
|
||||
@@ -7938,7 +7938,7 @@ CREATE TABLE `member_history` (
|
||||
`modelWorkerFiles` json NULL COMMENT '劳模资料',
|
||||
`customMenuIds` json NULL COMMENT '常用菜单',
|
||||
`retireDate` date NULL DEFAULT NULL COMMENT '退休日期',
|
||||
`preparedBy` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '人事编制',
|
||||
`preparedBy` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '编制类别',
|
||||
`customApprovalOpinions` json NULL COMMENT '常用审批意见',
|
||||
`wxOpenId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信openId',
|
||||
`totalIntegral` int NULL DEFAULT 0 COMMENT '总积分',
|
||||
@@ -7962,7 +7962,7 @@ CREATE TABLE `member_history` (
|
||||
`isThirtyTeach` tinyint(1) NULL DEFAULT NULL COMMENT '是否教学30年以上教工',
|
||||
`preparationMemberFee` decimal(10, 2) NULL DEFAULT NULL COMMENT '编制会费',
|
||||
`contractMemberFee` decimal(10, 2) NULL DEFAULT NULL COMMENT '合同制会费',
|
||||
`jobCategory` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '岗位类别',
|
||||
`jobCategory` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '岗位类别',
|
||||
`professionalTitle` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职称',
|
||||
`professionalLevel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职级',
|
||||
`employeeSource` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职工来源',
|
||||
@@ -12460,7 +12460,7 @@ CREATE TABLE `sys_user` (
|
||||
`arrivalAtSchoolDate` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '来校时间',
|
||||
`postDoctoralJoinDate` date NULL DEFAULT NULL COMMENT '博士后进站时间',
|
||||
`personType1` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '人员类别',
|
||||
`preparedBy` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '聘用方式',
|
||||
`preparedBy` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '编制类别',
|
||||
`marriage` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '婚姻状况',
|
||||
`memberTime` datetime NULL DEFAULT NULL COMMENT '会员加入时间',
|
||||
`openId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'openId',
|
||||
@@ -12634,7 +12634,7 @@ CREATE TABLE `sys_user_history` (
|
||||
`dutySituation` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '在岗情况',
|
||||
`personType` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '教职工类别码',
|
||||
`pendingConfirmStatus` tinyint NULL DEFAULT 0 COMMENT '待确认状态:0不用确认、1待确认、2已确认',
|
||||
`preparedBy` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '编制类别码',
|
||||
`preparedBy` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '编制类别',
|
||||
`teachingTime` date NULL DEFAULT NULL COMMENT '从教年月',
|
||||
`expectedLeaveSchoolDate` date NULL DEFAULT NULL COMMENT '预计离校时间/最后离校时间',
|
||||
`retireDate` date NULL DEFAULT NULL COMMENT '退休时间',
|
||||
@@ -12743,7 +12743,9 @@ CREATE TABLE `sys_user_source` (
|
||||
`idCard` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '证件号码',
|
||||
`mobile` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号码',
|
||||
`education` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学历',
|
||||
`educationCode` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最高学历代码',
|
||||
`academicDegree` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学位',
|
||||
`academicDegreeCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最高学位代码',
|
||||
`technicalTitle` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '技术职称',
|
||||
`technicalTitleLevel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '技术职称级别',
|
||||
`position` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职务',
|
||||
@@ -12754,6 +12756,7 @@ CREATE TABLE `sys_user_source` (
|
||||
`employmentType` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '聘用方式',
|
||||
`identityType` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '身份类型',
|
||||
`userState` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '在职状态',
|
||||
`userStateCode` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前状态代码',
|
||||
`retireDate` date NULL DEFAULT NULL COMMENT '退休时间',
|
||||
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像',
|
||||
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电子邮箱',
|
||||
@@ -12784,7 +12787,8 @@ CREATE TABLE `sys_user_source` (
|
||||
`arrivalAtSchoolDate` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '来校时间',
|
||||
`postDoctoralJoinDate` date NULL DEFAULT NULL COMMENT '博士后进站时间',
|
||||
`personType` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '人员类别',
|
||||
`preparedBy` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '聘用方式',
|
||||
`preparedBy` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '编制类别',
|
||||
`preparedByCode` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '编制类别代码',
|
||||
`marriage` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '婚姻状况',
|
||||
`memberTime` datetime NULL DEFAULT NULL COMMENT '会员加入时间',
|
||||
`openId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'openId',
|
||||
@@ -12793,7 +12797,9 @@ CREATE TABLE `sys_user_source` (
|
||||
`preparationMemberFee` decimal(10, 2) NULL DEFAULT NULL COMMENT '编制会费',
|
||||
`contractMemberFee` decimal(10, 2) NULL DEFAULT NULL COMMENT '合同制会费',
|
||||
`jobCategory` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '岗位类别',
|
||||
`jobCategoryCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '聘岗类型代码',
|
||||
`professionalTitle` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职称',
|
||||
`professionalTitleCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业技术职务代码',
|
||||
`professionalLevel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职级',
|
||||
`employeeSource` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '职工来源',
|
||||
`administrativeLevel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '行政级别(用于管理岗位)',
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
-- 年度基础经费与专项经费下拨;原 outlay_allocate_union 历史记录及余额保持不变。
|
||||
-- 人数口径沿用会员统计:本年度 vw_user.member=1,历史年度 member_history.member=1。
|
||||
-- 新表仅记录新流程数据,不自动将历史季度下拨转为年度基础经费,避免重复计入预算。
|
||||
CREATE TABLE IF NOT EXISTS `outlay_annual_base` (
|
||||
`id` varchar(32) NOT NULL,
|
||||
`year` int NOT NULL,
|
||||
`unionId` varchar(32) NOT NULL,
|
||||
`memberCount` int NOT NULL,
|
||||
`standard` decimal(10,2) NOT NULL DEFAULT 800.00,
|
||||
`calculatedMoney` decimal(10,2) NOT NULL,
|
||||
`allocateMoney` decimal(10,2) NOT NULL,
|
||||
`remark` varchar(1000) DEFAULT NULL,
|
||||
`status` tinyint NOT NULL DEFAULT 0 COMMENT '0待下拨 1已下拨',
|
||||
`version` int NOT NULL DEFAULT 0,
|
||||
`allocatedAt` bigint DEFAULT NULL,
|
||||
`createdAt` bigint NOT NULL,
|
||||
`createdBy` varchar(32) NOT NULL,
|
||||
`updatedAt` bigint NOT NULL,
|
||||
`updatedBy` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_annual_base_year_union` (`year`,`unionId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='年度基础经费下拨';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `outlay_annual_special` (
|
||||
`id` varchar(32) NOT NULL COMMENT '同时作为提交幂等标识',
|
||||
`year` int NOT NULL,
|
||||
`unionId` varchar(32) NOT NULL,
|
||||
`projectName` varchar(100) NOT NULL,
|
||||
`allocateMoney` decimal(10,2) NOT NULL,
|
||||
`remark` varchar(1000) DEFAULT NULL,
|
||||
`status` tinyint NOT NULL DEFAULT 0 COMMENT '0待下拨 1已下拨',
|
||||
`version` int NOT NULL DEFAULT 0,
|
||||
`allocatedAt` bigint DEFAULT NULL,
|
||||
`createdAt` bigint NOT NULL,
|
||||
`createdBy` varchar(32) NOT NULL,
|
||||
`updatedAt` bigint NOT NULL,
|
||||
`updatedBy` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_annual_special_year_union` (`year`,`unionId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='专项经费下拨';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `outlay_annual_allocate_log` (
|
||||
`id` varchar(32) NOT NULL,
|
||||
`allocateType` varchar(10) NOT NULL,
|
||||
`allocateId` varchar(32) NOT NULL,
|
||||
`action` varchar(30) NOT NULL,
|
||||
`beforeData` text DEFAULT NULL COMMENT '操作前完整快照',
|
||||
`afterData` text NOT NULL COMMENT '操作后完整快照',
|
||||
`remark` varchar(1000) DEFAULT NULL,
|
||||
`createdAt` bigint NOT NULL,
|
||||
`createdBy` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_annual_log_record_time` (`allocateType`,`allocateId`,`createdAt`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='经费下拨及调整记录';
|
||||
|
||||
-- 沿用现有权限与入口,仅调整菜单名称。
|
||||
UPDATE sys_menu SET name='年度经费下拨', aliasName='年度经费下拨'
|
||||
WHERE permission='outlay.outlayManage.union.allocate';
|
||||
@@ -0,0 +1,783 @@
|
||||
-- 人员接口原始代码到名称的映射;系统页面字典另由 sys_dict 保存名称值。
|
||||
-- 同分类、同代码已有记录更新名称,缺失记录补充,不删除其他记录。
|
||||
SET NAMES utf8mb4;
|
||||
START TRANSACTION;
|
||||
|
||||
UPDATE sys_data_dict existing
|
||||
JOIN (
|
||||
SELECT 'USER_SEX' AS parentCode, '1' AS code, '男' AS name
|
||||
UNION ALL SELECT 'USER_SEX', '2', '女'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '01', '中国共产党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '02', '中国共产党预备党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '03', '中国共产主义青年团团员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '04', '中国国民党革命委员会会员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '05', '中国民主同盟盟员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '06', '中国民主建国会会员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '07', '中国民主促进会会员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '08', '中国农工民主党党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '09', '中国致公党党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '10', '九三学社社员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '11', '台湾民主自治同盟盟员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '12', '无党派民主人士'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '13', '群众'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '14', '入党积极分子'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '99', '其他'
|
||||
UNION ALL SELECT 'USER_NATION', '01', '汉族'
|
||||
UNION ALL SELECT 'USER_NATION', '02', '蒙古族'
|
||||
UNION ALL SELECT 'USER_NATION', '03', '回族'
|
||||
UNION ALL SELECT 'USER_NATION', '04', '藏族'
|
||||
UNION ALL SELECT 'USER_NATION', '05', '维吾尔族'
|
||||
UNION ALL SELECT 'USER_NATION', '06', '苗族'
|
||||
UNION ALL SELECT 'USER_NATION', '07', '彝族'
|
||||
UNION ALL SELECT 'USER_NATION', '08', '壮族'
|
||||
UNION ALL SELECT 'USER_NATION', '09', '布依族'
|
||||
UNION ALL SELECT 'USER_NATION', '10', '朝鲜族'
|
||||
UNION ALL SELECT 'USER_NATION', '11', '满族'
|
||||
UNION ALL SELECT 'USER_NATION', '12', '侗族'
|
||||
UNION ALL SELECT 'USER_NATION', '13', '瑶族'
|
||||
UNION ALL SELECT 'USER_NATION', '14', '白族'
|
||||
UNION ALL SELECT 'USER_NATION', '15', '土家族'
|
||||
UNION ALL SELECT 'USER_NATION', '16', '哈尼族'
|
||||
UNION ALL SELECT 'USER_NATION', '17', '哈萨克族'
|
||||
UNION ALL SELECT 'USER_NATION', '18', '傣族'
|
||||
UNION ALL SELECT 'USER_NATION', '19', '黎族'
|
||||
UNION ALL SELECT 'USER_NATION', '20', '傈僳族'
|
||||
UNION ALL SELECT 'USER_NATION', '21', '佤族'
|
||||
UNION ALL SELECT 'USER_NATION', '22', '畲族'
|
||||
UNION ALL SELECT 'USER_NATION', '23', '高山族'
|
||||
UNION ALL SELECT 'USER_NATION', '24', '拉祜族'
|
||||
UNION ALL SELECT 'USER_NATION', '25', '水族'
|
||||
UNION ALL SELECT 'USER_NATION', '26', '东乡族'
|
||||
UNION ALL SELECT 'USER_NATION', '27', '纳西族'
|
||||
UNION ALL SELECT 'USER_NATION', '28', '景颇族'
|
||||
UNION ALL SELECT 'USER_NATION', '29', '柯尔克孜族'
|
||||
UNION ALL SELECT 'USER_NATION', '30', '土族'
|
||||
UNION ALL SELECT 'USER_NATION', '31', '达斡尔族'
|
||||
UNION ALL SELECT 'USER_NATION', '32', '仫佬族'
|
||||
UNION ALL SELECT 'USER_NATION', '33', '羌族'
|
||||
UNION ALL SELECT 'USER_NATION', '34', '布朗族'
|
||||
UNION ALL SELECT 'USER_NATION', '35', '撒拉族'
|
||||
UNION ALL SELECT 'USER_NATION', '36', '毛南族'
|
||||
UNION ALL SELECT 'USER_NATION', '37', '仡佬族'
|
||||
UNION ALL SELECT 'USER_NATION', '38', '锡伯族'
|
||||
UNION ALL SELECT 'USER_NATION', '39', '阿昌族'
|
||||
UNION ALL SELECT 'USER_NATION', '40', '普米族'
|
||||
UNION ALL SELECT 'USER_NATION', '41', '塔吉克族'
|
||||
UNION ALL SELECT 'USER_NATION', '42', '怒族'
|
||||
UNION ALL SELECT 'USER_NATION', '43', '乌孜别克族'
|
||||
UNION ALL SELECT 'USER_NATION', '44', '俄罗斯族'
|
||||
UNION ALL SELECT 'USER_NATION', '45', '鄂温克族'
|
||||
UNION ALL SELECT 'USER_NATION', '46', '崩龙族'
|
||||
UNION ALL SELECT 'USER_NATION', '47', '保安族'
|
||||
UNION ALL SELECT 'USER_NATION', '48', '裕固族'
|
||||
UNION ALL SELECT 'USER_NATION', '49', '京族'
|
||||
UNION ALL SELECT 'USER_NATION', '50', '塔塔尔族'
|
||||
UNION ALL SELECT 'USER_NATION', '51', '独龙族'
|
||||
UNION ALL SELECT 'USER_NATION', '52', '鄂伦春族'
|
||||
UNION ALL SELECT 'USER_NATION', '53', '赫哲族'
|
||||
UNION ALL SELECT 'USER_NATION', '54', '门巴族'
|
||||
UNION ALL SELECT 'USER_NATION', '55', '珞巴族'
|
||||
UNION ALL SELECT 'USER_NATION', '56', '基诺族'
|
||||
UNION ALL SELECT 'USER_NATION', '59', '穿青人'
|
||||
UNION ALL SELECT 'USER_NATION', '60', '革(亻革)家人'
|
||||
UNION ALL SELECT 'USER_NATION', '90', '藏族(区内)'
|
||||
UNION ALL SELECT 'USER_NATION', '97', '其他'
|
||||
UNION ALL SELECT 'USER_NATION', '98', '外国血统中国籍人士'
|
||||
UNION ALL SELECT 'USER_STATE', '01', '离退休'
|
||||
UNION ALL SELECT 'USER_STATE', '03', '死亡'
|
||||
UNION ALL SELECT 'USER_STATE', '04', '退休返聘'
|
||||
UNION ALL SELECT 'USER_STATE', '05', '调出'
|
||||
UNION ALL SELECT 'USER_STATE', '06', '辞职'
|
||||
UNION ALL SELECT 'USER_STATE', '07', '离职'
|
||||
UNION ALL SELECT 'USER_STATE', '08', '开除'
|
||||
UNION ALL SELECT 'USER_STATE', '11', '在职'
|
||||
UNION ALL SELECT 'USER_STATE', '14', '长病假'
|
||||
UNION ALL SELECT 'USER_STATE', '15', '因公出国'
|
||||
UNION ALL SELECT 'USER_STATE', '17', '待岗'
|
||||
UNION ALL SELECT 'USER_STATE', '19', '内退'
|
||||
UNION ALL SELECT 'USER_STATE', '20', '自主创业'
|
||||
UNION ALL SELECT 'USER_STATE', '21', '挂职'
|
||||
UNION ALL SELECT 'USER_STATE', '22', '在岗'
|
||||
UNION ALL SELECT 'USER_STATE', '98', '病假等'
|
||||
UNION ALL SELECT 'USER_STATE', '99', '其他'
|
||||
UNION ALL SELECT 'USER_STATE', '999', '报到办理中'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '10', '管理岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '20', '专业技术岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '21', '教师岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '22', '专职辅导员岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '23', '其他专业技术岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '30', '工勤技能岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '125', '编辑'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '126', '编审'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '127', '大学讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '128', '档案'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '129', '副教授'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '130', '高级工程师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '131', '高级会计师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '132', '高级讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '133', '高校讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '134', '工程'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '135', '馆员'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '136', '管理'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '137', '会计'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '138', '会计审计'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '139', '讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '140', '教管'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '142', '教育管理'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '143', '科研'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '145', '实验'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '146', '实验师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '147', '思政'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '148', '图资'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '149', '卫计'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '150', '卫技'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '151', '幼教'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '0', '居民身份证'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '1', '护照'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '2', '港澳台居民身份证'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '4', '旅行证据'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '5', '其他'
|
||||
UNION ALL SELECT 'USER_MANY_UNIT', '0', '否'
|
||||
UNION ALL SELECT 'USER_MANY_UNIT', '1', '是'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '000', '无学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '0', '博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '004', '教育学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '005', '文学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '006', '历史学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '008', '工学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '100', '名誉博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '200', '博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '201', '哲学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '202', '经济学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '203', '法学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '204', '教育学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '205', '文学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '206', '历史学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '207', '理学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '208', '工学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '209', '农学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '210', '医学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '212', '管理学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '213', '艺术学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '242', '教育博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '245', '临床医学博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '248', '兽医博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '250', '口腔医学博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '300', '硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '301', '哲学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '302', '经济学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '303', '法学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '304', '教育学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '305', '文学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '306', '历史学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '307', '理学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '308', '工学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '309', '农学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '310', '医学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '312', '管理学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '313', '艺术学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '341', '法律硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '342', '教育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '343', '工程硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '344', '建筑学硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '345', '临床学硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '346', '工商管理硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '347', '农业推广硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '348', '兽医硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '349', '公共管理硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '350', '口腔医学硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '351', '公共卫生硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '352', '军事硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '353', '金融硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '354', '体育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '355', '艺术硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '356', '风景园林硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '357', '汉语国际教育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '358', '翻译硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '359', '审计硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '360', '社会工作硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '362', '体育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '364', '应用心理硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '365', '翻译硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '370', '风景园林硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '375', '会计硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '377', '图书情报硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '379', '艺术硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '400', '学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '401', '哲学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '402', '经济学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '403', '法学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '404', '教育学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '405', '文学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '406', '历史学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '407', '理学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '408', '工学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '409', '农学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '410', '医学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '412', '管理学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '413', '艺术学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '444', '建筑学学士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '900', '境外学位'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '10', '研究生教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '11', '博士研究生毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '12', '博士研究生结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '14', '硕士研究生毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '15', '硕士研究生结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '17', '研究生班毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '18', '研究生班结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '20', '大学本科教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '21', '大学本科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '22', '大学本科结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '25', '双学历毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '28', '大学普通班毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '30', '大学专科教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '31', '大学专科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '32', '大学专科结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '40', '中等职业教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '41', '中等专科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '42', '中等专科结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '43', '中等专科肄业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '44', '职业高中毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '45', '职业高中结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '47', '技工学校毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '48', '技工学校结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '60', '普通高级中学教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '61', '普通高中毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '62', '普通高中结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '63', '普通高中肄业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '70', '初级中学教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '71', '初中毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '73', '初中肄业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '80', '小学教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '81', '小学毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '90', '其他'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '128', '相当大学毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '138', '相当专科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '142', '中技毕业'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '010', '高等学校教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '011', '教授'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '012', '副教授'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '013', '讲师(高校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '014', '助教(高校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '022', '高级讲师(中专)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '023', '讲师(中专)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '024', '助理讲师(中专)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '032', '高级讲师(技校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '033', '讲师(技校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '034', '助理讲师(技校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '043', '一级实习指导教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '044', '二级实习指导教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '045', '三级实习指导教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '052', '高级教师(中学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '053', '一级教师(中学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '054', '二级教师(中学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '061', '正高级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '062', '高级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '063', '一级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '064', '二级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '071', '教授级高级实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '072', '高级实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '073', '实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '074', '助理实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '075', '实验员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '081', '教授级高级工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '082', '高级工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '083', '工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '084', '助理工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '085', '技术员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '093', '农艺师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '110', '农业技术人员(畜牧)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '120', '经济专业人员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '123', '经济师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '124', '助理经济师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '130', '会计专业人员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '132', '高级会计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '133', '会计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '134', '助理会计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '135', '会计员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '140', '统计专业人员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '143', '统计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '151', '编审'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '152', '副编审'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '153', '编辑'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '202', '主任编辑'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '203', '编辑'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '220', '播音员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '230', '卫生技术人员(医师)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '231', '主任医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '232', '副主任医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '233', '主治医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '234', '医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '242', '副主任药师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '243', '主管药师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '244', '药师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '250', '卫生技术人员(护理)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '252', '副主任护师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '253', '主管护师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '254', '护师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '263', '卫生主管技师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '413', '高级教师(小学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '414', '一级教师(小学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '430', '船舶技术人员(轮机)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '611', '研究员(自然科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '612', '副研究员(自然科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '613', '助理研究员(自然科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '621', '研究员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '622', '副研究员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '623', '助理研究员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '624', '研究实习员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '641', '研究馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '642', '副研究馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '643', '馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '644', '助理馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '653', '馆员(文博)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '661', '研究馆员(档案)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '662', '副研究馆员(档案)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '663', '馆员(档案)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '911', '教授(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '912', '副教授(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '913', '讲师(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '914', '助教(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '983', '政工师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '984', '助理政工师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '985', '政工员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '992', '副教授(改革)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9061', '研究员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9062', '副研究员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9063', '助理研究员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9064', '研究实习员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9211', '研究馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9212', '副研究馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9213', '馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9214', '助理馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9215', '管理员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9581', '幼教一级'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9582', '幼教二级'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9583', '幼教高级'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9621', '研究员(教管)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9622', '副研究员(教管)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9623', '助理研究员(教管)'
|
||||
) source ON existing.parentCode = source.parentCode AND existing.code = source.code
|
||||
SET existing.name = source.name, existing.updatedAt = UNIX_TIMESTAMP(NOW()) * 1000
|
||||
WHERE NOT (existing.name <=> source.name);
|
||||
|
||||
INSERT INTO sys_data_dict (
|
||||
parentCode, name, code, createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
source.parentCode, source.name, source.code,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM (
|
||||
SELECT 'USER_SEX' AS parentCode, '1' AS code, '男' AS name
|
||||
UNION ALL SELECT 'USER_SEX', '2', '女'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '01', '中国共产党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '02', '中国共产党预备党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '03', '中国共产主义青年团团员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '04', '中国国民党革命委员会会员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '05', '中国民主同盟盟员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '06', '中国民主建国会会员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '07', '中国民主促进会会员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '08', '中国农工民主党党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '09', '中国致公党党员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '10', '九三学社社员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '11', '台湾民主自治同盟盟员'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '12', '无党派民主人士'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '13', '群众'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '14', '入党积极分子'
|
||||
UNION ALL SELECT 'USER_POLITICAL', '99', '其他'
|
||||
UNION ALL SELECT 'USER_NATION', '01', '汉族'
|
||||
UNION ALL SELECT 'USER_NATION', '02', '蒙古族'
|
||||
UNION ALL SELECT 'USER_NATION', '03', '回族'
|
||||
UNION ALL SELECT 'USER_NATION', '04', '藏族'
|
||||
UNION ALL SELECT 'USER_NATION', '05', '维吾尔族'
|
||||
UNION ALL SELECT 'USER_NATION', '06', '苗族'
|
||||
UNION ALL SELECT 'USER_NATION', '07', '彝族'
|
||||
UNION ALL SELECT 'USER_NATION', '08', '壮族'
|
||||
UNION ALL SELECT 'USER_NATION', '09', '布依族'
|
||||
UNION ALL SELECT 'USER_NATION', '10', '朝鲜族'
|
||||
UNION ALL SELECT 'USER_NATION', '11', '满族'
|
||||
UNION ALL SELECT 'USER_NATION', '12', '侗族'
|
||||
UNION ALL SELECT 'USER_NATION', '13', '瑶族'
|
||||
UNION ALL SELECT 'USER_NATION', '14', '白族'
|
||||
UNION ALL SELECT 'USER_NATION', '15', '土家族'
|
||||
UNION ALL SELECT 'USER_NATION', '16', '哈尼族'
|
||||
UNION ALL SELECT 'USER_NATION', '17', '哈萨克族'
|
||||
UNION ALL SELECT 'USER_NATION', '18', '傣族'
|
||||
UNION ALL SELECT 'USER_NATION', '19', '黎族'
|
||||
UNION ALL SELECT 'USER_NATION', '20', '傈僳族'
|
||||
UNION ALL SELECT 'USER_NATION', '21', '佤族'
|
||||
UNION ALL SELECT 'USER_NATION', '22', '畲族'
|
||||
UNION ALL SELECT 'USER_NATION', '23', '高山族'
|
||||
UNION ALL SELECT 'USER_NATION', '24', '拉祜族'
|
||||
UNION ALL SELECT 'USER_NATION', '25', '水族'
|
||||
UNION ALL SELECT 'USER_NATION', '26', '东乡族'
|
||||
UNION ALL SELECT 'USER_NATION', '27', '纳西族'
|
||||
UNION ALL SELECT 'USER_NATION', '28', '景颇族'
|
||||
UNION ALL SELECT 'USER_NATION', '29', '柯尔克孜族'
|
||||
UNION ALL SELECT 'USER_NATION', '30', '土族'
|
||||
UNION ALL SELECT 'USER_NATION', '31', '达斡尔族'
|
||||
UNION ALL SELECT 'USER_NATION', '32', '仫佬族'
|
||||
UNION ALL SELECT 'USER_NATION', '33', '羌族'
|
||||
UNION ALL SELECT 'USER_NATION', '34', '布朗族'
|
||||
UNION ALL SELECT 'USER_NATION', '35', '撒拉族'
|
||||
UNION ALL SELECT 'USER_NATION', '36', '毛南族'
|
||||
UNION ALL SELECT 'USER_NATION', '37', '仡佬族'
|
||||
UNION ALL SELECT 'USER_NATION', '38', '锡伯族'
|
||||
UNION ALL SELECT 'USER_NATION', '39', '阿昌族'
|
||||
UNION ALL SELECT 'USER_NATION', '40', '普米族'
|
||||
UNION ALL SELECT 'USER_NATION', '41', '塔吉克族'
|
||||
UNION ALL SELECT 'USER_NATION', '42', '怒族'
|
||||
UNION ALL SELECT 'USER_NATION', '43', '乌孜别克族'
|
||||
UNION ALL SELECT 'USER_NATION', '44', '俄罗斯族'
|
||||
UNION ALL SELECT 'USER_NATION', '45', '鄂温克族'
|
||||
UNION ALL SELECT 'USER_NATION', '46', '崩龙族'
|
||||
UNION ALL SELECT 'USER_NATION', '47', '保安族'
|
||||
UNION ALL SELECT 'USER_NATION', '48', '裕固族'
|
||||
UNION ALL SELECT 'USER_NATION', '49', '京族'
|
||||
UNION ALL SELECT 'USER_NATION', '50', '塔塔尔族'
|
||||
UNION ALL SELECT 'USER_NATION', '51', '独龙族'
|
||||
UNION ALL SELECT 'USER_NATION', '52', '鄂伦春族'
|
||||
UNION ALL SELECT 'USER_NATION', '53', '赫哲族'
|
||||
UNION ALL SELECT 'USER_NATION', '54', '门巴族'
|
||||
UNION ALL SELECT 'USER_NATION', '55', '珞巴族'
|
||||
UNION ALL SELECT 'USER_NATION', '56', '基诺族'
|
||||
UNION ALL SELECT 'USER_NATION', '59', '穿青人'
|
||||
UNION ALL SELECT 'USER_NATION', '60', '革(亻革)家人'
|
||||
UNION ALL SELECT 'USER_NATION', '90', '藏族(区内)'
|
||||
UNION ALL SELECT 'USER_NATION', '97', '其他'
|
||||
UNION ALL SELECT 'USER_NATION', '98', '外国血统中国籍人士'
|
||||
UNION ALL SELECT 'USER_STATE', '01', '离退休'
|
||||
UNION ALL SELECT 'USER_STATE', '03', '死亡'
|
||||
UNION ALL SELECT 'USER_STATE', '04', '退休返聘'
|
||||
UNION ALL SELECT 'USER_STATE', '05', '调出'
|
||||
UNION ALL SELECT 'USER_STATE', '06', '辞职'
|
||||
UNION ALL SELECT 'USER_STATE', '07', '离职'
|
||||
UNION ALL SELECT 'USER_STATE', '08', '开除'
|
||||
UNION ALL SELECT 'USER_STATE', '11', '在职'
|
||||
UNION ALL SELECT 'USER_STATE', '14', '长病假'
|
||||
UNION ALL SELECT 'USER_STATE', '15', '因公出国'
|
||||
UNION ALL SELECT 'USER_STATE', '17', '待岗'
|
||||
UNION ALL SELECT 'USER_STATE', '19', '内退'
|
||||
UNION ALL SELECT 'USER_STATE', '20', '自主创业'
|
||||
UNION ALL SELECT 'USER_STATE', '21', '挂职'
|
||||
UNION ALL SELECT 'USER_STATE', '22', '在岗'
|
||||
UNION ALL SELECT 'USER_STATE', '98', '病假等'
|
||||
UNION ALL SELECT 'USER_STATE', '99', '其他'
|
||||
UNION ALL SELECT 'USER_STATE', '999', '报到办理中'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '10', '管理岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '20', '专业技术岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '21', '教师岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '22', '专职辅导员岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '23', '其他专业技术岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '30', '工勤技能岗位'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '125', '编辑'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '126', '编审'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '127', '大学讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '128', '档案'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '129', '副教授'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '130', '高级工程师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '131', '高级会计师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '132', '高级讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '133', '高校讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '134', '工程'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '135', '馆员'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '136', '管理'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '137', '会计'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '138', '会计审计'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '139', '讲师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '140', '教管'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '142', '教育管理'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '143', '科研'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '145', '实验'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '146', '实验师'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '147', '思政'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '148', '图资'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '149', '卫计'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '150', '卫技'
|
||||
UNION ALL SELECT 'USER_JOB_CATEGORY', '151', '幼教'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '0', '居民身份证'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '1', '护照'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '2', '港澳台居民身份证'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '4', '旅行证据'
|
||||
UNION ALL SELECT 'USER_ID_CARD_TYPE', '5', '其他'
|
||||
UNION ALL SELECT 'USER_MANY_UNIT', '0', '否'
|
||||
UNION ALL SELECT 'USER_MANY_UNIT', '1', '是'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '000', '无学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '0', '博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '004', '教育学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '005', '文学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '006', '历史学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '008', '工学博士后'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '100', '名誉博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '200', '博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '201', '哲学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '202', '经济学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '203', '法学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '204', '教育学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '205', '文学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '206', '历史学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '207', '理学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '208', '工学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '209', '农学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '210', '医学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '212', '管理学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '213', '艺术学博士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '242', '教育博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '245', '临床医学博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '248', '兽医博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '250', '口腔医学博士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '300', '硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '301', '哲学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '302', '经济学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '303', '法学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '304', '教育学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '305', '文学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '306', '历史学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '307', '理学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '308', '工学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '309', '农学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '310', '医学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '312', '管理学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '313', '艺术学硕士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '341', '法律硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '342', '教育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '343', '工程硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '344', '建筑学硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '345', '临床学硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '346', '工商管理硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '347', '农业推广硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '348', '兽医硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '349', '公共管理硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '350', '口腔医学硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '351', '公共卫生硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '352', '军事硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '353', '金融硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '354', '体育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '355', '艺术硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '356', '风景园林硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '357', '汉语国际教育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '358', '翻译硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '359', '审计硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '360', '社会工作硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '362', '体育硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '364', '应用心理硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '365', '翻译硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '370', '风景园林硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '375', '会计硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '377', '图书情报硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '379', '艺术硕士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '400', '学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '401', '哲学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '402', '经济学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '403', '法学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '404', '教育学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '405', '文学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '406', '历史学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '407', '理学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '408', '工学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '409', '农学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '410', '医学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '412', '管理学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '413', '艺术学学士学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '444', '建筑学学士专业学位'
|
||||
UNION ALL SELECT 'USER_ACADEMIC_DEGREE', '900', '境外学位'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '10', '研究生教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '11', '博士研究生毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '12', '博士研究生结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '14', '硕士研究生毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '15', '硕士研究生结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '17', '研究生班毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '18', '研究生班结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '20', '大学本科教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '21', '大学本科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '22', '大学本科结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '25', '双学历毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '28', '大学普通班毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '30', '大学专科教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '31', '大学专科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '32', '大学专科结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '40', '中等职业教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '41', '中等专科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '42', '中等专科结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '43', '中等专科肄业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '44', '职业高中毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '45', '职业高中结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '47', '技工学校毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '48', '技工学校结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '60', '普通高级中学教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '61', '普通高中毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '62', '普通高中结业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '63', '普通高中肄业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '70', '初级中学教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '71', '初中毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '73', '初中肄业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '80', '小学教育'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '81', '小学毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '90', '其他'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '128', '相当大学毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '138', '相当专科毕业'
|
||||
UNION ALL SELECT 'USER_EDUCATION', '142', '中技毕业'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '010', '高等学校教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '011', '教授'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '012', '副教授'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '013', '讲师(高校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '014', '助教(高校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '022', '高级讲师(中专)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '023', '讲师(中专)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '024', '助理讲师(中专)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '032', '高级讲师(技校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '033', '讲师(技校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '034', '助理讲师(技校)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '043', '一级实习指导教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '044', '二级实习指导教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '045', '三级实习指导教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '052', '高级教师(中学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '053', '一级教师(中学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '054', '二级教师(中学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '061', '正高级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '062', '高级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '063', '一级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '064', '二级教师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '071', '教授级高级实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '072', '高级实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '073', '实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '074', '助理实验师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '075', '实验员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '081', '教授级高级工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '082', '高级工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '083', '工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '084', '助理工程师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '085', '技术员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '093', '农艺师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '110', '农业技术人员(畜牧)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '120', '经济专业人员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '123', '经济师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '124', '助理经济师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '130', '会计专业人员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '132', '高级会计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '133', '会计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '134', '助理会计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '135', '会计员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '140', '统计专业人员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '143', '统计师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '151', '编审'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '152', '副编审'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '153', '编辑'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '202', '主任编辑'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '203', '编辑'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '220', '播音员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '230', '卫生技术人员(医师)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '231', '主任医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '232', '副主任医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '233', '主治医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '234', '医师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '242', '副主任药师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '243', '主管药师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '244', '药师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '250', '卫生技术人员(护理)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '252', '副主任护师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '253', '主管护师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '254', '护师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '263', '卫生主管技师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '413', '高级教师(小学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '414', '一级教师(小学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '430', '船舶技术人员(轮机)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '611', '研究员(自然科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '612', '副研究员(自然科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '613', '助理研究员(自然科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '621', '研究员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '622', '副研究员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '623', '助理研究员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '624', '研究实习员(社会科学)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '641', '研究馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '642', '副研究馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '643', '馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '644', '助理馆员(图书)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '653', '馆员(文博)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '661', '研究馆员(档案)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '662', '副研究馆员(档案)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '663', '馆员(档案)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '911', '教授(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '912', '副教授(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '913', '讲师(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '914', '助教(思想政治教育)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '983', '政工师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '984', '助理政工师'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '985', '政工员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '992', '副教授(改革)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9061', '研究员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9062', '副研究员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9063', '助理研究员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9064', '研究实习员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9211', '研究馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9212', '副研究馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9213', '馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9214', '助理馆员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9215', '管理员'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9581', '幼教一级'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9582', '幼教二级'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9583', '幼教高级'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9621', '研究员(教管)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9622', '副研究员(教管)'
|
||||
UNION ALL SELECT 'TECHNICAL_TITLE_LEVEL', '9623', '助理研究员(教管)'
|
||||
) source
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_data_dict existing
|
||||
WHERE existing.parentCode = source.parentCode AND existing.code = source.code
|
||||
);
|
||||
|
||||
-- 人员类型:独立补充 v3 的 17 项映射,不混入上面的其他字典数据。
|
||||
UPDATE sys_data_dict existing
|
||||
JOIN (
|
||||
SELECT '1' AS code, '在编类' AS name
|
||||
UNION ALL SELECT '1001', '聘用合同制(享受人事代理待遇)'
|
||||
UNION ALL SELECT '101', '在编'
|
||||
UNION ALL SELECT '102', '兰溪编制'
|
||||
UNION ALL SELECT '2', '非在编类'
|
||||
UNION ALL SELECT '202', '派遣人员'
|
||||
UNION ALL SELECT '204', '博士后'
|
||||
UNION ALL SELECT '206', '挂职人员'
|
||||
UNION ALL SELECT '208', '外籍教师'
|
||||
UNION ALL SELECT '209', '兼职教师'
|
||||
UNION ALL SELECT '210', '非学校聘用人员'
|
||||
UNION ALL SELECT '214', '单位返聘'
|
||||
UNION ALL SELECT '215', '附属单位'
|
||||
UNION ALL SELECT '902', '聘用合同制'
|
||||
UNION ALL SELECT '904', '聘用制专家'
|
||||
UNION ALL SELECT '905', '人事代理'
|
||||
UNION ALL SELECT '909', '其他'
|
||||
) source ON existing.parentCode = 'USER_PERSON_TYPE' AND existing.code = source.code
|
||||
SET existing.name = source.name, existing.updatedAt = UNIX_TIMESTAMP(NOW()) * 1000
|
||||
WHERE NOT (existing.name <=> source.name);
|
||||
|
||||
INSERT INTO sys_data_dict (
|
||||
parentCode, name, code, createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
'USER_PERSON_TYPE', source.name, source.code,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM (
|
||||
SELECT '1' AS code, '在编类' AS name
|
||||
UNION ALL SELECT '1001', '聘用合同制(享受人事代理待遇)'
|
||||
UNION ALL SELECT '101', '在编'
|
||||
UNION ALL SELECT '102', '兰溪编制'
|
||||
UNION ALL SELECT '2', '非在编类'
|
||||
UNION ALL SELECT '202', '派遣人员'
|
||||
UNION ALL SELECT '204', '博士后'
|
||||
UNION ALL SELECT '206', '挂职人员'
|
||||
UNION ALL SELECT '208', '外籍教师'
|
||||
UNION ALL SELECT '209', '兼职教师'
|
||||
UNION ALL SELECT '210', '非学校聘用人员'
|
||||
UNION ALL SELECT '214', '单位返聘'
|
||||
UNION ALL SELECT '215', '附属单位'
|
||||
UNION ALL SELECT '902', '聘用合同制'
|
||||
UNION ALL SELECT '904', '聘用制专家'
|
||||
UNION ALL SELECT '905', '人事代理'
|
||||
UNION ALL SELECT '909', '其他'
|
||||
) source
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_data_dict existing
|
||||
WHERE existing.parentCode = 'USER_PERSON_TYPE' AND existing.code = source.code
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,28 @@
|
||||
-- 在人员数据拉取菜单同级新增实时查询入口,沿用现有菜单的角色授权。
|
||||
INSERT INTO sys_menu (
|
||||
id, parentId, path, name, type, href, target, icon, showit, disabled,
|
||||
permission, location, hasChildren, platform, moduleId,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT 'bc6cf4034e9449bfa6e81c7d26509129', source.parentId,
|
||||
CONCAT(LEFT(source.path, CHAR_LENGTH(source.path) - 4),
|
||||
LPAD(COALESCE((SELECT MAX(CAST(RIGHT(sibling.path, 4) AS UNSIGNED))
|
||||
FROM sys_menu sibling WHERE sibling.parentId = source.parentId), 0) + 1, 4, '0')),
|
||||
'数据中心人员查询', 'menu', '/platform/sys/data/user/query', source.target,
|
||||
source.icon, 1, 0, 'sys.data.user.query', source.location + 1, 0,
|
||||
source.platform, source.moduleId, '', UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_menu source
|
||||
WHERE source.permission = 'sys.data.user.pull'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE permission = 'sys.data.user.query')
|
||||
LIMIT 1;
|
||||
|
||||
INSERT INTO sys_role_menu (roleId, menuId)
|
||||
SELECT DISTINCT relation.roleId, target.id
|
||||
FROM sys_role_menu relation
|
||||
JOIN sys_menu source ON source.id = relation.menuId AND source.permission = 'sys.data.user.pull'
|
||||
JOIN sys_menu target ON target.permission = 'sys.data.user.query'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_role_menu existing
|
||||
WHERE existing.roleId = relation.roleId AND existing.menuId = target.id
|
||||
);
|
||||
@@ -0,0 +1,781 @@
|
||||
SET NAMES utf8mb4;
|
||||
START TRANSACTION;
|
||||
|
||||
UPDATE sys_dict child
|
||||
JOIN sys_dict parent ON parent.id = child.parentId
|
||||
SET child.code = child.name
|
||||
WHERE parent.code IN ('USER_SEX', 'USER_POLITICAL', 'USER_NATION', 'USER_STATE', 'USER_JOB_CATEGORY', 'USER_ID_CARD_TYPE', 'USER_MANY_UNIT')
|
||||
AND child.name IS NOT NULL
|
||||
AND child.name <> ''
|
||||
AND NOT (child.code <=> child.name);
|
||||
|
||||
-- 1. 政治面貌
|
||||
-- 补充 USER_POLITICAL 的直接子项:code、name 均为全称,remark 为简称。
|
||||
-- 仅使用指定父节点,已有同编码子项不覆盖;不删除任何记录。
|
||||
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child
|
||||
WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, source.shortName, source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '01' AS code, '中国共产党员' AS name, '中共党员' AS shortName
|
||||
UNION ALL SELECT 2, '02', '中国共产党预备党员', '中共预备党员'
|
||||
UNION ALL SELECT 3, '03', '中国共产主义青年团团员', '共青团员'
|
||||
UNION ALL SELECT 4, '04', '中国国民党革命委员会会员', '民革党员'
|
||||
UNION ALL SELECT 5, '05', '中国民主同盟盟员', '民盟盟员'
|
||||
UNION ALL SELECT 6, '06', '中国民主建国会会员', '民建会员'
|
||||
UNION ALL SELECT 7, '07', '中国民主促进会会员', '民进会员'
|
||||
UNION ALL SELECT 8, '08', '中国农工民主党党员', '农工党党员'
|
||||
UNION ALL SELECT 9, '09', '中国致公党党员', '致公党党员'
|
||||
UNION ALL SELECT 10, '10', '九三学社社员', '九三学社社员'
|
||||
UNION ALL SELECT 11, '11', '台湾民主自治同盟盟员', '台盟盟员'
|
||||
UNION ALL SELECT 12, '12', '无党派民主人士', '无党派人士'
|
||||
UNION ALL SELECT 13, '13', '群众', '群众'
|
||||
UNION ALL SELECT 14, '14', '入党积极分子', '积极分子'
|
||||
UNION ALL SELECT 15, '99', '其他', '其他'
|
||||
) source
|
||||
WHERE parent.id = '4cc380a7a45a43a89410413676c9103e'
|
||||
AND parent.code = 'USER_POLITICAL'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.id = '4cc380a7a45a43a89410413676c9103e'
|
||||
AND parent.code = 'USER_POLITICAL'
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
-- 2. 民族
|
||||
-- 补充 USER_NATION 的 61 个直接子项,保留接口代码前导零及提供的名称原文。
|
||||
-- 仅新增缺失编码,不删除或覆盖已有记录。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child
|
||||
WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '01' AS code, '汉族' AS name
|
||||
UNION ALL SELECT 2, '02', '蒙古族'
|
||||
UNION ALL SELECT 3, '03', '回族'
|
||||
UNION ALL SELECT 4, '04', '藏族'
|
||||
UNION ALL SELECT 5, '05', '维吾尔族'
|
||||
UNION ALL SELECT 6, '06', '苗族'
|
||||
UNION ALL SELECT 7, '07', '彝族'
|
||||
UNION ALL SELECT 8, '08', '壮族'
|
||||
UNION ALL SELECT 9, '09', '布依族'
|
||||
UNION ALL SELECT 10, '10', '朝鲜族'
|
||||
UNION ALL SELECT 11, '11', '满族'
|
||||
UNION ALL SELECT 12, '12', '侗族'
|
||||
UNION ALL SELECT 13, '13', '瑶族'
|
||||
UNION ALL SELECT 14, '14', '白族'
|
||||
UNION ALL SELECT 15, '15', '土家族'
|
||||
UNION ALL SELECT 16, '16', '哈尼族'
|
||||
UNION ALL SELECT 17, '17', '哈萨克族'
|
||||
UNION ALL SELECT 18, '18', '傣族'
|
||||
UNION ALL SELECT 19, '19', '黎族'
|
||||
UNION ALL SELECT 20, '20', '傈僳族'
|
||||
UNION ALL SELECT 21, '21', '佤族'
|
||||
UNION ALL SELECT 22, '22', '畲族'
|
||||
UNION ALL SELECT 23, '23', '高山族'
|
||||
UNION ALL SELECT 24, '24', '拉祜族'
|
||||
UNION ALL SELECT 25, '25', '水族'
|
||||
UNION ALL SELECT 26, '26', '东乡族'
|
||||
UNION ALL SELECT 27, '27', '纳西族'
|
||||
UNION ALL SELECT 28, '28', '景颇族'
|
||||
UNION ALL SELECT 29, '29', '柯尔克孜族'
|
||||
UNION ALL SELECT 30, '30', '土族'
|
||||
UNION ALL SELECT 31, '31', '达斡尔族'
|
||||
UNION ALL SELECT 32, '32', '仫佬族'
|
||||
UNION ALL SELECT 33, '33', '羌族'
|
||||
UNION ALL SELECT 34, '34', '布朗族'
|
||||
UNION ALL SELECT 35, '35', '撒拉族'
|
||||
UNION ALL SELECT 36, '36', '毛南族'
|
||||
UNION ALL SELECT 37, '37', '仡佬族'
|
||||
UNION ALL SELECT 38, '38', '锡伯族'
|
||||
UNION ALL SELECT 39, '39', '阿昌族'
|
||||
UNION ALL SELECT 40, '40', '普米族'
|
||||
UNION ALL SELECT 41, '41', '塔吉克族'
|
||||
UNION ALL SELECT 42, '42', '怒族'
|
||||
UNION ALL SELECT 43, '43', '乌孜别克族'
|
||||
UNION ALL SELECT 44, '44', '俄罗斯族'
|
||||
UNION ALL SELECT 45, '45', '鄂温克族'
|
||||
UNION ALL SELECT 46, '46', '崩龙族'
|
||||
UNION ALL SELECT 47, '47', '保安族'
|
||||
UNION ALL SELECT 48, '48', '裕固族'
|
||||
UNION ALL SELECT 49, '49', '京族'
|
||||
UNION ALL SELECT 50, '50', '塔塔尔族'
|
||||
UNION ALL SELECT 51, '51', '独龙族'
|
||||
UNION ALL SELECT 52, '52', '鄂伦春族'
|
||||
UNION ALL SELECT 53, '53', '赫哲族'
|
||||
UNION ALL SELECT 54, '54', '门巴族'
|
||||
UNION ALL SELECT 55, '55', '珞巴族'
|
||||
UNION ALL SELECT 56, '56', '基诺族'
|
||||
UNION ALL SELECT 57, '59', '穿青人'
|
||||
UNION ALL SELECT 58, '60', '革(亻革)家人'
|
||||
UNION ALL SELECT 59, '90', '藏族(区内)'
|
||||
UNION ALL SELECT 60, '97', '其他'
|
||||
UNION ALL SELECT 61, '98', '外国血统中国籍人士'
|
||||
) source
|
||||
WHERE parent.id = '456c088b99bb4423a115c0bb5b420a99'
|
||||
AND parent.code = 'USER_NATION'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
-- 3. 当前状态
|
||||
-- 补充 USER_STATE 的 18 个直接子项,保留接口代码前导零及提供的名称原文。
|
||||
-- 仅新增缺失编码,不删除或覆盖已有记录。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child
|
||||
WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '01' AS code, '离退休' AS name
|
||||
UNION ALL SELECT 2, '03', '死亡'
|
||||
UNION ALL SELECT 3, '04', '退休返聘'
|
||||
UNION ALL SELECT 4, '05', '调出'
|
||||
UNION ALL SELECT 5, '06', '辞职'
|
||||
UNION ALL SELECT 6, '07', '离职'
|
||||
UNION ALL SELECT 7, '08', '开除'
|
||||
UNION ALL SELECT 8, '11', '在职'
|
||||
UNION ALL SELECT 9, '14', '长病假'
|
||||
UNION ALL SELECT 10, '15', '因公出国'
|
||||
UNION ALL SELECT 11, '17', '待岗'
|
||||
UNION ALL SELECT 12, '19', '内退'
|
||||
UNION ALL SELECT 13, '20', '自主创业'
|
||||
UNION ALL SELECT 14, '21', '挂职'
|
||||
UNION ALL SELECT 15, '22', '在岗'
|
||||
UNION ALL SELECT 16, '98', '病假等'
|
||||
UNION ALL SELECT 17, '99', '其他'
|
||||
UNION ALL SELECT 18, '999', '报到办理中'
|
||||
) source
|
||||
WHERE parent.id = '3709e40a132348be947dcaa553bf8f8a'
|
||||
AND parent.code = 'USER_STATE'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
-- 4. 岗位类型
|
||||
-- 岗位类型(USER_JOB_CATEGORY)下的 31 个直接子项,父级须已存在。
|
||||
-- 仅新增缺失编码,不删除或覆盖已有记录。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child
|
||||
WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '10' AS code, '管理岗位' AS name
|
||||
UNION ALL SELECT 2, '20', '专业技术岗位'
|
||||
UNION ALL SELECT 3, '21', '教师岗位'
|
||||
UNION ALL SELECT 4, '22', '专职辅导员岗位'
|
||||
UNION ALL SELECT 5, '23', '其他专业技术岗位'
|
||||
UNION ALL SELECT 6, '30', '工勤技能岗位'
|
||||
UNION ALL SELECT 7, '125', '编辑'
|
||||
UNION ALL SELECT 8, '126', '编审'
|
||||
UNION ALL SELECT 9, '127', '大学讲师'
|
||||
UNION ALL SELECT 10, '128', '档案'
|
||||
UNION ALL SELECT 11, '129', '副教授'
|
||||
UNION ALL SELECT 12, '130', '高级工程师'
|
||||
UNION ALL SELECT 13, '131', '高级会计师'
|
||||
UNION ALL SELECT 14, '132', '高级讲师'
|
||||
UNION ALL SELECT 15, '133', '高校讲师'
|
||||
UNION ALL SELECT 16, '134', '工程'
|
||||
UNION ALL SELECT 17, '135', '馆员'
|
||||
UNION ALL SELECT 18, '136', '管理'
|
||||
UNION ALL SELECT 19, '137', '会计'
|
||||
UNION ALL SELECT 20, '138', '会计审计'
|
||||
UNION ALL SELECT 21, '139', '讲师'
|
||||
UNION ALL SELECT 22, '140', '教管'
|
||||
UNION ALL SELECT 23, '142', '教育管理'
|
||||
UNION ALL SELECT 24, '143', '科研'
|
||||
UNION ALL SELECT 25, '145', '实验'
|
||||
UNION ALL SELECT 26, '146', '实验师'
|
||||
UNION ALL SELECT 27, '147', '思政'
|
||||
UNION ALL SELECT 28, '148', '图资'
|
||||
UNION ALL SELECT 29, '149', '卫计'
|
||||
UNION ALL SELECT 30, '150', '卫技'
|
||||
UNION ALL SELECT 31, '151', '幼教'
|
||||
) source
|
||||
WHERE parent.code = 'USER_JOB_CATEGORY'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.code = 'USER_JOB_CATEGORY'
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
-- 5. 证件类型
|
||||
-- 在用户表字段字典下补充证件类型及子项,仅新增缺失编码,不覆盖已有配置。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + 1, 4, '0')),
|
||||
'证件类型', '', 'USER_ID_CARD_TYPE', 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0) + 1,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
WHERE parent.code = 'USER_TABLE_COLUMN_DICTS'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_dict existing WHERE existing.code = 'USER_ID_CARD_TYPE');
|
||||
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '0' AS code, '居民身份证' AS name
|
||||
UNION ALL SELECT 2, '1', '护照'
|
||||
UNION ALL SELECT 3, '2', '港澳台居民身份证'
|
||||
UNION ALL SELECT 4, '4', '旅行证据'
|
||||
UNION ALL SELECT 5, '5', '其他'
|
||||
) source
|
||||
WHERE parent.code = 'USER_ID_CARD_TYPE'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.code IN ('USER_TABLE_COLUMN_DICTS', 'USER_ID_CARD_TYPE')
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
-- 6. 是否双肩挑
|
||||
-- 在用户表字段字典下补充是否双肩挑及子项,仅新增缺失编码,不覆盖已有配置。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + 1, 4, '0')),
|
||||
'是否双肩挑', '', 'USER_MANY_UNIT', 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0) + 1,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
WHERE parent.code = 'USER_TABLE_COLUMN_DICTS'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_dict existing WHERE existing.code = 'USER_MANY_UNIT');
|
||||
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '0' AS code, '否' AS name
|
||||
UNION ALL SELECT 2, '1', '是'
|
||||
) source
|
||||
WHERE parent.code = 'USER_MANY_UNIT'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.code IN ('USER_TABLE_COLUMN_DICTS', 'USER_MANY_UNIT')
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
-- 7. 学位
|
||||
UPDATE sys_dict child
|
||||
JOIN sys_dict parent ON parent.id = child.parentId
|
||||
SET child.code = child.name
|
||||
WHERE parent.code IN ('USER_ACADEMIC_DEGREE')
|
||||
AND child.name IS NOT NULL
|
||||
AND child.name <> ''
|
||||
AND NOT (child.code <=> child.name);
|
||||
|
||||
-- 补充学位(USER_ACADEMIC_DEGREE)直接子项,父级须已存在。
|
||||
-- code、name 均保存名称原文,仅新增缺失名称,不删除或覆盖已有记录。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '000' AS code, '无学位' AS name
|
||||
UNION ALL SELECT 2, '0', '博士后'
|
||||
UNION ALL SELECT 3, '004', '教育学博士后'
|
||||
UNION ALL SELECT 4, '005', '文学博士后'
|
||||
UNION ALL SELECT 5, '006', '历史学博士后'
|
||||
UNION ALL SELECT 6, '008', '工学博士后'
|
||||
UNION ALL SELECT 7, '100', '名誉博士学位'
|
||||
UNION ALL SELECT 8, '200', '博士学位'
|
||||
UNION ALL SELECT 9, '201', '哲学博士学位'
|
||||
UNION ALL SELECT 10, '202', '经济学博士学位'
|
||||
UNION ALL SELECT 11, '203', '法学博士学位'
|
||||
UNION ALL SELECT 12, '204', '教育学博士学位'
|
||||
UNION ALL SELECT 13, '205', '文学博士学位'
|
||||
UNION ALL SELECT 14, '206', '历史学博士学位'
|
||||
UNION ALL SELECT 15, '207', '理学博士学位'
|
||||
UNION ALL SELECT 16, '208', '工学博士学位'
|
||||
UNION ALL SELECT 17, '209', '农学博士学位'
|
||||
UNION ALL SELECT 18, '210', '医学博士学位'
|
||||
UNION ALL SELECT 19, '212', '管理学博士学位'
|
||||
UNION ALL SELECT 20, '213', '艺术学博士学位'
|
||||
UNION ALL SELECT 21, '242', '教育博士专业学位'
|
||||
UNION ALL SELECT 22, '245', '临床医学博士专业学位'
|
||||
UNION ALL SELECT 23, '248', '兽医博士专业学位'
|
||||
UNION ALL SELECT 24, '250', '口腔医学博士专业学位'
|
||||
UNION ALL SELECT 25, '300', '硕士学位'
|
||||
UNION ALL SELECT 26, '301', '哲学硕士学位'
|
||||
UNION ALL SELECT 27, '302', '经济学硕士学位'
|
||||
UNION ALL SELECT 28, '303', '法学硕士学位'
|
||||
UNION ALL SELECT 29, '304', '教育学硕士学位'
|
||||
UNION ALL SELECT 30, '305', '文学硕士学位'
|
||||
UNION ALL SELECT 31, '306', '历史学硕士学位'
|
||||
UNION ALL SELECT 32, '307', '理学硕士学位'
|
||||
UNION ALL SELECT 33, '308', '工学硕士学位'
|
||||
UNION ALL SELECT 34, '309', '农学硕士学位'
|
||||
UNION ALL SELECT 35, '310', '医学硕士学位'
|
||||
UNION ALL SELECT 36, '312', '管理学硕士学位'
|
||||
UNION ALL SELECT 37, '313', '艺术学硕士学位'
|
||||
UNION ALL SELECT 38, '341', '法律硕士专业学位'
|
||||
UNION ALL SELECT 39, '342', '教育硕士专业学位'
|
||||
UNION ALL SELECT 40, '343', '工程硕士专业学位'
|
||||
UNION ALL SELECT 41, '344', '建筑学硕士专业学位'
|
||||
UNION ALL SELECT 42, '345', '临床学硕士专业学位'
|
||||
UNION ALL SELECT 43, '346', '工商管理硕士专业学位'
|
||||
UNION ALL SELECT 44, '347', '农业推广硕士专业学位'
|
||||
UNION ALL SELECT 45, '348', '兽医硕士专业学位'
|
||||
UNION ALL SELECT 46, '349', '公共管理硕士专业学位'
|
||||
UNION ALL SELECT 47, '350', '口腔医学硕士专业学位'
|
||||
UNION ALL SELECT 48, '351', '公共卫生硕士专业学位'
|
||||
UNION ALL SELECT 49, '352', '军事硕士专业学位'
|
||||
UNION ALL SELECT 50, '353', '金融硕士专业学位'
|
||||
UNION ALL SELECT 51, '354', '体育硕士专业学位'
|
||||
UNION ALL SELECT 52, '355', '艺术硕士专业学位'
|
||||
UNION ALL SELECT 53, '356', '风景园林硕士专业学位'
|
||||
UNION ALL SELECT 54, '357', '汉语国际教育硕士专业学位'
|
||||
UNION ALL SELECT 55, '358', '翻译硕士专业学位'
|
||||
UNION ALL SELECT 56, '359', '审计硕士专业学位'
|
||||
UNION ALL SELECT 57, '360', '社会工作硕士专业学位'
|
||||
UNION ALL SELECT 58, '362', '体育硕士专业学位'
|
||||
UNION ALL SELECT 59, '364', '应用心理硕士专业学位'
|
||||
UNION ALL SELECT 60, '365', '翻译硕士专业学位'
|
||||
UNION ALL SELECT 61, '370', '风景园林硕士专业学位'
|
||||
UNION ALL SELECT 62, '375', '会计硕士专业学位'
|
||||
UNION ALL SELECT 63, '377', '图书情报硕士专业学位'
|
||||
UNION ALL SELECT 64, '379', '艺术硕士专业学位'
|
||||
UNION ALL SELECT 65, '400', '学士学位'
|
||||
UNION ALL SELECT 66, '401', '哲学学士学位'
|
||||
UNION ALL SELECT 67, '402', '经济学学士学位'
|
||||
UNION ALL SELECT 68, '403', '法学学士学位'
|
||||
UNION ALL SELECT 69, '404', '教育学学士学位'
|
||||
UNION ALL SELECT 70, '405', '文学学士学位'
|
||||
UNION ALL SELECT 71, '406', '历史学学士学位'
|
||||
UNION ALL SELECT 72, '407', '理学学士学位'
|
||||
UNION ALL SELECT 73, '408', '工学学士学位'
|
||||
UNION ALL SELECT 74, '409', '农学学士学位'
|
||||
UNION ALL SELECT 75, '410', '医学学士学位'
|
||||
UNION ALL SELECT 76, '412', '管理学学士学位'
|
||||
UNION ALL SELECT 77, '413', '艺术学学士学位'
|
||||
UNION ALL SELECT 78, '444', '建筑学学士专业学位'
|
||||
UNION ALL SELECT 79, '900', '境外学位'
|
||||
) source
|
||||
WHERE parent.code = 'USER_ACADEMIC_DEGREE'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.code = 'USER_ACADEMIC_DEGREE'
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
-- 8. 学历
|
||||
UPDATE sys_dict child
|
||||
JOIN sys_dict parent ON parent.id = child.parentId
|
||||
SET child.code = child.name
|
||||
WHERE parent.code IN ('USER_EDUCATION')
|
||||
AND child.name IS NOT NULL
|
||||
AND child.name <> ''
|
||||
AND NOT (child.code <=> child.name);
|
||||
|
||||
-- 补充学历(USER_EDUCATION)直接子项,父级须已存在。
|
||||
-- code、name 均保存名称原文,仅新增缺失名称,不删除或覆盖已有记录。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '10' AS code, '研究生教育' AS name
|
||||
UNION ALL SELECT 2, '11', '博士研究生毕业'
|
||||
UNION ALL SELECT 3, '12', '博士研究生结业'
|
||||
UNION ALL SELECT 4, '14', '硕士研究生毕业'
|
||||
UNION ALL SELECT 5, '15', '硕士研究生结业'
|
||||
UNION ALL SELECT 6, '17', '研究生班毕业'
|
||||
UNION ALL SELECT 7, '18', '研究生班结业'
|
||||
UNION ALL SELECT 8, '20', '大学本科教育'
|
||||
UNION ALL SELECT 9, '21', '大学本科毕业'
|
||||
UNION ALL SELECT 10, '22', '大学本科结业'
|
||||
UNION ALL SELECT 11, '25', '双学历毕业'
|
||||
UNION ALL SELECT 12, '28', '大学普通班毕业'
|
||||
UNION ALL SELECT 13, '30', '大学专科教育'
|
||||
UNION ALL SELECT 14, '31', '大学专科毕业'
|
||||
UNION ALL SELECT 15, '32', '大学专科结业'
|
||||
UNION ALL SELECT 16, '40', '中等职业教育'
|
||||
UNION ALL SELECT 17, '41', '中等专科毕业'
|
||||
UNION ALL SELECT 18, '42', '中等专科结业'
|
||||
UNION ALL SELECT 19, '43', '中等专科肄业'
|
||||
UNION ALL SELECT 20, '44', '职业高中毕业'
|
||||
UNION ALL SELECT 21, '45', '职业高中结业'
|
||||
UNION ALL SELECT 22, '47', '技工学校毕业'
|
||||
UNION ALL SELECT 23, '48', '技工学校结业'
|
||||
UNION ALL SELECT 24, '60', '普通高级中学教育'
|
||||
UNION ALL SELECT 25, '61', '普通高中毕业'
|
||||
UNION ALL SELECT 26, '62', '普通高中结业'
|
||||
UNION ALL SELECT 27, '63', '普通高中肄业'
|
||||
UNION ALL SELECT 28, '70', '初级中学教育'
|
||||
UNION ALL SELECT 29, '71', '初中毕业'
|
||||
UNION ALL SELECT 30, '73', '初中肄业'
|
||||
UNION ALL SELECT 31, '80', '小学教育'
|
||||
UNION ALL SELECT 32, '81', '小学毕业'
|
||||
UNION ALL SELECT 33, '90', '其他'
|
||||
UNION ALL SELECT 34, '128', '相当大学毕业'
|
||||
UNION ALL SELECT 35, '138', '相当专科毕业'
|
||||
UNION ALL SELECT 36, '142', '中技毕业'
|
||||
) source
|
||||
WHERE parent.code = 'USER_EDUCATION'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.code = 'USER_EDUCATION'
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
-- 9. 职称
|
||||
-- 复用会员职称表单字典 TECHNICAL_TITLE_LEVEL,code、name 均保存名称。
|
||||
-- 同名职称在页面字典中仅保留一个,原始代码另存 sys_data_dict。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + 1, 4, '0')),
|
||||
'职称', '', 'TECHNICAL_TITLE_LEVEL', 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0) + 1,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
WHERE parent.code = 'USER_TABLE_COLUMN_DICTS'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_dict existing WHERE existing.code = 'TECHNICAL_TITLE_LEVEL');
|
||||
|
||||
UPDATE sys_dict child
|
||||
JOIN sys_dict parent ON parent.id = child.parentId
|
||||
SET child.code = child.name
|
||||
WHERE parent.code = 'TECHNICAL_TITLE_LEVEL'
|
||||
AND child.name IS NOT NULL AND child.name <> ''
|
||||
AND NOT (child.code <=> child.name);
|
||||
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '高等学校教师' AS name
|
||||
UNION ALL SELECT 2, '教授'
|
||||
UNION ALL SELECT 3, '副教授'
|
||||
UNION ALL SELECT 4, '讲师(高校)'
|
||||
UNION ALL SELECT 5, '助教(高校)'
|
||||
UNION ALL SELECT 6, '高级讲师(中专)'
|
||||
UNION ALL SELECT 7, '讲师(中专)'
|
||||
UNION ALL SELECT 8, '助理讲师(中专)'
|
||||
UNION ALL SELECT 9, '高级讲师(技校)'
|
||||
UNION ALL SELECT 10, '讲师(技校)'
|
||||
UNION ALL SELECT 11, '助理讲师(技校)'
|
||||
UNION ALL SELECT 12, '一级实习指导教师'
|
||||
UNION ALL SELECT 13, '二级实习指导教师'
|
||||
UNION ALL SELECT 14, '三级实习指导教师'
|
||||
UNION ALL SELECT 15, '高级教师(中学)'
|
||||
UNION ALL SELECT 16, '一级教师(中学)'
|
||||
UNION ALL SELECT 17, '二级教师(中学)'
|
||||
UNION ALL SELECT 18, '正高级教师'
|
||||
UNION ALL SELECT 19, '高级教师'
|
||||
UNION ALL SELECT 20, '一级教师'
|
||||
UNION ALL SELECT 21, '二级教师'
|
||||
UNION ALL SELECT 22, '教授级高级实验师'
|
||||
UNION ALL SELECT 23, '高级实验师'
|
||||
UNION ALL SELECT 24, '实验师'
|
||||
UNION ALL SELECT 25, '助理实验师'
|
||||
UNION ALL SELECT 26, '实验员'
|
||||
UNION ALL SELECT 27, '教授级高级工程师'
|
||||
UNION ALL SELECT 28, '高级工程师'
|
||||
UNION ALL SELECT 29, '工程师'
|
||||
UNION ALL SELECT 30, '助理工程师'
|
||||
UNION ALL SELECT 31, '技术员'
|
||||
UNION ALL SELECT 32, '农艺师'
|
||||
UNION ALL SELECT 33, '农业技术人员(畜牧)'
|
||||
UNION ALL SELECT 34, '经济专业人员'
|
||||
UNION ALL SELECT 35, '经济师'
|
||||
UNION ALL SELECT 36, '助理经济师'
|
||||
UNION ALL SELECT 37, '会计专业人员'
|
||||
UNION ALL SELECT 38, '高级会计师'
|
||||
UNION ALL SELECT 39, '会计师'
|
||||
UNION ALL SELECT 40, '助理会计师'
|
||||
UNION ALL SELECT 41, '会计员'
|
||||
UNION ALL SELECT 42, '统计专业人员'
|
||||
UNION ALL SELECT 43, '统计师'
|
||||
UNION ALL SELECT 44, '编审'
|
||||
UNION ALL SELECT 45, '副编审'
|
||||
UNION ALL SELECT 46, '编辑'
|
||||
UNION ALL SELECT 47, '主任编辑'
|
||||
UNION ALL SELECT 48, '播音员'
|
||||
UNION ALL SELECT 49, '卫生技术人员(医师)'
|
||||
UNION ALL SELECT 50, '主任医师'
|
||||
UNION ALL SELECT 51, '副主任医师'
|
||||
UNION ALL SELECT 52, '主治医师'
|
||||
UNION ALL SELECT 53, '医师'
|
||||
UNION ALL SELECT 54, '副主任药师'
|
||||
UNION ALL SELECT 55, '主管药师'
|
||||
UNION ALL SELECT 56, '药师'
|
||||
UNION ALL SELECT 57, '卫生技术人员(护理)'
|
||||
UNION ALL SELECT 58, '副主任护师'
|
||||
UNION ALL SELECT 59, '主管护师'
|
||||
UNION ALL SELECT 60, '护师'
|
||||
UNION ALL SELECT 61, '卫生主管技师'
|
||||
UNION ALL SELECT 62, '高级教师(小学)'
|
||||
UNION ALL SELECT 63, '一级教师(小学)'
|
||||
UNION ALL SELECT 64, '船舶技术人员(轮机)'
|
||||
UNION ALL SELECT 65, '研究员(自然科学)'
|
||||
UNION ALL SELECT 66, '副研究员(自然科学)'
|
||||
UNION ALL SELECT 67, '助理研究员(自然科学)'
|
||||
UNION ALL SELECT 68, '研究员(社会科学)'
|
||||
UNION ALL SELECT 69, '副研究员(社会科学)'
|
||||
UNION ALL SELECT 70, '助理研究员(社会科学)'
|
||||
UNION ALL SELECT 71, '研究实习员(社会科学)'
|
||||
UNION ALL SELECT 72, '研究馆员(图书)'
|
||||
UNION ALL SELECT 73, '副研究馆员(图书)'
|
||||
UNION ALL SELECT 74, '馆员(图书)'
|
||||
UNION ALL SELECT 75, '助理馆员(图书)'
|
||||
UNION ALL SELECT 76, '馆员(文博)'
|
||||
UNION ALL SELECT 77, '研究馆员(档案)'
|
||||
UNION ALL SELECT 78, '副研究馆员(档案)'
|
||||
UNION ALL SELECT 79, '馆员(档案)'
|
||||
UNION ALL SELECT 80, '教授(思想政治教育)'
|
||||
UNION ALL SELECT 81, '副教授(思想政治教育)'
|
||||
UNION ALL SELECT 82, '讲师(思想政治教育)'
|
||||
UNION ALL SELECT 83, '助教(思想政治教育)'
|
||||
UNION ALL SELECT 84, '政工师'
|
||||
UNION ALL SELECT 85, '助理政工师'
|
||||
UNION ALL SELECT 86, '政工员'
|
||||
UNION ALL SELECT 87, '副教授(改革)'
|
||||
UNION ALL SELECT 88, '研究员'
|
||||
UNION ALL SELECT 89, '副研究员'
|
||||
UNION ALL SELECT 90, '助理研究员'
|
||||
UNION ALL SELECT 91, '研究实习员'
|
||||
UNION ALL SELECT 92, '研究馆员'
|
||||
UNION ALL SELECT 93, '副研究馆员'
|
||||
UNION ALL SELECT 94, '馆员'
|
||||
UNION ALL SELECT 95, '助理馆员'
|
||||
UNION ALL SELECT 96, '管理员'
|
||||
UNION ALL SELECT 97, '幼教一级'
|
||||
UNION ALL SELECT 98, '幼教二级'
|
||||
UNION ALL SELECT 99, '幼教高级'
|
||||
UNION ALL SELECT 100, '研究员(教管)'
|
||||
UNION ALL SELECT 101, '副研究员(教管)'
|
||||
UNION ALL SELECT 102, '助理研究员(教管)'
|
||||
) source
|
||||
WHERE parent.code = 'TECHNICAL_TITLE_LEVEL'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.code IN ('USER_TABLE_COLUMN_DICTS', 'TECHNICAL_TITLE_LEVEL')
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
-- 10. 人员类型:沿用 v3 的 17 个名称,code、name 均保存名称。
|
||||
INSERT INTO sys_dict (
|
||||
id, parentId, path, name, remark, code, disabled, location, hasChildren,
|
||||
createdBy, createdAt, updatedBy, updatedAt, delFlag
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''), parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL((
|
||||
SELECT MAX(CAST(RIGHT(child.path, 4) AS UNSIGNED))
|
||||
FROM sys_dict child WHERE child.path LIKE CONCAT(parent.path, '____')
|
||||
), 0) + source.sortOrder, 4, '0')),
|
||||
source.name, '', source.name, 0,
|
||||
IFNULL((SELECT MAX(child.location) FROM sys_dict child WHERE child.parentId = parent.id), 0)
|
||||
+ source.sortOrder,
|
||||
0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM sys_dict parent
|
||||
CROSS JOIN (
|
||||
SELECT 1 AS sortOrder, '在编类' AS name
|
||||
UNION ALL SELECT 2, '聘用合同制(享受人事代理待遇)'
|
||||
UNION ALL SELECT 3, '在编'
|
||||
UNION ALL SELECT 4, '兰溪编制'
|
||||
UNION ALL SELECT 5, '非在编类'
|
||||
UNION ALL SELECT 6, '派遣人员'
|
||||
UNION ALL SELECT 7, '博士后'
|
||||
UNION ALL SELECT 8, '挂职人员'
|
||||
UNION ALL SELECT 9, '外籍教师'
|
||||
UNION ALL SELECT 10, '兼职教师'
|
||||
UNION ALL SELECT 11, '非学校聘用人员'
|
||||
UNION ALL SELECT 12, '单位返聘'
|
||||
UNION ALL SELECT 13, '附属单位'
|
||||
UNION ALL SELECT 14, '聘用合同制'
|
||||
UNION ALL SELECT 15, '聘用制专家'
|
||||
UNION ALL SELECT 16, '人事代理'
|
||||
UNION ALL SELECT 17, '其他'
|
||||
) source
|
||||
WHERE parent.code = 'USER_PERSON_TYPE'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_dict existing
|
||||
WHERE existing.parentId = parent.id AND existing.code = source.name
|
||||
);
|
||||
|
||||
UPDATE sys_dict parent
|
||||
SET parent.hasChildren = 1
|
||||
WHERE parent.code = 'USER_PERSON_TYPE'
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM (SELECT DISTINCT parentId FROM sys_dict) child
|
||||
WHERE child.parentId = parent.id
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,11 @@
|
||||
COMMIT;
|
||||
|
||||
-- 在源表补充接口原始代码,原有字段继续保存名称。
|
||||
ALTER TABLE sys_user_source
|
||||
ADD COLUMN educationCode varchar(20) NULL DEFAULT NULL COMMENT '最高学历代码' AFTER education,
|
||||
ADD COLUMN academicDegreeCode varchar(50) NULL DEFAULT NULL COMMENT '最高学位代码' AFTER academicDegree,
|
||||
ADD COLUMN preparedByCode varchar(30) NULL DEFAULT NULL COMMENT '编制类别代码' AFTER preparedBy,
|
||||
ADD COLUMN jobCategoryCode varchar(50) NULL DEFAULT NULL COMMENT '聘岗类型代码' AFTER jobCategory,
|
||||
ADD COLUMN userStateCode varchar(30) NULL DEFAULT NULL COMMENT '当前状态代码' AFTER userState;
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `sys_user_source`
|
||||
ADD COLUMN `professionalTitleCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业技术职务代码' AFTER `professionalTitle`;
|
||||
@@ -0,0 +1,55 @@
|
||||
;(function (a) {
|
||||
;(jQuery.browser = jQuery.browser || {}).mobile =
|
||||
/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(
|
||||
a
|
||||
) ||
|
||||
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(
|
||||
a.substr(0, 4)
|
||||
)
|
||||
})(navigator.userAgent || navigator.vendor || window.opera)
|
||||
|
||||
$.ajaxSetup({
|
||||
contentType: "application/x-www-form-urlencoded;charset=utf-8",
|
||||
success: function (response, textStatus, jqXHR) {
|
||||
if (response && typeof response === "object" && response.code !== undefined && response.code !== 0) {
|
||||
Vue.prototype.$message.error(response.msg)
|
||||
} else {
|
||||
return response
|
||||
}
|
||||
},
|
||||
error: function (v1) {
|
||||
Vue.prototype.$message.error(v1.status + " " + v1.statusText)
|
||||
},
|
||||
complete: function (XMLHttpRequest, textStatus) {
|
||||
var sessionstatus = XMLHttpRequest.getResponseHeader("loginStatus") //通过XMLHttpRequest取得响应头,sessionstatus,
|
||||
if (sessionstatus == "accessDenied") {
|
||||
Vue.prototype.$message({
|
||||
message: "\u767b\u5f55\u5931\u6548\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u91cd\u65b0\u767b\u5f55",
|
||||
type: "error"
|
||||
})
|
||||
}
|
||||
if (sessionstatus == "unauthorized") {
|
||||
Vue.prototype.$message({
|
||||
message: "\u6ca1\u6709\u6743\u9650",
|
||||
type: "error"
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function pjaxReplace(url, data = {}) {
|
||||
const { pathname, search } = location
|
||||
if (url === pathname + search) {
|
||||
return
|
||||
}
|
||||
$.pjax({
|
||||
url: url,
|
||||
container: "#sub-app-container-main-content-body",
|
||||
maxCacheLength: 0,
|
||||
push: false,
|
||||
replace: true,
|
||||
fragment: "#sub-app-container-main-content-body",
|
||||
timeout: 8000,
|
||||
data
|
||||
})
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
const uploadFileType = ['jpg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'pdf']
|
||||
const docType = ['doc', 'docx', 'xls', 'xlsx', 'pdf']
|
||||
var uploadFileType = ['jpg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'pdf']
|
||||
var docType = ['doc', 'docx', 'xls', 'xlsx', 'pdf']
|
||||
|
||||
const FILE_UPLOAD_ADDRESS = '/platform/inclusiveTherapyV3/common/uploadFile'
|
||||
const FILE_DELETE_ADDRESS = '/platform/inclusiveTherapyV3/common/deleteFile'
|
||||
const FILE_STREAM_PREVIEW_ADDRESS = '/platform/inclusiveTherapyV3/common/preview'
|
||||
const FILE_STREAM_DOWNLOAD_ADDRESS = '/platform/inclusiveTherapyV3/common/download'
|
||||
var FILE_UPLOAD_ADDRESS = '/platform/inclusiveTherapyV3/common/uploadFile'
|
||||
var FILE_DELETE_ADDRESS = '/platform/inclusiveTherapyV3/common/deleteFile'
|
||||
var FILE_STREAM_PREVIEW_ADDRESS = '/platform/inclusiveTherapyV3/common/preview'
|
||||
var FILE_STREAM_DOWNLOAD_ADDRESS = '/platform/inclusiveTherapyV3/common/download'
|
||||
|
||||
const preview = async (filename, id) => {
|
||||
var preview = async (filename, id) => {
|
||||
const suffix = filename.substring(filename.lastIndexOf('.') + 1)
|
||||
if (!docType.includes(suffix.toLowerCase())) {
|
||||
let image = new Image();
|
||||
@@ -19,19 +19,19 @@ const preview = async (filename, id) => {
|
||||
}
|
||||
}
|
||||
|
||||
const download = (id) => {
|
||||
var download = (id) => {
|
||||
window.open(FILE_STREAM_DOWNLOAD_ADDRESS + '?id=' + id)
|
||||
}
|
||||
|
||||
|
||||
const PREVIEW_IMAGE = (val) => {
|
||||
var PREVIEW_IMAGE = (val) => {
|
||||
let image = new Image();
|
||||
image.src = FILE_STREAM_PREVIEW_ADDRESS + "?id=" + val
|
||||
let viewer = new Viewer(image);
|
||||
viewer.show();
|
||||
}
|
||||
|
||||
const CREATE_PREVIEW_URL = (val) => {
|
||||
var CREATE_PREVIEW_URL = (val) => {
|
||||
return /^(https?:|data:|blob:|\/)/.test(val || "") ? val : FILE_STREAM_PREVIEW_ADDRESS + "?id=" + encodeURIComponent(val)
|
||||
}
|
||||
|
||||
@@ -40,13 +40,13 @@ const CREATE_PREVIEW_URL = (val) => {
|
||||
* 遮盖层颜色
|
||||
* @type {string}
|
||||
*/
|
||||
const COVER_LAYER_COLOR = "rgba(0,0,0,.45)"
|
||||
var COVER_LAYER_COLOR = "rgba(0,0,0,.45)"
|
||||
|
||||
/**
|
||||
* 民族
|
||||
* @type {string[]}
|
||||
*/
|
||||
const nation = [
|
||||
var nation = [
|
||||
'汉族',
|
||||
'蒙古族',
|
||||
'回族',
|
||||
@@ -113,7 +113,7 @@ function clone(obj) {
|
||||
return JSON.parse(JSON.stringify(obj))
|
||||
}
|
||||
|
||||
const calcTableHeight = (eleIds = []) => {
|
||||
var calcTableHeight = (eleIds = []) => {
|
||||
if (eleIds) {
|
||||
eleIds.forEach(e_id => {
|
||||
const ele = document.querySelector('#' + e_id)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const sublime = {
|
||||
var sublime = {
|
||||
jumpPagePjax(url) {
|
||||
window.location.href = url;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
Vue.component('vi-title', {
|
||||
props: ['title'],
|
||||
template: `
|
||||
<div style="display: flex;flex-direction:row;color: var(--color-primary);font-weight: bolder;margin-bottom: 20px">
|
||||
<div style="width: 5px;height: 24px;background-color: var(--color-primary);border-radius: 2px"></div>
|
||||
<div style="margin-left: 20px;line-height: 24px;font-size: 15px;letter-spacing: 1px">
|
||||
<div class="therapy-title" style="display: flex;flex-direction:row;color: var(--color-primary);font-weight: bolder;margin-bottom: 20px">
|
||||
<div class="therapy-title-marker" style="width: 5px;height: 24px;background-color: var(--color-primary);border-radius: 2px"></div>
|
||||
<div class="therapy-title-text" style="margin-left: 20px;line-height: 24px;font-size: 15px;letter-spacing: 1px">
|
||||
{{ title }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -46,7 +46,7 @@ Vue.component('more', {
|
||||
}
|
||||
})
|
||||
|
||||
Vue.component('table-tool', {
|
||||
Vue.component('therapy-table-tool', {
|
||||
props: {
|
||||
label: {type: String},
|
||||
app: {}
|
||||
@@ -79,7 +79,7 @@ Vue.component('table-tool', {
|
||||
this.getColumns()
|
||||
},
|
||||
template: `
|
||||
<el-row type="flex" justify="space-between" align="middle" style="margin-bottom: 15px">
|
||||
<el-row class="therapy-table-tool" type="flex" justify="space-between" align="middle" style="margin-bottom: 15px">
|
||||
|
||||
<div style="display: flex;justify-content: center;align-items: center">
|
||||
<vi-title :title="label" style="margin-bottom: 0"></vi-title><slot name="label_end"></slot>
|
||||
@@ -127,3 +127,4 @@ Vue.component('table-tool', {
|
||||
</el-row>
|
||||
`,
|
||||
})
|
||||
Vue.component('table-tool', Vue.options.components['therapy-table-tool'])
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
.therapy-desktop {
|
||||
font-family: "Helvetica Neue", "Microsoft YaHei", Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
color: #303133;
|
||||
}
|
||||
|
||||
.therapy-desktop #app {
|
||||
height: auto;
|
||||
min-height: 100%;
|
||||
overflow: visible;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .el-card__header {
|
||||
padding: 16px 20px;
|
||||
color: #303133;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .el-form-item__label {
|
||||
color: #606266;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .search {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px 24px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .search .search-item {
|
||||
width: auto;
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .search .search-item-label {
|
||||
flex: 0 0 90px;
|
||||
width: 90px;
|
||||
min-width: 0;
|
||||
margin-right: 12px;
|
||||
color: #606266;
|
||||
text-align: right;
|
||||
line-height: 20px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .search .search-item-option {
|
||||
flex: 1;
|
||||
width: 0;
|
||||
min-width: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .search-item-option > .el-input,
|
||||
.therapy-desktop #app .search-item-option > .el-select,
|
||||
.therapy-desktop #app .search-item-option > .el-date-editor {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .search-item-option > .el-radio-group {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 4px 0;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .search .search-query {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
width: auto;
|
||||
margin: 0;
|
||||
padding-left: 102px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row {
|
||||
height: auto;
|
||||
min-height: 56px;
|
||||
padding: 12px 0;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row > .query-row-title:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row .el-col {
|
||||
min-width: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row-content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row-content > .el-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
row-gap: 12px;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row-content > .el-row > .el-col {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding-right: 24px;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row-content > .el-row > .el-col > span:first-child {
|
||||
flex: 0 0 90px;
|
||||
color: #606266;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row-content > .el-row > .el-col > .el-input,
|
||||
.therapy-desktop #app .query-row-content > .el-row > .el-col > .el-select {
|
||||
flex: 1;
|
||||
width: 0 !important;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.therapy-desktop .therapy-table-tool {
|
||||
flex-wrap: wrap;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.therapy-desktop .therapy-table-tool > div {
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.therapy-desktop .therapy-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
margin-bottom: 16px;
|
||||
color: #303133 !important;
|
||||
font-size: 16px;
|
||||
font-weight: 600 !important;
|
||||
line-height: 24px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.therapy-desktop .therapy-title .therapy-title-marker {
|
||||
flex: 0 0 3px;
|
||||
height: 16px !important;
|
||||
}
|
||||
|
||||
.therapy-desktop .therapy-title .therapy-title-text {
|
||||
margin-left: 10px !important;
|
||||
font-size: 16px !important;
|
||||
letter-spacing: normal !important;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .chart-title,
|
||||
.therapy-desktop #app .col-title {
|
||||
color: #303133;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
.therapy-desktop #app .search {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.therapy-desktop #app .search {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
}
|
||||
|
||||
.therapy-desktop #app .query-row-content > .el-row > .el-col {
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.therapy-desktop .therapy-table-tool > div {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 441 KiB |
|
After Width: | Height: | Size: 524 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 991 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
@@ -1,4 +1,4 @@
|
||||
const initTableMixins = {
|
||||
var therapyTableMixins = {
|
||||
data() {
|
||||
return {
|
||||
festival: ['元旦', '春节', '清明节', '劳动节', '端午节', '中秋节', '国庆节', '其它'],
|
||||
|
||||
@@ -23,6 +23,14 @@ const mobileMixins = {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
historyBack(callback) {
|
||||
if (window.history.length > 1) {
|
||||
window.history.back()
|
||||
} else {
|
||||
window.location.href = '/platform/h5/home'
|
||||
}
|
||||
if (typeof callback === 'function') callback()
|
||||
},
|
||||
async pageData() {
|
||||
this.mLoading = true
|
||||
if (this.pageDataUrl == null) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* 根据enum获取选项
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getEnumOptions = async (enumName) => {
|
||||
var getEnumOptions = async (enumName) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/enumOptions", {enumName})
|
||||
return data
|
||||
}
|
||||
@@ -11,7 +11,7 @@ const getEnumOptions = async (enumName) => {
|
||||
* 根据code获取字典选项
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getDictOptions = async (code) => {
|
||||
var getDictOptions = async (code) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/dictOptions", {code})
|
||||
return data
|
||||
}
|
||||
@@ -20,7 +20,7 @@ const getDictOptions = async (code) => {
|
||||
* 根据code获取字典选项信息
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getDictState = async (code) => {
|
||||
var getDictState = async (code) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/dictState", {code})
|
||||
return data
|
||||
}
|
||||
@@ -29,7 +29,7 @@ const getDictState = async (code) => {
|
||||
* 获取校区
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getCampus = async () => {
|
||||
var getCampus = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getCampus")
|
||||
return data
|
||||
}
|
||||
@@ -39,19 +39,19 @@ const getCampus = async () => {
|
||||
* 获取代表团
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getDbt = async (jdhId) => {
|
||||
var getDbt = async (jdhId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getDbt", {jdhId})
|
||||
return data
|
||||
}
|
||||
|
||||
//查询当前用户管理的院级工会
|
||||
const getUnion = async () => {
|
||||
var getUnion = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getUnion")
|
||||
return data
|
||||
}
|
||||
|
||||
//查询当前用户管理的院级工会下的单位
|
||||
const getUnit = async (unionid) => {
|
||||
var getUnit = async (unionid) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getUnit", {unionid: unionid})
|
||||
return data
|
||||
}
|
||||
@@ -60,13 +60,13 @@ const getUnit = async (unionid) => {
|
||||
* 获取代表小组
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getGroup = async (jdhId) => {
|
||||
var getGroup = async (jdhId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getGroup", {jdhId})
|
||||
return data
|
||||
}
|
||||
|
||||
//获取所有开启的教代会
|
||||
const getOpenJdh = async () => {
|
||||
var getOpenJdh = async () => {
|
||||
const {data} = await $.get("/platform/jdh/Common/getOpenJdhxx")
|
||||
return data
|
||||
}
|
||||
@@ -75,7 +75,7 @@ const getOpenJdh = async () => {
|
||||
* 获取院级工会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnions = async (delegationId = null, isPermission = false) => {
|
||||
var getUnions = async (delegationId = null, isPermission = false) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/unions", {delegationId, isPermission})
|
||||
return data
|
||||
}
|
||||
@@ -84,7 +84,7 @@ const getUnions = async (delegationId = null, isPermission = false) => {
|
||||
* 获取活动院级工会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getActivityUnions = async () => {
|
||||
var getActivityUnions = async () => {
|
||||
const {data} = await $.get("/platform/activity/basic/union/getActivityUnions",)
|
||||
return data
|
||||
}
|
||||
@@ -93,12 +93,12 @@ const getActivityUnions = async () => {
|
||||
* 获取单位
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnits = async (unionId = null) => {
|
||||
var getUnits = async (unionId = null) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/units", {unionId})
|
||||
return data
|
||||
}
|
||||
|
||||
const getClubUnits = async () => {
|
||||
var getClubUnits = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getClubUnits", {})
|
||||
return data
|
||||
}
|
||||
@@ -107,7 +107,7 @@ const getClubUnits = async () => {
|
||||
* 获取单位
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getActivityUnits = async (unionId) => {
|
||||
var getActivityUnits = async (unionId) => {
|
||||
const {data} = await $.get("/platform/activity/basic/union/getActivityUnits", {unionId})
|
||||
return data
|
||||
}
|
||||
@@ -117,7 +117,7 @@ const getActivityUnits = async (unionId) => {
|
||||
* 获取本分工会的单位
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnionUnits = async () => {
|
||||
var getUnionUnits = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/unionUnits")
|
||||
return data
|
||||
}
|
||||
@@ -126,7 +126,7 @@ const getUnionUnits = async () => {
|
||||
* 获取福利单位
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getWelfareUnits = async () => {
|
||||
var getWelfareUnits = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/welfareUnits")
|
||||
return data
|
||||
}
|
||||
@@ -135,7 +135,7 @@ const getWelfareUnits = async () => {
|
||||
* 获取福利单位的二级单位
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnitsByWelfareUnit = async (welfareUnitId) => {
|
||||
var getUnitsByWelfareUnit = async (welfareUnitId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/unitsByWelfareUnit", {welfareUnitId})
|
||||
return data
|
||||
}
|
||||
@@ -144,7 +144,7 @@ const getUnitsByWelfareUnit = async (welfareUnitId) => {
|
||||
* 获取协会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getClubs = async () => {
|
||||
var getClubs = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/clubs", {})
|
||||
return data
|
||||
}
|
||||
@@ -153,7 +153,7 @@ const getClubs = async () => {
|
||||
* 获取届次
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getJc = async () => {
|
||||
var getJc = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getJcByDict")
|
||||
return data
|
||||
}
|
||||
@@ -162,7 +162,7 @@ const getJc = async () => {
|
||||
* 获取当前人所管理的协会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getClubsByRole = async () => {
|
||||
var getClubsByRole = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getClubsByRole", {})
|
||||
return data
|
||||
}
|
||||
@@ -170,7 +170,7 @@ const getClubsByRole = async () => {
|
||||
* 获取当前人所在的协会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getClubsByUser = async () => {
|
||||
var getClubsByUser = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getClubsByUser", {})
|
||||
return data
|
||||
}
|
||||
@@ -179,7 +179,7 @@ const getClubsByUser = async () => {
|
||||
* 获取文件类型
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getFileType = async () => {
|
||||
var getFileType = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getFileTypeByDict")
|
||||
return data
|
||||
}
|
||||
@@ -188,7 +188,7 @@ const getFileType = async () => {
|
||||
* 获取基层干部的角色
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getJcgbJs = async () => {
|
||||
var getJcgbJs = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getJcgbJsByDict")
|
||||
return data
|
||||
}
|
||||
@@ -197,7 +197,7 @@ const getJcgbJs = async () => {
|
||||
* 获取审批员的角色
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getSpyJs = async () => {
|
||||
var getSpyJs = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getSpyJsByDict")
|
||||
return data
|
||||
}
|
||||
@@ -206,7 +206,7 @@ const getSpyJs = async () => {
|
||||
* 获取协会类型
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getClubType = async () => {
|
||||
var getClubType = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getClubTypeByDict")
|
||||
return data
|
||||
}
|
||||
@@ -215,7 +215,7 @@ const getClubType = async () => {
|
||||
* 获取系统名称
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getSystemName = async () => {
|
||||
var getSystemName = async () => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getSystemNameByDict")
|
||||
return data
|
||||
}
|
||||
@@ -224,7 +224,7 @@ const getSystemName = async () => {
|
||||
* 获取工代会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getGdh = async (open = true) => {
|
||||
var getGdh = async (open = true) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getGdh", {open})
|
||||
return data
|
||||
}
|
||||
@@ -233,7 +233,7 @@ const getGdh = async (open = true) => {
|
||||
* 获取工代会代表团
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getGdhDbt = async (jdhId) => {
|
||||
var getGdhDbt = async (jdhId) => {
|
||||
const {data} = await $.get("/platform/gdh/common/getDbt", {jdhId})
|
||||
return data
|
||||
}
|
||||
@@ -242,7 +242,7 @@ const getGdhDbt = async (jdhId) => {
|
||||
* 根据id查用户
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const queryUserByIds = async (ids) => {
|
||||
var queryUserByIds = async (ids) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/queryUserByIds", {ids: JSON.stringify(ids)})
|
||||
return data
|
||||
}
|
||||
@@ -251,7 +251,7 @@ const queryUserByIds = async (ids) => {
|
||||
* 根据id查用户
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const queryUserById = async (id) => {
|
||||
var queryUserById = async (id) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/queryUserById", {id: id})
|
||||
return data
|
||||
}
|
||||
@@ -265,7 +265,7 @@ const queryUserById = async (id) => {
|
||||
* @param member
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const searchUser = async (query, unionId = null, unitId = null, sex = null, member = null) => {
|
||||
var searchUser = async (query, unionId = null, unitId = null, sex = null, member = null) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/searchUser", {
|
||||
query,
|
||||
unionId,
|
||||
@@ -280,7 +280,7 @@ const searchUser = async (query, unionId = null, unitId = null, sex = null, memb
|
||||
* 获取代表可以操作的教代会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getJdhByDb = async () => {
|
||||
var getJdhByDb = async () => {
|
||||
const {data} = await $.get("/platform/proposal/common/getJdhByDb")
|
||||
return data
|
||||
}
|
||||
@@ -289,7 +289,7 @@ const getJdhByDb = async () => {
|
||||
* 获取代表可以操作的开启的教代会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getOpenJdhByDb = async () => {
|
||||
var getOpenJdhByDb = async () => {
|
||||
const {data} = await $.get("/platform/proposal/common/getOpenMeeting")
|
||||
return data
|
||||
}
|
||||
@@ -298,7 +298,7 @@ const getOpenJdhByDb = async () => {
|
||||
* 获取教代会工作资料类型
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getGzzllx = async () => {
|
||||
var getGzzllx = async () => {
|
||||
const {data} = await $.get("/platform/jdh/Common/getGzzllx")
|
||||
return data
|
||||
}
|
||||
@@ -307,16 +307,16 @@ const getGzzllx = async () => {
|
||||
* 获取疗休养活动
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getLxyHd = async () => {
|
||||
var getLxyHd = async () => {
|
||||
const {data} = await $.get("/platform/zgfw/lxy/common/getHdList")
|
||||
return data
|
||||
}
|
||||
const getlxyHdCd = async () => {
|
||||
var getlxyHdCd = async () => {
|
||||
const {data} = await $.get("/platform/zgfw/lxy/common/getlxyHdCd")
|
||||
return data
|
||||
}
|
||||
|
||||
const getNowLxyHd = async () => {
|
||||
var getNowLxyHd = async () => {
|
||||
const {data} = await $.get("/platform/zgfw/lxy/common/getNowHdList")
|
||||
return data
|
||||
}
|
||||
@@ -325,11 +325,11 @@ const getNowLxyHd = async () => {
|
||||
* 获取基层工会
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnionList = async (unionId) => {
|
||||
var getUnionList = async (unionId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/unionList", {unionId})
|
||||
return data
|
||||
}
|
||||
const threeUnitsByUnionGroupOrUnitId = async (unitId, groupId) => {
|
||||
var threeUnitsByUnionGroupOrUnitId = async (unitId, groupId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/threeUnitsByUnionGroupOrUnitId", {
|
||||
unitId,
|
||||
groupId
|
||||
@@ -337,7 +337,7 @@ const threeUnitsByUnionGroupOrUnitId = async (unitId, groupId) => {
|
||||
return data
|
||||
}
|
||||
|
||||
const unionGroupsByUnionId = async (unionId) => {
|
||||
var unionGroupsByUnionId = async (unionId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/unionGroupsByUnionId", {unionId})
|
||||
return data
|
||||
}
|
||||
@@ -346,7 +346,7 @@ const unionGroupsByUnionId = async (unionId) => {
|
||||
* 获取活动人员范围
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getActivityGroup = async () => {
|
||||
var getActivityGroup = async () => {
|
||||
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||
return data
|
||||
}
|
||||
@@ -354,7 +354,7 @@ const getActivityGroup = async () => {
|
||||
* 查看该人员是否在活动范围中
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getScopeUser = async (activityGroupId) => {
|
||||
var getScopeUser = async (activityGroupId) => {
|
||||
const {data} = await $.get('/platform/activity/basic/scope/getScopeUser', {activityGroupId})
|
||||
return data
|
||||
}
|
||||
@@ -364,18 +364,18 @@ const getScopeUser = async (activityGroupId) => {
|
||||
* @param id
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getActivityTwoLevelType = async (code) => {
|
||||
var getActivityTwoLevelType = async (code) => {
|
||||
const {data} = await $.get("/platform/activity/basic/basic/settings/getActivityTwoLevelType", {code})
|
||||
return data
|
||||
}
|
||||
|
||||
//获取二级教代会(双代会)工作资料类型
|
||||
const getJdh2Gzzllx = async () => {
|
||||
var getJdh2Gzzllx = async () => {
|
||||
const {data} = await $.get("/platform/jdh/Common/getJdh2Gzzllx")
|
||||
return data
|
||||
}
|
||||
|
||||
const getLocationVariable = (variable) => {
|
||||
var getLocationVariable = (variable) => {
|
||||
var query = window.location.search.substring(1);
|
||||
var vars = query.split("&");
|
||||
for (let i = 0; i < vars.length; i++) {
|
||||
@@ -387,7 +387,7 @@ const getLocationVariable = (variable) => {
|
||||
return '';
|
||||
}
|
||||
|
||||
const getConfigKey = async (key) => {
|
||||
var getConfigKey = async (key) => {
|
||||
const {data} = await $.get('/platform/inclusiveTherapyV3/common/getValue', {key})
|
||||
return data
|
||||
}
|
||||
@@ -396,7 +396,7 @@ const getConfigKey = async (key) => {
|
||||
* 根据多个工会获取单位
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnitByUnions = async (unionId = null) => {
|
||||
var getUnitByUnions = async (unionId = null) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getUnitsByUnions", {unionId})
|
||||
return data
|
||||
}
|
||||
@@ -407,7 +407,7 @@ const getUnitByUnions = async (unionId = null) => {
|
||||
* @param groupId
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getThreeUnitsByUnionGroupsOrUnitIds = async (unitId, groupId) => {
|
||||
var getThreeUnitsByUnionGroupsOrUnitIds = async (unitId, groupId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getThreeUnitsByUnionGroupsOrUnitIds", {
|
||||
unitId,
|
||||
groupId
|
||||
@@ -420,7 +420,7 @@ const getThreeUnitsByUnionGroupsOrUnitIds = async (unitId, groupId) => {
|
||||
* @param unionId
|
||||
* @returns {Promise<*>}
|
||||
*/
|
||||
const getUnionGroupsByUnions = async (unionId) => {
|
||||
var getUnionGroupsByUnions = async (unionId) => {
|
||||
const {data} = await $.get("/platform/inclusiveTherapyV3/common/getUnionGroupsByUnions", {unionId})
|
||||
return data
|
||||
}
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
<template>
|
||||
<van-popup :value="value" position="right" class="therapy-notice-preview" :close-on-click-overlay="false"
|
||||
:close-on-popstate="true" @input="$emit('input', $event)" @opened="loadPdf" @closed="releasePdf">
|
||||
<van-nav-bar :title="title" left-arrow left-text="返回" @click-left="$emit('input', false)"></van-nav-bar>
|
||||
<div class="therapy-notice-preview__body">
|
||||
<div v-if="src" ref="viewer" class="therapy-notice-preview__viewer"></div>
|
||||
<div v-else class="therapy-notice-preview__content" v-html="content"></div>
|
||||
<div v-if="loading" class="therapy-notice-preview__status"><van-loading vertical>正在加载须知...</van-loading></div>
|
||||
<div v-if="failed" class="therapy-notice-preview__status">
|
||||
<van-empty image="error" description="PDF 加载失败,请重试">
|
||||
<van-button round type="primary" size="small" @click="loadPdf">重新加载</van-button>
|
||||
</van-empty>
|
||||
</div>
|
||||
</div>
|
||||
</van-popup>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: 'TherapyNoticePreview',
|
||||
props: {
|
||||
value: { type: Boolean, default: false },
|
||||
src: { type: String, default: '' },
|
||||
title: { type: String, default: '疗休养须知' },
|
||||
content: { type: String, default: '' }
|
||||
},
|
||||
data() {
|
||||
return { loading: false, failed: false }
|
||||
},
|
||||
methods: {
|
||||
loadPdf() {
|
||||
this.releasePdf()
|
||||
if (!this.value || !this.src) return
|
||||
this.loading = true
|
||||
try {
|
||||
const viewer = new Pdfh5(this.$refs.viewer, { pdfurl: this.src, URIenable: false })
|
||||
this._pdfViewer = viewer
|
||||
viewer.on('complete', (status) => {
|
||||
if (this._pdfViewer !== viewer) return
|
||||
this.loading = false
|
||||
this.failed = status !== 'success'
|
||||
})
|
||||
viewer.on('error', () => {
|
||||
if (this._pdfViewer !== viewer) return
|
||||
this.loading = false
|
||||
this.failed = true
|
||||
})
|
||||
} catch (error) {
|
||||
this.loading = false
|
||||
this.failed = true
|
||||
}
|
||||
},
|
||||
releasePdf() {
|
||||
const viewer = this._pdfViewer
|
||||
this._pdfViewer = null
|
||||
if (viewer) viewer.destroy()
|
||||
this.loading = false
|
||||
this.failed = false
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.releasePdf()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.therapy-notice-preview.van-popup {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100vw;
|
||||
max-width: none;
|
||||
border-radius: 0;
|
||||
height: 100%;
|
||||
height: 100dvh;
|
||||
overflow: hidden;
|
||||
background: #f3f7fd;
|
||||
box-sizing: border-box;
|
||||
padding-top: env(safe-area-inset-top);
|
||||
padding-bottom: env(safe-area-inset-bottom);
|
||||
}
|
||||
|
||||
.therapy-notice-preview > .van-nav-bar {
|
||||
flex-shrink: 0;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.therapy-notice-preview .van-nav-bar__title {
|
||||
max-width: 60%;
|
||||
}
|
||||
|
||||
.therapy-notice-preview__body {
|
||||
position: relative;
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.therapy-notice-preview__viewer {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.therapy-notice-preview__content {
|
||||
height: 100%;
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
box-sizing: border-box;
|
||||
background: #fff;
|
||||
line-height: 1.8;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.therapy-notice-preview__content img,
|
||||
.therapy-notice-preview__content video {
|
||||
max-width: 100% !important;
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.therapy-notice-preview__status {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #f3f7fd;
|
||||
}
|
||||
</style>
|
||||
@@ -3,6 +3,7 @@
|
||||
<slot></slot>
|
||||
<div class="search-query" v-if="isSearchButton">
|
||||
<el-button type="primary" icon="el-icon-search" @click="$emit('search', null)">搜索</el-button>
|
||||
<slot name="actions"></slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel panel-default" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
基地信息
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="报名信息" name="1">
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel panel-default" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
本人信息
|
||||
@@ -68,7 +68,23 @@
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body" style="border: 1px solid rgb(235, 238, 245)">
|
||||
<el-table :data="viewData.companionList">
|
||||
<div v-if="familyCards" class="therapy-family-list">
|
||||
<div v-for="(item, index) in viewData.companionList" :key="item.id || index" class="therapy-family-card">
|
||||
<div class="therapy-family-title">家属 {{ index + 1 }} · {{ item.userName }}</div>
|
||||
<el-descriptions :column="2" border class="therapy-family-details">
|
||||
<el-descriptions-item label="姓名">{{ item.userName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ item.sex }}</el-descriptions-item>
|
||||
<el-descriptions-item label="关系">{{ item.relation }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号">{{ item.idCard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">{{ item.age }}</el-descriptions-item>
|
||||
<el-descriptions-item label="床型">{{ item.bedInfo?.bedType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="床位">{{ item.bedInfo?.bedNum }}</el-descriptions-item>
|
||||
<el-descriptions-item label="意向拼床人">{{ item.bedInfo?.otherSleepUser || '暂无' }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<el-empty v-if="!viewData.companionList || !viewData.companionList.length" description="暂无家属信息" :image-size="60"></el-empty>
|
||||
</div>
|
||||
<el-table v-else :data="viewData.companionList">
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="身份证号" prop="idCard"></el-table-column>
|
||||
@@ -138,6 +154,10 @@
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
familyCards: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
union_id: {
|
||||
type: String,
|
||||
default: "",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<template #header>
|
||||
<el-row type="flex">
|
||||
<el-col :span="12">
|
||||
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="v='index'">返回</el-button>
|
||||
<el-button icon="el-icon-back" style="font-size: 16px; padding: 0" type="text" @click="v='index'">返回</el-button>
|
||||
</el-col>
|
||||
<el-col :span="12" class="text-right">
|
||||
<slot name="edit_func"></slot>
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
<el-card v-show="v==='view'" key="view" shadow="never" class="animated-card">
|
||||
<template #header>
|
||||
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="v='index'">返回</el-button>
|
||||
<el-button icon="el-icon-back" style="font-size: 16px; padding: 0" type="text" @click="v='index'">返回</el-button>
|
||||
</template>
|
||||
<div :class="{'card_scroll':edit_scroll}">
|
||||
<slot name="view"></slot>
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
<el-card v-show="v==='public'" key="public" shadow="never" class="animated-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="back()">返回
|
||||
<el-button icon="el-icon-back" style="font-size: 16px; padding: 0" type="text" @click="back()">返回
|
||||
</el-button>
|
||||
</div>
|
||||
<div>
|
||||
@@ -92,7 +92,7 @@ module.exports = {
|
||||
<style>
|
||||
|
||||
.guava-main-content {
|
||||
padding: 10px 12px;
|
||||
padding: 0;
|
||||
background-color: #f6f6f6;
|
||||
min-height: 100%;
|
||||
}
|
||||
@@ -114,8 +114,12 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
|
||||
.el-card__header {
|
||||
padding: 5px 20px !important;
|
||||
.guava-main-content > .animated-card > .el-card__header {
|
||||
padding: 12px 24px !important;
|
||||
}
|
||||
|
||||
.guava-main-content > .animated-card > .el-card__body {
|
||||
padding: 20px 24px;
|
||||
}
|
||||
|
||||
.el-tabs--border-card {
|
||||
@@ -143,4 +147,4 @@ module.exports = {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
<div class="therapy-line-info">
|
||||
<div class="line-info-section">
|
||||
<div class="line-info-section-header">
|
||||
<h3 class="line-info-section-title">
|
||||
线路信息
|
||||
</h3>
|
||||
</div>
|
||||
<el-descriptions :column="2" border class="viewTable">
|
||||
<el-descriptions-item label="年度">{{ viewData.year }}</el-descriptions-item>
|
||||
<el-descriptions-item label="编号">{{ viewData.serialNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="线路名称">{{ viewData.lineName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="区域性质">{{ viewData.regionalNature }}</el-descriptions-item>
|
||||
<dl class="line-info-fields">
|
||||
<div class="line-info-field"><dt>年度</dt><dd>{{ viewData.year }}</dd></div>
|
||||
<div class="line-info-field"><dt>编号</dt><dd>{{ viewData.serialNumber }}</dd></div>
|
||||
<div class="line-info-field"><dt>线路名称</dt><dd>{{ viewData.lineName }}</dd></div>
|
||||
<div class="line-info-field"><dt>区域性质</dt><dd>{{ viewData.regionalNature }}</dd></div>
|
||||
<!-- <el-descriptions-item label="最少参与教工">{{ viewData.minimumGroupSize }}</el-descriptions-item>-->
|
||||
<!-- (校工会创建AND自由模式) OR (分工会创建) -->
|
||||
<!-- <template v-if="(viewData.createMode === 2 && viewData.signUpMode === 2 ) || viewData.createMode === 1">-->
|
||||
@@ -25,12 +25,12 @@
|
||||
<!-- <el-descriptions-item label="预计费用(元)">{{ viewData.estimatedCost }}</el-descriptions-item>-->
|
||||
<!-- <el-descriptions-item label="预计人数(含家属)">{{ viewData.estimatedFamilyNumbers }}</el-descriptions-item>-->
|
||||
<!-- <el-descriptions-item label=""></el-descriptions-item>-->
|
||||
</el-descriptions>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default mt20" style="border:none" v-if="showTravelTimePeriod">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
<div class="line-info-section" v-if="showTravelTimePeriod">
|
||||
<div class="line-info-section-header">
|
||||
<h3 class="line-info-section-title">
|
||||
出行时间段
|
||||
</h3>
|
||||
</div>
|
||||
@@ -73,14 +73,15 @@
|
||||
</el-descriptions>
|
||||
</div>
|
||||
-->
|
||||
<div class="panel panel-default mt20" style="border-color: #ebeef5">
|
||||
<div class="panel-heading" style="background: #fafafa;border-color: #ebeef5">
|
||||
<h3 class="panel-title">
|
||||
<div class="line-info-section">
|
||||
<div class="line-info-section-header">
|
||||
<h3 class="line-info-section-title">
|
||||
线路内容
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div v-html="viewData.content"></div>
|
||||
<div class="line-info-content">
|
||||
<div v-html="viewData.content" v-if="viewData.content"></div>
|
||||
<div class="line-info-empty" v-else>暂无线路内容</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -134,12 +135,113 @@ module.exports = {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.viewTable .el-descriptions__table {
|
||||
table-layout: fixed !important;
|
||||
<style>
|
||||
.therapy-line-info {
|
||||
color: #303133;
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.viewTable .el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
.therapy-line-info .line-info-section {
|
||||
margin-bottom: 24px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #ebeef5;
|
||||
border-radius: 4px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-section:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-section-header {
|
||||
padding: 14px 20px;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-section-title {
|
||||
margin: 0;
|
||||
padding-left: 10px;
|
||||
border-left: 3px solid var(--color-primary, #409eff);
|
||||
color: #303133;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-fields {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-field {
|
||||
display: grid;
|
||||
grid-template-columns: 120px minmax(0, 1fr);
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-field:nth-child(n + 3) {
|
||||
border-top: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-field:nth-child(2n) {
|
||||
border-left: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-field dt,
|
||||
.therapy-line-info .line-info-field dd {
|
||||
margin: 0;
|
||||
padding: 14px 16px;
|
||||
line-height: 24px;
|
||||
text-align: left;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-field dt {
|
||||
border-right: 1px solid #ebeef5;
|
||||
background: #fafafa;
|
||||
color: #606266;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-content {
|
||||
padding: 20px 24px;
|
||||
color: #303133;
|
||||
line-height: 1.9;
|
||||
overflow-wrap: anywhere;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-content p {
|
||||
margin: 0 0 12px;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-content img,
|
||||
.therapy-line-info .line-info-content video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-empty {
|
||||
padding: 12px 0;
|
||||
color: #909399;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.therapy-line-info .line-info-fields {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-field + .line-info-field {
|
||||
border-top: 1px solid #ebeef5;
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
.therapy-line-info .line-info-content {
|
||||
padding: 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="报名信息" name="1">
|
||||
<div class="panel panel-default mt20" style="border: none">
|
||||
<div class="panel panel-default" style="border: none">
|
||||
<div class="panel-heading" style="background: #fafafa;border:1px solid #ebeef5;border-bottom: none">
|
||||
<h3 class="panel-title">
|
||||
本人信息
|
||||
|
||||
@@ -504,7 +504,9 @@ layout("/layouts/v4/baseLayout.html"){
|
||||
// 页面加载时获取到正确的菜单
|
||||
const pathname = window.location.pathname
|
||||
if (!pathname.startsWith("/platform/v4/subApp")) {
|
||||
const path = this.getMenuOwnerFullPath()
|
||||
// 普惠疗休养子菜单含 mode 等参数,刷新时统一从模块根菜单恢复侧栏。
|
||||
const path = pathname === "/platform/inclusiveTherapyV3" || pathname.startsWith("/platform/inclusiveTherapyV3/")
|
||||
? "/platform/inclusiveTherapyV3" : this.getMenuOwnerFullPath()
|
||||
this.$axios.post("/platform/sys/user/rootMenuByPath", {pathname: path}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.setAppInfo(res.data)
|
||||
|
||||
@@ -38,13 +38,13 @@ layout("/layouts/platform.html"){
|
||||
<el-input placeholder="请输入工号" clearable v-model="pageForm.loginName" style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属单位">
|
||||
<el-select placeholder="请选择所属单位" v-model="pageForm.unitName" clearable filterable>
|
||||
<el-option v-for="item in unitNameOptions" :key="item" :label="item" :value="item"></el-option>
|
||||
<el-select placeholder="全部" v-model="pageForm.unitName" clearable filterable>
|
||||
<el-option v-for="item in unitNameOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="在职状态">
|
||||
<el-select v-model="pageForm.userState" clearable filterable>
|
||||
<el-option v-for="item in userStateOptions" :label="item" :value="item"></el-option>
|
||||
<el-select placeholder="全部" v-model="pageForm.userState" clearable filterable>
|
||||
<el-option v-for="item in userStateOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<!-- 暂停用人方式筛选,保留查询控件供后续恢复。
|
||||
@@ -55,10 +55,11 @@ layout("/layouts/platform.html"){
|
||||
</search-item>
|
||||
-->
|
||||
<search-item label="人员类型">
|
||||
<el-select v-model="pageForm.personType" clearable filterable>
|
||||
<el-option v-for="item in personTypeOptions" :label="item" :value="item"></el-option>
|
||||
<el-select placeholder="全部" v-model="pageForm.personType" clearable filterable>
|
||||
<el-option v-for="item in personTypeOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<el-button slot="actions" icon="el-icon-refresh-left" @click="resetSearch">重置</el-button>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
@@ -125,6 +126,16 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
resetSearch() {
|
||||
this.$set(this.pageForm, "userName", "")
|
||||
this.$set(this.pageForm, "loginName", "")
|
||||
this.$set(this.pageForm, "unitName", "")
|
||||
this.$set(this.pageForm, "userState", "")
|
||||
this.$set(this.pageForm, "personType", "")
|
||||
this.$set(this.pageForm, "preparedBy", "")
|
||||
this.$set(this.pageForm, "pullTime", (this.pullTimeOptions[0] || {}).pullTime || "")
|
||||
this.doSearch()
|
||||
},
|
||||
pull() {
|
||||
// 拉取未结束时不再打开确认框或发送重复请求。
|
||||
if (this.pullLoading) return
|
||||
@@ -149,6 +160,7 @@ layout("/layouts/platform.html"){
|
||||
.then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.getSearchOptions()
|
||||
this.getPullTimeOptions()
|
||||
this.doSearch()
|
||||
}
|
||||
@@ -162,12 +174,24 @@ layout("/layouts/platform.html"){
|
||||
.catch(() => {})
|
||||
},
|
||||
|
||||
buildSearchOptions(values) {
|
||||
const optionValues = new Set(values.map(value =>
|
||||
value == null || /^(?:null)?$/i.test(value.trim()) ? "__EMPTY__" : value
|
||||
))
|
||||
const hasEmpty = optionValues.delete("__EMPTY__")
|
||||
const options = Array.from(optionValues, value => ({ label: value, value }))
|
||||
if (hasEmpty) {
|
||||
options.push({ label: "空数据", value: "__EMPTY__" })
|
||||
}
|
||||
return options
|
||||
},
|
||||
|
||||
getSearchOptions() {
|
||||
this.$axios.post("/platform/sys/data/user/pull/searchOptions").then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.unitNameOptions = resp.data.unitNames
|
||||
this.userStateOptions = resp.data.userStates
|
||||
this.personTypeOptions = resp.data.personTypes
|
||||
this.unitNameOptions = this.buildSearchOptions(resp.data.unitNames)
|
||||
this.userStateOptions = this.buildSearchOptions(resp.data.userStates)
|
||||
this.personTypeOptions = this.buildSearchOptions(resp.data.personTypes)
|
||||
this.preparedByOptions = resp.data.preparedBys
|
||||
}
|
||||
})
|
||||
@@ -206,6 +230,7 @@ layout("/layouts/platform.html"){
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
this.pullTimeDialogVisible = false
|
||||
this.getSearchOptions()
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="工号">
|
||||
<el-input placeholder="请输入工号" clearable v-model="pageForm.zgh" @keyup.enter.native="doSearch"></el-input>
|
||||
</search-item>
|
||||
<el-button slot="actions" icon="el-icon-refresh-left" :disabled="tableLoading" @click="resetSearch">重置</el-button>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<table-tool :label="'数据中心人员数据(' + tableData.length + '条)'"></table-tool>
|
||||
<el-table :data="tableData" v-loading="tableLoading" empty-text="暂无数据" border>
|
||||
<el-table-column type="index" label="序号" width="70" fixed="left" :index="indexMethod"></el-table-column>
|
||||
<el-table-column v-for="column in columns" :key="column.key" :label="column.label" min-width="160" show-overflow-tooltip>
|
||||
<template slot-scope="{row}">{{formatValue(row[column.key] != null ? row[column.key] : row[column.alias])}}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
pageDataUrl: "/platform/sys/data/user/query/queryData",
|
||||
pageForm: { zgh: "" },
|
||||
columns: [
|
||||
{ key: "ZGH", label: "工号", alias: "ID" },
|
||||
{ key: "XM", label: "姓名", alias: "" },
|
||||
{ key: "XBMC", label: "性别", alias: "XB" },
|
||||
{ key: "SJHM", label: "手机号码", alias: "YDDH" },
|
||||
{ key: "CSRQ", label: "出生日期", alias: "" },
|
||||
{ key: "DQZTMC", label: "在职状态", alias: "DQZT" },
|
||||
{ key: "LXRQ", label: "来校时间", alias: "LXNY" },
|
||||
{ key: "YRFSDM", label: "人员类型", alias: "RYLX" },
|
||||
{ key: "SZDW", label: "单位名称", alias: "" },
|
||||
{ key: "SZDWDM", label: "单位编码", alias: "SZDWH" },
|
||||
{ key: "ZZMMM", label: "政治面貌", alias: "" },
|
||||
{ key: "MZDM", label: "民族", alias: "MZM" },
|
||||
{ key: "ZGXLMC", label: "学历", alias: "" },
|
||||
{ key: "ZGXWMC", label: "学位", alias: "" },
|
||||
{ key: "ZYJSGWLBDMMC", label: "聘岗类型", alias: "" },
|
||||
{ key: "ZYJSZWDMMC", label: "职称", alias: "" },
|
||||
{ key: "BZLBDMMC", label: "编制类别", alias: "" },
|
||||
{ key: "SFSJT", label: "是否双肩挑", alias: "" },
|
||||
{ key: "SFZJLXDM", label: "证件类型", alias: "" },
|
||||
{ key: "SFZJH", label: "证件号码", alias: "" },
|
||||
{ key: "ZGXLDM", label: "最高学历代码", alias: "" },
|
||||
{ key: "XWDM", label: "最高学位代码", alias: "" },
|
||||
{ key: "BZLBDM", label: "编制类别代码", alias: "" },
|
||||
{ key: "ZYJSGWLBDM", label: "聘岗类型代码", alias: "" },
|
||||
{ key: "ZYJSZWDM", label: "专业技术职务代码", alias: "" },
|
||||
{ key: "DQZTDM", label: "当前状态代码", alias: "" }
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
resetSearch() {
|
||||
this.pageForm.zgh = ""
|
||||
this.doSearch()
|
||||
},
|
||||
formatValue(value) {
|
||||
if (value == null) return ""
|
||||
return typeof value === "object" ? JSON.stringify(value) : value
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -42,6 +42,7 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="人员类型">
|
||||
<dict-select v-model="pageForm.personType" code="USER_PERSON_TYPE" style="width: 100%"></dict-select>
|
||||
</search-item>
|
||||
<el-button slot="actions" icon="el-icon-refresh-left" @click="resetSearch">重置</el-button>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
@@ -173,6 +174,14 @@ layout("/layouts/platform.html"){
|
||||
"member-all-change-info": MEMBER_ALL_CHANGE_INFO
|
||||
},
|
||||
methods: {
|
||||
resetSearch() {
|
||||
this.$set(this.pageForm, "userName", "")
|
||||
this.$set(this.pageForm, "loginName", "")
|
||||
this.$set(this.pageForm, "unitId", "")
|
||||
this.$set(this.pageForm, "userState", "")
|
||||
this.$set(this.pageForm, "personType", "")
|
||||
this.doSearch()
|
||||
},
|
||||
// 更新单位数据
|
||||
updateUnits() {
|
||||
if (this.unitUpdateLoading || this.updateLoading) return
|
||||
|
||||
@@ -0,0 +1,257 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
<!--#include("../fixedListLayout.css"){}#-->
|
||||
.fund-log-dialog .el-dialog { width: 94%; max-width: 1800px; height: 86vh; display: flex; flex-direction: column; }
|
||||
.fund-log-dialog .el-dialog__body { padding: 16px 24px 24px; flex: 1; min-height: 0; display: flex; flex-direction: column; }
|
||||
.fund-log-dialog .el-pagination { margin-top: 16px; text-align: right; flex: 0 0 auto; }
|
||||
.fund-edit-dialog .el-dialog { max-width: calc(100vw - 32px); }
|
||||
.fund-edit-dialog .el-dialog__body { padding: 20px 28px; max-height: 65vh; overflow-y: auto; }
|
||||
.fund-edit-dialog .el-dialog__footer { padding: 16px 28px; border-top: 1px solid #ebeef5; }
|
||||
.fund-edit-dialog .el-alert { margin-bottom: 20px; }
|
||||
.fund-edit-section { grid-column: 1 / -1; font-weight: 600; color: #303133; border-bottom: 1px solid #ebeef5; padding-bottom: 10px; }
|
||||
.fund-edit-hint { color: #909399; font-size: 12px; line-height: 20px; }
|
||||
.fund-edit-difference { grid-column: 1 / -1; background: #fdf6ec; color: #b88230; border-radius: 4px; padding: 10px 14px; line-height: 22px; }
|
||||
.fund-edit-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 24px; }
|
||||
.fund-edit-form .el-form-item { margin-bottom: 0; min-width: 0; }
|
||||
.fund-edit-form .el-form-item__label { padding-bottom: 6px; line-height: 24px; }
|
||||
.fund-edit-form .el-select,
|
||||
.fund-edit-form .el-date-editor,
|
||||
.fund-edit-form .el-input-number { width: 100%; }
|
||||
.fund-edit-form .fund-edit-wide { grid-column: 1 / -1; }
|
||||
.fund-edit-amount { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; }
|
||||
.fund-edit-amount .el-input-number { flex: 1; min-width: 200px; }
|
||||
.fund-edit-calculated { display: block; padding: 0 15px; background: #f5f7fa; border: 1px solid #e4e7ed; border-radius: 4px; font-size: 20px; font-weight: 600; color: #303133; }
|
||||
@media (max-width: 600px) {
|
||||
.fund-edit-form { grid-template-columns: minmax(0, 1fr); }
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava"><template>
|
||||
<div class="outlay-union-fixed-list-page">
|
||||
<el-card class="outlay-union-fixed-query-card" shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度"><el-date-picker v-model="query.year" type="year" value-format="yyyy" :clearable="false" @change="doSearch"></el-date-picker></search-item>
|
||||
<search-item label="分工会"><el-select v-model="query.unionId" clearable filterable @change="doSearch"><el-option v-for="u in unionList" :key="u.id" :value="u.id" :label="u.name"></el-option></el-select></search-item>
|
||||
<search-item v-if="tab==='special'" label="专项名称"><el-input v-model="query.projectName" clearable placeholder="请输入专项名称" @keyup.enter.native="doSearch" @clear="doSearch"></el-input></search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card class="outlay-union-fixed-list-card mt10" shadow="never">
|
||||
<el-tabs class="outlay-union-summary-table" v-model="tab" @tab-click="changeTab">
|
||||
<el-tab-pane label="年度基础经费" name="base"></el-tab-pane>
|
||||
<el-tab-pane label="专项经费" name="special"></el-tab-pane>
|
||||
<el-tab-pane label="下拨汇总" name="summary"></el-tab-pane>
|
||||
<el-tab-pane label="历史季度记录" name="history"></el-tab-pane>
|
||||
</el-tabs>
|
||||
<table-tool label="年度经费下拨">
|
||||
<el-button v-if="tab==='base'" size="small" type="primary" @click="generateVisible=true" :disabled="busy">生成年度基础经费</el-button>
|
||||
<el-button v-if="tab==='special'" size="small" type="primary" @click="addSpecial" :disabled="busy">新增专项经费</el-button>
|
||||
<el-button v-if="tab==='base' || tab==='special'" size="small" type="success" @click="batchConfirm" :loading="busy">一键下拨</el-button>
|
||||
<el-button v-if="tab==='summary' || tab==='history'" size="small" type="primary" @click="doExport" :disabled="loading || busy">导出Excel</el-button>
|
||||
</table-tool>
|
||||
<el-table :key="tab" ref="tableRef" :data="rows" :height="tableHeight" v-loading="loading" border row-key="id">
|
||||
<el-table-column v-if="tab!=='summary'" prop="year" label="年度" width="85"></el-table-column>
|
||||
<el-table-column prop="unionName" label="分工会" min-width="170"></el-table-column>
|
||||
<template v-if="tab==='base'">
|
||||
<el-table-column prop="memberCount" label="统计人数" width="100"></el-table-column>
|
||||
<el-table-column prop="standard" label="人均标准(元/年)" width="150"></el-table-column>
|
||||
<el-table-column prop="calculatedMoney" label="计算金额(元)" width="140"></el-table-column>
|
||||
</template>
|
||||
<el-table-column v-if="tab==='special'" prop="projectName" label="专项名称" min-width="150"></el-table-column>
|
||||
<template v-if="tab==='summary'">
|
||||
<el-table-column prop="baseMoney" label="基础经费已下拨(元)" min-width="160"></el-table-column>
|
||||
<el-table-column prop="specialMoney" label="专项经费已下拨(元)" min-width="160"></el-table-column>
|
||||
<el-table-column prop="totalMoney" label="新流程合计下拨(元)" min-width="160"></el-table-column>
|
||||
</template>
|
||||
<template v-else-if="tab==='history'">
|
||||
<el-table-column label="分配项目" min-width="140"><template slot-scope="{row}"><dict-tag :options="dict.type.OUTLAY_QUARTERLY" :value="row.quarterly"></dict-tag></template></el-table-column>
|
||||
<el-table-column prop="allocateHeadMoney" label="分配前额度(元)" min-width="140"></el-table-column>
|
||||
<el-table-column prop="allocateMoney" label="分配金额(元)" min-width="140"></el-table-column>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-table-column prop="allocateMoney" label="实际下拨金额(元)" width="160"></el-table-column>
|
||||
<el-table-column label="状态" width="100"><template slot-scope="{row}">{{Number(row.status)===1?'已下拨':'待下拨'}}</template></el-table-column>
|
||||
<el-table-column prop="remark" label="说明" min-width="150" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="下拨时间" width="165"><template slot-scope="{row}">{{time(row.allocatedAt)}}</template></el-table-column>
|
||||
<el-table-column prop="operatorName" label="操作人" width="100"></el-table-column>
|
||||
<el-table-column label="最后操作时间" width="165"><template slot-scope="{row}">{{time(row.updatedAt)}}</template></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="220"><template slot-scope="{row}">
|
||||
<el-button type="text" :disabled="busy" @click="edit(row)">{{Number(row.status)===1?'调整':'编辑'}}</el-button>
|
||||
<el-button v-if="Number(row.status)===0" type="text" :disabled="busy" @click="confirm(row)">确认下拨</el-button>
|
||||
<el-button type="text" @click="showLogs(row)">操作记录</el-button>
|
||||
</template></el-table-column>
|
||||
</template>
|
||||
</el-table>
|
||||
<div class="el-pagination-container" v-if="tab!=='summary'">
|
||||
<el-pagination :current-page.sync="query.pageNumber" :page-size.sync="query.pageSize" :total="total" layout="total, sizes, prev, pager, next" @current-change="load" @size-change="doSearch"></el-pagination>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
<el-dialog title="生成年度基础经费" :visible.sync="generateVisible" width="550px" :close-on-click-modal="false">
|
||||
<el-alert title="按所选年度、分工会生成;已有记录不覆盖。人数沿用会员统计口径并保存快照,确认下拨前请核对。" type="info" :closable="false"></el-alert>
|
||||
<el-form label-width="130px" class="mt10">
|
||||
<el-form-item label="年度">{{query.year}}</el-form-item>
|
||||
<el-form-item label="分工会">{{selectedUnionName}}</el-form-item>
|
||||
<el-form-item label="人均标准(元/年)"><el-input-number v-model="standard" :min="0" :max="99999999.99" :precision="2"></el-input-number></el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer"><el-button @click="generateVisible=false" :disabled="busy">取消</el-button><el-button type="primary" :loading="busy" @click="generate">生成</el-button></span>
|
||||
</el-dialog>
|
||||
<el-dialog :title="form.status===1?'调整已下拨经费':'编辑经费'" :visible.sync="editVisible" width="860px" class="fund-edit-dialog" top="6vh" :close-on-click-modal="false" :show-close="!busy">
|
||||
<el-alert v-if="form.status===1" title="当前经费已下拨,保存后将按新旧金额差额调整年度预算,请填写调整原因。" type="warning" show-icon :closable="false"></el-alert>
|
||||
<el-form class="fund-edit-form" label-position="top">
|
||||
<div class="fund-edit-section">基础信息 · {{tab==='base'?'年度基础经费':'专项经费'}}</div>
|
||||
<el-form-item label="年度"><el-date-picker v-model="form.year" type="year" value-format="yyyy" :clearable="false" :disabled="!isNew"></el-date-picker></el-form-item>
|
||||
<el-form-item label="分工会"><el-select v-model="form.unionId" filterable :disabled="!isNew"><el-option v-for="u in unionList" :key="u.id" :value="u.id" :label="u.name"></el-option></el-select></el-form-item>
|
||||
<div class="fund-edit-section">金额核算</div>
|
||||
<template v-if="tab==='base'">
|
||||
<el-form-item label="统计人数"><el-input :value="form.memberCount" readonly><template slot="append">人</template></el-input></el-form-item>
|
||||
<el-form-item label="人均标准(元/年)"><el-input-number v-model="form.standard" :min="0" :max="99999999.99" :precision="2" :disabled="form.status===1"></el-input-number></el-form-item>
|
||||
<el-form-item label="计算金额(元)"><span class="fund-edit-calculated">{{calculated}} <small>元</small></span><div class="fund-edit-hint">统计人数 × 人均年度标准</div></el-form-item>
|
||||
</template>
|
||||
<el-form-item v-else label="专项名称" class="fund-edit-wide" required><el-input v-model="form.projectName" maxlength="100" placeholder="如:一会一品、评优奖励"></el-input></el-form-item>
|
||||
<el-form-item label="实际下拨金额(元)" :class="{'fund-edit-wide': tab!=='base'}" required><div class="fund-edit-amount"><el-input-number v-model="form.allocateMoney" :min="0" :max="99999999.99" :precision="2" controls-position="right"></el-input-number><el-button v-if="tab==='base' && form.status===0" type="text" @click="form.allocateMoney=Number(calculated)">使用计算金额</el-button></div></el-form-item>
|
||||
<div v-if="form.status===1 || amountDifference!==0" class="fund-edit-difference">
|
||||
<template v-if="form.status===1">原下拨金额:{{Number(originalAllocateMoney).toFixed(2)}} 元;本次调整:{{amountDifference>0?'+':''}}{{amountDifference.toFixed(2)}} 元。</template>
|
||||
<template v-else>实际下拨金额较计算金额{{amountDifference>0?'增加':'减少'}} {{Math.abs(amountDifference).toFixed(2)}} 元,请填写原因。</template>
|
||||
</div>
|
||||
<el-form-item :label="form.status===1?'调整原因':'说明'" class="fund-edit-wide" :required="remarkRequired"><el-input v-model="form.remark" type="textarea" :rows="3" maxlength="1000" show-word-limit :placeholder="remarkRequired?'请填写本次金额调整的具体原因':'可填写经费用途或其他说明'"></el-input></el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer"><el-button @click="editVisible=false" :disabled="busy">取消</el-button><el-button type="primary" :loading="busy" @click="save">{{form.status===1?'保存调整':'保存'}}</el-button></span>
|
||||
</el-dialog>
|
||||
<el-dialog title="经费操作记录" :visible.sync="logsVisible" width="94%" top="4vh" class="fund-log-dialog">
|
||||
<el-table :data="logs" height="100%" style="flex: 1; min-height: 0;" border v-loading="logsLoading">
|
||||
<el-table-column prop="action" label="操作" width="100"></el-table-column>
|
||||
<el-table-column prop="operatorName" label="操作人" width="100"></el-table-column>
|
||||
<el-table-column label="时间" width="165"><template slot-scope="{row}">{{time(row.createdAt)}}</template></el-table-column>
|
||||
<el-table-column label="操作前" min-width="180"><template slot-scope="{row}">{{snapshot(row.beforeData)}}</template></el-table-column>
|
||||
<el-table-column label="操作后" min-width="180"><template slot-scope="{row}">{{snapshot(row.afterData)}}</template></el-table-column>
|
||||
<el-table-column prop="remark" label="说明" min-width="140"></el-table-column>
|
||||
</el-table>
|
||||
<el-pagination :current-page.sync="logPage" :page-size="10" :total="logTotal" layout="total,prev,pager,next" @current-change="loadLogs"></el-pagination>
|
||||
</el-dialog>
|
||||
</template></guava>
|
||||
</div>
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include("../fixedListLayout.js"){}#-->
|
||||
new Vue({
|
||||
el: '#app', store,
|
||||
mixins: [OUTLAY_UNION_FIXED_LIST_MIXIN],
|
||||
dicts: ['OUTLAY_QUARTERLY'],
|
||||
data() { return {
|
||||
tab: 'base', query: {year: this.$moment().format('YYYY'), unionId: '', projectName: '', pageNumber: 1, pageSize: 20},
|
||||
unionList: [], rows: [], total: 0, loading: false, busy: false, requestSequence: 0,
|
||||
standard: 800, generateVisible: false, editVisible: false, isNew: false, form: {}, originalAllocateMoney: 0,
|
||||
logsVisible: false, logsLoading: false, logs: [], logPage: 1, logTotal: 0, logRecord: null
|
||||
}},
|
||||
computed: {
|
||||
calculated() { return ((this.form.memberCount || 0) * (this.form.standard || 0)).toFixed(2) },
|
||||
amountDifference() {
|
||||
const amount=Number(this.form.allocateMoney)
|
||||
if (!Number.isFinite(amount)) return 0
|
||||
const reference=this.form.status===1?Number(this.originalAllocateMoney):(this.tab==='base'?Number(this.calculated):amount)
|
||||
return Number((amount-reference).toFixed(2))
|
||||
},
|
||||
remarkRequired() { return this.form.status===1 || (this.tab==='base' && this.amountDifference!==0) },
|
||||
selectedUnionName() { const u=this.unionList.find(u=>u.id===this.query.unionId); return u?u.name:'全部分工会' }
|
||||
},
|
||||
methods: {
|
||||
time(value) { return value?this.$moment(Number(value)).format('YYYY-MM-DD HH:mm:ss'):'—' },
|
||||
snapshot(value) {
|
||||
if (!value) return '—'
|
||||
try { const v=JSON.parse(value); return v.year+'年 / '+(v.memberCount==null?(v.projectName || ''):v.memberCount+'人 × '+v.standard+'元,计算 '+v.calculatedMoney+'元')+' / 实际 '+v.allocateMoney+'元 / '+(Number(v.status)===1?'已下拨':'待下拨') }
|
||||
catch(e) { return value }
|
||||
},
|
||||
doExport() {
|
||||
if (!this.query.year) { this.$message.warning('请选择年度'); return }
|
||||
const params='type='+encodeURIComponent(this.tab)+'&year='+encodeURIComponent(this.query.year)+'&unionId='+encodeURIComponent(this.query.unionId || '')
|
||||
window.open('/platform/outlay/outlayManage/unionAllocate/annual/doExport?'+params)
|
||||
},
|
||||
async request(action, data) {
|
||||
const resp=await this.$axios.post('/platform/outlay/outlayManage/unionAllocate/annual/'+action, data)
|
||||
if (resp.code!==0) { this.$message.error(resp.msg || '操作失败'); throw new Error(resp.msg) }
|
||||
return resp
|
||||
},
|
||||
changeTab() {
|
||||
this.rows=[]
|
||||
this.total=0
|
||||
this.doSearch()
|
||||
this.updateOutlayUnionTableHeight()
|
||||
},
|
||||
doSearch() { this.query.pageNumber=1; this.load() },
|
||||
async load() {
|
||||
const sequence=++this.requestSequence
|
||||
this.loading=true
|
||||
try {
|
||||
let resp
|
||||
if (this.tab==='history') resp=await this.$axios.post('/platform/outlay/outlayManage/unionAllocate/pageData', this.query)
|
||||
else resp=await this.request(this.tab==='summary'?'summary':'pageData', Object.assign({},this.query,{type:this.tab}))
|
||||
if (sequence!==this.requestSequence) return
|
||||
if (resp.code===0) { this.rows=this.tab==='summary'?(resp.data || []):(resp.data.list || []); this.total=this.tab==='summary'?0:resp.data.totalCount }
|
||||
} catch(e) { if(sequence===this.requestSequence) this.rows=[] }
|
||||
finally { if(sequence===this.requestSequence) { this.loading=false; this.updateOutlayUnionTableHeight() } }
|
||||
},
|
||||
async generate() {
|
||||
this.busy=true
|
||||
try { const resp=await this.request('generate',Object.assign({},this.query,{standard:this.standard})); this.$message.success(resp.msg); this.generateVisible=false; this.doSearch() }
|
||||
catch(e) {} finally { this.busy=false }
|
||||
},
|
||||
edit(row) {
|
||||
this.isNew=false
|
||||
this.originalAllocateMoney=Number(row.allocateMoney)
|
||||
this.form=Object.assign({},row,{year:String(row.year), status:Number(row.status), allocateMoney:Number(row.allocateMoney)})
|
||||
if (this.tab==='base') Object.assign(this.form,{memberCount:Number(row.memberCount),standard:Number(row.standard)})
|
||||
this.editVisible=true
|
||||
},
|
||||
async addSpecial() {
|
||||
this.busy=true
|
||||
try { const resp=await this.request('newId',{}); this.isNew=true; this.form={id:resp.data,year:this.query.year,unionId:this.query.unionId,projectName:'',allocateMoney:0,remark:'',status:0}; this.editVisible=true }
|
||||
catch(e) {} finally { this.busy=false }
|
||||
},
|
||||
async save() {
|
||||
if (!this.form.year || !this.form.unionId || this.form.allocateMoney==null) { this.$message.warning('请填写年度、分工会和金额'); return }
|
||||
if (this.busy) return
|
||||
if (!Number.isFinite(this.form.allocateMoney) || this.form.allocateMoney<0) { this.$message.warning('请输入有效的下拨金额'); return }
|
||||
if (this.tab==='base' && (!Number.isFinite(this.form.standard) || this.form.standard<0)) { this.$message.warning('请输入有效的人均标准'); return }
|
||||
if (this.remarkRequired && !(this.form.remark || '').trim()) { this.$message.warning('请填写金额调整原因'); return }
|
||||
this.busy=true
|
||||
const payload={type:this.tab,id:this.form.id,year:this.form.year,unionId:this.form.unionId,allocateMoney:this.form.allocateMoney,remark:this.form.remark,version:this.form.version}
|
||||
if (this.tab==='base') payload.standard=this.form.standard
|
||||
else payload.projectName=this.form.projectName
|
||||
try { await this.request('save',payload); this.$message.success('保存成功'); this.editVisible=false; this.doSearch() }
|
||||
catch(e) {} finally { this.busy=false }
|
||||
},
|
||||
async batchConfirm() {
|
||||
if (this.busy) return
|
||||
const params={type:this.tab,year:this.query.year,unionId:this.query.unionId || '',projectName:this.tab==='special'?(this.query.projectName || '').trim():''}
|
||||
const typeName=this.tab==='base'?'年度基础经费':'专项经费'
|
||||
const scope=this.selectedUnionName+(params.projectName?' / 专项名称包含:'+params.projectName:'')
|
||||
if (!params.year) { this.$message.warning('请选择年度'); return }
|
||||
this.busy=true
|
||||
try {
|
||||
await this.$confirm('确认一键下拨【'+params.year+'年 / '+scope+'】的全部待下拨'+typeName+'?范围包含所有分页,已下拨记录自动跳过,请先核对金额及历史下拨记录。','一键下拨',{type:'warning'})
|
||||
const resp=await this.request('batchConfirm',params)
|
||||
this.$message.success(resp.msg)
|
||||
this.load()
|
||||
} catch(e) {} finally { this.busy=false }
|
||||
},
|
||||
async confirm(row) {
|
||||
try { await this.$confirm('确认向【'+row.unionName+'】下拨 '+row.allocateMoney+' 元?此操作将计入年度预算,请核对历史下拨记录。','确认下拨',{type:'warning'}) }
|
||||
catch(e) { return }
|
||||
this.busy=true
|
||||
try { await this.request('confirm',{type:this.tab,id:row.id,version:row.version}); this.$message.success('下拨成功'); this.load() }
|
||||
catch(e) {} finally { this.busy=false }
|
||||
},
|
||||
showLogs(row) { this.logRecord={id:row.id,type:this.tab}; this.logPage=1; this.logsVisible=true; this.loadLogs() },
|
||||
async loadLogs() {
|
||||
this.logsLoading=true
|
||||
try { const resp=await this.request('logs',Object.assign({},this.logRecord,{pageNumber:this.logPage,pageSize:10})); this.logs=resp.data.list || []; this.logTotal=resp.data.totalCount }
|
||||
catch(e) {} finally { this.logsLoading=false }
|
||||
}
|
||||
},
|
||||
created() { this.$businessTool.listUnion().then(data=>{this.unionList=data}); this.load() }
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -61,52 +61,19 @@ layout("/layouts/platform.html"){
|
||||
{{formatMoney(row.beginMoney)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" :label="pageForm.year + '年会费收入'">
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="1-4月会费"
|
||||
prop="feeJanApr"
|
||||
min-width="120">
|
||||
<template v-slot="{row}">
|
||||
{{formatMoney(row.feeJanApr)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="5-8月会费"
|
||||
prop="feeMayAug"
|
||||
min-width="120">
|
||||
<template v-slot="{row}">
|
||||
{{formatMoney(row.feeMayAug)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="9-12月会费"
|
||||
prop="feeSepDec"
|
||||
min-width="120">
|
||||
<template v-slot="{row}">
|
||||
{{formatMoney(row.feeSepDec)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="年度基础经费" prop="baseMoney" min-width="120">
|
||||
<template v-slot="{row}">{{formatMoney(row.baseMoney)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="专项经费" prop="specialMoney" min-width="120">
|
||||
<template v-slot="{row}">{{formatMoney(row.specialMoney)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="合计下拨" prop="incomeMoney" min-width="120">
|
||||
<template v-slot="{row}">{{formatMoney(row.incomeMoney)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="评优奖励"
|
||||
prop="awardMoney"
|
||||
min-width="120">
|
||||
<template v-slot="{row}">
|
||||
{{formatMoney(row.awardMoney)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
header-align="center"
|
||||
label="1-12月支出"
|
||||
label="年度支出"
|
||||
prop="usedMoney"
|
||||
min-width="120">
|
||||
<template v-slot="{row}">
|
||||
@@ -141,19 +108,16 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column align="center" header-align="center" label="年初数" prop="beginMoney" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('beginMoney', row)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="1-4月会费" prop="feeJanApr" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('feeJanApr', row)}}</template>
|
||||
<el-table-column align="center" header-align="center" label="年度基础经费" prop="baseMoney" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('baseMoney', row)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="5-8月会费" prop="feeMayAug" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('feeMayAug', row)}}</template>
|
||||
<el-table-column align="center" header-align="center" label="专项经费" prop="specialMoney" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('specialMoney', row)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="9-12月会费" prop="feeSepDec" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('feeSepDec', row)}}</template>
|
||||
<el-table-column align="center" header-align="center" label="合计下拨" prop="incomeMoney" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('incomeMoney', row)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="评优奖励" prop="awardMoney" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('awardMoney', row)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="本年累计支出" prop="usedMoney" min-width="120">
|
||||
<el-table-column align="center" header-align="center" label="年度支出" prop="usedMoney" min-width="120">
|
||||
<template v-slot="{row}">{{summaryValue('usedMoney', row)}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="经费余额" prop="remainMoney" min-width="120">
|
||||
|
||||
@@ -55,7 +55,7 @@ layout("/layouts/platform.html"){
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item label="证明人">
|
||||
<!-- <el-descriptions-item label="证明人">
|
||||
<el-form-item prop="certifierUserId" label="证明人">
|
||||
<el-select
|
||||
style="width: 100%"
|
||||
@@ -75,7 +75,7 @@ layout("/layouts/platform.html"){
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions-item> -->
|
||||
<el-descriptions-item label="慰问类型">
|
||||
<el-form-item prop="type" label="慰问类型">
|
||||
<el-select v-model="formData.type" @change="typeChange" style="width: 100%"
|
||||
@@ -112,14 +112,14 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="收款账户">
|
||||
<el-descriptions-item label="收款账户" v-if="!['A', 'D'].includes(formData.typeCode)">
|
||||
<el-form-item prop="bankCardNumber" label="收款账户">
|
||||
<el-input maxlength="20" v-model="formData.bankCardNumber" placeholder="请填写收款账户"
|
||||
<el-input maxlength="30" v-model="formData.bankCardNumber" placeholder="请填写银行卡号或对公账户号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="户名">
|
||||
<el-descriptions-item label="户名" v-if="!['A', 'D'].includes(formData.typeCode)">
|
||||
<el-form-item prop="bankUserName" label="户名">
|
||||
<el-input maxlength="20" v-model="formData.bankUserName"
|
||||
placeholder="请填写户名"
|
||||
@@ -127,7 +127,7 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="开户行" >
|
||||
<el-descriptions-item label="开户行" v-if="!['A', 'D'].includes(formData.typeCode)">
|
||||
<el-form-item prop="bankOfDeposit" label="开户行">
|
||||
<el-input maxlength="20" v-model="formData.bankOfDeposit"
|
||||
placeholder="请填写开户行"
|
||||
@@ -173,10 +173,12 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
|
||||
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="3" border>
|
||||
<el-descriptions-item label="申请事由" :span="3">
|
||||
<el-form-item prop="remark" label="申请事由">
|
||||
<el-input maxlength="500" v-model="formData.remark" placeholder="请填写申请事由"
|
||||
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
|
||||
type="textarea" :rows="3" resize="none"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
@@ -219,6 +221,15 @@ layout("/layouts/platform.html"){
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
components: {
|
||||
ElDatePicker: {
|
||||
extends: ELEMENT.DatePicker,
|
||||
mounted() {
|
||||
// 手动输入触发 change 前初始化日期面板,避免 picker 尚未创建。
|
||||
if (!this.picker) this.mountPicker()
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
bizId: GetQueryString("bizId"),
|
||||
@@ -229,7 +240,10 @@ layout("/layouts/platform.html"){
|
||||
payUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
type: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
way: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
money: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
money: [
|
||||
{ required: true, message: "请填写慰问金额", trigger: ["change", "blur"] },
|
||||
{ validator: (rule, value, callback) => callback(this.validateMoney(value) ? undefined : new Error("慰问金额须大于0且不超过10000元,最多两位小数")), trigger: ["change", "blur"] }
|
||||
],
|
||||
occurTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
child: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
hospital: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
@@ -238,14 +252,20 @@ layout("/layouts/platform.html"){
|
||||
hospitalBy: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
deadImmediateFamily: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
remark: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
files: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
files: [{ required: true, type: "array", min: 1, max: 5, message: "请上传1至5个附件", trigger: ["change", "blur"] }],
|
||||
signature: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
handlerUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
certifierUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
bankCardNumber: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
// certifierUserId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
bankCardNumber: [
|
||||
{ required: true, message: "请填写银行卡号或对公账户号", trigger: ["change", "blur"] },
|
||||
{ pattern: /^[0-9]{6,30}$/, message: "收款账户须为6至30位数字(银行卡号或对公账户号)", trigger: ["change", "blur"] }
|
||||
],
|
||||
bankUserName: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
bankOfDeposit: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
thisYearHospitalizationNum: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
thisYearHospitalizationNum: [
|
||||
{ required: true, message: "必填", trigger: ["change", "blur"] },
|
||||
{ type: "integer", min: 0, max: 10000, message: "住院次数须为0至10000的整数", trigger: ["change", "blur"] }
|
||||
],
|
||||
leaveHospitalTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
hospitalizationTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
},
|
||||
@@ -259,6 +279,9 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
validateMoney(value) {
|
||||
return /^(0|[1-9][0-9]*)(\.[0-9]{1,2})?$/.test(String(value)) && Number(value) > 0 && Number(value) <= 10000
|
||||
},
|
||||
createRemoteMethod(options) {
|
||||
return (keyword) => {
|
||||
this.selectQueryUser(keyword, options)
|
||||
|
||||
@@ -43,7 +43,7 @@ const condolenceInfo = {
|
||||
|
||||
<template v-for="task in doneTasks">
|
||||
<div class="mt10">
|
||||
<div class="process-title">{{ task.displayName }}</div>
|
||||
<div class="process-title">{{ ({'分工会审核':'一级审核','校工会预审':'二级审核','校工会审核':'三级审核'}[task.displayName] || task.displayName) }}</div>
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id"
|
||||
v-if="task.ext.isFirstTaskNode">
|
||||
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName
|
||||
@@ -65,6 +65,9 @@ const condolenceInfo = {
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||
:value="task.ext.submitType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审批签字" :span="3" v-if="task.taskFormData && task.taskFormData.sign">
|
||||
<el-image :src="task.taskFormData.sign" style="height: 80px" fit="contain"></el-image>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{
|
||||
task.taskFormData.opinion }}
|
||||
</el-descriptions-item>
|
||||
|
||||
@@ -37,12 +37,12 @@ const basicForm = {
|
||||
<el-radio-button :label="false">不上传</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>-->
|
||||
<!-- <el-form-item label="是否上传附件" prop="isUploadFile">-->
|
||||
<!-- <el-radio-group v-model="formData.isUploadFile">-->
|
||||
<!-- <el-radio-button :label="true">是</el-radio-button>-->
|
||||
<!-- <el-radio-button :label="false">否</el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="是否上传附件" prop="isUploadFile">
|
||||
<el-radio-group v-model="formData.isUploadFile">
|
||||
<el-radio-button :label="true">是</el-radio-button>
|
||||
<el-radio-button :label="false">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="上传附件说明" prop="uploadFileDesc" v-if="formData.isUploadFile">
|
||||
<el-input v-model="formData.uploadFileDesc" maxlength="50" clearable placeholder="请填写上传附件说明"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
@change="modeChange"
|
||||
:disabled="formData.id" style="width: 100%">
|
||||
<el-option label="本人申请" value="1"></el-option>
|
||||
<el-option v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_CHAIRMAN, BRANCH_UNION_OPERATOR')"
|
||||
<el-option v-if="$auth.hasRoleOr('BRANCH_UNION_CHAIRMAN')"
|
||||
label="替他人申请" value="2"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -263,6 +263,9 @@
|
||||
methods: {
|
||||
// 查询受助人
|
||||
queryRecipients(key) {
|
||||
if (String(this.formData.mode) !== "2" || !this.$auth.hasRoleOr('BRANCH_UNION_CHAIRMAN')) {
|
||||
return
|
||||
}
|
||||
this.$axios.get("/platform/difficultHelp/apply/queryRecipients", {
|
||||
key
|
||||
}).then(res => {
|
||||
@@ -417,10 +420,10 @@
|
||||
this.$set(this.formData, 'proxyLoginName', user.loginname)
|
||||
this.$set(this.formData, 'mode', "1")
|
||||
this.$set(this.formData, 'sex', user.sex)
|
||||
this.$set(this.formData, 'unitId', user.unit.id)
|
||||
this.$set(this.formData, 'unitName', user.unit.name)
|
||||
this.$set(this.formData, 'unionId', user.union.id)
|
||||
this.$set(this.formData, 'unionName', user.union.name)
|
||||
this.$set(this.formData, 'unitId', (user.unit || {}).id || user.unitId || null)
|
||||
this.$set(this.formData, 'unitName', (user.unit || {}).name || '')
|
||||
this.$set(this.formData, 'unionId', (user.union || {}).id || (user.unit || {}).unionId || null)
|
||||
this.$set(this.formData, 'unionName', (user.union || {}).name || '')
|
||||
this.$set(this.formData, 'monthlyIncome', null)
|
||||
this.$set(this.formData, 'birthday', user.birthday)
|
||||
this.$set(this.formData, 'mobile', user.mobile)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app">
|
||||
<el-card shadow="never" v-if="isShow">
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never" v-if="pageLoading" v-loading="pageLoading" element-loading-text="正在加载申请信息" style="min-height: 300px"></el-card>
|
||||
<el-card shadow="never" v-else-if="isShow">
|
||||
<snaker-start slot="header" label="困难帮扶申请" define_key="KNBF"></snaker-start>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-descriptions :column="3" border>
|
||||
@@ -15,7 +16,7 @@ layout("/layouts/platform.html"){
|
||||
<el-form-item prop="mode">
|
||||
<el-select v-model="formData.mode" placeholder="申请模式" @change="modeChange" style="width: 100%">
|
||||
<el-option label="本人申请" value="1"></el-option>
|
||||
<el-option v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_CHAIRMAN, BRANCH_UNION_OPERATOR')"
|
||||
<el-option v-if="canApplyForOthers"
|
||||
label="替他人申请" value="2"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -26,7 +27,7 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="受补助人">
|
||||
<el-form-item prop="userName">
|
||||
<el-form-item prop="userId">
|
||||
<template v-if="formData.mode == 2">
|
||||
<el-select :remote-method="queryRecipients"
|
||||
@change="userChange" clearable filterable
|
||||
@@ -51,7 +52,7 @@ layout("/layouts/platform.html"){
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号" :span="2">
|
||||
<el-form-item prop="idCard">
|
||||
<el-input maxlength="20" clearable placeholder="请填写身份证号"
|
||||
<el-input clearable placeholder="请填写身份证号"
|
||||
v-model="formData.idCard" maxlength="18"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
@@ -84,7 +85,7 @@ layout("/layouts/platform.html"){
|
||||
<el-descriptions-item label="手机号码">
|
||||
<el-form-item prop="mobile">
|
||||
<el-input maxlength="11" clearable placeholder="请填写手机号码"
|
||||
v-model="formData.mobile" maxlength="11"></el-input>
|
||||
v-model="formData.mobile"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭年总收入(万元)">
|
||||
@@ -103,6 +104,7 @@ layout("/layouts/platform.html"){
|
||||
<el-input-number
|
||||
v-model="formData.homeNumber"
|
||||
:min="1"
|
||||
:precision="0"
|
||||
:step="1"
|
||||
style="width: 100%"
|
||||
placeholder="请填写家庭人数">
|
||||
@@ -113,7 +115,7 @@ layout("/layouts/platform.html"){
|
||||
<el-form-item prop="homeAddress">
|
||||
<el-input clearable
|
||||
style="width: 100%"
|
||||
v-model="formData.homeAddress"
|
||||
v-model="formData.homeAddress" maxlength="200"
|
||||
placeholder="请填写家庭住址">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
@@ -132,7 +134,7 @@ layout("/layouts/platform.html"){
|
||||
<!-- </el-descriptions-item>-->
|
||||
<el-descriptions-item label="银行卡号" >
|
||||
<el-form-item prop="bankCardNum">
|
||||
<el-input maxlength="20" clearable placeholder="请填写银行卡号"
|
||||
<el-input maxlength="19" clearable placeholder="请填写银行卡号"
|
||||
v-model="formData.bankCardNum"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
@@ -151,7 +153,7 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="生活致困原因" :span="3">
|
||||
<el-descriptions-item label="生活致困原因" :span="3">
|
||||
<el-form-item prop="reason">
|
||||
<el-input maxlength="500" :autosize="{ minRows: 5, maxRows: 10}"
|
||||
placeholder="请简述生活致困原因"
|
||||
@@ -193,8 +195,8 @@ layout("/layouts/platform.html"){
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'familyList.'+$index+'.relation'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input v-model="row.relation" placeholder="请填写与本人关系" clearable></el-input>
|
||||
:rules="textRules('与本人关系', 50)">
|
||||
<el-input v-model="row.relation" maxlength="50" placeholder="请填写与本人关系" clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -202,8 +204,8 @@ layout("/layouts/platform.html"){
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'familyList.'+$index+'.name'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input v-model="row.name" placeholder="请填写姓名" clearable></el-input>
|
||||
:rules="textRules('姓名', 100)">
|
||||
<el-input v-model="row.name" maxlength="100" placeholder="请填写姓名" clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -211,9 +213,9 @@ layout("/layouts/platform.html"){
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'familyList.'+$index+'.age'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
:rules="[{required:true,type:'integer',min:1,max:100,message:'年龄须为1至100的整数',trigger:['change','blur']}]">
|
||||
<el-input-number v-model="row.age" placeholder="年龄" :min="1"
|
||||
:max="100" :step="1" style="width: 100%" clearable></el-input-number>
|
||||
:max="100" :precision="0" :step="1" style="width: 100%" clearable></el-input-number>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -221,8 +223,8 @@ layout("/layouts/platform.html"){
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'familyList.'+$index+'.homeUnit'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input v-model="row.homeUnit" placeholder="请填写工作单位" clearable></el-input>
|
||||
:rules="textRules('工作单位', 200)">
|
||||
<el-input v-model="row.homeUnit" maxlength="200" placeholder="请填写工作单位" clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -230,9 +232,9 @@ layout("/layouts/platform.html"){
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'familyList.'+$index+'.yearIncome'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
:rules="[{validator:validateIncome,required:true,trigger:['change','blur']}]">
|
||||
<el-input-number v-model="row.yearIncome" placeholder="年收入"
|
||||
:min="0" :step="1" style="width: 100%" clearable></el-input-number>
|
||||
:min="0" :precision="2" :step="1" style="width: 100%" clearable></el-input-number>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -240,8 +242,8 @@ layout("/layouts/platform.html"){
|
||||
<template slot-scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'familyList.'+$index+'.remarks'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input v-model="row.remarks" placeholder="请填写备注" clearable></el-input>
|
||||
:rules="textRules('备注', 500)">
|
||||
<el-input v-model="row.remarks" maxlength="500" placeholder="请填写备注" clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -292,7 +294,7 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
<div v-else>
|
||||
<el-card class="box-card" style="height: 92vh" shadow="never">
|
||||
<el-result icon="warning" title="温馨提醒" subTitle="">
|
||||
<el-result icon="warning" title="温馨提醒" sub-title="">
|
||||
<template slot="extra">
|
||||
<span v-if="blockMessage">{{blockMessage}}</span>
|
||||
<span v-else>抱歉,当前时间不能申请,可申请时间为{{time}}。</span>
|
||||
@@ -312,6 +314,7 @@ layout("/layouts/platform.html"){
|
||||
bizId: GetQueryString("bizId"),
|
||||
taskId: GetQueryString("taskId"),
|
||||
isShow: false,
|
||||
pageLoading: true,
|
||||
time: '',
|
||||
blockMessage: '',
|
||||
formData: {
|
||||
@@ -320,30 +323,55 @@ layout("/layouts/platform.html"){
|
||||
applyCount: '1',
|
||||
},
|
||||
formRules: {
|
||||
proxyUserName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
proxyLoginName: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
sex: [{required: true, message: '请填写性别', trigger: ['blur', 'change']}],
|
||||
userName: [{required: true, message: '请填写受补助人', trigger: ['blur', 'change']}],
|
||||
unitName: [{required: true, message: '请填写所属单位', trigger: ['blur', 'change']}],
|
||||
proxyUserName: this.textRules('填写人姓名', 100),
|
||||
proxyLoginName: this.textRules('填写人工号', 100),
|
||||
mode: [{required: true, type: 'enum', enum: ['1', '2'], message: '请选择申请模式', trigger: ['blur', 'change']}],
|
||||
sex: [{required: true, type: 'enum', enum: ['男', '女'], message: '请选择性别', trigger: ['blur', 'change']}],
|
||||
userId: [{required: true, message: '请选择受补助人', trigger: ['blur', 'change']}],
|
||||
unitName: this.textRules('所属单位', 500),
|
||||
unionName: [{required: true, message: '请填写所属工会', trigger: ['blur', 'change']}],
|
||||
homeAddress: [{required: true, message: '请填写家庭住址', trigger: ['blur', 'change']}],
|
||||
mobile: [{required: true, message: '请填写手机号码', trigger: ['blur', 'change']}],
|
||||
idCard: [{required: true, message: '请填写身份证号', trigger: ['blur', 'change']}],
|
||||
bankCardNum: [{required: true, message: '请填写收款账户卡号', trigger: ['blur', 'change']}],
|
||||
homeAddress: this.textRules('家庭住址', 200),
|
||||
mobile: [
|
||||
{required: true, message: '请填写手机号码', trigger: ['blur', 'change']},
|
||||
{pattern: /^1[3-9]\d{9}$/, message: '请输入正确的11位手机号码', trigger: ['blur', 'change']}
|
||||
],
|
||||
idCard: [{validator: (rule, value, callback) => {
|
||||
const result = this.isValidIdCard(value || '')
|
||||
callback(result.status === 0 ? new Error(result.msg) : undefined)
|
||||
}, required: true, trigger: ['blur', 'change']}],
|
||||
bankCardNum: [{validator: (rule, value, callback) => {
|
||||
const result = this.validateCard(value || '')
|
||||
callback(result.status === 0 ? new Error(result.msg) : undefined)
|
||||
}, required: true, trigger: ['blur', 'change']}],
|
||||
bankUserName: [{required: true, message: '请填写户名', trigger: ['blur', 'change']}],
|
||||
bankOfDeposit: [{required: true, message: '请填写开户行', trigger: ['blur', 'change']}],
|
||||
position: [{required: true, message: '请填写职务', trigger: ['blur', 'change']}],
|
||||
officialCapacity: [{required: true, message: '请填写职称', trigger: ['blur', 'change']}],
|
||||
subsidyStandards: [{required: true, message: '请选择困难类型', trigger: ['blur', 'change']}],
|
||||
reason: [{required: true, message: '请填写申请原因', trigger: ['blur', 'change']}],
|
||||
sign: [{required: true, message: '请签字', trigger: ['blur', 'change']}]
|
||||
bankOfDeposit: this.textRules('开户行', 30),
|
||||
position: this.textRules('职务', 20),
|
||||
officialCapacity: this.textRules('职称', 20),
|
||||
homeIncome: [{validator: this.validateIncome, required: true, trigger: ['blur', 'change']}],
|
||||
homeNumber: [{required: true, type: 'integer', min: 1, message: '家庭人数须为大于零的整数', trigger: ['blur', 'change']}],
|
||||
subsidy: this.textRules('补助类型', 500),
|
||||
subsidyStandards: this.textRules('困难类型', 500),
|
||||
reason: this.textRules('生活致困原因', 500),
|
||||
sign: [{required: true, whitespace: true, message: '请完成签字', trigger: ['blur', 'change']}],
|
||||
},
|
||||
|
||||
// 替他人申请相关
|
||||
subsidizedList: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
canApplyForOthers() {
|
||||
return this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_CHAIRMAN, BRANCH_UNION_OPERATOR')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
textRules(label, max) {
|
||||
return [{required: true, whitespace: true, max, message: '请填写' + label + ',且不超过' + max + '个字符', trigger: ['blur', 'change']}]
|
||||
},
|
||||
validateIncome(rule, value, callback) {
|
||||
const valid = typeof value === 'number' && Number.isFinite(value) && value >= 0 && /^\d+(\.\d{1,2})?$/.test(String(value))
|
||||
callback(valid ? undefined : new Error('收入须为不小于零的数字,最多保留两位小数'))
|
||||
},
|
||||
// 保存
|
||||
onSave() {
|
||||
this.$confirm("您确定保存吗?", "提示", {
|
||||
@@ -362,24 +390,13 @@ layout("/layouts/platform.html"){
|
||||
|
||||
// 提交
|
||||
async onSubmit() {
|
||||
this.$refs.formRef.validate().then((valid) => {
|
||||
this.$refs.formRef.validate().catch(() => false).then((valid) => {
|
||||
if (valid) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const result = this.isValidIdCard(this.formData.idCard)
|
||||
if (result.status === 0) {
|
||||
this.$message.warning(result.msg)
|
||||
return
|
||||
}
|
||||
const bankRes = this.validateCard(this.formData.bankCardNum)
|
||||
if (bankRes.status === 0) {
|
||||
this.$message.warning(bankRes.msg)
|
||||
return;
|
||||
}
|
||||
|
||||
this.$axios.post('/platform/difficultHelp/apply/submit', {
|
||||
data: JSON.stringify(this.formData)
|
||||
}).then(res => {
|
||||
@@ -394,7 +411,7 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
|
||||
async onFinishTask() {
|
||||
this.$refs.formRef.validate().then((valid) => {
|
||||
this.$refs.formRef.validate().catch(() => false).then((valid) => {
|
||||
if (valid) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
@@ -402,17 +419,6 @@ layout("/layouts/platform.html"){
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
|
||||
const result = this.isValidIdCard(this.formData.idCard)
|
||||
if (result.status === 0) {
|
||||
this.$message.warning(result.msg)
|
||||
return
|
||||
}
|
||||
const bankRes = this.validateCard(this.formData.bankCardNum)
|
||||
if (bankRes.status === 0) {
|
||||
this.$message.warning(bankRes.msg)
|
||||
return;
|
||||
}
|
||||
|
||||
this.$axios.post('/platform/difficultHelp/apply/submitAgain', {
|
||||
data: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
@@ -429,6 +435,9 @@ layout("/layouts/platform.html"){
|
||||
|
||||
// 查询受助人
|
||||
queryRecipients(key) {
|
||||
if (String(this.formData.mode) !== "2" || !this.canApplyForOthers) {
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/difficultHelp/apply/queryRecipients", {
|
||||
key
|
||||
}).then(res => {
|
||||
@@ -438,10 +447,12 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
findOne(id) {
|
||||
this.$axios.post('/platform/difficultHelp/mine/findOne', { id }).then(res => {
|
||||
return this.$axios.post('/platform/difficultHelp/mine/findOne', { id }).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
this.queryRecipients(res.data.loginName)
|
||||
} else {
|
||||
throw new Error(res.msg || '申请信息加载失败,请刷新页面重试')
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -459,6 +470,9 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.formData, 'birthday', user.birthday)
|
||||
this.$set(this.formData, 'mobile', user.mobile)
|
||||
this.$set(this.formData, 'idCard', user.idCard)
|
||||
this.$set(this.formData, 'position', user.position || '')
|
||||
this.$set(this.formData, 'officialCapacity', user.officialCapacity || '')
|
||||
this.$set(this.formData, 'homeAddress', user.homeAddress || '')
|
||||
|
||||
} else {
|
||||
this.$set(this.formData, 'userId', null)
|
||||
@@ -471,6 +485,10 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.formData, 'unionName', null)
|
||||
this.$set(this.formData, 'birthday', null)
|
||||
this.$set(this.formData, 'mobile', null)
|
||||
this.$set(this.formData, 'idCard', null)
|
||||
this.$set(this.formData, 'position', '')
|
||||
this.$set(this.formData, 'officialCapacity', '')
|
||||
this.$set(this.formData, 'homeAddress', '')
|
||||
}
|
||||
},
|
||||
// 申请模式
|
||||
@@ -486,15 +504,17 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.formData, 'proxyLoginName', user.loginname)
|
||||
this.$set(this.formData, 'mode', "1")
|
||||
this.$set(this.formData, 'sex', user.sex)
|
||||
this.$set(this.formData, 'unitId', user.unit.id)
|
||||
this.$set(this.formData, 'unitName', user.unit.name)
|
||||
this.$set(this.formData, 'unionId', user.union.id)
|
||||
this.$set(this.formData, 'unionName', user.union.name)
|
||||
this.$set(this.formData, 'unitId', (user.unit || {}).id || user.unitId || null)
|
||||
this.$set(this.formData, 'unitName', (user.unit || {}).name || '')
|
||||
this.$set(this.formData, 'unionId', (user.union || {}).id || (user.unit || {}).unionId || null)
|
||||
this.$set(this.formData, 'unionName', (user.union || {}).name || '')
|
||||
this.$set(this.formData, 'yearIncome', null)
|
||||
this.$set(this.formData, 'birthday', user.birthday)
|
||||
this.$set(this.formData, 'idCard', user.idCard)
|
||||
this.$set(this.formData, 'mobile', user.mobile)
|
||||
this.$set(this.formData, 'homeAddress', user.homeAddress)
|
||||
this.$set(this.formData, 'position', user.position || '')
|
||||
this.$set(this.formData, 'officialCapacity', user.professionalTitle || '')
|
||||
this.$set(this.formData, 'subsidyStandards', null)
|
||||
this.$set(this.formData, 'reason', null)
|
||||
this.$set(this.formData, 'remarks', null)
|
||||
@@ -602,10 +622,10 @@ layout("/layouts/platform.html"){
|
||||
return { status: 200, msg: "卡号有效。" };
|
||||
},
|
||||
async getIsCanPlay() {
|
||||
this.$axios.post('/platform/difficultHelp/apply/getIsCanPlay').then(res => {
|
||||
return this.$axios.post('/platform/difficultHelp/apply/getIsCanPlay').then(res => {
|
||||
if (res.code === 0) {
|
||||
// 新增申请进入页面时,优先校验当前登录人本年度是否已经申请过,已申请则直接拦截新增。
|
||||
if (!this.bizId && res.data.hasCurrentYearApply) {
|
||||
if (!this.bizId && res.data.hasCurrentYearApply && !this.canApplyForOthers) {
|
||||
this.isShow = false
|
||||
this.$set(this, 'blockMessage', '抱歉,您本年度已申请困难帮扶,不能重复申请。')
|
||||
} else {
|
||||
@@ -616,16 +636,25 @@ layout("/layouts/platform.html"){
|
||||
if (res.data.applyCount !== null && res.data.applyCount !== undefined && res.data.applyCount !== 0) {
|
||||
this.$set(this.formData, 'applyCount', res.data.applyCount)
|
||||
}
|
||||
} else {
|
||||
throw new Error(res.msg || '申请资格加载失败,请刷新页面重试')
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.getIsCanPlay();
|
||||
if (this.bizId) {
|
||||
this.findOne(this.bizId)
|
||||
} else {
|
||||
this.modeChange("1")
|
||||
try {
|
||||
await this.getIsCanPlay();
|
||||
if (this.bizId) {
|
||||
await this.findOne(this.bizId)
|
||||
} else {
|
||||
this.modeChange("1")
|
||||
}
|
||||
} catch (error) {
|
||||
this.isShow = false
|
||||
this.blockMessage = error.message || '申请信息加载失败,请刷新页面重试'
|
||||
} finally {
|
||||
this.pageLoading = false
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -24,6 +24,12 @@ const INFO = {
|
||||
|
||||
<el-descriptions-item label="申请次数" >{{ 1 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="家庭住址" :span="2">{{ viewData.homeAddress }}</el-descriptions-item>
|
||||
<el-descriptions-item label="补助类型">
|
||||
<dict-tag :options="dict.type.DIFFICULT_SUBSIDY_TYPE" :value="viewData.subsidy"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="困难类型">
|
||||
<dict-tag :options="dict.type.DIFFICULT_TYPE" :value="viewData.subsidyStandards"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="家庭主要成员(在一起生活的直系亲属)经济收入情况" :span="3">
|
||||
@@ -64,7 +70,7 @@ const INFO = {
|
||||
|
||||
<template v-for="task in doneTasks">
|
||||
<div class="task-panel mt10">
|
||||
<div class="process-title">{{ task.displayName }}</div>
|
||||
<div class="process-title">{{ ({'分工会审核':'一级审核','二级党组织审核':'二级审核','校工会审核':'三级审核'}[task.displayName] || task.displayName) }}</div>
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id"
|
||||
v-if="task.ext.isFirstTaskNode">
|
||||
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName
|
||||
@@ -106,7 +112,7 @@ const INFO = {
|
||||
</div>
|
||||
`,
|
||||
store,
|
||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE", "DIFFICULT_SUBSIDY_TYPE", "DIFFICULT_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
viewData: {},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div id="difficult_help_branch_union_approval_form">
|
||||
<div id="difficult_help_first_approval_form">
|
||||
<el-form :model="formData" ref="formRef" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: "#difficult_help_branch_union_approval_form",
|
||||
el: "#difficult_help_first_approval_form",
|
||||
data() {
|
||||
return {
|
||||
businessId: GetQueryString("businessId"),
|
||||
@@ -64,16 +64,16 @@ layout("/layouts/platform.html"){
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<el-table-column label="操作" fixed="right" width="300px" class-name="difficult-help-mine-actions">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)" size="mini" type="primary">
|
||||
<el-button v-if="row.createdBy === $store.state.user.id && (row.taskKey === 'startTask' || !row.instanceId)" @click="onEdit(row)" size="mini" type="primary">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
<el-button v-if="row.createdBy === $store.state.user.id && row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
<el-button @click="doExportApply(row)" size="mini" type="primary">打印</el-button>
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||
<el-button v-if="row.createdBy === $store.state.user.id && row.instanceState == 20" @click="doExportApply(row)" size="mini" type="primary">导出</el-button>
|
||||
<el-button v-if="row.createdBy === $store.state.user.id && (row.taskKey === 'startTask' || !row.instanceId)" @click="onDelete(row.id)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -87,6 +87,18 @@ layout("/layouts/platform.html"){
|
||||
|
||||
</div>
|
||||
|
||||
<style nonce="${cspNonce!}">
|
||||
#app .difficult-help-mine-actions .cell {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
}
|
||||
#app .difficult-help-mine-actions .cell > .el-button {
|
||||
margin-left: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include("../common/info.js"){}#-->
|
||||
|
||||
@@ -165,11 +177,11 @@ layout("/layouts/platform.html"){
|
||||
if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')) {
|
||||
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||
} else {
|
||||
this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id)
|
||||
this.units = await this.$businessTool.listUnit((this.$store.state.user.union || {}).id || this.pageForm.unionId)
|
||||
}
|
||||
},
|
||||
doExportApply(row) {
|
||||
this.$downLoad('/platform/difficultHelp/reading/doExportApply?id=' + row.id + '&print=true')
|
||||
this.$downLoad('/platform/difficultHelp/reading/doExportApply?id=' + row.id + '&print=false')
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
@@ -177,7 +189,7 @@ layout("/layouts/platform.html"){
|
||||
if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')) {
|
||||
this.unions = await this.$businessTool.listUnion()
|
||||
} else {
|
||||
this.unions = await this.$businessTool.listUnion(this.$store.state.user.union.id)
|
||||
this.unions = await this.$businessTool.listUnion((this.$store.state.user.union || {}).id)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div id="difficult_help_branch_union_approval_form">
|
||||
<div id="difficult_help_second_approval_form">
|
||||
<el-form :model="formData" ref="formRef" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: "#difficult_help_branch_union_approval_form",
|
||||
el: "#difficult_help_second_approval_form",
|
||||
data() {
|
||||
return {
|
||||
businessId: GetQueryString("businessId"),
|
||||
@@ -1,4 +1,4 @@
|
||||
<div id="difficult_help_school_union_approval_form">
|
||||
<div id="difficult_help_third_approval_form">
|
||||
<el-form :model="formData" ref="formRef" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-form-item label="审核金额" prop="tf_money" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input-number placeholder="请输入金额" v-model="formData.tf_money"></el-input-number>
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: "#difficult_help_school_union_approval_form",
|
||||
el: "#difficult_help_third_approval_form",
|
||||
data() {
|
||||
return {
|
||||
businessId: GetQueryString("businessId"),
|
||||
@@ -256,7 +256,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
approveSingleItem(item) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$axios.post("/platform/difficultHelp/schoolUnionApproval/save", {
|
||||
this.$axios.post("/platform/difficultHelp/thirdApproval/save", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
id: item.id
|
||||
@@ -301,7 +301,7 @@ layout("/layouts/platform.html"){
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/difficultHelp/schoolUnionApproval/save", {
|
||||
this.$axios.post("/platform/difficultHelp/thirdApproval/save", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
})
|
||||
@@ -381,7 +381,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</guava>
|
||||
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="提示"
|
||||
:visible.sync="dialogVisible"
|
||||
width="50%">
|
||||
@@ -418,7 +418,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="修改信息"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -548,7 +548,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
mixins: [therapyTableMixins],
|
||||
data() {
|
||||
return {
|
||||
unionDisabled: false,
|
||||
|
||||
@@ -290,7 +290,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</guava>
|
||||
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="提示"
|
||||
:visible.sync="dialogVisible"
|
||||
width="50%">
|
||||
@@ -327,7 +327,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="修改信息"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -434,7 +434,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
mixins: [therapyTableMixins],
|
||||
data() {
|
||||
return {
|
||||
unionDisabled: false,
|
||||
|
||||
@@ -375,7 +375,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="提示"
|
||||
:visible.sync="dialogVisible"
|
||||
width="50%">
|
||||
@@ -412,7 +412,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="修改信息"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -541,7 +541,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
mixins: [therapyTableMixins],
|
||||
data() {
|
||||
return {
|
||||
unionDisabled: false,
|
||||
|
||||
@@ -347,7 +347,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<base-info ref="viewBaseInfo"></base-info>
|
||||
</template>
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="目的地导入"
|
||||
:visible.sync="importVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -398,7 +398,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
mixins: [therapyTableMixins],
|
||||
components: {
|
||||
'base-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/BaseManageInfo.vue')
|
||||
},
|
||||
|
||||
@@ -14,6 +14,42 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
.el-radio {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#app .search .line-year-range-input {
|
||||
width: 230px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.line-year-range-panel .year-range-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.line-year-range-panel .year-range-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.line-year-range-panel .year-range-grid .el-button {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.line-year-range-panel .year-range-grid .in-range {
|
||||
color: var(--color-primary, #409eff);
|
||||
background: #ecf5ff;
|
||||
}
|
||||
|
||||
.line-year-range-panel .year-range-footer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 12px;
|
||||
color: #909399;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
@@ -22,37 +58,32 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年度范围:</div>
|
||||
<div class="search-item-option" style="display:flex;align-items:center;gap:10px">
|
||||
<el-date-picker
|
||||
v-model="pageForm.startYear"
|
||||
type="year"
|
||||
class="picker-year"
|
||||
format="yyyy"
|
||||
style="flex:1;width:0;min-width:0"
|
||||
value-format="yyyy"
|
||||
@change="handleChangeYear"
|
||||
>
|
||||
</el-date-picker>
|
||||
<span style="flex-shrink:0">至</span>
|
||||
<el-date-picker
|
||||
v-model="pageForm.endYear"
|
||||
type="year"
|
||||
class="picker-year"
|
||||
format="yyyy"
|
||||
style="flex:1;width:0;min-width:0"
|
||||
value-format="yyyy"
|
||||
@change="handleChangeYear"
|
||||
>
|
||||
</el-date-picker>
|
||||
|
||||
<!--<el-date-picker
|
||||
style="width: 100%"
|
||||
@change="doSearch"
|
||||
placeholder="选择年度"
|
||||
type="year"
|
||||
v-model="pageForm.year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>-->
|
||||
<div class="search-item-option">
|
||||
<el-popover v-model="yearRangeVisible" placement="bottom-start" trigger="click"
|
||||
width="320" popper-class="line-year-range-panel" @show="openYearRange">
|
||||
<div class="year-range-header">
|
||||
<el-button type="text" icon="el-icon-d-arrow-left" aria-label="前十年"
|
||||
@click="yearRangeDecade -= 10"></el-button>
|
||||
<span>{{yearRangeDecade}} - {{yearRangeDecade + 11}}</span>
|
||||
<el-button type="text" icon="el-icon-d-arrow-right" aria-label="后十年"
|
||||
@click="yearRangeDecade += 10"></el-button>
|
||||
</div>
|
||||
<div class="year-range-grid">
|
||||
<el-button v-for="offset in 12" :key="yearRangeDecade + offset - 1" size="small"
|
||||
:type="yearRangeStart === yearRangeDecade + offset - 1 ? 'primary' : 'default'"
|
||||
:class="{'in-range': !yearRangeStart && pageForm.startYear && pageForm.endYear && yearRangeDecade + offset - 1 >= Number(pageForm.startYear) && yearRangeDecade + offset - 1 <= Number(pageForm.endYear)}"
|
||||
@click="selectRangeYear(yearRangeDecade + offset - 1)">
|
||||
{{yearRangeDecade + offset - 1}}
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="year-range-footer">
|
||||
<span>{{yearRangeStart ? '已选 ' + yearRangeStart + ',请选择结束年份' : '请选择开始年份'}}</span>
|
||||
<el-button type="text" @click="clearYearRange">清空</el-button>
|
||||
</div>
|
||||
<el-input slot="reference" class="line-year-range-input" readonly
|
||||
prefix-icon="el-icon-date" placeholder="开始年份 至 结束年份"
|
||||
:value="pageForm.startYear || pageForm.endYear ? (pageForm.startYear || '开始年份') + ' 至 ' + (pageForm.endYear || '结束年份') : ''"></el-input>
|
||||
</el-popover>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
@@ -483,7 +514,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<line-info ref="viewLineInfo"></line-info>
|
||||
</template>
|
||||
|
||||
<el-dialog :close-on-click-modal="false"
|
||||
<el-dialog :append-to-body="true" :close-on-click-modal="false"
|
||||
:visible.sync="lineUnionSetTimeDialog"
|
||||
title="查看详情"
|
||||
top="50px"
|
||||
@@ -499,7 +530,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</el-dialog>
|
||||
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="路线导入"
|
||||
:visible.sync="importVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -549,7 +580,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="导入"
|
||||
:visible.sync="lineImportVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -606,7 +637,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
mixins: [therapyTableMixins],
|
||||
components: {
|
||||
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
|
||||
},
|
||||
@@ -658,6 +689,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}
|
||||
|
||||
return {
|
||||
yearRangeVisible: false,
|
||||
yearRangeStart: null,
|
||||
yearRangeDecade: Math.floor(new Date().getFullYear() / 10) * 10,
|
||||
tableColumns: [
|
||||
{label: '年度', prop: 'year', sortable: true},
|
||||
{label: '线路名称', prop: 'lineName', sortable: true, width: '200'},
|
||||
@@ -851,7 +885,10 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
window.top.location.href = '/platform/inclusiveTherapyV3/lineXghSelect?mode=2'
|
||||
const targetMenu = window.parent.document.querySelector('#sidebar-menu a[data-pjax][href="/platform/inclusiveTherapyV3/lineXghSelect?mode=2"]')
|
||||
if (targetMenu) {
|
||||
targetMenu.click()
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$refs.guava.index()
|
||||
this.pageData()
|
||||
@@ -1062,6 +1099,28 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
this.lineImportLoading = false
|
||||
}
|
||||
},
|
||||
openYearRange() {
|
||||
this.yearRangeStart = null
|
||||
const year = Number(this.pageForm.startYear) || new Date().getFullYear()
|
||||
this.yearRangeDecade = Math.floor(year / 10) * 10
|
||||
},
|
||||
selectRangeYear(year) {
|
||||
if (this.yearRangeStart === null) {
|
||||
this.yearRangeStart = year
|
||||
return
|
||||
}
|
||||
this.pageForm.startYear = String(Math.min(this.yearRangeStart, year))
|
||||
this.pageForm.endYear = String(Math.max(this.yearRangeStart, year))
|
||||
this.yearRangeStart = null
|
||||
this.yearRangeVisible = false
|
||||
this.handleChangeYear()
|
||||
},
|
||||
clearYearRange() {
|
||||
this.pageForm.startYear = ''
|
||||
this.pageForm.endYear = ''
|
||||
this.yearRangeStart = null
|
||||
this.yearRangeVisible = false
|
||||
},
|
||||
handleChangeYear() {
|
||||
if (this.pageForm.startYear && this.pageForm.endYear) {
|
||||
if (this.pageForm.startYear > this.pageForm.endYear) {
|
||||
|
||||
@@ -93,7 +93,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :title="editDialogTitle" :visible.sync="editDialogVisible"
|
||||
<el-dialog :append-to-body="true" :close-on-click-modal="false" :title="editDialogTitle" :visible.sync="editDialogVisible"
|
||||
width="60%">
|
||||
<el-form :model="formData" :rules="rules" label-width="120px" ref="form">
|
||||
<el-row :gutter="20">
|
||||
@@ -225,7 +225,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</template>
|
||||
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="旅行社导入"
|
||||
:visible.sync="importVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -281,7 +281,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
mixins: [therapyTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
|
||||
@@ -1,50 +1,13 @@
|
||||
<!--# if(!@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.isEmbeddedPage()){ #-->
|
||||
<!--# layout("/layouts/platform.html"){ #-->
|
||||
<iframe src="${@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.getEmbeddedPageUrl(),escape}" title="普惠疗休养" style="width:100%;height:calc(100vh - 100px);border:0;background:#fff"></iframe>
|
||||
<!--# } } else { #-->
|
||||
<!doctype html>
|
||||
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
|
||||
<title>普惠疗休养</title>
|
||||
<script src="${base!}/assets/platform/plugins/vue/vue.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/vue-http-loader/httpVueLoader.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/axios/axios.js"></script>
|
||||
<script>const APP_DOMAIN = location.origin; const FILE_DOMAIN = location.origin;</script>
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/css/root.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/fonts/themify-icons.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/viewerjs/viewer.css">
|
||||
<script src="${base!}/assets/platform/plugins/viewerjs/viewer.js"></script>
|
||||
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/common.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/main.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/elmain.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/panel.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index_custom.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/override.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css">
|
||||
<script src="${base!}/assets/platform/plugins/element-ui/lib/index.js"></script>
|
||||
<script>
|
||||
ELEMENT.Dialog.props.closeOnClickModal.default = false;
|
||||
ELEMENT.Dialog.props.top.default = '50px';
|
||||
ELEMENT.Table.props.border.default = true;
|
||||
ELEMENT.TableColumn.props.headerAlign.default = 'center';
|
||||
ELEMENT.TableColumn.props.align.default = 'center';
|
||||
Vue.use(ELEMENT, {zIndex: 20000});
|
||||
</script>
|
||||
<script src="${base!}/assets/platform/plugins/wangEditor4/wangEditor.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/sortablejs/sortable.min.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/vuedraggable/vuedraggable.umd.min.js"></script>
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/desktop.css">
|
||||
<script src="${base!}/assets/platform/plugins/echarts/echarts.min.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/g2plot/g2plot.min.js"></script>
|
||||
<script src="${base!}/assets/staffbenefit/therapyRecuperation/basics.js"></script>
|
||||
<script src="${base!}/assets/staffbenefit/therapyRecuperation/v.js"></script>
|
||||
<script src="${base!}/assets/staffbenefit/therapyRecuperation/component.js"></script>
|
||||
<script src="${base!}/assets/staffbenefit/therapyRecuperation/initTableMixins.js"></script>
|
||||
<script src="${base!}/assets/staffbenefit/therapyRecuperation/compat.js"></script>
|
||||
<script src="${base!}/assets/platform/js/util/commonUtil.js"></script>
|
||||
<script src="${base!}/assets/platform/js/tool/businessTool.js"></script>
|
||||
<script>
|
||||
Vue.prototype.$axios = commonUtil.axiosService();
|
||||
Vue.prototype.$businessTool = businessTool;
|
||||
@@ -63,6 +26,7 @@ Vue.directive('auth', {inserted(el, binding) {
|
||||
if (!requested.some(role => roles.includes(role))) el.parentNode.removeChild(el);
|
||||
}});
|
||||
</script>
|
||||
<style>body{margin:0;padding:12px;box-sizing:border-box;background:#f6f6f6} [v-cloak]{display:none}</style>
|
||||
</head><body>${layoutContent}</body></html>
|
||||
<!--# } #-->
|
||||
<div class="therapy-desktop">${layoutContent}</div>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
@@ -26,6 +26,287 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
.el-table-container {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-condition-row {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-condition-label {
|
||||
flex: 0 0 90px;
|
||||
color: #606266;
|
||||
text-align: right;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-condition-options {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-condition-options .el-tag {
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-row-content > .el-row:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-row-content > .el-row > .query-hint {
|
||||
display: block;
|
||||
padding: 10px 14px;
|
||||
margin: 0;
|
||||
border-radius: 4px;
|
||||
background: #fdf6ec;
|
||||
color: #b36b13;
|
||||
line-height: 24px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-row-content > .el-row > .query-hint > span {
|
||||
display: inline;
|
||||
color: inherit;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-hint-row {
|
||||
margin-left: 0;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-extra-fields {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 12px 0;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-extra-fields > .el-col {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding-right: 24px;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-extra-fields > .el-col > span {
|
||||
flex: 0 0 90px;
|
||||
color: #606266;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-extra-fields > .el-col > .el-select {
|
||||
flex: 1;
|
||||
width: 0 !important;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
#app .branch-query-filters .query-hint-row {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-extra-fields > .el-col {
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
#app .branch-query-filters .query-route-choice {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-route-choice > span {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-route-choice > .el-select {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
width: 0 !important;
|
||||
}
|
||||
|
||||
#app .branch-query-filters .query-route-hint {
|
||||
padding-left: 20px;
|
||||
color: #b36b13;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.therapy-desktop #app .branch-query-filters .query-row-content > .el-row > .query-route-hint > span:first-child {
|
||||
flex: 1 1 auto;
|
||||
min-width: 0;
|
||||
color: inherit;
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
#app .branch-query-filters .query-route-choice,
|
||||
#app .branch-query-filters .query-route-hint { width: 100%; }
|
||||
#app .branch-query-filters .query-route-hint { padding: 10px 0 0; }
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog,
|
||||
.therapy-query-edit-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 1440px;
|
||||
max-height: calc(100vh - 100px);
|
||||
margin-top: 50px !important;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog > .el-dialog__header,
|
||||
.therapy-query-view-dialog > .el-dialog__footer,
|
||||
.therapy-query-edit-dialog > .el-dialog__header,
|
||||
.therapy-query-edit-dialog > .el-dialog__footer {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog > .el-dialog__body,
|
||||
.therapy-query-edit-dialog > .el-dialog__body {
|
||||
min-height: 0;
|
||||
padding: 20px 24px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel {
|
||||
margin: 0 0 20px;
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel-heading {
|
||||
padding: 12px 16px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel-title {
|
||||
margin: 0;
|
||||
color: #303133;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .panel-body {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions-item__label,
|
||||
.therapy-query-edit-dialog .el-descriptions-item__label {
|
||||
color: #606266;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions-item__content,
|
||||
.therapy-query-edit-dialog .el-descriptions-item__content {
|
||||
padding: 12px 16px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .el-form-item__label {
|
||||
color: #606266;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .therapy-edit-family > .el-form-item__label {
|
||||
display: block;
|
||||
float: none;
|
||||
width: auto !important;
|
||||
margin-bottom: 12px;
|
||||
text-align: left;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
|
||||
.therapy-query-view-dialog .viewTable .el-descriptions__table {
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .viewTable .el-descriptions-item__label {
|
||||
width: 120px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions-item__content,
|
||||
.therapy-query-edit-dialog .el-descriptions-item__content {
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .therapy-edit-family > .el-form-item__content {
|
||||
margin-left: 0 !important;
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .therapy-family-list,
|
||||
.therapy-query-edit-dialog .therapy-family-list {
|
||||
display: grid;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .therapy-family-card,
|
||||
.therapy-query-edit-dialog .therapy-family-card {
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
border: 1px solid #ebeef5;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .therapy-family-title,
|
||||
.therapy-query-edit-dialog .therapy-family-title {
|
||||
padding: 12px 16px;
|
||||
background: #fafafa;
|
||||
color: #303133;
|
||||
font-weight: 500;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .therapy-family-details .el-descriptions__table,
|
||||
.therapy-query-edit-dialog .therapy-family-details .el-descriptions__table {
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .therapy-family-details .el-descriptions-item__label,
|
||||
.therapy-query-edit-dialog .therapy-family-details .el-descriptions-item__label {
|
||||
width: 100px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
.therapy-query-view-dialog,
|
||||
.therapy-query-edit-dialog {
|
||||
width: 94% !important;
|
||||
}
|
||||
|
||||
.therapy-query-edit-dialog .el-form > .el-row > .el-col {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions__row,
|
||||
.therapy-query-edit-dialog .therapy-family-details .el-descriptions__row {
|
||||
display: grid;
|
||||
grid-template-columns: 120px minmax(0, 1fr);
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .viewTable .el-descriptions-item__label,
|
||||
.therapy-query-view-dialog .therapy-family-details .el-descriptions-item__label,
|
||||
.therapy-query-edit-dialog .therapy-family-details .el-descriptions-item__label {
|
||||
width: auto;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.therapy-query-view-dialog .el-descriptions-item__content,
|
||||
.therapy-query-edit-dialog .el-descriptions-item__content {
|
||||
min-width: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -33,7 +314,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
|
||||
<el-card shadow="never">
|
||||
<el-card shadow="never" class="branch-query-filters">
|
||||
<el-row align="middle" class="query-row" type="flex">
|
||||
<el-col class="query-row-title"></el-col>
|
||||
<el-col class="query-row-content">
|
||||
@@ -103,13 +384,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</el-row>
|
||||
<el-row align="middle" class="query-row" type="flex">
|
||||
<el-col class="query-row-title"></el-col>
|
||||
<el-col class="query-row-content">
|
||||
<span>查询条件:</span>
|
||||
<el-col class="query-row-content query-condition-row">
|
||||
<span class="query-condition-label">查询条件:</span>
|
||||
<div class="query-condition-options">
|
||||
<el-tag :effect="pageForm.state===item.value?'dark':'plain'"
|
||||
:key="item.value"
|
||||
:type="item.label"
|
||||
@click="checkState(item.value)"
|
||||
style="margin-right: 10px;cursor: pointer;margin-bottom: 5px;"
|
||||
v-for="item in options">
|
||||
{{ item.label }}
|
||||
</el-tag>
|
||||
@@ -120,19 +401,20 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
unitDisabled = false"
|
||||
type="danger" v-if="options.length&&pageForm.state">清空
|
||||
</el-link>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--#if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasRole('H04')){#-->
|
||||
<el-row align="middle" class="query-row" type="flex"
|
||||
v-if="pageForm.state==='1'&&pageForm.lb==='ry'">
|
||||
<el-col class="query-row-title"></el-col>
|
||||
<el-col class="query-row-content">
|
||||
<span>报名路线:</span>
|
||||
<el-col class="query-row-content query-condition-row">
|
||||
<span class="query-condition-label">报名路线:</span>
|
||||
<div class="query-condition-options">
|
||||
<el-tag :effect="pageForm.state2===item.value?'dark':'plain'"
|
||||
:key="item.value"
|
||||
:type="item.label"
|
||||
@click="checkState2(item.value)"
|
||||
style="margin-right: 10px;cursor: pointer;margin-bottom: 5px;font-size: 15px"
|
||||
v-for="item in options2">
|
||||
{{ item.label }}
|
||||
</el-tag>
|
||||
@@ -140,6 +422,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
@click="pageForm.state2='';doSearch();getBmUserUnion();pageForm.takePartInLineId='';getXlByUnion()"
|
||||
style="color: red" v-if="options2.length&&pageForm.state">清空
|
||||
</el-link>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--#}#-->
|
||||
@@ -148,7 +431,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<el-col class="query-row-title"></el-col>
|
||||
<el-col class="query-row-content">
|
||||
<el-row>
|
||||
<el-col :span="12" v-if="pageForm.state=='1'">
|
||||
<el-col :span="12" v-if="pageForm.state=='1'" class="query-route-choice">
|
||||
<span>选择路线:</span>
|
||||
<el-select v-model="pageForm.takePartInLineId" filterable clearable
|
||||
placeholder="请选择线路"
|
||||
@@ -161,9 +444,8 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</el-select>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="pageForm.state=='1'"
|
||||
style="color: red;margin-top: 10px">
|
||||
<sapn>【本工会报名线路】和【本工会人员选择其他工会的线路】</sapn>
|
||||
<el-col :span="12" v-if="pageForm.state=='1'" class="query-route-hint">
|
||||
<span>【本工会报名线路】和【本工会人员选择其他工会的线路】</span>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="pageForm.state=='2'">
|
||||
<span>选择旅行社:</span>
|
||||
@@ -195,8 +477,8 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row v-if="!pageForm.state">
|
||||
<el-col :span="24" style="color: red;margin-top: 10px">
|
||||
<el-row v-if="!pageForm.state" class="query-hint-row">
|
||||
<el-col :span="24" class="query-hint">
|
||||
<span>温馨提醒:当前操作查询是【本工会当年参加疗休养的人员(包含校工会线路)】和【其他工会选择本工会线路的疗休养人员】</span>
|
||||
<!--<span>温馨提醒:当前操作查询是【本工会当年参加疗休养的人员(包含校工会线路)】</span>-->
|
||||
|
||||
@@ -208,7 +490,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<el-row align="middle" class="query-row" type="flex"
|
||||
v-if="pageForm.state=='1'||pageForm.state=='3'">
|
||||
<el-col class="query-row-title"></el-col>
|
||||
<el-col class="query-row-content">
|
||||
<el-col class="query-row-content query-extra-fields">
|
||||
<el-col :span="8">
|
||||
<span>出行时间:</span>
|
||||
<el-select v-model="pageForm.selectId" filterable clearable
|
||||
@@ -253,7 +535,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="" :app="this" ref="table_tool">
|
||||
<therapy-table-tool label="" :app="this" ref="table_tool">
|
||||
<template #label_end>
|
||||
<el-radio-group size="small" v-model="pageForm.lb" class="ml10"
|
||||
@change="doSearch()"
|
||||
@@ -280,7 +562,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<!-- <el-button icon="el-icon-s-promotion" @click="openImport" size="small"
|
||||
type="primary">参加人员导入
|
||||
</el-button>-->
|
||||
<!--# if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasAnyRoles('H04,superadmin')){ #-->
|
||||
<!--# if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasAnyRoles('H04,sysadmin')){ #-->
|
||||
<template>
|
||||
<el-button icon="el-icon-s-promotion"
|
||||
@click="$downloadFile('/platform/inclusiveTherapyV3/query/exportDeclareForm')"
|
||||
@@ -330,9 +612,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<el-radio-button label="省外">省外</el-radio-button>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</table-tool>
|
||||
</therapy-table-tool>
|
||||
|
||||
<el-table :data="tableData" style="width: 100%"
|
||||
<el-table :key="pageForm.state + '-' + pageForm.lb" :data="tableData" style="width: 100%"
|
||||
ref="table"
|
||||
@selection-change="handleSelectionChange"
|
||||
row-key="id" @sort-change="pageOrder1"
|
||||
@@ -360,11 +642,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
>
|
||||
<template slot-scope="{row}" v-if="column.prop=='lineName'">
|
||||
<template slot-scope="{row}">
|
||||
<template v-if="column.prop=='lineName'">
|
||||
<el-link type="primary" @click="openLine(row)">{{row.lineName}}
|
||||
</el-link>
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='isFamily'">
|
||||
<template v-else-if="column.prop=='isFamily'">
|
||||
<el-link v-if="!row.familyNumber" type="primary" @click="openView(row)">
|
||||
{{row.isFamily?'携带':'未携带'}}({{row.isFamily}})
|
||||
</el-link>
|
||||
@@ -372,7 +655,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
{{row.familyNumber?'携带':'未携带'}}({{row.familyNumber}})
|
||||
</el-link>
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='lineNum'">
|
||||
<template v-else-if="column.prop=='lineNum'">
|
||||
|
||||
<span v-if="!row.familyNumber" >
|
||||
{{row.lineNum}}({{row.signUpUserFamilyNum}})
|
||||
@@ -383,25 +666,25 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
|
||||
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='signUpMode'">
|
||||
<template v-else-if="column.prop=='signUpMode'">
|
||||
{{signUpModeName(row.signUpMode)}}
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='agencyNum'">
|
||||
<template v-else-if="column.prop=='agencyNum'">
|
||||
<el-link type="primary" @click="openApplyUser(row)">{{row.agencyNum}}
|
||||
</el-link>
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='times'">
|
||||
<template v-else-if="column.prop=='times'">
|
||||
<div v-if="row.playStartTime">{{row.playStartTime}}</div>
|
||||
<div v-else>{{row.playStartTime1}}</div>
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='isTakePartIn'">
|
||||
<template v-else-if="column.prop=='isTakePartIn'">
|
||||
{{row.isTakePartIn?'已参加':'未参加'}}
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='stateId'">
|
||||
<template v-else-if="column.prop=='stateId'">
|
||||
<span v-if="row.stateId">
|
||||
<vi-table-state :state="row"></vi-table-state>
|
||||
</span>-->
|
||||
<sapn v-else style="color: #67C23A">暂无</sapn>
|
||||
</span>
|
||||
<span v-else style="color: #67C23A">暂无</span>
|
||||
</template>
|
||||
|
||||
<!--<template scope="{row}" v-else-if="column.prop=='travelAgencyName'">
|
||||
@@ -409,16 +692,17 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
{{row.travelAgencyName}}
|
||||
</el-link>
|
||||
</template>-->
|
||||
<template slot-scope="{row}" v-else-if="column.prop=='lineOrMaName'">
|
||||
<template v-else-if="column.prop=='lineOrMaName'">
|
||||
{{row.lineName?row.lineName:row.baseName?row.baseName:row.travelAgencyName}}
|
||||
</template>
|
||||
<template slot-scope="{row:{officialWebsite}}"
|
||||
<template
|
||||
v-else-if="column.prop==='officialWebsite'">
|
||||
<a :href="officialWebsite" class="text-primary" target="_blank">
|
||||
{{officialWebsite}}
|
||||
<a :href="row.officialWebsite" class="text-primary" target="_blank">
|
||||
{{row.officialWebsite}}
|
||||
</a>
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else>{{row[column.prop]}}</template>
|
||||
<template v-else>{{row[column.prop]}}</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="家属信息" type="expand" width="100px"
|
||||
v-if="pageForm.lb==='ry'">
|
||||
@@ -573,10 +857,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
:sortable="column.sortable"
|
||||
:key="column.id || column.code || therapyIndex">
|
||||
|
||||
<template slot-scope="{row}" v-if="column.prop=='isFamily'">
|
||||
<template slot-scope="{row}">
|
||||
<template v-if="column.prop=='isFamily'">
|
||||
{{row.isFamily?'携带':'未携带'}}
|
||||
</template>
|
||||
<template slot-scope="{row}" v-else>{{row[column.prop]}}</template>
|
||||
<template v-else>{{row[column.prop]}}</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="250px">
|
||||
<template slot-scope="{row}">
|
||||
@@ -624,17 +910,18 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
|
||||
|
||||
</guava>
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="查看个人信息"
|
||||
custom-class="therapy-query-view-dialog"
|
||||
:visible.sync="userFindDialogVisible"
|
||||
width="80%" top="2%">
|
||||
<enroll-info ref="viewEnrollInfo" :union_id="unionId"></enroll-info>
|
||||
width="80%" top="50px">
|
||||
<enroll-info ref="viewEnrollInfo" :union_id="unionId" :family-cards="true"></enroll-info>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="userFindDialogVisible = false" type="primary">关闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-drawer
|
||||
<el-drawer :append-to-body="true"
|
||||
size="70%"
|
||||
title="批量设置参加人员"
|
||||
:visible.sync="userDrawer"
|
||||
@@ -698,7 +985,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</el-drawer>
|
||||
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="参加人员导入"
|
||||
:visible.sync="importVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -747,7 +1034,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-drawer
|
||||
<el-drawer :append-to-body="true"
|
||||
size="70%"
|
||||
title="家属信息"
|
||||
:visible.sync="familyDrawer"
|
||||
@@ -781,82 +1068,70 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
</el-card>
|
||||
</el-drawer>
|
||||
|
||||
<el-dialog
|
||||
<el-dialog :append-to-body="true"
|
||||
title="修改信息"
|
||||
custom-class="therapy-query-edit-dialog"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="50%">
|
||||
<el-form :model="editFormData" label-width="120px" :rules="rules" ref="editForm" style="margin-right: 40px">
|
||||
<el-row>
|
||||
<el-col span="12">
|
||||
width="80%" top="50px">
|
||||
<el-form :model="editFormData" label-width="120px" :rules="rules" ref="editForm">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="loginName" label="工号">
|
||||
<el-input v-model="editFormData.loginName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col span="12">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="userName" label="姓名">
|
||||
<el-input v-model="editFormData.userName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col span="12">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="userName" label="手机号">
|
||||
<el-input v-model="editFormData.mobile" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col span="12">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="userName" label="身份证号">
|
||||
<el-input v-model="editFormData.idCard" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col span="12">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="unionName" label="工会">
|
||||
<el-input v-model="editFormData.unionName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col span="12">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="unitName" label="单位">
|
||||
<el-input v-model="editFormData.unitName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item prop="prop" :label="labelName">
|
||||
<el-form-item prop="prop" :label="labelName" class="therapy-edit-family">
|
||||
<template v-if="modifyConfig.familyInfo == 2">
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item title="点击可展开详细信息" name="1">
|
||||
<el-card shadow="never">
|
||||
<el-table :data="editFormData.companionList">
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="身份证号" prop="idCard" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="年龄" prop="age"></el-table-column>
|
||||
<el-table-column label="床型" prop="bedType">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.bedInfo?.bedType }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="床位" prop="bedNum">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.bedInfo?.bedNum }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="意向拼床人" prop="otherSleepUser">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.bedInfo?.otherSleepUser ?
|
||||
row.bedInfo?.otherSleepUser : '暂无' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="关系" prop="relation"></el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
<div class="therapy-family-list">
|
||||
<div v-for="(item, index) in editFormData.companionList" :key="item.id || index" class="therapy-family-card">
|
||||
<div class="therapy-family-title">家属 {{ index + 1 }} · {{ item.userName }}</div>
|
||||
<el-descriptions :column="2" border class="therapy-family-details">
|
||||
<el-descriptions-item label="姓名">{{ item.userName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{ item.sex }}</el-descriptions-item>
|
||||
<el-descriptions-item label="关系">{{ item.relation }}</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号">{{ item.idCard }}</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">{{ item.age }}</el-descriptions-item>
|
||||
<el-descriptions-item label="床型">{{ item.bedInfo?.bedType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="床位">{{ item.bedInfo?.bedNum }}</el-descriptions-item>
|
||||
<el-descriptions-item label="意向拼床人">{{ item.bedInfo?.otherSleepUser || '暂无' }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<el-empty v-if="!editFormData.companionList || !editFormData.companionList.length" description="暂无家属信息" :image-size="60"></el-empty>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-input v-model="editFormData.bedType" readonly></el-input>
|
||||
@@ -909,7 +1184,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
mixins: [therapyTableMixins],
|
||||
data() {
|
||||
return {
|
||||
lotId: "",
|
||||
@@ -928,6 +1203,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
signUpModeList: [],
|
||||
viewData: {},
|
||||
applyUserRow: {},
|
||||
listRequestId: 0,
|
||||
agencyLists: [],
|
||||
unionId: "${@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.getUnionId()}",
|
||||
userFindDialogVisible: false,
|
||||
@@ -1011,7 +1287,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'enroll-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/Enrollinfo.vue?v=1.0.1'),
|
||||
'enroll-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/Enrollinfo.vue?v=1.0.3'),
|
||||
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
|
||||
},
|
||||
methods: {
|
||||
@@ -1413,6 +1689,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
checkState(type) {
|
||||
this.$refs.table.clearSelection();
|
||||
this.pageForm.state = type
|
||||
if (type === "2") {
|
||||
this.$set(this.pageForm, 'state2', '')
|
||||
this.$set(this.pageForm, 'takePartInLineId', '')
|
||||
this.$set(this.pageForm, 'selectId', '')
|
||||
this.$set(this.pageForm, 'lotId', '')
|
||||
this.$set(this.pageForm, 'regionalNature', '')
|
||||
}
|
||||
if (type === "1") {
|
||||
this.pageForm.lb = 'xl'
|
||||
} else if (type === "2") {
|
||||
@@ -1500,9 +1783,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
getSelfUnionUser() {
|
||||
const requestId = ++this.listRequestId
|
||||
const viewKey = this.pageForm.state + '-' + this.pageForm.lb
|
||||
this.tableLoading = true
|
||||
this.tableData = []
|
||||
$.post(loc() + "/getSelfUnionUser", this.pageForm, (data) => {
|
||||
return $.post(loc() + "/getSelfUnionUser", this.pageForm, (data) => {
|
||||
if (requestId !== this.listRequestId || viewKey !== this.pageForm.state + '-' + this.pageForm.lb) return
|
||||
this.tableLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
@@ -1603,7 +1889,8 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
await this.getRyData()
|
||||
}
|
||||
await this.getApplyNum()
|
||||
this.$refs.table_tool.getColumns()
|
||||
await this.$nextTick()
|
||||
if (this.$refs.table_tool) this.$refs.table_tool.getColumns()
|
||||
|
||||
},
|
||||
async flushUnits() {
|
||||
@@ -1634,9 +1921,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
this.jdList = data
|
||||
},
|
||||
getLxsData() {
|
||||
const requestId = ++this.listRequestId
|
||||
const viewKey = this.pageForm.state + '-' + this.pageForm.lb
|
||||
this.tableLoading = true
|
||||
this.tableData = []
|
||||
$.post(loc() + "/getLxsData", this.pageForm, (data) => {
|
||||
return $.post(loc() + "/getLxsData", this.pageForm, (data) => {
|
||||
if (requestId !== this.listRequestId || viewKey !== this.pageForm.state + '-' + this.pageForm.lb) return
|
||||
this.tableLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
@@ -1647,9 +1937,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}, "json");
|
||||
},
|
||||
getJdData() {
|
||||
const requestId = ++this.listRequestId
|
||||
const viewKey = this.pageForm.state + '-' + this.pageForm.lb
|
||||
this.tableLoading = true
|
||||
this.tableData = []
|
||||
$.post(loc() + "/getJdData", this.pageForm, (data) => {
|
||||
return $.post(loc() + "/getJdData", this.pageForm, (data) => {
|
||||
if (requestId !== this.listRequestId || viewKey !== this.pageForm.state + '-' + this.pageForm.lb) return
|
||||
this.tableLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
@@ -1660,9 +1953,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}, "json");
|
||||
},
|
||||
async getXlData() {
|
||||
const requestId = ++this.listRequestId
|
||||
const viewKey = this.pageForm.state + '-' + this.pageForm.lb
|
||||
this.tableLoading = true
|
||||
this.tableData = []
|
||||
$.post(loc() + "/getXlData", this.pageForm, (data) => {
|
||||
return $.post(loc() + "/getXlData", this.pageForm, (data) => {
|
||||
if (requestId !== this.listRequestId || viewKey !== this.pageForm.state + '-' + this.pageForm.lb) return
|
||||
this.tableLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
@@ -1673,9 +1969,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
|
||||
}, "json");
|
||||
},
|
||||
async getRyData() {
|
||||
const requestId = ++this.listRequestId
|
||||
const viewKey = this.pageForm.state + '-' + this.pageForm.lb
|
||||
this.tableLoading = true
|
||||
this.tableData = []
|
||||
$.post(loc() + "/getRyData", this.pageForm, (data) => {
|
||||
return $.post(loc() + "/getRyData", this.pageForm, (data) => {
|
||||
if (requestId !== this.listRequestId || viewKey !== this.pageForm.state + '-' + this.pageForm.lb) return
|
||||
this.tableLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
|
||||