| <template> | |
| 	<movable-area class="page__view"> | |
| 		<!-- <view class="bg"> | |
| 			<image class="img" src="@/static/image/bg.png" mode="widthFix"></image> | |
| 		</view> --> | |
| 		<bgSwiperView></bgSwiperView> | |
| 
 | |
| 		<view class="main"> | |
| 			 | |
| 			<!-- 搜索栏 --> | |
| 			<view :class="['flex', 'search', searchStyle.class]"> | |
| 				<uv-search  | |
| 					v-model="keyword"  | |
| 					placeholder="输入关键词搜索"  | |
| 					:color="searchStyle.color" | |
| 					bgColor="transparent"  | |
| 					:showAction="searchStyle.showAction" | |
| 					@custom="search"  | |
| 					@search="search" | |
| 					@focus="isFocusSearch = true" | |
| 					@blur="isFocusSearch = false" | |
| 				> | |
|           <template #prefix> | |
|             <image class="search-icon" :src="searchStyle.icon" mode="widthFix"></image> | |
|           </template> | |
|         </uv-search> | |
| 				<view class="border"> | |
| 					<view class="border-left"></view> | |
| 				</view> | |
| 			</view> | |
|  | |
| 			<view class="section"> | |
| 				<categoryView></categoryView> | |
| 			</view> | |
|  | |
| 			<view class="section"> | |
| 				<recommendView></recommendView> | |
| 			</view> | |
| 			 | |
| 			<view class="section"> | |
| 				<swiperView></swiperView> | |
| 			</view> | |
|  | |
| 			<view class="section"> | |
| 				<pictureLiveView></pictureLiveView> | |
| 			</view> | |
|  | |
| 			<view class="section reason"> | |
| 				<image class="img" src="@/static/image/temp-19.png" mode="widthFix"></image> | |
| 			</view> | |
|  | |
| 			<view class="section"> | |
| 				<productView :list="list"></productView> | |
| 			</view> | |
| 
 | |
| 		</view> | |
| 		 | |
| 		<movable-view v-if="showBtnService" class="movable-view" :x="273" :y="628" direction="all"> | |
| 			<view class="movable-content"> | |
| 				<button class="flex btn btn-service" open-type="contact"> | |
| 					<view class="label">联系客服</view> | |
| 					<image class="icon" src="@/static/image/icon-service.png" mode="widthFix"></image> | |
| 				</button> | |
| 				<button class="flex btn btn-close" @click.stop="showBtnService = false"> | |
| 					<image class="icon" src="@/static/image/icon-close.png" mode="widthFix"></image> | |
| 				</button> | |
| 			</view> | |
| 		</movable-view> | |
|  | |
| 		<tabber select="home" /> | |
|  | |
| 	</movable-area> | |
| </template> | |
|  | |
| <script> | |
| 	import mixinsList from '@/mixins/list.js' | |
|  | |
| 	import tabber from '@/components/base/tabbar.vue' | |
| 	import bgSwiperView from '@/components/home/bgSwiperView.vue' | |
| 	import categoryView from '@/components/home/categoryView.vue' | |
| 	import recommendView from '@/components/home/recommendView.vue' | |
| 	import swiperView from '@/components/home/swiperView.vue' | |
| 	import pictureLiveView from '@/components/home/pictureLiveView.vue' | |
| 	import productView from '@/components/home/productView.vue' | |
|  | |
| 	export default { | |
| 		mixins: [mixinsList], | |
| 		components: { | |
|       tabber, | |
| 			bgSwiperView, | |
| 			categoryView, | |
| 			recommendView, | |
| 			swiperView, | |
| 			pictureLiveView, | |
| 			productView, | |
| 		}, | |
| 		data() { | |
| 			return { | |
| 				keyword: '', | |
| 				isFocusSearch: false, | |
| 				mixinsListApi: 'queryActivityList', | |
| 				showBtnService: true, | |
| 			} | |
| 		}, | |
| 		onLoad() { | |
| 			if(uni.getStorageSync('token')){ | |
| 				this.$store.commit('getUserInfo') | |
| 			} | |
| 		}, | |
| 		computed: { | |
| 			searchStyle() { | |
| 				let focusStyle = { | |
| 					class: 'focus', | |
| 					color: '#181818', | |
| 					icon: '/static/image/icon-search-dark.png', | |
| 					showAction: true, | |
| 				} | |
| 				let blurStyle = { | |
| 					class: 'blur', | |
| 					color: '#FFFFFF', | |
| 					icon: '/static/image/icon-search-light.png', | |
| 					showAction: false, | |
| 				} | |
|  | |
| 				return this.isFocusSearch ? focusStyle : blurStyle | |
| 			}, | |
| 		}, | |
| 		methods: { | |
| 			search() { | |
| 				console.log('search', this.keyword) | |
|         uni.navigateTo({ | |
| 					url: '/pages_order/product/search?search=' + this.keyword | |
| 				}) | |
| 				// this.keyword = '' | |
| 			}, | |
| 		}, | |
| 	} | |
| </script> | |
|  | |
| <style scoped lang="scss"> | |
| 
 | |
