|
@@ -8,7 +8,7 @@
|
|
|
<view class="page-wrap">
|
|
|
<view class="base-info">
|
|
|
<view class="up u-flex">
|
|
|
- <image class="img" :src="pageContent.performImg" mode="aspectFill" alt="">
|
|
|
+ <image class="img" :src="pageContent.performImg" mode="aspectFill" alt="" />
|
|
|
<view class="text">
|
|
|
<view class="name text-item">{{pageContent.performName}}-{{pageContent.goodsName}}</view>
|
|
|
<view class="time text-item">日期 {{pageContent.timeDate}}({{pageContent.timeWeek}})</view>
|
|
@@ -16,11 +16,6 @@
|
|
|
{{pageContent.performTimeEnd}}</view>
|
|
|
<view class="num text-item">{{pageContent.goodsName}} / {{pageContent.seatTypeName}}</view>
|
|
|
<view class=" text-item">{{pageContent.auditoriumName}}</view>
|
|
|
- <!-- <view class="position text-item">{{performInfo.name}}</view> -->
|
|
|
- <!-- <view class="addr u-flex u-row-between">
|
|
|
- <view class="u-line-1">地址:遵义市《伟大转折》演艺中心</view>
|
|
|
- <u-icon name="arrow-right" color="#2D2D2D" size="36rpx"></u-icon>
|
|
|
- </view> -->
|
|
|
</view>
|
|
|
</view>
|
|
|
<view class="down">
|
|
@@ -30,19 +25,6 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <!-- <view class="block-wrap purchaser">
|
|
|
- <view class="block-title u-flex">
|
|
|
- <view class="name">购票人信息</view>
|
|
|
- </view>
|
|
|
- <view class="" v-if="vuex_member_info.isAuth">
|
|
|
- <view class="item">姓名:{{pageContent.purchaser.name}}</view>
|
|
|
- <view class="item">手机号:{{pageContent.purchaser.mobile|hidePhoneNumber}}</view>
|
|
|
- <view class="item">身份证:{{pageContent.purchaser.cardId|maskID}}</view>
|
|
|
- </view>
|
|
|
- <view class="un-auth" v-else @click="$u.route('center/factorauth',{from:'bookticket'})">
|
|
|
- 请先<text style="color: #ED0000;">实名认证</text>
|
|
|
- </view>
|
|
|
- </view> -->
|
|
|
<view class="block-wrap linkman">
|
|
|
<view class="block-title u-flex">
|
|
|
<view class="name">带队负责人</view>
|
|
@@ -64,55 +46,52 @@
|
|
|
<text class="tip" v-if="pageContent.touristMin">最少{{pageContent.touristMin}}个观影人</text>
|
|
|
<text class="tip" v-if="pageContent.touristMax">最多{{pageContent.touristMax}}个观影人</text>
|
|
|
</view>
|
|
|
- <!-- <text v-if="needIdcardNumber">需要{{needIdcardNumber}}张身份证</text> -->
|
|
|
</view>
|
|
|
<view class="people-list">
|
|
|
- <!-- <view class="people btn" v-if="visitors.length>0" v-for="(visitor,index) in visitors" :key="index">
|
|
|
- {{visitor.name}}
|
|
|
- </view> -->
|
|
|
- <!-- <view class="add-wrap" v-if="visitors.length<needIdcardNumber||!needIdcardNumber"> -->
|
|
|
- <view class="add-wrap">
|
|
|
- <u--input placeholder="请输入观影人姓名" border="surround" v-model="newVisitor.name"></u--input>
|
|
|
- <u--input placeholder="请输入观影人身份证" border="surround" v-model="newVisitor.cardId"></u--input>
|
|
|
+ <view class="add-wrap" >
|
|
|
+ <!-- v-if="!fileList.length" -->
|
|
|
+ <u--input placeholder="请输入观影人姓名" border="surround" v-model="newVisitor.name"></u--input>
|
|
|
+ <u--input placeholder="请输入观影人身份证" border="surround" v-model="newVisitor.cardId"></u--input>
|
|
|
</view>
|
|
|
- <!-- v-if="visitors.length<needIdcardNumber||!needIdcardNumber" -->
|
|
|
- <view class="btn u-flex u-row-center" @click="addVisitor">
|
|
|
- <u-icon name="plus-circle" color="#2D2D2D" size="32rpx"></u-icon>
|
|
|
- <text class="text">新增观影人</text>
|
|
|
+ <view class="btn-wrap u-flex">
|
|
|
+ <view class="btn u-flex u-row-center" @click="addVisitor">
|
|
|
+ <u-icon name="plus-circle" color="#2D2D2D" size="32rpx"></u-icon>
|
|
|
+ <text class="text">新增观影人</text>
|
|
|
+ </view>
|
|
|
+ <view class="btn u-flex u-row-center">
|
|
|
+ <!-- :fileList="fileList" -->
|
|
|
+ <u-upload
|
|
|
+ @afterRead="afterRead"
|
|
|
+ :maxSize="5 * 1024 * 1024"
|
|
|
+ @oversize="onOversize"
|
|
|
+ accept=".xlsx,.xls"
|
|
|
+ :maxCount="1"
|
|
|
+ @select="onSelect"
|
|
|
+ >
|
|
|
+ <view class="upload-btn u-flex u-row-center">
|
|
|
+ <u-icon name="plus-circle" color="#2D2D2D" size="32rpx"></u-icon>
|
|
|
+ <text class="text">导入观影人(限制5M)</text>
|
|
|
+ </view>
|
|
|
+ </u-upload>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <!-- <view class="no-people u-flex" v-if="!visitors.length>0">
|
|
|
- <text>游客</text>
|
|
|
- <text class="right" @click="visitorShow = true">点击选择游客</text>
|
|
|
- </view> -->
|
|
|
<view class="peoples" v-if="visitors.length>0">
|
|
|
- <view class="peoples-item u-flex u-row-between" v-for="(visitor,index) in visitors" :key="index">
|
|
|
+ <view class="peoples-item u-flex u-row-between" v-for="(visitor,index) in displayVisitors" :key="index">
|
|
|
<view class="left u-flex">
|
|
|
<u-icon @click="delVisitor(visitor)" name="close-circle" color="#2D2D2D"
|
|
|
size="32rpx"></u-icon>
|
|
|
- <text style="margin-left: 8rpx;">观影人{{ index + 1 }}</text>
|
|
|
+ <text class="serial">{{ index + 1 }}</text>
|
|
|
<text class="name">{{visitor.name}}</text>
|
|
|
- <!-- <text class="people-id">{{ visitor.cardId | maskID }}</text> -->
|
|
|
+ <text class="cardId">{{visitor.cardId}}</text>
|
|
|
</view>
|
|
|
- <!-- <view class="right" @click="editVisitor(visitor)">编辑</view> -->
|
|
|
</view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <!-- <view class="coupon">
|
|
|
- <view class="title u-flex u-row-between u-border-bottom">
|
|
|
- <text>本单可享优惠</text>
|
|
|
- </view>
|
|
|
- <view class="single-til u-flex u-row-between">
|
|
|
- <view class="text">优惠券</view>
|
|
|
- <view class="more-text u-flex">
|
|
|
- <text>未使用</text>
|
|
|
- <u-icon name="arrow-right" color="#E6E6E6" size="24rpx"></u-icon>
|
|
|
+ <view class="expand-btn" v-if="visitors.length > 5" @click="showAllVisitors = !showAllVisitors">
|
|
|
+ {{ showAllVisitors ? '收起' : '展开查看更多' }}
|
|
|
+ <u-icon :name="showAllVisitors ? 'arrow-up' : 'arrow-down'" size="24rpx" color="#666"></u-icon>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="no-coupon">
|
|
|
- 您暂无可使用优惠券~
|
|
|
- </view>
|
|
|
- </view> -->
|
|
|
+ </view>
|
|
|
<view class="notice">
|
|
|
<view class="title u-flex u-row-between u-border-bottom">
|
|
|
<text>购票须知</text>
|
|
@@ -120,16 +99,6 @@
|
|
|
<view class="notice-item parse-content">
|
|
|
<u-parse :content="pageContent.ticketNotice"></u-parse>
|
|
|
</view>
|
|
|
- <!-- <view class="notice-item">
|
|
|
- 1.由于设备故障等不可抗力因素,存在少量场次取消的情况,会
|
|
|
- 进行退票退款
|
|
|
- </view>
|
|
|
- <view class="notice-item">
|
|
|
- 2.由于影院系统不稳定等因素,存在出票失败的情况,会进行退款
|
|
|
- </view>
|
|
|
- <view class="notice-item">
|
|
|
- 3.取票码可以在“我的-订单页”中查看
|
|
|
- </view> -->
|
|
|
</view>
|
|
|
</view>
|
|
|
<u-popup :show="visitorShow">
|
|
@@ -139,7 +108,6 @@
|
|
|
选择观影人
|
|
|
</view>
|
|
|
<view class="add-btn u-flex u-row-center" @click="addVisitor">
|
|
|
- <!-- <image class="img" :src="staticUrl+'/img/car.png'" ></image> -->
|
|
|
添加观影人信息
|
|
|
</view>
|
|
|
<view class="list">
|
|
@@ -222,14 +190,14 @@
|
|
|
},
|
|
|
linkName:'',
|
|
|
linkPhone:'',
|
|
|
-
|
|
|
+ fileList: [], // 上传的文件列表
|
|
|
+ fileUrl: '', // 上传的文件URL
|
|
|
+ showAllVisitors: false, // 是否显示所有观影人
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
totalPrice() {
|
|
|
let that = this;
|
|
|
- console.log('that.pageData.priceType',that.pageContent.priceType);
|
|
|
- console.log('that.pageData.priceType',typeof that.pageContent.priceType);
|
|
|
if(that.pageContent.priceType===1){
|
|
|
if(this.visitors.length>0){
|
|
|
return that.pageContent.salePrice
|
|
@@ -260,13 +228,14 @@
|
|
|
}else if(this.pageContent.oneMany===2){
|
|
|
return 1
|
|
|
}
|
|
|
+ },
|
|
|
+ displayVisitors() {
|
|
|
+ return this.showAllVisitors ? this.visitors : this.visitors.slice(0, 5);
|
|
|
}
|
|
|
},
|
|
|
onShow() {
|
|
|
- // this.getSettlement();
|
|
|
},
|
|
|
onLoad(page) {
|
|
|
- console.log('page', page);
|
|
|
this.pageData = page;
|
|
|
this.performId = page.performId;
|
|
|
this.pageData.performTimeId = page.performTimeId;
|
|
@@ -276,11 +245,89 @@
|
|
|
|
|
|
this.getSystemInfo();
|
|
|
this.getSettlement();
|
|
|
-
|
|
|
- // this.getTemplateIdList(); //获取微信订阅模板列表
|
|
|
-
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 文件选择回调
|
|
|
+ onSelect(files) {
|
|
|
+ const file = files[0];
|
|
|
+ if (!/\.(xlsx|xls)$/i.test(file.name)) {
|
|
|
+ uni.showToast({
|
|
|
+ title: '请上传XLSX或XLS格式的文件',
|
|
|
+ icon: 'none'
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ // 文件读取后的处理
|
|
|
+ afterRead(files) {
|
|
|
+ this.fileList = [files.file];
|
|
|
+ const size = this.fileList[0].size/1024/1024;//M
|
|
|
+ if(size>5){
|
|
|
+ this.onOversize();
|
|
|
+ return
|
|
|
+ }
|
|
|
+ uni.showLoading({
|
|
|
+ title: '文件上传中...'
|
|
|
+ });
|
|
|
+ uni.uploadFile({
|
|
|
+ url: this.$commonConfig.baseUrl+'/member/marketTeamApplyViewer/analysis',
|
|
|
+ filePath: files.file.url,
|
|
|
+ name: 'file',
|
|
|
+ header: {
|
|
|
+ 'Authorization': `Bearer ${this.vuex_user_info.accessToken}`
|
|
|
+ },
|
|
|
+ formData: {
|
|
|
+ bucket: 'greattransition'
|
|
|
+ },
|
|
|
+ success: (res) => {
|
|
|
+ if (res.statusCode === 200) {
|
|
|
+ const data = JSON.parse(res.data);
|
|
|
+ if (data.code === 200) {
|
|
|
+ const newVisitors = data.data || [];
|
|
|
+ const uniqueVisitors = newVisitors.filter(newVisitor => {
|
|
|
+ return !this.visitors.some(existingVisitor =>
|
|
|
+ existingVisitor.cardId === newVisitor.cardId
|
|
|
+ );
|
|
|
+ });
|
|
|
+ this.visitors = [...this.visitors, ...uniqueVisitors];
|
|
|
+ uni.showToast({
|
|
|
+ title: '导入成功',
|
|
|
+ icon: 'success'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.clearFile();
|
|
|
+ uni.showToast({
|
|
|
+ title: data.msg || '导入失败',
|
|
|
+ icon: 'none'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: () => {
|
|
|
+ this.clearFile();
|
|
|
+ uni.showToast({
|
|
|
+ title: '导入失败',
|
|
|
+ icon: 'none'
|
|
|
+ });
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ uni.hideLoading();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 文件大小超出限制
|
|
|
+ onOversize() {
|
|
|
+ uni.showToast({
|
|
|
+ title: '文件大小不能超过5M',
|
|
|
+ icon: 'none'
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 清除已上传的文件
|
|
|
+ clearFile() {
|
|
|
+ this.fileList = [];
|
|
|
+ this.fileUrl = '';
|
|
|
+ },
|
|
|
leftClick(e) {
|
|
|
let pages = getCurrentPages();
|
|
|
if (pages.length == 1) {
|
|
@@ -291,31 +338,11 @@
|
|
|
},
|
|
|
getSettlement() {
|
|
|
this.$u.api.getSettlement(this.pageData).then(res => {
|
|
|
- // console.log('getSettlement',res.data);
|
|
|
this.pageContent = res.data;
|
|
|
- // this.getMemberAll();
|
|
|
}).catch(err => {
|
|
|
console.log('getSettlement', err);
|
|
|
})
|
|
|
},
|
|
|
- getMemberAll() {
|
|
|
- let that = this;
|
|
|
- // const userId = this.vuex_member_info.id;
|
|
|
- const userId = this.pageContent.viewerList[0]?.id;
|
|
|
- this.$u.api.selectMemberAll({
|
|
|
- userid: userId
|
|
|
- }).then(res => {
|
|
|
- // console.log('getMemberAll',res.data);
|
|
|
- this.visitorList = res.data.list;
|
|
|
- // this.visitors = this.visitorList.filter(obj => obj.memberId==userId);
|
|
|
- this.visitors = this.visitorList.filter(obj => that.selectedVisitor.includes(obj.cardId));
|
|
|
- // console.log('this.visitorList',this.visitorList);
|
|
|
- // console.log('this.selectedVisitor',this.selectedVisitor);
|
|
|
- // console.log('this.visitors',this.visitors);
|
|
|
- }).catch(err => {
|
|
|
- console.log('getMemberAll', err);
|
|
|
- })
|
|
|
- },
|
|
|
confirmVisitor() {
|
|
|
let that = this;
|
|
|
if(this.needIdcardNumber&&this.needIdcardNumber!==this.selectedVisitor.length){
|
|
@@ -325,7 +352,6 @@
|
|
|
})
|
|
|
return false
|
|
|
}
|
|
|
- // console.log('selectedVisitor',this.selectedVisitor);
|
|
|
this.visitorShow = false;
|
|
|
this.visitors = this.visitorList.filter(obj => that.selectedVisitor.includes(obj.id)).map(item => {
|
|
|
return {
|
|
@@ -334,11 +360,8 @@
|
|
|
cardId: item.cardId
|
|
|
}
|
|
|
});
|
|
|
- // console.log('this.visitors',this.visitors);
|
|
|
},
|
|
|
delVisitor(visitor) {
|
|
|
- // console.log('delVisitor',visitor);
|
|
|
- // console.log('this.visitors',this.visitors);
|
|
|
this.visitors = this.visitors.filter(obj => obj.cardId != visitor.cardId);
|
|
|
},
|
|
|
addVisitor() {
|
|
@@ -357,47 +380,7 @@
|
|
|
cardId: item.cardId,
|
|
|
});
|
|
|
},
|
|
|
- getTemplateIdList() {
|
|
|
- this.$u.api.templateIdList({
|
|
|
- templateLabel: 'order_pay'
|
|
|
- }).then(res => {
|
|
|
- console.log('getTemplateIdList', res.data);
|
|
|
- this.templateIdList = res.data.list.map(item => {
|
|
|
- return item.templateId
|
|
|
- });
|
|
|
- // if(this.templateIdList.length>0){
|
|
|
- // this.templateEven();
|
|
|
- // }
|
|
|
- }).catch(err => {
|
|
|
- console.log('getTemplateIdList', err);
|
|
|
- })
|
|
|
- },
|
|
|
applyOrder(){
|
|
|
- // 一证多票调整暂时隐藏
|
|
|
- // if(this.needIdcardNumber&&this.needIdcardNumber!==this.visitors.length){
|
|
|
- // uni.showToast({
|
|
|
- // title:'观影人信息不正确',
|
|
|
- // icon:'none'
|
|
|
- // })
|
|
|
- // return false
|
|
|
- // }
|
|
|
- // if(this.pageContent.oneMany === 2 && this.pageContent.personnelNum!==0){//一证多票,补齐观影人信息
|
|
|
- // let dontNeedCardsNumber = this.pageContent.personnelNum - this.visitors.length;
|
|
|
- // if(dontNeedCardsNumber>0){//
|
|
|
- // for (let i = 0;i<dontNeedCardsNumber;i++) {
|
|
|
- // console.log('dontNeedCardsNumber',dontNeedCardsNumber);
|
|
|
- // console.log('this.visitors---',this.visitors);
|
|
|
- // this.visitors.push({
|
|
|
- // name: this.visitors[0].name,
|
|
|
- // cardId: this.visitors[0].cardId,
|
|
|
- // // mobile: this.visitors[0].mobile,
|
|
|
- // });
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // 一证多票调整暂时隐藏
|
|
|
- console.log('applyOrder');
|
|
|
-
|
|
|
if(!this.linkName||!this.linkPhone){
|
|
|
uni.showToast({
|
|
|
title:'请填写带队负责人信息',
|
|
@@ -414,7 +397,6 @@
|
|
|
}
|
|
|
|
|
|
this.cansubmit = false;
|
|
|
- // console.log('this.pageContent',this.pageContent);
|
|
|
let params = {
|
|
|
theatreId:this.theatreId,
|
|
|
theatreName:this.theatreName,
|
|
@@ -434,7 +416,6 @@
|
|
|
linkPhone:this.linkPhone,
|
|
|
|
|
|
}
|
|
|
- console.log('params',params);
|
|
|
this.$u.api.teamApply(params).then(res => {
|
|
|
uni.$u.route('/center/paysuccess')
|
|
|
}).catch(err => {
|
|
@@ -443,318 +424,24 @@
|
|
|
console.log('applyOrder', err);
|
|
|
})
|
|
|
},
|
|
|
- submitorder() {
|
|
|
- if(this.needIdcardNumber&&this.needIdcardNumber!==this.visitors.length){
|
|
|
- uni.showToast({
|
|
|
- title:'观影人信息不正确',
|
|
|
- icon:'none'
|
|
|
- })
|
|
|
- return false
|
|
|
- }
|
|
|
- if(this.pageContent.oneMany === 2 && this.pageContent.personnelNum!==0){//一证多票,补齐观影人信息
|
|
|
- let dontNeedCardsNumber = this.pageContent.personnelNum - this.visitors.length;
|
|
|
- if(dontNeedCardsNumber>0){//
|
|
|
- for (let i = 0;i<dontNeedCardsNumber;i++) {
|
|
|
- console.log('dontNeedCardsNumber',dontNeedCardsNumber);
|
|
|
- this.visitors.push({
|
|
|
- name: this.visitors[0].name,
|
|
|
- idcard: this.visitors[0].idcard,
|
|
|
- mobile: this.visitors[0].mobile,
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- let params = {
|
|
|
- performId: this.pageContent.performId,
|
|
|
- goodsList: [{
|
|
|
- goodsId: this.pageContent.goodsId,
|
|
|
- salePeice: this.pageContent.salePrice,
|
|
|
- saleNum: 1
|
|
|
- }],
|
|
|
- auditoriumId: this.pageContent.auditoriumId,
|
|
|
- performTimeId: this.pageContent.performTimeId,
|
|
|
- seatTypeId: this.pageContent.seatTypeId,
|
|
|
- purchaser: {
|
|
|
- name: this.pageContent.purchaser.name,
|
|
|
- mobile: this.pageContent.purchaser.mobile,
|
|
|
- cardId: this.pageContent.purchaser.cardId
|
|
|
- },
|
|
|
- viewerList: this.visitors
|
|
|
- }
|
|
|
- // #ifdef MP
|
|
|
- params['source'] = 1
|
|
|
- // #endif
|
|
|
- // #ifdef H5
|
|
|
- params['source'] = 4
|
|
|
- // #endif
|
|
|
- this.cansubmit = false;
|
|
|
- // console.log('pageData',this.pageData);
|
|
|
- // console.log('visitors',this.visitors);
|
|
|
- // console.log('params',params);
|
|
|
- this.$u.api.submitOrder(params).then(res => {
|
|
|
- // console.log('submitOrder',res.data);
|
|
|
- this.orderId = res.data.orderId;
|
|
|
- // this.templateEven()
|
|
|
- this.setTemplate();
|
|
|
-
|
|
|
- }).catch(err => {
|
|
|
- this.cansubmit = true;
|
|
|
- uni.$u.toast(err.msg);
|
|
|
- if (err.msg.includes('限购')) {
|
|
|
- setTimeout(() => {
|
|
|
- uni.$u.route('/center/order', {
|
|
|
- status: 0
|
|
|
- });
|
|
|
- }, 2000)
|
|
|
- }
|
|
|
- console.log('submitOrder', err);
|
|
|
- })
|
|
|
- },
|
|
|
- // 订阅消息
|
|
|
- templateEven() {
|
|
|
- let that = this
|
|
|
- wx.showModal({
|
|
|
- title: '温馨提示',
|
|
|
- content: '为更好的促进与您的交流,服务号需要实时向您发送消息',
|
|
|
- confirmText: "同意",
|
|
|
- cancelText: "拒绝",
|
|
|
- success: function(res) {
|
|
|
- if (res.confirm) {
|
|
|
- //调用订阅消息
|
|
|
- console.log('用户点击确定');
|
|
|
- //调用订阅
|
|
|
- that.setTemplate();
|
|
|
- } else if (res.cancel) {
|
|
|
- console.log('用户点击取消');
|
|
|
- ///显示第二个弹说明一下
|
|
|
- wx.showModal({
|
|
|
- title: '温馨提示',
|
|
|
- content: '拒绝后您将无法获取实时的消息',
|
|
|
- confirmText: "知道了",
|
|
|
- showCancel: false,
|
|
|
- success: function(res) {
|
|
|
- that.gotoPay();
|
|
|
- ///点击知道了的后续操作
|
|
|
- ///如跳转首页面
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- // 设置小程序订阅消息
|
|
|
- setTemplate() {
|
|
|
- let that = this;
|
|
|
- console.log('templateIdList', this.templateIdList);
|
|
|
- // #ifdef MP
|
|
|
- uni.requestSubscribeMessage({
|
|
|
- tmplIds: that.templateIdList,
|
|
|
- success(res) {
|
|
|
- // that.gotoPay();
|
|
|
- console.log("success:", res);
|
|
|
- },
|
|
|
- fail(res) {
|
|
|
- console.log("fail:", res);
|
|
|
- },
|
|
|
- complete(res) {
|
|
|
- that.gotoPay();
|
|
|
- console.log("complete:", res);
|
|
|
- }
|
|
|
- })
|
|
|
- // #endif
|
|
|
- // #ifdef H5
|
|
|
- that.gotoPay()
|
|
|
- // #endif
|
|
|
- },
|
|
|
- gotoPay() {
|
|
|
- this.$u.api.gotoPay({
|
|
|
- orderId: this.orderId,
|
|
|
- openid: ''
|
|
|
- }).then(res => {
|
|
|
- this.payResult = res.data.payInfo;
|
|
|
- this.payResult.package = res.data.payInfo.packageValue;
|
|
|
- // #ifdef H5
|
|
|
- this.initConfig(this.payResult)
|
|
|
- // #endif
|
|
|
- // #ifdef MP
|
|
|
- this.wxPay()
|
|
|
- // #endif
|
|
|
-
|
|
|
-
|
|
|
- // if(this.params.paymentMode==1||this.params.paymentMode==4){
|
|
|
- // this.wxPay()
|
|
|
- // }else{
|
|
|
- // uni.$u.route('/shopping/paysuccess');
|
|
|
- // }
|
|
|
- console.log('gotoPayres', res.data);
|
|
|
- }).catch(err => {
|
|
|
- this.cansubmit = true;
|
|
|
- // this.paypass = '';
|
|
|
- // this.checkPassShow = false;
|
|
|
- console.log('gotoPay', err);
|
|
|
- })
|
|
|
- },
|
|
|
- wxPay() {
|
|
|
- let that = this;
|
|
|
- uni.requestPayment({
|
|
|
- ...this.payResult,
|
|
|
- "provider": "wxpay",
|
|
|
- "orderInfo": {
|
|
|
- // "appid": "wx499********7c70e", // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
|
|
|
- // "noncestr": "c5sEwbaNPiXAF3iv", // 随机字符串
|
|
|
- // "package": "Sign=WXPay", // 固定值
|
|
|
- // "partnerid": "148*****52", // 微信支付商户号
|
|
|
- // "prepayid": "wx202254********************fbe90000", // 统一下单订单号
|
|
|
- // "timestamp": 1597935292, // 时间戳(单位:秒)
|
|
|
- // "sign": "A842B45937F6EFF60DEC7A2EAA52D5A0" // 签名,这里用的 MD5/RSA 签名
|
|
|
- },
|
|
|
- success(res) {
|
|
|
- that.payQuery();
|
|
|
- },
|
|
|
- fail(e) {
|
|
|
- uni.$u.route('/center/order', {
|
|
|
- status: 0
|
|
|
- });
|
|
|
- console.log('wxPayfail', e);
|
|
|
- },
|
|
|
- complete() {
|
|
|
- this.cansubmit = true;
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- payQuery() {
|
|
|
- let that = this;
|
|
|
- let retryCount = 0;
|
|
|
- let maxRetryCount = 5; // 设置最大重试次数
|
|
|
- let interval = 2000; // 设置间隔时间为2秒
|
|
|
- let timeout = 10000; // 设置超时时间为10秒
|
|
|
- let timer;
|
|
|
- uni.showLoading({
|
|
|
- title: '支付结果查询中'
|
|
|
- })
|
|
|
- timer = setInterval(() => {
|
|
|
- retryCount++;
|
|
|
- if (retryCount > maxRetryCount || retryCount * interval > timeout) {
|
|
|
- clearInterval(timer);
|
|
|
- uni.hideLoading();
|
|
|
- console.log("支付查询超时或达到最大重试次数");
|
|
|
- // 在这里添加超时或达到最大重试次数的处理逻辑
|
|
|
- uni.$u.route('/center/order');
|
|
|
- } else {
|
|
|
- console.log("第" + retryCount + "次查询");
|
|
|
- // 调用查询支付状态的方法
|
|
|
- // 如果支付状态为成功,则清除定时器并处理成功的逻辑
|
|
|
- // 如果支付状态为失败,则清除定时器并处理失败的逻辑
|
|
|
- this.$u.api.payQuery({
|
|
|
- orderId: this.orderId
|
|
|
- }).then(res => {
|
|
|
- // 0-未支付 1-已支付 2-支付中 3-支付失败 4-支付退款
|
|
|
- let payStatus = res.data.payStatus;
|
|
|
- if (payStatus === 1) {
|
|
|
- uni.$u.route('/center/order', {
|
|
|
- status: 3
|
|
|
- });
|
|
|
- // uni.$u.route('/center/paysuccess');
|
|
|
- } else if (payStatus === 0 || payStatus === 2) {
|
|
|
- this.payQuery()
|
|
|
- } else if (payStatus === 3) {
|
|
|
- uni.$u.toast('支付失败')
|
|
|
- }
|
|
|
- clearInterval(timer);
|
|
|
- }).catch(err => {
|
|
|
- console.log('payQuery', err);
|
|
|
- }).finally(() => {
|
|
|
- uni.hideLoading()
|
|
|
- })
|
|
|
- }
|
|
|
- }, interval);
|
|
|
- },
|
|
|
addVisitor(){
|
|
|
- // if(this.needIdcardNumber&&this.visitors.length>=this.needIdcardNumber){
|
|
|
- // uni.showToast({
|
|
|
- // title:'不需要身份证了',
|
|
|
- // icon:'none'
|
|
|
- // })
|
|
|
- // return false
|
|
|
- // }
|
|
|
if(!this.newVisitor.name){
|
|
|
uni.$u.toast('请填写观影人姓名')
|
|
|
return
|
|
|
}
|
|
|
- // !uni.$u.test.idCard(this.newVisitor.cardId)
|
|
|
if(!this.newVisitor.cardId){
|
|
|
uni.$u.toast('请填写观影人身份证')
|
|
|
return
|
|
|
}
|
|
|
- // console.log('this.newVisitor.cardId',this.newVisitor.cardId);
|
|
|
- // console.log('visitors',this.visitors);
|
|
|
- // 检查是否存在相同身份证号的观影人
|
|
|
if(this.pageContent.oneMany==1){
|
|
|
if(this.visitors.some(visitor => visitor.cardId === this.newVisitor.cardId)){
|
|
|
uni.$u.toast('相同身份证号的观影人已存在')
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- console.log('this.newVisitor',this.newVisitor);
|
|
|
this.visitors.push(this.newVisitor);
|
|
|
this.newVisitor = {name:'',cardId:''};
|
|
|
- // this.$u.api.authID({name:this.newVisitor.name,idcard:this.newVisitor.cardId}).then(res=>{
|
|
|
- // if(res.data.status===1){
|
|
|
- // this.visitors.push(this.newVisitor);
|
|
|
- // this.newVisitor = {name:'',cardId:''};
|
|
|
- // }else{
|
|
|
- // uni.$u.toast(res.data.errReason)
|
|
|
- // }
|
|
|
- // // console.log('res',res.data);
|
|
|
- // }).catch(err=>{
|
|
|
- // uni.$u.toast('认证失败')
|
|
|
- // console.log('login',err);
|
|
|
- // })
|
|
|
-
|
|
|
},
|
|
|
-
|
|
|
- /**
|
|
|
- * 公众号微信支付
|
|
|
- */
|
|
|
- initConfig() {
|
|
|
- // #ifdef H5
|
|
|
- let that = this
|
|
|
- wxH5.config({
|
|
|
- debug: false, // 这里一般在测试阶段先用ture,等打包给后台的时候就改回false,
|
|
|
- appId: that.payResult.appId, // 必填,公众号的唯一标识
|
|
|
- timestamp: that.payResult.timeStamp, // 必填,生成签名的时间戳
|
|
|
- nonceStr: that.payResult.nonceStr, // 必填,生成签名的随机串
|
|
|
- signature: that.payResult.paySign, // 必填,签名
|
|
|
- jsApiList: ['chooseWXPay', 'checkJsApi'] // 必填,需要使用的JS接口列表
|
|
|
- })
|
|
|
- wxH5.ready(() => {
|
|
|
- wxH5.chooseWXPay({
|
|
|
- timestamp: that.payResult.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
|
|
|
- nonceStr: that.payResult.nonceStr, // 支付签名随机串,不长于 32 位
|
|
|
- package: that.payResult.packageValue, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
|
|
|
- signType: 'SHA1', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
|
|
|
- paySign: that.payResult.paySign, // 支付签名
|
|
|
- success: () => {
|
|
|
- that.payQuery();
|
|
|
- },
|
|
|
- fail: (e) => {
|
|
|
- uni.$u.route('/center/order', {
|
|
|
- status: 0
|
|
|
- });
|
|
|
- console.log('wxPayfail', e);
|
|
|
- },
|
|
|
- cancel: () => {
|
|
|
- uni.$u.route('/center/order', {
|
|
|
- status: 0
|
|
|
- });
|
|
|
- that.cansubmit = true;
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- // #endif
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
@@ -842,24 +529,12 @@
|
|
|
padding: 32rpx 30rpx 34rpx;
|
|
|
|
|
|
.block-title {
|
|
|
- // padding-left: 16rpx;
|
|
|
position: relative;
|
|
|
margin-bottom: 22rpx;
|
|
|
font-size: 24rpx;
|
|
|
font-weight: 500;
|
|
|
color: #CACACA;
|
|
|
|
|
|
- // &:before{
|
|
|
- // content: '';
|
|
|
- // width: 6rpx;
|
|
|
- // height: 32rpx;
|
|
|
- // background: #1677FF;
|
|
|
- // border-radius: 4rpx;
|
|
|
- // position: absolute;
|
|
|
- // left: 0;
|
|
|
- // top: 50%;
|
|
|
- // margin-top: -16rpx;
|
|
|
- // }
|
|
|
.name {
|
|
|
font-size: 32rpx;
|
|
|
font-weight: bold;
|
|
@@ -883,13 +558,17 @@
|
|
|
font-size: 28rpx;
|
|
|
font-weight: 400;
|
|
|
color: #7F7F7F;
|
|
|
- margin-bottom: 24rpx;
|
|
|
+ // margin-bottom: 24rpx;
|
|
|
|
|
|
.peoples-item {
|
|
|
margin-bottom: 10rpx;
|
|
|
}
|
|
|
-
|
|
|
+ .serial{
|
|
|
+ margin-left: 3px;
|
|
|
+ min-width: 2em;
|
|
|
+ }
|
|
|
.name {
|
|
|
+ min-width: 4em;
|
|
|
margin-left: 20rpx;
|
|
|
margin-right: 28rpx;
|
|
|
font-size: 28rpx;
|
|
@@ -913,9 +592,12 @@
|
|
|
|
|
|
.people-list {
|
|
|
margin-bottom: 20rpx;
|
|
|
+ .btn-wrap{
|
|
|
+ gap: 10px;
|
|
|
+ }
|
|
|
|
|
|
.btn {
|
|
|
- width: 185rpx;
|
|
|
+ min-width: 185rpx;
|
|
|
height: 60rpx;
|
|
|
line-height: 60rpx;
|
|
|
font-size: 24rpx;
|
|
@@ -1144,4 +826,43 @@
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.upload-wrap {
|
|
|
+ margin-top: 20rpx;
|
|
|
+ .file-info {
|
|
|
+ padding: 20rpx;
|
|
|
+ background-color: #f8f8f8;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ .left {
|
|
|
+ .filename {
|
|
|
+ margin: 0 10rpx;
|
|
|
+ max-width: 400rpx;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+ .filesize {
|
|
|
+ color: #909399;
|
|
|
+ font-size: 24rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.upload-btn {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+.expand-btn {
|
|
|
+ text-align: center;
|
|
|
+ padding-top: 20rpx;
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #666;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ .u-icon {
|
|
|
+ margin-left: 10rpx;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|