rosehan 2 years ago
parent 49a09ae0b6
commit 0493cf8031
  1. 20
      sunPackIndex/scenic/subscribe/yuyue/yue_detail_js.vue
  2. 311
      sunPackIndex/scenic/subscribe/yuyue/yue_form_js.vue
  3. 18
      sunPackIndex/scenic/subscribe/yuyue/yue_time_js.vue

@ -1,5 +1,5 @@
<template>
<view class="v-page" :class="btnState?'bt-big':'bt-small'">
<view class="v-page" :class="state?'bt-big':'bt-small'">
<view class="an_box">
<view class="amt_30 rcd_box box_1">
<view class="an_pbl yue_lst">
@ -9,7 +9,7 @@
</view>
</view>
</view>
<view class="an_box_2 rcd_box box_1">
<view class="an_box_2 rcd_box box_1" v-if="state">
<view class="title_t_1">凭借二维码或身份证入园</view>
<scroll-view class="anx_scl_1" scroll-x="true" @scroll="scroll" scroll-left="0">
<view class="c">
@ -18,7 +18,7 @@
<view class="title">{{item.name}}</view>
<view class="code">预约码{{item.reservationCode}}</view>
<uqrcode class="codeImg" :value="item.qrContent" :canvas-id="'qrcode'+index"
:options="{ margin: 10 }" :size=160></uqrcode>
:options="{ margin: 10 }" :size='160'></uqrcode>
</view>
</view>
</view>
@ -28,7 +28,7 @@
<view class="title_t_1">
<text v-if="index==0" class="fill-full">预约人</text><text class="fill-full"
v-else>同行人{{index}}</text><text class="yue_type"
:class="getClass(item.expiredState,item.writeOff)">{{getState(item.expiredState,item.writeOff)}}</text>
:class="[getClass(item.expiredState,item.writeOff)]">{{getState(item.expiredState,item.writeOff)}}</text>
</view>
<view class="dy_fx yue_dg_inf">
<view class="an_t_2 fx_1">姓名</view>
@ -62,7 +62,7 @@
</view>
</view>
</view>
<view class="yuyue-btn" v-if='btnState'>
<view class="yuyue-btn" v-if='State'>
<view class="an_box_2">
<button form-type="submit" class="yue_fm_btn yue_e_bun" @tap="cancelReserve">
取消预约
@ -78,8 +78,8 @@
return {
reserveId: "",
detailMes: {},
detailist: [],
btnState: false
detailist: [],
state:false
};
},
onLoad(options) {
@ -101,12 +101,12 @@
}
this.detailist = res.data.list
const result = this.detailist.filter(item => {
return item.writeOff == '0'
return item.writeOff == '0' && item.expiredState == '0'
})
if (result.length > 0) {
this.btnState = true
this.state = true
} else {
this.btnState = false
this.state = false
}
}
})

