|  | @@ -1,7 +1,7 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |  	<view class="pages">
 | 
	
		
			
				|  |  |  		<view class="navbar-box">
 | 
	
		
			
				|  |  | -			<u-navbar title="票务购买" :safeAreaInsetTop="true" @leftClick="leftClick" :titleStyle="{color:'#fff'}" leftIconColor="#fff" bgColor="transparent"></u-navbar>
 | 
	
		
			
				|  |  | +			<u-navbar title=" " :safeAreaInsetTop="true" @leftClick="leftClick" :titleStyle="{color:'#fff'}" leftIconColor="#fff" bgColor="transparent"></u-navbar>
 | 
	
		
			
				|  |  |  		</view>
 | 
	
		
			
				|  |  |  		<view class="banner">
 | 
	
		
			
				|  |  |  			<!-- <image class="img" :src="staticUrl+'/img/bookticket-banner.png'" alt=""> -->
 | 
	
	
		
			
				|  | @@ -13,14 +13,15 @@
 | 
	
		
			
				|  |  |  				:indicatorStyle="{bottom:'100rpx'}"
 | 
	
		
			
				|  |  |  				keyName="imageUrl"
 | 
	
		
			
				|  |  |  				radius="0"
 | 
	
		
			
				|  |  | +				@click="previewBanner"
 | 
	
		
			
				|  |  |  				:indicator="false"
 | 
	
		
			
				|  |  |  				circular
 | 
	
		
			
				|  |  |  			></u-swiper>
 | 
	
		
			
				|  |  | -			<view class="content">
 | 
	
		
			
				|  |  | +		<!-- 	<view class="content">
 | 
	
		
			
				|  |  |  				<view class="share" @click="openShare()">
 | 
	
		
			
				|  |  |  					<image class="icon" :src="staticUrl+'/img/share-ico.png'" ></image>
 | 
	
		
			
				|  |  |  				</view>
 | 
	
		
			
				|  |  | -			</view>
 | 
	
		
			
				|  |  | +			</view> -->
 | 
	
		
			
				|  |  |  		</view>
 | 
	
		
			
				|  |  |  		<view class="base-info">
 | 
	
		
			
				|  |  |  			<view class="inner">
 | 
	
	
		
			
				|  | @@ -36,6 +37,10 @@
 | 
	
		
			
				|  |  |  							<image class="icon" :src="staticUrl+'/img/phone-call-ico.png'" ></image>
 | 
	
		
			
				|  |  |  							<text>电话</text>
 | 
	
		
			
				|  |  |  						</view>
 | 
	
		
			
				|  |  | +						<view class="item"  @click="openShare()">
 | 
	
		
			
				|  |  | +							<image class="icon" :src="staticUrl+'/img/share-ico-v2.png'" ></image>
 | 
	
		
			
				|  |  | +							<text>分享</text>
 | 
	
		
			
				|  |  | +						</view>
 | 
	
		
			
				|  |  |  					<!-- 	<u-icon name="arrow-right" color="#ffffff" size="36rpx" @click="goMap"></u-icon>
 | 
	
		
			
				|  |  |  						<u-icon name="arrow-right" color="#ffffff" size="36rpx" @click="goMap"></u-icon> -->
 | 
	
		
			
				|  |  |  					</view>
 | 
	
	
		
			
				|  | @@ -91,7 +96,18 @@
 | 
	
		
			
				|  |  |  						</view>
 | 
	
		
			
				|  |  |  					</view>
 | 
	
		
			
				|  |  |  				</view>
 | 
	
		
			
				|  |  | -				<view class="date-block session-wrap">
 | 
	
		
			
				|  |  | +				<view class="date-block session-wrap generic-block">
 | 
	
		
			
				|  |  | +					<view class="title">演出场次</view>
 | 
	
		
			
				|  |  | +					<view class="empty" v-if="auditoriumList.length>=1&&sessionList.length<1">
 | 
	
		
			
				|  |  | +						当前日期暂无演出场次,请重新选择
 | 
	
		
			
				|  |  | +					</view>
 | 
	
		
			
				|  |  | +					<view class="date-list u-flex u-flex-wrap" v-else>
 | 
	
		
			
				|  |  | +						<view class="date-item" :class="{active:sessionIndex==index}" @click="sessionClick(index)" v-for="(date,index) in sessionList" :key="index">
 | 
	
		
			
				|  |  | +							<view class="name">{{ date.performTimeStart}} - {{date.performTimeEnd}}</view>
 | 
	
		
			
				|  |  | +						</view>
 | 
	
		
			
				|  |  | +					</view>
 | 
	
		
			
				|  |  | +				</view>
 | 
	
		
			
				|  |  | +				<!-- <view class="date-block generic-block session-wrap">
 | 
	
		
			
				|  |  |  					<view class="title">演出场次</view>
 | 
	
		
			
				|  |  |  					<view class="session">
 | 
	
		
			
				|  |  |  						<view class="session-item" :class="{active:sessionIndex==index}" @click="sessionClick(index)" v-for="(date,index) in sessionList" :key="index">
 | 
	
	
		
			
				|  | @@ -101,8 +117,8 @@
 | 
	
		
			
				|  |  |  					<view class="empty" v-if="auditoriumList.length>=1&&sessionList.length<1">
 | 
	
		
			
				|  |  |  						当前日期暂无演出场次,请重新选择
 | 
	
		
			
				|  |  |  					</view>
 | 
	
		
			
				|  |  | -				</view>
 | 
	
		
			
				|  |  | -				<view class="date-block ticket-type generic-block">
 | 
	
		
			
				|  |  | +				</view> -->
 | 
	
		
			
				|  |  | +				<view class="date-block ticket-type generic-block" v-if="sessionList.length>=1">
 | 
	
		
			
				|  |  |  					<view class="title">票务信息</view>
 | 
	
		
			
				|  |  |  					<view class="empty" v-if="ticketTypeList.length<1">
 | 
	
		
			
				|  |  |  						暂无门票
 | 
	
	
		
			
				|  | @@ -112,6 +128,9 @@
 | 
	
		
			
				|  |  |  							<view class="name">{{ date.goodsName }}</view>
 | 
	
		
			
				|  |  |  						</view>
 | 
	
		
			
				|  |  |  					</view>
 | 
	
		
			
				|  |  | +					<view class="goodsSnapshot" v-if="goodsSnapshot">
 | 
	
		
			
				|  |  | +						票务说明:{{goodsSnapshot}}
 | 
	
		
			
				|  |  | +					</view>
 | 
	
		
			
				|  |  |  					<!-- <view class="type-item" :class="{active:sessionIndex==index}" v-for="(item,index) in  ticketTypeList" :key="index">
 | 
	
		
			
				|  |  |  						<view class="name-price u-flex u-row-between">
 | 
	
		
			
				|  |  |  							<view class="name">{{item.goodsName}}</view>
 | 
	
	
		
			
				|  | @@ -125,7 +144,7 @@
 | 
	
		
			
				|  |  |  						</view>
 | 
	
		
			
				|  |  |  					</view> -->
 | 
	
		
			
				|  |  |  				</view>
 | 
	
		
			
				|  |  | -				<view class="date-block position-select generic-block">
 | 
	
		
			
				|  |  | +				<view class="date-block position-select generic-block"  v-if="sessionList.length>=1">
 | 
	
		
			
				|  |  |  					<view class="title u-flex u-row-between">
 | 
	
		
			
				|  |  |  						<view class="">类型选择</view>
 | 
	
		
			
				|  |  |  						<view v-if="positionData.seatImg" class="" style="font-size: 24rpx;color: #aaa" @click="showSeatImg">票区图</view>
 | 
	
	
		
			
				|  | @@ -160,7 +179,7 @@
 | 
	
		
			
				|  |  |  					</view>
 | 
	
		
			
				|  |  |  					<view class="actor-list">
 | 
	
		
			
				|  |  |  						<u-scroll-list :indicator="false">
 | 
	
		
			
				|  |  | -							<view class="item" v-for="(item, index) in actorsArr" :key="index">
 | 
	
		
			
				|  |  | +							<view class="item" v-for="(item, index) in actorsArr" :key="index"  @click="$u.route('/pages/actorsinfo',{id:item.id})">
 | 
	
		
			
				|  |  |  								<image class="img" :src="item.performerHead||staticUrl+'/img/actors.png'"></image>
 | 
	
		
			
				|  |  |  								<view class="text">
 | 
	
		
			
				|  |  |  									<view class="name">{{item.performerName}}</view>
 | 
	
	
		
			
				|  | @@ -238,7 +257,26 @@
 | 
	
		
			
				|  |  |  	// console.log('theMaxDate=============================',theMaxDate)  //输出:
 | 
	
		
			
				|  |  |  	//算最大日期
 | 
	
		
			
				|  |  |  	let parentThis= null;
 | 
	
		
			
				|  |  | +	let sharePath = '/pages/index/index';
 | 
	
		
			
				|  |  |  	export default {
 | 
	
		
			
				|  |  | +		onShareAppMessage(res) {
 | 
	
		
			
				|  |  | +		    if (res.from === 'button') {// 来自页面内分享按钮
 | 
	
		
			
				|  |  | +		      console.log(res.target)
 | 
	
		
			
				|  |  | +		    }
 | 
	
		
			
				|  |  | +		    return {
 | 
	
		
			
				|  |  | +		      title: '伟大转折演艺',
 | 
	
		
			
				|  |  | +		      path: sharePath
 | 
	
		
			
				|  |  | +		    }
 | 
	
		
			
				|  |  | +		  },
 | 
	
		
			
				|  |  | +		  onShareTimeline(res) {
 | 
	
		
			
				|  |  | +		      if (res.from === 'button') {// 来自页面内分享按钮
 | 
	
		
			
				|  |  | +		        console.log(res.target)
 | 
	
		
			
				|  |  | +		      }
 | 
	
		
			
				|  |  | +		      return {
 | 
	
		
			
				|  |  | +		        title: '伟大转折演艺',
 | 
	
		
			
				|  |  | +		        path: '/pages/ticketlist'
 | 
	
		
			
				|  |  | +		      }
 | 
	
		
			
				|  |  | +		    },
 | 
	
		
			
				|  |  |  		mixins:[systemInfo],
 | 
	
		
			
				|  |  |  		data() {
 | 
	
		
			
				|  |  |  			return {
 | 
	
	
		
			
				|  | @@ -274,6 +312,11 @@
 | 
	
		
			
				|  |  |  				positionData:{},//座位信息接口
 | 
	
		
			
				|  |  |  				positionArr:[],
 | 
	
		
			
				|  |  |  				positionIndex:0,
 | 
	
		
			
				|  |  | +				scene:null,
 | 
	
		
			
				|  |  | +				retailId:null,//分销码
 | 
	
		
			
				|  |  | +				label:null,//scene解析出来的
 | 
	
		
			
				|  |  | +				goodsSnapshot:null,//票务说明
 | 
	
		
			
				|  |  | +				retailId:null,
 | 
	
		
			
				|  |  |  				
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		},
 | 
	
	
		
			
				|  | @@ -284,14 +327,17 @@
 | 
	
		
			
				|  |  |  			parentThis = this;
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  |  			const scene = decodeURIComponent(page.scene);
 | 
	
		
			
				|  |  | -			scene&&uni.setStorage({
 | 
	
		
			
				|  |  | -				key:'scene',
 | 
	
		
			
				|  |  | -				data:scene
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | +			if(scene&&scene!='undefined'){
 | 
	
		
			
				|  |  | +				uni.setStorage({
 | 
	
		
			
				|  |  | +					key:'scene',
 | 
	
		
			
				|  |  | +					data:scene
 | 
	
		
			
				|  |  | +				});
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			// console.log('scene=========',scene);
 | 
	
		
			
				|  |  |  			if(scene&&scene!='undefined'){
 | 
	
		
			
				|  |  |  				this.$u.api.uncompress({scene:scene}).then(res=>{
 | 
	
		
			
				|  |  |  					this.performId = res.data.performId;
 | 
	
		
			
				|  |  | +					sharePath=`/pages/ticketlist?id=${res.data.performId}`;
 | 
	
		
			
				|  |  |  					this.getPerformData();
 | 
	
		
			
				|  |  |  					// this.getSystemInfo();
 | 
	
		
			
				|  |  |  					let today = new Date();
 | 
	
	
		
			
				|  | @@ -305,6 +351,7 @@
 | 
	
		
			
				|  |  |  				})
 | 
	
		
			
				|  |  |  			}else{
 | 
	
		
			
				|  |  |  				this.performId = page.id;
 | 
	
		
			
				|  |  | +				sharePath=`/pages/ticketlist?id=${page.id}`;
 | 
	
		
			
				|  |  |  				this.getPerformData();
 | 
	
		
			
				|  |  |  				// this.getSystemInfo();
 | 
	
		
			
				|  |  |  				let today = new Date();
 | 
	
	
		
			
				|  | @@ -341,6 +388,7 @@
 | 
	
		
			
				|  |  |  					this.theatre =  res.data.theatreList[0];
 | 
	
		
			
				|  |  |  					this.auditoriumList  = res.data.theatreList[0].auditoriumList;
 | 
	
		
			
				|  |  |  					this.ticketTypeList = res.data.goodsList;
 | 
	
		
			
				|  |  | +					this.goodsSnapshot = this.ticketTypeList[this.ticketTypeIndex]?.goodsSnapshot;
 | 
	
		
			
				|  |  |  					this.performDateList = this.auditoriumList[this.auditoriumIndex].performDateList;
 | 
	
		
			
				|  |  |  					this.getDate()
 | 
	
		
			
				|  |  |  					// console.log('auditoriumList',this.auditoriumList);
 | 
	
	
		
			
				|  | @@ -515,7 +563,39 @@
 | 
	
		
			
				|  |  |  				this.getPositionData();
 | 
	
		
			
				|  |  |  				console.log('sessionClick',this.sessionList[this.sessionIndex]);
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  | -			getPositionData(){
 | 
	
		
			
				|  |  | +			async getPositionData(){
 | 
	
		
			
				|  |  | +				let _this = this;
 | 
	
		
			
				|  |  | +				let retailId = null;
 | 
	
		
			
				|  |  | +				try {
 | 
	
		
			
				|  |  | +				        retailId = await new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  | +				            uni.getStorage({
 | 
	
		
			
				|  |  | +				                key: 'retailId',
 | 
	
		
			
				|  |  | +				                success: function (res) {
 | 
	
		
			
				|  |  | +				                    console.log('getPositionData retailId====', res.data);
 | 
	
		
			
				|  |  | +				                    resolve(res.data);
 | 
	
		
			
				|  |  | +				                },
 | 
	
		
			
				|  |  | +				                fail: function (error) {
 | 
	
		
			
				|  |  | +				                    reject(error);
 | 
	
		
			
				|  |  | +				                }
 | 
	
		
			
				|  |  | +				            });
 | 
	
		
			
				|  |  | +				        });
 | 
	
		
			
				|  |  | +				        console.log('getPositionData retailId', retailId);
 | 
	
		
			
				|  |  | +				    } catch (error) {
 | 
	
		
			
				|  |  | +				        console.error('获取retailId失败', error);
 | 
	
		
			
				|  |  | +				        // 在这里可以添加处理失败的逻辑
 | 
	
		
			
				|  |  | +				    }
 | 
	
		
			
				|  |  | +					this.retailId = retailId;
 | 
	
		
			
				|  |  | +				console.log('getPositionData this.retailId',this.retailId);
 | 
	
		
			
				|  |  | +				// if(this.scene&&this.scene!='undefined'){
 | 
	
		
			
				|  |  | +				// 	await this.$u.api.uncompress({scene:this.scene}).then(res=>{
 | 
	
		
			
				|  |  | +				// 		// data.performId = res.data.performId;
 | 
	
		
			
				|  |  | +				// 		this.label = res.data.label;
 | 
	
		
			
				|  |  | +				// 		this.retailId =  res.data.retailId;
 | 
	
		
			
				|  |  | +				// 		console.log('uncompress',res.data);
 | 
	
		
			
				|  |  | +				// 	}).catch(err=>{
 | 
	
		
			
				|  |  | +				// 		console.log('uncompress',err);
 | 
	
		
			
				|  |  | +				// 	})
 | 
	
		
			
				|  |  | +				// }
 | 
	
		
			
				|  |  |  				let session = this.sessionList[this.sessionIndex]||{};
 | 
	
		
			
				|  |  |  				let ticketType = this.ticketTypeList[this.ticketTypeIndex];
 | 
	
		
			
				|  |  |  				let params ={
 | 
	
	
		
			
				|  | @@ -523,7 +603,10 @@
 | 
	
		
			
				|  |  |  					goodsId:ticketType.id,
 | 
	
		
			
				|  |  |  					auditoriumId:this.auditoriumList[this.auditoriumIndex].id,
 | 
	
		
			
				|  |  |  					performTimeId:session.id,
 | 
	
		
			
				|  |  | +					label:this.label,
 | 
	
		
			
				|  |  | +					retailId:this.retailId
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  | +				console.log('getPositionData params',params);
 | 
	
		
			
				|  |  |  				this.$u.api.selectRegion(params).then(res=>{
 | 
	
		
			
				|  |  |  					// console.log('getPositionData',res.data);
 | 
	
		
			
				|  |  |  					this.positionData =  res.data;
 | 
	
	
		
			
				|  | @@ -540,6 +623,7 @@
 | 
	
		
			
				|  |  |  					return
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  				this.ticketTypeIndex = index;
 | 
	
		
			
				|  |  | +				this.goodsSnapshot = this.ticketTypeList[this.ticketTypeIndex]?.goodsSnapshot;
 | 
	
		
			
				|  |  |  				this.getPositionData()
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  			positionClick(index){
 | 
	
	
		
			
				|  | @@ -628,7 +712,7 @@
 | 
	
		
			
				|  |  |  						ctx.drawImage(img1, 0, 0, 574, 1042);
 | 
	
		
			
				|  |  |  							
 | 
	
		
			
				|  |  |  						// 绘制海报二维码
 | 
	
		
			
				|  |  | -						ctx.drawImage(img2, 398, 868, 114, 114);
 | 
	
		
			
				|  |  | +						ctx.drawImage(img2, 428, 888, 114, 114);
 | 
	
		
			
				|  |  |  							
 | 
	
		
			
				|  |  |  						// 绘制完成后导出图片并显示
 | 
	
		
			
				|  |  |  						ctx.draw(false, () => {
 | 
	
	
		
			
				|  | @@ -698,7 +782,7 @@
 | 
	
		
			
				|  |  |  					  filePath: res.tempFilePath,
 | 
	
		
			
				|  |  |  					  success() {
 | 
	
		
			
				|  |  |  					    uni.showToast({
 | 
	
		
			
				|  |  | -					      title: '保存到相册成功',
 | 
	
		
			
				|  |  | +					      title: '保存相册成功!',
 | 
	
		
			
				|  |  |  					      icon: 'success'
 | 
	
		
			
				|  |  |  					    });
 | 
	
		
			
				|  |  |  					  },
 | 
	
	
		
			
				|  | @@ -734,8 +818,10 @@
 | 
	
		
			
				|  |  |  						}
 | 
	
		
			
				|  |  |  					  },
 | 
	
		
			
				|  |  |  					  complete() {
 | 
	
		
			
				|  |  | -					  	uni.hideLoading();
 | 
	
		
			
				|  |  | -						that.posterShow = false;
 | 
	
		
			
				|  |  | +						  setTimeout(()=>{
 | 
	
		
			
				|  |  | +							  uni.hideLoading();
 | 
	
		
			
				|  |  | +							  that.posterShow = false;
 | 
	
		
			
				|  |  | +						  },1500)
 | 
	
		
			
				|  |  |  					  }
 | 
	
		
			
				|  |  |  					});					
 | 
	
		
			
				|  |  |  				},
 | 
	
	
		
			
				|  | @@ -771,6 +857,16 @@
 | 
	
		
			
				|  |  |  				uni.previewImage({
 | 
	
		
			
				|  |  |  					urls: urls,
 | 
	
		
			
				|  |  |  				})
 | 
	
		
			
				|  |  | +			},
 | 
	
		
			
				|  |  | +			previewBanner(index){
 | 
	
		
			
				|  |  | +				let urls = this.performInfo.photoList.map(item=>{
 | 
	
		
			
				|  |  | +					return item.imageUrl
 | 
	
		
			
				|  |  | +				});
 | 
	
		
			
				|  |  | +				// console.log('urls',urls);
 | 
	
		
			
				|  |  | +				uni.previewImage({
 | 
	
		
			
				|  |  | +					urls: urls,
 | 
	
		
			
				|  |  | +					current:index
 | 
	
		
			
				|  |  | +				})
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -787,15 +883,16 @@
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	.content{
 | 
	
		
			
				|  |  |  		position: absolute;
 | 
	
		
			
				|  |  | -		width: 100%;
 | 
	
		
			
				|  |  | +		// width: 100%;
 | 
	
		
			
				|  |  |  		box-sizing: border-box;
 | 
	
		
			
				|  |  |  		padding: 0 32rpx;
 | 
	
		
			
				|  |  | -		left: 0;
 | 
	
		
			
				|  |  | +		right: 0;
 | 
	
		
			
				|  |  |  		bottom: 200rpx;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	.share{
 | 
	
		
			
				|  |  |  		overflow: hidden;
 | 
	
		
			
				|  |  |  		margin-bottom: 100rpx;
 | 
	
		
			
				|  |  | +		float: right;
 | 
	
		
			
				|  |  |  		.icon{
 | 
	
		
			
				|  |  |  			float: right;
 | 
	
		
			
				|  |  |  			display: block;
 | 
	
	
		
			
				|  | @@ -958,6 +1055,14 @@
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +	.goodsSnapshot{
 | 
	
		
			
				|  |  | +		font-size: 24rpx;
 | 
	
		
			
				|  |  | +		color: #750000;
 | 
	
		
			
				|  |  | +		line-height: 1.5;
 | 
	
		
			
				|  |  | +		margin-top: 24rpx;
 | 
	
		
			
				|  |  | +		padding-bottom: 24rpx;
 | 
	
		
			
				|  |  | +		// border-bottom: 1px solid #750000;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  .details{
 | 
	
		
			
				|  |  |  	.title{}
 |