第一次提交

This commit is contained in:
wangxiaowei
2025-06-11 10:21:51 +08:00
commit 52932d54b1
2341 changed files with 185283 additions and 0 deletions

View File

@ -0,0 +1,239 @@
<template>
<view :class="theme() || ''" :data-theme='theme()'>
<view v-if="Visible" class="pop_bg" @click="closeFunc"></view>
<view :class=" Visible ? 'address-distr_open' : 'address-distr_close'">
<view class="address-list bg-white">
<scroll-view scroll-y="true" class="specs mt20" style="max-height: 600rpx;">
<view class="p20 address-item" v-for="(item,index) in storeList" :key="index">
<view :class="item.store_id == selectedId?'active':''" class="address d-s-c">
<view class="info flex-1" @click="onSelectedStore(item)">
<view class="user f34">
<text>{{item.store_name}}</text>
</view>
<view class="pt10 user f30 gray6">
<text>{{item.phone}}</text>
</view>
<view class="pt10 f24 gray6">
<text> {{item.region.province}}{{item.region.city}}{{item.region.region}}{{item.address}}</text>
</view>
<view>{{item.distance_unit}}</view>
</view>
</view>
</view>
<!-- 无数据提供的页面 -->
<view v-if="!isLoading && !storeList.length">
<view class="yoshop-notcont">
<text class="iconfont icon-wushuju"></text>
<text class="cont">暂无自提门店哦</text>
</view>
</view>
</scroll-view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
/*数据*/
listData: [],
isLoading: true, // 是否正在加载中
storeList: [], // 门店列表,
longitude: '',
latitude: '',
selectedId: -1,
Visible:false,
url: '',
}
},
props: ['isAddress','store_id','chooseSotr'],
watch:{
isAddress(val){
this.Visible=val;
if(val){
//#ifdef H5
if(this.isWeixin()){
this.url = window.location.href;
}
//#endif
// 记录已选中的id
this.selectedId = this.$props.store_id;
console.log(this.selectedId)
/*获取地址列表*/
this.getData(true);
// #ifndef H5
this.getLocation();
// #endif
// #ifdef H5
if(!this.isWeixin()){
this.getLocation();
}
// #endif
}
}
},
methods: {
/*授权启用定位权限 */
onAuthorize() {
let self = this;
uni.openSetting({
success(res) {
if (res.authSetting["scope.userLocation"]) {
console.log('授权成功');
self.isAuthor = true;
setTimeout(() => {
// 获取用户坐标
self.getLocation((res) => {
});
}, 1000);
}
}
})
},
/**
* 获取用户坐标
*/
getLocation(callback) {
let self = this;
uni.getLocation({
type: 'wgs84',
success(res) {
self.longitude = res.longitude;
self.latitude = res.latitude;
self.getData(false);
},
fail() {
uni.showToast({
title: '获取定位失败,请点击右下角按钮打开定位权限',
duration: 2000,
icon:"none"
});
self.isAuthor=false;
},
})
},
/**
* 公众号获取位置
*/
getWxLocation(signPackage, callback){
let self = this;
var jweixin = require('jweixin-module');
jweixin.config(JSON.parse(signPackage));
jweixin.ready(function(res) {
jweixin.getLocation({
type: 'wgs84',
success: function (res) {
self.longitude = res.longitude;
self.latitude = res.latitude;
self.getData(false);
}
});
});
jweixin.error(function(res){
console.log(res);
});
},
/*获取数据*/
getData(isFirst) {
let self = this;
self.isLoading = true;
self._get('store.store/lists', {
longitude: self.longitude,
latitude: self.latitude,
shop_supplier_id:self.$props.chooseSotr,
url: self.url
}, function(res) {
self.isLoading = false;
self.storeList = res.data.list;
// 第一次如果是公众号则初始化微信sdk配置
if(isFirst){
// #ifdef H5
if(self.isWeixin()){
self.getWxLocation(res.data.signPackage);
}
// #endif
}
});
},
closeFunc(){
this.$emit('close',null);
},
/* 选择门店 */
onSelectedStore(e) {
let self = this;
self.selectedId = e;
// 设置上级页面的门店id
self.$fire.fire('selectStoreId',e);
this.$emit('close',e);
}
}
}
</script>
<style lang="scss">
.pop_bg{
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
background: #66666666;
z-index: 100;
}
.address-list {
padding-bottom: 90rpx;
}
.address-item{
border-bottom: 1rpx solid #eeeeee;
}
.address-item:last-child{
border-bottom: none;
}
.foot-btns {
padding: 0;
}
.address {
padding: 24rpx;
}
.address.active {
@include background_color("bg-tips");
}
.closeicon{
position: absolute;
right: 20rpx;
top: 60rpx;
}
.foot-btns .btn-red {
width: 100%;
height: 90rpx;
line-height: 90rpx;
border-radius: 0;
}
.address-distr_open{
position: absolute;
bottom: env(safe-area-inset-bottom);
left: 0;
width: 100%;
display: block;
z-index: 101;
}
.address-distr_close{
position: absolute;
bottom: env(safe-area-inset-bottom);
left: 0;
width: 100%;
display: none;
}
.yoshop-notcont{
padding: 0 25rpx;
padding-bottom: 20rpx;
}
</style>