<template>
	<view :style="viewColor">
		<view class='productList'>
			<view class='search acea-row row-between-wrapper'>
				<!--#ifdef H5-->
				<view v-if='!$wechat.isWeixin()' class="back" @click='backjJump()'>
					<view class="iconfont icon-xiangzuo"></view>
				</view>
				<!--#endif-->
				<view class='input acea-row row-between-wrapper'><text class='iconfont icon-sousuo'></text>
					<input placeholder='搜索店铺名称' placeholder-class='placeholder' confirm-type='search' name="search" :value='sotreParam.keyword'
					 @confirm="searchSubmit"></input>
				</view>
				<view v-if="mer_location == 1" style="text-align: right;" class='iconfont search-right' @click='showMaoLocation(latitude,longitude)'>
					<view class="iconfont icon-dingwei"></view>
					<view class="right-text" v-if="recommend_address">
						{{recommend_address}}
					</view>
					<view class="iconfont icon-xiangyou" v-if="recommend_address"></view>
				</view>
			</view>
			<view class="nav-wrapper">
				<view class='nav acea-row row-middle'>
					<view v-for="item in downMenus" :key="item.key" class='item' :class="{'font-colors':firstKey == item.key}" @click='set_where(item.key)'>
						<view>
							{{item.title}}
						</view>
						<view class="line" :class="{'font-line':firstKey == item.key}">
						</view>
					</view>
				</view>
			</view>
			<!-- 店铺 -->
			<block>
				<view class="mer-box"v-if="storeList.length > 0">
					<view class="mer-item" v-for="(item,index) in storeList" :key='index'>
						<view class="mer-hd" @click="goStore(item.mer_id)">
							<image :src="item.mini_banner?item.mini_banner:item.mer_banner"></image>
							<view class="mer-name">
								<image :src="item.mer_avatar"></image>
								<view class="">
									<view class="mer-top">
										<view class="txt line1">{{item.mer_name}}</view>
										<text v-if="item.type_name" class="font-bg-red ml8">{{item.type_name}}</text>
										<text v-else-if="item.is_trader" class="font-bg-red ml8">自营</text>
									</view>
									<view class="mer-btn">
										<view class="">
											{{item.care_count<10000 ? item.care_count : (item.care_count/10000).toFixed(2)+'万'}}人关注
										</view>
										<view class="line" v-if="item.distance"></view>
										<view class="distance" v-if="item.distance" @click.stop="showStoreLocation(item)">
											<view class="">
												{{item.distance}}
											</view>
											<view class="iconfont icon-xiangyou"></view>
										</view>
									</view>
								</view>
							</view>
						</view>
						<view class="pro-box">
							<navigator :url="`/pages/goods_details/index?id=${itemn.product_id}`" hover-class="none" class="pro-item" v-for="(itemn,indexn) in item.recommend"
							 :key='indexn' v-if="item.recommend.length<=3">
								<image :src="itemn.image" mode=""></image>
								<view class="price">
									<text>¥</text>{{itemn.price}}
								</view>
							</navigator>
						</view>
					</view>
					<view class='loadingicon acea-row row-center-wrapper' v-if="loading">
						<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
					</view>
				</view>
				<view class='no-shop' v-if="!storeList.length && !loading && !loadingIcon" v-cloak>
					<view class='pictrue' style="margin: 0 auto;">
						<image :src="`${domain}/static/images/noCart.png`"></image>
						<text>暂无店铺,快去搜索其他店铺吧</text>
					</view>
				</view>
			</block>
		</view>
	</view>
</template>

