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.

307 lines
6.2 KiB

3 weeks ago
<template>
<view>
<view class="stcon">
<view v-show="showName" class="textop">
瑜伽APP
</view>
<view v-show="showQR" class="qrimg" @tap="ViewImage()">
<image :src="qr" mode="aspectFit"></image>
</view>
<view class="site" @click="_show">
<view class="sitearr">
<image class="simg" src="/static/image/down.png"></image>
</view>
<view class="sitetxt">{{shop}}</view>
</view>
</view>
<!-- 选择门店 -->
<uni-popup ref="share" type="share">
<view class="allcon">
<view class="hcon">
<view class="htitle">附近有{{areas.length}}家门店可提供服务</view>
<view class="hinfo">(请点击选择服务门店)</view>
<view class="rclose" @tap="_cancel">
<uni-icons type="close" size="30" color="#8b9565"></uni-icons>
</view>
</view>
<view class="selcon">
<view class="sitem" v-for="(item,index) in areas" :key="index" :class="item.storeName==shop?'cur':''">
<view class="stimg">
<image class="stimg" :src="getimgRemoteFile(item.banner)" mode="aspectFill"></image>
</view>
<view class="sname">
<view class="stxt">
{{item.storeName}}
</view>
<view class="sadr">
{{item.address}}
</view>
</view>
<view class="selbtn" v-if="item.storeName==shop" @click="changeArea(item)" >
<image class="selimg" src="/static/image/sel.png" mode="aspectFill"></image>
</view>
<view class="selbtn" v-else @click="changeArea(item)" >
<image class="selimg" src="/static/image/nosel.png" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import { myCache,getRemoteFile,ifnonet } from '../../utils/utils.js';
export default {
props: {
showName: {
type: Boolean,
default: true,
},
showQR: {
type: Boolean,
default: false,
},
shop: {
type: String,
default: "",
}
},
data() {
return {
qr:"../../static/image/qr.png",
areas:myCache('shoplist'), //选择门店
// [
// {
// value_name:'淮海中路店',
// value_address:'淮海中路店198号',
// value_img:'',
// value_value:'1',
// value_qr:"../../static/image/qr.png",
// },
// ], //选择门店
};
},
mounted() {
console.log('mounted')
this.loadshop();
},
methods: {
getimgRemoteFile(img){
if(img){
img=img.split(',')[0];
return getRemoteFile(img)
}
else{
return require("@/static/image/i1.png")
}
},
// 切换门店
changeArea(item){
myCache('myshop',item.storeName);
myCache('myshopid',item.id);
this._hide();
this.$emit("changeArea", item);
},
_show() {
this.$refs.share.open();
},
_hide() {
this.$refs.share.close();
},
_cancel() {
this._hide();
this.$emit("cancel", "");
},
ViewImage() {
var imgList=[this.qr];
uni.previewImage({
urls: imgList,
current:0
});
},
async loadshop(){
// 获取门店
const {data: res} = await uni.$http.post('/api/index/getStores');
if(res.data&&res.data.length>0){
this.areas=res.data;
// console.log("areas",this.areas)
myCache('shoplist',res.data);
this.$forceUpdate();
}
},
}
}
</script>
<style lang="scss" scoped>
.stcon{
display: flex;
flex-direction: row;
height: 60rpx;
padding: 10rpx 0;
justify-content: center;
align-items: center;
}
.textop{
display: flex;
font-size: 40rpx;
font-weight: 600;
color:#000000;
margin-left: 20rpx;
}
.qrimg{
display: flex;
margin-left: 20rpx;
width: 50rpx;
height: 50rpx;
align-items: center;
image{
width: 100%;
height: 100px;
}
}
.site{
display: flex;
flex: 1;
flex-direction: row;
margin-left: 20rpx;
align-items: center;
}
.sitearr{
height: 48rpx;
width: 48rpx;
border-radius: 50rpx;
background-color: #dcdfd1;
display: flex;
align-items: center;
justify-content: center;
.simg{
width: 48rpx;
height: 48rpx;
}
}
.sitetxt{
font-size: 32rpx;
font-weight: 600;
color:#8b9565;
margin-left: 12rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.tline{
width: 1rpx;
background-color: #000000;
height: 30rpx;
margin: auto 20rpx;
}
// 弹框选择门店
.allcon{
width: 90%;
height: calc(100vh - 360rpx);
/* #ifdef MP-WEIXIN */
height: calc(100vh - 360rpx - var(--window-top) - var(--window-bottom));
/* #endif */
/* #ifdef H5 */
height: calc(100vh - 360rpx);
/* #endif */
position: relative;
overflow: hidden;
background-color: #FFFFFF;
margin: 40rpx 5% 240rpx 5%;
border-radius: 50rpx;
}
.rclose{
position: absolute;
top: 30rpx;
right: 30rpx;
}
.hcon{
display: flex;
flex-direction: column;
align-items: center;
padding:40rpx 0 30rpx;
.htitle{
font-size: 32rpx;
font-weight: 600;
letter-spacing: 3rpx;
}
.hinfo{
font-size: 26rpx;
color: #626464;
}
}
.selcon{
padding: 0;
position: relative;
display: block;
overflow-y: auto;
height: calc(100vh - var(--window-top) - 440rpx);
/* #ifdef MP-WEIXIN */
height: calc(100vh - var(--window-top) - 440rpx);
/* #endif */
/* #ifdef H5 */
height: calc(100vh - var(--window-top) - var(--window-bottom) - 440rpx);
/* #endif */
.lineb{
height: 50rpx;
}
.sitem.cur{
background-color: #f3f4ef;
}
.sitem {
display: flex;
flex-direction: row;
background-color: #FFFFFF;
border-bottom: 1rpx solid #eeeeee;
padding: 30rpx 0;
margin: 0 30rpx;
.stimg{
width: 100rpx;
height: 100rpx;
border-radius: 50rpx;
margin-left: 10rpx;
}
.selbtn{
width: 60rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
margin-right: 20rpx;
border-radius: 6rpx;
font-size: 26rpx;
color: #999;
margin-top: 16rpx;
}
.selimg{
width: 100%;
height: 100%;
}
.sname{
display: flex;
flex: 1;
justify-content: flex-start;
flex-direction: column;
padding: 10rpx 10rpx 0 10rpx;
margin-left: 12rpx;
.stxt{
font-size: 28rpx;
font-weight: 600;
color: rgb(29, 29, 29);
}
.sadr{
font-size: 26rpx;
color: #626464;
margin-top: 6rpx;
}
}
}
}
</style>