@ -1,44 +1,41 @@
<template>
<view class="v-page">
<uni-forms ref="form" :rules="rules" :model="formData" label-position="top" :label-width=150>
<template v-for="(item,index) in formData.itemData">
<template v-for="(item,index) in dynamicLists">
<uni-forms ref="form" :modelValue="dynamicLists[index]" label-position="top" :label-width='150'
:rules="rules">
<view class="an_box_2 rcd_box box_1">
<view class="title_t_1">
<text v-if="index==0" class="fill-full">预约人</text><text class="fill-full"
v-else>同行人{{index}}</text><button class="title-btn" v-if="index!=0"
@tap="delReserve(index)">删除</button>
</view>
<uni-forms-item label="姓名" required :name="'domains[' + item.id + ']'">
<uni-easyinput type="text" v-model="formData.itemData[index].name" placeholder="请输入姓名" />
<uni-forms-item label="姓名" required name="name">
<uni-easyinput type="text" placeholder="请输入姓名" v-model="item.name" />
</uni-forms-item>
<uni-forms-item v-if="index==0" label="手机号" required :name="['itemData',index,'phone']">
<uni-easyinput type="text" v-model="formData.itemData[index].phone" placeholder="请输入手机号" />
<uni-forms-item v-if="index==0" label="手机号" required name="phone">
<uni-easyinput type="text" v-model="item.phone" placeholder="请输入手机号" />
</uni-forms-item>
<uni-forms-item v-else label="手机号" :rules="[{'required': false}]"
:name="['itemData',index,'phone']">
<uni-easyinput type="text" v-model="formData.itemData[index].phone" placeholder="请输入手机号" />
<uni-forms-item v-else label="手机号" name="phone">
<uni-easyinput type="text" v-model="item.phone" placeholder="请输入手机号" />
</uni-forms-item>
<uni-forms-item label="个人证件类型" name="documentsType" required>
<uni-data-checkbox mode="button" v-model="item.documentsType" :localdata="idcardList"
></uni-data-checkbox>
<uni-forms-item label="个人证件类型" name="documentsType">
<uni-data-checkbox mode="button" v-model="item.documentsType"
:localdata="idcardList"></uni-data-checkbox>
</uni-forms-item>
<uni-forms-item label="证件号码" required :name="['itemData',index,'idCardNumber']"
v-if="item.documentsType=='5501'">
<uni-easyinput type="text" v-model="formData.itemData[index].idCardNumber"
placeholder="请输入证件111号码" />
<uni-forms-item v-if="item.documentsType=='5501'" label="证件号码" required name="idCardNumber">
<uni-easyinput type="text" v-model="item.idCardNumber" placeholder="请输入身份证号码号码" />
</uni-forms-item>
<uni-forms-item label="证件号码" required :name="['itemData',index,'passportNumber']"
v-if="item.documentsType=='5502'">
<uni-easyinput type="text" v-model="formData.itemData[index].passportNumber"
placeholder="请输入护照证件号码" />
<uni-forms-item v-if="item.documentsType=='5502'" label="证件号码" required name="passportNumber">
<uni-easyinput type="text" v-model="item.passportNumber" placeholder="请输入护照码号码" />
</uni-forms-item>
</view>
</template>
</uni-forms>
</uni-forms>
</template>
<view class="an_box_2">
<button form-type="submit" class="add_btn" :class="isAdd?'active':''" @tap="addReserve">
@ -46,6 +43,7 @@
</button>
<view class="add_tip">每个预约单最多可预约5人!</view>
</view>
<view class="yuyue-btn">
<view class="an_box_2">
<view class="amt_60">
@ -55,6 +53,7 @@
</view>
</view>
</view>
</view>
</template>
@ -64,198 +63,64 @@
data() {
return {
formData: {
itemData: []
name: {},
phone: {},
documentsType: {},
idCardNumber: {},
passportNumber: {},
},
//
dynamicLists: [],
rules: {
'_formdata_#itemData#0#name': {
name: {
rules: [{
required: true,
errorMessage: '请填写姓名',
trigger: 'blur'
errorMessage: '姓名不能为空'
}]
},
'_formdata_#itemData#0#phone': {
phone: {
rules: [{
required: true,
errorMessage: '请填写手机号',
}, {
validateFunction: function(rule, value, data, callback) {
let reg = /^[1][3,4,5,7,8,9][0-9]{9}$/
if (!reg.test(value)) {
callback('请填写正确的手机号码')
} else {
return true
}
required: true,
errorMessage: '电话号码不能为空'
},
}]
},
'_formdata_#itemData#0#idCardNumber': {
rules: [{
required: true,
errorMessage: '请填写身份证件号码',
}, {
validateFunction: function(rule, value, data, callback) {
let idreg =
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (!idreg.test(value)) {
callback('请填写正确的身份证件号码')
} else {
return true
{
validateFunction: function(rule, value, data, callback) {
let reg = /^[1][3,4,5,7,8,9][0-9]{9}$/
if (!reg.test(value)) {
callback('请填写正确的手机号码')
} else {
return true
}
}
},
}]
]
},
'_formdata_#itemData#0#passportNumber': {
idCardNumber: {
rules: [{
required: true,
errorMessage: '请填写护照号码',
trigger: 'blur'
}]
},
'_formdata_#itemData#1#name': {
rules: [{
required: true,
errorMessage: '请填写姓名',
trigger: 'blur'
}]
},
'_formdata_#itemData#1#idCardNumber': {
rules: [{
required: true,
errorMessage: '请填写身份证件号码',
}, {
validateFunction: function(rule, value, data, callback) {
let idreg =
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (!idreg.test(value)) {
callback('请填写正确的身份证件号码')
} else {
return true
}
required: true,
errorMessage: '身份证号码不能为空'
},
}]
},
'_formdata_#itemData#1#passportNumber': {
rules: [{
required: true,
errorMessage: '请填写护照号码',
trigger: 'blur'
}]
},
'_formdata_#itemData#2#name': {
rules: [{
required: true,
errorMessage: '请填写姓名',
trigger: 'blur'
}]
},
'_formdata_#itemData#2#idCardNumber': {
rules: [{
required: true,
errorMessage: '请填写身份证件号码',
}, {
validateFunction: function(rule, value, data, callback) {
let idreg =
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (!idreg.test(value)) {
callback('请填写正确的身份证件号码')
} else {
return true
{
validateFunction: function(rule, value, data, callback) {
if(data.documentsType=='5502'){
return true
}else{let idreg =
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (!idreg.test(value)) {
callback('请填写正确的身份证件号码')
} else {
return true
}}
}
},
}]
]
},
'_formdata_#itemData#2#passportNumber': {
passportNumber: {
rules: [{
required: true,
errorMessage: '请填写护照号码',
trigger: 'blur'
}]
},
'_formdata_#itemData#3#name': {
rules: [{
required: true,
errorMessage: '请填写姓名',
trigger: 'blur'
}]
},
'_formdata_#itemData#3#idCardNumber': {
rules: [{
required: true,
errorMessage: '请填写身份证件号码',
}, {
validateFunction: function(rule, value, data, callback) {
let idreg =
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (!idreg.test(value)) {
callback('请填写正确的身份证件号码')
} else {
return true
}
},
}]
},
'_formdata_#itemData#3#passportNumber': {
rules: [{
required: true,
errorMessage: '请填写护照号码',
trigger: 'blur'
}]
},
'_formdata_#itemData#4#name': {
rules: [{
required: true,
errorMessage: '请填写姓名',
trigger: 'blur'
}]
},
'_formdata_#itemData#4#idCardNumber': {
rules: [{
required: true,
errorMessage: '请填写身份证件号码',
}, {
validateFunction: function(rule, value, data, callback) {
let idreg =
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
if (!idreg.test(value)) {
callback('请填写正确的身份证件号码')
} else {
return true
}
},
}]
},
'_formdata_#itemData#4#passportNumber': {
rules: [{
required: true,
errorMessage: '请填写护照号码',
trigger: 'blur'
}]
},
errorMessage: '护照号码不能为空'
}, ]
}
},
isPass: false,
idcardList: [{
"value": '5501',
"text": "身份证"
@ -264,17 +129,17 @@
"text": "护照"
}],
isAdd: true,
errList: []
};
},
onLoad(options) {
this.propData = JSON.parse(options.data)
console.log(this.propData)
},
mounted() {
created() {
this.addReserve()
},
methods: {
//
//
addReserve: function() {
if (this.isAdd) {
let newData = {
@ -284,33 +149,41 @@
idCardNumber: "",
passportNumber: "",
}
this.formData.itemData.push(newData);
if (this.formData.itemData.length > 4) {
//
this.dynamicLists.push(newData);
if (this.dynamicLists.length > 4) {
this.isAdd = false
}
}
},
//
delReserve: function(index) {
this.formData.itemData.splice(index, 1);
if (this.formData.itemData.length <= 4) {
this.dynamicLists.splice(index, 1);
if (this.dynamicLists.length <= 4) {
this.isAdd = true
}
},
//
saveReserve: function() {
this.$refs.form.validate().then(res => {
this.postReserve()
}).catch(err => {
console.log('表单错误信息:', err);
let errList = []
const promises = this.dynamicLists.map((item, index) => {
return new Promise(resolve => {
this.$refs.form[index].validate(err => {
errList = err
})
})
})
setTimeout(() => {
if (errList == null) {
this.postReserve()
}
}, 500)
},
//
postReserve: function() {
const that = this
let newList = that.formData.itemData.map((item, index) => {
let newList = that.dynamicLists.map((item, index) => {
let numberDate
if (item.idCardNumber) {
numberDate = item.idCardNumber
@ -338,26 +211,26 @@
startTime: that.propData.startTime,
endTime: that.propData.endTime,
scenicId: that.propData.scenicId,
externalId: that.propData.externalId,
unionId: "unionIdewrqrfb",
appointmentPersonList: newList
}
console.log('data',data)
uni.request({
url: that.$config.reservationNow,
data: data,
method: "POST",
header: {
"content-type": 'application/json',
// 'Cookie':'ybsj-session=88942A641DDF00DD2E1676F4C2403CC1'
},
xhrFields: {
withCredentials: true // withCredentials
withCredentials: true
},
success: function(result) {
if (result.data.status == 200) {
if (result.data.status == 200) {
uni.showModal({
title: "提示",
content: result.data.msg,
content: '预约成功',
showCancel: false,
success() {
uni.navigateTo({
@ -368,7 +241,7 @@
})
} else if (result.data.status == 500) {
uni.showToast({
title: result.data.msg,
title: result.data.data,
icon: "none"
})
return false;
@ -389,7 +262,11 @@
padding-bottom: 120rpx;
}
.checklist-box {
.uni-data-checklist .checklist-group .checklist-box.is--button {
width: 50% !important;
}
.uni-forms-item__label {
padding: 0 !important;
}
</style>

@ -95,9 +95,9 @@
});
},
//
getDateList: function(date, index) {
getDateList: function(date, index) {
const that = this
let getData
let getData
if (date) {
getData = date
} else {
@ -106,7 +106,7 @@
let queryParams = {
date: getData,
scenicId: this.scenicId,
}
}
this.$Request.get(this.$config.appointmentList, queryParams).then(res => {
if (res.status == 200) {
//
@ -127,14 +127,15 @@
endTime: that.formatTime(item.endTime),
reservableQuantity: item.reservableQuantity,
reservedQuantity: item.reservedQuantity,
yState: this.getDataState(getData, item)
yState: this.getDataState(getData, item),
externalId:item.externalId
}
})
}
});
},
getDateIndex(data,index) {
getDateIndex(data, index) {
this.changeIndex = index;
this.getDateList(data)
},
@ -173,10 +174,10 @@
}
return newYear + '-' + newMonth + '-' + newDate
},
formatTime(time) {
formatTime(time) {
var hour = time.split(":")[0];
var min = time.split(":")[1];
return hour+':'+min;
return hour + ':' + min;
},
numData(data) {
let newDate = data.split("-")
@ -218,9 +219,10 @@
scenicId: this.scenicId,
startTime: item.startTime,
endTime: item.endTime,
externalId: item.externalId
}
let parameData = JSON.stringify(data)
console.log('parameData', parameData)
uni.navigateTo({
url: '/sunPackIndex/scenic/subscribe/yuyue/yue_form_js?data=' + parameData
});

Loading…
Cancel
Save