<template> <view class="pages"> <view class="" :style="{height: navHeight+'px' }"></view> <view class="navbar-box"> <u-navbar title="选择区域" :safeAreaInsetTop="true" @leftClick="leftClick" :titleStyle="{color:'#fff'}" leftIconColor="#fff" bgColor="#EF1818"></u-navbar> </view> <view class="page-wrap"> <view class="base-info"> <view class="name">{{pageData.performName}}</view> <view class="time u-flex"> <view class="title">{{pageData.day|checkDate}}</view> <text>{{pageData.performTimeStart}} - {{pageData.performTimeEnd}}</text> </view> </view> <view class="position-wrap"> <view class="item" :class="{active:positionIndex==index}" :style="{color:positionIndex==index?'#fff':item.seatColor,borderColor:item.seatColor,backgroundColor:positionIndex==index?item.seatColor:'#fff'}" @click="positionClick(index)" v-for="(item,index) in positionArr" :key="index"> <!-- <image class="icon" :src="item.icon" ></image> --> <view>{{item.seatTypeName}}</view> <text>¥ {{item.salePrice}}</text> </view> </view> <image class="position-img" :src="positionData.seatImg" mode="widthFix"></image> <view class="btn" @click="book">确定区域</view> </view> </view> </template> <script> import { systemInfo } from "@/mixin.js"; export default { mixins: [systemInfo], data() { return { staticUrl:this.$commonConfig.staticUrl, params:{ performId:'', }, positionData:{}, positionArr:[], positionIndex:0, pageData:{}, } }, onShow() { }, onLoad(page) { // console.log('page',page); this.pageData = page; this.getSystemInfo(); this.getPositionData(); }, methods: { leftClick(e){ let pages = getCurrentPages(); if(pages.length==1){ uni.$u.route('/pages/index/index') }else{ uni.navigateBack() }; }, getPositionData(){ let params ={ performId:this.pageData.performId, goodsId:this.pageData.goodsId, auditoriumId:this.pageData.auditoriumId, performTimeId:this.pageData.performTimeId, } this.$u.api.selectRegion(params).then(res=>{ // console.log('getPositionData',res.data); this.positionData = res.data; this.positionArr = res.data.regionPriceList; }).catch(err=>{ console.log('getPositionData',err); }) }, book(){ if(this.positionArr.length<1){ uni.toast('还没有座位信息') return } let seatType = this.positionArr[this.positionIndex]; let params ={ performId:this.pageData.performId, goodsId:this.pageData.goodsId, auditoriumId:this.pageData.auditoriumId, performTimeId:this.pageData.performTimeId, seatTypeId:seatType.seatTypeId, salePrice:seatType.salePrice } // params.price = this.positionArr[this.positionIndex].price; // params.positionName = this.positionArr[this.positionIndex].positionName; uni.$u.route('pages/bookticket',params) }, positionClick(index){ this.positionIndex = index; } } } </script> <style> page{ background-color: #F7F7F9; } </style> <style lang="scss" scoped> .page-wrap{ padding-top: 36rpx; } .base-info{ background: #FFFFFF; box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(221,221,221,0.4); border-radius: 16rpx; padding: 38rpx 28rpx; margin-bottom: 54rpx; .name{ font-size: 28rpx; font-weight: bold; color: #2D2D2D; line-height: 42rpx; margin-bottom: 24rpx; } .time{ font-size: 24rpx; font-weight: 400; color: #7F7F7F; .title{ font-size: 24rpx; font-weight: 500; color: #F01414; margin-right: 26rpx; } } } .position-wrap{ margin-bottom: 30rpx; display: grid; grid-template-columns: repeat(3, 1fr); gap: 14rpx; .item{ // padding: 20rpx 40rpx 14rpx; padding: 20rpx 0; box-sizing: border-box; // flex: 1; border-radius: 8rpx; border: 2rpx solid #D9D9D9; // margin: 0 24rpx 24rpx; font-size: 24rpx; font-weight: 500; color: #EF1D1E; text-align: center; .icon{ display: block; width: 36rpx; height: 36rpx; margin-right: 20rpx; } &.active{ border-color: #EF1D1E; } } } .position-img{ width: 100%; margin-bottom: 40rpx; } .btn{ height: 92rpx; line-height: 92rpx; background: linear-gradient(90deg, #FF7878 0%, #ED0000 100%); border-radius: 46rpx; text-align: center; font-size: 28rpx; font-weight: 400; color: #FFFFFF; } </style>