| <template> | |
|   <view class="live"> | |
|     <view class="flex live-header"> | |
|       <view>图片直播</view> | |
|       <button class="flex btn" @click="showAll"> | |
|         <view>查看全部</view> | |
|         <image class="img" src="@/static/image/icon-arrow-right.png" mode="widthFix"></image> | |
|       </button> | |
|     </view> | |
| 		<!-- todo: auto scroll --> | |
|     <!-- <view class="live-content"> | |
|       <view class="live-item" v-for="item in list" :key="item.id"> | |
|         <image class="live-item-bg" :src="item.image" mode="aspectFill"></image> | |
|         <view class="live-item-info"> | |
|           <view class="text-ellipsis live-item-info-title">{{ item.title }}</view> | |
|           <view class="live-item-info-time">{{ item.time }}</view> | |
|         </view> | |
|       </view> | |
|     </view> --> | |
| 		<view class="live-content"> | |
| 			<swiper  | |
| 				class="swiper"  | |
| 				:current="current" | |
| 				:autoplay="true" | |
| 				:display-multiple-items="3.2" | |
| 			> | |
| 				<swiper-item v-for="item in list" :key="item.id" style="display: inline-block;"> | |
| 					<view class="swiper-item"> | |
| 						<view class="swiper-item-content" @click="jumpToLive(item.id)"> | |
| 							<image class="live-item-bg" :src="item.url" mode="aspectFill"></image> | |
| 							<view class="live-item-info"> | |
| 								<view class="text-ellipsis live-item-info-title">{{ item.title }}</view> | |
| 								<view class="live-item-info-time">{{ item.createTime }}</view> | |
| 							</view> | |
| 						</view> | |
| 					</view> | |
| 				</swiper-item> | |
| 			</swiper> | |
| 		</view> | |
|   </view> | |
| </template> | |
|  | |
| <script> | |
|   export default { | |
| 		data() { | |
| 			return { | |
| 				list: [], | |
| 			} | |
| 		}, | |
| 		created() { | |
|       this.getData() | |
|     }, | |
|     methods: { | |
|       async getData() { | |
| 				try { | |
| 					this.list = (await this.$fetch('queryImageList', { pageNo: 1, pageSize: 8 }))?.records?.map(item => { | |
| 						const { id, image, activityId_dictText, createTime } = item | |
|  | |
| 						const images = image?.split?.(',') || [] | |
|  | |
| 						return { | |
| 							id, | |
| 							url: images?.[0], | |
| 							images, | |
| 							title: activityId_dictText, | |
| 							createTime: this.$dayjs(createTime).format('YYYY-MM-DD'), | |
| 						} | |
| 					}) | |
| 				} catch (err) { | |
|  | |
| 				} | |
|       }, | |
| 			jumpToLive(id) { | |
|         this.$store.commit('setLiveInfo', this.list.find(item => item.id === id)) | |
| 				this.$utils.navigateTo(`/pages_order/live/index?id=${id}`) | |
| 			}, | |
| 			showAll() { | |
| 				this.$utils.navigateTo(`/pages_order/live/list`) | |
| 			} | |
|     }, | |
|   } | |
| </script> | |
|  | |
| <style scoped lang="scss"> | |
| 
 | |
| 	.live { | |
| 		width: 100%; | |
| 		padding: 32rpx; | |
| 		box-sizing: border-box; | |
|     background-image: linear-gradient(164deg,#DAF3FF, #FBFEFF , #FBFEFF); | |
| 		border: 2rpx solid #FFFFFF; | |
| 		border-radius: 32rpx; | |
| 		 | |
| 		&-header { | |
| 			justify-content: space-between; | |
| 			font-size: 36rpx; | |
| 			font-weight: 500; | |
| 			color: #191919; | |
| 
 | |
| 			.btn { | |
| 				column-gap: 4rpx; | |
| 				font-size: 24rpx; | |
| 				color: #8B8B8B; | |
| 
 | |
| 				.img { | |
| 					width: 32rpx; | |
| 					height: auto; | |
| 				} | |
| 			} | |
| 		} | |
| 		 | |
| 		&-content { | |
| 			margin-top: 16rpx; | |
| 			white-space: nowrap; | |
| 			width: 100%; | |
| 			overflow-x: auto; | |
| 			font-size: 0; | |
| 		} | |
| 
 | |
| 		&-item { | |
| 			flex: none; | |
| 			display: inline-block; | |
| 			width: 180rpx; | |
| 			height: 240rpx; | |
| 			border-radius: 12rpx; | |
| 			overflow: hidden; | |
| 			position: relative; | |
| 
 | |
| 			& + & { | |
| 				margin-left: 16rpx; | |
| 			} | |
| 
 | |
| 			&-bg { | |
| 				width: 100%; | |
| 				height: 100%; | |
| 			} | |
| 
 | |
| 			&-info { | |
| 				position: absolute; | |
| 				left: 0; | |
| 				bottom: 0; | |
| 				width: 100%; | |
| 				padding: 8rpx 12rpx; | |
| 				box-sizing: border-box; | |
| 
 | |
| 				&-title { | |
| 					font-size: 26rpx; | |
| 					font-weight: 600; | |
| 					color: #FFFFFF; | |
| 				} | |
| 
 | |
| 				&-time { | |
| 					font-size: 22rpx; | |
| 					color: #FFFFFF; | |
| 				} | |
| 			} | |
| 		} | |
| 	} | |
| 
 | |
| 	.swiper { | |
| 		width: 100%; | |
| 		height: 240rpx; | |
| 
 | |
| 		&-item { | |
| 			width: 180rpx; | |
| 			height: 240rpx; | |
| 			 | |
| 			&-content { | |
| 				position: relative; | |
| 				width: 100%; | |
| 				height: 100%; | |
| 				border-radius: 12rpx; | |
| 				overflow: hidden; | |
| 			} | |
| 		} | |
| 	} | |
| </style> |