This commit is contained in:
JyuHsin
2025-06-13 09:20:55 +08:00
parent 848fb8a9c7
commit f852424c20
5 changed files with 117 additions and 173 deletions
@@ -228,7 +228,7 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
cnd.and("b.id", "in", list);
}
cnd.asc("sortNumber");
cnd.asc("sortNumber * 1");
taSql.setCondition(cnd);
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), taSql);
}
@@ -609,7 +609,7 @@ public class TheRapyRecuperationEnrollServiceImpl extends ViServiceImpl<TheRapyR
}
//判断人数报满没有
if(lineUnionSelect.getMaxGroupSize() > 0) {
if(lineUnionSelect.getMaxGroupSize() != null && lineUnionSelect.getMaxGroupSize() > 0) {
Map<Boolean, String> validSignCountMap = validSignCount(enrollInfo, config, lineUnionSelect.getMaxGroupSize(), StrUtil.isBlank(enrollInfo.getId()) ? "add" : "edit");
if (validSignCountMap.containsKey(false)) {
return validSignCountMap;
@@ -293,9 +293,10 @@ layout("/mobile/platform.html"){
</div>
</div>
<van-divider :style="{ color: 'orange', fontSize: '12px' }">上下滑动翻页,单击查看,再单击返回</van-divider>
<div v-if="isPdf" v-html="baseData.content" class="content"></div>
<div v-else id="demo" class="pdf_div"></div>
<div class="pdf_div">
<div v-if="isPdf" v-html="baseData.content" class="content"></div>
<div v-else id="demo" class="pdf_div"></div>
</div>
</div>
</van-skeleton>
@@ -313,6 +314,8 @@ layout("/mobile/platform.html"){
<van-button v-if="moment().unix() >= moment(configData.fragmentStartTime).unix() && moment().unix() <= moment(configData.fragmentEndTime).unix()" @click="join"
class="join">{{ enrollId ? '修改报名' : '我要报名' }}
</van-button>
<van-button v-if="moment().unix() < moment(configData.fragmentStartTime).unix()" class="join">报名未开始
</van-button>
<van-button v-if="moment().unix() > moment(configData.fragmentEndTime).unix()" class="join">报名结束
</van-button>
</div>
@@ -915,19 +918,22 @@ layout("/mobile/platform.html"){
}
},
readPDFPicture(pdf) {
const that = this
if(pdf != null) {
pdf.on("complete", function () {
const imgDoc = document.querySelectorAll('img')
let array = []
const elements = document.querySelectorAll('[class*="canvasImg"]')
let classArray = []
imgDoc.forEach(o => {
if(o.getAttribute('class') !== 'top_icon') {
classArray.push(o.getAttribute('class'))
array.push(o.getAttribute('src'))
}
elements.forEach(element => {
classArray.push(element.getAttribute('src'))
})
document.addEventListener('click', (event) => that.handleClick(event, classArray, array))
elements.forEach((element,index) => {
element.addEventListener('click', function() {
vant.ImagePreview({
images: classArray,
startPosition: index,
closeable: true,
})
});
});
})
}
},
@@ -956,19 +962,12 @@ layout("/mobile/platform.html"){
})
}catch (e) {
this.isPdf = true
//document.addEventListener('click', (event) => this.handleClick(event))
}
this.$nextTick(() => {
this.readPDFPicture(pdfh5)
})
},
mounted() {
//window.addEventListener('scroll', this.scrollToTop)
},
destroyed() {
},
})
</script>
@@ -36,6 +36,10 @@ layout("/mobile/platform.html"){
overflow-y: auto;
}
.pdfjs .backTop {
bottom: 30px;
}
</style>
<div id="app" v-cloak>
@@ -123,40 +127,22 @@ layout("/mobile/platform.html"){
})
}catch (e) {
this.isPdf = true
document.addEventListener('click', function (event) {
// 打印被点击的元素标签名和 class
if (event.target.tagName === 'IMG' && !['van-image__img', 'top_icon'].includes(event.target.className)) {
vant.ImagePreview({
images: [event.target.src],
closeable: true,
})
}
})
}
this.$nextTick(() => {
pdfh5.on("complete", function () {
const imgDoc = document.querySelectorAll('img')
let array = []
const elements = document.querySelectorAll('[class*="canvasImg"]')
let classArray = []
imgDoc.forEach(o => {
if(!['van-image__img', 'top_icon'].includes(o.getAttribute('class'))) {
classArray.push(o.getAttribute('class'))
array.push(o.getAttribute('src'))
}
elements.forEach(element => {
classArray.push(element.getAttribute('src'))
})
document.addEventListener('click', function (event) {
// 打印被点击的元素标签名和 class
if (event.target.tagName === 'IMG' && !['van-image__img', 'top_icon'].includes(event.target.className)) {
const index = classArray.indexOf(event.target.className)
if(index !== -1) {
vant.ImagePreview({
images: array,
startPosition: index,
closeable: true,
})
}
}
elements.forEach((element,index) => {
element.addEventListener('click', function() {
vant.ImagePreview({
images: classArray,
startPosition: index,
closeable: true,
})
})
})
})
})
@@ -6,7 +6,6 @@ layout("/mobile/platform.html"){
#app {
font-family: ,serif;
}
.container img {
background-size: contain;
width: 100%;
@@ -14,50 +13,43 @@ layout("/mobile/platform.html"){
margin: 5px auto;
display: block;
}
.header {
padding: 10px 20px 0;
}
.content {
line-height: 26px;
padding: 0px 10px 56px 10px;
padding: 0 10px 56px 10px;
}
.pdf_div {
padding-bottom: 70px;
height: calc(100vh - 46px - 60px - 151px - 160px);
height: calc(100vh - 350px);
position: relative;
}
.pdfjs {
overflow-y: auto;
}
/*.backTop {
display: none !important;
}*/
.pdfjs .backTop {
bottom: 30px;
}
.title {
font-weight: bold;
font-size: 19px;
color: #505050;
margin-bottom: 10px;
}
.van-divider {
border-color: grey;
margin: 0;
}
.van-skeleton {
padding: 20px;
}
.van-skeleton__content {
height: 600px;
padding-top: 60px;
}
.van-skeleton__row, .van-skeleton__title {
height: 30px;
}
.footer {
background-color: white;
position: fixed;
@@ -69,39 +61,32 @@ layout("/mobile/platform.html"){
align-items: center;
left: 0;
}
.footer .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.family_join {
background-color: #ff976a;
color: white;
}
.join {
background-color: #0e78c5;
color: white;
}
.joinPopup {
width: 100%;
height: 100%;
background-color: #f6f7f9;
}
.join_content {
padding: 20px;
height: calc(100% - 26px - 60px);
overflow-y: auto;
}
.join_submit {
width: 90% !important;
}
.van-doc-card {
background-color: #fff;
border-radius: 6px;
@@ -109,7 +94,6 @@ layout("/mobile/platform.html"){
line-height: 20px;
position: relative;
}
.van-card-header {
padding: 14px 20px;
border-bottom: 1px solid #ebeef5;
@@ -117,11 +101,9 @@ layout("/mobile/platform.html"){
color: #0e78c5;
font-weight: bold;
}
.van-card-body {
padding: 0px 10px 0px 10px
padding: 0 10px 0 10px
}
.van-doc-card > div:first-child {
border: 2px #0e78c5 solid;
width: 26px;
@@ -130,56 +112,44 @@ layout("/mobile/platform.html"){
top: 0;
left: 20px;
}
.van-cell {
padding: 8px 5px;
}
.van-tabs__wrap {
margin: 6px;
}
.van-tabs__nav--card {
border: none;
}
.van-tabs__nav--card .van-tab.van-tab--active {
border-radius: 6px;
}
.van-tabs__nav--card .van-tab {
border-right: 0 !important;
}
.top_icon {
position: fixed;
bottom: 80px;
right: 20px;
}
.van-field__control {
text-overflow: ellipsis;
}
.list-card {
width: auto;
}
.companionList_empty_text {
text-align: center;
padding: 10px 0px;
padding: 10px 0;
font-size: 14px;
color: grey;
}
.header div span {
color: grey;
}
.header :last-child {
font-size: 14px;
}
.van-empty {
position: relative;
transform: none;
@@ -188,7 +158,6 @@ layout("/mobile/platform.html"){
background-color: transparent;
height: calc(100vh - 46px - 153px - 60px);
}
.submitButton {
background-color: white !important;
width: 100%;
@@ -198,25 +167,17 @@ layout("/mobile/platform.html"){
align-items: center;*/
text-align: center;
}
.submitButton .van-button {
height: 34px;
border-radius: 6px;
width: 90% !important;
}
.van-image-preview img {
background-color: white;
}
.van-tag {
color: white !important;
}
.viewerContainer {
overflow: unset !important;
}
.sign_div {
background-color: white;
margin-bottom: 16px;
@@ -251,67 +212,61 @@ layout("/mobile/platform.html"){
<template v-if="isLoad">
<!--线路详情-->
<van-skeleton title :loading="skeLoading" :row="12">
<div class="container">
<div class="header">
<div class="title">
<van-tag size="large" color="#1867b0" style="position: relative; top: -2px">
{{lineData.lotName}}
</van-tag>
{{lineData.lineName}}
<div class="container">
<div class="header">
<div class="title">
<van-tag size="large" color="#1867b0" style="position: relative; top: -2px">
{{lineData.lotName}}
</van-tag>
{{lineData.lineName}}
</div>
<div style="margin-top: 10px">
<div>
<div>
<span>预计费用:</span>
{{lineData.estimatedCost}}元
</div>
<div>
<span class="line_label">最少成团:</span>
<label v-if="lineData.minimumGroupSize">{{lineData.minimumGroupSize}}人</label>
<label v-else>不限制</label>
</div>
<!--<div v-if="configData.familyInfo == 2">
<span>当前报名:</span>
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '(家属' + lineData.signUpUserFamilyNum + '人)'}}
</div>
<div v-else>
<span>当前报名:</span>
{{lineData.signUpUserNum + lineData.familyNumber + '(家属' + lineData.familyNumber + '人)'}}
</div>-->
</div>
<div style="margin-top: 10px">
<div>
<div>
<span>预计费用:</span>
{{lineData.estimatedCost}}元
</div>
<div>
<span class="line_label">最少成团:</span>
<label v-if="lineData.minimumGroupSize">{{lineData.minimumGroupSize}}人</label>
<label v-else>不限制</label>
</div>
<!--<div v-if="configData.familyInfo == 2">
<span>当前报名:</span>
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '(家属' + lineData.signUpUserFamilyNum + '人)'}}
</div>
<div v-else>
<span>当前报名:</span>
{{lineData.signUpUserNum + lineData.familyNumber + '(家属' + lineData.familyNumber + '人)'}}
</div>-->
</div>
<div>
<span>报名时间:</span>
{{moment(configData.implodeStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(configData.implodeEndTime).format('YYYY-MM-DD HH:mm')}}
</div>
<div>
<span>出行时间:</span>
{{moment(lineData.playStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(lineData.playEndTime).format('YYYY-MM-DD HH:mm')}}
</div>
<div>
<span>&ensp;&ensp;社:</span>
{{lineData.travelAgencyName}}
</div>
<div>
<span>联系方式:</span>
{{lineData.contactMobileNumber}}
</div>
<div>
<span>报名时间:</span>
{{moment(configData.implodeStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(configData.implodeEndTime).format('YYYY-MM-DD HH:mm')}}
</div>
<div>
<span>出行时间:</span>
{{moment(lineData.playStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(lineData.playEndTime).format('YYYY-MM-DD HH:mm')}}
</div>
<div>
<span>&ensp;&ensp;社:</span>
{{lineData.travelAgencyName}}
</div>
<div>
<span>联系方式:</span>
{{lineData.contactMobileNumber}}
</div>
</div>
<van-divider :style="{ color: 'orange', fontSize: '12px' }">上下滑动翻页,单击查看,再单击返回</van-divider>
<div v-if="isPdf" v-html="lineData.content" class="content"></div>
<div v-else id="demo" class="pdf_div"></div>
<!--<van-empty
v-else class="custom-image"
image="https://img01.yzcdn.cn/vant/custom-empty-image.png"
description="暂无详细信息"
></van-empty>-->
</div>
</van-skeleton>
<van-divider :style="{ color: 'orange', fontSize: '12px' }">上下滑动翻页,单击查看,再单击返回</van-divider>
<div class="pdf_div">
<div v-if="isPdf" v-html="lineData.content" class="content"></div>
<div v-else id="demo"></div>
</div>
</div>
<!--置顶图标-->
<image v-if="btnFlag" @click="backTop" src="/assets/mobile/svg/therapyRecuperation/top.svg"
@@ -322,6 +277,8 @@ layout("/mobile/platform.html"){
<van-button v-if="moment().unix() >= moment(configData.implodeStartTime).unix() && moment().unix() <= moment(configData.implodeEndTime).unix()" @click="join"
class="join">{{ enrollId ? '修改报名' : '我要报名' }}
</van-button>
<van-button v-if="moment().unix() < moment(configData.implodeStartTime).unix()" class="join">报名未开始
</van-button>
<van-button v-if="moment().unix() > moment(configData.implodeEndTime).unix()" class="join">报名结束
</van-button>
</div>
@@ -822,19 +779,22 @@ layout("/mobile/platform.html"){
}
},
readPDFPicture(pdf) {
const that = this
if(pdf != null) {
pdf.on("complete", function () {
const imgDoc = document.querySelectorAll('img')
let array = []
const elements = document.querySelectorAll('[class*="canvasImg"]')
let classArray = []
imgDoc.forEach(o => {
if(o.getAttribute('class') !== 'top_icon') {
classArray.push(o.getAttribute('class'))
array.push(o.getAttribute('src'))
}
elements.forEach(element => {
classArray.push(element.getAttribute('src'))
})
document.addEventListener('click', (event) => that.handleClick(event, classArray, array))
elements.forEach((element,index) => {
element.addEventListener('click', function() {
vant.ImagePreview({
images: classArray,
startPosition: index,
closeable: true,
})
});
});
})
}
},
@@ -852,7 +812,6 @@ layout("/mobile/platform.html"){
}
await this.getData()
this.isLoad = true
try {
const parser = new DOMParser();
const doc = parser.parseFromString(this.lineData.content, 'text/html');
@@ -865,19 +824,11 @@ layout("/mobile/platform.html"){
})
}catch (e) {
this.isPdf = true
//document.addEventListener('click', (event) => this.handleClick(event, [], []))
}
this.$nextTick(() => {
this.readPDFPicture(pdfh5)
})
},
mounted() {
//window.addEventListener('scroll', this.scrollToTop)
},
beforeDestroy() {
//window.removeEventListener('scroll', this.scrollToTop)
},
})
</script>
@@ -301,6 +301,14 @@ layout("/mobile/platform.html"){
radius="8"
:src="CREATE_PREVIEW_URL(o.fileId)"
width="130">
<template v-slot:error>
<van-image
width="130"
height="92"
fit="contain"
src="/assets/mobile/img/therapyRecuperation/hotel.jpg"
></van-image>
</template>
</van-image>
<div v-if="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3'" class="content-right">