commit
This commit is contained in:
@@ -279,9 +279,9 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
<div class="van-card-body">
|
||||
<van-field label="姓名" readonly v-model="formData.userName"></van-field>
|
||||
<van-field label="工号" readonly v-model="formData.loginName"></van-field>
|
||||
<van-field label="身份证号" name="idCard" :rules="[{ required: true }]"
|
||||
placeholder="请填写身份证号" v-model="formData.idCard"></van-field>
|
||||
<van-field label="一卡通号" readonly v-model="formData.loginName"></van-field>
|
||||
<van-field label="身份证件" name="idCard" :rules="[{ required: true }]"
|
||||
placeholder="请填写身份证号、护照、台胞证等" v-model="formData.idCard"></van-field>
|
||||
<van-field label="手机号" name="mobile" :rules="[{ required: true }]"
|
||||
placeholder="请填写手机号" v-model="formData.mobile"></van-field>
|
||||
<van-field label="所属工会" readonly v-model="formData.unionName"></van-field>
|
||||
@@ -335,7 +335,7 @@ layout("/mobile/platform.html"){
|
||||
<van-tab v-for="item, index in formData.companionList" :title="'随行人' + (index + 1)">
|
||||
<van-field label="姓名" name="userName" placeholder="请填写姓名" v-model="item.userName"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<!--<van-field label="工号" name="loginName" placeholder="若没有工号,请忽略此项" v-model="item.loginName"></van-field>-->
|
||||
<!--<van-field label="一卡通号" name="loginName" placeholder="若没有工号,请忽略此项" v-model="item.loginName"></van-field>-->
|
||||
<van-field label="年龄" name="age" placeholder="请填写年龄" v-model="item.age"
|
||||
type="digit" :rules="[{ required: true }]"></van-field>
|
||||
<van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别" name="validator">
|
||||
@@ -346,7 +346,7 @@ layout("/mobile/platform.html"){
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field label="身份证号" name="idCard" placeholder="请填写身份证号"
|
||||
<van-field label="身份证件" name="idCard" placeholder="请填写身份证号、护照、台胞证等"
|
||||
:rules="[{ required: true }]" type="digit"
|
||||
v-model="item.idCard"></van-field>
|
||||
<van-field label="手机号" name="mobile" placeholder="请填写手机号"
|
||||
@@ -445,7 +445,7 @@ layout("/mobile/platform.html"){
|
||||
active: 0,
|
||||
roomColumns: ['大床房', '标准间'],
|
||||
bedColumns: ['1', '2'],
|
||||
companionColumns: ['亲属', '朋友'],
|
||||
companionColumns: ['配偶', '子女'],
|
||||
bedVisible: false,
|
||||
roomVisible: false,
|
||||
companionVisible: false,
|
||||
|
||||
@@ -36,16 +36,16 @@ layout("/mobile/platform.html"){
|
||||
<div id="app" v-cloak>
|
||||
|
||||
<van-sticky>
|
||||
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="职工疗休养"></van-nav-bar>
|
||||
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" 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/mobile/img/therapyRecuperation/index1.jpg"></van-image>
|
||||
<van-image width="100%" height="180" src="/assets/mobile/img/therapyRecuperation/index1.jpeg"></van-image>
|
||||
</van-swipe-item>
|
||||
<van-swipe-item>
|
||||
<van-image height="180" src="/assets/mobile/img/therapyRecuperation/index2.jpg"></van-image>
|
||||
<van-image height="180" src="/assets/mobile/img/therapyRecuperation/index1.jpeg"></van-image>
|
||||
</van-swipe-item>
|
||||
</van-swipe>
|
||||
|
||||
@@ -60,20 +60,11 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
|
||||
<!--疗休养描述-->
|
||||
<div class="van-doc-card" style="margin-top: 20px;margin-bottom: 60px">
|
||||
<div class="van-doc-card" style="margin-top: 20px">
|
||||
<van-image width="190" height="43" src="/assets/mobile/img/therapyRecuperation/title.png"></van-image>
|
||||
<div class="pre_text" v-html="configData.notice"></div>
|
||||
</div>
|
||||
|
||||
<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>
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
@@ -83,7 +74,6 @@ layout("/mobile/platform.html"){
|
||||
return {
|
||||
chooseButton: [],
|
||||
configData: {},
|
||||
tarBarActive: 0,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -98,7 +88,7 @@ layout("/mobile/platform.html"){
|
||||
return
|
||||
}
|
||||
localStorage.setItem("clickIndex", JSON.stringify({clickIndex: index}))
|
||||
location.href = '/platform/mobile/theRapyRecuperation/mobileLineListPage'
|
||||
pjaxReplace('/platform/mobile/theRapyRecuperation/mobileLineListPage')
|
||||
},
|
||||
async getConfigData() {
|
||||
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
|
||||
|
||||
@@ -3,6 +3,10 @@ layout("/mobile/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
|
||||
#app {
|
||||
font-family: 微软雅黑,serif;
|
||||
}
|
||||
|
||||
.container img {
|
||||
background-size: contain;
|
||||
width: 100%;
|
||||
@@ -11,13 +15,22 @@ layout("/mobile/platform.html"){
|
||||
display: block;
|
||||
}
|
||||
|
||||
.backTop {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.content {
|
||||
line-height: 26px;
|
||||
padding: 0px 20px 56px 20px;
|
||||
padding: 0px 10px 56px 10px;
|
||||
}
|
||||
|
||||
.pdf_div {
|
||||
padding-bottom: 70px;
|
||||
height: 800px;
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -179,10 +192,11 @@ layout("/mobile/platform.html"){
|
||||
.submitButton {
|
||||
background-color: white !important;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
/*height: 60px;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
align-items: center;
|
||||
align-items: center;*/
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.submitButton .van-button {
|
||||
@@ -195,84 +209,133 @@ layout("/mobile/platform.html"){
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.van-tag {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.viewerContainer {
|
||||
overflow: unset !important;
|
||||
}
|
||||
|
||||
.sign_div {
|
||||
background-color: white;
|
||||
margin-bottom: 16px;
|
||||
padding: 18px;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 8px 12px #ebedf0;
|
||||
}
|
||||
.van-action-sheet {
|
||||
max-height: 90%;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
|
||||
<van-sticky>
|
||||
<van-nav-bar @click-left="history.go(-1)" fixed left-arrow placeholder title="职工疗休养-线路介绍"></van-nav-bar>
|
||||
<van-nav-bar @click-left="history.go(-1)" fixed left-arrow placeholder
|
||||
title="职工疗休养-线路介绍"></van-nav-bar>
|
||||
</van-sticky>
|
||||
|
||||
<!--线路详情-->
|
||||
<van-skeleton title :loading="skeLoading" :row="12">
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="title">
|
||||
<van-tag size="large" color="#1867b0" style="color: white;position: relative; top: -2px">
|
||||
{{lineData.lotName}}
|
||||
</van-tag>
|
||||
{{lineData.lineName}}
|
||||
</div>
|
||||
<div style="margin-top: 10px">
|
||||
<div>
|
||||
<span class="line_label">成团人数:</span>
|
||||
{{lineData.minimumGroupSize ? lineData.minimumGroupSize : 0}}人(最少)
|
||||
<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>
|
||||
<div>
|
||||
<span>当前报名:</span>
|
||||
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '(家属' + lineData.signUpUserFamilyNum +
|
||||
'人)'}}
|
||||
</div>
|
||||
<div>
|
||||
<span>报名时间:</span>
|
||||
{{moment(lineData.signUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
|
||||
moment(lineData.signUpEndTime).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>旅 行 社:</span>
|
||||
{{lineData.travelAgencyName}}
|
||||
</div>
|
||||
<div>
|
||||
<span>联系方式:</span>
|
||||
{{lineData.contactMobileNumber}}
|
||||
<div style="margin-top: 10px">
|
||||
<div v-if="lineData.regionalNature == '省内'">
|
||||
<div>
|
||||
<span class="line_label">成团人数包括家属:</span>
|
||||
<label v-if="lineData.estimatedFamilyNumbers">{{lineData.estimatedFamilyNumbers}}人</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 v-else>
|
||||
<div>
|
||||
<span class="line_label">最多成团人数:</span>
|
||||
<label>{{configData.outsideQuota}}人</label>
|
||||
</div>
|
||||
<div v-if="configData.familyInfo == 2">
|
||||
<span>当前报名:</span>
|
||||
{{lineData.signUpUserNum + '(家属' + lineData.signUpUserFamilyNum + '人)'}}
|
||||
</div>
|
||||
<div v-else>
|
||||
<span>当前报名:</span>
|
||||
{{lineData.signUpUserNum + '(家属' + lineData.familyNumber + '人)'}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<span>报名时间:</span>
|
||||
{{moment(lineData.signUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
|
||||
moment(lineData.signUpEndTime).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>旅 行 社:</span>
|
||||
{{lineData.travelAgencyName}}
|
||||
</div>
|
||||
<div>
|
||||
<span>联系方式:</span>
|
||||
{{lineData.contactMobileNumber}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<van-divider :style="{ color: 'orange', fontSize: '12px' }">上下滑动翻页,单击查看,再单击返回</van-divider>
|
||||
<!--<div v-if="lineData.content" v-html="lineData.content" class="content"></div>
|
||||
<div v-else v-html="configData.notice" class="content"></div>-->
|
||||
<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-divider></van-divider>
|
||||
<div v-if="lineData.content" v-html="lineData.content" class="content"></div>
|
||||
<div v-else v-html="configData.notice" class="content"></div>
|
||||
<!--<van-empty
|
||||
v-else class="custom-image"
|
||||
image="https://img01.yzcdn.cn/vant/custom-empty-image.png"
|
||||
description="暂无详细信息"
|
||||
></van-empty>-->
|
||||
</van-skeleton>
|
||||
|
||||
<!--置顶图标-->
|
||||
<image v-if="btnFlag" @click="backTop" src="/assets/mobile/svg/therapyRecuperation/top.svg"
|
||||
class="top_icon"></image>
|
||||
|
||||
<!--底部报名按钮-->
|
||||
<div class="footer" v-if="fromUrlByMy != 'edit'">
|
||||
<template v-if="lineData.isNormal==0&&lineData.isNormalFalse>0">
|
||||
<van-button @click="join"
|
||||
class="join">我要报名
|
||||
</van-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<van-button v-if="moment().unix() <= moment(lineData.changeEndTime).unix()" @click="join"
|
||||
class="join">我要报名
|
||||
</van-button>
|
||||
<van-button v-if="moment().unix() > moment(lineData.changeEndTime).unix()" class="join">报名结束
|
||||
</van-button>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
</van-skeleton>
|
||||
</template>
|
||||
|
||||
<!--置顶图标-->
|
||||
<image v-if="btnFlag" @click="backTop" src="/assets/mobile/svg/therapyRecuperation/top.svg"
|
||||
class="top_icon"></image>
|
||||
|
||||
<!--底部报名按钮-->
|
||||
<div class="footer" v-if="fromUrlByMy != 'edit'">
|
||||
<template v-if="lineData.isNormal==0&&lineData.isNormalFalse>0">
|
||||
<van-button @click="join"
|
||||
class="join">我要报名
|
||||
</van-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<van-button v-if="moment().unix() <= moment(lineData.signUpEndTime).unix()" @click="join"
|
||||
class="join">我要报名
|
||||
</van-button>
|
||||
<van-button v-if="moment().unix() > moment(lineData.signUpEndTime).unix()" class="join">报名结束</van-button>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
<!--报名弹出框-->
|
||||
<van-popup v-model:show="joinPopup" position="right" class="joinPopup">
|
||||
<van-nav-bar @click-left="joinPopup = false" fixed left-arrow placeholder title="疗休养报名"></van-nav-bar>
|
||||
@@ -288,9 +351,9 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
<div class="van-card-body">
|
||||
<van-field label="姓名" readonly v-model="formData.userName"></van-field>
|
||||
<van-field label="工号" readonly v-model="formData.loginName"></van-field>
|
||||
<van-field label="身份证号" name="idCard" :rules="[{ required: true }]"
|
||||
placeholder="请填写身份证号" v-model="formData.idCard"></van-field>
|
||||
<van-field label="一卡通号" readonly v-model="formData.loginName"></van-field>
|
||||
<van-field label="身份证件" name="idCard" :rules="[{ required: true }]"
|
||||
placeholder="请填写身份证号、护照、台胞证等" v-model="formData.idCard"></van-field>
|
||||
<van-field label="手机号" name="mobile" :rules="[{ required: true }]"
|
||||
placeholder="请填写手机号" v-model="formData.mobile"></van-field>
|
||||
<van-field label="所属工会" readonly v-model="formData.unionName"></van-field>
|
||||
@@ -299,7 +362,7 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
|
||||
<!--床位信息-->
|
||||
<div class="van-doc-card" style="margin-bottom: 16px">
|
||||
<div v-if="configData.bedInfo === true" class="van-doc-card" style="margin-bottom: 16px">
|
||||
<div></div>
|
||||
<div class="van-card-header">
|
||||
床位信息
|
||||
@@ -312,7 +375,8 @@ layout("/mobile/platform.html"){
|
||||
readonly is-link label="床位"
|
||||
name="bedNum" placeholder="请选择床位" v-model="formData.bedInfo.bedNum"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<van-field v-if="formData.bedInfo.bedType == '标准间'" :rules="[{ validator, message: '请选择是否拼房' }]"
|
||||
<van-field v-if="formData.bedInfo.bedType == '标准间'"
|
||||
:rules="[{ validator, message: '请选择是否拼房' }]"
|
||||
label="是否拼房" name="validator">
|
||||
<template #input>
|
||||
<van-radio-group direction="horizontal" v-model="formData.bedInfo.isSleepTogether">
|
||||
@@ -321,10 +385,11 @@ layout("/mobile/platform.html"){
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field v-if="formData.bedInfo.bedType == '标准间' && formData.bedInfo.isSleepTogether == true"
|
||||
label="意向拼房人" name="otherSleepUser" placeholder="多个拼房人请用,隔开"
|
||||
v-model="formData.bedInfo.otherSleepUser"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<van-field
|
||||
v-if="formData.bedInfo.bedType == '标准间' && formData.bedInfo.isSleepTogether == true"
|
||||
label="意向拼房人" name="otherSleepUser" placeholder="多个拼房人请用,隔开"
|
||||
v-model="formData.bedInfo.otherSleepUser"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -334,71 +399,97 @@ layout("/mobile/platform.html"){
|
||||
<div class="van-card-header"
|
||||
style="display: flex; justify-content: space-between; align-items: center">
|
||||
<span style="float:left;">随行人信息</span>
|
||||
<div>
|
||||
<van-tag @click="delCompanion" size="large" type="primary" color="lightgrey">删除随行人</van-tag>
|
||||
<van-tag @click="addCompanion" size="large" type="primary" color="#1867b0">添加随行人</van-tag>
|
||||
<div v-if="configData.familyInfo === 2">
|
||||
<van-tag @click="delCompanion" size="large" type="primary" color="lightgrey">删除随行人
|
||||
</van-tag>
|
||||
<van-tag @click="addCompanion" size="large" type="primary" color="#1867b0">添加随行人
|
||||
</van-tag>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="formData.companionList.length > 0" class="van-card-body">
|
||||
<van-tabs v-model="active" type="card" color="#0e78c5" animated>
|
||||
<van-tab v-for="item, index in formData.companionList" :title="'随行人' + (index + 1)">
|
||||
<van-field label="姓名" name="userName" placeholder="请填写姓名" v-model="item.userName"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<!--<van-field label="工号" name="loginName" placeholder="若没有工号,请忽略此项" v-model="item.loginName"></van-field>-->
|
||||
<van-field label="年龄" name="age" placeholder="请填写年龄" v-model="item.age"
|
||||
type="digit" :rules="[{ required: true }]"></van-field>
|
||||
<van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别" name="validator">
|
||||
<template #input>
|
||||
<van-radio-group direction="horizontal" v-model="item.sex">
|
||||
<van-radio name="男" shape="square">男</van-radio>
|
||||
<van-radio name="女" shape="square">女</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field label="身份证号" name="idCard" placeholder="请填写身份证号"
|
||||
:rules="[{ required: true }]" type="digit"
|
||||
v-model="item.idCard"></van-field>
|
||||
<van-field label="手机号" name="mobile" placeholder="请填写手机号"
|
||||
:rules="[{ required: true }]" type="digit"
|
||||
v-model="item.mobile"></van-field>
|
||||
<van-field @click="companionVisible = true" readonly is-link label="与本人关系"
|
||||
name="relation"
|
||||
placeholder="随行人与本人关系" v-model="item.relation"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<template v-if="configData.familyInfo === 2">
|
||||
<div v-if="formData.companionList.length > 0" class="van-card-body">
|
||||
<van-tabs v-model="active" type="card" color="#0e78c5" animated>
|
||||
<van-tab v-for="item, index in formData.companionList" :title="'随行人' + (index + 1)">
|
||||
<van-field label="姓名" name="userName" placeholder="请填写姓名"
|
||||
v-model="item.userName"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<!--<van-field label="一卡通号" name="loginName" placeholder="若没有工号,请忽略此项" v-model="item.loginName"></van-field>-->
|
||||
<van-field label="年龄" name="age" placeholder="请填写年龄" v-model="item.age"
|
||||
type="digit" :rules="[{ required: true }]"></van-field>
|
||||
<van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别"
|
||||
name="validator">
|
||||
<template #input>
|
||||
<van-radio-group direction="horizontal" v-model="item.sex">
|
||||
<van-radio name="男" shape="square">男</van-radio>
|
||||
<van-radio name="女" shape="square">女</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field label="身份证件" name="idCard" placeholder="请填写身份证号、护照、台胞证等"
|
||||
:rules="[{ required: true }]"
|
||||
v-model="item.idCard"></van-field>
|
||||
<van-field label="手机号" name="mobile" placeholder="请填写手机号"
|
||||
:rules="[{ required: true }]" type="digit"
|
||||
v-model="item.mobile"></van-field>
|
||||
<van-field @click="companionVisible = true" readonly is-link label="与本人关系"
|
||||
name="relation"
|
||||
placeholder="随行人与本人关系" v-model="item.relation"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
|
||||
<van-field @click="self = false; roomVisible = true" readonly is-link label="房间"
|
||||
name="bedType" placeholder="请选择房间"
|
||||
v-model="item.bedInfo.bedType"></van-field>
|
||||
<div style="font-size: 12px; color:orangered; padding-left: 16px; padding-bottom: 4px">
|
||||
提醒:如果跟报名人员同一房间,无须选择!
|
||||
</div>
|
||||
<van-field v-if="item.bedInfo.bedType == '标准间'" @click="self = false; bedVisible = true"
|
||||
readonly is-link label="床位"
|
||||
name="bedNum" placeholder="请选择床位" v-model="item.bedInfo.bedNum"></van-field>
|
||||
<van-field v-if="item.bedInfo.bedType == '标准间'"
|
||||
:rules="[{ validator, message: '请选择是否拼房' }]" label="是否拼房">
|
||||
<template #input>
|
||||
<van-radio-group direction="horizontal" v-model="item.bedInfo.isSleepTogether">
|
||||
<van-radio :name="true" shape="square">是</van-radio>
|
||||
<van-radio :name="false" shape="square">否</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field v-if="item.bedInfo.bedType == '标准间' && item.bedInfo.isSleepTogether == true"
|
||||
label="意向拼房人" name="otherSleepUser" placeholder="多个拼房人请用,隔开"
|
||||
v-model="item.bedInfo.otherSleepUser"></van-field>
|
||||
</van-tab>
|
||||
</van-tabs>
|
||||
</div>
|
||||
<div v-if="formData.companionList.length == 0" class="companionList_empty_text">
|
||||
<span>
|
||||
如有随行人出行,请添加随行人
|
||||
<van-field @click="self = false; roomVisible = true" readonly is-link label="房间"
|
||||
name="bedType" placeholder="请选择房间"
|
||||
v-model="item.bedInfo.bedType"></van-field>
|
||||
<div style="font-size: 12px; color:orangered; padding-left: 16px; padding-bottom: 4px">
|
||||
提醒:如果跟报名人员同一房间,无须选择!
|
||||
</div>
|
||||
<van-field v-if="item.bedInfo.bedType == '标准间'"
|
||||
@click="self = false; bedVisible = true"
|
||||
readonly is-link label="床位"
|
||||
name="bedNum" placeholder="请选择床位"
|
||||
v-model="item.bedInfo.bedNum"></van-field>
|
||||
<van-field v-if="item.bedInfo.bedType == '标准间'"
|
||||
:rules="[{ validator, message: '请选择是否拼房' }]" label="是否拼房">
|
||||
<template #input>
|
||||
<van-radio-group direction="horizontal"
|
||||
v-model="item.bedInfo.isSleepTogether">
|
||||
<van-radio :name="true" shape="square">是</van-radio>
|
||||
<van-radio :name="false" shape="square">否</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field
|
||||
v-if="item.bedInfo.bedType == '标准间' && item.bedInfo.isSleepTogether == true"
|
||||
label="意向拼房人" name="otherSleepUser" placeholder="多个拼房人请用,隔开"
|
||||
v-model="item.bedInfo.otherSleepUser"></van-field>
|
||||
</van-tab>
|
||||
</van-tabs>
|
||||
</div>
|
||||
<div v-if="formData.companionList.length == 0" class="companionList_empty_text">
|
||||
<span>
|
||||
如有随行人出行,请添加随行人
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<van-field label="家属数量" name="familyNumber" placeholder="请填写家属数量" v-model="formData.familyNumber"
|
||||
type="digit" :rules="[{ required: true }]"></van-field>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<div class="sign_div" v-if="formData.companionList.length > 0">
|
||||
<div style="display: flex">
|
||||
<van-checkbox v-model="hasRead" shape="square" @change="readChange" class="mr10"></van-checkbox>
|
||||
我已查看
|
||||
<span @click="openRead" style="color: #0e5996; text-decoration: underline">
|
||||
《{{configData.files[0].filename.replace(/\.[^/.]+$/, '')}}》
|
||||
</span>
|
||||
<van-tag @click="openRead" size="large" type="primary" color="#1867b0">查看</van-tag>
|
||||
</div>
|
||||
<mobile-sign v-if="hasRead" class="mt10" ref="signature" v-model="formData.sign" :is_value_base64="false"></mobile-sign>
|
||||
</div>
|
||||
|
||||
<div class="submitButton">
|
||||
<van-button class="join join_submit">提交报名</van-button>
|
||||
<van-button class="join join_submit" style="margin: 10px 0">提交报名</van-button>
|
||||
</div>
|
||||
|
||||
</van-form>
|
||||
@@ -437,6 +528,14 @@ layout("/mobile/platform.html"){
|
||||
</van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-action-sheet v-model="readVisible" title="请仔细阅读确认后签字">
|
||||
<van-divider :style="{ color: 'orange', fontSize: '12px' }">上下滑动翻页,单击查看,再单击返回</van-divider>
|
||||
<div id="readFile" style="height: 530px; overflow-y: auto"></div>
|
||||
<div class="submitButton">
|
||||
<van-button @click="onRead" class="join join_submit" style="margin: 10px 0">我已阅读确认</van-button>
|
||||
</div>
|
||||
</van-action-sheet>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
function getQueryString(name) {
|
||||
@@ -446,15 +545,21 @@ layout("/mobile/platform.html"){
|
||||
return null;
|
||||
}
|
||||
|
||||
let pdfh5 = null
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
readVisible: false,
|
||||
hasRead: false,
|
||||
clickRead: false,
|
||||
isPdf: false,
|
||||
isLoad: false,
|
||||
active: 0,
|
||||
roomColumns: ['大床房', '标准间'],
|
||||
bedColumns: ['1', '2'],
|
||||
companionColumns: ['亲属', '朋友'],
|
||||
companionColumns: ['配偶', '子女'],
|
||||
bedVisible: false,
|
||||
roomVisible: false,
|
||||
companionVisible: false,
|
||||
@@ -483,7 +588,32 @@ layout("/mobile/platform.html"){
|
||||
configData: {},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue?v=' + new Date().getTime()),
|
||||
},
|
||||
methods: {
|
||||
openRead() {
|
||||
this.readVisible = true
|
||||
this.$nextTick(() => {
|
||||
if(this.configData.files && this.configData.files.length > 0) {
|
||||
const pdf = new Pdfh5('#readFile', {
|
||||
pdfurl: CREATE_PREVIEW_URL(this.configData.files[0].id),
|
||||
})
|
||||
this.readPDFPicture(pdf)
|
||||
}
|
||||
})
|
||||
},
|
||||
onRead() {
|
||||
this.clickRead = true
|
||||
this.hasRead = true
|
||||
this.readVisible = false
|
||||
},
|
||||
readChange() {
|
||||
if(this.clickRead === false) {
|
||||
this.$toast('请先阅读携带家属须知')
|
||||
this.hasRead = false
|
||||
}
|
||||
},
|
||||
roomCancel() {
|
||||
if (!this.self) {
|
||||
this.formData.companionList[this.active].bedInfo.bedType = ''
|
||||
@@ -510,36 +640,51 @@ layout("/mobile/platform.html"){
|
||||
return value != null
|
||||
},
|
||||
async joinSubmit() {
|
||||
const toast = vant.Toast.loading({
|
||||
duration: 0,
|
||||
forbidClick: true,
|
||||
overlay: true,
|
||||
message: '努力提交中',
|
||||
})
|
||||
const cloneData = clone(this.formData)
|
||||
cloneData.companionList.forEach((item, index) => {
|
||||
if (item.userName === '') {
|
||||
cloneData.companionList.splice(index, 1)
|
||||
if(this.formData.companionList.length > 0) {
|
||||
if(this.hasRead === false) {
|
||||
this.$toast('请先阅读携带家属须知')
|
||||
return
|
||||
}
|
||||
})
|
||||
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/doSignUpForLine', {
|
||||
enroll: JSON.stringify(cloneData),
|
||||
})
|
||||
setTimeout(() => {
|
||||
if (resp.code === 0) {
|
||||
toast.message = '提交成功'
|
||||
toast.type = 'success'
|
||||
} else {
|
||||
toast.message = resp.msg
|
||||
toast.type = 'fail'
|
||||
if(!this.formData.sign) {
|
||||
this.$toast('请签字')
|
||||
return
|
||||
}
|
||||
}
|
||||
vant.Dialog.confirm({
|
||||
title: '温馨提示',
|
||||
message: '确定要报名吗?',
|
||||
}).then(async () => {
|
||||
const toast = vant.Toast.loading({
|
||||
duration: 0,
|
||||
forbidClick: true,
|
||||
overlay: true,
|
||||
message: '努力提交中',
|
||||
})
|
||||
const cloneData = clone(this.formData)
|
||||
cloneData.companionList.forEach((item, index) => {
|
||||
if (item.userName === '') {
|
||||
cloneData.companionList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/doSignUpForLine', {
|
||||
enroll: JSON.stringify(cloneData),
|
||||
})
|
||||
setTimeout(() => {
|
||||
toast.clear()
|
||||
}, 500)
|
||||
if (resp.code === 0) {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index
|
||||
}
|
||||
}, 1000)
|
||||
if (resp.code === 0) {
|
||||
toast.message = '提交成功'
|
||||
toast.type = 'success'
|
||||
} else {
|
||||
toast.message = resp.msg
|
||||
toast.type = 'fail'
|
||||
}
|
||||
setTimeout(() => {
|
||||
toast.clear()
|
||||
}, 500)
|
||||
if (resp.code === 0) {
|
||||
pjaxReplace('/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index)
|
||||
}
|
||||
}, 1000)
|
||||
})
|
||||
},
|
||||
addCompanion() {
|
||||
this.formData.companionList.push({userName: '', loginName: '', sex: '', relation: '', bedInfo: {}})
|
||||
@@ -557,19 +702,21 @@ layout("/mobile/platform.html"){
|
||||
}),
|
||||
})
|
||||
if (re.code !== 0) {
|
||||
if(re.msg === '您今年已报名,如要继续报名请进入我的疗休养,取消已选择') {
|
||||
if (re.msg === '您今年已报名,如要继续报名请进入我的疗休养,取消已选择') {
|
||||
vant.Dialog.confirm({
|
||||
title: '温馨提示',
|
||||
message: re.msg,
|
||||
confirmButtonText: '跳转页面',
|
||||
}).then(() => {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index
|
||||
}).catch(() => {});
|
||||
}).catch(() => {
|
||||
});
|
||||
} else {
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: re.msg,
|
||||
}).then(() => {})
|
||||
}).then(() => {
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -641,6 +788,34 @@ layout("/mobile/platform.html"){
|
||||
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
|
||||
this.configData = resp.data
|
||||
},
|
||||
readPDFPicture(pdf) {
|
||||
if(pdf != null) {
|
||||
pdf.on("complete", function () {
|
||||
const imgDoc = document.querySelectorAll('img')
|
||||
let array = []
|
||||
let classArray = []
|
||||
imgDoc.forEach(o => {
|
||||
if(o.getAttribute('class') !== 'top_icon') {
|
||||
classArray.push(o.getAttribute('class'))
|
||||
array.push(o.getAttribute('src'))
|
||||
}
|
||||
})
|
||||
document.addEventListener('click', function (event) {
|
||||
// 打印被点击的元素标签名和 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,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.id = getQueryString('id') ? getQueryString('id') : ''
|
||||
@@ -653,16 +828,37 @@ layout("/mobile/platform.html"){
|
||||
if (this.enrollId) {
|
||||
await this.findSignUpInfoById()
|
||||
}
|
||||
this.getData()
|
||||
await this.getData()
|
||||
this.isLoad = true
|
||||
|
||||
try {
|
||||
const parser = new DOMParser();
|
||||
const doc = parser.parseFromString(this.lineData.content, 'text/html');
|
||||
const link = doc.querySelector('a');
|
||||
const href = link.getAttribute('href');
|
||||
this.$nextTick(() => {
|
||||
pdfh5 = new Pdfh5('#demo', {
|
||||
pdfurl: href,
|
||||
});
|
||||
})
|
||||
}catch (e) {
|
||||
this.isPdf = true
|
||||
document.addEventListener('click', function (event) {
|
||||
// 打印被点击的元素标签名和 class
|
||||
if (event.target.tagName === 'IMG' && event.target.className !== 'top_icon') {
|
||||
vant.ImagePreview({
|
||||
images: [event.target.src],
|
||||
closeable: true,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.readPDFPicture(pdfh5)
|
||||
})
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('scroll', this.scrollToTop)
|
||||
document.addEventListener('click', function (event) {
|
||||
// 打印被点击的元素标签名和 class
|
||||
if (event.target.tagName === 'IMG' && event.target.className !== 'top_icon') {
|
||||
vant.ImagePreview([event.target.src])
|
||||
}
|
||||
})
|
||||
},
|
||||
destroyed() {
|
||||
window.removeEventListener('scroll', this.scrollToTop)
|
||||
|
||||
@@ -3,6 +3,10 @@ layout("/mobile/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
|
||||
#app {
|
||||
font-family: 微软雅黑, serif;
|
||||
}
|
||||
|
||||
.van-doc-card {
|
||||
margin: 10px;
|
||||
padding: 12px 12px 12px 12px;
|
||||
@@ -29,7 +33,6 @@ layout("/mobile/platform.html"){
|
||||
.list-card > .content {
|
||||
padding: 16px 10px;
|
||||
display: flex;
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
.content-right {
|
||||
@@ -77,19 +80,21 @@ layout("/mobile/platform.html"){
|
||||
|
||||
.footer {
|
||||
background-color: white;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
align-items: center;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.footer .van-button {
|
||||
height: 34px;
|
||||
height: 30px;
|
||||
font-size: 12px;
|
||||
border-radius: 6px;
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
||||
.van-divider {
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.active {
|
||||
@@ -122,6 +127,20 @@ layout("/mobile/platform.html"){
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.sign_button .van-button {
|
||||
width: 74px;
|
||||
height: 28px;
|
||||
color: white;
|
||||
background: rgb(24, 103, 176);
|
||||
border-color: rgb(24, 103, 176);
|
||||
font-size: 12px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
@@ -129,10 +148,10 @@ layout("/mobile/platform.html"){
|
||||
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar>
|
||||
</van-sticky>
|
||||
|
||||
<van-dropdown-menu>
|
||||
<!--<van-dropdown-menu>
|
||||
<van-dropdown-item v-model="pageForm.year" :options="yearArray"
|
||||
@change="doSearch"></van-dropdown-item>
|
||||
</van-dropdown-menu>
|
||||
</van-dropdown-menu>-->
|
||||
|
||||
<!--按钮导航-->
|
||||
<div class="choose_button van-doc-card">
|
||||
@@ -145,20 +164,42 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
</van-grid-item>
|
||||
</van-grid>
|
||||
|
||||
<van-divider></van-divider>
|
||||
|
||||
<div class="footer" v-if="['0', '1', 0 , 1].includes(pageForm.theRapyRecuperationType)">
|
||||
<van-button :class="pageForm.lineUnionType == 3 ? 'active' : 'no_active'"
|
||||
@click="pageForm.lineUnionType = 3; getData()">
|
||||
校工会组织
|
||||
</van-button>
|
||||
<van-button :class="pageForm.lineUnionType == 1 ? 'active' : 'no_active'"
|
||||
@click="pageForm.lineUnionType = 1; getData()">
|
||||
本分工会
|
||||
</van-button>
|
||||
<van-button :class="pageForm.lineUnionType == 2 ? 'active' : 'no_active'"
|
||||
@click="otherUnionClick">
|
||||
其他分工会
|
||||
</van-button>
|
||||
<van-button :class="pageForm.lineUnionType == 4 ? 'active' : 'no_active'"
|
||||
@click="pageForm.lineUnionType = 4; getData()">
|
||||
个人组织
|
||||
</van-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<van-list
|
||||
:finished="finished"
|
||||
:immediate-check="true"
|
||||
@load="onLoad"
|
||||
finished-text="没有更多了"
|
||||
@load="onLoad"
|
||||
v-model="loading">
|
||||
<div @click.stop="findOne(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">
|
||||
<van-image
|
||||
height="100"
|
||||
radius="8"
|
||||
:src="APP_DOMAIN + '/file_server/fileStreamPreview?id=' + o.fileId"
|
||||
:src="CREATE_PREVIEW_URL(o.fileId)"
|
||||
width="150">
|
||||
</van-image>
|
||||
<div v-if="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3'"
|
||||
@@ -166,22 +207,30 @@ layout("/mobile/platform.html"){
|
||||
<div class="cr-title">
|
||||
<span>{{o.lineName}}</span>
|
||||
<div>
|
||||
<van-tag color="#1867b0">{{o.lotName}}</van-tag>
|
||||
<van-tag color="#1867b0">{{o.signUpMode === 2 ? '校工会' :
|
||||
o.usUnionName}}
|
||||
</van-tag>
|
||||
<van-tag color="#1867b0">{{o.travelAgencyPlace}}</van-tag>
|
||||
<van-tag v-if="o.signUpMode === 1" color="#1867b0">{{o.usUnionName}}</van-tag>
|
||||
<van-tag v-if="o.signUpMode === 2" color="#1867b0">{{'校工会'}}</van-tag>
|
||||
<van-tag v-if="o.signUpMode === 3" color="#1867b0">{{o.selectUserName}}</van-tag>
|
||||
</div>
|
||||
</div>
|
||||
<div class="desc_info">
|
||||
<!--<div class="union">
|
||||
<span>组织形式:</span>{{o.createMode === 2 && o.signUpMode === 2 ? '校工会' : o.usUnionName}}
|
||||
</div>-->
|
||||
<div class="concat">
|
||||
<div class="concat" v-if="modifyConfig.familyInfo == 2">
|
||||
<span>已报人数:</span>{{o.signUpUserNum + o.signUpUserFamilyNum + '(家属' +
|
||||
o.signUpUserFamilyNum + '人)'}}
|
||||
</div>
|
||||
<div class="mobile" style="color: red">
|
||||
<span>出行时间:</span>{{moment(o.playStartTime).format('YYYY-MM-DD')}}
|
||||
|
||||
<div class="concat" v-else>
|
||||
<!--<span>已报人数:</span>{{o.signUpUserNum + o.familyNumber + '(家属' +
|
||||
o.familyNumber + '人)'}}-->
|
||||
<span>联 系 人:</span>{{o.contact}}
|
||||
</div>
|
||||
|
||||
<div class="mobile">
|
||||
<!--<span>出行时间:</span>{{moment(o.playStartTime).format('YYYY-MM-DD')}}-->
|
||||
<span>联系方式:</span>{{o.contactMobileNumber}}
|
||||
</div>
|
||||
<div class="mobile">
|
||||
<span>旅 行 社:</span>{{o.travelAgencyName}}
|
||||
@@ -244,22 +293,6 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
</van-list>
|
||||
|
||||
<div class="footer"
|
||||
v-if="['0', '1', 0 , 1].includes(pageForm.theRapyRecuperationType)">
|
||||
<van-button :class="pageForm.lineUnionType == 2 ? 'active' : 'no_active'"
|
||||
@click="otherUnionClick">
|
||||
其他工会
|
||||
</van-button>
|
||||
<van-button :class="pageForm.lineUnionType == 1 ? 'active' : 'no_active'"
|
||||
@click="pageForm.lineUnionType = 1; getData()">
|
||||
本工会
|
||||
</van-button>
|
||||
<van-button :class="pageForm.lineUnionType == 3 ? 'active' : 'no_active'"
|
||||
@click="pageForm.lineUnionType = 3; getData()">
|
||||
校工会
|
||||
</van-button>
|
||||
</div>
|
||||
|
||||
<van-popup position="bottom" round v-model:show="unionPop">
|
||||
<van-picker
|
||||
title="选择分工会" show-toolbar
|
||||
@@ -268,6 +301,30 @@ layout("/mobile/platform.html"){
|
||||
@cancel="unionPop = false"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-action-sheet
|
||||
v-model="selectLinePopup"
|
||||
cancel-text="取消"
|
||||
:description="clickRow.lineName"
|
||||
close-on-click-action>
|
||||
<button @click="onSelect(item)" v-for="(item,index) in selectLineList" type="button"
|
||||
class="van-action-sheet__item">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center">
|
||||
<div>
|
||||
<div class="van-action-sheet__name">{{item.name}}</div>
|
||||
<div class="van-action-sheet__name">{{item.playTime}}</div>
|
||||
<div class="van-action-sheet__subname">{{item.subname}}</div>
|
||||
</div>
|
||||
<div class="sign_button">
|
||||
<van-button @click.stop="onSelect(item)" size="mini" type="info"
|
||||
style="margin-right: 8px">
|
||||
点击报名
|
||||
</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
</van-action-sheet>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
@@ -279,7 +336,6 @@ layout("/mobile/platform.html"){
|
||||
}
|
||||
|
||||
|
||||
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [mobileMixins],
|
||||
@@ -291,20 +347,52 @@ layout("/mobile/platform.html"){
|
||||
chooseButton: [],
|
||||
pageForm: {
|
||||
theRapyRecuperationType: 0,
|
||||
lineUnionType: 1,
|
||||
//lineUnionType: 1,
|
||||
unionId: "${@shiro.getPrincipalProperty('union').getId()}",
|
||||
year: new Date().getFullYear()
|
||||
year: null
|
||||
},
|
||||
loading: false,
|
||||
finished: false,
|
||||
refreshing: false,
|
||||
lineData: {},
|
||||
modifyConfig: {},
|
||||
clickRow: {},
|
||||
selectLineList: [],
|
||||
selectLinePopup: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async clickLineRow(o) {
|
||||
this.clickRow = o
|
||||
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/getSelectLineById',
|
||||
{
|
||||
lineId: o.lineId,
|
||||
unionId: this.pageForm.unionId,
|
||||
theRapyRecuperationType: this.pageForm.theRapyRecuperationType,
|
||||
lineUnionType: this.pageForm.lineUnionType,
|
||||
}
|
||||
)
|
||||
this.selectLineList = resp.data
|
||||
this.selectLineList.forEach((item, index) => {
|
||||
item.name = '出行时间' + (index + 1) + ' :' + item.playStartTime
|
||||
if (this.modifyConfig.familyInfo == 2) {
|
||||
item.subname = '已报人数:'
|
||||
+ (item.signUpUserNum + item.signUpUserFamilyNum)
|
||||
+ '(家属' + item.signUpUserFamilyNum + '人)'
|
||||
} else {
|
||||
item.subname = '已报人数:'
|
||||
+ (item.signUpUserNum + item.signUpUserFamilyNum)
|
||||
+ '(家属' + item.familyNumber + '人)'
|
||||
}
|
||||
})
|
||||
this.selectLinePopup = true
|
||||
},
|
||||
onSelect(item) {
|
||||
this.findOne(item)
|
||||
},
|
||||
otherUnionClick() {
|
||||
if(this.unionColumns.length === 0) {
|
||||
vant.Toast('暂时没有工会公开线路')
|
||||
if (this.unionColumns.length === 0) {
|
||||
vant.Toast('暂时没有其他分工会公开线路')
|
||||
return
|
||||
}
|
||||
this.pageForm.lineUnionType = 2
|
||||
@@ -349,7 +437,7 @@ layout("/mobile/platform.html"){
|
||||
toast.clear()
|
||||
}, 500)
|
||||
if (resp.code === 0) {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.pageForm.theRapyRecuperationType
|
||||
pjaxReplace('/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.pageForm.theRapyRecuperationType)
|
||||
}
|
||||
}, 1000)
|
||||
},
|
||||
@@ -362,20 +450,20 @@ layout("/mobile/platform.html"){
|
||||
const type = Number(this.pageForm.theRapyRecuperationType)
|
||||
localStorage.setItem("clickIndex", JSON.stringify({clickIndex: type}))
|
||||
if (type !== 2 && type !== 3) {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/lineInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType
|
||||
+ '&takePartInUnionId=' + o.takePartInUnionId
|
||||
pjaxReplace('/platform/mobile/theRapyRecuperation/lineInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType
|
||||
+ '&takePartInUnionId=' + o.takePartInUnionId)
|
||||
} else if (type === 3) {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/baseInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType
|
||||
pjaxReplace('/platform/mobile/theRapyRecuperation/baseInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType)
|
||||
}
|
||||
},
|
||||
getData() {
|
||||
async getData() {
|
||||
this.loading = true
|
||||
if (this.pageForm.lineUnionType === 1) {
|
||||
this.pageForm.unionId = "${@shiro.getPrincipalProperty('union').getId()}"
|
||||
}
|
||||
this.pageForm.pageNumber = 1
|
||||
this.tableData = []
|
||||
this.onLoad()
|
||||
await this.onLoad()
|
||||
},
|
||||
async onLoad() {
|
||||
const res = await $.post('/platform/theRapyRecuperation/line/enroll/pageData', this.pageForm)
|
||||
@@ -385,6 +473,7 @@ layout("/mobile/platform.html"){
|
||||
if (this.tableData.length === res.data.totalCount) {
|
||||
this.finished = true
|
||||
} else {
|
||||
this.finished = false
|
||||
this.pageForm.pageNumber++
|
||||
}
|
||||
}
|
||||
@@ -394,6 +483,7 @@ layout("/mobile/platform.html"){
|
||||
for (let i = 2023; i <= 2043; i++) {
|
||||
this.yearArray.push({value: i, text: i + '年'})
|
||||
}
|
||||
this.yearArray.unshift({value: null, text: '全部'})
|
||||
},
|
||||
async getTheRapyUnions() {
|
||||
const resp = await $.get('/platform/theRapyRecuperation/line/enroll/getTheRapyUnions', {
|
||||
@@ -401,18 +491,31 @@ layout("/mobile/platform.html"){
|
||||
})
|
||||
return resp.data
|
||||
},
|
||||
async getModifyConfig() {
|
||||
const res = await $.post('/platform/theRapyRecuperation/TheRapyConfig/findOne')
|
||||
if (res.code === 0) {
|
||||
this.modifyConfig = res.data
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
if (localStorage.getItem('clickIndex') !== null) {
|
||||
const clickIndex = localStorage.getItem('clickIndex')
|
||||
this.pageForm.theRapyRecuperationType = JSON.parse(clickIndex).clickIndex
|
||||
}
|
||||
/*if(this.pageForm.theRapyRecuperationType == 1){
|
||||
this.$set(this.pageForm, 'lineUnionType', 3)
|
||||
}*/
|
||||
},
|
||||
async created() {
|
||||
this.createYear()
|
||||
const clickIndex = localStorage.getItem('clickIndex')
|
||||
this.pageForm.theRapyRecuperationType = JSON.parse(clickIndex).clickIndex
|
||||
await this.getModifyConfig()
|
||||
this.chooseButton = await getEnumOptions('TheRapyRecuperationType')
|
||||
this.chooseButton = this.chooseButton.filter(o => o.value !== 2 && o.value !== 3)
|
||||
const unions = await this.getTheRapyUnions()
|
||||
unions.forEach(item => {
|
||||
this.unionColumns.push({text: item.unionname, value: item.id})
|
||||
})
|
||||
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -29,7 +29,6 @@ layout("/mobile/platform.html"){
|
||||
.list-card > .content {
|
||||
padding: 16px 10px 8px;
|
||||
display: flex;
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
.content-right {
|
||||
@@ -72,21 +71,28 @@ layout("/mobile/platform.html"){
|
||||
|
||||
.footer {
|
||||
background-color: white;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
align-items: center;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.footer .van-button {
|
||||
height: 34px;
|
||||
height: 30px;
|
||||
font-size: 12px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.evaluateVisible .van-button {
|
||||
height: 30px;
|
||||
font-size: 12px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.van-divider {
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.active {
|
||||
background-color: #1867b0;
|
||||
color: white;
|
||||
@@ -172,11 +178,59 @@ layout("/mobile/platform.html"){
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.evaluateVisible {
|
||||
width: 100%;
|
||||
height: 80%;
|
||||
}
|
||||
|
||||
.title_container {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
padding: 9px;
|
||||
}
|
||||
|
||||
.title {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
.line_info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.evaluate_item_content {
|
||||
display: flex;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.evaluate_item {
|
||||
padding: 6px 20px;
|
||||
border: 1px grey solid;
|
||||
text-align: center;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.evaluate_active {
|
||||
background-color: #07C160;
|
||||
color: white;
|
||||
border-color: #07C160;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<van-sticky>
|
||||
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder
|
||||
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder
|
||||
title="我的疗休养"></van-nav-bar>
|
||||
</van-sticky>
|
||||
|
||||
@@ -188,7 +242,7 @@ layout("/mobile/platform.html"){
|
||||
<!--按钮导航-->
|
||||
<div class="choose_button van-doc-card">
|
||||
<van-grid :column-num="chooseButton.length" :border="false">
|
||||
<van-grid-item @click="pageForm.theRapyRecuperationType = item.value; doSearch()"
|
||||
<van-grid-item @click="pageForm.theRapyRecuperationType = item.value;doSearch()"
|
||||
v-for="item in chooseButton">
|
||||
<van-image width="46" height="46" :src="item.imgUrl"></van-image>
|
||||
<div :style="pageForm.theRapyRecuperationType == item.value ? 'color: #1867b0; font-weight: bold' : 'color: black; font-weight: normal'"
|
||||
@@ -196,6 +250,14 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
</van-grid-item>
|
||||
</van-grid>
|
||||
|
||||
<van-divider></van-divider>
|
||||
|
||||
<div class="footer">
|
||||
<van-button @click="pageForm.signUpStateId = 1; getData()" :class="pageForm.signUpStateId == 1 ? 'active' : 'no_active'">已报名</van-button>
|
||||
<van-button @click="pageForm.signUpStateId = 2; getData()" :class="pageForm.signUpStateId == 2 ? 'active' : 'no_active'">已参加</van-button>
|
||||
<van-button @click="pageForm.signUpStateId = 3; getData()" :class="pageForm.signUpStateId == 3 ? 'active' : 'no_active'">未参加</van-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-list
|
||||
@@ -209,7 +271,7 @@ layout("/mobile/platform.html"){
|
||||
<van-image
|
||||
height="100"
|
||||
radius="8"
|
||||
:src="APP_DOMAIN + '/file_server/fileStreamPreview?id=' + o.fileId"
|
||||
:src="CREATE_PREVIEW_URL(o.fileId)"
|
||||
width="150"
|
||||
></van-image>
|
||||
|
||||
@@ -241,7 +303,8 @@ layout("/mobile/platform.html"){
|
||||
<span>联系方式:</span>{{o.contactMobileNumber}}
|
||||
</div>
|
||||
<div class="mobile" v-if="![2715,2725,2735].includes(o.stateId)">
|
||||
<span>随行家属:</span>{{o.companionUserNames ? o.companionUserNames : '无'}}
|
||||
<span v-if="configData.familyInfo === 1">随行家属:</span>{{o.companionUserNames ? o.companionUserNames : '无'}}
|
||||
<span v-else>随行家属:</span>{{o.familyNumber}}人
|
||||
</div>
|
||||
<div class="mobile" v-else>
|
||||
<span>审核状态:</span><span :style="'color: ' + o.stateColor">{{o.stateName}}</span>
|
||||
@@ -295,6 +358,9 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
|
||||
<div class="operateDiv">
|
||||
<van-button v-if="pageForm.signUpStateId == 2" @click="openEvaluate(o)" type="info" size="small" color="#1867b0">
|
||||
评 价
|
||||
</van-button>
|
||||
<van-button v-if="pageForm.theRapyRecuperationType != '2' && moment().unix() < moment(o.changeEndTime).unix()
|
||||
&& ![2715,2725,2735].includes(o.stateId)" @click="edit(o)"
|
||||
type="info" size="small" color="#1867b0" :disabled="o.isTakePartIn == true || getDisabled(o)">
|
||||
@@ -302,21 +368,15 @@ layout("/mobile/platform.html"){
|
||||
</van-button>
|
||||
<van-button type="info" size="small" color="#1867b0" @click="cancel(o)"
|
||||
:disabled="getDisabled(o)">
|
||||
取 消
|
||||
撤 销
|
||||
</van-button>
|
||||
<van-button v-if="o.isTakePartIn == true" type="info" size="small" color="#1867b0"
|
||||
@click="satisfaction(o)">满意度反馈</van-button>
|
||||
<!--<van-button v-if="o.isTakePartIn == true" type="info" size="small" color="#1867b0"
|
||||
@click="satisfaction(o)">满意度反馈</van-button>-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</van-list>
|
||||
|
||||
<div class="footer">
|
||||
<van-button @click="pageForm.signUpStateId = 1; getData()" :class="pageForm.signUpStateId == 1 ? 'active' : 'no_active'">已报名</van-button>
|
||||
<van-button @click="pageForm.signUpStateId = 2; getData()" :class="pageForm.signUpStateId == 2 ? 'active' : 'no_active'">已参加</van-button>
|
||||
<van-button @click="pageForm.signUpStateId = 3; getData()" :class="pageForm.signUpStateId == 3 ? 'active' : 'no_active'">未参加</van-button>
|
||||
</div>
|
||||
|
||||
<van-popup class="popVisible" position="right" v-model="popVisible">
|
||||
<van-nav-bar @click-left="popVisible = false" fixed left-arrow placeholder title="满意度评分"></van-nav-bar>
|
||||
<div class="cus_content">
|
||||
@@ -352,14 +412,45 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
</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>
|
||||
<van-action-sheet title="参加体验评价" v-model="evaluatePopup">
|
||||
<div class="evaluateForm">
|
||||
|
||||
<div style="text-align: center;margin: 20px 0;font-size: 20px;color: #f18d8d;font-weight: bold;">
|
||||
您的评价让我们做的更好
|
||||
</div>
|
||||
|
||||
<div style="display: flex;justify-content: center;flex-direction: column;align-items: center">
|
||||
<div style="text-align: center;font-size: 13px;color: rgb(139 134 134); margin-bottom: 10px">为本次疗休养打分
|
||||
</div>
|
||||
<div class="evaluate_item_content">
|
||||
<div class="evaluate_item" @click="evaluateClick('满意', 1)">满意</div>
|
||||
<div class="evaluate_item" @click="evaluateClick('一般', 2)">一般</div>
|
||||
<div class="evaluate_item" @click="evaluateClick('不满意', 3)">不满意</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-field
|
||||
autosize
|
||||
class="evaluateTextField"
|
||||
label="评价"
|
||||
label-width="0"
|
||||
maxlength="100"
|
||||
placeholder="请输入评价"
|
||||
rows="5"
|
||||
type="textarea"
|
||||
v-model="evaluateFormData.evaluateText"
|
||||
>
|
||||
<div slot="label"></div>
|
||||
</van-field>
|
||||
</div>
|
||||
<div style="padding: 10px 16px">
|
||||
<van-button @click="doSubmitEvaluate"
|
||||
block
|
||||
type="primary"
|
||||
>提交
|
||||
</van-button>
|
||||
</div>
|
||||
</van-action-sheet>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
@@ -376,23 +467,81 @@ layout("/mobile/platform.html"){
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
evaluateFormData: {},
|
||||
evaluatePopup: false,
|
||||
yearArray: [],
|
||||
popVisible: false,
|
||||
chooseButton: [],
|
||||
pageForm: {
|
||||
theRapyRecuperationType: null,
|
||||
signUpStateId: 1,
|
||||
year: null,
|
||||
year: new Date().getFullYear(),
|
||||
},
|
||||
loading: false,
|
||||
finished: false,
|
||||
refreshing: false,
|
||||
satisfactionForm: {},
|
||||
configData: {},
|
||||
tarBarActive: 1
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openEvaluate(o) {
|
||||
if(o.isTakePartIn === false) {
|
||||
this.$modal.msg("参加后才能评价")
|
||||
return
|
||||
}
|
||||
await this.finOneEvaluate(o.takePartInLineId)
|
||||
this.evaluatePopup = true
|
||||
this.$nextTick(() => {
|
||||
let score = 1
|
||||
if (this.evaluateFormData.evaluateScore === '满意') {
|
||||
score = 1
|
||||
} else if (this.evaluateFormData.evaluateScore === '一般') {
|
||||
score = 2
|
||||
} else if (this.evaluateFormData.evaluateScore === '不满意') {
|
||||
score = 3
|
||||
}
|
||||
this.evaluateClick(this.evaluateFormData.evaluateScore, score)
|
||||
})
|
||||
},
|
||||
evaluateClick(value, index) {
|
||||
this.evaluateFormData.evaluateScore = value
|
||||
const elements = document.querySelectorAll('.evaluate_item')
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
if(index === (i + 1)) {
|
||||
elements[i].classList.add('evaluate_active')
|
||||
} else {
|
||||
elements[i].classList.remove('evaluate_active')
|
||||
}
|
||||
}
|
||||
},
|
||||
async finOneEvaluate(lineId) {
|
||||
const {data, code, msg} = await $.post("/platform/theRapyRecuperation/line/enroll/finOneEvaluate", {
|
||||
lineId: lineId,
|
||||
})
|
||||
if (code === 0) {
|
||||
if (data) {
|
||||
this.evaluateFormData = data
|
||||
} else {
|
||||
this.evaluateFormData = {lineId: lineId}
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(msg)
|
||||
}
|
||||
},
|
||||
async doSubmitEvaluate() {
|
||||
if (!this.evaluateFormData.evaluateScore) {
|
||||
this.$modal.msg("请为本次疗休养评分")
|
||||
return
|
||||
}
|
||||
const {code, data, msg} = await $.post('/platform/theRapyRecuperation/line/enroll/doEvaluate', this.evaluateFormData)
|
||||
if (code === 0) {
|
||||
this.$modal.msgSuccess("评价成功")
|
||||
this.evaluatePopup = false
|
||||
} else {
|
||||
this.$modal.msgError(msg)
|
||||
}
|
||||
},
|
||||
getDisabled(o) {
|
||||
if(o.regionalNature === '省内') {
|
||||
return this.configData.isSnLine && o.stateId === 2750
|
||||
@@ -465,11 +614,11 @@ layout("/mobile/platform.html"){
|
||||
}
|
||||
vant.Dialog.confirm({
|
||||
title: '温馨提醒',
|
||||
message: '您确定要取消此报名吗?',
|
||||
message: '您确定要撤销此报名吗?',
|
||||
}).then(async () => {
|
||||
const res = await $.post('/platform/theRapyRecuperation/line/enroll/doDeleteMyEnrollInfoById/' + o.id)
|
||||
if(res.code === 0) {
|
||||
vant.Toast('取消成功')
|
||||
vant.Toast('撤销成功')
|
||||
this.getData()
|
||||
}else {
|
||||
vant.Toast(res.msg)
|
||||
@@ -516,8 +665,7 @@ layout("/mobile/platform.html"){
|
||||
},
|
||||
async created() {
|
||||
this.createYear()
|
||||
this.yearArray.unshift({value: null, text: '全部'})
|
||||
this.pageForm.year = new Date().getFullYear()
|
||||
this.yearArray.unshift({value: null, text: '所有年度'})
|
||||
this.pageForm.theRapyRecuperationType = getQueryString('index') ? getQueryString('index') : await this.getType()
|
||||
this.chooseButton = await getEnumOptions('TheRapyRecuperationType')
|
||||
this.chooseButton = this.chooseButton.filter(o => o.value !== 2 && o.value !== 3)
|
||||
|
||||
Reference in New Issue
Block a user