commit
This commit is contained in:
@@ -236,6 +236,7 @@ layout("/mobile/platform.html"){
|
||||
this.id = item.id
|
||||
this.formData.username = this.user.username
|
||||
this.formData.auditTime = moment().format('YYYY-MM-DD')
|
||||
this.formData.unionName = null
|
||||
this.infoShow = true
|
||||
this.showApprovalForm = true
|
||||
this.$nextTick(() => {
|
||||
|
||||
@@ -257,17 +257,28 @@ layout("/mobile/platform.html"){
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消"
|
||||
}).then(async () => {
|
||||
const formData = this.formData
|
||||
if (this.formData.families) {
|
||||
formData.families = JSON.stringify(this.formData.families)
|
||||
const formData = JSON.parse(JSON.stringify(this.formData))
|
||||
if (formData.families) {
|
||||
formData.families = JSON.stringify(formData.families)
|
||||
}
|
||||
const resp = await $.post('/platform/member/apply/submit/doSave', formData)
|
||||
if (resp.code === 0) {
|
||||
this.$toast.success('操作成功')
|
||||
this.user.member = true
|
||||
pjaxReplace('/platform/member/apply/mine/h5')
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: '您已成功【保存】申请,请耐心等待相关负责人审核',
|
||||
}).then(() => {
|
||||
this.user.member = true
|
||||
pjaxReplace('/platform/member/apply/mine/h5')
|
||||
});
|
||||
// this.$toast.success('操作成功')
|
||||
// this.user.member = true
|
||||
// pjaxReplace('/platform/member/apply/mine/h5')
|
||||
} else {
|
||||
this.$toast.fail(resp.msg)
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: resp.msg,
|
||||
})
|
||||
// this.$toast.fail(resp.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -288,17 +299,24 @@ layout("/mobile/platform.html"){
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消"
|
||||
}).then(async () => {
|
||||
const formData = this.formData
|
||||
if (this.formData.families) {
|
||||
formData.families = JSON.stringify(this.formData.families)
|
||||
const formData = JSON.parse(JSON.stringify(this.formData))
|
||||
if (formData.families) {
|
||||
formData.families = JSON.stringify(formData.families)
|
||||
}
|
||||
const resp = await $.post('/platform/member/apply/submit/doSubmit', formData)
|
||||
if (resp.code === 0) {
|
||||
this.$toast.success('操作成功')
|
||||
this.user.member = true
|
||||
pjaxReplace('/platform/member/apply/mine/h5')
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: '您已成功【提交】申请,请耐心等待相关负责人审核',
|
||||
}).then(() => {
|
||||
this.user.member = true
|
||||
pjaxReplace('/platform/member/apply/mine/h5')
|
||||
});
|
||||
} else {
|
||||
this.$toast.fail(resp.msg)
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: resp.msg,
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
|
||||
<link rel="stylesheet" href="${base!}/assets/mobile/css/theme.css">
|
||||
<link rel="stylesheet" href="${base!}/assets/mobile/css/main.css">
|
||||
|
||||
<link rel="stylesheet" href="${base!}/assets/mobile/css/pdfh5.css">
|
||||
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/vant/vant.css?v=1.0.1">
|
||||
|
||||
<script>
|
||||
@@ -56,6 +59,11 @@
|
||||
<script type="text/javascript"
|
||||
src="https://webapi.amap.com/maps?v=2.0&key=57f0d098ba1b881ecc436c4cfd23bbbf&plugin=AMap.PolyEditor,AMap.Geolocation"></script>
|
||||
|
||||
<!-- pdf -->
|
||||
<script src="${base!}/assets/mobile/js/pdf/pdf.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="${base!}/assets/mobile/js/pdf/pdf.worker.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script src="${base!}/assets/mobile/js/pdf/pdfh5.js" type="text/javascript" charset="utf-8"></script>
|
||||
|
||||
<!--字典混入-->
|
||||
<script src="${base!}/components/plugins/sysDict/DictData.js"></script>
|
||||
|
||||
|
||||
@@ -370,7 +370,6 @@ layout("/mobile/platform.html"){
|
||||
}
|
||||
} else if (v.itx === 2) {
|
||||
if (v.rval) {
|
||||
debugger
|
||||
formData.push({
|
||||
"rwid": v.wors[0].wid,
|
||||
"rval": v.rval,
|
||||
|
||||
@@ -17,7 +17,9 @@ layout("/mobile/platform.html"){
|
||||
|
||||
.content {
|
||||
line-height: 26px;
|
||||
padding: 0px 20px 56px 20px;
|
||||
padding: 0 20px 56px 20px;
|
||||
max-height: calc(100vh - 46px - 210px - 60px - 24px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -159,9 +161,9 @@ layout("/mobile/platform.html"){
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.header div span {
|
||||
color: grey;
|
||||
}
|
||||
/*.header div span {*/
|
||||
/* color: grey;*/
|
||||
/*}*/
|
||||
|
||||
.header :last-child {
|
||||
font-size: 14px;
|
||||
@@ -195,6 +197,11 @@ layout("/mobile/platform.html"){
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.pdf_div {
|
||||
padding-bottom: 70px;
|
||||
height: calc(100vh - 46px - 170px - 60px - 24px);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
@@ -235,8 +242,11 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
</div>
|
||||
<van-divider></van-divider>
|
||||
<div v-if="baseData.content" v-html="baseData.content" class="content"></div>
|
||||
<div v-else v-html="configData.notice" class="content"></div>
|
||||
<!-- <div v-if="baseData.content" v-html="baseData.content" class="content"></div>-->
|
||||
<!-- <div v-else v-html="configData.notice" class="content"></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>
|
||||
<!--<van-empty
|
||||
v-else class="custom-image"
|
||||
image="https://img01.yzcdn.cn/vant/custom-empty-image.png"
|
||||
@@ -254,11 +264,13 @@ layout("/mobile/platform.html"){
|
||||
<div class="footer" v-if="fromUrlByMy != 'edit'">
|
||||
<template v-if="baseData.isNormal==0&&baseData.isNormalFalse>0">
|
||||
<van-button @click="join"
|
||||
class="join">我要报名
|
||||
class="join">
|
||||
{{ (fromUrlByMy == 'editDo') ? '修改报名' : '我要报名' }}
|
||||
</van-button>
|
||||
</template>
|
||||
<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">
|
||||
{{ (fromUrlByMy == 'editDo') ? '修改报名' : '我要报名' }}
|
||||
</van-button>
|
||||
<van-button v-if="moment().unix() > moment(baseData.signUpEndTime).unix()" class="join">报名结束</van-button>
|
||||
</template>
|
||||
@@ -280,8 +292,8 @@ layout("/mobile/platform.html"){
|
||||
<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="身份证件" 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>
|
||||
@@ -293,13 +305,24 @@ layout("/mobile/platform.html"){
|
||||
<div class="van-doc-card" style="margin-bottom: 16px">
|
||||
<div></div>
|
||||
<div class="van-card-header">
|
||||
床位信息
|
||||
房间信息
|
||||
</div>
|
||||
<div class="van-card-body">
|
||||
<van-field @click="self = true; roomVisible = true" readonly is-link label="房间" name="bedType"
|
||||
<van-field :rules="[{ required: true, message: '请选择是否包房' }]" label="是否包房" name="bedType">
|
||||
<template #input>
|
||||
<van-radio-group direction="horizontal" v-model="formData.bedInfo.bedType">
|
||||
<van-radio name="包房" shape="square">包房</van-radio>
|
||||
<van-radio name="不包房" shape="square">不包房</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<div>
|
||||
<span style="color: red;margin-left: 14px;font-size: 14px">包房需自费;不包房两位老师一间且随机分配</span>
|
||||
</div>
|
||||
<!--<van-field @click="self = true; roomVisible = true" readonly is-link label="房间" name="bedType"
|
||||
placeholder="请选择房间" v-model="formData.bedInfo.bedType"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<van-field v-if="formData.bedInfo.bedType == '标准间'" @click="self = true; bedVisible = true"
|
||||
:rules="[{ required: true }]"></van-field>-->
|
||||
<!--<van-field v-if="formData.bedInfo.bedType == '标准间'" @click="self = true; bedVisible = true"
|
||||
readonly is-link label="床位"
|
||||
name="bedNum" placeholder="请选择床位" v-model="formData.bedInfo.bedNum"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
@@ -315,12 +338,12 @@ layout("/mobile/platform.html"){
|
||||
<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>
|
||||
:rules="[{ required: true }]"></van-field>-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--随行人信息-->
|
||||
<div class="van-doc-card" style="margin-bottom: 16px">
|
||||
<div v-if="index != 2" class="van-doc-card" style="margin-bottom: 16px">
|
||||
<div></div>
|
||||
<div class="van-card-header"
|
||||
style="display: flex; justify-content: space-between; align-items: center">
|
||||
@@ -330,62 +353,73 @@ layout("/mobile/platform.html"){
|
||||
<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>
|
||||
|
||||
<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: 8px; 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">
|
||||
<template v-if="configData.familyInfo === 2">
|
||||
<div>
|
||||
<span style="color: red;margin-left: 20px;font-size: 14px">限填写3岁以上70岁以下随行人</span>
|
||||
</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 }]" maxlength="18"
|
||||
@input="getAgeAndSex(item)" 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: 8px; 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>
|
||||
</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="submitButton">
|
||||
@@ -401,7 +435,7 @@ layout("/mobile/platform.html"){
|
||||
<!--房间类型弹出框-->
|
||||
<van-popup position="bottom" round v-model="roomVisible">
|
||||
<van-picker
|
||||
title="入住房间" show-toolbar
|
||||
title="房间信息" show-toolbar
|
||||
:columns="roomColumns"
|
||||
@confirm="roomConfirm"
|
||||
@cancel="roomCancel">
|
||||
@@ -436,16 +470,17 @@ layout("/mobile/platform.html"){
|
||||
if (r != null) return decodeURI(r[2]);
|
||||
return null;
|
||||
}
|
||||
|
||||
let pdfh5 = null
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
isPdf: false,
|
||||
active: 0,
|
||||
roomColumns: ['大床房', '标准间'],
|
||||
roomColumns: ['包房', '默认房间'],
|
||||
bedColumns: ['1', '2'],
|
||||
companionColumns: ['亲属', '朋友'],
|
||||
companionColumns: ['配偶', '子女', '亲属', '其他'],
|
||||
bedVisible: false,
|
||||
roomVisible: false,
|
||||
companionVisible: false,
|
||||
@@ -475,6 +510,18 @@ layout("/mobile/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getAgeAndSex(item){
|
||||
try {
|
||||
const value = item.idCard
|
||||
const age = this.calculateAgeFromIdCard(value)
|
||||
this.$set(item, "age", age)
|
||||
|
||||
const sex = this.getGenderFromIdCard(value)
|
||||
this.$set(item, "sex", sex)
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
},
|
||||
roomCancel() {
|
||||
if (!this.self) {
|
||||
this.formData.companionList[this.active].bedInfo.bedType = ''
|
||||
@@ -501,18 +548,43 @@ 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 (cloneData.companionList) {
|
||||
for (let i = 0; i < cloneData.companionList.length; i++) {
|
||||
const companion = cloneData.companionList[i];
|
||||
// 检查每个字段是否为空
|
||||
if (!companion.userName || !companion.idCard || !companion.mobile || !companion.relation) {
|
||||
this.$toast('请填写完整随行人信息')
|
||||
return
|
||||
}
|
||||
|
||||
// 填了身份证,校验是否正确
|
||||
if (companion.idCard) {
|
||||
if (!this.validateIdCard(companion.idCard)) {
|
||||
this.$toast('随行人'+ (i+1) +'的身份证不正确')
|
||||
return
|
||||
} else {
|
||||
// 判断companion.age,是不是在3到70岁之间,不是就提示
|
||||
if (companion.age < 3 || companion.age > 70) {
|
||||
this.$toast('随行人'+ (i+1) +'的年龄超出限制,请天添加其他联系人')
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const toast = vant.Toast.loading({
|
||||
duration: 0,
|
||||
forbidClick: true,
|
||||
overlay: true,
|
||||
message: '努力提交中',
|
||||
})
|
||||
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/doSignUpForBaseManagement', {
|
||||
enroll: JSON.stringify(cloneData),
|
||||
})
|
||||
@@ -547,7 +619,10 @@ layout("/mobile/platform.html"){
|
||||
}),
|
||||
})
|
||||
if (re.code !== 0) {
|
||||
vant.Toast(re.msg)
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: re.msg,
|
||||
})
|
||||
return
|
||||
}
|
||||
if (this.fromUrlByMy !== 'editDo') {
|
||||
@@ -615,6 +690,105 @@ layout("/mobile/platform.html"){
|
||||
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
|
||||
this.configData = resp.data
|
||||
},
|
||||
calculateAgeFromIdCard(idCard) {
|
||||
// 检查身份证号码是否合法
|
||||
if (!idCard) {
|
||||
throw new Error("Invalid ID card format")
|
||||
}
|
||||
|
||||
let birthDateStr
|
||||
let birthYear, birthMonth, birthDay
|
||||
|
||||
// 处理18位身份证号码
|
||||
if (idCard.length === 18) {
|
||||
birthDateStr = idCard.substring(6, 14)
|
||||
birthYear = parseInt(birthDateStr.substring(0, 4), 10)
|
||||
birthMonth = parseInt(birthDateStr.substring(4, 6), 10) - 1 // 月份从0开始
|
||||
birthDay = parseInt(birthDateStr.substring(6, 8), 10)
|
||||
}
|
||||
// 处理15位身份证号码
|
||||
else if (idCard.length === 15) {
|
||||
birthDateStr = idCard.substring(6, 12)
|
||||
birthYear = parseInt("19" + birthDateStr.substring(0, 2), 10) // 使用字符串拼接
|
||||
birthMonth = parseInt(birthDateStr.substring(2, 4), 10) - 1 // 月份从0开始
|
||||
birthDay = parseInt(birthDateStr.substring(4, 6), 10)
|
||||
} else {
|
||||
throw new Error("Invalid ID card format. Only 15 or 18 digits are supported.")
|
||||
}
|
||||
|
||||
// 获取当前日期
|
||||
const currentDate = new Date()
|
||||
|
||||
// 计算年龄
|
||||
let age = currentDate.getFullYear() - birthYear
|
||||
|
||||
// 如果当前日期还没过生日,则年龄减1
|
||||
if (currentDate.getMonth() < birthMonth || (currentDate.getMonth() === birthMonth && currentDate.getDate() < birthDay)) {
|
||||
age -= 1
|
||||
}
|
||||
|
||||
return age
|
||||
},
|
||||
getGenderFromIdCard(idCard) {
|
||||
// 检查身份证号码是否合法
|
||||
if (!idCard) {
|
||||
throw new Error("Invalid ID card format")
|
||||
}
|
||||
|
||||
let genderDigit
|
||||
|
||||
// 处理18位身份证号码
|
||||
if (idCard.length === 18) {
|
||||
genderDigit = parseInt(idCard.charAt(16), 10) // 第17位
|
||||
}
|
||||
// 处理15位身份证号码
|
||||
else if (idCard.length === 15) {
|
||||
genderDigit = parseInt(idCard.charAt(14), 10) // 第15位
|
||||
} else {
|
||||
throw new Error("Invalid ID card format. Only 15 or 18 digits are supported.")
|
||||
}
|
||||
|
||||
// 判断性别
|
||||
if (genderDigit % 2 === 0) {
|
||||
return "女"
|
||||
} else {
|
||||
return "男"
|
||||
}
|
||||
},
|
||||
validateIdCard(idCard) {
|
||||
if (!idCard) {
|
||||
return false
|
||||
}
|
||||
|
||||
// 18位身份证号码校验
|
||||
if (idCard.length === 18) {
|
||||
const idCardRegex = /^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}(\d|[Xx])$/
|
||||
if (!idCardRegex.test(idCard)) {
|
||||
return false
|
||||
}
|
||||
|
||||
// 校验码计算
|
||||
const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
|
||||
const checksums = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"]
|
||||
let sum = 0
|
||||
for (let i = 0; i < 17; i++) {
|
||||
sum += idCard[i] * weights[i]
|
||||
}
|
||||
const checksum = checksums[sum % 11]
|
||||
return checksum === idCard[17].toUpperCase()
|
||||
}
|
||||
|
||||
// 15位身份证号码校验
|
||||
else if (idCard.length === 15) {
|
||||
const idCardRegex = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/
|
||||
return idCardRegex.test(idCard)
|
||||
}
|
||||
|
||||
// 外国人或其他情况
|
||||
else {
|
||||
return false
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.id = getQueryString('id') ? getQueryString('id') : ''
|
||||
@@ -626,7 +800,58 @@ layout("/mobile/platform.html"){
|
||||
if (this.enrollId) {
|
||||
await this.findSignUpInfoById()
|
||||
}
|
||||
this.getData()
|
||||
await this.getData()
|
||||
|
||||
try {
|
||||
const parser = new DOMParser();
|
||||
const doc = parser.parseFromString(this.baseData.content, 'text/html');
|
||||
console.log(this.baseData)
|
||||
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(() => {
|
||||
pdfh5.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,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('scroll', this.scrollToTop)
|
||||
|
||||
@@ -29,23 +29,28 @@ layout("/mobile/platform.html"){
|
||||
.pre_text {
|
||||
white-space: break-spaces;
|
||||
padding-left: 7px;
|
||||
max-height: calc(80vh - 290px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.pdfjs {
|
||||
height: 90%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<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 class="my-swipe" style="height: 20vh" :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,35 +65,36 @@ 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: 10px; height: calc(80vh - 245px)">
|
||||
<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 v-if="isPdf" class="pre_text" v-html="configData.notice"></div>
|
||||
<div v-else id="demo" class="pdf_div"></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-item icon="home-o" replace url="/platform/mobile/theRapyRecuperation/index">疗休养首页</van-tabbar-item>
|
||||
<van-tabbar-item icon="search" replace url="/platform/mobile/theRapyRecuperation/mobileLineListPage">线路选择</van-tabbar-item>
|
||||
<van-tabbar-item icon="manager-o" replace url="/platform/mobile/theRapyRecuperation/myRecuperation">我的报名</van-tabbar-item>
|
||||
</van-tabbar>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let pdfh5 = null
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
tarBarActive: 0,
|
||||
chooseButton: [],
|
||||
configData: {},
|
||||
tarBarActive: 0,
|
||||
isPdf: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async toLineList(index) {
|
||||
const isExist = await getScopeUser(this.configData.activityGroupId)
|
||||
/*const isExist = await getScopeUser(this.configData.activityGroupId)
|
||||
if (!isExist) {
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
@@ -96,7 +102,7 @@ layout("/mobile/platform.html"){
|
||||
confirmButtonColor: '#1867b0'
|
||||
})
|
||||
return
|
||||
}
|
||||
}*/
|
||||
localStorage.setItem("clickIndex", JSON.stringify({clickIndex: index}))
|
||||
location.href = '/platform/mobile/theRapyRecuperation/mobileLineListPage'
|
||||
},
|
||||
@@ -107,8 +113,58 @@ layout("/mobile/platform.html"){
|
||||
},
|
||||
async created() {
|
||||
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()
|
||||
|
||||
try {
|
||||
const parser = new DOMParser();
|
||||
const doc = parser.parseFromString(this.configData.notice, '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' && !['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 = []
|
||||
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'))
|
||||
}
|
||||
})
|
||||
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,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -3,6 +3,10 @@ layout("/mobile/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
|
||||
#app {
|
||||
font-family: 微软雅黑,serif;
|
||||
}
|
||||
|
||||
.container img {
|
||||
background-size: contain;
|
||||
width: 100%;
|
||||
@@ -11,13 +15,25 @@ layout("/mobile/platform.html"){
|
||||
display: block;
|
||||
}
|
||||
|
||||
.backTop {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding: 20px;
|
||||
padding: 10px 10px 10px 10px;
|
||||
}
|
||||
|
||||
.content {
|
||||
line-height: 26px;
|
||||
padding: 0px 20px 56px 20px;
|
||||
padding: 0 10px 56px 10px;
|
||||
max-height: calc(100vh - 46px - 210px - 60px - 24px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.pdf_div {
|
||||
padding-bottom: 70px;
|
||||
/*height: 800px;*/
|
||||
height: calc(100vh - 46px - 210px - 60px - 24px);
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -195,87 +211,138 @@ layout("/mobile/platform.html"){
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.van-tag {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
</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>{{lineData.estimatedCost}}元</label>
|
||||
</div>
|
||||
<div v-if="configData.familyInfo == 2">
|
||||
<!--<span>当前报名:</span>
|
||||
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '(家属' + lineData.signUpUserFamilyNum
|
||||
+
|
||||
'人)'}}-->
|
||||
<span>当前报名:</span>
|
||||
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '人'}}
|
||||
</div>
|
||||
<div v-else>
|
||||
<span>当前报名:</span>
|
||||
<!--{{lineData.signUpUserNum + lineData.familyNumber + '(家属' + lineData.familyNumber
|
||||
+
|
||||
'人)'}}-->
|
||||
{{lineData.signUpUserNum + lineData.familyNumber + '人'}}
|
||||
</div>
|
||||
<!--<div>
|
||||
<span class="line_label">成团人数包括家属:</span>
|
||||
<label v-if="lineData.estimatedFamilyNumbers">{{lineData.estimatedFamilyNumbers}}人</label>
|
||||
<label v-else>不限制</label>
|
||||
</div>-->
|
||||
</div>
|
||||
|
||||
<div v-else>
|
||||
<div>
|
||||
<span class="line_label">预计费用:</span>
|
||||
<label>{{lineData.estimatedCost}}元</label>
|
||||
</div>
|
||||
<div v-if="configData.familyInfo == 2">
|
||||
<span>当前报名:</span>
|
||||
<!--{{lineData.signUpUserNum + '(家属' + lineData.signUpUserFamilyNum
|
||||
+
|
||||
'人)'}}-->
|
||||
{{lineData.signUpUserNum + '人'}}
|
||||
</div>
|
||||
<div v-else>
|
||||
<span>当前报名:</span>
|
||||
<!--{{lineData.signUpUserNum + '(家属' + lineData.familyNumber
|
||||
+
|
||||
'人)'}}-->
|
||||
{{lineData.signUpUserNum + '人'}}
|
||||
</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>
|
||||
<span class="line_label">最少成团人数(包括家属):</span>
|
||||
<label>{{configData.outsideQuota}}人</label>
|
||||
</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>-->
|
||||
</div>
|
||||
</van-skeleton>
|
||||
</van-skeleton>
|
||||
|
||||
<!--置顶图标-->
|
||||
<image v-if="btnFlag" @click="backTop" src="/assets/mobile/svg/therapyRecuperation/top.svg"
|
||||
class="top_icon"></image>
|
||||
<!--置顶图标-->
|
||||
<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>
|
||||
<!--底部报名按钮-->
|
||||
<div class="footer" v-if="fromUrlByMy != 'edit'">
|
||||
<van-button v-if="moment().unix() <= moment(lineData.signUpEndTime).unix()" @click="join"
|
||||
class="join">我要报名
|
||||
class="join">{{ enrollId ? '修改报名' : '我要报名' }}
|
||||
</van-button>
|
||||
<van-button v-if="moment().unix() > moment(lineData.signUpEndTime).unix()" class="join">报名结束</van-button>
|
||||
</template>
|
||||
<van-button v-if="moment().unix() > moment(lineData.signUpEndTime).unix()" class="join">报名结束
|
||||
</van-button>
|
||||
</div>
|
||||
</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>
|
||||
<van-nav-bar @click-left="signType == '2' ? history.go(-1) : joinPopup = false" fixed left-arrow placeholder title="疗休养报名"></van-nav-bar>
|
||||
<div class="join_content">
|
||||
|
||||
<van-form @submit="joinSubmit">
|
||||
@@ -289,26 +356,37 @@ layout("/mobile/platform.html"){
|
||||
<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="身份证件" 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>
|
||||
<van-field label="报名线路" readonly v-model="formData.lineName"></van-field>
|
||||
<van-field v-if="signType != '2'" label="报名线路" readonly v-model="formData.lineName"></van-field>
|
||||
</div>
|
||||
</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">
|
||||
床位信息
|
||||
房间信息
|
||||
</div>
|
||||
<div class="van-card-body">
|
||||
<van-field @click="self = true; roomVisible = true" readonly is-link label="房间" name="bedType"
|
||||
<van-field :rules="[{ required: true, message: '请选择是否包房' }]" label="是否包房" name="bedType">
|
||||
<template #input>
|
||||
<van-radio-group direction="horizontal" v-model="formData.bedInfo.bedType">
|
||||
<van-radio name="包房" shape="square">包房</van-radio>
|
||||
<van-radio name="不包房" shape="square">不包房</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<div>
|
||||
<span style="color: red;margin-left: 14px;font-size: 14px">包房需自费;不包房两位老师一间且随机分配</span>
|
||||
</div>
|
||||
<!--<van-field @click="self = true; roomVisible = true" readonly is-link label="房间" name="bedType"
|
||||
placeholder="请选择房间" v-model="formData.bedInfo.bedType"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
<van-field v-if="formData.bedInfo.bedType == '标准间'" @click="self = true; bedVisible = true"
|
||||
:rules="[{ required: true }]"></van-field>-->
|
||||
<!--<van-field v-if="formData.bedInfo.bedType == '标准间'" @click="self = true; bedVisible = true"
|
||||
readonly is-link label="床位"
|
||||
name="bedNum" placeholder="请选择床位" v-model="formData.bedInfo.bedNum"
|
||||
:rules="[{ required: true }]"></van-field>
|
||||
@@ -324,12 +402,12 @@ layout("/mobile/platform.html"){
|
||||
<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>
|
||||
:rules="[{ required: true }]"></van-field>-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--随行人信息-->
|
||||
<div class="van-doc-card" style="margin-bottom: 16px">
|
||||
<div v-if="index != 2" class="van-doc-card" style="margin-bottom: 16px">
|
||||
<div></div>
|
||||
<div class="van-card-header"
|
||||
style="display: flex; justify-content: space-between; align-items: center">
|
||||
@@ -339,62 +417,73 @@ layout("/mobile/platform.html"){
|
||||
<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>
|
||||
|
||||
<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">
|
||||
<template v-if="configData.familyInfo === 2">
|
||||
<div>
|
||||
<span style="color: red;margin-left: 20px;font-size: 14px">限填写3岁以上70岁以下随行人</span>
|
||||
</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 }]" maxlength="18"
|
||||
@input="getAgeAndSex(item)" 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: 8px; 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>
|
||||
</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="submitButton">
|
||||
@@ -410,34 +499,35 @@ layout("/mobile/platform.html"){
|
||||
<!--房间类型弹出框-->
|
||||
<van-popup position="bottom" round v-model="roomVisible">
|
||||
<van-picker
|
||||
title="入住房间" show-toolbar
|
||||
:columns="roomColumns"
|
||||
@confirm="roomConfirm"
|
||||
@cancel="roomCancel">
|
||||
title="入住房间" show-toolbar
|
||||
:columns="roomColumns"
|
||||
@confirm="roomConfirm"
|
||||
@cancel="roomCancel">
|
||||
</van-picker>
|
||||
</van-popup>
|
||||
|
||||
<!--床位弹出框-->
|
||||
<van-popup position="bottom" round v-model="bedVisible">
|
||||
<van-picker
|
||||
title="床位" show-toolbar
|
||||
:columns="bedColumns"
|
||||
@confirm="bedConfirm"
|
||||
@cancel="bedVisible = false">
|
||||
title="床位" show-toolbar
|
||||
:columns="bedColumns"
|
||||
@confirm="bedConfirm"
|
||||
@cancel="bedVisible = false">
|
||||
</van-picker>
|
||||
</van-popup>
|
||||
|
||||
<!--随行人关系弹出框-->
|
||||
<van-popup position="bottom" round v-model="companionVisible">
|
||||
<van-picker
|
||||
title="与本人关系" show-toolbar
|
||||
:columns="companionColumns"
|
||||
@confirm="(value, index) => {formData.companionList[active].relation = value; companionVisible = false}"
|
||||
@cancel="companionVisible = false">
|
||||
title="与本人关系" show-toolbar
|
||||
:columns="companionColumns"
|
||||
@confirm="(value, index) => {formData.companionList[active].relation = value; companionVisible = false}"
|
||||
@cancel="companionVisible = false">
|
||||
</van-picker>
|
||||
</van-popup>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function getQueryString(name) {
|
||||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
||||
@@ -446,15 +536,18 @@ layout("/mobile/platform.html"){
|
||||
return null;
|
||||
}
|
||||
|
||||
let pdfh5 = null
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
isPdf: false,
|
||||
isLoad: false,
|
||||
active: 0,
|
||||
roomColumns: ['大床房', '标准间'],
|
||||
roomColumns: ['包房', '默认房间'],
|
||||
bedColumns: ['1', '2'],
|
||||
companionColumns: ['亲属', '朋友'],
|
||||
companionColumns: ['配偶', '子女', '亲属', '其他'],
|
||||
bedVisible: false,
|
||||
roomVisible: false,
|
||||
companionVisible: false,
|
||||
@@ -466,7 +559,7 @@ layout("/mobile/platform.html"){
|
||||
userName: "${@shiro.getPrincipalProperty('username')}",
|
||||
loginName: "${@shiro.getPrincipalProperty('loginname')}",
|
||||
unionName: "${@shiro.getPrincipalProperty('union').getUnionname()}",
|
||||
idCard: "",
|
||||
idCard: "${@shiro.getPrincipalProperty('idcard')}",
|
||||
mobile: "${@shiro.getPrincipalProperty('mobile')}",
|
||||
lineName: '',
|
||||
takePartInLineId: '',
|
||||
@@ -481,9 +574,24 @@ layout("/mobile/platform.html"){
|
||||
fromUrlByMy: '',
|
||||
enrollId: '',
|
||||
configData: {},
|
||||
signType: '',
|
||||
takePartInTravelAgencyId: '',
|
||||
queryYear: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getAgeAndSex(item){
|
||||
try {
|
||||
const value = item.idCard
|
||||
const age = this.calculateAgeFromIdCard(value)
|
||||
this.$set(item, "age", age)
|
||||
|
||||
const sex = this.getGenderFromIdCard(value)
|
||||
this.$set(item, "sex", sex)
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
},
|
||||
roomCancel() {
|
||||
if (!this.self) {
|
||||
this.formData.companionList[this.active].bedInfo.bedType = ''
|
||||
@@ -510,19 +618,53 @@ 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)
|
||||
}
|
||||
})
|
||||
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/doSignUpForLine', {
|
||||
|
||||
if (cloneData.companionList) {
|
||||
for (let i = 0; i < cloneData.companionList.length; i++) {
|
||||
const companion = cloneData.companionList[i];
|
||||
// 检查每个字段是否为空
|
||||
if (!companion.userName || !companion.idCard || !companion.mobile || !companion.relation) {
|
||||
this.$toast('请填写完整随行人信息')
|
||||
return
|
||||
}
|
||||
|
||||
// 填了身份证,校验是否正确
|
||||
if (companion.idCard) {
|
||||
if (!this.validateIdCard(companion.idCard)) {
|
||||
this.$toast('随行人'+ (i+1) +'的身份证不正确')
|
||||
return
|
||||
} else {
|
||||
// 判断companion.age,是不是在3到70岁之间,不是就提示
|
||||
if (companion.age < 3 || companion.age > 70) {
|
||||
this.$toast('随行人'+ (i+1) +'的年龄超出限制,请天添加其他联系人')
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let url = ''
|
||||
if(this.signType == '2') {
|
||||
cloneData.takePartInTravelAgencyId = this.takePartInTravelAgencyId
|
||||
url = '/platform/theRapyRecuperation/line/enroll/doSignUpForTravelAgency'
|
||||
} else {
|
||||
url = '/platform/theRapyRecuperation/line/enroll/doSignUpForLine'
|
||||
}
|
||||
|
||||
const toast = vant.Toast.loading({
|
||||
duration: 0,
|
||||
forbidClick: true,
|
||||
overlay: true,
|
||||
message: '努力提交中',
|
||||
})
|
||||
const resp = await $.post(url, {
|
||||
enroll: JSON.stringify(cloneData),
|
||||
})
|
||||
setTimeout(() => {
|
||||
@@ -537,7 +679,7 @@ layout("/mobile/platform.html"){
|
||||
toast.clear()
|
||||
}, 500)
|
||||
if (resp.code === 0) {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index
|
||||
location.replace('/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index)
|
||||
}
|
||||
}, 1000)
|
||||
},
|
||||
@@ -557,19 +699,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
|
||||
}
|
||||
@@ -593,7 +737,8 @@ layout("/mobile/platform.html"){
|
||||
async getData() {
|
||||
const res = await $.get('/platform/theRapyRecuperation/line/enroll/selectLineAllInfo', {
|
||||
usId: this.id,
|
||||
usUnionId: this.takePartInUnionId
|
||||
usUnionId: this.takePartInUnionId,
|
||||
year: this.queryYear
|
||||
})
|
||||
if (res.code === 0) {
|
||||
this.lineData = res.data
|
||||
@@ -641,10 +786,120 @@ layout("/mobile/platform.html"){
|
||||
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
|
||||
this.configData = resp.data
|
||||
},
|
||||
calculateAgeFromIdCard(idCard) {
|
||||
// 检查身份证号码是否合法
|
||||
if (!idCard) {
|
||||
throw new Error("Invalid ID card format")
|
||||
}
|
||||
|
||||
let birthDateStr
|
||||
let birthYear, birthMonth, birthDay
|
||||
|
||||
// 处理18位身份证号码
|
||||
if (idCard.length === 18) {
|
||||
birthDateStr = idCard.substring(6, 14)
|
||||
birthYear = parseInt(birthDateStr.substring(0, 4), 10)
|
||||
birthMonth = parseInt(birthDateStr.substring(4, 6), 10) - 1 // 月份从0开始
|
||||
birthDay = parseInt(birthDateStr.substring(6, 8), 10)
|
||||
}
|
||||
// 处理15位身份证号码
|
||||
else if (idCard.length === 15) {
|
||||
birthDateStr = idCard.substring(6, 12)
|
||||
birthYear = parseInt("19" + birthDateStr.substring(0, 2), 10) // 使用字符串拼接
|
||||
birthMonth = parseInt(birthDateStr.substring(2, 4), 10) - 1 // 月份从0开始
|
||||
birthDay = parseInt(birthDateStr.substring(4, 6), 10)
|
||||
} else {
|
||||
throw new Error("Invalid ID card format. Only 15 or 18 digits are supported.")
|
||||
}
|
||||
|
||||
// 获取当前日期
|
||||
const currentDate = new Date()
|
||||
|
||||
// 计算年龄
|
||||
let age = currentDate.getFullYear() - birthYear
|
||||
|
||||
// 如果当前日期还没过生日,则年龄减1
|
||||
if (currentDate.getMonth() < birthMonth || (currentDate.getMonth() === birthMonth && currentDate.getDate() < birthDay)) {
|
||||
age -= 1
|
||||
}
|
||||
|
||||
return age
|
||||
},
|
||||
getGenderFromIdCard(idCard) {
|
||||
// 检查身份证号码是否合法
|
||||
if (!idCard) {
|
||||
throw new Error("Invalid ID card format")
|
||||
}
|
||||
|
||||
let genderDigit
|
||||
|
||||
// 处理18位身份证号码
|
||||
if (idCard.length === 18) {
|
||||
genderDigit = parseInt(idCard.charAt(16), 10) // 第17位
|
||||
}
|
||||
// 处理15位身份证号码
|
||||
else if (idCard.length === 15) {
|
||||
genderDigit = parseInt(idCard.charAt(14), 10) // 第15位
|
||||
} else {
|
||||
throw new Error("Invalid ID card format. Only 15 or 18 digits are supported.")
|
||||
}
|
||||
|
||||
// 判断性别
|
||||
if (genderDigit % 2 === 0) {
|
||||
return "女"
|
||||
} else {
|
||||
return "男"
|
||||
}
|
||||
},
|
||||
validateIdCard(idCard) {
|
||||
if (!idCard) {
|
||||
return false
|
||||
}
|
||||
|
||||
// 18位身份证号码校验
|
||||
if (idCard.length === 18) {
|
||||
const idCardRegex = /^[1-9]\d{5}(18|19|20)?\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}(\d|[Xx])$/
|
||||
if (!idCardRegex.test(idCard)) {
|
||||
return false
|
||||
}
|
||||
|
||||
// 校验码计算
|
||||
const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
|
||||
const checksums = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"]
|
||||
let sum = 0
|
||||
for (let i = 0; i < 17; i++) {
|
||||
sum += idCard[i] * weights[i]
|
||||
}
|
||||
const checksum = checksums[sum % 11]
|
||||
return checksum === idCard[17].toUpperCase()
|
||||
}
|
||||
|
||||
// 15位身份证号码校验
|
||||
else if (idCard.length === 15) {
|
||||
const idCardRegex = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0|1|2][0-9])|10|20|30|31)\d{3}$/
|
||||
return idCardRegex.test(idCard)
|
||||
}
|
||||
|
||||
// 外国人或其他情况
|
||||
else {
|
||||
return false
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
const loading = this.$toast({
|
||||
duration: 0,
|
||||
message: '正在加载线路信息',
|
||||
forbidClick: true,
|
||||
loadingType: 'spinner',
|
||||
type: 'loading',
|
||||
overlay: true
|
||||
});
|
||||
this.id = getQueryString('id') ? getQueryString('id') : ''
|
||||
this.queryYear = getQueryString('queryYear') ? getQueryString('queryYear') : ''
|
||||
this.index = getQueryString('index') ? getQueryString('index') : ''
|
||||
this.signType = getQueryString('signType') ? getQueryString('signType') : ''
|
||||
this.takePartInTravelAgencyId = getQueryString('takePartInTravelAgencyId') ? getQueryString('takePartInTravelAgencyId') : ''
|
||||
await this.getConfigData()
|
||||
//编辑传出来的参数
|
||||
this.fromUrlByMy = getQueryString('fromUrlByMy') ? getQueryString('fromUrlByMy') : ''
|
||||
@@ -653,16 +908,66 @@ layout("/mobile/platform.html"){
|
||||
if (this.enrollId) {
|
||||
await this.findSignUpInfoById()
|
||||
}
|
||||
this.getData()
|
||||
if(!this.signType) {
|
||||
await this.getData()
|
||||
} else {
|
||||
this.joinPopup = true
|
||||
}
|
||||
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(() => {
|
||||
pdfh5.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,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
loading.close()
|
||||
},
|
||||
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;
|
||||
@@ -77,21 +81,22 @@ 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;
|
||||
}
|
||||
|
||||
.van-divider {
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.active {
|
||||
background-color: #1867b0;
|
||||
color: white;
|
||||
@@ -109,9 +114,7 @@ layout("/mobile/platform.html"){
|
||||
.van-row {
|
||||
text-align: center;
|
||||
color: #1867b0;
|
||||
font-weight: bold;
|
||||
padding: 0px 0px 10px 0px;
|
||||
font-family: cursive;
|
||||
}
|
||||
|
||||
.van-col {
|
||||
@@ -122,17 +125,37 @@ layout("/mobile/platform.html"){
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.sign_button .van-button{
|
||||
width: 72px;
|
||||
height: 26px;
|
||||
color: white;
|
||||
background: rgb(24, 103, 176);
|
||||
border-color: rgb(24, 103, 176);
|
||||
font-size: 11px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.van-action-sheet__cancel, .van-action-sheet__item {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<div id="app" v-cloak v-if="isLoad">
|
||||
<van-sticky>
|
||||
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar>
|
||||
<van-nav-bar @click-left="pjaxReplace('/platform/mobile/theRapyRecuperation/index')" 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>-->
|
||||
|
||||
<!-- <van-notice-bar v-if="schoolTime != '' && schoolTime != null" mode="closeable">您的入校时间为{{schoolTime}},疗休养额度为1500。</van-notice-bar>-->
|
||||
|
||||
<!--按钮导航-->
|
||||
<div class="choose_button van-doc-card">
|
||||
@@ -145,47 +168,85 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
</van-grid-item>
|
||||
</van-grid>
|
||||
|
||||
<van-divider></van-divider>
|
||||
|
||||
<!-- <div class="footer"-->
|
||||
<!-- v-if="['0', 0].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>-->
|
||||
|
||||
</div>
|
||||
|
||||
<van-list
|
||||
:finished="finished"
|
||||
:immediate-check="true"
|
||||
@load="onLoad"
|
||||
finished-text="没有更多了"
|
||||
v-model="loading">
|
||||
<div @click.stop="findOne(o)" class="list-card" v-for="o in tableData">
|
||||
:finished="finished"
|
||||
:immediate-check="true"
|
||||
@load="onLoad"
|
||||
finished-text="没有更多了"
|
||||
v-model="loading">
|
||||
<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"
|
||||
width="150">
|
||||
height="86"
|
||||
radius="8"
|
||||
:src="CREATE_PREVIEW_URL(o.fileId)"
|
||||
width="130">
|
||||
</van-image>
|
||||
<div v-if="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3'"
|
||||
class="content-right">
|
||||
<div class="cr-title">
|
||||
<span>{{o.lineName}}</span>
|
||||
<div>
|
||||
<span style="font-size: 14px">{{o.lineName}}</span>
|
||||
<!--<div>
|
||||
<van-tag color="#1867b0">{{o.lotName}}</van-tag>
|
||||
<van-tag color="#1867b0">{{o.signUpMode === 2 ? '校工会' :
|
||||
o.usUnionName}}
|
||||
</van-tag>
|
||||
</div>
|
||||
</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 + '人)'}}
|
||||
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 + '人)'}}
|
||||
</div>-->
|
||||
|
||||
<div class="concat">
|
||||
<span>线路类型:</span>
|
||||
{{o.regionalNature}}
|
||||
</div>
|
||||
|
||||
<div class="concat">
|
||||
<span>出行时段:</span>
|
||||
{{o.lotName}}
|
||||
</div>
|
||||
|
||||
<div class="mobile">
|
||||
<span>旅 行 社:</span>{{o.travelAgencyName}}
|
||||
<!--<span>出行时间:</span>{{moment(o.playStartTime).format('YYYY-MM-DD')}}-->
|
||||
<span>组织机构:</span>
|
||||
{{o.signUpMode === 2 ? '校工会' : o.usUnionName}}
|
||||
</div>
|
||||
|
||||
<!--<div class="mobile">
|
||||
<span>旅 行 社:</span>{{o.travelAgencyName}}
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -204,10 +265,33 @@ layout("/mobile/platform.html"){
|
||||
<!--<div class="mobile">
|
||||
<span>邮箱:</span>{{o.email}}
|
||||
</div>-->
|
||||
<div class="union" style="margin-top: 0">
|
||||
<span>官  网:</span><span style="color: #0e5996"
|
||||
@click.stop="window.open(o.officialWebsite.indexOf('http') !== -1 ? o.officialWebsite : 'https://' + o.officialWebsite)">{{o.officialWebsite}}</span>
|
||||
<div class="concat" v-if="modifyConfig.familyInfo == 2">
|
||||
<span>已报人数:</span>{{o.signUpUserNum + '人'}}
|
||||
</div>
|
||||
|
||||
<div class="concat" v-else>
|
||||
<span>已报人数:</span>{{o.signUpUserNum + '人'}}
|
||||
</div>
|
||||
<!-- <div class="concat" v-if="modifyConfig.familyInfo == 2">-->
|
||||
<!-- <span>已报人数:</span>{{o.signUpUserNum + o.signUpUserFamilyNum + '(家属' +-->
|
||||
<!-- o.signUpUserFamilyNum + '人)'}}-->
|
||||
<!-- </div>-->
|
||||
|
||||
<!-- <div class="concat" v-else>-->
|
||||
<!-- <span>已报人数:</span>{{o.signUpUserNum + o.familyNumber + '(家属' +-->
|
||||
<!-- o.familyNumber + '人)'}}-->
|
||||
<!-- </div>-->
|
||||
|
||||
|
||||
|
||||
<!--<div class="union" style="margin-top: 0">
|
||||
|
||||
<span>官  网:</span>
|
||||
<span style="color: #0e5996"
|
||||
@click.stop="window.open(o.officialWebsite.indexOf('http') !== -1 ? o.officialWebsite : 'https://' + o.officialWebsite)">
|
||||
{{o.officialWebsite}}
|
||||
</span>
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -233,41 +317,69 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div v-if="pageForm.theRapyRecuperationType == '2'">
|
||||
<van-row gutter="20">
|
||||
<div v-if="pageForm.theRapyRecuperationType == '3'">
|
||||
<van-row gutter="20" class="sign_button">
|
||||
<van-col @click="" span="12" style="border-right: 1px lightgrey solid"></van-col>
|
||||
<van-col span="12">
|
||||
<van-button @click.stop="join(o)" plain round size="mini" type="info">我要报名</van-button>
|
||||
<van-col span="12" style="text-align: right">
|
||||
<van-button @click.stop="openSignUser(o, 'base')" round size="mini" type="info">
|
||||
查看人员
|
||||
</van-button>
|
||||
<van-button @click.stop="findOne(o)" round size="mini" type="info"
|
||||
style="margin-right: 8px">
|
||||
我要报名
|
||||
</van-button>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</div>
|
||||
</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
|
||||
:columns="unionColumns"
|
||||
@confirm="onConfirm"
|
||||
@cancel="unionPop = false"
|
||||
title="选择分工会" show-toolbar
|
||||
:columns="unionColumns"
|
||||
@confirm="onConfirm"
|
||||
@cancel="unionPop = false"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-action-sheet
|
||||
v-model="selectLinePopup"
|
||||
cancel-text="取消"
|
||||
:description="clickRow.lineName"
|
||||
close-on-click-action>
|
||||
<button 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">
|
||||
<div>
|
||||
<van-button @click.stop="onSelect(item)" size="mini" type="info"
|
||||
style="margin-right: 8px">
|
||||
点击报名
|
||||
</van-button>
|
||||
</div>
|
||||
<div style="margin-top: 4px">
|
||||
<van-button @click.stop="openSignUser(item, 'line')" size="mini" type="info"
|
||||
style="margin-right: 8px">
|
||||
查看人员
|
||||
</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</van-action-sheet>
|
||||
|
||||
<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="search" replace url="/platform/mobile/theRapyRecuperation/mobileLineListPage">线路选择</van-tabbar-item>
|
||||
<van-tabbar-item icon="manager-o" replace url="/platform/mobile/theRapyRecuperation/myRecuperation">我的报名</van-tabbar-item>
|
||||
</van-tabbar>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
@@ -278,33 +390,87 @@ layout("/mobile/platform.html"){
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
tarBarActive: 1,
|
||||
searchKeyWord: '',
|
||||
isLoad: false,
|
||||
yearArray: [],
|
||||
unionColumns: [],
|
||||
unionPop: false,
|
||||
chooseButton: [],
|
||||
pageForm: {
|
||||
theRapyRecuperationType: 0,
|
||||
lineUnionType: 1,
|
||||
lineUnionType: 3,
|
||||
unionId: "${@shiro.getPrincipalProperty('union').getId()}",
|
||||
year: new Date().getFullYear()
|
||||
year: null
|
||||
},
|
||||
loading: false,
|
||||
finished: false,
|
||||
refreshing: false,
|
||||
lineData: {},
|
||||
modifyConfig:{},
|
||||
|
||||
clickRow: {},
|
||||
selectLineList: [],
|
||||
selectLinePopup: false,
|
||||
|
||||
// schoolTime: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openSignUser(row, type) {
|
||||
const id = type === 'line' ? row.usId : row.id
|
||||
location.href = '/platform/mobile/theRapyRecuperation/userSignInfo?type=' + type + '&id=' + id
|
||||
},
|
||||
async clickLineRow(o) {
|
||||
this.clickRow = o
|
||||
if(this.pageForm.theRapyRecuperationType == 3) {
|
||||
await this.findOne(o)
|
||||
return
|
||||
}
|
||||
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) + ' :' + moment(item.playStartTime).format('YYYY-MM-DD HH:mm')
|
||||
item.playTime = '报名截止:' + moment(item.signUpEndTime).format('YYYY-MM-DD HH:mm')
|
||||
if(this.modifyConfig.familyInfo == 2) {
|
||||
item.subname = '已报人数:'
|
||||
+ (item.signUpUserNum + item.signUpUserFamilyNum)
|
||||
+ '人'
|
||||
} else {
|
||||
item.subname = '已报人数:'
|
||||
+ (item.signUpUserNum + item.signUpUserFamilyNum)
|
||||
+ '人'
|
||||
}
|
||||
// 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('暂时没有工会公开线路')
|
||||
vant.Toast('暂时没有其他分工会公开线路')
|
||||
return
|
||||
}
|
||||
this.pageForm.lineUnionType = 2
|
||||
@@ -313,6 +479,9 @@ layout("/mobile/platform.html"){
|
||||
doSearch() {
|
||||
this.loading = true
|
||||
this.finished = false
|
||||
if (this.pageForm.theRapyRecuperationType == 0) {
|
||||
this.$set(this.pageForm, 'lineUnionType', 3)
|
||||
}
|
||||
this.getData()
|
||||
},
|
||||
async join(o) {
|
||||
@@ -365,14 +534,32 @@ layout("/mobile/platform.html"){
|
||||
location.href = '/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
|
||||
location.href = '/platform/mobile/theRapyRecuperation/baseInfo?id=' + o.id + '&index=' + this.pageForm.theRapyRecuperationType
|
||||
} else if(type === 2) {
|
||||
const re = await $.post('/platform/theRapyRecuperation/line/enroll/validSignUpInfo', {
|
||||
enroll: JSON.stringify({
|
||||
takePartInTravelAgencyId: o.id,
|
||||
}),
|
||||
})
|
||||
if (re.code !== 0) {
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: re.msg,
|
||||
})
|
||||
return
|
||||
}
|
||||
location.href = '/platform/mobile/theRapyRecuperation/lineInfo?id=' + o.usId + '&index=' + this.pageForm.theRapyRecuperationType
|
||||
+ '&takePartInUnionId=' + o.takePartInUnionId + '&signType=2' + '&takePartInTravelAgencyId=' + o.id
|
||||
}
|
||||
},
|
||||
getData() {
|
||||
this.loading = true
|
||||
if (this.pageForm.lineUnionType === 1) {
|
||||
if (this.pageForm.lineUnionType === 3) {
|
||||
this.pageForm.unionId = "${@shiro.getPrincipalProperty('union').getId()}"
|
||||
}
|
||||
if (this.pageForm.theRapyRecuperationType == 1) {
|
||||
this.$set(this.pageForm, 'lineUnionType', 3)
|
||||
}
|
||||
this.pageForm.pageNumber = 1
|
||||
this.tableData = []
|
||||
this.onLoad()
|
||||
@@ -394,26 +581,47 @@ 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', {
|
||||
year: this.pageForm.year
|
||||
year: this.pageForm.year,
|
||||
theRapyRecuperationType: this.pageForm.theRapyRecuperationType
|
||||
})
|
||||
return resp.data
|
||||
},
|
||||
async getModifyConfig() {
|
||||
const res = await $.post('/platform/theRapyRecuperation/TheRapyConfig/findOne')
|
||||
if (res.code === 0) {
|
||||
this.modifyConfig = res.data
|
||||
}
|
||||
},
|
||||
// async getSchoolTime() {
|
||||
// const res = await $.post('/platform/theRapyRecuperation/line/enroll/getSchoolTime')
|
||||
// this.schoolTime = 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()
|
||||
// await this.getSchoolTime()
|
||||
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)
|
||||
const unions = await this.getTheRapyUnions()
|
||||
unions.forEach(item => {
|
||||
this.unionColumns.push({text: item.unionname, value: item.id})
|
||||
})
|
||||
|
||||
}
|
||||
this.isLoad = true
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -72,21 +72,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 +179,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('/platform/mobile/theRapyRecuperation/index')" fixed left-arrow placeholder
|
||||
title="我的疗休养"></van-nav-bar>
|
||||
</van-sticky>
|
||||
|
||||
@@ -196,6 +251,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 +272,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 +304,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 +359,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 +369,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,15 +413,53 @@ layout("/mobile/platform.html"){
|
||||
</div>
|
||||
</van-popup>
|
||||
|
||||
<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>
|
||||
<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-item icon="home-o" replace url="/platform/mobile/theRapyRecuperation/index">疗休养首页</van-tabbar-item>
|
||||
<van-tabbar-item icon="search" replace url="/platform/mobile/theRapyRecuperation/mobileLineListPage">线路选择</van-tabbar-item>
|
||||
<van-tabbar-item icon="manager-o" replace url="/platform/mobile/theRapyRecuperation/myRecuperation">我的报名</van-tabbar-item>
|
||||
</van-tabbar>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
|
||||
@@ -376,23 +475,82 @@ layout("/mobile/platform.html"){
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
tarBarActive: 2,
|
||||
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 +623,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)
|
||||
@@ -477,8 +635,10 @@ layout("/mobile/platform.html"){
|
||||
}).catch(() => {});
|
||||
},
|
||||
async findOne(o) {
|
||||
if(this.pageForm.theRapyRecuperationType != '2') {
|
||||
if(this.pageForm.theRapyRecuperationType != '2' && this.pageForm.theRapyRecuperationType != '3') {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/lineInfo?id=' + o.takePartInLineId + '&fromUrlByMy=edit&takePartInUnionId=' + o.takePartInUnionId
|
||||
} else if (this.pageForm.theRapyRecuperationType == '3') {
|
||||
location.href = '/platform/mobile/theRapyRecuperation/baseInfo?id=' + o.takePartInBaseManagementId + '&fromUrlByMy=edit'
|
||||
}
|
||||
},
|
||||
getData() {
|
||||
@@ -516,17 +676,13 @@ 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)
|
||||
this.chooseButton = this.chooseButton.filter(o => o.value !== 2)
|
||||
await this.getConfigData()
|
||||
this.onLoad()
|
||||
},
|
||||
mounted() {
|
||||
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
<!--#
|
||||
layout("/mobile/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
|
||||
#app {
|
||||
font-family: 微软雅黑,serif;
|
||||
}
|
||||
|
||||
.van-index-bar {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.van-empty {
|
||||
height: calc(100vh - 46px - 54px);
|
||||
position: unset;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<van-sticky>
|
||||
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder
|
||||
title="报名人员"></van-nav-bar>
|
||||
</van-sticky>
|
||||
|
||||
<van-search v-model="searchKeyWord" placeholder="请输入姓名查询" @search="getSignUser"></van-search>
|
||||
<template v-if="Object.keys(signUserData).length > 0">
|
||||
<van-index-bar :sticky-offset-top="46" :index-list="Object.keys(signUserData)">
|
||||
<template v-for="(value, key) in signUserData">
|
||||
<van-index-anchor :index="key"></van-index-anchor>
|
||||
<van-cell v-for="item in value" :title="item.userName + '(' + item.unionName + ')'"></van-cell>
|
||||
</template>
|
||||
</van-index-bar>
|
||||
</template>
|
||||
<van-empty v-else description="暂无报名人员"></van-empty>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
|
||||
function getQueryString(name) {
|
||||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
||||
var r = window.location.search.substr(1).match(reg);
|
||||
if (r != null) return decodeURI(r[2]);
|
||||
return null;
|
||||
}
|
||||
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [mobileMixins],
|
||||
data() {
|
||||
return {
|
||||
searchKeyWord: '',
|
||||
signUserData: [],
|
||||
id: '',
|
||||
type: '',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getSignUser() {
|
||||
const params = this.type === 'line' ? {usId: this.id, searchKeyWord: this.searchKeyWord} : {baseId: this.id, searchKeyWord: this.searchKeyWord}
|
||||
const toast = vant.Toast.loading({
|
||||
duration: 0,
|
||||
forbidClick: true,
|
||||
overlay: true,
|
||||
message: '努力查询中',
|
||||
})
|
||||
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/openSignUser', params)
|
||||
this.signUserData = resp.data
|
||||
toast.close()
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.id = getQueryString('id')
|
||||
this.type = getQueryString('type')
|
||||
await this.getSignUser()
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -527,7 +527,6 @@ layout("/mobile/platform.html"){
|
||||
this.selectSpecsPopup = true
|
||||
},
|
||||
specsSelectConfirm(value) {
|
||||
debugger
|
||||
this.selectSpecsPopup = false
|
||||
if (value) {
|
||||
this.projectInfo.welfareProjectSubjects[0].options.forEach(v => {
|
||||
@@ -681,7 +680,7 @@ layout("/mobile/platform.html"){
|
||||
|
||||
for (const option of options) {
|
||||
// 检查是否有 specs
|
||||
if (option.specs) {
|
||||
if (option.specs && option.specs.length > 0) {
|
||||
// 检查 selectSpecs 是否为空或未定义
|
||||
if (!option.selectSpecs) {
|
||||
this.$toast.fail('请选择' + option.optionName + '的规格')
|
||||
@@ -713,24 +712,28 @@ layout("/mobile/platform.html"){
|
||||
if (code === 0) {
|
||||
this.getUserSelection(this.projectId)
|
||||
// 女性健康知识讲座福利品Id
|
||||
if (this.projectId === '8799d66b0bb640078f50feb029e506ed') {
|
||||
// if (this.projectId === '8799d66b0bb640078f50feb029e506ed') {
|
||||
pjaxReplace('/mobile/welfare/list/receive_success?projectId=' + this.projectId + '&provideMode=' + this.projectInfo.provideMode)
|
||||
} else {
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: "您已完成本次选择。",
|
||||
}).then(async () => {
|
||||
this.confirmPopup = false
|
||||
await this.getProjectInfo()
|
||||
window.location.reload()
|
||||
});
|
||||
}
|
||||
// } else {
|
||||
// vant.Dialog.alert({
|
||||
// title: '温馨提示',
|
||||
// message: "您已完成本次选择。",
|
||||
// }).then(async () => {
|
||||
// this.confirmPopup = false
|
||||
// await this.getProjectInfo()
|
||||
// window.location.reload()
|
||||
// });
|
||||
// }
|
||||
// this.$modal.msgSuccess("您已完成本次福利选择。")
|
||||
} else {
|
||||
this.$modal.msgError(msg)
|
||||
this.confirmPopup = false
|
||||
await this.getProjectInfo()
|
||||
window.location.reload()
|
||||
vant.Dialog.alert({
|
||||
title: '温馨提示',
|
||||
message: msg,
|
||||
})
|
||||
// this.$modal.msgError(msg)
|
||||
// this.confirmPopup = false
|
||||
// await this.getProjectInfo()
|
||||
// window.location.reload()
|
||||
}
|
||||
},
|
||||
|
||||
@@ -833,6 +836,11 @@ layout("/mobile/platform.html"){
|
||||
window.sessionStorage.removeItem('welfareProjectSelectInfo' + loginname)
|
||||
// this.selectAddressPopup = true
|
||||
} else {
|
||||
const flag = localStorage.getItem("reload")
|
||||
if (flag) {
|
||||
window.location.reload()
|
||||
localStorage.removeItem("reload")
|
||||
}
|
||||
this.getProjectInfo()
|
||||
}
|
||||
},
|
||||
|
||||
@@ -23,7 +23,7 @@ layout("/mobile/platform.html"){
|
||||
<path d="M955.330366 240.548613h-83.927839a30.723584 30.723584 0 0 0-31.472939 30.161567v1.124034a30.910923 30.910923 0 0 0 30.348906 31.472939H955.330366a30.723584 30.723584 0 0 0 31.2856-30.348906v-1.124033A30.536245 30.536245 0 0 0 955.330366 240.548613z m-72.125487-168.605033a32.222295 32.222295 0 0 0-43.837308 4.121457L786.725333 141.071644a31.285601 31.285601 0 0 0 48.146104 39.903191l52.080221-64.819268a30.536245 30.536245 0 0 0-2.810084-42.900614zM683.126907 0.005433a30.910923 30.910923 0 0 0-31.47294 30.161567v84.864533a30.723584 30.723584 0 0 0 30.348906 31.285601h1.124034a30.536245 30.536245 0 0 0 31.2856-30.161567V31.291033A30.723584 30.723584 0 0 0 684.25094 0.005433z"
|
||||
fill="#07C160" p-id="3085"></path>
|
||||
</svg>
|
||||
<div style="margin-top: 20px;">{{code=='2' ? '您已领取' : '您已选择'}}</div>
|
||||
<div style="margin-top: 20px;">{{code=='2' ? '您已领取' : '您已完成本次选择。'}}</div>
|
||||
<div style="margin: 20px auto 0px auto;width: 300px;word-break: break-all">
|
||||
<!-- 女性健康知识讲座福利品Id -->
|
||||
{{ projectId == '8799d66b0bb640078f50feb029e506ed' ? '纪念品' : '福利品' }}: {{selectOptionNames}}
|
||||
@@ -55,6 +55,7 @@ layout("/mobile/platform.html"){
|
||||
},
|
||||
back() {
|
||||
pjaxReplace('/mobile/welfare/list/receive?projectId=' + this.projectId)
|
||||
localStorage.setItem("reload", '1')
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
Reference in New Issue
Block a user