<script>
	 
	import {
		getGeocoder
	} from '@/api/store.js';
	import { getMerchantServiceLst } from '@/api/activity.js';
	import { mapGetters } from "vuex";
	import { goShopDetail } from '@/libs/order.js'
	import { HTTP_REQUEST_URL } from '@/config/app';
	const app = getApp();
	export default {
		data() {
			return {
				domain: HTTP_REQUEST_URL,
				price: 0,
				stock: 0,
				nows: false,
				loading: false,
				loadingIcon: true,
				loadTitle: '加载更多',
				title: '',
				hotPage: 1,
				hotLimit: 10,
				hotScroll: false,
				// 筛选框
				rightBox: false,
				//品牌列表
				brandList: [],
				downKey: 0,
				downStatus: false,
				// 下拉菜单
				downMenu: [{
						title: '默认',
						key: 0,
						order: ""
					},
					{
						title: '销量',
						key: 1,
						order: 'sales'
					},
					{
						title: '好评',
						key: 2,
						order: 'rate'
					},
					{
						title: '距离',
						key: 3,
						order: 'location'
					}
				],
				// 是否第一个
				firstKey: 0,
				// 商铺列表
				storeList: [],
				sotreParam: {
					keyword: '',
					page: 1,
					limit: 10,
					order: '',
				},
				storeKey: 0,
				storeScroll: true,
				mer_id: '',
				sortId: '',
				hide_mer_status: "",
				price_on: '',
				price_off: '',
				detaile_address: "",
				recommend_address: "",
				latitude: "",
				longitude: "",
				count: 0,
				mer_location: "",
			};
		},
		created() {
			
		},
		computed: {
			downMenus: function() {
				return this.downMenu.filter((item) => {
					if (this.mer_location) {
						return item
					} else {
						return item.key < 3
					}
				})
			},
			...mapGetters(['viewColor']),
		},
		onLoad: function(options) {
			this.mer_id = options.mer_id;
			uni.getStorage({
				key: 'GLOBAL_DATA',
				success: (res) => {
					this.hide_mer_status = res.data.hide_mer_status
					this.storeList = []
					if (res.data.mer_location == 1) {
						this.mer_location = res.data.mer_location
						this.selfLocation()
					}else{
						this.getServiceList();
					}
				}
			});
		},
		methods: {	
			// 打开地图
			showMaoLocation(lat, long) {
				if (!lat || !long) return this.$util.Tips({
					title: '请设置允许商城访问您的位置!'
				});
				//#ifdef H5
				if (this.$wechat.isWeixin() === true) {
					this.$wechat.seeLocation({
						latitude: Number(lat),
						longitude: Number(long),
						name: '当前位置',
						address: this.recommend_address
					}).then(res=>{
						console.log('success');
					})
				}else{
				//#endif
					uni.openLocation({
						latitude: parseFloat(lat),
						longitude: parseFloat(long),
						scale: 8,
						geocode: true,
						name: '当前位置',
						address: this.recommend_address,
						success: function(res) {
							console.log(res)
						},
					});
				// #ifdef H5
				}
				//#endif	
			},
			showStoreLocation(item) {
				console.log(lat, long)
				if (!item.lat || !item.long) return this.$util.Tips({
					title: '请设置允许商城访问您的位置!'
				});
				//#ifdef H5
				if (this.$wechat.isWeixin() === true) {
					this.$wechat.seeLocation({
						latitude: Number(item.lat),
						longitude: Number(item.long),
						name: item.mer_name,
						address: item.mer_address ? item.mer_address: '',
					}).then(res=>{
						console.log('success');
					})
				}else{
				//#endif
					uni.openLocation({
						latitude: parseFloat(item.lat),
						longitude: parseFloat(item.long),
						scale: 8,
						name: item.mer_name,
						address: item.mer_address ? item.mer_address: '',
						success: function(res) {
							console.log(res)
						},
					});
				// #ifdef H5
				}
				//#endif	
			},
			selfLocation() {
				let self = this
				uni.getLocation({
					type: 'gcj02',
					success: (res) => {
						let latitude, longitude;
						latitude = res.latitude.toString();
						longitude = res.longitude.toString();
						self.latitude = res.latitude
						self.longitude = res.longitude
						getGeocoder({
							lat: latitude,
							long: longitude
						}).then(res => {
							self.detaile_address = res.data.address;
							self.recommend_address = res.data.address.length > 4 ? res.data.address.slice(0,4) + '...' : res.data.address
						})
					},
					fail: (res) => {
						uni.showToast({
							title: res,
							icon: 'none',
							duration: 1000
						});
					},
					complete: (res) => {
						self.getServiceList();
					}
				});
			},
			// 查找店铺
			getServiceList() {
				if (this.loading) return
				this.loading = true
				let rqData = {
					keyword: this.sotreParam.keyword,
					page: this.sotreParam.page,
					limit: 10,
					order: this.sotreParam.order,
				}
				if (this.latitude) {
					rqData.location = this.latitude + ',' + this.longitude
				}
				getMerchantServiceLst(rqData).then(res => {
					this.count = res.data.count
					this.storeList = this.storeList.concat(res.data.list)
					this.loading = false
					this.loadingIcon = false
				})
			},
			// 进店
			goStore(id) {
				if (this.hide_mer_status != 1) {
					uni.navigateTo({
						url: `/pages/store/home/index?id=${id}`
					})
				}
			},
			searchSubmit: function(e) {
				let that = this;
				that.$set(that.sotreParam, 'keyword', e.detail.value);
				this.set_where(this.firstKey)
			},
			//点击事件处理
			set_where: function(e) {
				if (this.loading) return
				console.log(this.downMenu, e)
				this.storeList = []
				this.firstKey = e
				this.sotreParam.page = 1
				this.sotreParam.order = this.downMenu[e].order
				this.getServiceList();
			},
			backjJump() {
				uni.navigateBack({
					delta: 1
				})
			},
		},
		//刷新
		onPullDownRefresh() {

		},
		//上划加载更多
		onReachBottom() {
			if (this.count === this.storeList.length) {
				if (this.count === 0) {
					return
				}
				uni.showToast({
					title: '已加载全部',
					icon: 'none',
					duration: 1000
				});
			} else {
				this.sotreParam.page += 1
				this.getServiceList()
			}
		}
	}
