This commit is contained in:
@jyuhsin
2025-06-06 16:39:05 +08:00
parent 6576d17f58
commit 69b012a87c
38 changed files with 2618 additions and 1244 deletions
@@ -723,7 +723,7 @@ layout("/mobile/platform.html"){
}),
})
if (re.code !== 0) {
vant.Toast(re.msg)
vant.Dialog.alert({title: '温馨提示', message: re.msg})
return
}
if (this.fromUrlByMy !== 'editDo') {
@@ -71,6 +71,13 @@ layout("/mobile/platform.html"){
<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="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
@@ -79,6 +86,7 @@ layout("/mobile/platform.html"){
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
chooseButton: [],
configData: {},
isPdf: false,
@@ -132,7 +132,7 @@ layout("/mobile/platform.html"){
}
.van-cell {
padding: 8px 16px;
padding: 8px 5px;
}
.van-tabs__wrap {
@@ -227,6 +227,15 @@ layout("/mobile/platform.html"){
.van-action-sheet {
max-height: 90%;
}
.van-cell--required::before {
left: -2px;
}
.van-radio__label {
margin-left: 0;
}
.van-radio--horizontal {
margin-right: 8px;
}
</style>
@@ -251,22 +260,22 @@ layout("/mobile/platform.html"){
<div style="margin-top: 10px">
<div>
<div>
<span class="line_label">最少成团人数</span>
<span>预计费用</span>
{{lineData.estimatedCost}}元
</div>
<div>
<span class="line_label">最少成团:</span>
<label v-if="lineData.minimumGroupSize">{{lineData.minimumGroupSize}}人</label>
<label v-else>不限制</label>
</div>
<!--<div>
<span>当前报名:</span>
{{lineData.signUpUserNum}}
</div>-->
<div v-if="configData.familyInfo == 2">
<!--<div v-if="configData.familyInfo == 2">
<span>当前报名:</span>
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '(家属' + lineData.signUpUserFamilyNum + '人)'}}
</div>
<div v-else>
<span>当前报名:</span>
{{lineData.signUpUserNum + lineData.familyNumber + '(家属' + lineData.familyNumber + '人)'}}
</div>
</div>-->
</div>
<div>
@@ -324,6 +333,11 @@ layout("/mobile/platform.html"){
<!--报名弹出框-->
<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-notice-bar
v-if="Number(lineData.estimatedCost) > 3000"
left-icon="volume-o"
text="温馨提醒:您选择的线路预计费用超过3000元,需要选择超出费用类型"
></van-notice-bar>
<div class="join_content">
<van-form @submit="joinSubmit">
@@ -337,12 +351,20 @@ 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 }]"
<van-field required label="身份证件" name="idCard" :rules="[{ required: true }]"
placeholder="请填写身份证号、护照、台胞证等" v-model="formData.idCard"></van-field>
<van-field label="手机号" name="mobile" :rules="[{ required: true }]"
<van-field required 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="Number(lineData.estimatedCost) > 3000" required name="moneyType" label="超出费用类型" :rules="[{ required: true, message: '请选择超出费用类型' }]">
<template #input>
<van-radio-group v-model="formData.moneyType" direction="horizontal">
<van-radio :name="1">自己承担</van-radio>
<van-radio :name="2">使用明年额度</van-radio>
</van-radio-group>
</template>
</van-field>
</div>
</div>
@@ -700,11 +722,7 @@ layout("/mobile/platform.html"){
}).catch(() => {
});
} else {
vant.Dialog.alert({
title: '温馨提示',
message: re.msg,
}).then(() => {
})
vant.Dialog.alert({title: '温馨提示', message: re.msg})
}
return
}
@@ -31,7 +31,7 @@ layout("/mobile/platform.html"){
}
.list-card > .content {
padding: 16px 10px;
padding: 16px 10px 0;
display: flex;
}
@@ -141,6 +141,31 @@ layout("/mobile/platform.html"){
[v-cloak] {
display: none;
}
.van-calendar__header-title {
display: none;
}
.van-dropdown-menu__bar {
height: 30px;
}
.van-dropdown-menu__bar {
border: none
}
.filter-footer {
height: 54px;
background: #FFF;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
box-sizing: border-box;
border-top: 1px solid #ededed;
column-gap: 20px;
}
.filter-footer button {
flex: 1;
height: 30px;
border-radius: 8px;
}
</style>
@@ -186,6 +211,9 @@ layout("/mobile/platform.html"){
个人组织
</van-button>
</div>
<div v-else>
<div style="text-align: center" @click="searchPopup = true">筛选</div>
</div>
</div>
@@ -196,18 +224,21 @@ layout("/mobile/platform.html"){
@load="onLoad"
v-model="loading">
<div @click.stop="clickLineRow(o)" class="list-card" v-for="o in tableData">
<div class="content">
<div class="content" :style="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3' ? 'padding-bottom: 16px' : ''">
<van-image
height="92"
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>
<van-tag color="#1867b0">{{o.groupType === 1 ? '常规团' : '精品团'}}</van-tag>
<van-tag color="#1867b0">{{o.travelAgencyPlace}}</van-tag>
<van-tag v-if="o.signUpMode === 1" color="#1867b0">{{o.usUnionName}}</van-tag>
<van-tag v-if="o.signUpMode === 2" color="#1867b0">{{'校工会'}}</van-tag>
@@ -215,30 +246,36 @@ layout("/mobile/platform.html"){
</div>
</div>
<div class="desc_info">
<!--<div class="union">
<span>组织形式:</span>{{o.createMode === 2 && o.signUpMode === 2 ? '校工会' : o.usUnionName}}
</div>-->
<div class="concat" v-if="modifyConfig.familyInfo == 2">
<div class="concat">
<span>预计费用:</span>
{{o.estimatedCost}}元
</div>
<div class="concat">
<span>出行时段:</span>
{{moment(o.playStartTime).format('MM-DD') + ' 至 ' + moment(o.playEndTime).format('MM-DD')}}
</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 + '人)'}}-->
<span>联&ensp;系&ensp;人:</span>{{o.contact}}
</div>
<div class="mobile">
<!--<span>出行时间:</span>{{moment(o.playStartTime).format('YYYY-MM-DD')}}-->
<span>联系方式:</span>{{o.contactMobileNumber}}
</div>
</div>-->
<div class="mobile">
<span>&ensp;&ensp;社:</span>{{o.travelAgencyName}}
<span>&ensp;&ensp;社:</span>
{{o.travelAgencyName}}
</div>
</div>
</div>
<!--旅行社-->
<div v-if="pageForm.theRapyRecuperationType == '2'" class="content-right">
<div class="cr-title">
<span>{{o.travelAgencyName}}</span>
@@ -261,6 +298,7 @@ layout("/mobile/platform.html"){
</div>
</div>
<!--酒店-->
<div v-if="pageForm.theRapyRecuperationType == '3'" class="content-right">
<div class="cr-title">
<span>{{o.baseName}}</span>
@@ -281,14 +319,17 @@ layout("/mobile/platform.html"){
</div>
</div>
</div>
</div>
<!--酒店-->
<div v-if="pageForm.theRapyRecuperationType == '3'" style="text-align: right; padding-right: 10px; padding-bottom: 10px" class="sign_button">
<van-button @click.stop="clickLineRow(o)" size="mini"
type="info" color="#1867B0">点击报名</van-button>
<van-button @click.stop="openSignUser(o, 'baseManagement')" size="mini"
type="info" color="#1867B0">查看人员</van-button>
</div>
<!--旅行社-->
<div v-if="pageForm.theRapyRecuperationType == '2'">
<van-row gutter="20">
<van-col @click="" span="12" style="border-right: 1px lightgrey solid"></van-col>
@@ -340,22 +381,67 @@ layout("/mobile/platform.html"){
</button>
</van-action-sheet>
<!--<van-action-sheet v-model="searchSheet" title="查询条件">
<van-field v-model="pageForm.searchKeyword" label="报名人员" placeholder="请输入工号或姓名查询"></van-field>
<van-field v-model="pageForm.playStartTime" label="出行开始时间" placeholder="请点击选择出行开始时间" is-link readonly></van-field>
<van-field v-model="pageForm.playEndTime" label="出行结束时间" placeholder="请点击选择出行结束时间" is-link readonly></van-field>
</van-action-sheet>-->
<van-popup v-model="searchPopup" position="right"
closeable
close-icon="close"
close-icon-position="top-left"
:style="{ height: '100%',width:'90vw',background:'#f1f1f1' }">
<div style="background: #FFFFFF;height: 46px;display: flex;align-items: center;justify-content: center;font-weight: bold">
筛选条件
</div>
<van-field v-model="pageForm.searchKeyword" label="报名人员" placeholder="请输入姓名查询"></van-field>
<van-field v-model="pageForm.playStartTime" label="出行开始时间" placeholder="请点击选择出行开始时间" is-link readonly @click="playStartPicker=true"></van-field>
<van-field v-model="pageForm.playEndTime" label="出行结束时间" placeholder="请点击选择出行结束时间" is-link readonly @click="playEndPicker=true"></van-field>
<div class="filter-footer">
<van-button size="normal" type="danger" @click="reset">重置</van-button>
<van-button size="normal" type="info" @click="confirm">确定</van-button>
</div>
</van-popup>
<van-popup v-model="playStartPicker" position="bottom">
<van-datetime-picker
type="month-day"
:min-date="new Date(modifyConfig.fragmentPlayStartTime || '')"
:max-date="new Date(modifyConfig.fragmentPlayEndTime || '')"
@confirm="(val) => {pageForm.playStartTime=moment(val).format('MM-DD');playStartPicker=false}"
@cancel="playStartPicker = false"
></van-datetime-picker>
</van-popup>
<van-popup v-model="playEndPicker" position="bottom">
<van-datetime-picker
type="month-day"
:min-date="new Date(modifyConfig.fragmentPlayStartTime || '')"
:max-date="new Date(modifyConfig.fragmentPlayEndTime || '')"
@confirm="(val) => {pageForm.playEndTime=moment(val).format('MM-DD');playEndPicker=false}"
@cancel="playEndPicker = false"
></van-datetime-picker>
</van-popup>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/platform/mobile/theRapyRecuperation/index">疗休养首页</van-tabbar-item>
<van-tabbar-item icon="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>
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 {
playStartPicker: false,
playEndPicker: false,
searchPopup: false,
tarBarActive: 1,
yearArray: [],
unionColumns: [],
unionPop: false,
@@ -377,6 +463,17 @@ layout("/mobile/platform.html"){
}
},
methods: {
confirm() {
this.searchPopup = false
this.doSearch()
},
reset() {
this.$set(this.pageForm, 'searchKeyword', null)
this.$set(this.pageForm, 'playStartTime', null)
this.$set(this.pageForm, 'playEndTime', null)
this.searchPopup = false
this.doSearch()
},
async openSignUser(row, type) {
const id = type === 'line' ? row.usId : row.id
location.href = '/platform/mobile/theRapyRecuperation/userSignInfo?type=' + type + '&id=' + id
@@ -490,7 +587,6 @@ layout("/mobile/platform.html"){
},
async onLoad() {
const res = await $.post('/platform/theRapyRecuperation/line/enroll/pageData', this.pageForm)
if (res.code === 0 && res.data) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -526,9 +622,6 @@ layout("/mobile/platform.html"){
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()
@@ -303,55 +303,31 @@ layout("/mobile/platform.html"){
width="130">
</van-image>
<div
v-if="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3'"
class="content-right"
>
<div v-if="pageForm.theRapyRecuperationType != '2' && pageForm.theRapyRecuperationType != '3'" class="content-right">
<div class="cr-title">
<span>{{o.lineName}}</span>
<div>
<van-tag color="#1867b0">{{o.lotName}}</van-tag>
<van-tag color="#1867b0"
>{{o.signUpMode === 2 ? '校工会' : o.signUpUnionName}}
</van-tag>
<van-tag color="#1867b0">{{o.groupType === 1 ? '常规团' : '精品团'}}</van-tag>
<van-tag color="#1867b0">{{o.travelAgencyPlace}}</van-tag>
<van-tag v-if="o.signUpMode === 1" color="#1867b0">{{o.usUnionName}}</van-tag>
<van-tag v-if="o.signUpMode === 2" color="#1867b0">{{'校工会'}}</van-tag>
<van-tag v-if="o.signUpMode === 3" color="#1867b0">{{o.selectUserName}}</van-tag>
</div>
</div>
<div class="desc_info">
<!--<div class="union">
<span>分工会:</span>{{o.signUpUnionName}}
</div>-->
<!--<div class="concat">
<span>时间:</span>{{o.YEAR}}
</div>-->
<!--<div class="concat">
<span>已报人数:</span>{{o.signUpUserNum + o.signUpUserFamilyNum + '(家属' + o.signUpUserFamilyNum + '人)'}}
</div>-->
<div class="mobile">
<span>&ensp;&ensp;社:</span>{{o.travelAgencyName}}
<div class="concat">
<span>&ensp;&ensp;人:</span>{{o.contact}}
</div>
<div class="mobile">
<span>联系方式:</span>{{o.contactMobileNumber}}
</div>
<!--<div class="mobile" v-if="![2715,2725,2735].includes(o.stateId)">
<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>
</div>-->
<div class="mobile">
<span>&ensp;&ensp;社:</span>{{o.travelAgencyName}}
</div>
</div>
</div>
<div
v-if="pageForm.theRapyRecuperationType == '2'"
class="content-right"
>
<div v-if="pageForm.theRapyRecuperationType == '2'" class="content-right">
<div class="cr-title">
<span>{{o.travelAgencyName}}</span>
</div>
@@ -374,10 +350,7 @@ layout("/mobile/platform.html"){
</div>
</div>
<div
v-if="pageForm.theRapyRecuperationType == '3'"
class="content-right"
>
<div v-if="pageForm.theRapyRecuperationType == '3'" class="content-right">
<div class="cr-title">
<span>{{o.baseName}}</span>
<div>
@@ -401,7 +374,7 @@ layout("/mobile/platform.html"){
<div class="operateDiv">
<van-button
v-if="pageForm.signUpStateId == 2"
v-if="o.isTakePartIn == true"
@click="openEvaluate(o)"
type="info"
size="small"
@@ -561,6 +534,14 @@ layout("/mobile/platform.html"){
</van-action-sheet>
<satisfaction-evaluate ref="satisfactionEvaluateRef"></satisfaction-evaluate>
<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>
<!--#include('SatisfactionEvaluate.js'){}#-->
@@ -580,6 +561,7 @@ layout("/mobile/platform.html"){
},
data() {
return {
tarBarActive: 2,
evaluateFormData: {},
evaluatePopup: false,
yearArray: [],