feat: v3版疗休养优化9

This commit is contained in:
2026-10-27 11:59:57 +08:00
parent 55e94de004
commit 0fb779ff5a
27 changed files with 320 additions and 112 deletions
@@ -98,14 +98,14 @@ public class TherapyRecuperationModule {
Sys_config setting = new Sys_config();
setting.setConfigKey("staffTherapyRecuperationVersion");
setting.setConfigValue("zjnu");
setting.setNote("普惠疗休养V3独立子模块报名规则版本");
setting.setNote("普惠疗休养独立子模块报名规则版本");
dao.insert(setting);
}
private void seedConfig() {
if (dao.count(TheRapyRecuperationConfig.class) != 0) return;
TheRapyRecuperationConfig config = new TheRapyRecuperationConfig();
config.setConfigName("普惠疗休养V3配置");
config.setConfigName("普惠疗休养配置");
config.setIsSnLine(false);
config.setIsSwLine(false);
config.setTravelAudit(false);
@@ -128,7 +128,7 @@ public class TherapyRecuperationModule {
module.setFaIcon("fa fa-heart");
dao.insert(module);
}
Sys_menu root = addMenu(module.getId(), "", "普惠疗休养V3", ROOT, "inclusiveTherapyV3", "pc");
Sys_menu root = addMenu(module.getId(), "", "普惠疗休养", ROOT, "inclusiveTherapyV3", "pc");
List<Sys_role> roles = dao.query(Sys_role.class, Cnd.where("disabled", "=", false));
for (String[] screen : SCREENS) {
Sys_menu menu = addMenu(module.getId(), root.getId(), screen[1], ROOT + screen[2],
@@ -158,7 +158,7 @@ public class TherapyRecuperationModule {
h5Module.setFaIcon("fa fa-heart");
dao.insert(h5Module);
}
Sys_menu mobile = addMenu(h5Module.getId(), "", "普惠疗休养V3", ROOT + "/mobile/index", "inclusiveTherapyV3.mobile", "h5");
Sys_menu mobile = addMenu(h5Module.getId(), "", "普惠疗休养", ROOT + "/mobile/index", "inclusiveTherapyV3.mobile", "h5");
for (Sys_role role : roles) {
if (List.of("public", "PUBLIC", "MEMBER", "sysadmin", "superadmin", "SYSADMIN").contains(role.getCode())) {
grant(role.getId(), root.getId());
@@ -37,7 +37,7 @@ public class TherapyWorkspaceController {
break;
}
}
if (!found) throw new IllegalArgumentException("未知的普惠疗休养V3页面");
if (!found) throw new IllegalArgumentException("未知的普惠疗休养页面");
}
response.sendRedirect(url);
}
@@ -29,7 +29,7 @@ public class TherapyEmail {
String user = setting("user");
String password = setting("password");
if (host == null || from == null || user == null || password == null) {
throw new IllegalStateException("普惠疗休养V3邮件发送配置不完整");
throw new IllegalStateException("普惠疗休养邮件发送配置不完整");
}
String portSetting = setting("port");
int port = portSetting == null ? 465 : Integer.parseInt(portSetting);
+1
View File
@@ -13,6 +13,7 @@
port: 6379
database: 4
mode: normal
password: dd3s@Redis#2026
jdbc:
url: jdbc:mysql://127.0.0.1:3306/zhgh_zjnu_v4?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
@@ -1,4 +1,4 @@
-- 仅清理普惠疗休养V3菜单及角色菜单关联,保留职工权益模块和业务数据。
-- 仅清理普惠疗休养菜单及角色菜单关联,保留职工权益模块和业务数据。
START TRANSACTION;
DELETE rm FROM sys_role_menu rm
@@ -155,7 +155,7 @@ def main():
output = args.output.resolve()
if output.exists():
raise ValueError("导出文件已存在,不覆盖:" + str(output))
log("开始导出普惠疗休养V3;源数据库:" + args.database)
log("开始导出普惠疗休养;源数据库:" + args.database)
log("[1/4] 连接数据库并检查源表结构")
client = MySQL(args)
tables = {suffix: "the_rapy_recuperation_" + suffix for suffix in SUFFIXES}
@@ -145,7 +145,7 @@ class IdentityMap:
def default_config(row):
permitted = {"id": None, "configName": {"智慧工会疗休养配置", "普惠疗休养V3配置"},
permitted = {"id": None, "configName": {"智慧工会疗休养配置", "普惠疗休养配置"},
"isSnLine": {"0"}, "isSwLine": {"0"}, "travelAudit": {"0"}, "bedInfo": {"1"},
"familyInfo": {"1"}, "outsideQuotaProportion": {"0", "0.00", "0.0"},
"unionLineNumberConfigs": {"[]"}, "lots": {"[]"}}
@@ -271,7 +271,7 @@ def main():
parser.add_argument("--minio-region", default=os.environ.get("MINIO_REGION", "us-east-1"))
parser.add_argument("--mapping", type=Path)
args = parser.parse_args()
log("开始导入普惠疗休养V3;目标数据库:" + args.database)
log("开始导入普惠疗休养;目标数据库:" + args.database)
log("[1/5] 读取导出包并校验数据:" + str(args.input))
overrides = json.loads(args.mapping.read_text(encoding="utf-8-sig")) if args.mapping else {}
uploaded_location = None
@@ -415,7 +415,7 @@ def main():
for row in source:
user = get(row, "userId")
prepared["activity_user_scope"].append({
"groupId": new_group, "groupName": "普惠疗休养V3 / " + (get(row, "groupName") or "参加人员"),
"groupId": new_group, "groupName": "普惠疗休养 / " + (get(row, "groupName") or "参加人员"),
"userId": identities["user"].resolve(user, "user") if user else "",
"groupType": "1", "groupSql": None,
"creator": identities["user"].resolve(get(row, "creator"), "user", required=False), "delFlag": "0"})
@@ -478,7 +478,7 @@ def main():
",".join(literal(value) for value in row.values()) + ");")
sql.append("UPDATE sys_config SET configValue=" + literal(version) + " WHERE configKey='staffTherapyRecuperationVersion';")
sql.append("INSERT INTO sys_config(configKey,configValue,note,delFlag) SELECT 'staffTherapyRecuperationVersion'," +
literal(version) + "," + literal("普惠疗休养V3报名规则版本") + ",0 WHERE NOT EXISTS "
literal(version) + "," + literal("普惠疗休养报名规则版本") + ",0 WHERE NOT EXISTS "
"(SELECT 1 FROM sys_config WHERE configKey='staffTherapyRecuperationVersion');")
sql.append("COMMIT;")
log("[5/5] 开始数据库事务,写入 %s 条记录;数据量较大时请等待事务提交" %
@@ -492,7 +492,7 @@ def main():
print("已上传附件保留在 MinIO 前缀:" + uploaded_location, file=sys.stderr)
raise
log("数据库事务提交成功")
log("导入完成:普惠疗休养V3,表前缀 " + PREFIX)
log("导入完成:普惠疗休养,表前缀 " + PREFIX)
log("业务记录:%s;审核记录:%s;附件:%s" %
(sum(len(records[name]) for name in SUFFIXES), len(records["_audit"]), len(file_info)))
if uploaded_location:
@@ -1,14 +1,14 @@
-- 普惠疗休养V3:父菜单及12个子菜单,归属已有的职工权益模块。
-- 普惠疗休养:PC父菜单及12个子菜单、移动端入口,归属职工权益模块。
-- 角色菜单关系暂时只授予本项目超级管理员角色 SYSADMIN。
SET NAMES utf8mb4;
START TRANSACTION;
-- 普惠疗休养V3
-- 普惠疗休养
INSERT INTO sys_menu (id, parentId, path, name, type, href, target, icon, showit, disabled, permission, location, hasChildren, platform, moduleId, createdBy, createdAt, updatedBy, updatedAt, delFlag)
SELECT '7ea90000000000000000000000000000', '',
(SELECT LPAD(COALESCE(MAX(CAST(path AS UNSIGNED)),0)+1,4,'0') FROM sys_menu WHERE CHAR_LENGTH(path)=4),
'普惠疗休养V3', 'menu', '/platform/inclusiveTherapyV3', '_self', 'fa fa-heart', 1, 0,
'普惠疗休养', 'menu', '/platform/inclusiveTherapyV3', '_self', 'fa fa-heart', 1, 0,
'inclusiveTherapyV3', 50, 1, 'pc', id, '', UNIX_TIMESTAMP(NOW())*1000, '', UNIX_TIMESTAMP(NOW())*1000, 0
FROM sys_module WHERE name='职工权益' AND platform='pc' LIMIT 1;
@@ -115,4 +115,41 @@ WHERE r.code='SYSADMIN' AND r.disabled=0 AND COALESCE(r.delFlag,0)=0
'inclusiveTherapyV3.unionLineNumberStatistics',
'inclusiveTherapyV3.travelAgencyMonthlyStatistics');
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)
VALUES ('e08d3515ed2f4ce28591f30703b68f1a', '', '0179', '普惠疗休养', null, 'menu', null, null, null, true, false,
'inclusiveTherapyV3.mobile', null, 1025, true, '17a7f8ad3ee947b4a26175049a9c253d', 1793064184942,
'17a7f8ad3ee947b4a26175049a9c253d', 1793064184942, false, null, 'H5', '586fffaeddc94a7493c81b6d69e546ab', false,
'/platform/sys/file/download?id=5j67fh5qaij5mr4p3q91peu46r', 'p', false, false);
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)
VALUES ('a57fbc8998d04acdb9d694841e1d572c', 'e08d3515ed2f4ce28591f30703b68f1a', '01790001', '疗休养报名', null, 'menu',
'/platform/inclusiveTherapyV3/mobile/index', null, null, true, false, 'inclusiveTherapyV3.mobile.signup', null,
1026, false, '17a7f8ad3ee947b4a26175049a9c253d', 1793064222219, '17a7f8ad3ee947b4a26175049a9c253d',
1793064310249, false, null, 'H5', '586fffaeddc94a7493c81b6d69e546ab', false,
'/platform/sys/file/download?id=6llemukl0ugaeqdgh7ud7g31ll', 'l', false, false);
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)
VALUES ('30f0cfd45c60406aaea5b44da88f828a', 'e08d3515ed2f4ce28591f30703b68f1a', '01790002', '我的报名', null, 'menu',
'/platform/inclusiveTherapyV3/mobile/myRecuperation', null, null, true, false,
'inclusiveTherapyV3.mobile.mySignup', null, 1027, false, '17a7f8ad3ee947b4a26175049a9c253d', 1793064293963,
'17a7f8ad3ee947b4a26175049a9c253d', 1793064317183, false, null, 'H5', '586fffaeddc94a7493c81b6d69e546ab', false,
'/platform/sys/file/download?id=v9phasf6roh33ocmnej2h2qbj1', 'w', false, false);
-- 移动端三个菜单授予超级管理员角色。
INSERT INTO sys_role_menu (roleId, menuId)
SELECT r.id, m.id FROM sys_role r CROSS JOIN sys_menu m
WHERE r.code IN ('SYSADMIN', 'superadmin') AND r.disabled=0 AND COALESCE(r.delFlag,0)=0
AND m.platform='H5'
AND m.id IN (
'e08d3515ed2f4ce28591f30703b68f1a',
'a57fbc8998d04acdb9d694841e1d572c',
'30f0cfd45c60406aaea5b44da88f828a')
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu rm WHERE rm.roleId=r.id AND rm.menuId=m.id);
COMMIT;
@@ -1,4 +1,4 @@
-- v4 职工福利 / 普惠疗休养V3独立子模块初始化脚本(MySQL 8)。
-- v4 职工福利 / 普惠疗休养独立子模块初始化脚本(MySQL 8)。
-- 在 v4 目标数据库中执行;表结构依据 therapyRecuperation 模块实体定义。
-- v3 the_rapy_recuperation_* 对应本模块 inclusive_therapy_v3_*,不覆盖 v4 其他疗休养表。
-- 仅新增表、视图和默认配置,不迁移 v3 历史业务数据。
@@ -353,12 +353,12 @@ SELECT 2750,'审核通过','#67c23a'
WHERE NOT EXISTS (SELECT 1 FROM `inclusive_therapy_v3_audit_state` WHERE `stateId`=2750);
INSERT INTO `sys_config` (`configKey`,`configValue`,`note`,`createdBy`,`createdAt`,`updatedBy`,`updatedAt`,`delFlag`)
SELECT 'staffTherapyRecuperationVersion','zjnu','普惠疗休养V3独立子模块报名规则版本','',@inclusive_therapy_v3_now,'',@inclusive_therapy_v3_now,0
SELECT 'staffTherapyRecuperationVersion','zjnu','普惠疗休养独立子模块报名规则版本','',@inclusive_therapy_v3_now,'',@inclusive_therapy_v3_now,0
WHERE NOT EXISTS (SELECT 1 FROM `sys_config` WHERE `configKey`='staffTherapyRecuperationVersion');
INSERT INTO `inclusive_therapy_v3_config`
(`id`,`configName`,`isSnLine`,`isSwLine`,`travelAudit`,`bedInfo`,`familyInfo`,`outsideQuotaProportion`,`unionLineNumberConfigs`)
SELECT REPLACE(UUID(),'-',''),'普惠疗休养V3配置',0,0,0,1,1,0,JSON_ARRAY()
SELECT REPLACE(UUID(),'-',''),'普惠疗休养配置',0,0,0,1,1,0,JSON_ARRAY()
WHERE NOT EXISTS (SELECT 1 FROM `inclusive_therapy_v3_config`);
COMMIT;
@@ -1,8 +1,8 @@
Vue.component('vi-title', {
props: ['title'],
template: `
<div style="display: flex;flex-direction:row;color: #1867b0;font-weight: bolder;margin-bottom: 20px">
<div style="width: 5px;height: 24px;background-color: #1867b0;border-radius: 2px"></div>
<div style="display: flex;flex-direction:row;color: var(--color-primary);font-weight: bolder;margin-bottom: 20px">
<div style="width: 5px;height: 24px;background-color: var(--color-primary);border-radius: 2px"></div>
<div style="margin-left: 20px;line-height: 24px;font-size: 15px;letter-spacing: 1px">
{{ title }}
</div>
@@ -61,7 +61,7 @@
}
.search .search-item-label {
color: rgb(100, 100, 100);
color: var(--color-text-regular);
margin-right: 10px;
width: 80px;
min-width: 80px;
@@ -97,18 +97,18 @@
.table-tool-group {
margin-left: 15px;
overflow: hidden;
border-radius: 20px;
border-radius: 2px;
display: flex;
}
.table-tool-group .table-tool-group-item {
width: 40px;
height: 40px;
height: 32px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
background-color: rgba(240, 240, 240, .7);
background-color: var(--background-color-base);
font-weight: bolder;
transition: all 250ms;
}
@@ -119,7 +119,7 @@
.table-tool-group .table-tool-group-item:hover {
color: white;
background-color: rgb(64, 158, 255);
background-color: var(--color-primary);
}
.width-100 {
@@ -176,11 +176,11 @@
.w-e-toolbar {
background-color: white !important;
border-color: #DCDFE6 !important;
border-color: var(--border-color-base) !important;
}
.w-e-text-container {
border-color: #DCDFE6 !important;
border-color: var(--border-color-base) !important;
}
.el-radio-group label {
@@ -195,4 +195,4 @@
.main-navigation {
border-right: 3px solid rgb(240, 240, 240);
}
}
@@ -16,15 +16,16 @@
}
.el-pagination {
height: 50px;
overflow: hidden;
min-height: 32px;
flex-wrap: wrap;
row-gap: 8px;
display: flex;
align-items: center;
}
.el-pagination button, .el-pagination span:not([class*=suffix]) {
line-height: 50px;
height: 50px;
line-height: 28px;
height: 28px;
}
a .collapsed {
@@ -128,7 +129,7 @@ a .expanded {
.el-upload__tip {
margin-top: 0px;
color: #c33714;
color: var(--color-danger);
}
.el-dialog {
@@ -137,16 +138,12 @@ a .expanded {
.el-table__empty-block {
width: 100% !important;
min-height: 300px;
background: url("/none.png") no-repeat center center;
background-size: 360px 260px;
min-height: 120px;
}
.el-table__empty-text {
display: block;
position: absolute;
bottom: 80px;
height: 40px;
line-height: 40px;
position: static;
line-height: 24px;
/*display: none !important;*/
}
@@ -0,0 +1,101 @@
#app.therapy-mobile {
--color-primary: #1867b0;
--therapy-primary-light: #eef5fc;
box-sizing: border-box;
min-height: 100vh;
padding-bottom: calc(16px + env(safe-area-inset-bottom));
background: #f7f8fa !important;
color: #323233;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif !important;
font-size: 14px;
}
#app.therapy-mobile .van-nav-bar--fixed {
left: 50%;
width: 100%;
max-width: 640px;
transform: translateX(-50%);
}
#app.therapy-mobile .van-nav-bar__title {
color: #323233;
font-size: 16px;
font-weight: 600;
}
#app.therapy-mobile .van-nav-bar .van-icon,
#app.therapy-mobile .van-dropdown-menu__title--active,
#app.therapy-mobile .van-dropdown-item__option--active,
#app.therapy-mobile .van-dropdown-item__option--active .van-icon,
#app.therapy-mobile .van-search__action,
#app.therapy-mobile .union-popup-action {
color: var(--color-primary);
}
#app.therapy-mobile .van-doc-card,
#app.therapy-mobile .list-card {
margin: 12px;
border: 1px solid #ebedf0;
border-radius: 10px;
background: #fff;
box-shadow: none;
}
#app.therapy-mobile .van-doc-card { padding: 16px; }
#app.therapy-mobile .van-grid-item__content { padding: 12px 6px; border-radius: 8px; }
#app.therapy-mobile .van-grid-item__content:active,
#app.therapy-mobile .type-icon.active-icon,
#app.therapy-mobile .union-item.active-union { background: var(--therapy-primary-light); }
#app.therapy-mobile .type-icon.active-icon { border-color: var(--color-primary); }
#app.therapy-mobile .active,
#app.therapy-mobile .cus_button,
#app.therapy-mobile .sign_button .van-button {
background: var(--color-primary);
border-color: var(--color-primary);
color: #fff;
}
#app.therapy-mobile .choose_button .button_text { margin-top: 8px; font-size: 14px; line-height: 22px; }
#app.therapy-mobile .van-dropdown-menu__item { flex: 1; min-width: 0; }
#app.therapy-mobile .van-dropdown-menu__title { max-width: 100%; font-size: 14px; }
#app.therapy-mobile .list-card { overflow: hidden; }
#app.therapy-mobile .list-card > .content { padding: 14px; max-height: none; align-items: flex-start; }
#app.therapy-mobile .list-card > .content > .van-image {
flex: 0 0 96px;
width: 96px !important;
height: 80px !important;
}
#app.therapy-mobile .list-card > .content > .van-image img { object-fit: cover; }
#app.therapy-mobile .content-right { flex: 1; width: auto; max-width: none; min-width: 0; padding-left: 12px; }
#app.therapy-mobile .cr-title { margin-bottom: 6px; font-size: 15px; line-height: 22px; color: #323233; }
#app.therapy-mobile .concat,
#app.therapy-mobile .mobile,
#app.therapy-mobile .union { font-size: 12px; line-height: 21px; color: #646566; }
#app.therapy-mobile .operateDiv {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 8px;
padding: 12px 14px;
border-top: 1px solid #f2f3f5;
}
#app.therapy-mobile .operateDiv .van-button {
min-width: 64px;
height: 32px;
margin: 0;
border-radius: 6px;
font-size: 13px;
}
#app.therapy-mobile .pop_footer {
box-sizing: border-box;
height: auto;
padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
border-top: 1px solid #ebedf0;
}
#app.therapy-mobile .pop_footer .van-button { width: 100%; height: 40px; }
#app.therapy-mobile .cus_content {
box-sizing: border-box;
height: calc(100% - 46px);
padding-bottom: calc(80px + env(safe-area-inset-bottom));
}
#app.therapy-mobile .van-list__finished-text { color: #969799; font-size: 13px; }
@@ -283,6 +283,11 @@
})()
function pjaxReplace(url, data = null) {
// 普惠疗休养移动端使用独立布局,没有公共 PJAX 容器,需整页跳转以保留应用中心样式。
if (url && url.indexOf("/platform/inclusiveTherapyV3/mobile/") === 0) {
window.location.href = url
return
}
showH5PageSkeleton(url)
// 疗休养报名页面使用独立 H5 布局,其中包含图片懒加载等专用初始化逻辑。
// 禁止通过公共 PJAX 只替换页面片段,否则专用布局脚本不会执行,首次进入会出现图片懒加载指令未注册。
@@ -201,8 +201,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
(pageForm.regionalNature==='省内'&&modifyConfig.isSnLine)||
(pageForm.regionalNature==='省外'&&modifyConfig.isSwLine)">
<el-button size="small"
style="background-color: #fff;border-color: #b3d8ff;color: #1867b0;font-size: 15px"
<el-button size="small" type="primary" plain
>{{selectLine.lineName?selectLine.lineName:'全部'}}线路的人数:{{lineSignNumber}}人
</el-button>
@@ -1,5 +1,5 @@
<!--#
layout("/layouts/platform.html"){
#-->
<iframe src="${therapyPageUrl,escape}" title="普惠疗休养V3" style="width:100%;height:calc(100vh - 100px);border:0;background:#fff"></iframe>
<iframe src="${therapyPageUrl,escape}" title="普惠疗休养" style="width:100%;height:calc(100vh - 100px);border:0;background:#fff"></iframe>
<!--# } #-->
@@ -1,23 +1,36 @@
<!doctype html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<title>普惠疗休养V3</title>
<script src="${base!}/assets/platform/plugins/vue/vue.js"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
<script src="${base!}/assets/platform/plugins/vue-http-loader/httpVueLoader.js"></script>
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
<script src="${base!}/assets/platform/plugins/axios/axios.js"></script>
<script>const APP_DOMAIN = location.origin; const FILE_DOMAIN = location.origin;</script>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/index.css">
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/mobile/theme.css">
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/mobile/main.css">
<script src="${base!}/assets/platform/plugins/vant/index.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/basic.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/v.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/mobileMixins.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/compat.js"></script>
<link rel="stylesheet" href="${base!}/assets/platform/css/pdf/pdfh5.css">
<script src="${base!}/assets/platform/plugins/pdfJs/h5/pdf.js"></script>
<script src="${base!}/assets/platform/plugins/pdfJs/h5/pdf.worker.js"></script>
<script src="${base!}/assets/platform/plugins/pdfJs/h5/pdfh5.js"></script>
<style>[v-cloak]{display:none}body{margin:0}</style>
</head><body>${layoutContent}</body></html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<title>普惠疗休养</title>
<script src="${base!}/assets/platform/plugins/vue/vue.js"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
<script src="${base!}/assets/platform/plugins/vue-http-loader/httpVueLoader.js"></script>
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
<script src="${base!}/assets/platform/plugins/axios/axios.js"></script>
<script>const APP_DOMAIN = location.origin;
const FILE_DOMAIN = location.origin;</script>
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/index.css">
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/mobile/theme.css">
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/mobile/main.css">
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/mobile/pages.css">
<script src="${base!}/assets/platform/plugins/vant/index.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/basic.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/v.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/mobileMixins.js"></script>
<script src="${base!}/assets/staffbenefit/therapyRecuperation/compat.js"></script>
<link rel="stylesheet" href="${base!}/assets/platform/css/pdf/pdfh5.css">
<script src="${base!}/assets/platform/plugins/pdfJs/h5/pdf.js"></script>
<script src="${base!}/assets/platform/plugins/pdfJs/h5/pdf.worker.js"></script>
<script src="${base!}/assets/platform/plugins/pdfJs/h5/pdfh5.js"></script>
<style>[v-cloak] {
display: none !important;
}
body {
margin: 0
}</style>
</head>
<body>${layoutContent}</body>
</html>
@@ -1,16 +1,17 @@
<!--# if(!@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.isEmbeddedPage()){ #-->
<!--# layout("/layouts/platform.html"){ #-->
<iframe src="${@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.getEmbeddedPageUrl(),escape}" title="普惠疗休养V3" style="width:100%;height:calc(100vh - 100px);border:0;background:#fff"></iframe>
<iframe src="${@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.getEmbeddedPageUrl(),escape}" title="普惠疗休养" style="width:100%;height:calc(100vh - 100px);border:0;background:#fff"></iframe>
<!--# } } else { #-->
<!doctype html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<title>普惠疗休养V3</title>
<title>普惠疗休养</title>
<script src="${base!}/assets/platform/plugins/vue/vue.js"></script>
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script>
<script src="${base!}/assets/platform/plugins/vue-http-loader/httpVueLoader.js"></script>
<script src="${base!}/assets/platform/plugins/moment/moment.min.js"></script>
<script src="${base!}/assets/platform/plugins/axios/axios.js"></script>
<script>const APP_DOMAIN = location.origin; const FILE_DOMAIN = location.origin;</script>
<link rel="stylesheet" href="${base!}/assets/platform/css/root.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index.css">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/font-awesome.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/fonts/themify-icons.css">
@@ -20,7 +21,18 @@
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/main.css">
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/elmain.css">
<link rel="stylesheet" href="${base!}/assets/staffbenefit/therapyRecuperation/css/panel.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/index_custom.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/element-ui/lib/theme-chalk/override.css">
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css">
<script src="${base!}/assets/platform/plugins/element-ui/lib/index.js"></script>
<script>
ELEMENT.Dialog.props.closeOnClickModal.default = false;
ELEMENT.Dialog.props.top.default = '50px';
ELEMENT.Table.props.border.default = true;
ELEMENT.TableColumn.props.headerAlign.default = 'center';
ELEMENT.TableColumn.props.align.default = 'center';
Vue.use(ELEMENT, {zIndex: 20000});
</script>
<script src="${base!}/assets/platform/plugins/wangEditor4/wangEditor.js"></script>
<script src="${base!}/assets/platform/plugins/sortablejs/sortable.min.js"></script>
<script src="${base!}/assets/platform/plugins/vuedraggable/vuedraggable.umd.min.js"></script>
@@ -424,7 +424,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
v-if="pageForm.lb==='ry'">
<template scope="{row}">
<el-card shadow="never">
<h4 slot="header" style="color: #1867b0">
<h4 slot="header" style="color: var(--color-primary)">
家属信息
</h4>
<el-table :data="row.companionList">
@@ -528,7 +528,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<el-table-column label="家属信息" type="expand" width="150px">
<template slot-scope="{row}">
<el-card shadow="never">
<h4 slot="header" style="color: #1867b0">
<h4 slot="header" style="color: var(--color-primary)">
家属信息
</h4>
<el-table :data="row.companionList">
@@ -752,7 +752,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
title="家属信息"
:visible.sync="familyDrawer"
direction="rtl">
<h4 slot="header" style="color: #1867b0">
<h4 slot="header" style="color: var(--color-primary)">
家属信息
</h4>
<el-table :data="companionList">
@@ -35,7 +35,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<div id="app">
<el-card class="m10" shadow="never" style="height: calc(100% - 20px)">
<template #header>
<h3 style="color: #1867b0">导入参加人员</h3>
<h3 style="color: var(--color-primary)">导入参加人员</h3>
</template>
<el-steps :active="stepActive">
@@ -4,7 +4,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<style>
.companion_card {
border: 1px #1867b0 solid;
border: 1px var(--color-primary) solid;
}
.row-expand-cover .el-table__expand-icon {
@@ -189,7 +189,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<el-table-column label="序号" type="expand" width="150px">
<template slot-scope="{row}">
<el-card class="companion_card" shadow="never">
<h4 slot="header" style="color: #1867b0">
<h4 slot="header" style="color: var(--color-primary)">
家属信息
</h4>
<el-table :data="row.companionList">
@@ -24,7 +24,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<guava>
<el-card shadow="never">
<div slot="header" class="clearfix">
<h3 style="color: rgb(24, 103, 176);font-family: Microsoft YaHei;">疗休养配置</h3>
<h3 style="color: var(--color-primary);font-family: Microsoft YaHei;">疗休养配置</h3>
</div>
<el-form ref="addForm" :model="formData" :rules="formRules" label-width="170px">
@@ -340,7 +340,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
travelAudit: 0,
lots: [],
unionLineNumberConfigs: [],
configName: '普惠疗休养V3配置',
configName: '普惠疗休养配置',
// 报名时间范围对应后台 signUpStartTime/signUpEndTime 两个字段。
signUpStartTime: null,
signUpEndTime: null,
@@ -200,7 +200,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="普惠疗休养V3-酒店介绍"></van-nav-bar>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="普惠疗休养-酒店介绍"></van-nav-bar>
</van-sticky>
<!--线路详情-->
@@ -3,60 +3,94 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
#-->
<style>
.van-doc-card {
margin: 10px;
padding: 12px 12px 12px 12px;
.therapy-home {
padding-bottom: calc(16px + env(safe-area-inset-bottom));
color: #323233;
}
.therapy-home .van-nav-bar--fixed {
left: 50%;
width: 100%;
max-width: 640px;
transform: translateX(-50%);
}
.therapy-home .van-doc-card {
margin: 12px;
padding: 16px;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 8px 12px #ebedf0;
line-height: 20px;
border-radius: 12px;
line-height: 24px;
position: relative;
}
.van-grid-item__content {
padding: 0;
.therapy-home .therapy-banner {
display: block;
width: calc(100% - 24px);
margin: 12px;
height: clamp(140px, 42vw, 220px);
overflow: hidden;
border-radius: 12px;
}
.choose_button .button_text {
.therapy-home .van-grid-item__content {
padding: 12px 8px;
border-radius: 8px;
}
.therapy-home .van-grid-item__content:active {
background-color: #f2f7fc;
}
.therapy-home .choose_button .button_text {
font-size: 14px;
margin-top: 6px;
margin-top: 10px;
font-weight: 500;
}
.list-card {
width: auto;
.therapy-home .notice-title {
margin: 0 0 12px;
padding-left: 10px;
border-left: 3px solid #1867b0;
font-size: 16px;
font-weight: 600;
}
.pre_text {
.therapy-home .pre_text {
white-space: break-spaces;
padding-left: 7px;
overflow-wrap: anywhere;
font-size: 14px;
line-height: 1.8;
overflow-x: auto;
}
.pdfjs {
height: 90%;
.therapy-home .pre_text img,
.therapy-home .pre_text video {
max-width: 100% !important;
height: auto !important;
}
.therapy-home .pdf_div {
height: 70vh;
min-height: 320px;
overflow: auto;
}
</style>
<div id="app" v-cloak>
<div id="app" class="therapy-home therapy-mobile" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="普惠疗休养V3"></van-nav-bar>
<van-nav-bar @click-left="historyBack" fixed left-arrow placeholder title="普惠疗休养"></van-nav-bar>
</van-sticky>
<!--顶部轮播图-->
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
<van-swipe-item>
<van-image width="100%" height="180" src="/assets/staffbenefit/therapyRecuperation/img/index1.jpeg"></van-image>
</van-swipe-item>
<van-swipe-item>
<van-image height="180" src="/assets/staffbenefit/therapyRecuperation/img/index1.jpeg"></van-image>
</van-swipe-item>
</van-swipe>
<van-image class="therapy-banner" fit="cover" alt="疗休养风景" src="/assets/staffbenefit/therapyRecuperation/img/index1.jpeg"></van-image>
<!--按钮导航-->
<div class="choose_button van-doc-card">
<van-grid :column-num="chooseButton.length" :border="false">
<van-grid-item @click="toLineList(item.value)" v-for="item in chooseButton">
<van-grid :column-num="Math.max(chooseButton.length, 1)" :border="false">
<van-grid-item @click="toLineList(item.value)" v-for="item in chooseButton" :key="item.value">
<van-image width="46" height="46" :src="item.imgUrl"></van-image>
<div class="button_text">{{item.label}}</div>
</van-grid-item>
@@ -64,8 +98,8 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
</div>
<!--疗休养描述-->
<div class="van-doc-card" style="margin-top: 20px; height: calc(100vh - 200px)">
<van-image width="190" height="43" src="/assets/staffbenefit/therapyRecuperation/img/title.png"></van-image>
<div class="van-doc-card">
<h2 class="notice-title">疗休养须知</h2>
<div v-if="isPdf" class="pre_text" v-html="configData.notice"></div>
<div v-else id="demo" class="pdf_div"></div>
</div>
@@ -84,6 +118,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
}
},
methods: {
historyBack() {
window.history.back()
},
async toLineList(index) {
/*const isExist = await getScopeUser(this.configData.activityGroupId)
if (!isExist) {
@@ -222,7 +222,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
<van-sticky>
<van-nav-bar @click-left="history.go(-1)" fixed left-arrow placeholder
title="普惠疗休养V3-线路介绍"></van-nav-bar>
title="普惠疗休养-线路介绍"></van-nav-bar>
</van-sticky>
<template v-if="isLoad">
@@ -303,9 +303,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
</style>
<div id="app" v-cloak v-if="isLoad">
<div id="app" class="therapy-mobile" v-cloak v-if="isLoad">
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar>
<van-nav-bar @click-left="historyBack" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar>
<!--<van-dropdown-menu>
@@ -631,6 +631,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
}
},
methods: {
historyBack() {
window.history.back()
},
async openSignUser(row, type) {
const id = type === 'line' ? row.usId : row.id
location.href = '/platform/inclusiveTherapyV3/mobile/userSignInfo?type=' + type + '&id=' + id
@@ -179,9 +179,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
</style>
<div id="app" v-cloak>
<div id="app" class="therapy-mobile" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder
<van-nav-bar @click-left="historyBack" fixed left-arrow placeholder
title="我的疗休养"></van-nav-bar>
</van-sticky>
@@ -413,6 +413,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/mobile.html"){
}
},
methods: {
historyBack() {
window.history.back()
},
isValidDate(value) {
return value && moment(value).isValid()
},