You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							205 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							205 lines
						
					
					
						
							5.2 KiB
						
					
					
				| <template> | |
|     <view> | |
|         <!-- 使用日期 --> | |
|         <view class="date-box"> | |
|             <view class="dateList" id="dateList"> | |
|                 <view class="date flex-column" v-for="(item,index) in dateList" :key="index" :id="'dateItem_' + index" | |
|                       :class="index == dateIndex && item.stock!=0?'active':''" @click="handleChangeDate(item,index)"> | |
|                     <view class="weekDay">{{ShowDateDay(new Date(item.date).getDay())}}</view> | |
|                     <view class="dateNum">{{getDatePrefix(item)}}</view> | |
|                     <view class="price" v-if="item.stock != 0">{{item.money == 0? '免费' : '¥' + (item.money / 100)}}</view> | |
|                     <view class="noPrice" v-if="item.stock == 0">售罄</view> | |
|                 </view> | |
|                 <view class="more flex-around" @click="handleOpenCal"> | |
|                     <view>更多<br>日期</view> | |
|                     <view>></view> | |
|                 </view> | |
|             </view> | |
|         </view> | |
|         <view class="stock-box" v-if="stockList && stockList.length > 0"> | |
|             <view v-for="(item,index) in stockList" :key="index" | |
|                   :class="['stockItem', stockIndex == index && item.stock_number>0?'active': item.stock_number == 0? 'disabled' : '']" | |
|                   @click="handleChangeStock(item,index)"> | |
|                 {{item.start_time}}-{{item.end_time}} | |
|                 {{item.stock_number == 0? '无票' : '有票'}} | |
|             </view> | |
|         </view> | |
|     </view> | |
| </template> | |
| 
 | |
| <script> | |
| import moment from "moment"; | |
| export default { | |
|     props: { | |
|         dateList: { | |
|             type: Array, | |
|             default: () => [] | |
|         }, | |
|         dateIndex: { | |
|             type: Number, | |
|             default: null | |
|         }, | |
|         stockList: { | |
|             type: Array, | |
|             default: () => [] | |
|         }, | |
|         stockIndex: { | |
|             type: Number, | |
|             default: null | |
|         } | |
|     }, | |
| 	data() { | |
| 		return { | |
| 			 | |
| 		} | |
| 	}, | |
| 	methods: { | |
| 		// 日期前加今天明天 | |
| 		getDatePrefix(item) { | |
| 			if (!item) { | |
| 				proxy.$toast('价格日历有误') | |
| 				return '' | |
| 			} | |
| 			let date = item.date | |
| 			let nowDate = moment(new Date()).format('yyyy-MM-DD') | |
| 			let tomDate = moment(new Date(new Date().getTime() + 24 * 60 * 60 * 1000)).format('yyyy-MM-DD') | |
| 			let aftDate = moment(new Date(new Date().getTime() + 24 * 60 * 60 * 1000 * 2)).format('yyyy-MM-DD') | |
| 			let pre = '' | |
| 			if (date == nowDate) pre = '今天' | |
| 			else if (date == tomDate) pre = '明天' | |
| 			else if (date == aftDate) pre = '后天' | |
| 			return date.substring(5, 10) | |
| 		}, | |
| 		handleChangeDate(item, index) { | |
| 			if (item.stock != 0) { | |
| 				let data = { | |
| 					item, index | |
| 				} | |
| 				this.$emit('changeDate', data); | |
| 			} | |
| 		}, | |
| 		handleChangeStock(item, index) { | |
| 			if (item.stock_number != 0) { | |
| 				let data = { | |
| 					item, index | |
| 				} | |
| 				this.$emit('changeStock', data); | |
| 			} | |
| 		}, | |
| 		handleOpenCal() { | |
| 			this.$emit('openCal'); | |
| 		} | |
| 	} | |
| } | |
| </script> | |
| 
 | |
| <style lang="scss" scoped> | |
| .date-box{ | |
|     height: auto; | |
|     position: relative; | |
| 
 | |
|   .ticket-title{ | |
|         padding-left: 20rpx; | |
|         border-bottom: 1rpx solid #CCCCCC; | |
|         font-size: 33rpx; | |
|         font-family: PingFangSC; | |
|         font-weight: 500; | |
|         color: #000000; | |
|         height: 113rpx; | |
|         line-height: 113rpx; | |
|     } | |
| 
 | |
|   .dateList{ | |
|         height: 164rpx; | |
|         text-align: center; | |
|         display: flex; | |
|         align-items: center; | |
|         padding-right: 120rpx; | |
|         overflow-x: auto; | |
| 
 | |
|       .date{ | |
|             width: 120rpx; | |
|             height: 133rpx; | |
|             border-radius: 10rpx; | |
|             justify-content: space-around; | |
|             background: #F5F5F5; | |
|             margin-right: 15rpx; | |
|             flex-shrink: 0; | |
|             font-weight: 500; | |
|             font-size: 27rpx; | |
|             color: #000000; | |
| 
 | |
|           .dateNum{ | |
| 
 | |
|             } | |
|           .price{ | |
|                 font-size: 24rpx; | |
|                 font-family: PingFang SC; | |
|                 font-weight: 400; | |
|                 color: #EE3E3B; | |
|             } | |
|           .noPrice{ | |
|                 font-size: 24rpx; | |
|                 font-family: PingFang SC; | |
|                 font-weight: 400; | |
|                 color: #666666; | |
|             } | |
|         } | |
| 
 | |
|       .active{ | |
|             background: #00AEA0; | |
|             color: #FFFFFF; | |
|             border: none; | |
|           .dateNum{ | |
|                 color: #FFFFFF; | |
|             } | |
|           .price{ | |
|                 color: #FFFFFF; | |
|             } | |
|         } | |
| 
 | |
|       .more{ | |
|             width: 120rpx; | |
|             height: 164rpx; | |
|             font-weight: bold; | |
|             font-size: 27rpx; | |
|             color: #00AEA0; | |
|             position: absolute; | |
|             right: -5rpx; | |
|             padding-left: 20rpx; | |
|             background-color: #fff; | |
|         } | |
|     } | |
|   .dateList::-webkit-scrollbar { | |
|         display: none; | |
|     } | |
| } | |
| 
 | |
| .stock-box{ | |
|     margin-top: 34rpx; | |
|     display: flex; | |
|     justify-content: space-between; | |
|     flex-wrap: wrap; | |
| 
 | |
|   .stockItem{ | |
|         width: 340rpx; | |
|         height: 64rpx; | |
|         background: #F5F5F5; | |
|         border-radius: 10rpx; | |
|         text-align: center; | |
|         line-height: 64rpx; | |
|         font-weight: 400; | |
|         font-size: 25rpx; | |
|         color: #000000; | |
|         margin-bottom: 20rpx; | |
|     } | |
| 
 | |
|   .active{ | |
|         background: #00AEA0; | |
|         color: #FFFFFF; | |
|     } | |
|   .disabled{ | |
|         color: #999999; | |
|     } | |
| } | |
| </style> |