Merge remote-tracking branch 'origin/main'
# Conflicts: # src/main/resources/db/menu/init_tour_menu.sql # src/main/resources/db/tour_setting_create.sql # src/main/resources/views/platform/zhgh/staffmanage/member/apply/common/commonQuery.js # src/main/resources/views/platform/zhgh/staffmanage/member/change/common/commonQuery.js # src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js
This commit is contained in:
@@ -49,7 +49,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Comment("性别")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
@DataCenterColumn(name = "姓别", key = "XBM", dict = "USER_SEX")
|
||||
@DataCenterColumn(name = "性别", key = "XB", dict = "USER_SEX")
|
||||
private String sex;
|
||||
|
||||
@Column
|
||||
@@ -266,6 +266,11 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@DataCenterColumn(name = "单位", key = "SZDWH")
|
||||
private String unitId;
|
||||
|
||||
@Column
|
||||
@Comment("三级单位ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String threeUnitId;
|
||||
|
||||
@Column
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String unitPath;
|
||||
|
||||
+96
-24
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HtmlUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.event.role.RoleEventMsg;
|
||||
@@ -50,6 +51,8 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
@IocBean
|
||||
public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService {
|
||||
private static final int BATCH_SIZE = 500;
|
||||
private static final int ROLE_DELETE_BATCH_SIZE = 50;
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@@ -180,6 +183,21 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
List<Sys_user_history> histories = new CopyOnWriteArrayList<>();
|
||||
List<String> addMemberUserIds = Collections.synchronizedList(new ArrayList<>());
|
||||
List<String> removeMemberUserIds = Collections.synchronizedList(new ArrayList<>());
|
||||
Set<String> sourceLoginNames = sources.stream()
|
||||
.map(Sys_user_source::getLoginname)
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.collect(Collectors.toSet());
|
||||
List<String> leaveUserIds = sysUsers.stream()
|
||||
.filter(user -> StrUtil.isNotBlank(user.getLoginname()))
|
||||
.filter(user -> !sourceLoginNames.contains(user.getLoginname()))
|
||||
.map(Sys_user::getId)
|
||||
.toList();
|
||||
List<String> leaveMemberUserIds = sysUsers.stream()
|
||||
.filter(user -> StrUtil.isNotBlank(user.getLoginname()))
|
||||
.filter(user -> !sourceLoginNames.contains(user.getLoginname()))
|
||||
.filter(user -> Boolean.TRUE.equals(user.getMember()))
|
||||
.map(Sys_user::getId)
|
||||
.toList();
|
||||
|
||||
// 处理每条数据
|
||||
for (Sys_user_source source : sources) {
|
||||
@@ -235,7 +253,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
CompletableFuture<Void> insertTask = CompletableFuture.runAsync(() -> {
|
||||
log.info("新增用户: {} 个", needInitUserList.size());
|
||||
// 分批处理,每批200条
|
||||
List<List<Sys_user>> batches = ListUtil.split(needInitUserList, 500);
|
||||
List<List<Sys_user>> batches = ListUtil.split(needInitUserList, BATCH_SIZE);
|
||||
batches.forEach(batch -> {
|
||||
try {
|
||||
dao.fastInsert(batch);
|
||||
@@ -260,7 +278,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
|
||||
if (!roleList.isEmpty()) {
|
||||
// 分批处理角色分配
|
||||
List<List<Sys_user_role>> roleBatches = ListUtil.split(roleList, 500);
|
||||
List<List<Sys_user_role>> roleBatches = ListUtil.split(roleList, BATCH_SIZE);
|
||||
roleBatches.forEach(batch -> {
|
||||
try {
|
||||
dao.fastInsert(batch);
|
||||
@@ -282,7 +300,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
CompletableFuture<Void> updateTask = CompletableFuture.runAsync(() -> {
|
||||
log.info("更新用户: {} 个", needDoUpdateList.size());
|
||||
// 分批处理,每批200条
|
||||
List<List<Sys_user>> batches = ListUtil.split(needDoUpdateList, 500);
|
||||
List<List<Sys_user>> batches = ListUtil.split(needDoUpdateList, BATCH_SIZE);
|
||||
batches.forEach(batch -> {
|
||||
try {
|
||||
dao.updateIgnoreNull(batch);
|
||||
@@ -294,6 +312,65 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
updateTasks.add(updateTask);
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(leaveUserIds)) {
|
||||
CompletableFuture<Void> leaveTask = CompletableFuture.runAsync(() -> {
|
||||
log.info("数据源缺失用户转为不在岗并取消会员: {} 个", leaveUserIds.size());
|
||||
List<List<String>> batches = ListUtil.split(leaveUserIds, BATCH_SIZE);
|
||||
batches.forEach(batch -> {
|
||||
try {
|
||||
/*
|
||||
* 本次拉取批次中没有出现、但系统用户表仍存在的人员,按离岗处理:
|
||||
* 1. userState 写为“不在岗”,用于后续人员状态筛选和业务判断;
|
||||
* 2. member 写为 false,避免仍按会员身份参与后续业务判断。
|
||||
*/
|
||||
dao.update(Sys_user.class, Chain.make("userState", "不在岗").add("member", false), Cnd.where("id", "in", batch));
|
||||
} catch (Exception e) {
|
||||
log.error("批量更新数据源缺失用户状态异常", e);
|
||||
}
|
||||
});
|
||||
}, executorService);
|
||||
updateTasks.add(leaveTask);
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(leaveMemberUserIds)) {
|
||||
CompletableFuture<Void> leaveMemberRoleTask = CompletableFuture.runAsync(() -> {
|
||||
log.info("数据源缺失会员移除会员角色: {} 个", leaveMemberUserIds.size());
|
||||
List<List<String>> batches = ListUtil.split(leaveMemberUserIds, ROLE_DELETE_BATCH_SIZE);
|
||||
batches.forEach(batch -> {
|
||||
try {
|
||||
/*
|
||||
* 只对原本是会员的缺失人员移除会员角色,并缩小删除批次,
|
||||
* 降低 sys_user_role 大批量 DELETE 时的锁等待概率。
|
||||
*/
|
||||
dao.clear(Sys_user_role.class, Cnd.where("userId", "in", batch).and("roleId", "=", memberRole.getId()));
|
||||
} catch (Exception e) {
|
||||
log.error("批量移除数据源缺失会员角色异常", e);
|
||||
}
|
||||
});
|
||||
}, executorService);
|
||||
updateTasks.add(leaveMemberRoleTask);
|
||||
}
|
||||
|
||||
if (Lang.isNotEmpty(histories)) {
|
||||
CompletableFuture<Void> historyTask = CompletableFuture.runAsync(() -> {
|
||||
log.info("添加历史记录: {} 条", histories.size());
|
||||
/*
|
||||
* 历史记录基于更新前的 sys_user 与 sys_user_source 生成,必须纳入本次更新等待范围。
|
||||
* 继续使用线程池和批量插入,避免主线程逐条写入拖慢更新接口。
|
||||
*/
|
||||
List<List<Sys_user_history>> batches = ListUtil.split(histories, 500);
|
||||
batches.forEach(batch -> {
|
||||
try {
|
||||
dao.fastInsert(batch);
|
||||
} catch (Exception e) {
|
||||
log.error("批量添加历史记录异常", e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
}, executorService);
|
||||
updateTasks.add(historyTask);
|
||||
}
|
||||
|
||||
// 等待用户数据更新完成
|
||||
try {
|
||||
// 设置超时时间,避免无限等待
|
||||
@@ -307,22 +384,6 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
return "更新失败: " + e.getMessage();
|
||||
}
|
||||
|
||||
// 3. 异步添加历史记录 - 不等待完成
|
||||
if (Lang.isNotEmpty(histories)) {
|
||||
executorService.execute(() -> {
|
||||
log.info("添加历史记录: {} 条", histories.size());
|
||||
// 分批处理历史记录
|
||||
List<List<Sys_user_history>> batches = ListUtil.split(histories, 500);
|
||||
batches.forEach(batch -> {
|
||||
try {
|
||||
dao.fastInsert(batch);
|
||||
} catch (Exception e) {
|
||||
log.error("批量添加历史记录异常", e);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/* // 4. 异步添加会员角色 - 不等待完成
|
||||
if (Lang.isNotEmpty(addMemberUserIds)) {
|
||||
executorService.execute(() -> {
|
||||
@@ -384,7 +445,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime));
|
||||
|
||||
return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size()
|
||||
+ " 个, 待添加会员 " + addMemberUserIds.size() + " 个, 待移除会员 " + removeMemberUserIds.size() + " 个";
|
||||
+ " 个, 数据源缺失转不在岗 " + leaveUserIds.size() + " 个, 待添加会员 " + addMemberUserIds.size() + " 个, 待移除会员 " + removeMemberUserIds.size() + " 个";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -453,8 +514,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
NutMap change = NutMap.NEW();
|
||||
change.put("fieldName", "单位");
|
||||
change.put("field", "unitId");
|
||||
change.put("sourceValue", unitIdNameMap.get(user.getUnitId()));
|
||||
change.put("newValue", unitIdNameMap.get(user.getUnitId()));
|
||||
change.put("sourceValue", getUnitChangeValue(user.getUnitId()));
|
||||
change.put("newValue", getUnitChangeValue(source.getUnitId()));
|
||||
changeList.add(change);
|
||||
|
||||
// 单位异动发送订阅消息,清空原单位的所有角色
|
||||
@@ -470,8 +531,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
// 生成变更信息描述
|
||||
String changeInfos = changeList.stream()
|
||||
.map(v -> v.getString("fieldName") + ":" +
|
||||
HtmlUtil.cleanHtmlTag(v.getString("sourceValue")) + "→" +
|
||||
HtmlUtil.cleanHtmlTag(v.getString("newValue")))
|
||||
HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(v.getString("sourceValue"), "")) + "→" +
|
||||
HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(v.getString("newValue"), "")))
|
||||
.collect(Collectors.joining(";"));
|
||||
|
||||
// 设置历史记录信息
|
||||
@@ -481,4 +542,15 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
||||
|
||||
return history;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单位变更记录展示值。
|
||||
* 入参 unitId 为系统用户旧单位或数据源新单位ID;返回值优先使用单位名称,查不到名称时保留单位ID,避免变更记录为空导致更新中断。
|
||||
*/
|
||||
private String getUnitChangeValue(String unitId) {
|
||||
if (StrUtil.isBlank(unitId)) {
|
||||
return "";
|
||||
}
|
||||
return StrUtil.blankToDefault(unitIdNameMap.get(unitId), unitId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.budwk.app.sys.annotation.DataCenterColumn;
|
||||
import com.budwk.app.sys.enums.Api2FinanceFiledMap;
|
||||
import com.budwk.app.sys.models.Sys_data_dict;
|
||||
import com.budwk.app.sys.models.Sys_dict;
|
||||
import com.budwk.app.sys.models.Sys_unit;
|
||||
import com.budwk.app.sys.models.Sys_user;
|
||||
import com.budwk.app.sys.models.Sys_user_source;
|
||||
import com.budwk.app.sys.services.SysDataUnitPullService;
|
||||
@@ -158,6 +159,8 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
} catch (Exception e) {
|
||||
sysUser.setBirthday(null);
|
||||
}
|
||||
} else if ("LXNY".equals(mapping.key)) {
|
||||
mapping.field.set(sysUser, normalizeArrivalAtSchoolDate(raw.getStr(mapping.key)));
|
||||
} else {
|
||||
mapping.field.set(sysUser, raw.getStr(mapping.key));
|
||||
}
|
||||
@@ -170,6 +173,9 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
}
|
||||
}
|
||||
|
||||
sysUser.setUnitName(raw.getStr("SZDW"));
|
||||
sysUser.setUnitId(resolveSourceUnitId(raw.getStr("SZDWH")));
|
||||
|
||||
// 设置拉取时间
|
||||
sysUser.setPullTime(nowDate);
|
||||
|
||||
@@ -199,6 +205,27 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 规范化信息中心返回的来校时间。
|
||||
* 入参 arrivalAtSchoolDate 对应信息中心 LXNY 字段,允许 yyyy-MM-dd 或 yyyy-MM;
|
||||
* 返回值用于 sys_user_source.arrivalAtSchoolDate 和后续 sys_user.arrivalAtSchoolDate,年月格式统一补为当月 01 日。
|
||||
*/
|
||||
private String normalizeArrivalAtSchoolDate(String arrivalAtSchoolDate) {
|
||||
String dateText = StrUtil.trim(arrivalAtSchoolDate);
|
||||
if (StrUtil.isBlank(dateText)) {
|
||||
return dateText;
|
||||
}
|
||||
if (dateText.matches("\\d{4}-\\d{1,2}-\\d{1,2}")) {
|
||||
String[] parts = dateText.split("-");
|
||||
return parts[0] + "-" + StrUtil.padPre(parts[1], 2, '0') + "-" + StrUtil.padPre(parts[2], 2, '0');
|
||||
}
|
||||
if (dateText.matches("\\d{4}-\\d{1,2}")) {
|
||||
String[] parts = dateText.split("-");
|
||||
return parts[0] + "-" + StrUtil.padPre(parts[1], 2, '0') + "-01";
|
||||
}
|
||||
return dateText;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取信息中心开放平台访问令牌。
|
||||
* 返回值为接口后续调用使用的 access_token 字符串。
|
||||
@@ -315,6 +342,22 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
return new ArrayList<>(userMap.values());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据接口返回的所在单位号转换数据源用户单位。
|
||||
* 入参 rawUnitId 对应人员接口 SZDWH:5位表示三级单位,需要写入其二级父单位;其他长度保持接口原值。
|
||||
* 返回值为 sys_user_source.unitId 使用的单位ID,找不到三级单位或父级为空时保留接口原始单位号,避免人员数据丢失。
|
||||
*/
|
||||
private String resolveSourceUnitId(String rawUnitId) {
|
||||
if (StrUtil.isBlank(rawUnitId) || rawUnitId.length() != 5) {
|
||||
return rawUnitId;
|
||||
}
|
||||
Sys_unit unit = dao().fetch(Sys_unit.class, rawUnitId);
|
||||
if (unit == null || StrUtil.isBlank(unit.getParentId())) {
|
||||
return rawUnitId;
|
||||
}
|
||||
return unit.getParentId();
|
||||
}
|
||||
|
||||
@Async
|
||||
private void updateDict(List<Sys_user_source> userSources) {
|
||||
//判断是否要更新在职状态字典
|
||||
|
||||
@@ -137,7 +137,7 @@ public class CommonController {
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("unit.unionId", "=", unionId);
|
||||
cnd.and("unit.unitTypeCode", "=", "1");
|
||||
cnd.and("unit.unitLevel", "=", "2");
|
||||
cnd.asc("unit.unitcode");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> unitList = sysUserService.listMap(sql);
|
||||
|
||||
+4
-2
@@ -220,9 +220,11 @@ public class ActivitySportsServiceImpl extends BaseServiceImpl<ActivitySchool> i
|
||||
ev.allName DESC,
|
||||
u.unionname DESC,
|
||||
app.`team` asc
|
||||
""").setParam("id", id);
|
||||
""").setParam("id", id)
|
||||
.setVar("cnd", "");
|
||||
if (Strings.isNotBlank(unionId)) {
|
||||
sql.setVar("cnd", "and u.unionid='" + unionId + "'");
|
||||
sql.setVar("cnd", "and u.unionid = @unionId");
|
||||
sql.setParam("unionId", unionId);
|
||||
}
|
||||
List<Record> list = list(sql);
|
||||
String activityName;
|
||||
|
||||
+13
-2
@@ -425,6 +425,7 @@ public class ClubStatisticsController {
|
||||
}
|
||||
|
||||
private Sql generateSql(String clubId, Boolean auditState, String userState, String sex, Boolean giveMoney) {
|
||||
// 注册流程按社团去重后再关联,避免换届等流程复用社团ID时将会员人数重复统计。
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
club.id,
|
||||
@@ -438,11 +439,22 @@ public class ClubStatisticsController {
|
||||
sum( CASE WHEN ('CLUB_PRESIDENT' MEMBER OF (cu.roleCode) or 'CLUB_VICE_PRESIDENT' MEMBER OF (cu.roleCode) or 'CLUB_SECRETARY' MEMBER OF (cu.roleCode) or 'CLUB_VICE_SECRETARY' MEMBER OF (cu.roleCode)) AND 1 = 1 $myCondition THEN 1 ELSE 0 END ) AS governing_body
|
||||
FROM
|
||||
sys_club club
|
||||
INNER JOIN (
|
||||
SELECT DISTINCT registerInstance.businessNo
|
||||
FROM wf_process_instance registerInstance
|
||||
INNER JOIN wf_process_define registerDefine
|
||||
ON registerDefine.id = registerInstance.processDefineId
|
||||
WHERE registerInstance.state = @finishedState
|
||||
AND registerInstance.delFlag = 0
|
||||
AND registerDefine.name = @registerProcessKey
|
||||
AND registerDefine.delFlag = 0
|
||||
) registeredClub ON registeredClub.businessNo = club.id
|
||||
LEFT JOIN club_user cu ON cu.clubId = club.id
|
||||
LEFT JOIN sys_user su ON cu.userId = su.id
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = club.id
|
||||
$condition
|
||||
""");
|
||||
sql.setParam("finishedState", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
sql.setParam("registerProcessKey", "XHZC");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (auditState != null) {
|
||||
List<SysClubExamineRegister> examineRegisters = sysClubService.dao().query(SysClubExamineRegister.class, Cnd.where("year(registerDate)", "=", DateUtil.thisYear()));
|
||||
@@ -458,7 +470,6 @@ public class ClubStatisticsController {
|
||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||
cnd.and("club.id", "in", myClubId);
|
||||
}
|
||||
cnd.and("ins.state", "=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
cnd.andEX("club.id", "=", clubId);
|
||||
cnd.and("club.dismiss", "=", false);
|
||||
cnd.groupBy("club.id");
|
||||
|
||||
@@ -13,6 +13,13 @@ import java.util.List;
|
||||
|
||||
public interface SysClubExamineService extends BaseService<SysClubExamineRegister> {
|
||||
|
||||
/**
|
||||
* 按会员入会、退休、退会时间统计指定年度的在职和退休人数变化。
|
||||
*
|
||||
* @param clubId 社团ID
|
||||
* @param year 统计年度
|
||||
* @return 在职和退休人员的年初、增加、减少、年末人数
|
||||
*/
|
||||
List<NutMap> getClubUserNum(@Valid String clubId, Integer year);
|
||||
|
||||
List<NutMap> getJgUser(@Valid String clubId);
|
||||
|
||||
+230
-114
@@ -10,7 +10,6 @@ import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.base.utils.PageUtil;
|
||||
import com.budwk.app.flow.enums.ProcessInstanceStateEnum;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.club.model.SysClub;
|
||||
@@ -32,14 +31,15 @@ import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class SysClubExamineServiceImpl extends BaseServiceImpl<SysClubExamineRegister> implements SysClubExamineService {
|
||||
|
||||
@Inject
|
||||
private SysDictService sysDictService;
|
||||
@Inject
|
||||
private SysClubService sysClubService;
|
||||
|
||||
@@ -49,128 +49,244 @@ public class SysClubExamineServiceImpl extends BaseServiceImpl<SysClubExamineReg
|
||||
|
||||
@Override
|
||||
public List<NutMap> getClubUserNum(String clubId, Integer year) {
|
||||
// 定义统计的用户状态类型
|
||||
List<String> userStateList = List.of("在职", "退休");
|
||||
List<NutMap> result = new ArrayList<>();
|
||||
Date yearStart = DateUtil.parse(year + "-01-01 00:00:00");
|
||||
Date nextYearStart = DateUtil.parse((year + 1) + "-01-01 00:00:00");
|
||||
List<MembershipPeriod> membershipPeriods = getMembershipPeriods(clubId);
|
||||
NutMap activeResult = createUserChangeResult("在职");
|
||||
NutMap retiredResult = createUserChangeResult("退休");
|
||||
|
||||
// 查询上一年度考核登记数据(用于获取年初人数)
|
||||
SysClubExamineRegister examineRegister = dao().fetch(SysClubExamineRegister.class,
|
||||
Cnd.where("year", "=", year - 1).and("clubId", "=", clubId));
|
||||
for (MembershipPeriod period : membershipPeriods) {
|
||||
// 非正常历史会员没有退会时间且没有已完成退会申请时,无法确定所属年度,不计入统计。
|
||||
if (!period.normal && period.exitTime == null) {
|
||||
continue;
|
||||
}
|
||||
if (isMemberAtYearBoundary(period, yearStart)) {
|
||||
increaseResult(classifyAtBoundary(period, yearStart), activeResult, retiredResult, "yearFirstNum");
|
||||
}
|
||||
if (isInYear(period.joinTime, yearStart, nextYearStart)) {
|
||||
increaseResult(classifyAtEvent(period, period.joinTime), activeResult, retiredResult, "yearAddNum");
|
||||
}
|
||||
if (isInYear(period.exitTime, yearStart, nextYearStart)) {
|
||||
increaseResult(classifyBeforeEvent(period, period.exitTime), activeResult, retiredResult, "yearReduceNum");
|
||||
}
|
||||
// 退休发生在会员有效期内时,作为在职减少一人、退休增加一人处理。
|
||||
if (isInYear(period.retireDate, yearStart, nextYearStart)
|
||||
&& period.joinTime.before(period.retireDate)
|
||||
&& (period.exitTime == null || period.exitTime.after(period.retireDate))) {
|
||||
increaseResult("在职", activeResult, retiredResult, "yearReduceNum");
|
||||
increaseResult("退休", activeResult, retiredResult, "yearAddNum");
|
||||
}
|
||||
if (isMemberAtYearBoundary(period, nextYearStart)) {
|
||||
increaseResult(classifyAtBoundary(period, nextYearStart), activeResult, retiredResult, "thisYearNum");
|
||||
}
|
||||
}
|
||||
return List.of(activeResult, retiredResult);
|
||||
}
|
||||
|
||||
// 构建社团用户申请记录查询SQL(关联用户信息、流程实例)
|
||||
Sql sql = Sqls.create("""
|
||||
/**
|
||||
* 合并旧系统会员生命周期与新系统已完成申请,生成可用于年度统计的入退会区间。
|
||||
* 旧系统记录负责迁移历史,新系统申请只补充旧记录缺失的退会时间和迁移后新增的入会周期。
|
||||
*/
|
||||
private List<MembershipPeriod> getMembershipPeriods(String clubId) {
|
||||
Sql legacySql = Sqls.create("""
|
||||
SELECT
|
||||
cu.*,
|
||||
year(cu.applyDate) as applyYear,
|
||||
cu.userId,
|
||||
CAST(cu.joinTime AS DATETIME) joinTime,
|
||||
STR_TO_DATE(NULLIF(cu.changeTime, ''), '%Y-%m-%d %H:%i:%s') exitTime,
|
||||
cu.isNormal,
|
||||
u.userState,
|
||||
u.retireDate
|
||||
FROM
|
||||
club_user_apply cu
|
||||
LEFT JOIN sys_user u ON cu.userId = u.id
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = cu.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("cu.clubId", "=", clubId);
|
||||
cnd.and("ins.state", "=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
cnd.groupBy("cu.clubId, cu.userId, cu.mode");
|
||||
sql.setCondition(cnd);
|
||||
List<NutMap> userList = listMap(sql);
|
||||
FROM sys_club_user cu
|
||||
LEFT JOIN sys_user u ON u.id = cu.userId
|
||||
WHERE cu.clubId = @clubId
|
||||
AND cu.status = 5
|
||||
AND cu.joinTime IS NOT NULL
|
||||
AND cu.joinTime <> ''
|
||||
""").setParam("clubId", clubId);
|
||||
List<MembershipPeriod> periods = listMap(legacySql).stream()
|
||||
.map(row -> new MembershipPeriod(
|
||||
row.getString("userId"),
|
||||
row.getTime("joinTime"),
|
||||
row.getTime("exitTime"),
|
||||
!Boolean.FALSE.equals(row.getBoolean("isNormal")),
|
||||
true,
|
||||
row.getString("userState"),
|
||||
row.getTime("retireDate")
|
||||
))
|
||||
.filter(period -> period.joinTime != null)
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
// 遍历在职/退休状态,分别统计人员变动数据
|
||||
for (String userState : userStateList) {
|
||||
NutMap nutMap = new NutMap();
|
||||
nutMap.addv("userState", userState);
|
||||
Sql applySql = Sqls.create("""
|
||||
SELECT
|
||||
cu.userId,
|
||||
cu.mode,
|
||||
cu.applyDate,
|
||||
cu.joinTime,
|
||||
cu.exitTime,
|
||||
u.userState,
|
||||
u.retireDate
|
||||
FROM club_user_apply cu
|
||||
LEFT JOIN sys_user u ON u.id = cu.userId
|
||||
WHERE cu.clubId = @clubId
|
||||
AND COALESCE(cu.delFlag, 0) = 0
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM wf_process_instance ins
|
||||
WHERE ins.businessNo = cu.id
|
||||
AND ins.state = @finishedState
|
||||
)
|
||||
ORDER BY cu.applyDate, cu.mode
|
||||
""")
|
||||
.setParam("clubId", clubId)
|
||||
.setParam("finishedState", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
List<NutMap> applications = listMap(applySql);
|
||||
applications.sort(Comparator.comparing(row -> row.getTime("applyDate"), Comparator.nullsLast(Date::compareTo)));
|
||||
|
||||
// 根据用户状态匹配对应的人员类型集合
|
||||
List<String> personTypeList = switch (userState) {
|
||||
case "在职" -> List.of("在职", "在岗");
|
||||
case "退休" -> List.of("退休", "退休【变号】");
|
||||
default -> new ArrayList<>();
|
||||
};
|
||||
|
||||
// 过滤出符合当前人员类型的用户(非空判断避免NPE)
|
||||
List<NutMap> personTypeUsers = userList.stream()
|
||||
.filter(u -> StrUtil.isNotBlank(u.getString("userState"))
|
||||
&& personTypeList.contains(u.getString("userState")))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 初始化年末人数为0
|
||||
int thisYearNum = 0;
|
||||
if (!Lang.isEmpty(personTypeUsers)) {
|
||||
// 统计年末人数:加入社团且无退出记录的用户数量
|
||||
List<String> exitUserIds = personTypeUsers.stream()
|
||||
.filter(u -> u.getInt("mode") == 0)
|
||||
.map(u -> u.getString("userId"))
|
||||
.toList();
|
||||
|
||||
thisYearNum = (int) personTypeUsers.stream()
|
||||
.filter(u -> u.getInt("mode") == 1)
|
||||
.filter(u -> !exitUserIds.contains(u.getString("userId")))
|
||||
.count();
|
||||
for (NutMap application : applications) {
|
||||
Date applyDate = application.getTime("applyDate");
|
||||
Boolean mode = application.getBoolean("mode");
|
||||
if (applyDate == null || mode == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 统计今年退休人数:已入会且退休日期在本年度的用户
|
||||
int retireCount = (int) personTypeUsers.stream()
|
||||
.filter(u -> u.getTime("retireDate") != null
|
||||
&& u.getInt("mode") == 1
|
||||
&& DateUtil.year(u.getTime("retireDate")) == year)
|
||||
.count();
|
||||
|
||||
// 封装年初人数:从上一年度登记数据中获取,无数据则为0
|
||||
if (Lang.isNotEmpty(examineRegister) && Lang.isNotEmpty(examineRegister.getChangeUserNum())) {
|
||||
JSONObject uState = examineRegister.getChangeUserNum().stream()
|
||||
.filter(c -> c.getStr("userState").equals(userState))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
nutMap.addv("yearFirstNum", Lang.isEmpty(uState) ? 0 : uState.getInt("thisYearNum"));
|
||||
if (mode) {
|
||||
mergeJoinApplication(periods, application, applyDate);
|
||||
} else {
|
||||
nutMap.addv("yearFirstNum", 0);
|
||||
mergeExitApplication(periods, application, applyDate);
|
||||
}
|
||||
|
||||
// 统计年度增加相关数据
|
||||
int joinThisYear = (int) personTypeUsers.stream()
|
||||
.filter(u -> u.getInt("mode") == 1 && u.getInt("applyYear") == year)
|
||||
.count();
|
||||
|
||||
int thisYearJoinAndRetire = (int) userList.stream()
|
||||
.filter(u -> u.getInt("mode") == 1 && u.getInt("applyYear") == year
|
||||
&& u.getTime("retireDate") != null
|
||||
&& DateUtil.year(u.getTime("retireDate")) == year)
|
||||
.count();
|
||||
|
||||
int beforeYearJoinAndRetire = (int) userList.stream()
|
||||
.filter(u -> u.getInt("mode") == 1 && u.getInt("applyYear") == year
|
||||
&& u.getTime("retireDate") != null
|
||||
&& DateUtil.year(u.getTime("retireDate")) < year)
|
||||
.count();
|
||||
|
||||
// 按用户状态封装年度增加人数
|
||||
nutMap.addv("yearAddNum", "在职".equals(userState)
|
||||
? joinThisYear + thisYearJoinAndRetire
|
||||
: beforeYearJoinAndRetire + retireCount);
|
||||
|
||||
// 统计年度减少相关数据
|
||||
int quitThisYear = (int) personTypeUsers.stream()
|
||||
.filter(u -> u.getInt("mode") == 0 && u.getInt("applyYear") == year)
|
||||
.count();
|
||||
|
||||
// 在职人员年度减少:退休人数+主动退出人数;退休人员仅统计主动退出
|
||||
if ("在职".equals(userState)) {
|
||||
int retireThisYear = (int) userList.stream()
|
||||
.filter(u -> u.getTime("retireDate") != null
|
||||
&& DateUtil.year(u.getTime("retireDate")) == year)
|
||||
.count();
|
||||
nutMap.addv("yearReduceNum", retireThisYear + quitThisYear);
|
||||
} else {
|
||||
nutMap.addv("yearReduceNum", quitThisYear);
|
||||
}
|
||||
|
||||
// 封装年末人数
|
||||
nutMap.addv("thisYearNum", thisYearNum);
|
||||
result.add(nutMap);
|
||||
}
|
||||
return result;
|
||||
return periods;
|
||||
}
|
||||
|
||||
/**
|
||||
* 已迁移的入会申请与旧会员记录精确对应时不重复新增;迁移后的新申请以审核申请时间作为入会时间。
|
||||
*/
|
||||
private void mergeJoinApplication(List<MembershipPeriod> periods, NutMap application, Date applyDate) {
|
||||
String userId = application.getString("userId");
|
||||
Date applicationJoinTime = application.getTime("joinTime");
|
||||
boolean representedByLegacy = periods.stream()
|
||||
.filter(period -> period.legacy && Objects.equals(period.userId, userId))
|
||||
.filter(period -> Objects.equals(period.joinTime, applicationJoinTime))
|
||||
.anyMatch(period -> period.exitTime == null || !applyDate.after(period.exitTime));
|
||||
boolean representedByNewPeriod = periods.stream()
|
||||
.filter(period -> !period.legacy && Objects.equals(period.userId, userId))
|
||||
.anyMatch(period -> isMemberAt(period, applyDate));
|
||||
if (representedByLegacy || representedByNewPeriod) {
|
||||
return;
|
||||
}
|
||||
periods.add(new MembershipPeriod(
|
||||
userId,
|
||||
applyDate,
|
||||
null,
|
||||
true,
|
||||
false,
|
||||
application.getString("userState"),
|
||||
application.getTime("retireDate")
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 退会申请优先关闭入会时间相同的会员周期;新系统复入会后再退会时关闭最近的有效周期。
|
||||
*/
|
||||
private void mergeExitApplication(List<MembershipPeriod> periods, NutMap application, Date applyDate) {
|
||||
String userId = application.getString("userId");
|
||||
Date applicationJoinTime = application.getTime("joinTime");
|
||||
Date exitTime = application.getTime("exitTime") == null ? applyDate : application.getTime("exitTime");
|
||||
MembershipPeriod target = periods.stream()
|
||||
.filter(period -> Objects.equals(period.userId, userId))
|
||||
.filter(period -> Objects.equals(period.joinTime, applicationJoinTime))
|
||||
.filter(period -> period.exitTime == null)
|
||||
.max(Comparator.comparing(period -> period.joinTime))
|
||||
.orElse(null);
|
||||
if (target == null) {
|
||||
target = periods.stream()
|
||||
.filter(period -> Objects.equals(period.userId, userId))
|
||||
.filter(period -> period.exitTime == null && !period.joinTime.after(exitTime))
|
||||
.max(Comparator.comparing(period -> period.joinTime))
|
||||
.orElse(null);
|
||||
}
|
||||
if (target != null) {
|
||||
target.exitTime = exitTime;
|
||||
}
|
||||
}
|
||||
|
||||
private NutMap createUserChangeResult(String userState) {
|
||||
return NutMap.NEW()
|
||||
.addv("userState", userState)
|
||||
.addv("yearFirstNum", 0)
|
||||
.addv("yearAddNum", 0)
|
||||
.addv("yearReduceNum", 0)
|
||||
.addv("thisYearNum", 0);
|
||||
}
|
||||
|
||||
private void increaseResult(String userState, NutMap activeResult, NutMap retiredResult, String field) {
|
||||
NutMap result = "退休".equals(userState) ? retiredResult : "在职".equals(userState) ? activeResult : null;
|
||||
if (result != null) {
|
||||
result.put(field, result.getInt(field) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isInYear(Date date, Date yearStart, Date nextYearStart) {
|
||||
return date != null && !date.before(yearStart) && date.before(nextYearStart);
|
||||
}
|
||||
|
||||
private boolean isMemberAt(MembershipPeriod period, Date date) {
|
||||
return !period.joinTime.after(date) && (period.exitTime == null || period.exitTime.after(date));
|
||||
}
|
||||
|
||||
private boolean isMemberAtYearBoundary(MembershipPeriod period, Date boundary) {
|
||||
return period.joinTime.before(boundary) && (period.exitTime == null || !period.exitTime.before(boundary));
|
||||
}
|
||||
|
||||
private String classifyAtBoundary(MembershipPeriod period, Date boundary) {
|
||||
if (period.retireDate != null) {
|
||||
return period.retireDate.before(boundary) ? "退休" : "在职";
|
||||
}
|
||||
return normalizeUserState(period.userState);
|
||||
}
|
||||
|
||||
private String classifyAtEvent(MembershipPeriod period, Date eventTime) {
|
||||
if (period.retireDate != null) {
|
||||
return period.retireDate.after(eventTime) ? "在职" : "退休";
|
||||
}
|
||||
return normalizeUserState(period.userState);
|
||||
}
|
||||
|
||||
private String classifyBeforeEvent(MembershipPeriod period, Date eventTime) {
|
||||
if (period.retireDate != null) {
|
||||
return period.retireDate.before(eventTime) ? "退休" : "在职";
|
||||
}
|
||||
return normalizeUserState(period.userState);
|
||||
}
|
||||
|
||||
private String normalizeUserState(String userState) {
|
||||
if (List.of("在职", "在岗").contains(userState)) {
|
||||
return "在职";
|
||||
}
|
||||
if (List.of("退休", "退休【变号】").contains(userState)) {
|
||||
return "退休";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static class MembershipPeriod {
|
||||
private final String userId;
|
||||
private final Date joinTime;
|
||||
private Date exitTime;
|
||||
private final boolean normal;
|
||||
private final boolean legacy;
|
||||
private final String userState;
|
||||
private final Date retireDate;
|
||||
|
||||
private MembershipPeriod(String userId, Date joinTime, Date exitTime, boolean normal, boolean legacy,
|
||||
String userState, Date retireDate) {
|
||||
this.userId = userId;
|
||||
this.joinTime = joinTime;
|
||||
this.exitTime = exitTime;
|
||||
this.normal = normal;
|
||||
this.legacy = legacy;
|
||||
this.userState = userState;
|
||||
this.retireDate = retireDate;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+77
-30
@@ -15,6 +15,7 @@ import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.web.commons.base.Globals;
|
||||
import com.budwk.app.web.controllers.open.commons.service.CommonService;
|
||||
import com.budwk.app.zhgh.club.model.ClubUser;
|
||||
import com.budwk.app.zhgh.club.model.SysClub;
|
||||
import com.budwk.app.zhgh.club.param.ClubUserPageForm;
|
||||
import com.budwk.app.zhgh.club.service.SysClubInfoManageService;
|
||||
import com.budwk.app.zhgh.club.service.SysClubService;
|
||||
@@ -41,6 +42,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@@ -227,19 +229,23 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
||||
public Pagination<ClubUserCommonPageVo> exitManagePageData(ClubUserPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.id,
|
||||
info.clubId,
|
||||
info.userId,
|
||||
info.roleCode AS applyRoleCode,
|
||||
info.clubPosition,
|
||||
info.email,
|
||||
info.mobile,
|
||||
info.birthday,
|
||||
info.avatar,
|
||||
info.sameTimeJoinOtherClubSituation,
|
||||
info.awardsExperience,
|
||||
COALESCE(info.id, scu.id) AS id,
|
||||
scu.clubId,
|
||||
scu.userId,
|
||||
COALESCE(info.roleCode, scu.roleCode) AS applyRoleCode,
|
||||
COALESCE(info.clubPosition, scu.position) AS clubPosition,
|
||||
COALESCE(info.email, scu.email, u.email) AS email,
|
||||
COALESCE(info.mobile, u.mobile) AS mobile,
|
||||
COALESCE(info.birthday, u.birthday) AS birthday,
|
||||
COALESCE(info.avatar, scu.avatar, u.avatar) AS avatar,
|
||||
COALESCE(info.sameTimeJoinOtherClubSituation, scu.sameTimeJoinOtherClubSituation) AS sameTimeJoinOtherClubSituation,
|
||||
COALESCE(info.awardsExperience, scu.awardsExperience) AS awardsExperience,
|
||||
info.signature,
|
||||
info.applyDate,
|
||||
COALESCE(
|
||||
info.applyDate,
|
||||
STR_TO_DATE(scu.changeTime, '%Y-%m-%d %H:%i:%s'),
|
||||
STR_TO_DATE(JSON_UNQUOTE(JSON_EXTRACT(scu.exitAuditList, '$[0].auditTime')), '%Y-%m-%d %H:%i:%s')
|
||||
) AS applyDate,
|
||||
u.username AS userName,
|
||||
u.loginname AS loginName,
|
||||
u.sex,
|
||||
@@ -247,24 +253,32 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
||||
u.userState,
|
||||
club.clubName,
|
||||
u.unitname AS unitName,
|
||||
DATE_FORMAT(IFNULL(info.joinTime, club.foundTime), '%Y-%m-%d %H:%i:%s') AS joinTime,
|
||||
DATE_FORMAT(info.exitTime, '%Y-%m-%d %H:%i:%s') AS exitTime,
|
||||
COALESCE(scu.joinTime, DATE_FORMAT(club.foundTime, '%Y-%m-%d %H:%i:%s')) AS joinTime,
|
||||
COALESCE(
|
||||
DATE_FORMAT(info.exitTime, '%Y-%m-%d %H:%i:%s'),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(scu.exitAuditList, '$[0].auditTime')),
|
||||
scu.changeTime
|
||||
) AS exitTime,
|
||||
IF(info.id IS NULL, 'DIRECT_REMOVE', 'AUDIT_EXIT') AS exitType,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId
|
||||
FROM
|
||||
club_user_apply info
|
||||
LEFT JOIN sys_club club ON club.id = info.clubId
|
||||
LEFT JOIN vw_user u ON u.id = info.userId
|
||||
sys_club_user scu
|
||||
LEFT JOIN club_user_apply info ON info.clubId = scu.clubId
|
||||
AND info.userId = scu.userId
|
||||
AND info.mode = false
|
||||
LEFT JOIN sys_club club ON club.id = scu.clubId
|
||||
INNER JOIN vw_user u ON u.id = scu.userId
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||
AND ins.state = 20
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("info.mode", "=", false);
|
||||
cnd.and("ins.state", "=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
cnd.andEX("info.clubId", "=", pageForm.getClubId());
|
||||
cnd.and("scu.isNormal", "=", false);
|
||||
cnd.andEX("scu.clubId", "=", pageForm.getClubId());
|
||||
cnd.andEX("u.personType", "=", pageForm.getPersonType());
|
||||
cnd.andEX("u.userState", "=", pageForm.getUserState());
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
@@ -273,15 +287,17 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
||||
List<String> clubIdList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(), RoleConstant.CLUB_OPERATOR.name()));
|
||||
List<Sys_user_role> clubList = dao().query(Sys_user_role.class, Cnd.where("roleId", "in", clubIdList).and("userId", "=", SecurityUtil.getUserId()).and("clubId", "is not", null));
|
||||
cnd.and("info.clubId", "in", clubList.stream().map(Sys_user_role::getClubId).toList());
|
||||
cnd.and("scu.clubId", "in", clubList.stream().map(Sys_user_role::getClubId).toList());
|
||||
}
|
||||
cnd.groupBy("info.id");
|
||||
cnd.desc("info.applyDate");
|
||||
cnd.groupBy("scu.id");
|
||||
cnd.desc("exitTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<ClubUserCommonPageVo> pagination = listPageVO(pageForm, sql, ClubUserCommonPageVo.class);
|
||||
List<ClubUserCommonPageVo> list = pagination.getList(ClubUserCommonPageVo.class);
|
||||
for (ClubUserCommonPageVo vo : list) {
|
||||
vo.setRoleName(SysClubUserServiceImpl.convertRoleName(List.of(vo.getApplyRoleCode())));
|
||||
if (StrUtil.isNotBlank(vo.getApplyRoleCode())) {
|
||||
vo.setRoleName(SysClubUserServiceImpl.convertRoleName(List.of(vo.getApplyRoleCode())));
|
||||
}
|
||||
}
|
||||
pagination.setList(list);
|
||||
return pagination;
|
||||
@@ -291,7 +307,30 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
||||
public ClubUserJoinVo exitManageInfo(String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
cua.*,
|
||||
COALESCE(cua.id, scu.id) AS id,
|
||||
scu.clubId,
|
||||
scu.userId,
|
||||
COALESCE(cua.roleCode, scu.roleCode) AS roleCode,
|
||||
COALESCE(cua.clubPosition, scu.position) AS clubPosition,
|
||||
COALESCE(cua.email, scu.email, u.email) AS email,
|
||||
COALESCE(cua.mobile, u.mobile) AS mobile,
|
||||
COALESCE(cua.birthday, u.birthday) AS birthday,
|
||||
COALESCE(cua.avatar, scu.avatar, u.avatar) AS avatar,
|
||||
COALESCE(cua.sameTimeJoinOtherClubSituation, scu.sameTimeJoinOtherClubSituation) AS sameTimeJoinOtherClubSituation,
|
||||
COALESCE(cua.awardsExperience, scu.awardsExperience) AS awardsExperience,
|
||||
cua.signature,
|
||||
COALESCE(
|
||||
cua.applyDate,
|
||||
STR_TO_DATE(scu.changeTime, '%Y-%m-%d %H:%i:%s'),
|
||||
STR_TO_DATE(JSON_UNQUOTE(JSON_EXTRACT(scu.exitAuditList, '$[0].auditTime')), '%Y-%m-%d %H:%i:%s')
|
||||
) AS applyDate,
|
||||
STR_TO_DATE(scu.joinTime, '%Y-%m-%d %H:%i:%s') AS joinTime,
|
||||
COALESCE(
|
||||
cua.exitTime,
|
||||
STR_TO_DATE(JSON_UNQUOTE(JSON_EXTRACT(scu.exitAuditList, '$[0].auditTime')), '%Y-%m-%d %H:%i:%s'),
|
||||
STR_TO_DATE(scu.changeTime, '%Y-%m-%d %H:%i:%s')
|
||||
) AS exitTime,
|
||||
IF(cua.id IS NULL, 'DIRECT_REMOVE', 'AUDIT_EXIT') AS exitType,
|
||||
club.clubName,
|
||||
u.loginname AS loginName,
|
||||
u.username AS userName,
|
||||
@@ -304,10 +343,14 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
||||
u.academicDegree,
|
||||
u.position
|
||||
FROM
|
||||
club_user_apply cua
|
||||
LEFT JOIN vw_user u ON u.id = cua.userId
|
||||
LEFT JOIN sys_club club ON club.id = cua.clubId
|
||||
WHERE cua.id = @id
|
||||
sys_club_user scu
|
||||
LEFT JOIN club_user_apply cua ON cua.clubId = scu.clubId
|
||||
AND cua.userId = scu.userId
|
||||
AND cua.mode = false
|
||||
LEFT JOIN vw_user u ON u.id = scu.userId
|
||||
LEFT JOIN sys_club club ON club.id = scu.clubId
|
||||
WHERE scu.isNormal = false
|
||||
AND COALESCE(cua.id, scu.id) = @id
|
||||
""");
|
||||
sql.setParam("id", id);
|
||||
return fetchVO(sql, ClubUserJoinVo.class);
|
||||
@@ -346,7 +389,11 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
||||
NutMap nutMap = NutMap.NEW();
|
||||
nutMap.put("id", "0");
|
||||
nutMap.put("clubName", Globals.AppName);
|
||||
nutMap.put("children", sysClubService.getMyManageClub());
|
||||
// 社团管理树只按社团编号展示,避免影响公共社团列表的原有排序。
|
||||
List<SysClub> clubList = sysClubService.getMyManageClub().stream()
|
||||
.sorted(Comparator.comparing(SysClub::getClubCode, Comparator.nullsLast(String::compareTo)))
|
||||
.toList();
|
||||
nutMap.put("children", clubList);
|
||||
result.add(nutMap);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ public class ClubUserCommonPageVo extends ClubUser {
|
||||
private String unionId;
|
||||
private String joinTime;
|
||||
private String exitTime;
|
||||
private String exitType;
|
||||
private String applyRoleCode;
|
||||
|
||||
private String roleName;
|
||||
|
||||
@@ -23,4 +23,5 @@ public class ClubUserJoinVo extends ClubUserApply {
|
||||
private String academicDegree;
|
||||
private String position;
|
||||
private String clubName;
|
||||
private String exitType;
|
||||
}
|
||||
|
||||
+2
-2
@@ -262,7 +262,7 @@ public class HonorManageController {
|
||||
excelExportEntity.add(new ExcelExportEntity("分工会", "unionName", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("单位", "unitName", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("奖项", "prize", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("荣誉级别", "honorLevel", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("荣誉类别", "honorLevel", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("授予单位", "grantUnit", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("授予时间", "grantDate", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("奖项介质", "awardType", 20));
|
||||
@@ -276,7 +276,7 @@ public class HonorManageController {
|
||||
excelExportEntity.add(new ExcelExportEntity("会员人数", "memberNumber", 10));
|
||||
excelExportEntity.add(new ExcelExportEntity("工会小组数", "unionGroupNumber", 10));
|
||||
excelExportEntity.add(new ExcelExportEntity("奖项", "prize", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("荣誉级别", "honorLevel", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("荣誉类别", "honorLevel", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("授予单位", "grantUnit", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("参加比赛名称", "gameName", 20));
|
||||
excelExportEntity.add(new ExcelExportEntity("授予时间", "grantDate", 20));
|
||||
|
||||
+7
@@ -124,6 +124,13 @@ public class UnionReimburseCollectController {
|
||||
return unionReimburseService.updateActuallyAmount(id, realMoney);
|
||||
}
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission(value = {"unionReimburse.collect", "h5.unionReimburse.collect"}, mode = SaMode.OR)
|
||||
public Result updateReimburseProject(String id, String reimburseProject) {
|
||||
return unionReimburseService.updateReimburseProject(id, reimburseProject);
|
||||
}
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission(value = {"unionReimburse.collect", "h5.unionReimburse.collect"}, mode = SaMode.OR)
|
||||
|
||||
+5
@@ -45,6 +45,11 @@ public class UnionReimburseDesc extends BaseModel {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 200)
|
||||
private String fileDesc;
|
||||
|
||||
@Column
|
||||
@Comment("报销项目提示")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 500)
|
||||
private String projectTip;
|
||||
|
||||
@Column
|
||||
@Comment("排序字段")
|
||||
@Prev({
|
||||
|
||||
+5
@@ -69,6 +69,11 @@ public interface UnionReimburseService extends BaseService<UnionReimburse> {
|
||||
*/
|
||||
Result updateActuallyAmount(String id, Double realMoney);
|
||||
|
||||
/**
|
||||
* 修改非慰问报销记录的活动项目。
|
||||
*/
|
||||
Result updateReimburseProject(String id, String reimburseProject);
|
||||
|
||||
/**
|
||||
* 批量审核选中的待审核报销申请。
|
||||
*
|
||||
|
||||
+34
@@ -66,6 +66,13 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class UnionReimburseServiceImpl extends BaseServiceImpl<UnionReimburse> implements UnionReimburseService {
|
||||
/** 非慰问报销项目允许在三个活动项目之间切换。 */
|
||||
private static final Set<String> ACTIVITY_REIMBURSE_PROJECTS = Set.of(
|
||||
"UNION_REIMBURSE_PROJECT_2",
|
||||
"UNION_REIMBURSE_PROJECT_3",
|
||||
"UNION_REIMBURSE_PROJECT_4"
|
||||
);
|
||||
|
||||
@Inject
|
||||
private SysFileService sysFileService;
|
||||
@Inject
|
||||
@@ -424,6 +431,11 @@ public class UnionReimburseServiceImpl extends BaseServiceImpl<UnionReimburse> i
|
||||
if (dbRecord == null) {
|
||||
return Result.error("未找到对应的报销记录");
|
||||
}
|
||||
// 实际报销金额不得超过申请金额,避免绕过前端校验直接修改数据。
|
||||
BigDecimal declaredMoney = getDeclaredApplyMoney(dbRecord);
|
||||
if (newMoney.compareTo(declaredMoney) > 0) {
|
||||
return Result.error("实际报销金额不能超过申请金额:" + declaredMoney.toPlainString());
|
||||
}
|
||||
if (Integer.valueOf(3).equals(dbRecord.getStateId()) && !skipBudgetDeduct(dbRecord)) {
|
||||
OutlayUseDetail oldDetail = dao().fetch(OutlayUseDetail.class, Cnd.where("outlayReimburseId", "=", dbRecord.getId()));
|
||||
BigDecimal oldMoney = oldDetail != null && oldDetail.getAdjustMoney() != null
|
||||
@@ -439,6 +451,28 @@ public class UnionReimburseServiceImpl extends BaseServiceImpl<UnionReimburse> i
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result updateReimburseProject(String id, String reimburseProject) {
|
||||
if (!isAdmin()) {
|
||||
return Result.error("无权修改报销项目");
|
||||
}
|
||||
if (StrUtil.hasBlank(id, reimburseProject)) {
|
||||
return Result.error("报销记录ID和报销项目不能为空");
|
||||
}
|
||||
UnionReimburse dbRecord = this.fetch(id);
|
||||
if (dbRecord == null) {
|
||||
return Result.error("未找到对应的报销记录");
|
||||
}
|
||||
// 慰问记录与活动项目字段不同,只允许活动项目之间切换。
|
||||
if (!ACTIVITY_REIMBURSE_PROJECTS.contains(dbRecord.getReimburseProject())
|
||||
|| !ACTIVITY_REIMBURSE_PROJECTS.contains(reimburseProject)) {
|
||||
return Result.error("慰问记录不可修改,报销项目只能在三个活动项目之间切换");
|
||||
}
|
||||
dbRecord.setReimburseProject(reimburseProject);
|
||||
this.updateIgnoreNull(dbRecord);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
private void normalizeInvoiceDetails(UnionReimburse unionReimburse) {
|
||||
if (unionReimburse.getInvoiceDetails() == null) {
|
||||
unionReimburse.setInvoiceDetails(new ArrayList<>());
|
||||
|
||||
+5
@@ -63,6 +63,11 @@ public class AidFundMemberHistory extends BaseModel {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String personType;
|
||||
|
||||
@Column
|
||||
@Comment("人员属性")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String userAttribute;
|
||||
|
||||
@Column
|
||||
@Comment("在职状态")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
|
||||
+5
@@ -64,4 +64,9 @@ public class AidFundMemberPay extends BaseModel {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 10)
|
||||
private String userState;
|
||||
|
||||
@Column
|
||||
@Comment("人员属性")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
private String userAttribute;
|
||||
|
||||
}
|
||||
|
||||
+3
@@ -393,6 +393,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
*/
|
||||
private String getAnalysisPersonFilterSql(MemberStatisticsPageForm pageForm, String alias) {
|
||||
StringBuilder sqlBuilder = new StringBuilder();
|
||||
sqlBuilder.append(getAnalysisInSql(alias, "personType", pageForm.getPersonTypes()));
|
||||
sqlBuilder.append(getAnalysisInSql(alias, "aidFundMemberUserType", pageForm.getAidFundMemberUserTypes()));
|
||||
sqlBuilder.append(getAnalysisInSql(alias, "userAttribute", pageForm.getUserAttributes()));
|
||||
return sqlBuilder.toString();
|
||||
@@ -498,6 +499,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear)));
|
||||
// sql.setVar("abbr", new Static("his"));
|
||||
}
|
||||
cnd.andEX("u.personType", "in", pageForm.getPersonTypes());
|
||||
cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes());
|
||||
cnd.andEX("u.aidFundMemberUserType", "in", pageForm.getAidFundMemberUserTypes());
|
||||
cnd.groupBy("un.id", "un.unionCode", "un.name");
|
||||
@@ -539,6 +541,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> imple
|
||||
sql.setVar("table", new Static("member_history"));
|
||||
sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear)));
|
||||
}
|
||||
cnd.andEX("u.personType", "in", pageForm.getPersonTypes());
|
||||
cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes());
|
||||
cnd.andEX("u.aidFundMemberUserType", "in", pageForm.getAidFundMemberUserTypes());
|
||||
cnd.and("un.unitLevel", "=", 2);
|
||||
|
||||
@@ -46,6 +46,9 @@ public class WelfareFilterUserPageForm extends PageForm {
|
||||
@ApiModelProperty("人员类型")
|
||||
private String[] personTypes;
|
||||
|
||||
@ApiModelProperty("人员属性")
|
||||
private String[] userAttributes;
|
||||
|
||||
@ApiModelProperty("聘用方式")
|
||||
private String[] preparedBys;
|
||||
|
||||
|
||||
@@ -444,11 +444,13 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
|
||||
u.userState,
|
||||
u.unitId,
|
||||
u.unitName,
|
||||
threeUnit.name AS threeUnitName,
|
||||
u.unionId,
|
||||
u.unionName,
|
||||
u.member
|
||||
FROM
|
||||
vw_user u
|
||||
LEFT JOIN sys_unit threeUnit ON threeUnit.id = u.threeUnitId
|
||||
LEFT JOIN welfare_list w ON u.id = w.userId AND w.projectId = @projectId
|
||||
$condition
|
||||
""");
|
||||
@@ -471,6 +473,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
|
||||
cnd.andEX("u.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("u.unitId", "in", pageForm.getUnitIds());
|
||||
cnd.andEX("u.personType", "in", pageForm.getPersonTypes());
|
||||
cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes());
|
||||
cnd.andEX("u.preparedBy", "in", pageForm.getPreparedBys());
|
||||
cnd.andEX("u.userState", "in", pageForm.getUserStates());
|
||||
cnd.andEX("u.member","=",pageForm.getIsMember());
|
||||
@@ -523,6 +526,7 @@ public class WelfareListServiceImpl extends BaseServiceImpl<WelfareList> impleme
|
||||
cnd.andEX("unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("unitId", "in", pageForm.getUnitIds());
|
||||
cnd.andEX("personType", "in", pageForm.getPersonTypes());
|
||||
cnd.andEX("userAttribute", "in", pageForm.getUserAttributes());
|
||||
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
|
||||
cnd.andEX("userState", "in", pageForm.getUserStates());
|
||||
cnd.andEX("member","=",pageForm.getIsMember());
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
ALTER TABLE `asset`
|
||||
MODIFY COLUMN `assetUnitPrice` DECIMAL(18, 2) NULL COMMENT '单价';
|
||||
|
||||
ALTER TABLE `asset_depreciation_record`
|
||||
MODIFY COLUMN `assetAllMoney` DECIMAL(18, 2) NULL COMMENT '资产全部的价值',
|
||||
MODIFY COLUMN `assetSurplusMoney` DECIMAL(18, 2) NULL COMMENT '剩余价值',
|
||||
MODIFY COLUMN `assetDepreciationMoney` DECIMAL(18, 2) NULL COMMENT '累计折旧多少钱',
|
||||
MODIFY COLUMN `assetAverageMonthMoney` DECIMAL(18, 2) NULL COMMENT '平均一个月多少钱';
|
||||
@@ -1,3 +0,0 @@
|
||||
ALTER TABLE `build_home_little_house`
|
||||
ADD COLUMN `mapX` DECIMAL(8,4) NULL COMMENT '地图X坐标百分比' AFTER `mediaFiles`,
|
||||
ADD COLUMN `mapY` DECIMAL(8,4) NULL COMMENT '地图Y坐标百分比' AFTER `mapX`;
|
||||
@@ -1,3 +0,0 @@
|
||||
ALTER TABLE `build_home_little_house`
|
||||
ADD COLUMN `unitId` VARCHAR(32) NULL COMMENT '单位ID' AFTER `unitName`,
|
||||
ADD COLUMN `mediaFiles` JSON NULL COMMENT '图片视频资料' AFTER `openTime`;
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `honor`
|
||||
ADD COLUMN `photoFiles` JSON NULL COMMENT '荣誉照片' AFTER `files`;
|
||||
@@ -1,72 +0,0 @@
|
||||
CREATE TABLE IF NOT EXISTS learning_course_outline (
|
||||
id VARCHAR(32) NOT NULL COMMENT 'ID',
|
||||
courseId VARCHAR(32) NULL COMMENT '所属课程ID',
|
||||
courseName VARCHAR(100) NULL COMMENT '所属课程名称',
|
||||
parentId VARCHAR(32) NULL COMMENT '父节点ID',
|
||||
nodeType VARCHAR(20) NULL COMMENT '节点类型',
|
||||
title VARCHAR(100) NULL COMMENT '章/节标题',
|
||||
subtitle VARCHAR(200) NULL COMMENT '副标题',
|
||||
description LONGTEXT NULL COMMENT '简介',
|
||||
sortOrder INT NULL COMMENT '排序值',
|
||||
required TINYINT(1) NULL COMMENT '是否必学',
|
||||
status VARCHAR(20) NULL COMMENT '状态',
|
||||
createdBy VARCHAR(32) NULL COMMENT '创建人',
|
||||
createdAt BIGINT NULL COMMENT '创建时间',
|
||||
updatedBy VARCHAR(32) NULL COMMENT '修改人',
|
||||
updatedAt BIGINT NULL COMMENT '修改时间',
|
||||
delFlag TINYINT(1) NULL COMMENT '删除标记',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_learning_outline_course (courseId),
|
||||
INDEX idx_learning_outline_parent (parentId)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习教育课程大纲';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS learning_outline_resource (
|
||||
id VARCHAR(32) NOT NULL COMMENT 'ID',
|
||||
courseId VARCHAR(32) NULL COMMENT '所属课程ID',
|
||||
outlineId VARCHAR(32) NULL COMMENT '所属章/节ID',
|
||||
resourceTitle VARCHAR(100) NULL COMMENT '资料标题',
|
||||
resourceType VARCHAR(20) NULL COMMENT '资料类型',
|
||||
fileExt VARCHAR(20) NULL COMMENT '文件扩展名',
|
||||
fileData LONGTEXT NULL COMMENT '附件',
|
||||
durationSeconds INT NULL COMMENT '视频/音频时长',
|
||||
sortOrder INT NULL COMMENT '排序值',
|
||||
required TINYINT(1) NULL COMMENT '是否必学',
|
||||
allowPreview TINYINT(1) NULL COMMENT '是否允许预览',
|
||||
allowDownload TINYINT(1) NULL COMMENT '是否允许下载',
|
||||
status VARCHAR(20) NULL COMMENT '状态',
|
||||
createdBy VARCHAR(32) NULL COMMENT '创建人',
|
||||
createdAt BIGINT NULL COMMENT '创建时间',
|
||||
updatedBy VARCHAR(32) NULL COMMENT '修改人',
|
||||
updatedAt BIGINT NULL COMMENT '修改时间',
|
||||
delFlag TINYINT(1) NULL COMMENT '删除标记',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_learning_resource_course (courseId),
|
||||
INDEX idx_learning_resource_outline (outlineId)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习教育大纲资料';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS learning_study_rule (
|
||||
id VARCHAR(32) NOT NULL COMMENT 'ID',
|
||||
courseId VARCHAR(32) NULL COMMENT '所属课程ID',
|
||||
targetType VARCHAR(20) NULL COMMENT '规则对象类型',
|
||||
targetId VARCHAR(32) NULL COMMENT '规则对象ID',
|
||||
required TINYINT(1) NULL COMMENT '是否必学',
|
||||
studyMode VARCHAR(20) NULL COMMENT '学习方式',
|
||||
completionRule VARCHAR(50) NULL COMMENT '完成规则',
|
||||
completePercent INT NULL COMMENT '完成比例',
|
||||
minStudySeconds INT NULL COMMENT '最少学习时长',
|
||||
unlockRule VARCHAR(20) NULL COMMENT '解锁规则',
|
||||
allowSkip TINYINT(1) NULL COMMENT '是否允许跳过',
|
||||
allowDrag TINYINT(1) NULL COMMENT '是否允许拖动',
|
||||
pauseCountTime TINYINT(1) NULL COMMENT '暂停是否计时',
|
||||
hiddenCountTime TINYINT(1) NULL COMMENT '页面隐藏是否计时',
|
||||
inactiveCountTime TINYINT(1) NULL COMMENT '长时间无操作是否计时',
|
||||
status VARCHAR(20) NULL COMMENT '状态',
|
||||
createdBy VARCHAR(32) NULL COMMENT '创建人',
|
||||
createdAt BIGINT NULL COMMENT '创建时间',
|
||||
updatedBy VARCHAR(32) NULL COMMENT '修改人',
|
||||
updatedAt BIGINT NULL COMMENT '修改时间',
|
||||
delFlag TINYINT(1) NULL COMMENT '删除标记',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_learning_rule_target (targetType, targetId),
|
||||
INDEX idx_learning_rule_course (courseId)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习教育学习规则';
|
||||
@@ -1,27 +0,0 @@
|
||||
CREATE TABLE IF NOT EXISTS learning_course (
|
||||
id VARCHAR(32) NOT NULL COMMENT 'ID',
|
||||
courseName VARCHAR(100) NULL COMMENT '课程名称',
|
||||
courseTypeId VARCHAR(32) NULL COMMENT '课程类型',
|
||||
lecturerName VARCHAR(100) NULL COMMENT '授课讲师',
|
||||
lecturerInfo VARCHAR(500) NULL COMMENT '讲师基本信息',
|
||||
courseIntro LONGTEXT NULL COMMENT '课程简介',
|
||||
suitablePeople VARCHAR(500) NULL COMMENT '适合人群',
|
||||
learningGoal VARCHAR(500) NULL COMMENT '学习目标',
|
||||
coursePeriod VARCHAR(50) NULL COMMENT '课程周期',
|
||||
openType VARCHAR(20) NULL COMMENT '开课类型',
|
||||
startTime DATETIME NULL COMMENT '开始时间',
|
||||
endTime DATETIME NULL COMMENT '结束时间',
|
||||
status VARCHAR(20) NULL COMMENT '课程状态',
|
||||
recommendFlags VARCHAR(500) NULL COMMENT '推荐标识',
|
||||
courseTags VARCHAR(500) NULL COMMENT '课程标签',
|
||||
targetType VARCHAR(20) NULL COMMENT '学习对象',
|
||||
targetOrgText VARCHAR(500) NULL COMMENT '指定组织',
|
||||
sortNum INT NULL COMMENT '排序编码',
|
||||
cover VARCHAR(500) NULL COMMENT '课程封面',
|
||||
createdBy VARCHAR(32) NULL COMMENT '创建人',
|
||||
createdAt BIGINT NULL COMMENT '创建时间',
|
||||
updatedBy VARCHAR(32) NULL COMMENT '修改人',
|
||||
updatedAt BIGINT NULL COMMENT '修改时间',
|
||||
delFlag TINYINT(1) NULL COMMENT '删除标记',
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习教育课程';
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE learning_course_type
|
||||
ADD COLUMN remark VARCHAR(500) NULL COMMENT '备注';
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE learning_study_record
|
||||
ADD COLUMN lastPositionSeconds INT NULL COMMENT '最近播放位置(秒)' AFTER studySeconds;
|
||||
@@ -1,52 +0,0 @@
|
||||
CREATE TABLE IF NOT EXISTS learning_study_record (
|
||||
id VARCHAR(32) NOT NULL COMMENT 'ID',
|
||||
userId VARCHAR(32) NULL COMMENT '学习人ID',
|
||||
loginName VARCHAR(120) NULL COMMENT '工号',
|
||||
userName VARCHAR(100) NULL COMMENT '姓名',
|
||||
unionId VARCHAR(32) NULL COMMENT '所属分工会ID',
|
||||
unionName VARCHAR(100) NULL COMMENT '所属分工会',
|
||||
courseId VARCHAR(32) NULL COMMENT '课程ID',
|
||||
courseName VARCHAR(100) NULL COMMENT '课程名称',
|
||||
outlineId VARCHAR(32) NULL COMMENT '章节ID',
|
||||
outlineName VARCHAR(100) NULL COMMENT '章节名称',
|
||||
firstStudyTime DATETIME NULL COMMENT '第一次进入时间',
|
||||
latestStudyTime DATETIME NULL COMMENT '最近学习时间',
|
||||
studySeconds INT NULL COMMENT '累计有效学习时长(秒)',
|
||||
lastPositionSeconds INT NULL COMMENT '最近播放位置(秒)',
|
||||
requiredSeconds INT NULL COMMENT '要求学习时长(秒)',
|
||||
progressPercent INT NULL COMMENT '学习进度',
|
||||
completeStatus VARCHAR(20) NULL COMMENT '完成状态',
|
||||
completedAt DATETIME NULL COMMENT '完成时间',
|
||||
createdBy VARCHAR(32) NULL COMMENT '创建人',
|
||||
createdAt BIGINT NULL COMMENT '创建时间',
|
||||
updatedBy VARCHAR(32) NULL COMMENT '修改人',
|
||||
updatedAt BIGINT NULL COMMENT '修改时间',
|
||||
delFlag TINYINT(1) NULL COMMENT '删除标记',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY idx_learning_record_user_course_outline (userId, courseId, outlineId),
|
||||
INDEX idx_learning_record_union (unionId),
|
||||
INDEX idx_learning_record_course (courseId)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习教育学习记录';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS learning_study_segment (
|
||||
id VARCHAR(32) NOT NULL COMMENT 'ID',
|
||||
recordId VARCHAR(32) NULL COMMENT '学习记录ID',
|
||||
userId VARCHAR(32) NULL COMMENT '学习人ID',
|
||||
courseId VARCHAR(32) NULL COMMENT '课程ID',
|
||||
outlineId VARCHAR(32) NULL COMMENT '章节ID',
|
||||
resourceId VARCHAR(32) NULL COMMENT '资源ID',
|
||||
resourceName VARCHAR(100) NULL COMMENT '资源名称',
|
||||
startTime DATETIME NULL COMMENT '开始时间',
|
||||
endTime DATETIME NULL COMMENT '结束时间',
|
||||
lastHeartbeatTime DATETIME NULL COMMENT '最近心跳时间',
|
||||
activeSeconds INT NULL COMMENT '本时段有效学习时长(秒)',
|
||||
state VARCHAR(20) NULL COMMENT '状态',
|
||||
createdBy VARCHAR(32) NULL COMMENT '创建人',
|
||||
createdAt BIGINT NULL COMMENT '创建时间',
|
||||
updatedBy VARCHAR(32) NULL COMMENT '修改人',
|
||||
updatedAt BIGINT NULL COMMENT '修改时间',
|
||||
delFlag TINYINT(1) NULL COMMENT '删除标记',
|
||||
PRIMARY KEY (id),
|
||||
INDEX idx_learning_segment_record (recordId),
|
||||
INDEX idx_learning_segment_user_state (userId, state)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学习教育学习时段';
|
||||
@@ -1,50 +0,0 @@
|
||||
/* cms_menu_01 */
|
||||
update sys_menu set location=10 where path='0001'
|
||||
/* cms_menu_02 */
|
||||
update sys_menu set location=8 where path='0002'
|
||||
/* cms_menu_03 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('02e86a61e99746bea34236ea73dd52a5','','0003','CMS','CMS','menu','','','ti-world','1','0','cms',NULL,'9','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895671','0')
|
||||
/* cms_menu_04 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('077cb6be4c7c41cc8955ee045a4f0286','68cdbf694f71445c8587a20234d6fe31','0003000300020001','添加链接','Add','data','','','','0','0','cms.link.link.add',NULL,'47','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897043','0')
|
||||
/* cms_menu_05 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('17500ef3a9e44b4fabb240162a164fcb','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020003','删除文章','Delete','data','','','','0','0','cms.content.article.delete',NULL,'40','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896170','0')
|
||||
/* cms_menu_06 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('31ed2243077c44448cce26abfd5ae574','9822bafbe3454dfd8e8b974ebc304d03','0003000300010002','修改分类','Edit','data','','','','0','0','cms.link.class.edit',NULL,'44','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896957','0')
|
||||
/* cms_menu_07 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('33aed9298643424783116e0cf0f7fcbe','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020001','添加文章','Add','data','','','','0','0','cms.content.article.add',NULL,'38','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896151','0')
|
||||
/* cms_menu_08 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('36e0faf5062b4f6b95d4167cbb1f8fea','68cdbf694f71445c8587a20234d6fe31','0003000300020002','修改链接','Edit','data','','','','0','0','cms.link.link.edit',NULL,'48','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897051','0')
|
||||
/* cms_menu_09 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3c24111091ad4a70ad2d9cc361311d2f','68cdbf694f71445c8587a20234d6fe31','0003000300020003','删除链接','Delete','data','','','','0','0','cms.link.link.delete',NULL,'49','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897060','0')
|
||||
/* cms_menu_10 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3f330d729ca34dc9825c46122be1bfae','02e86a61e99746bea34236ea73dd52a5','00030003','广告链接','AD','menu','','','ti-link','1','0','cms.link',NULL,'41','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468896230','0')
|
||||
/* cms_menu_11 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('4781372b00bb4d52b429b58e72b80c68','b2631bbdbf824cc4b74d819c87962c0d','0003000200010001','添加栏目','Add','data','','','','0','0','cms.content.channel.add',NULL,'33','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896049','0')
|
||||
/* cms_menu_12 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('50ba60ee650e4c739e6abc3ab71e4960','b2631bbdbf824cc4b74d819c87962c0d','0003000200010004','栏目排序','Sort','data','','','','0','0','cms.content.channel.sort',NULL,'36','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896092','0')
|
||||
/* cms_menu_13 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6075fc0cf0ef441b9d93cc3cab3445bf','6b6de8c720c645a1808e1c3e9ccbfc90','000300020002','文章管理','Article','menu','/platform/cms/article','data-pjax','','1','0','cms.content.article',NULL,'37','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896141','0')
|
||||
/* cms_menu_14 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('68cdbf694f71445c8587a20234d6fe31','3f330d729ca34dc9825c46122be1bfae','000300030002','链接管理','Link','menu','/platform/cms/link/link','data-pjax','','1','0','cms.link.link',NULL,'46','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468897031','0')
|
||||
/* cms_menu_15 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6b6de8c720c645a1808e1c3e9ccbfc90','02e86a61e99746bea34236ea73dd52a5','00030002','内容管理','Content','menu','','','ti-pencil-alt','1','0','cms.content',NULL,'31','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895990','0')
|
||||
/* cms_menu_16 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7125a72beee34b21ab3df9bf01b7bce6','9822bafbe3454dfd8e8b974ebc304d03','0003000300010003','删除分类','Delete','data','','','','0','0','cms.link.class.delete',NULL,'45','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896968','0')
|
||||
/* cms_menu_17 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('73a29d3f99224426b5a87c92da122275','d1e991ad38a8424daf9f7eb000ee27f4','0003000100010001','保存配置','Save','data','','','','0','0','cms.site.settings.save',NULL,'30','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468895899','0')
|
||||
/* cms_menu_18 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7db6207d0dab4d6e95a7eee4f2efe875','9822bafbe3454dfd8e8b974ebc304d03','0003000300010001','添加分类','Add','data','','','','0','0','cms.link.class.add',NULL,'43','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896947','0')
|
||||
/* cms_menu_19 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('9822bafbe3454dfd8e8b974ebc304d03','3f330d729ca34dc9825c46122be1bfae','000300030001','链接分类','Class','menu','/platform/cms/link/class','data-pjax','','1','0','cms.link.class',NULL,'42','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896932','0')
|
||||
/* cms_menu_20 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('b2631bbdbf824cc4b74d819c87962c0d','6b6de8c720c645a1808e1c3e9ccbfc90','000300020001','栏目管理','Channel','menu','/platform/cms/channel','data-pjax','','1','0','cms.content.channel',NULL,'32','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896018','0')
|
||||
/* cms_menu_21 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('d1e991ad38a8424daf9f7eb000ee27f4','d920314e925c451da6d881e7a29743b7','000300010001','网站配置','Settings','menu','/platform/cms/site','data-pjax','','1','0','cms.site.settings',NULL,'29','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468895881','0')
|
||||
/* cms_menu_22 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('d920314e925c451da6d881e7a29743b7','02e86a61e99746bea34236ea73dd52a5','00030001','站点管理','Site','menu','','','ti-world','1','0','cms.site',NULL,'28','1','1a19ef09b12344b4a797d6e6dfe7fb29','1468895821','0')
|
||||
/* cms_menu_23 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e461c62a1d5441619cd35612f3b40691','b2631bbdbf824cc4b74d819c87962c0d','0003000200010002','修改栏目','Edit','data','','','','0','0','cms.content.channel.edit',NULL,'34','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896060','0')
|
||||
/* cms_menu_24 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('ef9f436c61654ec09efbfa79a40061cf','6075fc0cf0ef441b9d93cc3cab3445bf','0003000200020002','修改文章','Edit','data','','','','0','0','cms.content.article.edit',NULL,'39','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896159','0')
|
||||
/* cms_menu_25 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('f6fba69c3b704d79834b8bd2cc753729','b2631bbdbf824cc4b74d819c87962c0d','0003000200010003','删除栏目','Delete','data','','','','0','0','cms.content.channel.delete',NULL,'35','0','1a19ef09b12344b4a797d6e6dfe7fb29','1468896072','0')
|
||||
@@ -1,103 +0,0 @@
|
||||
/* wx_menu_01 */
|
||||
update sys_menu set location=10 where path='0001'
|
||||
/* wx_menu_02 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('b0edc6861a494b79b97990dc05f0a524','','0002','微信','Wechat','menu','','','fa fa-weixin','1','0','wx',NULL,'8','1','','1467471229','0')
|
||||
/* wx_menu_03 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e4256d7b0ffc4a02906cf900322b6213','b0edc6861a494b79b97990dc05f0a524','00020001','微信会员','Member','menu','','','fa fa-user','1','0','wx.user',NULL,'1','1','','1467471292','0')
|
||||
/* wx_menu_04 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('b19b23b0459a4754bf1fb8cb234450f2','e4256d7b0ffc4a02906cf900322b6213','000200010001','会员列表','List','menu','/platform/wx/user/index','data-pjax','','1','0','wx.user.list',NULL,'2','0','','1467471357','0')
|
||||
/* wx_menu_05 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('4dc997fef71e4862b9db22de8e99a618','b19b23b0459a4754bf1fb8cb234450f2','0002000100010001','同步会员信息','Sync','data','','','','0','0','wx.user.list.sync',NULL,'0','0','','1467473044','0')
|
||||
/* wx_menu_06 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('9f20a757a6bc40ddbb650c70debbf660','b0edc6861a494b79b97990dc05f0a524','00020002','消息管理','Message','menu','','','ti-pencil-alt','1','0','wx.msg',NULL,'3','1','','1467471415','0')
|
||||
/* wx_menu_07 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('f426468abf714b1599729f8c36ebbb0d','9f20a757a6bc40ddbb650c70debbf660','000200020001','会员消息','Msg','menu','/platform/wx/msg/user','data-pjax','','1','0','wx.msg.user',NULL,'4','1','','1467471478','0')
|
||||
/* wx_menu_08 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('1734e586e96941268a4c5248b593cef9','f426468abf714b1599729f8c36ebbb0d','0002000200010001','回复消息','Reply','data','','','','0','0','wx.msg.user.reply',NULL,'0','0','','1467473127','0')
|
||||
/* wx_menu_09 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6bb17a41f6394ed0a8a6faf5ff781354','9f20a757a6bc40ddbb650c70debbf660','000200020002','群发消息','Mass','menu','/platform/wx/msg/mass','data-pjax','','1','0','wx.msg.mass',NULL,'5','0','','1467471561','0')
|
||||
/* wx_menu_10 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('56d0658c5a8848818ac05e8ffa5c0570','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020001','添加图文','Add','data','','','','0','0','wx.msg.mass.addNews',NULL,'0','0','','1467473338','0')
|
||||
/* wx_menu_11 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('ce709456e867425297955b3c40406d7e','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020002','删除图文','Delete','data','','','','0','0','wx.msg.mass.delNews',NULL,'0','0','','1467473363','0')
|
||||
/* wx_menu_12 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3099f497480c4b1987bce3f3a26c3fb4','6bb17a41f6394ed0a8a6faf5ff781354','0002000200020003','群发消息','Push','data','','','','0','0','wx.msg.mass.pushNews',NULL,'0','0','','1467473400','0')
|
||||
/* wx_menu_13 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('4cd8e4e9519e4cff95465194fdcc8d88','b0edc6861a494b79b97990dc05f0a524','00020003','自动回复','AutoReply','menu','','','ti-back-left','1','0','wx.reply',NULL,'6','1','','1467471610','0')
|
||||
/* wx_menu_14 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('234f8ec3c2bc42bf9f6202aecae36fd6','4cd8e4e9519e4cff95465194fdcc8d88','000200030001','文本内容','Txt','menu','/platform/wx/reply/txt','data-pjax','','1','0','wx.reply.txt',NULL,'7','0','','1467471884','0')
|
||||
/* wx_menu_15 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('c3a44b478d3241b899b9c3f4611bc2b6','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010001','添加文本','Add','data','','','','0','0','wx.reply.txt.add',NULL,'0','0','','1467473460','0')
|
||||
/* wx_menu_16 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('fd63a8e389e04ff3a86c3cea53a3b9d5','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010002','修改文本','Edit','data','','','','0','0','wx.reply.txt.edit',NULL,'0','0','','1467473519','0')
|
||||
/* wx_menu_17 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7c040dfd8db347e5956a3bc1764653dc','234f8ec3c2bc42bf9f6202aecae36fd6','0002000300010003','删除文本','Delete','data','','','','0','0','wx.reply.txt.delete',NULL,'0','0','','1467473540','0')
|
||||
/* wx_menu_18 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('234f8ec3c2bc42bf9f6202aecae36f99','4cd8e4e9519e4cff95465194fdcc8d88','000200030005','图片内容','Img','menu','/platform/wx/reply/img','data-pjax','','1','0','wx.reply.img',NULL,'8','0','','1467471884','0')
|
||||
/* wx_menu_19 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('c3a44b478d3241b899b9c3f4611bc216','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050001','添加图片','Add','data','','','','0','0','wx.reply.img.add',NULL,'0','0','','1467473460','0')
|
||||
/* wx_menu_20 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('fd63a8e389e04ff3a86c3cea53a3b925','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050002','修改图片','Edit','data','','','','0','0','wx.reply.img.edit',NULL,'0','0','','1467473519','0')
|
||||
/* wx_menu_21 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('7c040dfd8db347e5956a3bc17646533c','234f8ec3c2bc42bf9f6202aecae36f99','0002000300050003','删除图片','Delete','data','','','','0','0','wx.reply.img.delete',NULL,'0','0','','1467473540','0')
|
||||
/* wx_menu_22 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('17e1ee23ca1443f1bc886c2f5eb7c24b','4cd8e4e9519e4cff95465194fdcc8d88','000200030002','图文内容','News','menu','/platform/wx/reply/news','data-pjax','','1','0','wx.reply.news',NULL,'9','0','','1467471926','0')
|
||||
/* wx_menu_23 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2275cb125710414e91b617dd7c62f12c','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020001','添加图文','add','data','','','','0','0','wx.reply.news.add',NULL,'0','0','','1467473585','0')
|
||||
/* wx_menu_24 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('0a972ce655cb4c84809d58668b655900','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020002','修改图文','Edit','data','','','','0','0','wx.reply.news.edit',NULL,'0','0','','1467473596','0')
|
||||
/* wx_menu_25 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('fc52d5284b8f4522802383c1ef732242','17e1ee23ca1443f1bc886c2f5eb7c24b','0002000300020003','删除图文','Delete','data','','','','0','0','wx.reply.news.delete',NULL,'0','0','','1467473606','0')
|
||||
/* wx_menu_26 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2cb327ad59b140828fd26eb2a46cb948','4cd8e4e9519e4cff95465194fdcc8d88','000200030003','关注自动回复','Follow','menu','/platform/wx/reply/conf/follow','data-pjax','','1','0','wx.reply.follow',NULL,'10','0','','1467472280','0')
|
||||
/* wx_menu_27 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('dd965b2c1dfd493fb5efc7e4bcac99d4','2cb327ad59b140828fd26eb2a46cb948','0002000300030001','添加绑定','Add','data','','','','0','0','wx.reply.follow.add',NULL,'0','0','','1467474026','0')
|
||||
/* wx_menu_28 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('30a5e70a1456447ebf90b5546e9bc321','2cb327ad59b140828fd26eb2a46cb948','0002000300030002','修改绑定','Edit','data','','','','0','0','wx.reply.follow.edit',NULL,'0','0','','1467474056','0')
|
||||
/* wx_menu_29 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2a63040409094f1e9dc535dd78ce15b7','2cb327ad59b140828fd26eb2a46cb948','0002000300030003','删除绑定','Delete','data','','','','0','0','wx.reply.follow.delete',NULL,'0','0','','1467474080','0')
|
||||
/* wx_menu_30 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('0706112ff5dc46e388064a99bcdb0561','4cd8e4e9519e4cff95465194fdcc8d88','000200030004','关键词回复','Keyword','menu','/platform/wx/reply/conf/keyword','data-pjax','','1','0','wx.reply.keyword',NULL,'11','0','','1467472362','0')
|
||||
/* wx_menu_31 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e864c78aba63448892cbcb6a3a7f4da7','0706112ff5dc46e388064a99bcdb0561','0002000300040001','添加绑定','Add','data','','','','0','0','wx.reply.keyword.add',NULL,'0','0','','1467474113','0')
|
||||
/* wx_menu_32 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('ff6cd243a77c4ae98dacf6149c816c75','0706112ff5dc46e388064a99bcdb0561','0002000300040002','修改绑定','Edit','data','','','','0','0','wx.reply.keyword.edit',NULL,'0','0','','1467474125','0')
|
||||
/* wx_menu_33 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('733d3f35d49f45af99ca9220048583ba','0706112ff5dc46e388064a99bcdb0561','0002000300040003','删除绑定','Delete','data','','','','0','0','wx.reply.keyword.delete',NULL,'0','0','','1467474136','0')
|
||||
/* wx_menu_34 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('bcf64d623fdd4519ae345b7a08c071a1','b0edc6861a494b79b97990dc05f0a524','00020004','微信配置','Config','menu','','','fa fa-weixin','1','0','wx.conf',NULL,'12','1','','1467472498','0')
|
||||
/* wx_menu_35 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('66cc21d7ce104dd6877cbce114c59fb3','bcf64d623fdd4519ae345b7a08c071a1','000200040001','帐号配置','Account','menu','/platform/wx/conf/account','data-pjax','','1','0','wx.conf.account',NULL,'13','0','','1467472624','0')
|
||||
/* wx_menu_36 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('309dc29ad3c34408a68df8f867a5c9ff','66cc21d7ce104dd6877cbce114c59fb3','0002000400010001','添加帐号','Add','data','','','','0','0','wx.conf.account.add',NULL,'0','0','','1467474187','0')
|
||||
/* wx_menu_37 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('96554b09a2dd4f82bab7546fa59acd35','66cc21d7ce104dd6877cbce114c59fb3','0002000400010002','修改帐号','Edit','data','','','','0','0','wx.conf.account.edit',NULL,'0','0','','1467474197','0')
|
||||
/* wx_menu_38 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('d568f4c2b687404e8aec7b9edcae5767','66cc21d7ce104dd6877cbce114c59fb3','0002000400010003','删除帐号','Delete','data','','','','0','0','wx.conf.account.delete',NULL,'0','0','','1467474209','0')
|
||||
/* wx_menu_39 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('2fab774f8b6d40cb9d7e187babab2d91','bcf64d623fdd4519ae345b7a08c071a1','000200040002','菜单配置','Menu','menu','/platform/wx/conf/menu','data-pjax','','1','0','wx.conf.menu',NULL,'14','0','','1467472649','0')
|
||||
/* wx_menu_40 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('45d958ca78304f25b51f6c71cf66f6d8','2fab774f8b6d40cb9d7e187babab2d91','0002000400020001','添加菜单','Add','data','','','','0','0','wx.conf.menu.add',NULL,'0','0','','1467474283','0')
|
||||
/* wx_menu_41 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('44da90bc76a5419a841f4924333f7a66','2fab774f8b6d40cb9d7e187babab2d91','0002000400020002','修改菜单','Edit','data','','','','0','0','wx.conf.menu.edit',NULL,'0','0','','1467474294','0')
|
||||
/* wx_menu_42 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('9a9557177d334c209cf73c3817fe3b63','2fab774f8b6d40cb9d7e187babab2d91','0002000400020003','删除菜单','Delete','data','','','','0','0','wx.conf.menu.delete',NULL,'0','0','','1467474304','0')
|
||||
/* wx_menu_43 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('0a43d291e0c94ad88c8b690009279e34','2fab774f8b6d40cb9d7e187babab2d91','0002000400020004','保存排序','Save','data','','','','0','0','wx.conf.menu.sort',NULL,'0','0','','1467474314','0')
|
||||
/* wx_menu_44 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('5244f5c38eb24b918e9ad64d456daa38','2fab774f8b6d40cb9d7e187babab2d91','0002000400020005','推送到微信','Push','data','','','','0','0','wx.conf.menu.push',NULL,'0','0','','1467474330','0')
|
||||
/* wx_menu_45 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('6afc5075913d4df4b44a6476080e35a0','b0edc6861a494b79b97990dc05f0a524','00020005','模板消息','Template','menu','','','ti-notepad','1','0','wx.tpl',NULL,'50','1','','1470406797','0')
|
||||
/* wx_menu_46 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('1385ae887e5c4b8aa33fbf228be7f907','6afc5075913d4df4b44a6476080e35a0','000200050001','模板编号','Id','menu','/platform/wx/tpl/id','data-pjax','','1','0','wx.tpl.id',NULL,'51','0','','1470406854','0')
|
||||
/* wx_menu_47 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('e6b6224617b04090a76e46a4b048fb96','1385ae887e5c4b8aa33fbf228be7f907','0002000500010001','添加编号','Add','data','','','','0','0','wx.tpl.id.add',NULL,'54','0','','1470407055','0')
|
||||
/* wx_menu_48 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('3888f05aa4064f788ba7ec51c495ce7c','1385ae887e5c4b8aa33fbf228be7f907','0002000500010002','删除编号','Delete','data','','','','0','0','wx.tpl.id.delete',NULL,'55','0','','1470407068','0')
|
||||
/* wx_menu_49 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('cabbe834a7474675b899e8442b5c2604','6afc5075913d4df4b44a6476080e35a0','000200050002','模板列表','List','menu','/platform/wx/tpl/list','data-pjax','','1','0','wx.tpl.list',NULL,'52','0','','1470406883','0')
|
||||
/* wx_menu_50 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('a11163584dfe456cbfd6fb2d4b74391b','cabbe834a7474675b899e8442b5c2604','0002000500020001','获取列表','Get','data','','','','0','0','wx.tpl.list.get',NULL,'56','0','','1470407390','0')
|
||||
/* wx_menu_51 */
|
||||
insert into sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, delFlag) values('c76a84f871d047db955dd1465c845ac1','6afc5075913d4df4b44a6476080e35a0','000200050003','发送记录','Log','menu','/platform/wx/tpl/log','data-pjax','','1','0','wx.tpl.log',NULL,'53','0','','1470406926','0')
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT
|
||||
'a0f47f6a6d734c8b9c6ce5c0dfd80001',
|
||||
'',
|
||||
LPAD(IFNULL(MAX(CAST(path AS UNSIGNED)), 0) + 1, 4, '0'),
|
||||
'学习教育平台',
|
||||
'Learning',
|
||||
'menu',
|
||||
'',
|
||||
'',
|
||||
'ti-book',
|
||||
1,
|
||||
0,
|
||||
'learning',
|
||||
NULL,
|
||||
990,
|
||||
1,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
0,
|
||||
'PC',
|
||||
NULL,
|
||||
NULL,
|
||||
'x',
|
||||
0,
|
||||
0
|
||||
FROM sys_menu
|
||||
WHERE (parentId = '' OR parentId IS NULL)
|
||||
AND CHAR_LENGTH(path) = 4
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'a0f47f6a6d734c8b9c6ce5c0dfd80002', p.id, CONCAT(p.path, '0001'), '课程类型设置', 'Course Type', 'menu', '/platform/learning/course/type', 'data-pjax', '', 1, 0, 'learning.course.type', NULL, 1, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', NULL, NULL, 'k', 0, 0
|
||||
FROM sys_menu p
|
||||
WHERE p.permission = 'learning'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning.course.type') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'a0f47f6a6d734c8b9c6ce5c0dfd80003', p.id, CONCAT(p.path, '0002'), '课程管理', 'Course Manage', 'menu', '/platform/learning/course/manage', 'data-pjax', '', 1, 0, 'learning.course.manage', NULL, 2, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', NULL, NULL, 'k', 0, 0
|
||||
FROM sys_menu p
|
||||
WHERE p.permission = 'learning'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning.course.manage') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'a0f47f6a6d734c8b9c6ce5c0dfd80004', p.id, CONCAT(p.path, '0003'), '章节内容管理', 'Chapter Content', 'menu', '/platform/learning/chapter/content', 'data-pjax', '', 1, 0, 'learning.chapter.content', NULL, 3, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', NULL, NULL, 'z', 0, 0
|
||||
FROM sys_menu p
|
||||
WHERE p.permission = 'learning'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning.chapter.content') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'a0f47f6a6d734c8b9c6ce5c0dfd80005', p.id, CONCAT(p.path, '0004'), '课程展示', 'Course Display', 'menu', '/platform/learning/course/display', 'data-pjax', '', 1, 0, 'learning.course.display', NULL, 4, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', NULL, NULL, 'k', 0, 0
|
||||
FROM sys_menu p
|
||||
WHERE p.permission = 'learning'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning.course.display') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'a0f47f6a6d734c8b9c6ce5c0dfd80006', p.id, CONCAT(p.path, '0005'), '学习活动管理', 'Activity Manage', 'menu', '/platform/learning/activity/manage', 'data-pjax', '', 1, 0, 'learning.activity.manage', NULL, 5, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', NULL, NULL, 'x', 0, 0
|
||||
FROM sys_menu p
|
||||
WHERE p.permission = 'learning'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning.activity.manage') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'a0f47f6a6d734c8b9c6ce5c0dfd80007', p.id, CONCAT(p.path, '0006'), '学习统计', 'Learning Statistics', 'menu', '/platform/learning/statistics', 'data-pjax', '', 1, 0, 'learning.statistics', NULL, 6, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', NULL, NULL, 'x', 0, 0
|
||||
FROM sys_menu p
|
||||
WHERE p.permission = 'learning'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning.statistics') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'a0f47f6a6d734c8b9c6ce5c0dfd80008', p.id, CONCAT(p.path, '0007'), '我的学习记录', 'My Learning Record', 'menu', '/platform/learning/my/record', 'data-pjax', '', 1, 0, 'learning.my.record', NULL, 7, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', NULL, NULL, 'w', 0, 0
|
||||
FROM sys_menu p
|
||||
WHERE p.permission = 'learning'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'learning.my.record') t);
|
||||
|
||||
INSERT INTO sys_role_menu (roleId, menuId)
|
||||
SELECT r.id, m.id
|
||||
FROM sys_role r
|
||||
JOIN sys_menu m ON m.permission IN (
|
||||
'learning',
|
||||
'learning.course.type',
|
||||
'learning.course.manage',
|
||||
'learning.chapter.content',
|
||||
'learning.course.display',
|
||||
'learning.activity.manage',
|
||||
'learning.statistics',
|
||||
'learning.my.record'
|
||||
)
|
||||
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
|
||||
WHERE r.code = 'SYSADMIN'
|
||||
AND rm.roleId IS NULL;
|
||||
@@ -1,160 +0,0 @@
|
||||
-- 问卷服务菜单初始化
|
||||
-- 使用 permission 做幂等判断,避免同一环境重复执行时插入重复菜单。
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT
|
||||
'f6c0c37d2d7a4a22b5c7b1a1qsv0001',
|
||||
'',
|
||||
LPAD(IFNULL(MAX(CAST(path AS UNSIGNED)), 0) + 1, 4, '0'),
|
||||
'日常办公',
|
||||
'Day Office Work',
|
||||
'menu',
|
||||
'',
|
||||
'',
|
||||
'ti-briefcase',
|
||||
1,
|
||||
0,
|
||||
'dayofficework',
|
||||
NULL,
|
||||
600,
|
||||
1,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
0,
|
||||
'PC',
|
||||
NULL,
|
||||
NULL,
|
||||
'r',
|
||||
0,
|
||||
0
|
||||
FROM sys_menu
|
||||
WHERE (parentId = '' OR parentId IS NULL)
|
||||
AND CHAR_LENGTH(path) = 4
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'dayofficework') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT
|
||||
'f6c0c37d2d7a4a22b5c7b1a1qsv0002',
|
||||
p.id,
|
||||
CONCAT(p.path, LPAD(IFNULL(MAX(CAST(SUBSTRING(c.path, CHAR_LENGTH(p.path) + 1, 4) AS UNSIGNED)), 0) + 1, 4, '0')),
|
||||
'问卷服务',
|
||||
'Questionnaire Service',
|
||||
'menu',
|
||||
'',
|
||||
'',
|
||||
'fa fa-list-alt',
|
||||
1,
|
||||
0,
|
||||
'qsv',
|
||||
NULL,
|
||||
1,
|
||||
1,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
0,
|
||||
'PC',
|
||||
p.moduleId,
|
||||
NULL,
|
||||
'w',
|
||||
0,
|
||||
0
|
||||
FROM sys_menu p
|
||||
LEFT JOIN sys_menu c ON c.parentId = p.id AND CHAR_LENGTH(c.path) = CHAR_LENGTH(p.path) + 4
|
||||
WHERE p.permission = 'dayofficework'
|
||||
GROUP BY p.id, p.path, p.moduleId
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'qsv') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'f6c0c37d2d7a4a22b5c7b1a1qsv0003', p.id, CONCAT(p.path, LPAD(IFNULL(MAX(CAST(SUBSTRING(c.path, CHAR_LENGTH(p.path) + 1, 4) AS UNSIGNED)), 0) + 1, 4, '0')), '问卷管理', 'Questionnaire Manage', 'menu', '/platform/qsv/activity', 'data-pjax', '', 1, 0, 'qsv.activity', NULL, 1, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', p.moduleId, NULL, 'w', 0, 0
|
||||
FROM sys_menu p
|
||||
LEFT JOIN sys_menu c ON c.parentId = p.id AND CHAR_LENGTH(c.path) = CHAR_LENGTH(p.path) + 4
|
||||
WHERE p.permission = 'qsv'
|
||||
GROUP BY p.id, p.path, p.moduleId
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'qsv.activity') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'f6c0c37d2d7a4a22b5c7b1a1qsv0004', p.id, CONCAT(p.path, LPAD(IFNULL(MAX(CAST(SUBSTRING(c.path, CHAR_LENGTH(p.path) + 1, 4) AS UNSIGNED)), 0) + 1, 4, '0')), '题库管理', 'Question Bank', 'menu', '/platform/qsv/bank', 'data-pjax', '', 1, 0, 'qsv.bank', NULL, 2, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', p.moduleId, NULL, 't', 0, 0
|
||||
FROM sys_menu p
|
||||
LEFT JOIN sys_menu c ON c.parentId = p.id AND CHAR_LENGTH(c.path) = CHAR_LENGTH(p.path) + 4
|
||||
WHERE p.permission = 'qsv'
|
||||
GROUP BY p.id, p.path, p.moduleId
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'qsv.bank') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'f6c0c37d2d7a4a22b5c7b1a1qsv0005', p.id, CONCAT(p.path, LPAD(IFNULL(MAX(CAST(SUBSTRING(c.path, CHAR_LENGTH(p.path) + 1, 4) AS UNSIGNED)), 0) + 1, 4, '0')), '调查统计', 'Survey Statistics', 'menu', '/platform/qsv/survey', 'data-pjax', '', 1, 0, 'qsv.survey', NULL, 3, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', p.moduleId, NULL, 'd', 0, 0
|
||||
FROM sys_menu p
|
||||
LEFT JOIN sys_menu c ON c.parentId = p.id AND CHAR_LENGTH(c.path) = CHAR_LENGTH(p.path) + 4
|
||||
WHERE p.permission = 'qsv'
|
||||
GROUP BY p.id, p.path, p.moduleId
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'qsv.survey') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'f6c0c37d2d7a4a22b5c7b1a1qsv0006', p.id, CONCAT(p.path, LPAD(IFNULL(MAX(CAST(SUBSTRING(c.path, CHAR_LENGTH(p.path) + 1, 4) AS UNSIGNED)), 0) + 1, 4, '0')), '答题排行', 'Quiz Rank', 'menu', '/platform/qsv/quizRank', 'data-pjax', '', 1, 0, 'qsv.quiz.rank', NULL, 4, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', p.moduleId, NULL, 'd', 0, 0
|
||||
FROM sys_menu p
|
||||
LEFT JOIN sys_menu c ON c.parentId = p.id AND CHAR_LENGTH(c.path) = CHAR_LENGTH(p.path) + 4
|
||||
WHERE p.permission = 'qsv'
|
||||
GROUP BY p.id, p.path, p.moduleId
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'qsv.quiz.rank') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT 'f6c0c37d2d7a4a22b5c7b1a1qsv0007', p.id, CONCAT(p.path, LPAD(IFNULL(MAX(CAST(SUBSTRING(c.path, CHAR_LENGTH(p.path) + 1, 4) AS UNSIGNED)), 0) + 1, 4, '0')), '在线答题', 'Online Quiz', 'menu', '/platform/qsv/online', 'data-pjax', '', 1, 0, 'qsv.online', NULL, 5, 0, '', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0, 'PC', p.moduleId, NULL, 'z', 0, 0
|
||||
FROM sys_menu p
|
||||
LEFT JOIN sys_menu c ON c.parentId = p.id AND CHAR_LENGTH(c.path) = CHAR_LENGTH(p.path) + 4
|
||||
WHERE p.permission = 'qsv'
|
||||
GROUP BY p.id, p.path, p.moduleId
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'qsv.online') t);
|
||||
|
||||
INSERT INTO sys_menu (id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled, permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService)
|
||||
SELECT
|
||||
'f6c0c37d2d7a4a22b5c7b1a1qsv0008',
|
||||
'',
|
||||
LPAD(IFNULL(MAX(CAST(path AS UNSIGNED)), 0) + 1, 4, '0'),
|
||||
'问卷服务',
|
||||
'Questionnaire Service',
|
||||
'menu',
|
||||
'/platform/h5/qsv',
|
||||
'data-pjax',
|
||||
'',
|
||||
1,
|
||||
0,
|
||||
'h5.qsv',
|
||||
NULL,
|
||||
601,
|
||||
0,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
0,
|
||||
'H5',
|
||||
NULL,
|
||||
'/assets/mobile/svg/qsv/icon.svg',
|
||||
'w',
|
||||
1,
|
||||
1
|
||||
FROM sys_menu
|
||||
WHERE (parentId = '' OR parentId IS NULL)
|
||||
AND CHAR_LENGTH(path) = 4
|
||||
HAVING NOT EXISTS (SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'h5.qsv') t);
|
||||
|
||||
-- 给系统管理员默认授权,其他角色可在角色管理中按需分配。
|
||||
INSERT INTO sys_role_menu (roleId, menuId)
|
||||
SELECT r.id, m.id
|
||||
FROM sys_role r
|
||||
JOIN sys_menu m ON m.permission IN (
|
||||
'dayofficework',
|
||||
'qsv',
|
||||
'qsv.activity',
|
||||
'qsv.bank',
|
||||
'qsv.survey',
|
||||
'qsv.quiz.rank',
|
||||
'qsv.online',
|
||||
'h5.qsv'
|
||||
)
|
||||
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
|
||||
WHERE r.code = 'SYSADMIN'
|
||||
AND rm.roleId IS NULL;
|
||||
@@ -1,64 +0,0 @@
|
||||
-- Home work template menu. Prefer a sibling of sys.homeActivity, then sys.manager, then sys.
|
||||
INSERT INTO sys_menu (
|
||||
id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled,
|
||||
permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt,
|
||||
delFlag, platform, moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService
|
||||
)
|
||||
SELECT
|
||||
'e6ed122326a8492fa7f415f97eaf4f01',
|
||||
parent.id,
|
||||
CONCAT(parent.path, LPAD(IFNULL(child.maxNo, 0) + 1, 4, '0')),
|
||||
'Work Template',
|
||||
'Work Template',
|
||||
'menu',
|
||||
'/platform/sys/worktemplate',
|
||||
'data-pjax',
|
||||
'',
|
||||
1,
|
||||
0,
|
||||
'sys.worktemplate',
|
||||
NULL,
|
||||
IFNULL(child.maxLocation, 0) + 1,
|
||||
0,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
'',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
0,
|
||||
'PC',
|
||||
NULL,
|
||||
NULL,
|
||||
'g',
|
||||
0,
|
||||
0
|
||||
FROM (
|
||||
SELECT p.*
|
||||
FROM sys_menu p
|
||||
WHERE p.id = (SELECT h.parentId FROM sys_menu h WHERE h.permission = 'sys.homeActivity' LIMIT 1)
|
||||
OR p.permission IN ('sys.manager', 'sys')
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN p.id = (SELECT h.parentId FROM sys_menu h WHERE h.permission = 'sys.homeActivity' LIMIT 1) THEN 0
|
||||
WHEN p.permission = 'sys.manager' THEN 1
|
||||
ELSE 2
|
||||
END
|
||||
LIMIT 1
|
||||
) parent
|
||||
LEFT JOIN (
|
||||
SELECT parentId,
|
||||
MAX(CAST(RIGHT(path, 4) AS UNSIGNED)) AS maxNo,
|
||||
MAX(location) AS maxLocation
|
||||
FROM sys_menu
|
||||
GROUP BY parentId
|
||||
) child ON child.parentId = parent.id
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu WHERE permission = 'sys.worktemplate'
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_menu (roleId, menuId)
|
||||
SELECT r.id, m.id
|
||||
FROM sys_role r
|
||||
JOIN sys_menu m ON m.permission = 'sys.worktemplate'
|
||||
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
|
||||
WHERE r.code = 'SYSADMIN'
|
||||
AND rm.roleId IS NULL;
|
||||
@@ -1,49 +0,0 @@
|
||||
INSERT INTO sys_menu (
|
||||
id, parentId, path, name, aliasName, type, href, target, icon, showit, disabled,
|
||||
permission, note, location, hasChildren, createdBy, createdAt, updatedBy, updatedAt,
|
||||
delFlag, processKey, platform, moduleId, isQuickEntry, picIcon, initialPinyinName,
|
||||
isRecommendApp, isRecommendService
|
||||
)
|
||||
SELECT
|
||||
'2a46a3fd5e284b0ea508264bd7f6ab31',
|
||||
'5ba858277fa44aaf958b32055468f52a',
|
||||
'000100040004',
|
||||
'高级工具',
|
||||
NULL,
|
||||
'menu',
|
||||
'/platform/sys/data/tool',
|
||||
'data-pjax',
|
||||
NULL,
|
||||
1,
|
||||
0,
|
||||
'sys.data.advanced.tool',
|
||||
NULL,
|
||||
588,
|
||||
0,
|
||||
'29847d7826aa415a92d03b9576d01d3f',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
'29847d7826aa415a92d03b9576d01d3f',
|
||||
UNIX_TIMESTAMP(NOW()) * 1000,
|
||||
0,
|
||||
NULL,
|
||||
'PC',
|
||||
NULL,
|
||||
0,
|
||||
NULL,
|
||||
'g',
|
||||
0,
|
||||
0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu WHERE permission = 'sys.data.advanced.tool'
|
||||
);
|
||||
|
||||
INSERT INTO sys_role_menu (roleId, menuId)
|
||||
SELECT
|
||||
oldMap.roleId,
|
||||
newMenu.id
|
||||
FROM sys_role_menu oldMap
|
||||
JOIN sys_menu oldMenu ON oldMenu.id = oldMap.menuId AND oldMenu.permission = 'sys.data.user.pull'
|
||||
JOIN sys_menu newMenu ON newMenu.permission = 'sys.data.advanced.tool'
|
||||
LEFT JOIN sys_role_menu existsMap ON existsMap.roleId = oldMap.roleId AND existsMap.menuId = newMenu.id
|
||||
WHERE existsMap.roleId IS NULL;
|
||||
@@ -1,3 +0,0 @@
|
||||
ALTER TABLE qsv_subject
|
||||
ADD COLUMN option_layout VARCHAR(20) DEFAULT 'VERTICAL' COMMENT '投票选项排列方式',
|
||||
ADD COLUMN option_columns INT DEFAULT 1 COMMENT '投票选项横向列数';
|
||||
@@ -1,62 +0,0 @@
|
||||
/*QUARTZ_23*/
|
||||
CREATE TABLE sys_qrtz_job_details(SCHED_NAME VARCHAR2(120) NOT NULL,JOB_NAME VARCHAR2(200) NOT NULL,JOB_GROUP VARCHAR2(200) NOT NULL,DESCRIPTION VARCHAR2(250) NULL,JOB_CLASS_NAME VARCHAR2(250) NOT NULL, IS_DURABLE VARCHAR2(1) NOT NULL,IS_NONCONCURRENT VARCHAR2(1) NOT NULL,IS_UPDATE_DATA VARCHAR2(1) NOT NULL,REQUESTS_RECOVERY VARCHAR2(1) NOT NULL,JOB_DATA BLOB NULL,CONSTRAINT JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
/*QUARTZ_24*/
|
||||
CREATE TABLE sys_qrtz_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,JOB_NAME VARCHAR2(200) NOT NULL, JOB_GROUP VARCHAR2(200) NOT NULL,DESCRIPTION VARCHAR2(250) NULL,NEXT_FIRE_TIME NUMBER(13) NULL,PREV_FIRE_TIME NUMBER(13) NULL,PRIORITY NUMBER(13) NULL,TRIGGER_STATE VARCHAR2(16) NOT NULL,TRIGGER_TYPE VARCHAR2(8) NOT NULL,START_TIME NUMBER(13) NOT NULL,END_TIME NUMBER(13) NULL,CALENDAR_NAME VARCHAR2(200) NULL,MISFIRE_INSTR NUMBER(2) NULL,JOB_DATA BLOB NULL,CONSTRAINT TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) REFERENCES sys_qrtz_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
/*QUARTZ_25*/
|
||||
CREATE TABLE sys_qrtz_simple_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL, REPEAT_COUNT NUMBER(7) NOT NULL,REPEAT_INTERVAL NUMBER(12) NOT NULL,TIMES_TRIGGERED NUMBER(10) NOT NULL,CONSTRAINT SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), CONSTRAINT SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_26*/
|
||||
CREATE TABLE sys_qrtz_cron_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL, CRON_EXPRESSION VARCHAR2(120) NOT NULL, TIME_ZONE_ID VARCHAR2(80),CONSTRAINT CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_27*/
|
||||
CREATE TABLE sys_qrtz_simprop_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,STR_PROP_1 VARCHAR2(512) NULL,STR_PROP_2 VARCHAR2(512) NULL,STR_PROP_3 VARCHAR2(512) NULL,INT_PROP_1 NUMBER(10) NULL,INT_PROP_2 NUMBER(10) NULL,LONG_PROP_1 NUMBER(13) NULL,LONG_PROP_2 NUMBER(13) NULL,DEC_PROP_1 NUMERIC(13,4) NULL,DEC_PROP_2 NUMERIC(13,4) NULL,BOOL_PROP_1 VARCHAR2(1) NULL,BOOL_PROP_2 VARCHAR2(1) NULL,CONSTRAINT SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_28*/
|
||||
CREATE TABLE sys_qrtz_blob_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,BLOB_DATA BLOB NULL,CONSTRAINT BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_29*/
|
||||
CREATE TABLE sys_qrtz_calendars(SCHED_NAME VARCHAR2(120) NOT NULL,CALENDAR_NAME VARCHAR2(200) NOT NULL,CALENDAR BLOB NOT NULL,CONSTRAINT CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME))
|
||||
/*QUARTZ_30*/
|
||||
CREATE TABLE sys_qrtz_paused_trigger_grps(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,CONSTRAINT PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_31*/
|
||||
CREATE TABLE sys_qrtz_fired_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,ENTRY_ID VARCHAR2(95) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,INSTANCE_NAME VARCHAR2(200) NOT NULL,FIRED_TIME NUMBER(13) NOT NULL,SCHED_TIME NUMBER(13) NOT NULL,PRIORITY NUMBER(13) NOT NULL,STATE VARCHAR2(16) NOT NULL,JOB_NAME VARCHAR2(200) NULL,JOB_GROUP VARCHAR2(200) NULL,IS_NONCONCURRENT VARCHAR2(1) NULL,REQUESTS_RECOVERY VARCHAR2(1) NULL,CONSTRAINT FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID))
|
||||
/*QUARTZ_32*/
|
||||
CREATE TABLE sys_qrtz_scheduler_state (SCHED_NAME VARCHAR2(120) NOT NULL,INSTANCE_NAME VARCHAR2(200) NOT NULL,LAST_CHECKIN_TIME NUMBER(13) NOT NULL,CHECKIN_INTERVAL NUMBER(13) NOT NULL,CONSTRAINT SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME))
|
||||
/*QUARTZ_33*/
|
||||
CREATE TABLE sys_qrtz_locks(SCHED_NAME VARCHAR2(120) NOT NULL,LOCK_NAME VARCHAR2(40) NOT NULL, CONSTRAINT LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME))
|
||||
/*QUARTZ_34*/
|
||||
create index qz_j_req_recovery on sys_qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY)
|
||||
/*QUARTZ_35*/
|
||||
create index qz_j_grp on sys_qrtz_job_details(SCHED_NAME,JOB_GROUP)
|
||||
/*QUARTZ_36*/
|
||||
create index qz_t_j on sys_qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
/*QUARTZ_37*/
|
||||
create index qz_t_jg on sys_qrtz_triggers(SCHED_NAME,JOB_GROUP)
|
||||
/*QUARTZ_38*/
|
||||
create index qz_t_c on sys_qrtz_triggers(SCHED_NAME,CALENDAR_NAME)
|
||||
/*QUARTZ_39*/
|
||||
create index qz_t_g on sys_qrtz_triggers(SCHED_NAME,TRIGGER_GROUP)
|
||||
/*QUARTZ_40*/
|
||||
create index qz_t_state on sys_qrtz_triggers(SCHED_NAME,TRIGGER_STATE)
|
||||
/*QUARTZ_41*/
|
||||
create index qz_t_n_state on sys_qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE)
|
||||
/*QUARTZ_42*/
|
||||
create index qz_t_n_g_state on sys_qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE)
|
||||
/*QUARTZ_43*/
|
||||
create index qz_t_next_fire_time on sys_qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME)
|
||||
/*QUARTZ_44*/
|
||||
create index qz_t_nft_st on sys_qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME)
|
||||
/*QUARTZ_45*/
|
||||
create index qz_t_nft_misfire on sys_qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME)
|
||||
/*QUARTZ_46*/
|
||||
create index qz_t_nft_st_misfire on sys_qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE)
|
||||
/*QUARTZ_47*/
|
||||
create index qz_t_nft_st_misfire_grp on sys_qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE)
|
||||
/*QUARTZ_48*/
|
||||
create index qz_ft_trig_inst_name on sys_qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME)
|
||||
/*QUARTZ_49*/
|
||||
create index qz_ft_inst_job_req_rcvry on sys_qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY)
|
||||
/*QUARTZ_50*/
|
||||
create index qz_ft_j_g on sys_qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
/*QUARTZ_51*/
|
||||
create index qz_ft_jg on sys_qrtz_fired_triggers(SCHED_NAME,JOB_GROUP)
|
||||
/*QUARTZ_52*/
|
||||
create index qz_ft_t_g on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
/*QUARTZ_53*/
|
||||
create index qz_ft_tg on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP)
|
||||
@@ -1,84 +0,0 @@
|
||||
/*QUARTZ_01*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_FIRED_TRIGGERS;
|
||||
/*QUARTZ_02*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_PAUSED_TRIGGER_GRPS;
|
||||
/*QUARTZ_03*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_SCHEDULER_STATE;
|
||||
/*QUARTZ_04*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_LOCKS;
|
||||
/*QUARTZ_05*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_SIMPLE_TRIGGERS;
|
||||
/*QUARTZ_06*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_SIMPROP_TRIGGERS;
|
||||
/*QUARTZ_07*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_CRON_TRIGGERS;
|
||||
/*QUARTZ_08*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_BLOB_TRIGGERS;
|
||||
/*QUARTZ_09*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_TRIGGERS;
|
||||
/*QUARTZ_10*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_JOB_DETAILS;
|
||||
/*QUARTZ_11*/
|
||||
DROP TABLE IF EXISTS SYS_QRTZ_CALENDARS;
|
||||
/*QUARTZ_12*/
|
||||
CREATE TABLE SYS_QRTZ_JOB_DETAILS(SCHED_NAME VARCHAR(120) NOT NULL,JOB_NAME VARCHAR(200) NOT NULL,JOB_GROUP VARCHAR(200) NOT NULL,DESCRIPTION VARCHAR(250) NULL,JOB_CLASS_NAME VARCHAR(250) NOT NULL,IS_DURABLE VARCHAR(1) NOT NULL,IS_NONCONCURRENT VARCHAR(1) NOT NULL,IS_UPDATE_DATA VARCHAR(1) NOT NULL,REQUESTS_RECOVERY VARCHAR(1) NOT NULL,JOB_DATA BLOB NULL,PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP))ENGINE=InnoDB;
|
||||
/*QUARTZ_13*/
|
||||
CREATE TABLE SYS_QRTZ_TRIGGERS(SCHED_NAME VARCHAR(120) NOT NULL,TRIGGER_NAME VARCHAR(200) NOT NULL,TRIGGER_GROUP VARCHAR(200) NOT NULL,JOB_NAME VARCHAR(200) NOT NULL,JOB_GROUP VARCHAR(200) NOT NULL,DESCRIPTION VARCHAR(250) NULL,NEXT_FIRE_TIME BIGINT(13) NULL,PREV_FIRE_TIME BIGINT(13) NULL,PRIORITY INTEGER NULL,TRIGGER_STATE VARCHAR(16) NOT NULL,TRIGGER_TYPE VARCHAR(8) NOT NULL,START_TIME BIGINT(13) NOT NULL,END_TIME BIGINT(13) NULL,CALENDAR_NAME VARCHAR(200) NULL,MISFIRE_INSTR SMALLINT(2) NULL,JOB_DATA BLOB NULL,PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)REFERENCES SYS_QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP))ENGINE=InnoDB;
|
||||
/*QUARTZ_14*/
|
||||
CREATE TABLE SYS_QRTZ_SIMPLE_TRIGGERS(SCHED_NAME VARCHAR(120) NOT NULL,TRIGGER_NAME VARCHAR(200) NOT NULL,TRIGGER_GROUP VARCHAR(200) NOT NULL,REPEAT_COUNT BIGINT(7) NOT NULL,REPEAT_INTERVAL BIGINT(12) NOT NULL,TIMES_TRIGGERED BIGINT(10) NOT NULL,PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))ENGINE=InnoDB;
|
||||
/*QUARTZ_15*/
|
||||
CREATE TABLE SYS_QRTZ_CRON_TRIGGERS(SCHED_NAME VARCHAR(120) NOT NULL,TRIGGER_NAME VARCHAR(200) NOT NULL,TRIGGER_GROUP VARCHAR(200) NOT NULL,CRON_EXPRESSION VARCHAR(120) NOT NULL,TIME_ZONE_ID VARCHAR(80),PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))ENGINE=InnoDB;
|
||||
/*QUARTZ_16*/
|
||||
CREATE TABLE SYS_QRTZ_SIMPROP_TRIGGERS(SCHED_NAME VARCHAR(120) NOT NULL,TRIGGER_NAME VARCHAR(200) NOT NULL,TRIGGER_GROUP VARCHAR(200) NOT NULL,STR_PROP_1 VARCHAR(512) NULL,STR_PROP_2 VARCHAR(512) NULL,STR_PROP_3 VARCHAR(512) NULL,INT_PROP_1 INT NULL,INT_PROP_2 INT NULL,LONG_PROP_1 BIGINT NULL,LONG_PROP_2 BIGINT NULL,DEC_PROP_1 NUMERIC(13,4) NULL,DEC_PROP_2 NUMERIC(13,4) NULL,BOOL_PROP_1 VARCHAR(1) NULL,BOOL_PROP_2 VARCHAR(1) NULL,PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))ENGINE=InnoDB;
|
||||
/*QUARTZ_17*/
|
||||
CREATE TABLE SYS_QRTZ_BLOB_TRIGGERS (SCHED_NAME VARCHAR(120) NOT NULL,TRIGGER_NAME VARCHAR(200) NOT NULL,TRIGGER_GROUP VARCHAR(200) NOT NULL,BLOB_DATA BLOB NULL,PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))ENGINE=InnoDB;
|
||||
/*QUARTZ_18*/
|
||||
CREATE TABLE SYS_QRTZ_CALENDARS (SCHED_NAME VARCHAR(120) NOT NULL,CALENDAR_NAME VARCHAR(200) NOT NULL,CALENDAR BLOB NOT NULL,PRIMARY KEY (SCHED_NAME,CALENDAR_NAME))ENGINE=InnoDB;
|
||||
/*QUARTZ_19*/
|
||||
CREATE TABLE SYS_QRTZ_PAUSED_TRIGGER_GRPS (SCHED_NAME VARCHAR(120) NOT NULL,TRIGGER_GROUP VARCHAR(200) NOT NULL,PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP))ENGINE=InnoDB;
|
||||
/*QUARTZ_20*/
|
||||
CREATE TABLE SYS_QRTZ_FIRED_TRIGGERS (SCHED_NAME VARCHAR(120) NOT NULL,ENTRY_ID VARCHAR(95) NOT NULL,TRIGGER_NAME VARCHAR(200) NOT NULL,TRIGGER_GROUP VARCHAR(200) NOT NULL,INSTANCE_NAME VARCHAR(200) NOT NULL,FIRED_TIME BIGINT(13) NOT NULL,SCHED_TIME BIGINT(13) NOT NULL,PRIORITY INTEGER NOT NULL,STATE VARCHAR(16) NOT NULL,JOB_NAME VARCHAR(200) NULL,JOB_GROUP VARCHAR(200) NULL,IS_NONCONCURRENT VARCHAR(1) NULL,REQUESTS_RECOVERY VARCHAR(1) NULL,PRIMARY KEY (SCHED_NAME,ENTRY_ID))ENGINE=InnoDB;
|
||||
/*QUARTZ_21*/
|
||||
CREATE TABLE SYS_QRTZ_SCHEDULER_STATE (SCHED_NAME VARCHAR(120) NOT NULL,INSTANCE_NAME VARCHAR(200) NOT NULL,LAST_CHECKIN_TIME BIGINT(13) NOT NULL,CHECKIN_INTERVAL BIGINT(13) NOT NULL,PRIMARY KEY (SCHED_NAME,INSTANCE_NAME))ENGINE=InnoDB;
|
||||
/*QUARTZ_22*/
|
||||
CREATE TABLE SYS_QRTZ_LOCKS (SCHED_NAME VARCHAR(120) NOT NULL,LOCK_NAME VARCHAR(40) NOT NULL,PRIMARY KEY (SCHED_NAME,LOCK_NAME))ENGINE=InnoDB;
|
||||
/*QUARTZ_23*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_01 ON SYS_QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY);
|
||||
/*QUARTZ_24*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_02 ON SYS_QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP);
|
||||
/*QUARTZ_25*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_03 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
|
||||
/*QUARTZ_26*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_04 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP);
|
||||
/*QUARTZ_27*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_05 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME);
|
||||
/*QUARTZ_28*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_06 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);
|
||||
/*QUARTZ_29*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_07 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE);
|
||||
/*QUARTZ_30*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_08 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);
|
||||
/*QUARTZ_31*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_09 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);
|
||||
/*QUARTZ_32*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_10 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME);
|
||||
/*QUARTZ_33*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_11 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);
|
||||
/*QUARTZ_34*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_12 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);
|
||||
/*QUARTZ_35*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_13 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);
|
||||
/*QUARTZ_36*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_14 ON SYS_QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE);
|
||||
/*QUARTZ_37*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_15 ON SYS_QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME);
|
||||
/*QUARTZ_38*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_16 ON SYS_QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);
|
||||
/*QUARTZ_39*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_17 ON SYS_QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
|
||||
/*QUARTZ_40*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_18 ON SYS_QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP);
|
||||
/*QUARTZ_41*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_19 ON SYS_QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);
|
||||
/*QUARTZ_42*/
|
||||
CREATE INDEX IDX_SYS_QRTZ_20 ON SYS_QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);
|
||||
@@ -1,62 +0,0 @@
|
||||
/*QUARTZ_23*/
|
||||
CREATE TABLE sys_qrtz_job_details(SCHED_NAME VARCHAR2(120) NOT NULL,JOB_NAME VARCHAR2(200) NOT NULL,JOB_GROUP VARCHAR2(200) NOT NULL,DESCRIPTION VARCHAR2(250) NULL,JOB_CLASS_NAME VARCHAR2(250) NOT NULL, IS_DURABLE VARCHAR2(1) NOT NULL,IS_NONCONCURRENT VARCHAR2(1) NOT NULL,IS_UPDATE_DATA VARCHAR2(1) NOT NULL,REQUESTS_RECOVERY VARCHAR2(1) NOT NULL,JOB_DATA BLOB NULL,CONSTRAINT JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
/*QUARTZ_24*/
|
||||
CREATE TABLE sys_qrtz_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,JOB_NAME VARCHAR2(200) NOT NULL, JOB_GROUP VARCHAR2(200) NOT NULL,DESCRIPTION VARCHAR2(250) NULL,NEXT_FIRE_TIME NUMBER(13) NULL,PREV_FIRE_TIME NUMBER(13) NULL,PRIORITY NUMBER(13) NULL,TRIGGER_STATE VARCHAR2(16) NOT NULL,TRIGGER_TYPE VARCHAR2(8) NOT NULL,START_TIME NUMBER(13) NOT NULL,END_TIME NUMBER(13) NULL,CALENDAR_NAME VARCHAR2(200) NULL,MISFIRE_INSTR NUMBER(2) NULL,JOB_DATA BLOB NULL,CONSTRAINT TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) REFERENCES sys_qrtz_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP))
|
||||
/*QUARTZ_25*/
|
||||
CREATE TABLE sys_qrtz_simple_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL, REPEAT_COUNT NUMBER(7) NOT NULL,REPEAT_INTERVAL NUMBER(12) NOT NULL,TIMES_TRIGGERED NUMBER(10) NOT NULL,CONSTRAINT SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), CONSTRAINT SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_26*/
|
||||
CREATE TABLE sys_qrtz_cron_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL, CRON_EXPRESSION VARCHAR2(120) NOT NULL, TIME_ZONE_ID VARCHAR2(80),CONSTRAINT CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_27*/
|
||||
CREATE TABLE sys_qrtz_simprop_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,STR_PROP_1 VARCHAR2(512) NULL,STR_PROP_2 VARCHAR2(512) NULL,STR_PROP_3 VARCHAR2(512) NULL,INT_PROP_1 NUMBER(10) NULL,INT_PROP_2 NUMBER(10) NULL,LONG_PROP_1 NUMBER(13) NULL,LONG_PROP_2 NUMBER(13) NULL,DEC_PROP_1 NUMERIC(13,4) NULL,DEC_PROP_2 NUMERIC(13,4) NULL,BOOL_PROP_1 VARCHAR2(1) NULL,BOOL_PROP_2 VARCHAR2(1) NULL,CONSTRAINT SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_28*/
|
||||
CREATE TABLE sys_qrtz_blob_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,BLOB_DATA BLOB NULL,CONSTRAINT BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),CONSTRAINT BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)REFERENCES sys_qrtz_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_29*/
|
||||
CREATE TABLE sys_qrtz_calendars(SCHED_NAME VARCHAR2(120) NOT NULL,CALENDAR_NAME VARCHAR2(200) NOT NULL,CALENDAR BLOB NOT NULL,CONSTRAINT CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME))
|
||||
/*QUARTZ_30*/
|
||||
CREATE TABLE sys_qrtz_paused_trigger_grps(SCHED_NAME VARCHAR2(120) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,CONSTRAINT PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP))
|
||||
/*QUARTZ_31*/
|
||||
CREATE TABLE sys_qrtz_fired_triggers(SCHED_NAME VARCHAR2(120) NOT NULL,ENTRY_ID VARCHAR2(95) NOT NULL,TRIGGER_NAME VARCHAR2(200) NOT NULL,TRIGGER_GROUP VARCHAR2(200) NOT NULL,INSTANCE_NAME VARCHAR2(200) NOT NULL,FIRED_TIME NUMBER(13) NOT NULL,SCHED_TIME NUMBER(13) NOT NULL,PRIORITY NUMBER(13) NOT NULL,STATE VARCHAR2(16) NOT NULL,JOB_NAME VARCHAR2(200) NULL,JOB_GROUP VARCHAR2(200) NULL,IS_NONCONCURRENT VARCHAR2(1) NULL,REQUESTS_RECOVERY VARCHAR2(1) NULL,CONSTRAINT FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID))
|
||||
/*QUARTZ_32*/
|
||||
CREATE TABLE sys_qrtz_scheduler_state (SCHED_NAME VARCHAR2(120) NOT NULL,INSTANCE_NAME VARCHAR2(200) NOT NULL,LAST_CHECKIN_TIME NUMBER(13) NOT NULL,CHECKIN_INTERVAL NUMBER(13) NOT NULL,CONSTRAINT SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME))
|
||||
/*QUARTZ_33*/
|
||||
CREATE TABLE sys_qrtz_locks(SCHED_NAME VARCHAR2(120) NOT NULL,LOCK_NAME VARCHAR2(40) NOT NULL, CONSTRAINT LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME))
|
||||
/*QUARTZ_34*/
|
||||
create index qz_j_req_recovery on sys_qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY)
|
||||
/*QUARTZ_35*/
|
||||
create index qz_j_grp on sys_qrtz_job_details(SCHED_NAME,JOB_GROUP)
|
||||
/*QUARTZ_36*/
|
||||
create index qz_t_j on sys_qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
/*QUARTZ_37*/
|
||||
create index qz_t_jg on sys_qrtz_triggers(SCHED_NAME,JOB_GROUP)
|
||||
/*QUARTZ_38*/
|
||||
create index qz_t_c on sys_qrtz_triggers(SCHED_NAME,CALENDAR_NAME)
|
||||
/*QUARTZ_39*/
|
||||
create index qz_t_g on sys_qrtz_triggers(SCHED_NAME,TRIGGER_GROUP)
|
||||
/*QUARTZ_40*/
|
||||
create index qz_t_state on sys_qrtz_triggers(SCHED_NAME,TRIGGER_STATE)
|
||||
/*QUARTZ_41*/
|
||||
create index qz_t_n_state on sys_qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE)
|
||||
/*QUARTZ_42*/
|
||||
create index qz_t_n_g_state on sys_qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE)
|
||||
/*QUARTZ_43*/
|
||||
create index qz_t_next_fire_time on sys_qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME)
|
||||
/*QUARTZ_44*/
|
||||
create index qz_t_nft_st on sys_qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME)
|
||||
/*QUARTZ_45*/
|
||||
create index qz_t_nft_misfire on sys_qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME)
|
||||
/*QUARTZ_46*/
|
||||
create index qz_t_nft_st_misfire on sys_qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE)
|
||||
/*QUARTZ_47*/
|
||||
create index qz_t_nft_st_misfire_grp on sys_qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE)
|
||||
/*QUARTZ_48*/
|
||||
create index qz_ft_trig_inst_name on sys_qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME)
|
||||
/*QUARTZ_49*/
|
||||
create index qz_ft_inst_job_req_rcvry on sys_qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY)
|
||||
/*QUARTZ_50*/
|
||||
create index qz_ft_j_g on sys_qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
/*QUARTZ_51*/
|
||||
create index qz_ft_jg on sys_qrtz_fired_triggers(SCHED_NAME,JOB_GROUP)
|
||||
/*QUARTZ_52*/
|
||||
create index qz_ft_t_g on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
/*QUARTZ_53*/
|
||||
create index qz_ft_tg on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP)
|
||||
@@ -1,281 +0,0 @@
|
||||
/*QUARTZ_01*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_SYS_QRTZ_TRIGGERS_SYS_QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_TRIGGERS] DROP CONSTRAINT FK_SYS_QRTZ_TRIGGERS_SYS_QRTZ_JOB_DETAILS
|
||||
/*QUARTZ_02*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_SYS_QRTZ_CRON_TRIGGERS_SYS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_CRON_TRIGGERS] DROP CONSTRAINT FK_SYS_QRTZ_CRON_TRIGGERS_SYS_QRTZ_TRIGGERS
|
||||
/*QUARTZ_03*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_SYS_QRTZ_SIMPLE_TRIGGERS_SYS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_SIMPLE_TRIGGERS] DROP CONSTRAINT FK_SYS_QRTZ_SIMPLE_TRIGGERS_SYS_QRTZ_TRIGGERS
|
||||
/*QUARTZ_04*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_SYS_QRTZ_SIMPROP_TRIGGERS_SYS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_SIMPROP_TRIGGERS] DROP CONSTRAINT FK_SYS_QRTZ_SIMPROP_TRIGGERS_SYS_QRTZ_TRIGGERS
|
||||
/*QUARTZ_05*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_CALENDARS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_CALENDARS]
|
||||
/*QUARTZ_06*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_CRON_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_CRON_TRIGGERS]
|
||||
/*QUARTZ_07*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_BLOB_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_BLOB_TRIGGERS]
|
||||
/*QUARTZ_08*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_FIRED_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_FIRED_TRIGGERS]
|
||||
/*QUARTZ_09*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_PAUSED_TRIGGER_GRPS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_PAUSED_TRIGGER_GRPS]
|
||||
/*QUARTZ_10*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_SCHEDULER_STATE]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_SCHEDULER_STATE]
|
||||
/*QUARTZ_11*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_LOCKS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_LOCKS]
|
||||
/*QUARTZ_12*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_JOB_DETAILS]
|
||||
/*QUARTZ_13*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_SIMPLE_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_SIMPLE_TRIGGERS]
|
||||
/*QUARTZ_14*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_SIMPROP_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_SIMPROP_TRIGGERS]
|
||||
/*QUARTZ_15*/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SYS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
|
||||
DROP TABLE [dbo].[SYS_QRTZ_TRIGGERS]
|
||||
/*QUARTZ_16*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_CALENDARS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[CALENDAR_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[CALENDAR] [IMAGE] NOT NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_17*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_CRON_TRIGGERS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[CRON_EXPRESSION] [VARCHAR] (120) NOT NULL ,
|
||||
[TIME_ZONE_ID] [VARCHAR] (80)
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_18*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_FIRED_TRIGGERS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[ENTRY_ID] [VARCHAR] (95) NOT NULL ,
|
||||
[TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[INSTANCE_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[FIRED_TIME] [BIGINT] NOT NULL ,
|
||||
[SCHED_TIME] [BIGINT] NOT NULL ,
|
||||
[PRIORITY] [INTEGER] NOT NULL ,
|
||||
[STATE] [VARCHAR] (16) NOT NULL,
|
||||
[JOB_NAME] [VARCHAR] (200) NULL ,
|
||||
[JOB_GROUP] [VARCHAR] (200) NULL ,
|
||||
[IS_NONCONCURRENT] [VARCHAR] (1) NULL ,
|
||||
[REQUESTS_RECOVERY] [VARCHAR] (1) NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_19*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_PAUSED_TRIGGER_GRPS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[TRIGGER_GROUP] [VARCHAR] (200) NOT NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_20*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_SCHEDULER_STATE] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[INSTANCE_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[LAST_CHECKIN_TIME] [BIGINT] NOT NULL ,
|
||||
[CHECKIN_INTERVAL] [BIGINT] NOT NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_21*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_LOCKS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[LOCK_NAME] [VARCHAR] (40) NOT NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_22*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_JOB_DETAILS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[JOB_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[JOB_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[DESCRIPTION] [VARCHAR] (250) NULL ,
|
||||
[JOB_CLASS_NAME] [VARCHAR] (250) NOT NULL ,
|
||||
[IS_DURABLE] [VARCHAR] (1) NOT NULL ,
|
||||
[IS_NONCONCURRENT] [VARCHAR] (1) NOT NULL ,
|
||||
[IS_UPDATE_DATA] [VARCHAR] (1) NOT NULL ,
|
||||
[REQUESTS_RECOVERY] [VARCHAR] (1) NOT NULL ,
|
||||
[JOB_DATA] [IMAGE] NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_23*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_SIMPLE_TRIGGERS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[REPEAT_COUNT] [BIGINT] NOT NULL ,
|
||||
[REPEAT_INTERVAL] [BIGINT] NOT NULL ,
|
||||
[TIMES_TRIGGERED] [BIGINT] NOT NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_24*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_SIMPROP_TRIGGERS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[STR_PROP_1] [VARCHAR] (512) NULL,
|
||||
[STR_PROP_2] [VARCHAR] (512) NULL,
|
||||
[STR_PROP_3] [VARCHAR] (512) NULL,
|
||||
[INT_PROP_1] [INT] NULL,
|
||||
[INT_PROP_2] [INT] NULL,
|
||||
[LONG_PROP_1] [BIGINT] NULL,
|
||||
[LONG_PROP_2] [BIGINT] NULL,
|
||||
[DEC_PROP_1] [NUMERIC] (13,4) NULL,
|
||||
[DEC_PROP_2] [NUMERIC] (13,4) NULL,
|
||||
[BOOL_PROP_1] [VARCHAR] (1) NULL,
|
||||
[BOOL_PROP_2] [VARCHAR] (1) NULL,
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_25*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_BLOB_TRIGGERS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[BLOB_DATA] [IMAGE] NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_26*/
|
||||
CREATE TABLE [dbo].[SYS_QRTZ_TRIGGERS] (
|
||||
[SCHED_NAME] [VARCHAR] (120) NOT NULL ,
|
||||
[TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[JOB_NAME] [VARCHAR] (200) NOT NULL ,
|
||||
[JOB_GROUP] [VARCHAR] (200) NOT NULL ,
|
||||
[DESCRIPTION] [VARCHAR] (250) NULL ,
|
||||
[NEXT_FIRE_TIME] [BIGINT] NULL ,
|
||||
[PREV_FIRE_TIME] [BIGINT] NULL ,
|
||||
[PRIORITY] [INTEGER] NULL ,
|
||||
[TRIGGER_STATE] [VARCHAR] (16) NOT NULL ,
|
||||
[TRIGGER_TYPE] [VARCHAR] (8) NOT NULL ,
|
||||
[START_TIME] [BIGINT] NOT NULL ,
|
||||
[END_TIME] [BIGINT] NULL ,
|
||||
[CALENDAR_NAME] [VARCHAR] (200) NULL ,
|
||||
[MISFIRE_INSTR] [SMALLINT] NULL ,
|
||||
[JOB_DATA] [IMAGE] NULL
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_27*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_CALENDARS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_CALENDARS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[CALENDAR_NAME]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_28*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_CRON_TRIGGERS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_CRON_TRIGGERS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_29*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_FIRED_TRIGGERS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_FIRED_TRIGGERS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[ENTRY_ID]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_30*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_PAUSED_TRIGGER_GRPS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_PAUSED_TRIGGER_GRPS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_31*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_SCHEDULER_STATE] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_SCHEDULER_STATE] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[INSTANCE_NAME]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_32*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_LOCKS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_LOCKS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[LOCK_NAME]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_33*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_JOB_DETAILS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_JOB_DETAILS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[JOB_NAME],
|
||||
[JOB_GROUP]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_34*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_SIMPLE_TRIGGERS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_SIMPLE_TRIGGERS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_35*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_SIMPROP_TRIGGERS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_SIMPROP_TRIGGERS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_36*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_TRIGGERS] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_SYS_QRTZ_TRIGGERS] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON [PRIMARY]
|
||||
/*QUARTZ_37*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_CRON_TRIGGERS] ADD
|
||||
CONSTRAINT [FK_SYS_QRTZ_CRON_TRIGGERS_SYS_QRTZ_TRIGGERS] FOREIGN KEY
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) REFERENCES [dbo].[SYS_QRTZ_TRIGGERS] (
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON DELETE CASCADE
|
||||
/*QUARTZ_38*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_SIMPLE_TRIGGERS] ADD
|
||||
CONSTRAINT [FK_SYS_QRTZ_SIMPLE_TRIGGERS_SYS_QRTZ_TRIGGERS] FOREIGN KEY
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) REFERENCES [dbo].[SYS_QRTZ_TRIGGERS] (
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON DELETE CASCADE
|
||||
/*QUARTZ_39*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_SIMPROP_TRIGGERS] ADD
|
||||
CONSTRAINT [FK_SYS_QRTZ_SIMPROP_TRIGGERS_SYS_QRTZ_TRIGGERS] FOREIGN KEY
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) REFERENCES [dbo].[SYS_QRTZ_TRIGGERS] (
|
||||
[SCHED_NAME],
|
||||
[TRIGGER_NAME],
|
||||
[TRIGGER_GROUP]
|
||||
) ON DELETE CASCADE
|
||||
/*QUARTZ_40*/
|
||||
ALTER TABLE [dbo].[SYS_QRTZ_TRIGGERS] ADD
|
||||
CONSTRAINT [FK_SYS_QRTZ_TRIGGERS_SYS_QRTZ_JOB_DETAILS] FOREIGN KEY
|
||||
(
|
||||
[SCHED_NAME],
|
||||
[JOB_NAME],
|
||||
[JOB_GROUP]
|
||||
) REFERENCES [dbo].[SYS_QRTZ_JOB_DETAILS] (
|
||||
[SCHED_NAME],
|
||||
[JOB_NAME],
|
||||
[JOB_GROUP]
|
||||
)
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
ALTER TABLE `site_cug_info`
|
||||
ADD COLUMN `segmented_open_hours` JSON NULL COMMENT '分段预约场次信息' AFTER `open_hours`,
|
||||
ADD COLUMN `full_day_open_hour` JSON NULL COMMENT '全天候预约时间段' AFTER `segmented_open_hours`;
|
||||
@@ -1,3 +0,0 @@
|
||||
ALTER TABLE `site_cug_info`
|
||||
ADD COLUMN `reserve_time_type` INT NULL DEFAULT 1 COMMENT '预约时间段类型(1分段预约,2全天候预约)' AFTER `not_apply_time_list`,
|
||||
ADD COLUMN `open_hours` JSON NULL COMMENT '场次信息' AFTER `reserve_time_type`;
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `site_cug_info`
|
||||
ADD COLUMN `site_photo` VARCHAR(255) NULL COMMENT '场地照片' AFTER `introduce`;
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `sys_config`
|
||||
MODIFY COLUMN `configValue` TEXT;
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `sys_home_template`
|
||||
ADD COLUMN `templateFile` varchar(1000) DEFAULT NULL COMMENT 'template file' AFTER `templateIcon`;
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `sys_home_template`
|
||||
ADD COLUMN `templateIcon` varchar(255) DEFAULT NULL COMMENT 'template icon' AFTER `templateName`;
|
||||
@@ -1,6 +0,0 @@
|
||||
ALTER TABLE `sys_home_template`
|
||||
ADD COLUMN `templateName` varchar(50) DEFAULT NULL COMMENT 'display template name' AFTER `name`;
|
||||
|
||||
UPDATE `sys_home_template`
|
||||
SET `templateName` = `name`
|
||||
WHERE (`templateName` IS NULL OR `templateName` = '');
|
||||
@@ -1,26 +0,0 @@
|
||||
CREATE TABLE IF NOT EXISTS `sys_home_template` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'business id',
|
||||
`name` varchar(50) DEFAULT NULL COMMENT 'template name',
|
||||
`templateName` varchar(50) DEFAULT NULL COMMENT 'display template name',
|
||||
`templateIcon` varchar(255) DEFAULT NULL COMMENT 'template icon',
|
||||
`templateFile` varchar(1000) DEFAULT NULL COMMENT 'template file',
|
||||
`cover` varchar(255) DEFAULT NULL COMMENT 'template cover',
|
||||
`content` text COMMENT 'template content',
|
||||
`url` varchar(1000) DEFAULT NULL COMMENT 'pc url',
|
||||
`h5Url` varchar(1000) DEFAULT NULL COMMENT 'h5 url',
|
||||
`allowUserGroupId` int DEFAULT NULL COMMENT 'allowed user group id',
|
||||
`allowUserSql` varchar(1000) DEFAULT NULL COMMENT 'allowed user sql',
|
||||
`enable` tinyint(1) DEFAULT 0 COMMENT 'enabled',
|
||||
`classPath` varchar(500) DEFAULT NULL COMMENT 'source class path',
|
||||
`top` tinyint(1) DEFAULT 0 COMMENT 'top flag',
|
||||
`push` tinyint(1) DEFAULT 0 COMMENT 'push flag',
|
||||
`sortNo` int DEFAULT 0 COMMENT 'sort number',
|
||||
`startDate` datetime DEFAULT NULL COMMENT 'start date',
|
||||
`endDate` datetime DEFAULT NULL COMMENT 'end date',
|
||||
`createdBy` varchar(32) DEFAULT NULL,
|
||||
`createdAt` bigint DEFAULT NULL,
|
||||
`updatedBy` varchar(32) DEFAULT NULL,
|
||||
`updatedAt` bigint DEFAULT NULL,
|
||||
`delFlag` tinyint(1) DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='home work template';
|
||||
@@ -1,253 +0,0 @@
|
||||
-- 普惠疗休养系统字典初始化。
|
||||
-- 执行后可在 /platform/sys/dict 页面看到:疗休养(Tour) -> 组织形式/疗休养类型/线路类型/床型。
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict001', '', '9500', '疗休养', '普惠疗休养平台字典', 'Tour', 0, 9500, 1,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'Tour') t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict002', p.id, CONCAT(p.path, '0001'), '组织形式', '疗休养组织形式', 'organizationType', 0, 1, 1,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'Tour'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'organizationType' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict003', p.id, CONCAT(p.path, '0001'), '校工会组织', '疗休养组织形式', 'schoolUnion', 0, 1, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'organizationType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'schoolUnion' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict004', p.id, CONCAT(p.path, '0002'), '分工会组织', '疗休养组织形式', 'branchUnion', 0, 2, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'organizationType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'branchUnion' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict005', p.id, CONCAT(p.path, '0003'), '个人组织', '疗休养组织形式', 'personal', 0, 3, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'organizationType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'personal' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict006', p.id, CONCAT(p.path, '0002'), '疗休养类型', '疗休养类型', 'tourType', 0, 2, 1,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'Tour'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'tourType' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict007', p.id, CONCAT(p.path, '0001'), '普惠性疗休养', '疗休养类型', 'inclusiveTour', 0, 1, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'tourType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'inclusiveTour' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict008', p.id, CONCAT(p.path, '0002'), '优秀职工疗休养', '疗休养类型', 'excellentWorkerTour', 0, 2, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'tourType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'excellentWorkerTour' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict009', p.id, CONCAT(p.path, '0003'), '线路类型', '线路类型', 'lineType', 0, 3, 1,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'Tour'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'lineType' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict010', p.id, CONCAT(p.path, '0001'), '省内线路', '线路类型', 'inProvinceLine', 0, 1, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'lineType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'inProvinceLine' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict011', p.id, CONCAT(p.path, '0002'), '省外线路', '线路类型', 'outProvinceLine', 0, 2, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'lineType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'outProvinceLine' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict020', p.id, CONCAT(p.path, '0004'), '床型', '床型', 'bedType', 0, 4, 1,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'Tour'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'bedType' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict021', p.id, CONCAT(p.path, '0001'), '双人床', '床型', 'doubleBed', 0, 1, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'bedType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'doubleBed' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict022', p.id, CONCAT(p.path, '0002'), '单人床', '床型', 'singleBed', 0, 2, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'bedType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'singleBed' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict023', p.id, CONCAT(p.path, '0003'), '大床', '床型', 'kingBed', 0, 3, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'bedType'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'kingBed' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict012', '', '9600', '亲属关系', '亲属关系', 'familyRelationship', 0, 9600, 1,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'familyRelationship') t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict013', p.id, CONCAT(p.path, '0001'), '直系亲属', '亲属关系', 'directRelative', 0, 1, 1,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'familyRelationship'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'directRelative' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict014', p.id, CONCAT(p.path, '0001'), '父亲', '直系亲属', 'father', 0, 1, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'directRelative'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'father' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict015', p.id, CONCAT(p.path, '0002'), '母亲', '直系亲属', 'mother', 0, 2, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'directRelative'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'mother' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict016', p.id, CONCAT(p.path, '0003'), '丈夫', '直系亲属', 'husband', 0, 3, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'directRelative'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'husband' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict017', p.id, CONCAT(p.path, '0004'), '妻子', '直系亲属', 'wife', 0, 4, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'directRelative'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'wife' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict018', p.id, CONCAT(p.path, '0005'), '儿子', '直系亲属', 'son', 0, 5, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'directRelative'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'son' AND `parentId` = p.id) t);
|
||||
|
||||
INSERT INTO `sys_dict` (
|
||||
`id`, `parentId`, `path`, `name`, `remark`, `code`, `disabled`, `location`, `hasChildren`,
|
||||
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`
|
||||
)
|
||||
SELECT
|
||||
'b7c63f0c73a44a9a8c4f3d3bdict019', p.id, CONCAT(p.path, '0006'), '女儿', '直系亲属', 'daughter', 0, 6, 0,
|
||||
'', UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0
|
||||
FROM `sys_dict` p
|
||||
WHERE p.`code` = 'directRelative'
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM `sys_dict` WHERE `code` = 'daughter' AND `parentId` = p.id) t);
|
||||
|
||||
UPDATE `sys_dict` SET `hasChildren` = 1 WHERE `code` IN ('Tour', 'organizationType', 'tourType', 'lineType', 'bedType', 'familyRelationship', 'directRelative');
|
||||
@@ -1,7 +0,0 @@
|
||||
-- Add matter reference so signup records are unique per travel period/matter.
|
||||
ALTER TABLE `tour_ledger`
|
||||
ADD COLUMN `matterId` varchar(32) DEFAULT NULL COMMENT '报名事项ID' AFTER `signupTime`;
|
||||
|
||||
ALTER TABLE `tour_ledger`
|
||||
ADD KEY `idx_tour_ledger_matter` (`matterId`),
|
||||
ADD KEY `idx_tour_ledger_matter_job` (`matterId`, `jobNo`);
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `tour_ledger`
|
||||
ADD COLUMN `overCostReimbursed` tinyint(1) DEFAULT 0 COMMENT '报销超出费用' AFTER `reimbursed`;
|
||||
@@ -1,9 +0,0 @@
|
||||
-- 疗休养台账查询加速索引。
|
||||
ALTER TABLE `tour_ledger`
|
||||
ADD KEY `idx_tour_ledger_year_signup` (`year`, `delFlag`, `signupTime`),
|
||||
ADD KEY `idx_tour_ledger_year_line` (`year`, `lineId`, `delFlag`),
|
||||
ADD KEY `idx_tour_ledger_year_union_type` (`year`, `unionId`, `lineType`, `delFlag`),
|
||||
ADD KEY `idx_tour_ledger_year_job` (`year`, `jobNo`, `delFlag`);
|
||||
|
||||
ALTER TABLE `wf_process_instance`
|
||||
ADD KEY `idx_wf_process_instance_business_state` (`businessNo`, `state`);
|
||||
@@ -1,21 +0,0 @@
|
||||
-- 直系亲属线路报名信息表,独立于普通携带亲属信息表。
|
||||
CREATE TABLE IF NOT EXISTS `tour_ledger_direct_relative` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`ledgerId` varchar(32) DEFAULT NULL COMMENT '台账ID',
|
||||
`relativeName` varchar(100) DEFAULT NULL COMMENT '亲属姓名',
|
||||
`unitName` varchar(100) DEFAULT NULL COMMENT '所在单位',
|
||||
`relationshipCode` varchar(50) DEFAULT NULL COMMENT '亲属关系编码',
|
||||
`relationshipName` varchar(50) DEFAULT NULL COMMENT '亲属关系',
|
||||
`lineId` varchar(32) DEFAULT NULL COMMENT '线路ID',
|
||||
`lineName` varchar(100) DEFAULT NULL COMMENT '线路名称',
|
||||
`travelStartTime` varchar(20) DEFAULT NULL COMMENT '出行开始日期',
|
||||
`travelEndTime` varchar(20) DEFAULT NULL COMMENT '出行结束日期',
|
||||
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
||||
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
||||
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
||||
`delFlag` tinyint(1) DEFAULT 0 COMMENT '删除标记',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tour_ledger_direct_relative_ledger` (`ledgerId`),
|
||||
KEY `idx_tour_ledger_direct_relative_line` (`lineId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普惠疗休养直系亲属线路报名信息';
|
||||
@@ -1,10 +0,0 @@
|
||||
-- 线路管理增加创建人和所在单位业务字段。
|
||||
ALTER TABLE `tour_line`
|
||||
ADD COLUMN `creatorUserId` varchar(32) DEFAULT NULL COMMENT '创建人ID' AFTER `travelAgencyId`,
|
||||
ADD COLUMN `creatorName` varchar(100) DEFAULT NULL COMMENT '创建人' AFTER `creatorUserId`,
|
||||
ADD COLUMN `unitId` varchar(32) DEFAULT NULL COMMENT '所在单位ID' AFTER `creatorName`,
|
||||
ADD COLUMN `unitName` varchar(100) DEFAULT NULL COMMENT '所在单位' AFTER `unitId`;
|
||||
|
||||
ALTER TABLE `tour_line`
|
||||
ADD KEY `idx_tour_line_creator` (`creatorUserId`),
|
||||
ADD KEY `idx_tour_line_unit` (`unitId`);
|
||||
@@ -1,3 +0,0 @@
|
||||
-- 线路管理增加是否直系亲属线路字段,默认否。
|
||||
ALTER TABLE `tour_line`
|
||||
ADD COLUMN `directFamilyUnitLine` tinyint(1) DEFAULT 0 COMMENT '是否直系亲属线路' AFTER `openFlag`;
|
||||
@@ -1,3 +0,0 @@
|
||||
-- 线路管理增加是否对外开放字段,默认是。
|
||||
ALTER TABLE `tour_line`
|
||||
ADD COLUMN `openFlag` tinyint(1) DEFAULT 1 COMMENT '是否对外开放' AFTER `mobileThumb`;
|
||||
@@ -1,7 +0,0 @@
|
||||
-- 疗休养事项增加创建人字段。
|
||||
ALTER TABLE `tour_matter`
|
||||
ADD COLUMN `creatorUserId` varchar(32) DEFAULT NULL COMMENT '创建人ID' AFTER `settingId`,
|
||||
ADD COLUMN `creatorName` varchar(100) DEFAULT NULL COMMENT '创建人' AFTER `creatorUserId`;
|
||||
|
||||
ALTER TABLE `tour_matter`
|
||||
ADD KEY `idx_tour_matter_creator` (`creatorUserId`);
|
||||
@@ -1,26 +0,0 @@
|
||||
-- 疗休养事项批次表。
|
||||
CREATE TABLE IF NOT EXISTS `tour_matter_batch` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`matterId` varchar(32) DEFAULT NULL COMMENT '事项ID',
|
||||
`lineId` varchar(32) DEFAULT NULL COMMENT '线路ID',
|
||||
`batchName` varchar(100) DEFAULT NULL COMMENT '批次名称',
|
||||
`signupStartTime` varchar(20) DEFAULT NULL COMMENT '报名开始时间',
|
||||
`signupEndTime` varchar(20) DEFAULT NULL COMMENT '报名结束时间',
|
||||
`travelStartTime` varchar(20) DEFAULT NULL COMMENT '出行开始时间',
|
||||
`travelEndTime` varchar(20) DEFAULT NULL COMMENT '出行结束时间',
|
||||
`changeDeadline` varchar(20) DEFAULT NULL COMMENT '变更截止时间',
|
||||
`contactName` varchar(30) DEFAULT NULL COMMENT '联系人',
|
||||
`contactPhone` varchar(30) DEFAULT NULL COMMENT '联系方式',
|
||||
`minGroupPeople` int DEFAULT NULL COMMENT '最少成团人数',
|
||||
`maxGroupPeople` int DEFAULT NULL COMMENT '最多成团人数',
|
||||
`estimatedCost` decimal(10,2) DEFAULT NULL COMMENT '预计费用',
|
||||
`enabled` tinyint(1) DEFAULT 1 COMMENT '状态',
|
||||
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
||||
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
||||
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
||||
`delFlag` tinyint(1) DEFAULT 0 COMMENT '删除标记',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tour_matter_batch_matter` (`matterId`),
|
||||
KEY `idx_tour_matter_batch_line` (`lineId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普惠疗休养事项批次';
|
||||
@@ -1,25 +0,0 @@
|
||||
-- 疗休养事项表。
|
||||
CREATE TABLE IF NOT EXISTS `tour_matter` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`year` int DEFAULT NULL COMMENT '年度',
|
||||
`matterName` varchar(100) DEFAULT NULL COMMENT '事项名称',
|
||||
`settingId` varchar(32) DEFAULT NULL COMMENT '疗休养配置ID',
|
||||
`creatorUserId` varchar(32) DEFAULT NULL COMMENT '创建人ID',
|
||||
`creatorName` varchar(100) DEFAULT NULL COMMENT '创建人',
|
||||
`unionId` varchar(32) DEFAULT NULL COMMENT '所属工会ID',
|
||||
`organizationType` varchar(100) DEFAULT NULL COMMENT '组织形式',
|
||||
`mobileThumb` varchar(500) DEFAULT NULL COMMENT '移动端缩略图',
|
||||
`enabled` tinyint(1) DEFAULT 1 COMMENT '事项状态',
|
||||
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
||||
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
||||
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
||||
`delFlag` tinyint(1) DEFAULT 0 COMMENT '删除标记',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_tour_matter_year_name` (`year`, `matterName`),
|
||||
KEY `idx_tour_matter_year` (`year`),
|
||||
KEY `idx_tour_matter_creator` (`creatorUserId`),
|
||||
KEY `idx_tour_matter_setting` (`settingId`),
|
||||
KEY `idx_tour_matter_union` (`unionId`),
|
||||
KEY `idx_tour_matter_org_type` (`organizationType`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普惠疗休养事项';
|
||||
@@ -1,6 +0,0 @@
|
||||
-- Add activity user scope reference for tour settings.
|
||||
ALTER TABLE `tour_setting`
|
||||
ADD COLUMN `activityGroupId` varchar(32) DEFAULT NULL COMMENT '可参加人员范围ID' AFTER `tourType`;
|
||||
|
||||
ALTER TABLE `tour_setting`
|
||||
ADD KEY `idx_tour_setting_activity_group` (`activityGroupId`);
|
||||
@@ -1,3 +0,0 @@
|
||||
-- 疗休养配置增加周期允许次数字段。
|
||||
ALTER TABLE `tour_setting`
|
||||
ADD COLUMN `cycleAllowedTimes` int DEFAULT NULL COMMENT '周期允许次数' AFTER `cycleTotalCost`;
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `tour_setting`
|
||||
ADD COLUMN `cycleTotalCost` int DEFAULT NULL COMMENT '周期内总费用' AFTER `cycleEndYear`;
|
||||
@@ -1,4 +0,0 @@
|
||||
-- Add optional cycle year range for tour settings.
|
||||
ALTER TABLE `tour_setting`
|
||||
ADD COLUMN `cycleStartYear` int DEFAULT NULL COMMENT '周期开始年度' AFTER `outProvinceRatio`,
|
||||
ADD COLUMN `cycleEndYear` int DEFAULT NULL COMMENT '周期结束年度' AFTER `cycleStartYear`;
|
||||
@@ -1,3 +0,0 @@
|
||||
-- 疗休养配置增加是否填报床位信息字段,默认开启以兼容历史配置。
|
||||
ALTER TABLE `tour_setting`
|
||||
ADD COLUMN `fillBedInfo` tinyint(1) DEFAULT 1 COMMENT '是否填报床位信息' AFTER `allowFamily`;
|
||||
@@ -1,3 +0,0 @@
|
||||
ALTER TABLE `tour_setting`
|
||||
ADD COLUMN `outProvinceRatioType` varchar(50) DEFAULT '当年报名人数' COMMENT '省外人数占比类型' AFTER `outProvinceRatio`,
|
||||
ADD COLUMN `outProvinceFixedPeople` int DEFAULT 0 COMMENT '省外固定人数' AFTER `outProvinceRatioType`;
|
||||
@@ -5,7 +5,6 @@ CREATE TABLE IF NOT EXISTS `tour_setting` (
|
||||
`year` int DEFAULT NULL COMMENT '年度',
|
||||
`configName` varchar(100) DEFAULT NULL COMMENT '疗休养配置名称',
|
||||
`tourType` varchar(50) DEFAULT NULL COMMENT '疗休养类型',
|
||||
`travelPeopleQuota` int DEFAULT 0 COMMENT '出行人数指标',
|
||||
`activityGroupId` varchar(32) DEFAULT NULL COMMENT '可参加人员范围ID',
|
||||
`sortNo` int DEFAULT NULL COMMENT '排序编号',
|
||||
`minGroupPeople` int DEFAULT NULL COMMENT '最少成团人数',
|
||||
@@ -34,7 +33,7 @@ CREATE TABLE IF NOT EXISTS `tour_setting` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普惠疗休养配置';
|
||||
|
||||
-- 疗休养配置标段表。
|
||||
-- 标段先挂在配置上维护,后续线路、服务单位、报名等模块可继续通过 lotId 做业务关联。
|
||||
-- 标段先挂在配置上维护,后续线路、旅行社、报名等模块可继续通过 lotId 做业务关联。
|
||||
CREATE TABLE IF NOT EXISTS `tour_setting_lot` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`settingId` varchar(32) DEFAULT NULL COMMENT '所属配置ID',
|
||||
@@ -52,30 +51,12 @@ CREATE TABLE IF NOT EXISTS `tour_setting_lot` (
|
||||
KEY `idx_tour_setting_lot_value` (`lotValue`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普惠疗休养配置标段';
|
||||
|
||||
-- 疗休养配置分工会人员分配表。
|
||||
CREATE TABLE IF NOT EXISTS `tour_setting_union_quota` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`settingId` varchar(32) DEFAULT NULL COMMENT '所属疗休养配置ID',
|
||||
`unionId` varchar(32) DEFAULT NULL COMMENT '分工会ID',
|
||||
`unionName` varchar(100) DEFAULT NULL COMMENT '分工会名称',
|
||||
`peopleQuota` int DEFAULT 0 COMMENT '人员数量',
|
||||
`createdBy` varchar(32) DEFAULT NULL COMMENT '创建人',
|
||||
`createdAt` bigint DEFAULT NULL COMMENT '创建时间',
|
||||
`updatedBy` varchar(32) DEFAULT NULL COMMENT '修改人',
|
||||
`updatedAt` bigint DEFAULT NULL COMMENT '修改时间',
|
||||
`delFlag` tinyint(1) DEFAULT 0 COMMENT '删除标记',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_tour_setting_union_quota_setting_union` (`settingId`, `unionId`),
|
||||
KEY `idx_tour_setting_union_quota_setting` (`settingId`),
|
||||
KEY `idx_tour_setting_union_quota_union` (`unionId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='疗休养配置分工会人员分配';
|
||||
|
||||
-- 服务单位管理表。
|
||||
-- 旅行社管理表。
|
||||
CREATE TABLE IF NOT EXISTS `tour_travel_agency` (
|
||||
`id` varchar(32) NOT NULL COMMENT 'ID',
|
||||
`year` int DEFAULT NULL COMMENT '年度',
|
||||
`agencyCode` varchar(50) DEFAULT NULL COMMENT '服务单位编号',
|
||||
`agencyName` varchar(100) DEFAULT NULL COMMENT '服务单位名称',
|
||||
`agencyCode` varchar(50) DEFAULT NULL COMMENT '旅行社编号',
|
||||
`agencyName` varchar(100) DEFAULT NULL COMMENT '旅行社名称',
|
||||
`contactName` varchar(30) DEFAULT NULL COMMENT '联系人',
|
||||
`contactPhone` varchar(30) DEFAULT NULL COMMENT '联系人手机',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
|
||||
@@ -91,7 +72,7 @@ CREATE TABLE IF NOT EXISTS `tour_travel_agency` (
|
||||
UNIQUE KEY `uk_tour_travel_agency_year_code` (`year`, `agencyCode`),
|
||||
KEY `idx_tour_travel_agency_name` (`agencyName`),
|
||||
KEY `idx_tour_travel_agency_contact` (`contactName`, `contactPhone`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普惠疗休养服务单位';
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普惠疗休养旅行社';
|
||||
|
||||
-- 线路管理表。
|
||||
CREATE TABLE IF NOT EXISTS `tour_line` (
|
||||
@@ -99,7 +80,7 @@ CREATE TABLE IF NOT EXISTS `tour_line` (
|
||||
`year` int DEFAULT NULL COMMENT '创建年度',
|
||||
`lineCode` varchar(50) DEFAULT NULL COMMENT '线路编号',
|
||||
`lineName` varchar(100) DEFAULT NULL COMMENT '线路名称',
|
||||
`travelAgencyId` varchar(32) DEFAULT NULL COMMENT '服务单位ID',
|
||||
`travelAgencyId` varchar(32) DEFAULT NULL COMMENT '旅行社ID',
|
||||
`creatorUserId` varchar(32) DEFAULT NULL COMMENT '创建人ID',
|
||||
`creatorName` varchar(100) DEFAULT NULL COMMENT '创建人',
|
||||
`unitId` varchar(32) DEFAULT NULL COMMENT '所在单位ID',
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
ALTER TABLE `tour_setting_lot`
|
||||
ADD COLUMN `allowOverReimbursement` tinyint(1) DEFAULT 0 COMMENT '允许超出报销' AFTER `activityCost`;
|
||||
@@ -78,10 +78,10 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="userState" label="在职状态" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="arrivalAtSchoolDate" label="来校时间" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="personType" label="人员类型" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="technicalTitle" label="技术职称" sortable width="120"></el-table-column>
|
||||
<!-- <el-table-column prop="technicalTitle" label="技术职称" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="position" label="干部职务" sortable width="120" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="education" label="学历" show-overflow-tooltip sortable width="120"></el-table-column>
|
||||
<el-table-column prop="academicDegree" label="学位" show-overflow-tooltip sortable width="120"></el-table-column>
|
||||
<el-table-column prop="academicDegree" label="学位" show-overflow-tooltip sortable width="120"></el-table-column>-->
|
||||
<el-table-column prop="unitName" label="单位" show-overflow-tooltip sortable width="120"></el-table-column>
|
||||
<el-table-column prop="unitId" label="单位编码" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="political" label="政治面貌" sortable></el-table-column>
|
||||
|
||||
@@ -71,10 +71,10 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="userState" label="在职状态" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="personType" label="人员类型" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="arrivalAtSchoolDate" label="来校年月" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="technicalTitle" label="技术职称" sortable width="120"></el-table-column>
|
||||
<!--<el-table-column prop="technicalTitle" label="技术职称" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="position" label="职务" sortable width="120" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="education" label="学历" show-overflow-tooltip sortable width="120"></el-table-column>
|
||||
<el-table-column prop="academicDegree" label="学位" show-overflow-tooltip sortable width="120"></el-table-column>
|
||||
<el-table-column prop="academicDegree" label="学位" show-overflow-tooltip sortable width="120"></el-table-column>-->
|
||||
<el-table-column prop="unitName" label="单位" show-overflow-tooltip sortable width="120"></el-table-column>
|
||||
<el-table-column prop="unitId" label="单位编码" sortable width="120"></el-table-column>
|
||||
<el-table-column prop="political" label="政治面貌" sortable></el-table-column>
|
||||
@@ -120,9 +120,9 @@ layout("/layouts/platform.html"){
|
||||
</div>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
<span slot="footer" class="dialog-footer" v-loading="updateLoading">
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="updateDialog = false" :disabled="updateLoading">取 消</el-button>
|
||||
<el-button type="primary" @click="execUpdate" :disabled="updateLoading">确 定</el-button>
|
||||
<el-button type="primary" @click="execUpdate" :disabled="updateLoading" :loading="updateLoading">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
@@ -38,6 +38,13 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="身份" prop="roleName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="入会时间" prop="joinTime" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="退会时间" prop="exitTime" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="退出方式" width="110">
|
||||
<template v-slot="{row}">
|
||||
<el-tag :type="row.exitType === 'AUDIT_EXIT' ? 'success' : 'info'" size="mini">
|
||||
{{ exitTypeName(row) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120">
|
||||
<template v-slot="{row}">
|
||||
<el-button size="mini" type="primary" @click="onView(row)">查看</el-button>
|
||||
@@ -76,14 +83,17 @@ layout("/layouts/platform.html"){
|
||||
async getClubList() {
|
||||
const resp = await this.$axios.post("/platform/club/infoManage/exitManage/getClubList")
|
||||
if (resp.code === 0) {
|
||||
this.clubList = resp.data
|
||||
this.$set(this, "clubList", resp.data)
|
||||
}
|
||||
},
|
||||
exitTypeName(row) {
|
||||
return row.exitType === "AUDIT_EXIT" ? "审核退会" : "直接移出"
|
||||
},
|
||||
async pageData() {
|
||||
const resp = await this.$axios.post("/platform/club/infoManage/exitManage/pageData", this.pageForm)
|
||||
if (resp.code === 0) {
|
||||
this.tableData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
this.$set(this, "tableData", resp.data.list)
|
||||
this.$set(this.pageForm, "totalCount", resp.data.totalCount)
|
||||
} else {
|
||||
this.$message.warning(resp.msg)
|
||||
}
|
||||
|
||||
@@ -1,58 +1,60 @@
|
||||
const clubExitInfo = {
|
||||
template:
|
||||
/*language=HTML*/
|
||||
`
|
||||
<div>
|
||||
<div class="process-title">
|
||||
退会信息
|
||||
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
|
||||
</div>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="姓名">{{viewData.userName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">{{viewData.loginName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
|
||||
<el-descriptions-item label="出生年月">{{$moment(viewData.birthday).format('YYYY-MM-DD')}}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话">{{viewData.mobile}}</el-descriptions-item>
|
||||
<el-descriptions-item label="电子信箱">{{viewData.email}}</el-descriptions-item>
|
||||
<el-descriptions-item label="分工会">{{viewData.unionName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="部门" :span="2">{{viewData.unitName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="职务">{{viewData.position}}</el-descriptions-item>
|
||||
<el-descriptions-item label="职称" :span="2">{{viewData.technicalTitle}}</el-descriptions-item>
|
||||
<el-descriptions-item label="学历">{{viewData.education}}</el-descriptions-item>
|
||||
<el-descriptions-item label="学位" :span="2">{{viewData.academicDegree}}</el-descriptions-item>
|
||||
<el-descriptions-item label="同时参加其他社团情况" :span="3">{{viewData.sameTimeJoinOtherClubSituation}}</el-descriptions-item>
|
||||
<el-descriptions-item label="文化、体育方面的活动经历、获奖情况" :span="3">{{viewData.awardsExperience}}</el-descriptions-item>
|
||||
<el-descriptions-item label="照片" :span="3">
|
||||
<img :src="viewData.avatar" alt="" style="width: 120px;height: 150px" v-if="viewData.avatar">
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" :span="3">
|
||||
<el-image v-if="viewData.signature" :src="viewData.signature" class="signature-image"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<template v-for="task in doneTasks">
|
||||
<div class="mt10">
|
||||
<div class="process-title">{{ 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 }}({{task.ext.initiatorAccount}})</el-descriptions-item>
|
||||
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{ task.taskFormData.opinion }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
<snaker-chart ref="snakerChartRef"></snaker-chart>
|
||||
</div>
|
||||
`,
|
||||
[
|
||||
'<div>',
|
||||
' <div class="process-title">',
|
||||
' 退会信息',
|
||||
' <el-link v-if="row.instanceId" type="primary" @click="openChart">点击查看流程图</el-link>',
|
||||
' </div>',
|
||||
' <el-descriptions border>',
|
||||
' <el-descriptions-item label="姓名">{{viewData.userName}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="工号">{{viewData.loginName}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="退出方式">{{getExitTypeName()}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="出生年月">{{$moment(viewData.birthday).format(\'YYYY-MM-DD\')}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="联系电话">{{viewData.mobile}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="电子信箱">{{viewData.email}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="分工会">{{viewData.unionName}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="部门" :span="2">{{viewData.unitName}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="职务">{{viewData.position}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="职称" :span="2">{{viewData.technicalTitle}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="学历">{{viewData.education}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="学位" :span="2">{{viewData.academicDegree}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="同时参加其他社团情况" :span="3">{{viewData.sameTimeJoinOtherClubSituation}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="文化、体育方面的活动经历、获奖情况" :span="3">{{viewData.awardsExperience}}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="照片" :span="3">',
|
||||
' <img :src="viewData.avatar" alt="" style="width: 120px;height: 150px" v-if="viewData.avatar">',
|
||||
' </el-descriptions-item>',
|
||||
' <el-descriptions-item label="签字" :span="3">',
|
||||
' <el-image v-if="viewData.signature" :src="viewData.signature" class="signature-image"></el-image>',
|
||||
' <span v-else>暂无</span>',
|
||||
' </el-descriptions-item>',
|
||||
' </el-descriptions>',
|
||||
' <template v-for="task in doneTasks">',
|
||||
' <div class="mt10">',
|
||||
' <div class="process-title">{{ 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 }}({{task.ext.initiatorAccount}})</el-descriptions-item>',
|
||||
' <el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="办理结果">',
|
||||
' <dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>',
|
||||
' </el-descriptions-item>',
|
||||
' </el-descriptions>',
|
||||
' <el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>',
|
||||
' <el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>',
|
||||
' <el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>',
|
||||
' <el-descriptions-item label="办理结果">',
|
||||
' <dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>',
|
||||
' </el-descriptions-item>',
|
||||
' <el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{ task.taskFormData.opinion }}</el-descriptions-item>',
|
||||
' </el-descriptions>',
|
||||
' </div>',
|
||||
' </template>',
|
||||
' <snaker-chart ref="snakerChartRef"></snaker-chart>',
|
||||
' <slot></slot>',
|
||||
'</div>'
|
||||
].join(''),
|
||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
@@ -63,33 +65,43 @@ const clubExitInfo = {
|
||||
},
|
||||
methods: {
|
||||
onOpen(row) {
|
||||
this.row = row
|
||||
this.$set(this, "row", row || {})
|
||||
this.$set(this, "viewData", {})
|
||||
this.$set(this, "doneTasks", [])
|
||||
this.$axios.post("/platform/club/infoManage/exitManage/info", { id: row.id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
this.$set(this, "viewData", res.data || {})
|
||||
}
|
||||
})
|
||||
this.getDoneTasks()
|
||||
if (row.instanceId) {
|
||||
this.getDoneTasks()
|
||||
}
|
||||
},
|
||||
getDoneTasks() {
|
||||
this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.doneTasks = res.data
|
||||
this.$set(this, "doneTasks", res.data || [])
|
||||
}
|
||||
})
|
||||
},
|
||||
openChart(){
|
||||
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
|
||||
getExitTypeName() {
|
||||
const exitType = this.row.exitType || this.viewData.exitType
|
||||
return exitType === "AUDIT_EXIT" ? "审核退会" : "直接移出"
|
||||
},
|
||||
openChart() {
|
||||
if (this.row.instanceId) {
|
||||
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
|
||||
}
|
||||
}
|
||||
},
|
||||
style: /*language=CSS*/ `
|
||||
.el-descriptions-item__label {
|
||||
width: 200px;
|
||||
min-width: 200px;
|
||||
max-width: 200px;
|
||||
}
|
||||
.el-tabs__header {
|
||||
margin: 0;
|
||||
}
|
||||
`
|
||||
style: /*language=CSS*/ [
|
||||
'.el-descriptions-item__label {',
|
||||
' width: 200px;',
|
||||
' min-width: 200px;',
|
||||
' max-width: 200px;',
|
||||
'}',
|
||||
'.el-tabs__header {',
|
||||
' margin: 0;',
|
||||
'}'
|
||||
].join('')
|
||||
}
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
<el-table-column label="姓名" prop="userName" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="电话" prop="mobile" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="人员类型" prop="personType" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="在职状态" prop="userState" show-overflow-tooltip sortable></el-table-column>
|
||||
<el-table-column label="所属单位" prop="unitName" sortable show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="身份" prop="roleName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="入会时间" prop="joinTime" show-overflow-tooltip sortable></el-table-column>
|
||||
|
||||
@@ -20,7 +20,12 @@ layout("/layouts/platform.html"){
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="人员状态:">
|
||||
<dict-select clearable code="USER_STATE" placeholder="请选择人员状态" v-model="pageForm.userState"></dict-select>
|
||||
<el-select clearable placeholder="请选择人员状态" v-model="pageForm.userState">
|
||||
<el-option label="在职" value="在职"></el-option>
|
||||
<el-option label="在岗" value="在岗"></el-option>
|
||||
<el-option label="退休" value="退休"></el-option>
|
||||
<el-option label="不在岗" value="不在岗"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="性别:">
|
||||
<el-select clearable filterable placeholder="请选择性别" v-model="pageForm.sex">
|
||||
|
||||
@@ -27,8 +27,8 @@ layout("/layouts/platform.html"){
|
||||
:value="o.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="荣誉级别">
|
||||
<el-select v-model="pageForm.honorLevel" placeholder="请选择荣誉级别" clearable>
|
||||
<search-item label="荣誉类别">
|
||||
<el-select v-model="pageForm.honorLevel" placeholder="请选择荣誉类别" clearable>
|
||||
<el-option v-for="o in honorLevelList" :key="o.id" :label="o.name" :value="o.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
@@ -77,7 +77,7 @@ layout("/layouts/platform.html"){
|
||||
sortable></el-table-column>
|
||||
<!--<el-table-column prop="prizeDesc" label="奖项说明" ></el-table-column>-->
|
||||
<el-table-column prop="typeName" label="荣誉类型"></el-table-column>
|
||||
<el-table-column prop="levelName" label="级别"
|
||||
<el-table-column prop="levelName" label="荣誉类别"
|
||||
sortable></el-table-column>
|
||||
<el-table-column prop="grantUnit" label="授予单位"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
@@ -185,7 +185,7 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :span="6">
|
||||
<el-form-item label="级别">{{ viewData.levelName }}</el-form-item>
|
||||
<el-form-item label="荣誉类别">{{ viewData.levelName }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="授予单位">{{ viewData.grantUnit }}</el-form-item>
|
||||
@@ -303,9 +303,9 @@ layout("/layouts/platform.html"){
|
||||
prize +
|
||||
"&honorLevel=" +
|
||||
honorLevel +
|
||||
"&userName" +
|
||||
"&userName=" +
|
||||
userName +
|
||||
"&unitName" +
|
||||
"&unitName=" +
|
||||
unitName
|
||||
},
|
||||
openEdit(row) {
|
||||
|
||||
+185
-145
@@ -96,6 +96,9 @@ layout("/layouts/platform.html"){
|
||||
{{item.name}}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
<span class="ml10 text-danger" v-if="getProjectTipByProject(formData.reimburseProject)">
|
||||
{{getProjectTipByProject(formData.reimburseProject)}}
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="经办人">{{formData.userName}}({{formData.loginName}})</el-descriptions-item>
|
||||
@@ -400,145 +403,6 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="支付信息" :span="3">
|
||||
<div class="mb10">
|
||||
<el-button type="primary" size="mini" @click="addPaymentInfo">新增支付信息</el-button>
|
||||
</div>
|
||||
<el-table class="payment-info-table" :data="paymentInfoRows" border empty-text="暂无支付信息" style="width: 100%">
|
||||
<el-table-column label="支付方式" min-width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :prop="'paymentDetails.' + scope.$index + '.paymentWay'"
|
||||
:rules="paymentDetailRules.paymentWay">
|
||||
<el-select v-model="scope.row.paymentWay"
|
||||
clearable
|
||||
placeholder="请选择支付方式"
|
||||
style="width: 100%"
|
||||
@change="handlePaymentWayChange(scope.row)">
|
||||
<el-option
|
||||
v-for="item in dict.type.UNION_REIMBURSE_PAYMENT_WAY"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="金额" min-width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :prop="'paymentDetails.' + scope.$index + '.money'"
|
||||
:rules="paymentDetailRules.money">
|
||||
<el-input v-model="scope.row.money" placeholder="请输入金额"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="付款人" min-width="240">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.payer'"
|
||||
:rules="paymentDetailRules.payer">
|
||||
<el-select style="width: 100%"
|
||||
v-model="scope.row.payer"
|
||||
@change="payerUserChange(scope.row)"
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入姓名或工号查询"
|
||||
:remote-method="createRemoteMethodForPayer(scope.row)">
|
||||
<el-option
|
||||
v-for="item in scope.row.payerOptions"
|
||||
:key="item.id"
|
||||
:label="item.userName+'('+item.loginName+')'+'('+item.unitName+')'"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="户名" min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.bankUserName'"
|
||||
:rules="paymentDetailRules.bankUserName">
|
||||
<el-select
|
||||
v-model="scope.row.bankUserName"
|
||||
@change="handleBankUserNameChange(scope.row)"
|
||||
clearable
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
placeholder="请输入户名"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="(item, index) in getBankHistoryUserNames(scope.row)"
|
||||
:key="index"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="开户行" min-width="220">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.bankOfDeposit'"
|
||||
:rules="paymentDetailRules.bankOfDeposit">
|
||||
<el-select
|
||||
v-model="scope.row.bankOfDeposit"
|
||||
@change="fillBankInfoFromHistory(scope.row)"
|
||||
clearable
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
placeholder="请输入开户行名称"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="(item, index) in scope.row.historyData"
|
||||
:key="index"
|
||||
:label="item.bankOfDeposit"
|
||||
:value="item.bankOfDeposit">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="银行卡号" min-width="220">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.bankCardNumber'"
|
||||
:rules="paymentDetailRules.bankCardNumber">
|
||||
<el-select
|
||||
v-model="scope.row.bankCardNumber"
|
||||
@change="fillBankInfoFromHistory(scope.row)"
|
||||
clearable
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
placeholder="请输入银行卡号"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="(item, index) in scope.row.historyData"
|
||||
:key="index"
|
||||
:label="item.bankCardNumber"
|
||||
:value="item.bankCardNumber">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" style="color: #f56c6c;" @click="deletePaymentInfo(scope.$index)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="参加随行人员" :span="3"
|
||||
v-if="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<el-form-item prop="participants" label="参加随行人员">
|
||||
@@ -563,7 +427,8 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item :span="3">
|
||||
<el-descriptions-item :span="3"
|
||||
v-if="formData.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1'">
|
||||
<template slot="label">
|
||||
附件
|
||||
</template>
|
||||
@@ -619,6 +484,148 @@ layout("/layouts/platform.html"){
|
||||
type="textarea" :autosize="{ minRows: 4, maxRows: 8}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="invoice-field-title">支付信息</div>
|
||||
<div>
|
||||
<div class="mb10">
|
||||
<el-button type="primary" size="mini" @click="addPaymentInfo">新增支付信息</el-button>
|
||||
</div>
|
||||
<el-table class="payment-info-table" :data="paymentInfoRows" border empty-text="暂无支付信息" style="width: 100%">
|
||||
<el-table-column label="支付方式" min-width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :prop="'paymentDetails.' + scope.$index + '.paymentWay'"
|
||||
:rules="paymentDetailRules.paymentWay">
|
||||
<el-select v-model="scope.row.paymentWay"
|
||||
clearable
|
||||
placeholder="请选择支付方式"
|
||||
style="width: 100%"
|
||||
@change="handlePaymentWayChange(scope.row)">
|
||||
<el-option
|
||||
v-for="item in dict.type.UNION_REIMBURSE_PAYMENT_WAY"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="金额" min-width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :prop="'paymentDetails.' + scope.$index + '.money'"
|
||||
:rules="paymentDetailRules.money">
|
||||
<el-input v-model="scope.row.money" placeholder="请输入金额"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="付款人" min-width="240">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.payer'"
|
||||
:rules="paymentDetailRules.payer">
|
||||
<el-select style="width: 100%"
|
||||
v-model="scope.row.payer"
|
||||
@change="payerUserChange(scope.row)"
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="请输入姓名或工号查询"
|
||||
:remote-method="createRemoteMethodForPayer(scope.row)">
|
||||
<el-option
|
||||
v-for="item in scope.row.payerOptions"
|
||||
:key="item.id"
|
||||
:label="item.userName+'('+item.loginName+')'+'('+item.unitName+')'"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="户名" min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.bankUserName'"
|
||||
:rules="paymentDetailRules.bankUserName">
|
||||
<el-select
|
||||
v-model="scope.row.bankUserName"
|
||||
@change="handleBankUserNameChange(scope.row)"
|
||||
clearable
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
placeholder="请输入户名"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="(item, index) in getBankHistoryUserNames(scope.row)"
|
||||
:key="index"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="开户行" min-width="220">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.bankOfDeposit'"
|
||||
:rules="paymentDetailRules.bankOfDeposit">
|
||||
<el-select
|
||||
v-model="scope.row.bankOfDeposit"
|
||||
@change="fillBankInfoFromHistory(scope.row)"
|
||||
clearable
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
placeholder="请输入开户行名称"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="(item, index) in scope.row.historyData"
|
||||
:key="index"
|
||||
:label="item.bankOfDeposit"
|
||||
:value="item.bankOfDeposit">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="银行卡号" min-width="220">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="isPrivatePayment(scope.row)"
|
||||
:prop="'paymentDetails.' + scope.$index + '.bankCardNumber'"
|
||||
:rules="paymentDetailRules.bankCardNumber">
|
||||
<el-select
|
||||
v-model="scope.row.bankCardNumber"
|
||||
@change="fillBankInfoFromHistory(scope.row)"
|
||||
clearable
|
||||
filterable
|
||||
allow-create
|
||||
default-first-option
|
||||
placeholder="请输入银行卡号"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="(item, index) in scope.row.historyData"
|
||||
:key="index"
|
||||
:label="item.bankCardNumber"
|
||||
:value="item.bankCardNumber">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>无需填写</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" style="color: #f56c6c;" @click="deletePaymentInfo(scope.$index)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<div class="invoice-toolbar">
|
||||
<div>
|
||||
@@ -819,7 +826,21 @@ layout("/layouts/platform.html"){
|
||||
{required: true, message: "请填写联系方式", trigger: ["change", "blur"]},
|
||||
{pattern: /^(1[3-9]\d{9}|0\d{2,3}-?\d{7,8})$/, message: "请输入正确的联系方式", trigger: "blur"}
|
||||
],
|
||||
files: [{required: true, message: "请上传附件", trigger: ["change", "blur"]}],
|
||||
files: [{
|
||||
validator: (rule, value, callback) => {
|
||||
// 慰问项目不展示附件上传,提交时无需校验附件。
|
||||
if (this.formData.reimburseProject === "UNION_REIMBURSE_PROJECT_1") {
|
||||
callback()
|
||||
return
|
||||
}
|
||||
if (!value || value.length === 0) {
|
||||
callback(new Error("请上传附件"))
|
||||
return
|
||||
}
|
||||
callback()
|
||||
},
|
||||
trigger: ["change", "blur"]
|
||||
}],
|
||||
userSign: [{required: true, message: "请签名", trigger: ["change", "blur"]}],
|
||||
// certifierUserId: [{required: true, message: "请填写认证人", trigger: ["change", "blur"]}],
|
||||
|
||||
@@ -1205,6 +1226,11 @@ layout("/layouts/platform.html"){
|
||||
this.rebuildInvoiceSummary()
|
||||
this.normalizeFundBalance()
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.formRef) {
|
||||
this.$refs.formRef.clearValidate("files")
|
||||
}
|
||||
})
|
||||
},
|
||||
openInvoiceDialog(mode, row, index) {
|
||||
this.invoiceDialogMode = mode
|
||||
@@ -1561,10 +1587,10 @@ layout("/layouts/platform.html"){
|
||||
return new Promise((resolve) => {
|
||||
this.rebuildInvoiceSummary()
|
||||
const paymentDetails = this.preparePaymentDetailsForSubmit()
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
this.$refs.formRef.validate((valid, invalidFields) => {
|
||||
if (valid) {
|
||||
if (!this.validatePaymentDetailsBeforeSubmit(paymentDetails)) {
|
||||
this.$set(this, "activeTabName", "basic")
|
||||
this.$set(this, "activeTabName", "invoice")
|
||||
resolve(false)
|
||||
return
|
||||
}
|
||||
@@ -1581,6 +1607,12 @@ layout("/layouts/platform.html"){
|
||||
this.normalizeFundBalance()
|
||||
resolve(true)
|
||||
} else {
|
||||
// 支付信息已移至发票信息页,支付明细校验失败时跳转到对应页签。
|
||||
const paymentDetailInvalid = Object.keys(invalidFields || {})
|
||||
.some((field) => field.indexOf("paymentDetails.") === 0)
|
||||
if (paymentDetailInvalid) {
|
||||
this.$set(this, "activeTabName", "invoice")
|
||||
}
|
||||
this.$message.warning("请完善必填信息")
|
||||
resolve(false)
|
||||
}
|
||||
@@ -1592,7 +1624,7 @@ layout("/layouts/platform.html"){
|
||||
const isValid = await this.validateBeforeSubmit()
|
||||
if (!isValid) return
|
||||
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
this.$confirm("您确定要提交吗?审核通过后可前往我的报销打印!", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
@@ -1612,7 +1644,7 @@ layout("/layouts/platform.html"){
|
||||
const isValid = await this.validateBeforeSubmit()
|
||||
if (!isValid) return
|
||||
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
this.$confirm("您确定要提交吗?审核通过后可前往我的报销打印!", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
@@ -1650,6 +1682,14 @@ layout("/layouts/platform.html"){
|
||||
const project = this.descOptions.find(item => item.reimburseProject === projectCode);
|
||||
return project ? project.fileDesc : '';
|
||||
},
|
||||
// 根据当前选择的报销项目获取管理端配置的提示内容。
|
||||
getProjectTipByProject(projectCode) {
|
||||
if (!this.descOptions || !Array.isArray(this.descOptions)) {
|
||||
return '';
|
||||
}
|
||||
const project = this.descOptions.find(item => item.reimburseProject === projectCode);
|
||||
return project ? project.projectTip : '';
|
||||
},
|
||||
// 新建申请默认优先选择分工会经费;若当前用户没有对应权限,则按页面可见权限回退到其它经费来源。
|
||||
getDefaultFundSource() {
|
||||
if (this.$auth.hasPermission("unionReimburse.fgh")) {
|
||||
|
||||
+60
-8
@@ -62,11 +62,17 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column prop="reimburseProject" label="报销项目" sortable="custom">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">慰问</span>
|
||||
<span v-else-if="row.reimburseProject === 'UNION_REIMBURSE_PROJECT_2'">文体活动</span>
|
||||
<span v-else-if="row.reimburseProject === 'UNION_REIMBURSE_PROJECT_3'">日常活动</span>
|
||||
<span v-else-if="row.reimburseProject === 'UNION_REIMBURSE_PROJECT_4'">专项活动</span>
|
||||
<span v-else>{{ row.reimburseProject }}</span>
|
||||
<el-select v-if="isAdmin && row.reimburseProject !== 'UNION_REIMBURSE_PROJECT_1'"
|
||||
:value="row.reimburseProject"
|
||||
size="mini"
|
||||
style="width: 120px"
|
||||
@change="updateReimburseProject(row, $event)">
|
||||
<el-option v-for="item in activityReimburseProjectOptions"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"></el-option>
|
||||
</el-select>
|
||||
<span v-else>{{ getReimburseProjectName(row.reimburseProject) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注">
|
||||
@@ -106,6 +112,7 @@ layout("/layouts/platform.html"){
|
||||
<el-form :model="editFormData" :rules="editFormRules" ref="editForm" label-width="120px">
|
||||
<el-form-item label="实际报销金额" prop="realMoney">
|
||||
<el-input v-model="editFormData.realMoney" placeholder="请输入实际报销金额"></el-input>
|
||||
<div class="text-muted mt5">申请金额:{{ editFormData.maxMoney }}</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@@ -137,7 +144,8 @@ layout("/layouts/platform.html"){
|
||||
editDialogVisible: false,
|
||||
editFormData: {
|
||||
realMoney: '',
|
||||
id: '' // 报销记录ID
|
||||
id: '', // 报销记录ID
|
||||
maxMoney: '0.00' // 申请金额上限
|
||||
},
|
||||
editFormRules: {
|
||||
realMoney: [
|
||||
@@ -151,12 +159,50 @@ layout("/layouts/platform.html"){
|
||||
computed: {
|
||||
isAdmin() {
|
||||
return this.$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])
|
||||
},
|
||||
activityReimburseProjectOptions() {
|
||||
const activityProjectCodes = [
|
||||
"UNION_REIMBURSE_PROJECT_2",
|
||||
"UNION_REIMBURSE_PROJECT_3",
|
||||
"UNION_REIMBURSE_PROJECT_4"
|
||||
]
|
||||
return (this.dict.type.UNION_REIMBURSE_PROJECT || [])
|
||||
.filter((item) => activityProjectCodes.includes(item.code))
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatCreateTime(value) {
|
||||
return value && this.$moment(value).isValid() ? this.$moment(value).format("YYYY-MM-DD HH:mm:ss") : ""
|
||||
},
|
||||
getReimburseProjectName(reimburseProject) {
|
||||
const project = (this.dict.type.UNION_REIMBURSE_PROJECT || [])
|
||||
.find((item) => item.code === reimburseProject)
|
||||
return project ? project.name : reimburseProject
|
||||
},
|
||||
async updateReimburseProject(row, reimburseProject) {
|
||||
if (reimburseProject === row.reimburseProject) {
|
||||
return
|
||||
}
|
||||
try {
|
||||
await this.$confirm("确定修改该记录的报销项目吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
})
|
||||
const res = await this.$axios.post("/platform/unionReimburse/collect/updateReimburseProject", {
|
||||
id: row.id,
|
||||
reimburseProject: reimburseProject
|
||||
})
|
||||
if (res.code === 0) {
|
||||
this.$set(row, "reimburseProject", reimburseProject)
|
||||
this.$message.success("报销项目修改成功")
|
||||
} else {
|
||||
this.$message.error(res.msg)
|
||||
}
|
||||
} catch (error) {
|
||||
// 取消确认时保持列表原项目,不修改页面数据。
|
||||
}
|
||||
},
|
||||
onView(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = false
|
||||
@@ -179,8 +225,10 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
openEdit(row) {
|
||||
// 初始化编辑表单数据
|
||||
this.editFormData.id = row.id;
|
||||
this.editFormData.realMoney = row.realMoney || '';
|
||||
const applyMoney = row.money != null ? row.money : row.condolenceMoney
|
||||
this.$set(this.editFormData, "id", row.id)
|
||||
this.$set(this.editFormData, "realMoney", row.realMoney || '')
|
||||
this.$set(this.editFormData, "maxMoney", Number(applyMoney || 0).toFixed(2))
|
||||
this.editDialogVisible = true;
|
||||
},
|
||||
|
||||
@@ -195,6 +243,10 @@ layout("/layouts/platform.html"){
|
||||
saveFinallyMoney() {
|
||||
this.$refs.editForm.validate((valid) => {
|
||||
if (valid) {
|
||||
if (Number(this.editFormData.realMoney) > Number(this.editFormData.maxMoney)) {
|
||||
this.$message.error("实际报销金额不能超过申请金额:" + this.editFormData.maxMoney)
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/unionReimburse/collect/updateActuallyAmount", {
|
||||
id: this.editFormData.id,
|
||||
realMoney: this.editFormData.realMoney
|
||||
|
||||
@@ -14,6 +14,10 @@ const basicForm = {
|
||||
<el-input type="text" v-model="formData.fileDesc" maxlength="50"
|
||||
placeholder="请填写附件说明"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="报销项目提示" prop="projectTip">
|
||||
<el-input type="textarea" v-model="formData.projectTip" maxlength="500" show-word-limit
|
||||
placeholder="请填写报销项目提示"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@@ -84,6 +84,7 @@ layout("/layouts/platform.html"){
|
||||
{prop: 'code', label: '项目编码'},
|
||||
{prop: 'name', label: '项目名称'},
|
||||
{prop: 'fileDesc', label: '附件说明'},
|
||||
{prop: 'projectTip', label: '报销项目提示'},
|
||||
// {prop: 'isUploadFile', label: '是否上传附件'},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -20,8 +20,6 @@ const COMMON_QUERY = {
|
||||
userStates: [],
|
||||
personTypes: [],
|
||||
preparedBys: [],
|
||||
userAttribute: '',
|
||||
userAttributes: [],
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -31,8 +29,6 @@ const COMMON_QUERY = {
|
||||
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
|
||||
// 多选值沿用现有数组参数的JSON提交口径,便于后端稳定绑定List。
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
this.$emit('search', pageForm)
|
||||
},
|
||||
async initData(){
|
||||
|
||||
@@ -63,12 +63,7 @@
|
||||
|
||||
<el-descriptions-item label="工作单位">
|
||||
<el-form-item prop="unitId">
|
||||
<el-select clearable filterable placeholder="请选择工作单位" style="width: 100%"
|
||||
disabled @change="getUnionName(formData.unitId)"
|
||||
v-model="formData.unitId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
<el-input v-model="formData.unitName" disabled placeholder="暂无工作单位"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">
|
||||
@@ -278,6 +273,18 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
normalizeUnitField() {
|
||||
if (!this.formData || !this.formData.unitId) {
|
||||
return
|
||||
}
|
||||
const unitId = String(this.formData.unitId)
|
||||
this.$set(this.formData, "unitId", unitId)
|
||||
const unit = this.units.find(v => String(v.id) === unitId)
|
||||
if (unit) {
|
||||
this.$set(this.formData, "unitName", unit.name)
|
||||
this.$set(this.formData, "unionName", unit.unionName || unit.unionname || this.formData.unionName || "")
|
||||
}
|
||||
},
|
||||
// 提交
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
@@ -446,7 +453,7 @@
|
||||
this.$set(this.formData, "userState", userState)
|
||||
this.$set(this.formData, "personType", personType)
|
||||
this.$set(this.formData, "unitName", unit ? unit.name : unitName)
|
||||
this.$set(this.formData, "unitId", unit ? unit.id : unitId)
|
||||
this.$set(this.formData, "unitId", unit ? String(unit.id) : unitId)
|
||||
this.$set(this.formData, "unionName", union ? union.name : unionName)
|
||||
this.$set(this.formData, "unionId", union ? union.id : unionId)
|
||||
|
||||
@@ -458,8 +465,9 @@
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.init()
|
||||
await this.init()
|
||||
this.units = await this.$businessTool.listUnit()
|
||||
this.normalizeUnitField()
|
||||
await this.validateApply()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -69,12 +69,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-descriptions-item label="工作单位">
|
||||
<el-form-item prop="unitId">
|
||||
<el-select clearable filterable placeholder="请选择工作单位" style="width: 100%"
|
||||
disabled @change="getUnionName(formData.unitId)"
|
||||
v-model="formData.unitId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
<el-input v-model="formData.unitName" disabled placeholder="暂无工作单位"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">
|
||||
@@ -326,6 +321,18 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
normalizeUnitField() {
|
||||
if (!this.formData || !this.formData.unitId) {
|
||||
return
|
||||
}
|
||||
const unitId = String(this.formData.unitId)
|
||||
this.$set(this.formData, "unitId", unitId)
|
||||
const unit = this.units.find(v => String(v.id) === unitId)
|
||||
if (unit) {
|
||||
this.$set(this.formData, "unitName", unit.name)
|
||||
this.$set(this.formData, "unionName", unit.unionName || unit.unionname || this.formData.unionName || "")
|
||||
}
|
||||
},
|
||||
onSave() {
|
||||
this.$confirm("您确定保存吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
@@ -453,7 +460,7 @@ layout("/layouts/platform.html"){
|
||||
this.$set(this.formData, "personType", personType)
|
||||
this.$set(this.formData, "preparedBy", preparedBy)
|
||||
this.$set(this.formData, "unitName", unit ? unit.name : unitName)
|
||||
this.$set(this.formData, "unitId", unit ? unit.id : unitId)
|
||||
this.$set(this.formData, "unitId", unit ? String(unit.id) : unitId)
|
||||
this.$set(this.formData, "unionName", union ? union.name : unionName)
|
||||
this.$set(this.formData, "unionId", union ? union.id : unionId)
|
||||
|
||||
@@ -465,11 +472,10 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
this.$businessTool.listUnit().then((data) => {
|
||||
this.units = data
|
||||
})
|
||||
async created() {
|
||||
await this.init()
|
||||
this.units = await this.$businessTool.listUnit()
|
||||
this.normalizeUnitField()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
+33
-16
@@ -92,12 +92,7 @@ const MEMBER_CHANGE = {
|
||||
<template>
|
||||
<el-descriptions-item label="工作单位">
|
||||
<el-form-item prop="unitId">
|
||||
<el-select clearable filterable placeholder="请选择工作单位" style="width: 100%"
|
||||
:disabled="allowFields('unitId')" @change="getUnionName"
|
||||
v-model="formData.unitId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in units"></el-option>
|
||||
</el-select>
|
||||
<el-input v-model="formData.unitName" disabled placeholder="暂无工作单位"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属工会">
|
||||
@@ -194,9 +189,10 @@ const MEMBER_CHANGE = {
|
||||
|
||||
<el-descriptions-item label="福利会员状态">
|
||||
<el-form-item prop="welfareMember">
|
||||
<el-radio-group v-model="formData.welfareMember" size="small">
|
||||
<el-radio border :label="true">福利会员</el-radio>
|
||||
<el-radio border :label="false">非福利会员</el-radio>
|
||||
<el-radio-group v-model="formData.welfareMember" size="small" class="welfare-member-radio-group"
|
||||
style="display: flex; align-items: center; flex-wrap: nowrap; white-space: nowrap;">
|
||||
<el-radio border :label="true" style="flex-shrink: 0;">福利会员</el-radio>
|
||||
<el-radio border :label="false" style="flex-shrink: 0;">非福利会员</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
@@ -366,9 +362,21 @@ const MEMBER_CHANGE = {
|
||||
},
|
||||
methods: {
|
||||
getUnionName(val){
|
||||
debugger
|
||||
const data = this.units.find(v => v.id === val)
|
||||
this.$set(this.formData, 'unionName', data ? data.unionName : '')
|
||||
const data = this.units.find(v => String(v.id) === String(val))
|
||||
this.$set(this.formData, 'unitName', data ? data.name : '')
|
||||
this.$set(this.formData, 'unionName', data ? (data.unionName || data.unionname || '') : '')
|
||||
},
|
||||
normalizeUnitField() {
|
||||
if (!this.formData || !this.formData.unitId) {
|
||||
return
|
||||
}
|
||||
const unitId = String(this.formData.unitId)
|
||||
this.$set(this.formData, "unitId", unitId)
|
||||
let unit = this.units.find(v => String(v.id) === unitId)
|
||||
if (unit) {
|
||||
this.$set(this.formData, "unitName", unit.name)
|
||||
this.$set(this.formData, "unionName", unit.unionName || unit.unionname || this.formData.unionName || "")
|
||||
}
|
||||
},
|
||||
allowFields(prop) {
|
||||
return !this.allowChangeFields.map(v => v.code).includes(prop)
|
||||
@@ -407,14 +415,15 @@ const MEMBER_CHANGE = {
|
||||
this.isShow = true
|
||||
this.user = this.$store.state.user
|
||||
}
|
||||
this.getFormDataValue(this.id)
|
||||
await this.getFormDataValue(this.id)
|
||||
this.allowChangeFields = await this.$businessTool.getDictOptions("ALLOW_CHANGE_FIELDS")
|
||||
if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_MEMBER_ADMIN, SCHOOL_UNION_ADMIN')) {
|
||||
this.units = await this.$businessTool.listUnit()
|
||||
this.unions = await this.$businessTool.listUnion()
|
||||
} else {
|
||||
this.units = await this.$businessTool.listUnit(this.user.union.id)
|
||||
this.units = await this.$businessTool.listUnit()
|
||||
}
|
||||
this.normalizeUnitField()
|
||||
},
|
||||
async getUserById(userId){
|
||||
const resp = await $.post("/platform/member/change/apply/getUserByIdForMemberChange", { userId })
|
||||
@@ -424,7 +433,7 @@ const MEMBER_CHANGE = {
|
||||
},
|
||||
getFormDataValue(id){
|
||||
if (id) {
|
||||
$.post("/platform/member/change/apply/findChangeById", { id }).then((res) => {
|
||||
return $.post("/platform/member/change/apply/findChangeById", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
this.formData.unionid = this.user.unionid
|
||||
@@ -485,7 +494,7 @@ const MEMBER_CHANGE = {
|
||||
this.$set(this.formData, "userAttribute", userAttribute)
|
||||
this.$set(this.formData, "aidFundMemberUserType", aidFundMemberUserType)
|
||||
this.$set(this.formData, "unitName", unit ? unit.name : null)
|
||||
this.$set(this.formData, "unitId", unit ? unit.id : null)
|
||||
this.$set(this.formData, "unitId", unit ? String(unit.id) : null)
|
||||
this.$set(this.formData, "unionName", union ? union.name : null)
|
||||
this.$set(this.formData, "unionId", union ? union.id : null)
|
||||
|
||||
@@ -504,6 +513,14 @@ const MEMBER_CHANGE = {
|
||||
.el-descriptions-item__label {
|
||||
width: 15% !important;
|
||||
}
|
||||
.welfare-member-radio-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.welfare-member-radio-group .el-radio {
|
||||
margin-right: 12px;
|
||||
}
|
||||
`
|
||||
}
|
||||
|
||||
|
||||
@@ -38,10 +38,11 @@ layout("/layouts/platform.html"){
|
||||
<!-- <dict-select v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch"-->
|
||||
<!-- code="USER_PREPARED_BY_TYPE"></dict-select>-->
|
||||
<!-- </search-item>-->
|
||||
<search-item label="人员分类">
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"
|
||||
code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<!-- 临时屏蔽“人员分类”查询字段,不删除配置,后续需要可恢复。-->
|
||||
<!-- <search-item label="人员分类">-->
|
||||
<!-- <dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch"-->
|
||||
<!-- code="AIDFUND_MEMBER_USER_TYPE"></dict-select>-->
|
||||
<!-- </search-item>-->
|
||||
<search-item label="人员属性">
|
||||
<dict-select v-model="pageForm.userAttributes" placeholder="请选择人员属性" @change="doSearch"
|
||||
code="USER_ATTRIBUTE" multiple collapse-tags clearable></dict-select>
|
||||
@@ -544,16 +545,21 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "sex", label: "性别", width: 120},
|
||||
{ prop: "birthday", label: "出生年月", width: 120, sortable: true },
|
||||
{ prop: "nationality", label: "国籍", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "nation", label: "民族", width: 120, sortable: true},
|
||||
// 临时屏蔽“民族”列表字段,不删除配置,后续需要可恢复。
|
||||
// { prop: "nation", label: "民族", width: 120, sortable: true},
|
||||
{ prop: "mobile", label: "联系电话", width: 120 },
|
||||
{ prop: "political", label: "政治面貌", width: 120, sortable: true},
|
||||
// 临时屏蔽“政治面貌”列表字段,不删除配置,后续需要可恢复。
|
||||
// { prop: "political", label: "政治面貌", width: 120, sortable: true},
|
||||
{ prop: "userState", label: "在职状态", width: 120, sortable: true },
|
||||
{ prop: "personType", label: "人员类型", width: 120, sortable: true, checked: 0 },
|
||||
// 临时隐藏原人员类型位置,人员类型显示到原“人员分类”位置。
|
||||
// { prop: "personType", label: "人员类型", width: 120, sortable: true, checked: 0 },
|
||||
// { prop: "preparedBy", label: "编制类别", width: 120, sortable: true },
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||
{ prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||
{ prop: "personType", label: "人员类型", width: 120, sortable: true },
|
||||
// 临时屏蔽“人员分类”列表字段,不删除配置,后续需要可恢复。
|
||||
// { prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||
{ prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
|
||||
@@ -73,17 +73,17 @@ const MEMBER_INFO = {
|
||||
<el-descriptions-item label="人员类型">{{ viewData.personType }}</el-descriptions-item>
|
||||
|
||||
<!-- 第 4 行 -->
|
||||
<el-descriptions-item label="人员属性">{{ viewData.userAttribute }}</el-descriptions-item>
|
||||
<el-descriptions-item label="职称">{{ viewData.professionalTitle }}</el-descriptions-item>
|
||||
<el-descriptions-item label="职级">{{ viewData.professionalLevel }}</el-descriptions-item>
|
||||
<el-descriptions-item label="岗位系列">{{ viewData.positionSeries }}</el-descriptions-item>
|
||||
|
||||
<!-- 第 5 行 -->
|
||||
<el-descriptions-item label="岗位系列">{{ viewData.positionSeries }}</el-descriptions-item>
|
||||
<el-descriptions-item label="行政级别(管理岗位)">{{ viewData.administrativeLevel }}</el-descriptions-item>
|
||||
<el-descriptions-item label="岗级">{{ viewData.positionLevel }}</el-descriptions-item>
|
||||
<el-descriptions-item label="行政岗级">{{ viewData.administrativePositionLevel }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="人员分类">{{ viewData.aidFundMemberUserType }}</el-descriptions-item>
|
||||
<el-descriptions-item label="人员属性">{{ viewData.userAttribute }}</el-descriptions-item>
|
||||
<el-descriptions-item label="行政岗级">{{ viewData.administrativePositionLevel }}</el-descriptions-item>
|
||||
<el-descriptions-item label="人员分类" v-if="false">{{ viewData.aidFundMemberUserType }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
`,
|
||||
|
||||
@@ -46,7 +46,7 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="人员类型">
|
||||
<dict-select v-model="pageForm.personType" placeholder="请选择人员类型" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员分类">
|
||||
<search-item label="人员分类" v-if="false">
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch" code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员属性">
|
||||
|
||||
@@ -46,7 +46,7 @@ layout("/layouts/platform.html"){
|
||||
<search-item label="人员类型">
|
||||
<dict-select v-model="pageForm.personType" placeholder="请选择人员类型" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员分类">
|
||||
<search-item label="人员分类" v-if="false">
|
||||
<dict-select v-model="pageForm.aidFundMemberUserType" placeholder="请选择人员分类" @change="doSearch" code="AIDFUND_MEMBER_USER_TYPE"></dict-select>
|
||||
</search-item>
|
||||
<search-item label="人员属性">
|
||||
|
||||
+37
@@ -82,6 +82,30 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-card shadow="never">
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-col class="query-row-title">人员类型:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
class="query-tag-item"
|
||||
v-for="item in personTypeOptions"
|
||||
:key="item.code"
|
||||
:effect="pageForm.personTypes.includes(item.name)?'dark':'plain'"
|
||||
@click="tagClick('personTypes',item.name)">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
<span class="query-tag-actions">
|
||||
<el-link type="danger"
|
||||
v-if="personTypeOptions.length&&pageForm.personTypes.length"
|
||||
:underline="false"
|
||||
@click="pageForm.personTypes=[];doSearch()">清空
|
||||
</el-link>
|
||||
<el-link :underline="false"
|
||||
@click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()"
|
||||
type="success">全部
|
||||
</el-link>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag" v-if="false">
|
||||
<el-col class="query-row-title">人员分类:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
@@ -211,11 +235,13 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
unions: [],
|
||||
units: [],
|
||||
personTypeOptions: [],
|
||||
aidFundMemberUserTypeOptions: [],
|
||||
userAttributeOptions: [],
|
||||
pageForm: {
|
||||
currentYear: moment().format("YYYY"),
|
||||
queryType: "fgh",
|
||||
personTypes: [],
|
||||
userAttributes: [],
|
||||
aidFundMemberUserTypes: []
|
||||
},
|
||||
@@ -239,6 +265,9 @@ layout("/layouts/platform.html"){
|
||||
this.units = data
|
||||
})
|
||||
}
|
||||
this.$businessTool.getDictOptions("USER_PERSON_TYPE").then((data) => {
|
||||
this.personTypeOptions = data
|
||||
})
|
||||
this.$businessTool.getDictOptions("AIDFUND_MEMBER_USER_TYPE").then((data) => {
|
||||
this.aidFundMemberUserTypeOptions = data
|
||||
})
|
||||
@@ -249,6 +278,7 @@ layout("/layouts/platform.html"){
|
||||
pageData() {
|
||||
// 统计接口按 JSON 字符串接收多选条件,这里统一在提交前做转换,保证人员分类和人员属性都能正确过滤。
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
this.$axios.post(loc() + "/pageData", pageForm).then((res) => {
|
||||
@@ -259,6 +289,13 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
tagClick(key,code) {
|
||||
if (key === "personTypes") {
|
||||
if (this.pageForm.personTypes.includes(code)) {
|
||||
this.pageForm.personTypes.splice(this.pageForm.personTypes.indexOf(code), 1)
|
||||
} else {
|
||||
this.pageForm.personTypes.push(code)
|
||||
}
|
||||
}
|
||||
if (key === "userAttributes") {
|
||||
if (this.pageForm.userAttributes.includes(code)) {
|
||||
this.pageForm.userAttributes.splice(this.pageForm.userAttributes.indexOf(code), 1)
|
||||
|
||||
+2
-1
@@ -163,7 +163,8 @@ layout("/layouts/platform.html"){
|
||||
{ prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 },
|
||||
{ prop: "unionName", label: "所属工会", width: 120, sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", width: 120, sortable: true },
|
||||
{ prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||
// 临时屏蔽“人员分类”列表字段,不删除配置,后续需要可恢复。
|
||||
// { prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true },
|
||||
{ prop: "userAttribute", label: "人员属性", width: 120, sortable: true },
|
||||
{ prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 },
|
||||
{ prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 },
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag" v-if="false">
|
||||
<el-col class="query-row-title">人员分类:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
|
||||
+37
@@ -82,6 +82,30 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag">
|
||||
<el-col class="query-row-title">人员类型:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
class="query-tag-item"
|
||||
v-for="item in personTypeOptions"
|
||||
:key="item.code"
|
||||
:effect="pageForm.personTypes.includes(item.name)?'dark':'plain'"
|
||||
@click="tagClick('personTypes',item.name)">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
<span class="query-tag-actions">
|
||||
<el-link type="danger"
|
||||
v-if="personTypeOptions.length&&pageForm.personTypes.length"
|
||||
:underline="false"
|
||||
@click="pageForm.personTypes=[];doSearch()">清空
|
||||
</el-link>
|
||||
<el-link :underline="false"
|
||||
@click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()"
|
||||
type="success">全部
|
||||
</el-link>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row type="flex" align="middle" class="query-row query-row-tag" v-if="false">
|
||||
<el-col class="query-row-title">人员分类:</el-col>
|
||||
<el-col class="query-row-content query-row-content-tag">
|
||||
<el-tag
|
||||
@@ -173,10 +197,12 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
unions: [],
|
||||
units: [],
|
||||
personTypeOptions: [],
|
||||
userAttributeOptions: [],
|
||||
pageForm: {
|
||||
currentYear: moment().format("YYYY"),
|
||||
queryType: "fgh",
|
||||
personTypes: [],
|
||||
userAttributes: [],
|
||||
aidFundMemberUserTypes: []
|
||||
},
|
||||
@@ -200,6 +226,9 @@ layout("/layouts/platform.html"){
|
||||
this.units = data
|
||||
})
|
||||
}
|
||||
this.$businessTool.getDictOptions("USER_PERSON_TYPE").then((data) => {
|
||||
this.personTypeOptions = data
|
||||
})
|
||||
this.$businessTool.getDictOptions("AIDFUND_MEMBER_USER_TYPE").then((data) => {
|
||||
this.aidFundMemberUserTypeOptions = data
|
||||
})
|
||||
@@ -208,6 +237,13 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
tagClick(key,code) {
|
||||
if (key === "personTypes") {
|
||||
if (this.pageForm.personTypes.includes(code)) {
|
||||
this.pageForm.personTypes.splice(this.pageForm.personTypes.indexOf(code), 1)
|
||||
} else {
|
||||
this.pageForm.personTypes.push(code)
|
||||
}
|
||||
}
|
||||
if (key === "userAttributes") {
|
||||
if (this.pageForm.userAttributes.includes(code)) {
|
||||
this.pageForm.userAttributes.splice(this.pageForm.userAttributes.indexOf(code), 1)
|
||||
@@ -227,6 +263,7 @@ layout("/layouts/platform.html"){
|
||||
pageData() {
|
||||
const pageForm = clone(this.pageForm)
|
||||
// 统计接口按 JSON 字符串接收多选条件,这里把人员分类和人员属性统一成同一提交口径。
|
||||
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
|
||||
pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes)
|
||||
pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes)
|
||||
this.$axios.post(loc() + "/pageData", pageForm).then((res) => {
|
||||
|
||||
@@ -84,6 +84,13 @@ const filterUser = {
|
||||
v-model="pageForm.personTypes"></dict-select>
|
||||
</search-item>
|
||||
|
||||
<search-item label="人员属性:">
|
||||
<dict-select clearable code="USER_ATTRIBUTE"
|
||||
multiple
|
||||
collapse-tags
|
||||
placeholder="请选择人员属性"
|
||||
v-model="pageForm.userAttributes"></dict-select>
|
||||
</search-item>
|
||||
|
||||
<search-item label="在职状态:">
|
||||
<dict-select clearable code="USER_STATE"
|
||||
@@ -152,6 +159,7 @@ const filterUser = {
|
||||
userStates: [],
|
||||
personTypes: [],
|
||||
preparedBys: [],
|
||||
userAttributes: [],
|
||||
unitIds: []
|
||||
},
|
||||
sexOptions: ["男", "女"],
|
||||
@@ -165,7 +173,8 @@ const filterUser = {
|
||||
{ prop: "personType", label: "人员类型", sortable: true },
|
||||
{ prop: "userState", label: "在职状态", sortable: true },
|
||||
{ prop: "unionName", label: "所属工会", sortable: true },
|
||||
{ prop: "unitName", label: "所属单位", sortable: true }
|
||||
{ prop: "unitName", label: "所属单位", sortable: true },
|
||||
{ prop: "threeUnitName", label: "三级单位", sortable: true }
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -186,9 +195,10 @@ const filterUser = {
|
||||
this.$set(this.pageForm, "birthday", null)
|
||||
this.$set(this.pageForm, "birthMonths", [])
|
||||
this.$set(this.pageForm, "unionId", null)
|
||||
this.$set(this.pageForm, "unitId", null)
|
||||
this.$set(this.pageForm, "unitIds", [])
|
||||
this.$set(this.pageForm, "personTypes", [])
|
||||
this.$set(this.pageForm, "preparedBys", [])
|
||||
this.$set(this.pageForm, "userAttributes", [])
|
||||
this.$set(this.pageForm, "userStates", [])
|
||||
this.$set(this.pageForm, "isMember", null)
|
||||
},
|
||||
|
||||
@@ -3,7 +3,7 @@ const welfareOption = {
|
||||
<div class="welfare-option">
|
||||
<el-card shadow="never">
|
||||
<el-table :data="welfareList" border style="width: 100%; margin-top: 20px;">
|
||||
<el-table-column align="center" header-align="center" label="福利名称">
|
||||
<el-table-column align="center" header-align="center" label="福利名称" min-width="520">
|
||||
<template slot-scope="{row}">
|
||||
<el-input
|
||||
v-model="row.optionName"
|
||||
@@ -12,6 +12,16 @@ const welfareOption = {
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="系统默认选择" width="140">
|
||||
<template slot-scope="{$index}">
|
||||
<el-radio
|
||||
v-model="systemDefaultPlaceholderIndex"
|
||||
:label="$index">
|
||||
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="图片" width="200">
|
||||
<template slot-scope="{row}">
|
||||
<file-upload :upload_number="1" :value.sync="row.imgUrl"
|
||||
@@ -22,22 +32,22 @@ const welfareOption = {
|
||||
upload_result_category="interval"></file-upload>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column align="center" header-align="center" label="说明" width="120">
|
||||
<template slot-scope="{row, $index}">
|
||||
<el-button
|
||||
type="text"
|
||||
<el-button
|
||||
type="text"
|
||||
@click="openDescription(row, $index)">
|
||||
{{ row.description ? '编辑说明' : '添加说明' }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column align="center" header-align="center" label="操作" width="100">
|
||||
<template slot-scope="{$index}">
|
||||
<el-button
|
||||
<el-button
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
icon="el-icon-delete"
|
||||
circle
|
||||
size="mini"
|
||||
@click="deleteOption($index)">
|
||||
@@ -48,7 +58,6 @@ const welfareOption = {
|
||||
<el-button type="primary" size="small" @click="addOption">添加福利选项</el-button>
|
||||
</el-card>
|
||||
|
||||
<!-- 说明编辑对话框 -->
|
||||
<el-dialog
|
||||
title="编辑福利说明"
|
||||
:visible.sync="descriptionDialog.visible"
|
||||
@@ -57,8 +66,8 @@ const welfareOption = {
|
||||
:close-on-click-modal="false">
|
||||
<text-editor v-model="descriptionDialog.content"></text-editor>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="descriptionDialog.visible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="saveDescription">确 定</el-button>
|
||||
<el-button @click="descriptionDialog.visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="saveDescription">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -74,6 +83,7 @@ const welfareOption = {
|
||||
data() {
|
||||
return {
|
||||
welfareList: [],
|
||||
systemDefaultPlaceholderIndex: null,
|
||||
descriptionDialog: {
|
||||
visible: false,
|
||||
content: '',
|
||||
@@ -111,6 +121,11 @@ const welfareOption = {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.welfareList.splice(index, 1);
|
||||
if (this.systemDefaultPlaceholderIndex === index) {
|
||||
this.systemDefaultPlaceholderIndex = null;
|
||||
} else if (this.systemDefaultPlaceholderIndex > index) {
|
||||
this.systemDefaultPlaceholderIndex--;
|
||||
}
|
||||
this.updateSortNumbers();
|
||||
});
|
||||
},
|
||||
@@ -158,7 +173,7 @@ const welfareOption = {
|
||||
|
||||
style: /*language=CSS*/ `
|
||||
/deep/ .welfare-option {
|
||||
|
||||
|
||||
}
|
||||
|
||||
/deep/ .welfare-option .el-card__body{
|
||||
@@ -182,6 +197,10 @@ const welfareOption = {
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
/deep/ .welfare-option .el-radio__label {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
/deep/ .preview-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
@@ -34,6 +34,9 @@ layout("/layouts/platform.html"){
|
||||
<el-card class="mt10" shadow="never" v-loading="tableLoading">
|
||||
<table-tool label="工会列表">
|
||||
<el-button @click="exportByWelfareOptions" icon="el-icon-printer" size="small" type="primary">按福利选项导出</el-button>
|
||||
<el-button :disabled="!pageForm.projectId" @click="remindUnSelectedPlaceholder" icon="el-icon-bell" size="small" type="primary">
|
||||
提醒未选择人员
|
||||
</el-button>
|
||||
<template v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN','SCHOOL_UNION_WELFARE_ADMIN'])">
|
||||
<el-button :disabled="!pageForm.projectId" @click="exportSummary" icon="el-icon-printer" size="small" type="primary">
|
||||
导出汇总表
|
||||
@@ -107,6 +110,9 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
remindUnSelectedPlaceholder() {
|
||||
this.$message.info("提醒未选择人员功能待开发")
|
||||
},
|
||||
// 导出汇总表
|
||||
exportSummary() {
|
||||
this.$downLoad("/platform/welfare/statistics/exportSummary", {
|
||||
|
||||
+140
-116
@@ -439,6 +439,11 @@ layout("/layouts/platform_h5.html"){
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-cell v-if="getProjectTipByProject(formData.reimburseProject)">
|
||||
<template #title>
|
||||
<span style="color: #ee0a24; text-align: left;">报销提示:{{getProjectTipByProject(formData.reimburseProject)}}</span>
|
||||
</template>
|
||||
</van-cell>
|
||||
<van-popup position="bottom" round v-model:show="showReimburseProjectPicker">
|
||||
<van-picker :columns="reimburseProjectColumns" @cancel="closePopup('showReimburseProjectPicker')"
|
||||
@confirm="onReimburseProjectConfirm" show-toolbar></van-picker>
|
||||
@@ -528,120 +533,6 @@ layout("/layouts/platform_h5.html"){
|
||||
-->
|
||||
|
||||
</van-cell-group>
|
||||
<van-cell-group class="form-section">
|
||||
<div class="payment-section">
|
||||
<div class="payment-toolbar">
|
||||
<span>支付信息</span>
|
||||
<van-button native-type="button" size="small" type="primary" icon="plus" @click="addPaymentInfo">新增</van-button>
|
||||
</div>
|
||||
<div class="invoice-tip" v-if="!paymentInfoRows.length">请至少维护一条支付信息。</div>
|
||||
<van-swipe
|
||||
ref="paymentSwipe"
|
||||
class="payment-swipe"
|
||||
:loop="false"
|
||||
:show-indicators="false"
|
||||
@change="handlePaymentSwipeChange"
|
||||
v-if="paymentInfoRows.length">
|
||||
<van-swipe-item v-for="(item, index) in paymentInfoRows" :key="index">
|
||||
<div class="payment-detail-item">
|
||||
<div class="payment-detail-title">
|
||||
<div class="payment-title-left">
|
||||
<span>支付信息{{index + 1}}</span>
|
||||
<span class="payment-index-text">{{index + 1}} / {{paymentInfoRows.length}}</span>
|
||||
</div>
|
||||
<van-tag v-if="item.paymentWayName" type="primary">{{item.paymentWayName}}</van-tag>
|
||||
</div>
|
||||
<van-field
|
||||
v-model="item.paymentWayName"
|
||||
label="支付方式"
|
||||
readonly
|
||||
placeholder="请选择支付方式"
|
||||
@click="openPaymentWayPicker(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="金额"
|
||||
v-model="item.money"
|
||||
placeholder="请输入金额"
|
||||
type="number"
|
||||
required
|
||||
></van-field>
|
||||
<template v-if="isPrivatePayment(item)">
|
||||
<van-field
|
||||
v-model="item.payerName"
|
||||
label="付款人"
|
||||
readonly
|
||||
placeholder="请选择付款人"
|
||||
@click="openPayerSelect(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="户名"
|
||||
v-model="item.bankUserName"
|
||||
placeholder="请输入户名"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="开户行"
|
||||
v-model="item.bankOfDeposit"
|
||||
placeholder="请输入开户行"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="银行卡号"
|
||||
v-model="item.bankCardNumber"
|
||||
placeholder="请输入银行卡号"
|
||||
required
|
||||
></van-field>
|
||||
</template>
|
||||
<div class="payment-detail-actions">
|
||||
<div class="payment-nav-buttons">
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex > 0}" @click="showPrevPayment">
|
||||
<van-icon name="arrow-left"></van-icon>
|
||||
</span>
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex < paymentInfoRows.length - 1}" @click="showNextPayment">
|
||||
<van-icon name="arrow"></van-icon>
|
||||
</span>
|
||||
</div>
|
||||
<van-button class="payment-delete-btn" native-type="button" size="small" plain type="danger" icon="delete-o" @click="deletePaymentInfo(index)">删除</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</van-swipe-item>
|
||||
</van-swipe>
|
||||
<div class="payment-dots" v-if="paymentInfoRows.length > 1">
|
||||
<span class="payment-dot" :class="{active: index === currentPaymentIndex}" v-for="(item, index) in paymentInfoRows"></span>
|
||||
</div>
|
||||
</div>
|
||||
<van-popup position="bottom" round v-model:show="showPaymentWayPicker">
|
||||
<van-picker :columns="paymentWayColumns" @cancel="closePopup('showPaymentWayPicker')"
|
||||
@confirm="onPaymentWayConfirm" show-toolbar></van-picker>
|
||||
</van-popup>
|
||||
<van-action-sheet v-model="payerSelectShow" title="付款人" class="height100">
|
||||
<van-search
|
||||
v-model="payerSearchKeyword"
|
||||
:show-action="false"
|
||||
:reverse-color="false"
|
||||
input-align="left"
|
||||
placeholder="请输入工号或姓名选择付款人"
|
||||
@input="payerRemoteMethod"
|
||||
@clear="payerRemoteMethod"
|
||||
shape="round"
|
||||
></van-search>
|
||||
<div class="van-action-sheet__content mt5" v-if="payerOptions && payerOptions.length>0">
|
||||
<template v-for="item in payerOptions">
|
||||
<van-button native-type="button" @click="payerUserChange(item)"
|
||||
class="van-action-sheet__item van-hairline--bottom">
|
||||
<span class="van-action-sheet__name">{{item.userName}}({{item.loginName}})</span>
|
||||
</van-button>
|
||||
</template>
|
||||
</div>
|
||||
<van-empty description="暂无数据" v-else></van-empty>
|
||||
</van-action-sheet>
|
||||
</van-cell-group>
|
||||
<van-cell-group :title="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1' ? '慰问信息' : '活动信息'" class="form-section">
|
||||
|
||||
<template v-if="formData.reimburseProject === 'UNION_REIMBURSE_PROJECT_1'">
|
||||
@@ -921,6 +812,120 @@ layout("/layouts/platform_h5.html"){
|
||||
</template>
|
||||
</van-field>
|
||||
</van-cell-group>
|
||||
<van-cell-group class="form-section">
|
||||
<div class="payment-section">
|
||||
<div class="payment-toolbar">
|
||||
<span>支付信息</span>
|
||||
<van-button native-type="button" size="small" type="primary" icon="plus" @click="addPaymentInfo">新增</van-button>
|
||||
</div>
|
||||
<div class="invoice-tip" v-if="!paymentInfoRows.length">请至少维护一条支付信息。</div>
|
||||
<van-swipe
|
||||
ref="paymentSwipe"
|
||||
class="payment-swipe"
|
||||
:loop="false"
|
||||
:show-indicators="false"
|
||||
@change="handlePaymentSwipeChange"
|
||||
v-if="paymentInfoRows.length">
|
||||
<van-swipe-item v-for="(item, index) in paymentInfoRows" :key="index">
|
||||
<div class="payment-detail-item">
|
||||
<div class="payment-detail-title">
|
||||
<div class="payment-title-left">
|
||||
<span>支付信息{{index + 1}}</span>
|
||||
<span class="payment-index-text">{{index + 1}} / {{paymentInfoRows.length}}</span>
|
||||
</div>
|
||||
<van-tag v-if="item.paymentWayName" type="primary">{{item.paymentWayName}}</van-tag>
|
||||
</div>
|
||||
<van-field
|
||||
v-model="item.paymentWayName"
|
||||
label="支付方式"
|
||||
readonly
|
||||
placeholder="请选择支付方式"
|
||||
@click="openPaymentWayPicker(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="金额"
|
||||
v-model="item.money"
|
||||
placeholder="请输入金额"
|
||||
type="number"
|
||||
required
|
||||
></van-field>
|
||||
<template v-if="isPrivatePayment(item)">
|
||||
<van-field
|
||||
v-model="item.payerName"
|
||||
label="付款人"
|
||||
readonly
|
||||
placeholder="请选择付款人"
|
||||
@click="openPayerSelect(item, index)"
|
||||
clickable
|
||||
required
|
||||
is-link
|
||||
></van-field>
|
||||
<van-field
|
||||
label="户名"
|
||||
v-model="item.bankUserName"
|
||||
placeholder="请输入户名"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="开户行"
|
||||
v-model="item.bankOfDeposit"
|
||||
placeholder="请输入开户行"
|
||||
required
|
||||
></van-field>
|
||||
<van-field
|
||||
label="银行卡号"
|
||||
v-model="item.bankCardNumber"
|
||||
placeholder="请输入银行卡号"
|
||||
required
|
||||
></van-field>
|
||||
</template>
|
||||
<div class="payment-detail-actions">
|
||||
<div class="payment-nav-buttons">
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex > 0}" @click="showPrevPayment">
|
||||
<van-icon name="arrow-left"></van-icon>
|
||||
</span>
|
||||
<span class="payment-nav-btn" :class="{active: currentPaymentIndex < paymentInfoRows.length - 1}" @click="showNextPayment">
|
||||
<van-icon name="arrow"></van-icon>
|
||||
</span>
|
||||
</div>
|
||||
<van-button class="payment-delete-btn" native-type="button" size="small" plain type="danger" icon="delete-o" @click="deletePaymentInfo(index)">删除</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</van-swipe-item>
|
||||
</van-swipe>
|
||||
<div class="payment-dots" v-if="paymentInfoRows.length > 1">
|
||||
<span class="payment-dot" :class="{active: index === currentPaymentIndex}" v-for="(item, index) in paymentInfoRows"></span>
|
||||
</div>
|
||||
</div>
|
||||
<van-popup position="bottom" round v-model:show="showPaymentWayPicker">
|
||||
<van-picker :columns="paymentWayColumns" @cancel="closePopup('showPaymentWayPicker')"
|
||||
@confirm="onPaymentWayConfirm" show-toolbar></van-picker>
|
||||
</van-popup>
|
||||
<van-action-sheet v-model="payerSelectShow" title="付款人" class="height100">
|
||||
<van-search
|
||||
v-model="payerSearchKeyword"
|
||||
:show-action="false"
|
||||
:reverse-color="false"
|
||||
input-align="left"
|
||||
placeholder="请输入工号或姓名选择付款人"
|
||||
@input="payerRemoteMethod"
|
||||
@clear="payerRemoteMethod"
|
||||
shape="round"
|
||||
></van-search>
|
||||
<div class="van-action-sheet__content mt5" v-if="payerOptions && payerOptions.length>0">
|
||||
<template v-for="item in payerOptions">
|
||||
<van-button native-type="button" @click="payerUserChange(item)"
|
||||
class="van-action-sheet__item van-hairline--bottom">
|
||||
<span class="van-action-sheet__name">{{item.userName}}({{item.loginName}})</span>
|
||||
</van-button>
|
||||
</template>
|
||||
</div>
|
||||
<van-empty description="暂无数据" v-else></van-empty>
|
||||
</van-action-sheet>
|
||||
</van-cell-group>
|
||||
<van-cell-group title="电子发票" class="form-section" v-if="formData.reimburseProject">
|
||||
<van-field label="报销金额"
|
||||
v-model="formData.money"
|
||||
@@ -1186,6 +1191,7 @@ layout("/layouts/platform_h5.html"){
|
||||
clubOptions: [],
|
||||
condolenceOptions: [],
|
||||
typeOptions: [],
|
||||
descOptions: [],
|
||||
// 添加报销项目原始数据列表
|
||||
reimburseProjectList: [],
|
||||
// 添加日期选择器相关变量
|
||||
@@ -2025,7 +2031,7 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
this.$dialog.confirm({
|
||||
title: "温馨提示",
|
||||
message: "您确定要提交吗?"
|
||||
message: "您确定要提交吗?审核通过后可前往pc端我的报销打印!"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/unionReimburse/apply/submit", { data: JSON.stringify(this.buildSubmitFormData(paymentDetails)) })
|
||||
.then(res => {
|
||||
@@ -2064,7 +2070,7 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
this.$dialog.confirm({
|
||||
title: "温馨提示",
|
||||
message: "您确定要提交吗?"
|
||||
message: "您确定要提交吗?审核通过后可前往pc端我的报销打印!"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/unionReimburse/apply/submitAgain", {
|
||||
data: JSON.stringify(this.buildSubmitFormData(paymentDetails)),
|
||||
@@ -2195,6 +2201,23 @@ layout("/layouts/platform_h5.html"){
|
||||
const matchedFundSource = this.reimburseFundSourceColumns.find(item => item.value === code)
|
||||
return matchedFundSource ? matchedFundSource.text : ""
|
||||
},
|
||||
// 查询管理端配置的报销项目提示。
|
||||
queryProjectDesc() {
|
||||
return this.$axios.post("/platform/unionReimburse/desc/queryFileDesc")
|
||||
.then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.$set(this, "descOptions", resp.data || [])
|
||||
}
|
||||
})
|
||||
},
|
||||
// 根据当前选择的报销项目获取管理端配置的提示内容。
|
||||
getProjectTipByProject(projectCode) {
|
||||
if (!this.descOptions || !Array.isArray(this.descOptions)) {
|
||||
return ""
|
||||
}
|
||||
const project = this.descOptions.find(item => item.reimburseProject === projectCode)
|
||||
return project ? project.projectTip : ""
|
||||
},
|
||||
async initDictOptions() {
|
||||
// 报销类别
|
||||
const reimburseTypeData = await this.$businessTool.getDictOptions("UNION_REIMBURSE_TYPE")
|
||||
@@ -2558,6 +2581,7 @@ layout("/layouts/platform_h5.html"){
|
||||
|
||||
async created() {
|
||||
await this.initDictOptions()
|
||||
await this.queryProjectDesc()
|
||||
await this.queryCondolenceType()
|
||||
await this.queryClubs()
|
||||
await this.init()
|
||||
|
||||
Reference in New Issue
Block a user