gcz 11 miesięcy temu
rodzic
commit
e490935ffa
2 zmienionych plików z 36 dodań i 5 usunięć
  1. 29 5
      pages/ticketlist.vue
  2. 7 0
      static/css/common.scss

+ 29 - 5
pages/ticketlist.vue

@@ -150,12 +150,13 @@
 						没有座位信息
 					</view>
 					<view class="date-list u-flex u-flex-wrap">
-						<view class="date-item" :class="{active:positionIndex==index}" @click="positionClick(index)" v-for="(date,index) in positionArr" :key="index">
+						<view class="date-item" :class="{active:positionIndex==index,'stock-over':date.stockNum<1&&date.stockNum!==-1}" @click="positionClick(index,date)" v-for="(date,index) in positionArr" :key="index">
 							<view class="name">{{ date.seatTypeName }} <br />¥ {{date.salePrice}}</view>
+							<view class="sold-out" v-if="date.stockNum<1&&date.stockNum!==-1">售罄</view>
 						</view>
 					</view>
 				</view>
-				<view class="book-btn full-btn" v-if="positionArr.length>=1&&sessionList.length>=1" @click="book()">确定</view>
+				<view class="book-btn full-btn" v-if="positionArr.length>=1&&sessionList.length>=1&&(positionIndex||positionIndex===0)" @click="book()">确定</view>
 				<view class="full-btn gray" v-else>确定</view>
 			</view>
 			<!-- ticket end -->
@@ -289,7 +290,7 @@
 				ticketTypeIndex:0,
 				positionData:{},//座位信息接口
 				positionArr:[],
-				positionIndex:0,
+				positionIndex:null,
 				
 			}
 		},
@@ -551,6 +552,8 @@
 					this.ticketTypeList = res.data.goodsList||[];
 					this.goodsSnapshot = this.ticketTypeList[this.ticketTypeIndex]?.goodsSnapshot;
 					this.positionArr =  this.ticketTypeList[this.ticketTypeIndex]?.regionList||[];
+					let sellableProductIndex = this.findFirstSellableProductIndex();
+					this.positionIndex = sellableProductIndex;
 					uni.hideLoading();
 				}).catch(err=>{
 					uni.hideLoading();
@@ -565,15 +568,36 @@
 				this.ticketTypeIndex = index;
 				// this.getPositionData();
 				this.positionArr =  this.ticketTypeList[this.ticketTypeIndex]?.regionList||[];
-				this.positionIndex = 0;
+				let sellableProductIndex = this.findFirstSellableProductIndex();
+				this.positionIndex = sellableProductIndex;
 			},
-			positionClick(index){
+			positionClick(index,date){
 				if(this.positionIndex==index){
 					// console.log('不变');
 					return
+				}else if(date.stockNum<1&&date.stockNum!==-1){
+					uni.showToast({
+						title:'已售罄',
+						icon:'none'
+					})
+					return
 				}
 				this.positionIndex = index;
 			},
+			findFirstSellableProductIndex(){
+				// 检查数组是否为空
+				if (!Array.isArray(this.positionArr) || this.positionArr.length === 0) {
+					return null; 
+				}
+			
+				// 遍历数组,找到第一个可售的产品
+				for (let i = 0; i < this.positionArr.length; i++) {
+					if (this.positionArr[i].stockNum > 0 || this.positionArr[i].stockNum === -1) {
+						return i; // 返回第一个可售产品的索引
+					}
+				}
+				return null; 
+			},
 			book(item){
 				// console.log('book',item);
 				// console.log('performInfo',this.performInfo);

+ 7 - 0
static/css/common.scss

@@ -130,6 +130,13 @@ $pagegap:32rpx;
 				display: block;
 			}
 		}
+		&.stock-over{
+			// border-color: #7F7F7F;
+			background-color: #FFFFFF ;
+			.name,.date{
+				color: #7F7F7F;
+			}
+		}
 		.selected-img{
 			width: 32rpx;
 			height: 32rpx;