| 	.bg { | |
| 		width: 100%; | |
| 		height: auto; | |
| 		border-bottom-left-radius: 40rpx; | |
| 		border-bottom-right-radius: 40rpx; | |
|     font-size: 0; | |
|     overflow: hidden; | |
| 
 | |
| 		.img { | |
| 			width: 100%; | |
| 			height: auto; | |
| 		} | |
| 	} | |
| 
 | |
| 	.main { | |
| 		position: absolute; | |
| 		top: 0; | |
| 		left: 0; | |
| 		width: 100%; | |
| 		padding: 100rpx 32rpx calc(120rpx + env(safe-area-inset-bottom) + 32rpx) 32rpx; | |
|     box-sizing: border-box; | |
| 	} | |
| 
 | |
| 	.search { | |
| 		$w: 474rpx; | |
| 		$h: 64rpx; | |
| 		$radius: 32rpx; | |
| 		$borderWidth: 4rpx; | |
| 
 | |
| 		width: $w; | |
| 		height: $h; | |
| 		position: relative; | |
| 		border-radius: $radius; | |
| 
 | |
| 		&-icon { | |
| 			margin: 0 13rpx 0 26rpx; | |
| 			width: 30rpx; | |
| 			height: auto; | |
| 		} | |
| 
 | |
| 		/deep/ .uv-search__content { | |
| 			padding: 12rpx 0; | |
| 			border: 4rpx solid transparent; | |
| 		} | |
| 
 | |
| 		&.blur { | |
| 			background: #FFFFFF66; | |
| 
 | |
| 			&:before, | |
| 			&:after { | |
| 				width: calc(#{$w} - #{$radius}); | |
| 				height: $borderWidth; | |
| 				position: absolute; | |
| 				left: $radius; | |
| 				content: ' '; | |
| 				background: linear-gradient(to right, #FFFFFF, #FFFFFF00); | |
| 			} | |
| 			&:before { | |
| 				top: 0; | |
| 			} | |
| 			&:after { | |
| 				bottom: 0; | |
| 			} | |
| 
 | |
| 			.border { | |
| 				width: $radius; | |
| 				overflow: hidden; | |
| 				position: absolute; | |
| 				top: 0; | |
| 				left: 0; | |
| 
 | |
| 				&-left { | |
| 					width: calc(#{$radius} * 2 - #{$borderWidth} * 2); | |
| 					height: calc(#{$h} - #{$borderWidth} * 2); | |
| 					border: $borderWidth solid #FFFFFF; | |
| 					border-radius: $radius; | |
| 				} | |
| 			} | |
| 
 | |
| 		} | |
| 
 | |
| 		&.focus { | |
| 			/deep/ .uv-search__content { | |
| 				background: #FFFFFF !important; | |
| 				border-color: #CFEFFF !important; | |
| 			} | |
| 
 | |
| 			/deep/ .uv-search__action { | |
| 				padding: 19rpx 24rpx; | |
| 				font-size: 26rpx; | |
| 				font-weight: 500; | |
| 				line-height: 1; | |
| 				color: #FFFFFF; | |
| 				background: #00A9FF; | |
| 				border-radius: 32rpx; | |
| 			} | |
| 		} | |
| 	} | |
| 
 | |
| 	.section { | |
| 		& + & { | |
| 			margin-top: 32rpx; | |
| 		} | |
| 	} | |
| 
 | |
| 	.reason { | |
| 		width: 100%; | |
| 		font-size: 0; | |
| 		border-radius: 32rpx; | |
| 		overflow: hidden; | |
| 		 | |
| 		.img { | |
| 			width: 100%; | |
| 			height: auto; | |
| 		} | |
| 	} | |
| 
 | |
| 	.movable { | |
| 
 | |
| 		&-view { | |
|     	position: fixed; | |
| 			width: auto; | |
| 			height: auto; | |
| 		} | |
| 
 | |
| 		&-content { | |
| 			position: relative; | |
| 
 | |
| 			.btn { | |
| 				&-service { | |
| 					column-gap: 4rpx; | |
| 					padding: 6rpx 6rpx 6rpx 18rpx; | |
| 					background: linear-gradient(to right, #21FEEC, #019AF9); | |
| 					border: 2rpx solid #00A9FF; | |
| 					border-radius: 40rpx; | |
| 
 | |
| 					.label { | |
| 						white-space: nowrap; | |
| 						font-size: 24rpx; | |
| 						font-weight: 500; | |
| 						color: #FFFFFF; | |
| 						text-shadow: 0 1px 2px #135A98; | |
| 					} | |
| 
 | |
| 					.icon { | |
| 						width: 64rpx; | |
| 						height: auto; | |
| 					} | |
| 				} | |
| 
 | |
| 				&-close { | |
| 					width: 32rpx; | |
| 					height: auto; | |
| 					position: absolute; | |
| 					top: 0; | |
| 					left: 0; | |
| 					transform: translate(-10rpx, -10rpx); | |
| 				} | |
| 			} | |
| 		} | |
| 	} | |
| 
 | |
| </style> |