</script>
<style lang="scss" scoped>
	.productList .search {
		width: 100%;
		height: 86rpx;
		padding: 0 20rpx;
		box-sizing: border-box;
		position: fixed;
		left: 0;
		top: 0;
		z-index: 9;
		display: flex;
		flex-wrap: nowrap;
		background: var(--view-theme);
		.search-right {
			display: flex;
			align-items: center;
			justify-content: space-between;
			max-width: max-content;
			flex: 1;
			padding-left: 20rpx;
		}
		.right-text {
			overflow: hidden;
			text-overflow: ellipsis;
			white-space: nowrap;
			font-size: 28rpx;
			width: max-content;
			// max-width: 4.4rem;
			color: #fff;
			padding: 0 10rpx;
		}
		.icon-xiangyou,
		.icon-dingwei {
			font-size: 30rpx;
			color: #fff;
		}
	}
	.productList .search .back {
		display: flex;
		align-items: center;
		width: 40rpx;
		height: 60rpx;

		.iconfont {
			color: #fff;
			font-size: 36rpx;
		}
	}
	.productList .search .input {
		flex: 1;
		// width: 540rpx;
		height: 60rpx;
		background-color: #fff;
		border-radius: 50rpx;
		padding: 0 20rpx;
		box-sizing: border-box;
	}
	.productList .search .input input {
		flex: 1;
		height: 100%;
		font-size: 26rpx;
		margin-left: 10rpx;
	}
	.productList .search .input .placeholder {
		color: #999;
	}
	.productList .search .input .iconfont {
		font-size: 35rpx;
		color: #555;
	}
	.productList .search .icon-pailie,
	.productList .search .icon-tupianpailie {
		color: #fff;
		width: 62rpx;
		font-size: 40rpx;
		height: 86rpx;
		line-height: 86rpx;
	}
	.productList .nav-wrapper {
		z-index: 9;
		position: fixed;
		left: 0;
		top: 0;
		width: 100%;
		margin-top: 86rpx;
		background-color: $theme-color;
		.tab-bar {
			display: flex;
			align-items: center;
			.tab-item {
				position: relative;
				flex: 1;
				display: flex;
				justify-content: center;
				align-items: center;
				padding: 8rpx 0 20rpx;
				color: #fff;
				font-size: 28rpx;
				font-weight: bold;
				&::after {
					content: ' ';
					position: absolute;
					left: 50%;
					bottom: 18rpx;
					width: 30rpx;
					height: 3rpx;
					background: transparent;
					transform: translateX(-50%);
				}
				&.on {
					&::after {
						background: #fff;
					}
				}
			}
		}
	}
	.productList .nav {
		height: 86rpx;
		color: #454545;
		font-size: 28rpx;
		background-color: var(--view-theme);
		display: flex;
		justify-content: space-between;
		padding: 0 28rpx;
	}
	.productList .nav .item {
		display: flex;
		align-items: center;
		justify-content: center;
		flex-direction: column;
		color: #FFFFFF;
		flex: 1;
	}
	.productList .nav .item.font-colors {
		font-weight: 500;
		color: #FFFFFF;
	}
	.productList .nav .item .font-line {
		height: 4rpx;
		background-color: #fff;
		margin-top: 3rpx;
		width: 28rpx;
		animation: line 0.3s;
		-moz-animation: line 0.3s;
		/* Firefox */
		-webkit-animation: line 0.3s;
		/* Safari 和 Chrome */
		-o-animation: line 0.3s;
		/* Opera */
	}
	@keyframes line {
		from {
			width: 0rpx;
		}
		to {
			width: 28rpx;
		}
	}
	.productList .nav .item image {
		width: 15rpx;
		height: 19rpx;
		margin-left: 10rpx;
	}
	.mer-box {
		padding: 20rpx 20rpx;
		margin-top: 168rpx;
		.mer-item {
			margin-bottom: 20rpx;
			background-color: #fff;
			border-radius: 16rpx;
			.mer-hd {
				position: relative;
				width: 100%;
				height: 134rpx;
				border-radius: 16rpx 16rpx 0 0;
				overflow: hidden;
				display: flex;
				image {
					width: 100%;
					height: 100%;
				}
				.mer-name {
					position: absolute;
					left: 20rpx;
					top: 30rpx;
					display: flex;
					align-items: center;
					padding: 0 10rpx;
					image {
						width: 79rpx;
						height: 79rpx;
						border: 1px solid #fff;
						border-radius: 50%;
						margin-right: 10rpx;
					}
					.mer-top {
						display: flex;
						align-items: center;
						color: #FFFFFF;
						font-size: 28rpx;
						font-weight: bold;
						margin-bottom: 6rpx;
						.font-bg-red {
							margin-left: 20rpx;
							font-size: 18rpx;
							padding: 2rpx 10rpx;
							border-color: var(--view-theme);
							background: var(--view-theme);
							border-radius: 30rpx;
							width: auto;
						}
					}
					.mer-btn {
						color: rgba($color: #fff, $alpha: 0.7);
						font-size: 24rpx;
						display: flex;
						align-items: center;
						.line {
							width: 2rpx;
							height: 18rpx;
							color: rgba($color: #fff, $alpha: 0.7);
							margin: 0 12rpx;
						}
						.distance {
							display: flex;
							align-items: center;
							font-size: 24rpx;
							color: rgba($color: #fff, $alpha: 0.7);
							.iconfont {
								font-size: 24rpx;
								line-height: 24rpx;
							}
						}
					}
					.txt {
						flex: 1;
					}
				}
			}
			.pro-box {
				display: flex;
				align-items: center;
				padding: 20rpx 20rpx 30rpx;
				.pro-item {
					width: 218rpx;
					margin-right: 14rpx;
					image {
						width: 100%;
						height: 214rpx;
						border-radius: 8rpx;
					}
					.price {
						margin-top: 5rpx;
						font-size: 28rpx;
						color: var(--view-priceColor);
						font-weight: bold;
						text {
							font-size: 28rpx;
						}
					}
					&:last-child {
						margin-right: 0;
					}
				}
			}
		}
		.more-shop {
			display: flex;
			align-items: center;
			justify-content: center;
			background-color: #FFFFFF;
			padding: 27rpx 0;
			color: #999999;
			font-size: 26rpx;

			.icon-xiangyou {
				font-size: 22rpx;
			}
		}

	}

	.no-shop {
		background-color: #fff;
		padding-bottom: calc(100% - 40rpx);
		padding-top: 200rpx;
		.pictrue {
			display: flex;
			flex-direction: column;
			align-items: center;
			color: $uni-nothing-text;

			image {
				width: 414rpx;
				height: 380rpx;
			}
		}
	}
</style>