This commit is contained in:
@jyuhsin
2025-05-29 13:46:57 +08:00
parent 554a7b9b67
commit f976085cc0
7 changed files with 192 additions and 165 deletions
@@ -85,8 +85,8 @@ public class TheRapyRecuperationEnrollController {
@POST @POST
@ViReturn @ViReturn
@RequiresAuthentication @RequiresAuthentication
public Object pageData(PageForm pageForm, Integer year, String unionId, int theRapyRecuperationType, Integer lineUnionType) { public Object pageData(PageForm pageForm, Integer year, String unionId, int theRapyRecuperationType, Integer lineUnionType, String routeName, String lotId) {
return enrollService.enrollPageData(pageForm, year, unionId, theRapyRecuperationType, lineUnionType); return enrollService.enrollPageData(pageForm, year, unionId, theRapyRecuperationType, lineUnionType, routeName, lotId);
} }
@At @At
@@ -27,7 +27,7 @@ public interface TheRapyRecuperationEnrollService extends ViService<TheRapyRecup
* @param trrt trrt * @param trrt trrt
* @return {@link Pagination} * @return {@link Pagination}
*/ */
Pagination enrollPageData(PageForm pageForm, Integer year, String unionId, int trrt, Integer lineUnionType); Pagination enrollPageData(PageForm pageForm, Integer year, String unionId, int trrt, Integer lineUnionType, String routeName, String lotId);
List<NutMap> getSelectLineById(String lineId, String unionId, int trrt, Integer lineUnionType); List<NutMap> getSelectLineById(String lineId, String unionId, int trrt, Integer lineUnionType);
@@ -65,7 +65,7 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
private TheRapyRecuperationLineService lineService; private TheRapyRecuperationLineService lineService;
@Override @Override
public Pagination enrollPageData(PageForm pageForm, Integer year, String unionId, int trrt, Integer lineUnionType) { public Pagination enrollPageData(PageForm pageForm, Integer year, String unionId, int trrt, Integer lineUnionType, String routeName, String lotId) {
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
if (List.of(TheRapyRecuperationType.provinceInLine.getValue(), TheRapyRecuperationType.provinceOutLine.getValue()).contains(trrt)) { if (List.of(TheRapyRecuperationType.provinceInLine.getValue(), TheRapyRecuperationType.provinceOutLine.getValue()).contains(trrt)) {
Sql lineSql = Sqls.create(""" Sql lineSql = Sqls.create("""
@@ -171,18 +171,26 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
} else if (TheRapyRecuperationType.provinceInHotel.getValue() == trrt) { } else if (TheRapyRecuperationType.provinceInHotel.getValue() == trrt) {
cnd.andEX("b.year", "=", year != null ? year : DateUtil.thisYear()); cnd.andEX("b.year", "=", year != null ? year : DateUtil.thisYear());
cnd.and("b.isDisabled", "=", false); cnd.and("b.isDisabled", "=", false);
if (StrUtil.isNotBlank(routeName)) {
cnd.and(Cnd.likeEX("b.baseName", routeName));
}
cnd.andEX("b.lotId", "=", lotId);
Sql taSql = Sqls.create(""" Sql taSql = Sqls.create("""
select select
b.*, b.*,
cast(b.files ->> '$[0].id' as char) as fileId, b.files as fileId,
l.lotName, l.lotName,
t.travelAgencyName t.travelAgencyName,
( SELECT COUNT( 1 ) FROM the_rapy_recuperation_enroll WHERE b.id = takePartInBaseManagementId and isNormal=true $yearCnd) agencyNum
from from
the_rapy_recuperation_base_management b the_rapy_recuperation_base_management b
left join the_rapy_recuperation_lot l on l.id = b.lotId left join the_rapy_recuperation_lot l on l.id = b.lotId
left join the_rapy_recuperation_travel_agency t on t.id = b.travelAgencyId left join the_rapy_recuperation_travel_agency t on t.id = b.travelAgencyId
$condition $condition
"""); """);
if (year != null) {
taSql.setVar("yearCnd", "AND YEAR(signingUptime) = '%s' ".formatted(year));
}
cnd.asc("sortNumber"); cnd.asc("sortNumber");
taSql.setCondition(cnd); taSql.setCondition(cnd);
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), taSql); return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), taSql);
@@ -490,39 +498,52 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
//活动范围 //活动范围
Integer activityGroupId = config.getActivityGroupId(); Integer activityGroupId = config.getActivityGroupId();
//线路信息 //如果报酒店
TheRapyRecuperationLineUnionSelect lineUnionSelect = dao().fetch(TheRapyRecuperationLineUnionSelect.class, enrollInfo.getTakePartInLineId()); if (StrUtil.isNotBlank(enrollInfo.getTakePartInBaseManagementId()) && StrUtil.isBlank(enrollInfo.getId()) && enrollInfo.isNormal()) {
TheRapyRecuperationLine lineInfo = dao().fetch(TheRapyRecuperationLine.class, lineUnionSelect.getLineId());
Date signUpStartTime = lineUnionSelect.getSignUpStartTime();
Date signUpEndTime = lineUnionSelect.getSignUpEndTime();
Date changeEndTime = lineUnionSelect.getChangeEndTime();
if (DateUtil.compare(new Date(), signUpStartTime) < 0) {
return Map.of(false, "报名未开始,请耐心等待");
}
if (DateUtil.compare(new Date(), changeEndTime) > 0 && enrollInfo.isNormal()) {
return Map.of(false, "报名时间已过,抱歉不能报名");
}
TheRapyRecuperationType trrt = regionTypeLineMap.get(lineInfo.getRegionalNature());
if (StrUtil.isBlank(enrollInfo.getId()) && StrUtil.isNotBlank(enrollInfo.getTakePartInLineId())) {
//获取标段中的最大费用
List<TheRapyRecuperationLot> lotList = dao().query(TheRapyRecuperationLot.class, Cnd.NEW());
//最大费用
OptionalInt optionalInt = lotList.stream().mapToInt(TheRapyRecuperationLot::getActivityCost).max();
int maxCost = optionalInt.isPresent() ? optionalInt.getAsInt() : 0;
//获取当前报名线路对应的标段的费用
Integer currentLineCost = dao().fetch(TheRapyRecuperationLot.class, lineInfo.getLotId()).getActivityCost();
Map<Boolean, String> oneYear = this.validCountOneYear(loginName, travelFrequency); Map<Boolean, String> oneYear = this.validCountOneYear(loginName, travelFrequency);
if (oneYear != null && oneYear.containsKey(false)) { if (oneYear != null) {
return oneYear; return oneYear;
} }
}
//获取起始年份到当前时间,是否报名 Date signUpStartTime = null;
Sql sql = Sqls.create(""" Date signUpEndTime = null;
Date changeEndTime = null;
if (StrUtil.isNotBlank(enrollInfo.getTakePartInLineId())) {
//线路信息
TheRapyRecuperationLineUnionSelect lineUnionSelect = dao().fetch(TheRapyRecuperationLineUnionSelect.class, enrollInfo.getTakePartInLineId());
TheRapyRecuperationLine lineInfo = dao().fetch(TheRapyRecuperationLine.class, lineUnionSelect.getLineId());
signUpStartTime = lineUnionSelect.getSignUpStartTime();
signUpEndTime = lineUnionSelect.getSignUpEndTime();
changeEndTime = lineUnionSelect.getChangeEndTime();
if (DateUtil.compare(new Date(), signUpStartTime) < 0) {
return Map.of(false, "报名未开始,请耐心等待");
}
if (DateUtil.compare(new Date(), changeEndTime) > 0 && enrollInfo.isNormal()) {
return Map.of(false, "报名时间已过,抱歉不能报名");
}
TheRapyRecuperationType trrt = regionTypeLineMap.get(lineInfo.getRegionalNature());
if (StrUtil.isBlank(enrollInfo.getId()) && StrUtil.isNotBlank(enrollInfo.getTakePartInLineId())) {
//获取标段中的最大费用
List<TheRapyRecuperationLot> lotList = dao().query(TheRapyRecuperationLot.class, Cnd.NEW());
//最大费用
OptionalInt optionalInt = lotList.stream().mapToInt(TheRapyRecuperationLot::getActivityCost).max();
int maxCost = optionalInt.isPresent() ? optionalInt.getAsInt() : 0;
//获取当前报名线路对应的标段的费用
Integer currentLineCost = dao().fetch(TheRapyRecuperationLot.class, lineInfo.getLotId()).getActivityCost();
Map<Boolean, String> oneYear = this.validCountOneYear(loginName, travelFrequency);
if (oneYear != null && oneYear.containsKey(false)) {
return oneYear;
}
//获取起始年份到当前时间,是否报名
Sql sql = Sqls.create("""
SELECT SELECT
r.*, r.*,
l.regionalNature, l.regionalNature,
@@ -533,69 +554,70 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
LEFT JOIN the_rapy_recuperation_line l ON l.id = us.lineId LEFT JOIN the_rapy_recuperation_line l ON l.id = us.lineId
$condition $condition
"""); """);
Sql twoYearInSql = sql; Sql twoYearInSql = sql;
Sql threeYearOutSql = sql; Sql threeYearOutSql = sql;
Sql nowYearSql = sql; Sql nowYearSql = sql;
Cnd commonCnd = Cnd.NEW(); Cnd commonCnd = Cnd.NEW();
commonCnd.and("r.takePartInLineId", "is not", null); commonCnd.and("r.takePartInLineId", "is not", null);
commonCnd.and("loginName", "=", ShiroUtil.getPrincipalProperty("loginname")); commonCnd.and("loginName", "=", ShiroUtil.getPrincipalProperty("loginname"));
commonCnd.and("r.isNormal", "=", true); commonCnd.and("r.isNormal", "=", true);
commonCnd.and("stateId", "not in", Lang.array(TheRapyRecuperationState.UNITFAIL, TheRapyRecuperationState.LINEUNITFAIL, TheRapyRecuperationState.SCHOOLFAIL)); commonCnd.and("stateId", "not in", Lang.array(TheRapyRecuperationState.UNITFAIL, TheRapyRecuperationState.LINEUNITFAIL, TheRapyRecuperationState.SCHOOLFAIL));
commonCnd.and("signingUptime", "<=", DateUtil.now()); commonCnd.and("signingUptime", "<=", DateUtil.now());
//两年参加省内 //两年参加省内
Cnd twoYearInCnd = commonCnd.clone(); Cnd twoYearInCnd = commonCnd.clone();
twoYearInCnd.and("signingUptime", ">=", provinceStartYear + "-01-01"); twoYearInCnd.and("signingUptime", ">=", provinceStartYear + "-01-01");
twoYearInCnd.and("regionalNature", "=", "省内"); twoYearInCnd.and("regionalNature", "=", "省内");
twoYearInCnd.and("isTakePartIn", "=", true); twoYearInCnd.and("isTakePartIn", "=", true);
twoYearInSql.setCondition(twoYearInCnd); twoYearInSql.setCondition(twoYearInCnd);
List<NutMap> twoYearInMapList = listMap(twoYearInSql); List<NutMap> twoYearInMapList = listMap(twoYearInSql);
//今年是否报名,不管省内省外 //今年是否报名,不管省内省外
Cnd nowYearCnd = commonCnd.clone(); Cnd nowYearCnd = commonCnd.clone();
nowYearCnd.and("signingUptime", ">=", DateUtil.thisYear() + "-01-01"); nowYearCnd.and("signingUptime", ">=", DateUtil.thisYear() + "-01-01");
nowYearSql.setCondition(nowYearCnd); nowYearSql.setCondition(nowYearCnd);
List<NutMap> nowYearMapList = listMap(nowYearSql); List<NutMap> nowYearMapList = listMap(nowYearSql);
//三年参加省外 //三年参加省外
Cnd threeYearOutCnd = commonCnd.clone(); Cnd threeYearOutCnd = commonCnd.clone();
threeYearOutCnd.and("signingUptime", ">=", (DateUtil.thisYear() - 3) + "-01-01"); threeYearOutCnd.and("signingUptime", ">=", (DateUtil.thisYear() - 3) + "-01-01");
threeYearOutCnd.and("regionalNature", "=", "省外"); threeYearOutCnd.and("regionalNature", "=", "省外");
threeYearOutCnd.and("isTakePartIn", "=", true); threeYearOutCnd.and("isTakePartIn", "=", true);
threeYearOutSql.setCondition(threeYearOutCnd); threeYearOutSql.setCondition(threeYearOutCnd);
List<NutMap> threeYearOutMapList = listMap(threeYearOutSql); List<NutMap> threeYearOutMapList = listMap(threeYearOutSql);
//今年是否报名,不管报省内还是省外 //今年是否报名,不管报省内还是省外
if (Lang.isNotEmpty(nowYearMapList)) { if (Lang.isNotEmpty(nowYearMapList)) {
NutMap nowYearMap = nowYearMapList.get(0); NutMap nowYearMap = nowYearMapList.get(0);
//判断当前报名的线路是否和今年第一次报名的线路重复 //判断当前报名的线路是否和今年第一次报名的线路重复
if (nowYearMap.getString("takePartInLineId").equals(lineUnionSelect.getId())) { if (nowYearMap.getString("takePartInLineId").equals(lineUnionSelect.getId())) {
return Map.of(false, "您已报名过当前线路,请选择其他线路"); return Map.of(false, "您已报名过当前线路,请选择其他线路");
} }
//获取第一次报名线路对应的标段的费用 //获取第一次报名线路对应的标段的费用
int lastLineCost = nowYearMap.getInt("activityCost"); int lastLineCost = nowYearMap.getInt("activityCost");
if ((lastLineCost + currentLineCost) > maxCost) { if ((lastLineCost + currentLineCost) > maxCost) {
return Map.of(false, "您已报名过省内线路"); return Map.of(false, "您已报名过省内线路");
}
}
//省内线路判断
if (trrt.getValue() == TheRapyRecuperationType.provinceInLine.getValue()) {
if (Lang.isEmpty(twoYearInMapList)) {
return Map.of(true, "验证成功");
}
if (Lang.isNotEmpty(twoYearInMapList)) {
int hasCost = twoYearInMapList.get(0).getInt("activityCost");
if ((hasCost + currentLineCost) > maxCost) {
return Map.of(false, "您已参加过省内线路");
} }
} }
} //省内线路判断
//省外线路判断 if (trrt.getValue() == TheRapyRecuperationType.provinceInLine.getValue()) {
if (trrt.getValue() == TheRapyRecuperationType.provinceOutLine.getValue()) { if (Lang.isEmpty(twoYearInMapList)) {
//三年内有没有参加过省外 return Map.of(true, "验证成功");
if (Lang.isNotEmpty(threeYearOutMapList)) { }
return Map.of(false, "近三年内您已参加过省外线路,不能再次报名"); if (Lang.isNotEmpty(twoYearInMapList)) {
int hasCost = twoYearInMapList.get(0).getInt("activityCost");
if ((hasCost + currentLineCost) > maxCost) {
return Map.of(false, "您已参加过省内线路");
}
}
}
//省外线路判断
if (trrt.getValue() == TheRapyRecuperationType.provinceOutLine.getValue()) {
//三年内有没有参加过省外
if (Lang.isNotEmpty(threeYearOutMapList)) {
return Map.of(false, "近三年内您已参加过省外线路,不能再次报名");
}
} }
} }
} }
@@ -651,29 +673,33 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
public Map<Boolean, String> validCountOneYear(String loginName, int travelFrequency) { public Map<Boolean, String> validCountOneYear(String loginName, int travelFrequency) {
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.and("loginName", "=", loginName); cnd.and("loginName", "=", loginName);
cnd.and("isNormal", "=", true);
cnd.and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear()); cnd.and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear());
int joinCount = dao().count(TheRapyRecuperationEnroll.class, cnd); int joinCount = dao().count(TheRapyRecuperationEnroll.class, cnd);
if (joinCount >= travelFrequency) { if (joinCount >= travelFrequency) {
List<TheRapyRecuperationLine> inList = dao().query(TheRapyRecuperationLine.class, Cnd.where("regionalNature", "=", "省内")); List<TheRapyRecuperationLine> inList = dao().query(TheRapyRecuperationLine.class, Cnd.where("regionalNature", "=", "省内"));
List<TheRapyRecuperationLineUnionSelect> unionInSelects = dao().query(TheRapyRecuperationLineUnionSelect.class, Cnd.where("lineId", "in", inList.stream().map(TheRapyRecuperationLine::getId).collect(Collectors.toList())));
List<TheRapyRecuperationLine> outList = dao().query(TheRapyRecuperationLine.class, Cnd.where("regionalNature", "=", "省外")); List<TheRapyRecuperationLine> outList = dao().query(TheRapyRecuperationLine.class, Cnd.where("regionalNature", "=", "省外"));
List<TheRapyRecuperationLineUnionSelect> unionOutSelects = dao().query(TheRapyRecuperationLineUnionSelect.class, Cnd.where("lineId", "in", outList.stream().map(TheRapyRecuperationLine::getId).collect(Collectors.toList())));
//是否选择省外 //是否选择省外
int inCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", ShiroUtil.getPrincipalProperty("loginname")) int inCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("loginname"))
.and("takePartInLineId", "in", inList.stream().map(TheRapyRecuperationLine::getId).collect(Collectors.toList())) .and("takePartInLineId", "in", unionInSelects.stream().map(TheRapyRecuperationLineUnionSelect::getId).collect(Collectors.toList()))
.and("isNormal", "=", true) .and("isNormal", "=", true)
.and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear())); .and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear()));
//是否报省外 //是否报省外
int outCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", ShiroUtil.getPrincipalProperty("loginname")) int outCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("loginname"))
.and("takePartInLineId", "in", outList.stream().map(TheRapyRecuperationLine::getId).collect(Collectors.toList())) .and("takePartInLineId", "in", unionOutSelects.stream().map(TheRapyRecuperationLineUnionSelect::getId).collect(Collectors.toList()))
.and("isNormal", "=", true) .and("isNormal", "=", true)
.and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear())); .and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear()));
//是否报旅行社 //是否报旅行社
int travelCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", ShiroUtil.getPrincipalProperty("loginname")) int travelCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("loginname"))
.and("takePartInLineId", "is", null).and("isNormal", "=", true) .and(Cnd.exps("takePartInLineId", "is", null).or("takePartInLineId", "=", ""))
.and("isNormal", "=", true)
.and("takePartInTravelAgencyId", "is not", null) .and("takePartInTravelAgencyId", "is not", null)
.and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear())); .and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear()));
//是否报酒店 //是否报酒店
int hotelCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", ShiroUtil.getPrincipalProperty("loginname")) int hotelCount = dao().count("the_rapy_recuperation_enroll", Cnd.where("loginName", "=", io.v.nutz.web.commons.utils.ShiroUtil.getPrincipalProperty("loginname"))
.and("takePartInLineId", "is", null).and("isNormal", "=", true) .and("takePartInLineId", "is", null).and("isNormal", "=", true)
.and("takePartInBaseManagementId", "is not", null) .and("takePartInBaseManagementId", "is not", null)
.and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear())); .and("YEAR(signingUptime)", "=", io.v.nutz.base.utils.DateUtil.getYear()));
@@ -687,7 +713,7 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
} else if (hotelCount > 0) { } else if (hotelCount > 0) {
str = "酒店"; str = "酒店";
} }
return Map.of(false, "一年只能报" + travelFrequency + "次,您已报" + str + ",请先在我的疗休养中删除,报名!"); return Map.of(false, "一年只能报" + travelFrequency + "次,您已报" + str + ",请先在我的疗休养中删除,方可报名!");
} }
return Map.of(true, "成功"); return Map.of(true, "成功");
} }
@@ -56,18 +56,21 @@ layout("/mobile/platform.html"){
} }
.footer { .footer {
background-color: white;
position: fixed;
bottom: 0;
width: 100%; width: 100%;
height: 60px; height: 60px;
display: flex; display: flex;
justify-content: space-evenly; justify-content: space-evenly;
align-items: center; align-items: center;
left: 0;
} }
.footer .van-button { .footer .van-button {
height: 34px; height: 34px;
border-radius: 6px; border-radius: 6px;
width: 90% !important; width: 90% !important;
margin: 0 10px;
} }
.submitButton .van-button { .submitButton .van-button {
@@ -316,10 +319,10 @@ layout("/mobile/platform.html"){
<template v-else> <template v-else>
<van-button v-if="moment().unix() <= moment(baseData.signUpEndTime).unix()" @click="join" class="join">我要报名 <van-button v-if="moment().unix() <= moment(baseData.signUpEndTime).unix()" @click="join" class="join">我要报名
</van-button> </van-button>
<van-button <!--<van-button
v-if="moment().unix() <= moment(baseData.signUpEndTime).unix() && ${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" v-if="moment().unix() <= moment(baseData.signUpEndTime).unix() && ${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}"
@click="helpJoin" class="join">替他人报名 @click="helpJoin" class="join">替他人报名
</van-button> </van-button>-->
<van-button v-if="moment().unix() > moment(baseData.signUpEndTime).unix()" class="join">报名结束</van-button> <van-button v-if="moment().unix() > moment(baseData.signUpEndTime).unix()" class="join">报名结束</van-button>
</template> </template>
</div> </div>
@@ -359,7 +362,7 @@ layout("/mobile/platform.html"){
</div> </div>
<!--床位信息--> <!--床位信息-->
<div class="van-doc-card" style="margin-bottom: 16px"> <!--<div class="van-doc-card" style="margin-bottom: 16px">
<div></div> <div></div>
<div class="van-card-header"> <div class="van-card-header">
床位信息(一位教职工一间) 床位信息(一位教职工一间)
@@ -369,7 +372,7 @@ layout("/mobile/platform.html"){
label="房间" name="bedType" label="房间" name="bedType"
placeholder="请选择房间" v-model="formData.bedInfo.bedType" placeholder="请选择房间" v-model="formData.bedInfo.bedType"
:rules="[{ required: true }]"></van-field> :rules="[{ required: true }]"></van-field>
<!--<van-field v-if="formData.bedInfo.bedType == '标准间'" @click="self = true; bedVisible = true" &lt;!&ndash;<van-field v-if="formData.bedInfo.bedType == '标准间'" @click="self = true; bedVisible = true"
readonly is-link label="床位" readonly is-link label="床位"
name="bedNum" placeholder="请选择床位" v-model="formData.bedInfo.bedNum" name="bedNum" placeholder="请选择床位" v-model="formData.bedInfo.bedNum"
:rules="[{ required: true }]"></van-field> :rules="[{ required: true }]"></van-field>
@@ -381,16 +384,16 @@ layout("/mobile/platform.html"){
<van-radio :name="false" shape="square">否</van-radio> <van-radio :name="false" shape="square">否</van-radio>
</van-radio-group> </van-radio-group>
</template> </template>
</van-field>--> </van-field>&ndash;&gt;
<!--<van-field v-if="formData.bedInfo.bedType == '标准间' && formData.bedInfo.isSleepTogether == true" &lt;!&ndash;<van-field v-if="formData.bedInfo.bedType == '标准间' && formData.bedInfo.isSleepTogether == true"
label="意向拼房人" name="otherSleepUser" placeholder="若无拼房人,填写“无”即可" label="意向拼房人" name="otherSleepUser" placeholder="若无拼房人,填写“无”即可"
v-model="formData.bedInfo.otherSleepUser" v-model="formData.bedInfo.otherSleepUser"
:rules="[{ required: true }]"></van-field>--> :rules="[{ required: true }]"></van-field>&ndash;&gt;
</div> </div>
</div> </div>-->
<!--随行人信息--> <!--随行人信息-->
<div class="van-doc-card" style="margin-bottom: 16px"> <!--<div class="van-doc-card" style="margin-bottom: 16px">
<div></div> <div></div>
<div class="van-card-header" <div class="van-card-header"
style="display: flex; justify-content: space-between; align-items: center"> style="display: flex; justify-content: space-between; align-items: center">
@@ -405,7 +408,7 @@ layout("/mobile/platform.html"){
<van-tab v-for="item, index in formData.companionList" :title="'随行人' + (index + 1)"> <van-tab v-for="item, index in formData.companionList" :title="'随行人' + (index + 1)">
<van-field label="姓名" name="userName" placeholder="请填写姓名" v-model="item.userName" <van-field label="姓名" name="userName" placeholder="请填写姓名" v-model="item.userName"
:rules="[{ required: true }]"></van-field> :rules="[{ required: true }]"></van-field>
<!--<van-field label="工号" name="loginName" placeholder="若没有工号,请忽略此项" v-model="item.loginName"></van-field>--> &lt;!&ndash;<van-field label="工号" name="loginName" placeholder="若没有工号,请忽略此项" v-model="item.loginName"></van-field>&ndash;&gt;
<van-field label="年龄" name="age" placeholder="请填写年龄" v-model="item.age" type="digit" <van-field label="年龄" name="age" placeholder="请填写年龄" v-model="item.age" type="digit"
:rules="[{ required: true }]"></van-field> :rules="[{ required: true }]"></van-field>
<van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别" name="validator"> <van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别" name="validator">
@@ -459,7 +462,7 @@ layout("/mobile/platform.html"){
如有随行人出行,请添加随行人 如有随行人出行,请添加随行人
</span> </span>
</div> </div>
</div> </div>-->
<div v-if="fromUrlByMy != 'find'" class="submitButton"> <div v-if="fromUrlByMy != 'find'" class="submitButton">
<van-button class="join join_submit">提交报名</van-button> <van-button class="join join_submit">提交报名</van-button>
</div> </div>
@@ -533,15 +536,6 @@ layout("/mobile/platform.html"){
</van-cell-group> </van-cell-group>
</van-popup> </van-popup>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/platform/mobile/theRapyRecuperation/index">疗休养报名
</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/platform/mobile/theRapyRecuperation/myRecuperation">我的疗休养
</van-tabbar-item>
</van-tabbar>
</div>
</div> </div>
<script> <script>
function getQueryString(name) { function getQueryString(name) {
@@ -97,7 +97,7 @@ layout("/mobile/platform.html"){
}, },
async created() { async created() {
this.chooseButton = await getEnumOptions('TheRapyRecuperationType') this.chooseButton = await getEnumOptions('TheRapyRecuperationType')
this.chooseButton = this.chooseButton.filter(o => o.value !== 2 && o.value !== 3) this.chooseButton = this.chooseButton.filter(o => o.value !== 2)
await this.getConfigData() await this.getConfigData()
} }
}) })
@@ -233,7 +233,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak> <div id="app" v-cloak>
<van-sticky> <van-sticky>
<van-nav-bar @click-left="history.go(-1)" fixed left-arrow placeholder <van-nav-bar @click-left="pageBack" fixed left-arrow placeholder
title="职工疗休养-线路介绍"></van-nav-bar> title="职工疗休养-线路介绍"></van-nav-bar>
</van-sticky> </van-sticky>
@@ -321,9 +321,7 @@ layout("/mobile/platform.html"){
<!--底部报名按钮--> <!--底部报名按钮-->
<div class="footer" v-if="fromUrlByMy != 'edit'"> <div class="footer" v-if="fromUrlByMy != 'edit'">
<template v-if="lineData.isNormal==0&&lineData.isNormalFalse>0"> <template v-if="lineData.isNormal==0&&lineData.isNormalFalse>0">
<van-button @click="join" <van-button @click="join" class="join">我要报名</van-button>
class="join">我要报名
</van-button>
</template> </template>
<template v-else> <template v-else>
<van-button v-if="moment().unix() <= moment(lineData.changeEndTime).unix()" @click="join" <van-button v-if="moment().unix() <= moment(lineData.changeEndTime).unix()" @click="join"
@@ -592,6 +590,10 @@ layout("/mobile/platform.html"){
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue?v=' + new Date().getTime()), 'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue?v=' + new Date().getTime()),
}, },
methods: { methods: {
pageBack(){
pjaxReplace('/platform/mobile/theRapyRecuperation/mobileLineListPage')
},
openRead() { openRead() {
this.readVisible = true this.readVisible = true
this.$nextTick(() => { this.$nextTick(() => {
@@ -788,6 +790,18 @@ layout("/mobile/platform.html"){
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne') const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
this.configData = resp.data this.configData = resp.data
}, },
handleClick(event, classArray = []) {
if (event.target.tagName === 'IMG' && event.target.className !== 'top_icon') {
const index = classArray.indexOf(event.target.className)
if(index !== -1) {
vant.ImagePreview({
images: array,
startPosition: index,
closeable: true,
})
}
}
},
readPDFPicture(pdf) { readPDFPicture(pdf) {
if(pdf != null) { if(pdf != null) {
pdf.on("complete", function () { pdf.on("complete", function () {
@@ -800,19 +814,7 @@ layout("/mobile/platform.html"){
array.push(o.getAttribute('src')) array.push(o.getAttribute('src'))
} }
}) })
document.addEventListener('click', function (event) { document.addEventListener('click', (event) => this.handleClick(event, classArray))
// 打印被点击的元素标签名和 class
if (event.target.tagName === 'IMG' && event.target.className !== 'top_icon') {
const index = classArray.indexOf(event.target.className)
if(index !== -1) {
vant.ImagePreview({
images: array,
startPosition: index,
closeable: true,
})
}
}
})
}) })
} }
}, },
@@ -839,19 +841,11 @@ layout("/mobile/platform.html"){
this.$nextTick(() => { this.$nextTick(() => {
pdfh5 = new Pdfh5('#demo', { pdfh5 = new Pdfh5('#demo', {
pdfurl: href, pdfurl: href,
}); })
}) })
}catch (e) { }catch (e) {
this.isPdf = true this.isPdf = true
document.addEventListener('click', function (event) { document.addEventListener('click', (event) => this.handleClick(event))
// 打印被点击的元素标签名和 class
if (event.target.tagName === 'IMG' && event.target.className !== 'top_icon') {
vant.ImagePreview({
images: [event.target.src],
closeable: true,
})
}
})
} }
this.$nextTick(() => { this.$nextTick(() => {
this.readPDFPicture(pdfh5) this.readPDFPicture(pdfh5)
@@ -862,6 +856,7 @@ layout("/mobile/platform.html"){
}, },
destroyed() { destroyed() {
window.removeEventListener('scroll', this.scrollToTop) window.removeEventListener('scroll', this.scrollToTop)
document.removeEventListener('click', (event) => this.handleClick(event))
}, },
}) })
</script> </script>
@@ -128,12 +128,12 @@ layout("/mobile/platform.html"){
} }
.sign_button .van-button { .sign_button .van-button {
width: 74px; width: 72px;
height: 28px; height: 26px;
color: white; color: white;
background: rgb(24, 103, 176); background: rgb(24, 103, 176);
border-color: rgb(24, 103, 176); border-color: rgb(24, 103, 176);
font-size: 12px; font-size: 11px;
border-radius: 6px; border-radius: 6px;
} }
@@ -145,7 +145,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak> <div id="app" v-cloak>
<van-sticky> <van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar> <van-nav-bar @click-left="pjaxReplace('/platform/mobile/theRapyRecuperation/index')" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar>
</van-sticky> </van-sticky>
<!--<van-dropdown-menu> <!--<van-dropdown-menu>
@@ -197,10 +197,10 @@ layout("/mobile/platform.html"){
<div @click.stop="clickLineRow(o)" class="list-card" v-for="o in tableData"> <div @click.stop="clickLineRow(o)" class="list-card" v-for="o in tableData">
<div class="content"> <div class="content">
<van-image <van-image
height="100" height="92"
radius="8" radius="8"
:src="CREATE_PREVIEW_URL(o.fileId)" :src="CREATE_PREVIEW_URL(o.fileId)"
width="150"> width="130">
</van-image> </van-image>
<div v-if="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3'" <div v-if="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3'"
class="content-right"> class="content-right">
@@ -282,6 +282,12 @@ layout("/mobile/platform.html"){
</div> </div>
</div> </div>
<div v-if="pageForm.theRapyRecuperationType == '3'" style="text-align: right; padding-right: 10px; padding-bottom: 10px" class="sign_button">
<van-button @click.stop="openSignUser(o, 'baseManage')" size="mini"
type="info" color="#1867B0">查看人员</van-button>
</div>
<div v-if="pageForm.theRapyRecuperationType == '2'"> <div v-if="pageForm.theRapyRecuperationType == '2'">
<van-row gutter="20"> <van-row gutter="20">
<van-col @click="" span="12" style="border-right: 1px lightgrey solid"></van-col> <van-col @click="" span="12" style="border-right: 1px lightgrey solid"></van-col>
@@ -316,16 +322,18 @@ layout("/mobile/platform.html"){
<div class="van-action-sheet__subname">{{item.subname}}</div> <div class="van-action-sheet__subname">{{item.subname}}</div>
</div> </div>
<div class="sign_button"> <div class="sign_button">
<van-button @click.stop="onSelect(item)" size="mini" type="info" <div>
style="margin-right: 8px"> <van-button @click.stop="onSelect(item)" size="mini" type="info"
点击报名 style="margin-right: 8px">
</van-button> 点击报名
</div> </van-button>
<div style="margin-top: 4px"> </div>
<van-button @click.stop="openSignUser(item, 'line')" size="mini" type="info" <div style="margin-top: 4px">
style="margin-right: 8px"> <van-button @click.stop="openSignUser(item, 'line')" size="mini" type="info"
查看人员 style="margin-right: 8px">
</van-button> 查看人员
</van-button>
</div>
</div> </div>
</div> </div>
</button> </button>
@@ -374,6 +382,10 @@ layout("/mobile/platform.html"){
}, },
async clickLineRow(o) { async clickLineRow(o) {
this.clickRow = o this.clickRow = o
if(Number(this.pageForm.theRapyRecuperationType) === 3) {
await this.findOne(o)
return
}
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/getSelectLineById', const resp = await $.post('/platform/theRapyRecuperation/line/enroll/getSelectLineById',
{ {
lineId: o.lineId, lineId: o.lineId,
@@ -463,7 +475,7 @@ layout("/mobile/platform.html"){
pjaxReplace('/platform/mobile/theRapyRecuperation/lineInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType pjaxReplace('/platform/mobile/theRapyRecuperation/lineInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType
+ '&takePartInUnionId=' + o.takePartInUnionId) + '&takePartInUnionId=' + o.takePartInUnionId)
} else if (type === 3) { } else if (type === 3) {
pjaxReplace('/platform/mobile/theRapyRecuperation/baseInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType) pjaxReplace('/platform/mobile/theRapyRecuperation/baseInfo?id=' + o.id + '&index=' + this.pageForm.theRapyRecuperationType)
} }
}, },
async getData() { async getData() {