增加定位功能

This commit is contained in:
Gao xiaosong
2020-06-13 01:38:36 +08:00
parent b23f9a2272
commit ba199ff02d
15 changed files with 170 additions and 117 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2373,17 +2373,42 @@ page {
}
.user .wrapper .myService .serviceList .item {
width: 25%;
text-align: center;
width: 100%;
text-align: left;
font-size: 0.26*100rpx;
color: #333;
margin-top: 0.3*100rpx;
display: flex;
align-items: center;
padding: 0.2*100rpx 0.3*100rpx;
position: relative;
.iconfont {
font-size: .26*100rpx;
color: #666;
}
&::after {
content: "";
display: block;
position: absolute;
left: 0.3*100rpx;
right: 0;
bottom: 0;
border-bottom: 1rpx solid #f5f5f5;
z-index: 999;
height: 1rpx;
}
}
.user .wrapper .myService .serviceList .item .pictrue {
width: 0.52*100rpx;
height: 0.52*100rpx;
margin: 0 auto 0.16*100rpx auto;
margin-right: 0.16*100rpx;
}
.user .wrapper .myService .serviceList .item .cell {
flex: 1
}
.user .wrapper .myService .serviceList .item .pictrue image {

View File

@ -40,9 +40,6 @@ export default {
// else if (top < 55) top = 55;
this.top = 55;
},
open: function() {
this.homeActive ? this.$store.commit('CLOSE_HOME') : this.$store.commit('OPEN_HOME');
}
}
};
</script>

View File

@ -130,7 +130,7 @@ export default {
if (that.login_type === "h5") {
cookie.set("loginType", "wechat", 60);
uni.hideLoading();
this.$store.commit("LOGOUT");
this.$store.commit("logout");
this.$emit("changeswitch", false);
location.reload();
} else {
@ -138,7 +138,7 @@ export default {
.then(({ data }) => {
uni.hideLoading();
const expires_time = dayjs(data.expires_time);
store.commit("LOGIN", data.token, expires_time);
store.commit("login", data.token, expires_time);
this.$emit("changeswitch", false);
location.reload();
})

View File

@ -78,20 +78,20 @@ Vue.prototype.$VUE_APP_API_URL = VUE_APP_API_URL
// #ifdef H5
// H5编译的代码
Vue.prototype.$deviceType = 'h5'
store.commit('UPDATE_DEVICETYPE','h5')
store.commit('updateDevicetype','h5')
// #endif
// #ifdef APP-PLUS
// App平台编译的代码
Vue.prototype.$deviceType = 'app'
store.commit('UPDATE_DEVICETYPE','app')
store.commit('updateDevicetype','app')
Vue.prototype.$platform = uni.getSystemInfoSync().platform
// #endif
// #ifdef MP-WEIXIN
// 微信小程序编译的代码
Vue.prototype.$deviceType = 'routine'
store.commit('UPDATE_DEVICETYPE','routine')
store.commit('updateDevicetype','routine')
// #endif
// !!! ps 不建议在 template 中使用 $deviceType 去判断当前环境,很有可能出现 $deviceType 为 undefined 导致判断出错的问题,可以在 script 模块中正常使用

View File

@ -137,7 +137,11 @@
"urlCheck" : false
},
"usingComponents" : true,
"permission" : {}
"permission" : {
"scope.userLocation" : {
"desc" : "你的位置信息将用于小程序位置接口的效果展示"
}
}
},
"mp-alipay" : {
"usingComponents" : true

View File

@ -59,17 +59,17 @@ export default {
},
onHide() {
console.log("离开授权页面,11111");
this.UPDATE_AUTHORIZATIONPAGE(false);
this.updateAuthorizationPage(false);
this.changeAuthorization(false);
},
onUnload() {
console.log("离开授权页面,11111");
this.UPDATE_AUTHORIZATIONPAGE(false);
this.updateAuthorizationPage(false);
this.changeAuthorization(false);
},
methods: {
...mapActions(["changeAuthorization", "setUserInfo"]),
...mapMutations(["UPDATE_AUTHORIZATIONPAGE", "CHANGE_TABTAR"]),
...mapMutations(["updateAuthorizationPage",]),
back() {
this.$yrouter.switchTab({
@ -111,7 +111,7 @@ export default {
},
onUnload() {
console.log("离开授权页面,11111");
this.UPDATE_AUTHORIZATIONPAGE(false);
this.updateAuthorizationPage(false);
this.changeAuthorization(false);
},
mounted() {

View File

@ -130,6 +130,7 @@
</template>
<script>
// import { swiper, swiperSlide } from "vue-awesome-swiper";
import { mapState, mapMutations, mapActions } from 'vuex';
import GoodList from '@/components/GoodList';
import PromotionGood from '@/components/PromotionGood';
@ -233,6 +234,7 @@
};
},
onShow: function() {
this.getLocation()
let that = this;
uni.showLoading({
title: '加载中'
@ -257,6 +259,7 @@
});
},
methods: {
...mapActions(["getLocation"]),
goRoll(item){
if(item.uniapp_url){
this.$yrouter.push(item.uniapp_url)

View File

@ -43,20 +43,33 @@
</view>
<view class="iconfont icon-jiantou"></view>
</view>
<view class="store-info" v-if="system_store.id !== undefined">
<text class="title">门店信息</text>
<view class="store-info">
<view class="title acea-row row-between-wrapper">
<view>门店信息</view>
<text @click="goEvaluateList(id)" class="praise">
更多
<text class="iconfont icon-jiantou"></text>
</text>
</view>
<view class="info acea-row row-between-wrapper">
<view class="picTxt acea-row row-between-wrapper">
<view class="pictrue">
<image :src="system_store.image" />
<image :src="systemStore.image" />
</view>
<view class="text">
<view class="name line1">{{ system_store.name }}</view>
<view class="name line1">{{ systemStore.name }}</view>
<view class="address acea-row row-middle" @click="showChang">
<text class="addressTxt line1">{{system_store._detailed_address}}</text>
<text class="addressTxt">{{systemStore.address}}</text>
<text class="iconfont icon-youjian"></text>
</view>
</view>
<view class="addressBox">
<a
:href="'tel:'+systemStore.phone"
class="iconfont icon-dadianhua01 font-color-red phone"
></a>
<view class="addressTxt corlor-yshop">距离{{systemStore.distance}}千米</view>
</view>
</view>
</view>
</view>
@ -158,7 +171,7 @@
height="100%"
frameborder="0"
scrolling="no"
:src="'https://apis.map.qq.com/uri/v1/geocoder?coord=' +system_store.latitude +',' +system_store.longitude +'&referer=' +mapKey"
:src="'https://apis.map.qq.com/uri/v1/geocoder?coord=' +systemStore.latitude +',' +systemStore.longitude +'&referer=' +mapKey"
></iframe>
</view>
<view class="posterCanvasWarp">
@ -255,18 +268,16 @@ export default {
observeParents: true
},
goodList: [],
system_store: {},
systemStore: {},
qqmapsdk: null,
productConClass: "product-con"
};
},
computed: mapGetters(["isLogin"]),
computed: mapGetters(["isLogin", "location"]),
mounted: function() {
let url = handleQrCode();
console.log(url);
if (url && url.productId) {
this.id = url.productId;
} else {
this.id = this._route.query.id;
}
@ -299,15 +310,13 @@ export default {
}
});
},
showChang: function() {
if (isWeixin()) {
showChang: function(data) {
let config = {
latitude: this.system_store.latitude,
longitude: this.system_store.longitude,
name: this.system_store.name,
address: this.system_store._detailed_address
latitude: data.latitude,
longitude: data.longitude,
name: data.name,
address: data._detailed_address
};
} else {
if (!this.mapKey) {
uni.showToast({
title: "暂无法使用查看地图请配置您的腾讯地图key",
@ -317,7 +326,6 @@ export default {
return;
}
this.mapShow = true;
}
},
updateTitle() {
// document.title = this.storeInfo.storeName || this.$yroute.meta.title;
@ -340,13 +348,14 @@ export default {
//产品详情接口;
productCon: function() {
let that = this;
let from = {};
let from = this.location;
if (this.$deviceType == "app") {
from.from = "app";
}
uni.showLoading({ title: "加载中", mask: true });
getProductDetail(that.id, from)
.then(res => {
console.log(res);
that.$set(that, "storeInfo", res.data.storeInfo);
// 给 attr 赋值,将请求回来的规格赋值给 attr
that.$set(that.attr, "productAttr", res.data.productAttr);
@ -365,7 +374,7 @@ export default {
}
that.posterData.price = that.storeInfo.price;
that.posterData.code = that.storeInfo.codeBase;
// that.system_store = res.data.system_store;
that.systemStore = res.data.systemStore;
let good_list = res.data.goodList || [];
let goodArray = [];
let count = Math.ceil(good_list.length / 6);
@ -703,12 +712,16 @@ export default {
}
.product-con .store-info .info .picTxt {
width: 6.15 * 100rpx;
width: 100%;
display: flex;
align-items: center;
}
.product-con .store-info .info .picTxt .pictrue {
width: 0.76 * 100rpx;
height: 0.76 * 100rpx;
margin-right: 0.2 * 100rpx;
}
.product-con .store-info .info .picTxt .pictrue image {
@ -718,7 +731,7 @@ export default {
}
.product-con .store-info .info .picTxt .text {
width: 5.22 * 100rpx;
flex: 1;
}
.product-con .store-info .info .picTxt .text .name {
@ -738,12 +751,25 @@ export default {
margin-left: 0.1 * 100rpx;
}
.product-con .store-info .info .picTxt .text .address .addressTxt {
width: 4.8 * 100rpx;
.product-con .store-info .info .picTxt .addressBox {
display: flex;
flex-direction: column;
align-items: flex-end;
}
.product-con .store-info .info .picTxt .addressBox .iconfont {
font-size: 0.4 * 100rpx;
}
.product-con .store-info .info .picTxt .addressBox .addressTxt {
font-size: 0.24 * 100rpx;
color: #00c17b;
}
.product-con .store-info .info .iconfont {
font-size: 0.4 * 100rpx;
.product-con .store-info .praise {
font-size: 0.28 * 100rpx;
color: #808080;
}
.product-con .store-info .praise .iconfont {
font-size: 0.28 * 100rpx;
}
.product-con .superior {

View File

@ -174,7 +174,7 @@ export default {
})
.then(res => {
var data = res.data;
that.$store.commit("LOGIN", data.token, dayjs(data.expires_time));
that.$store.commit("login", data.token, dayjs(data.expires_time));
handleGetUserInfo();
})
.catch(err => {
@ -305,7 +305,7 @@ export default {
spread: cookie.get("spread")
})
.then(({ data }) => {
this.$store.commit("LOGIN", data.token, dayjs(data.expires_time));
this.$store.commit("login", data.token, dayjs(data.expires_time));
handleGetUserInfo();
// let replace=this.$yroute.query.replace
// if(replace){

View File

@ -149,7 +149,7 @@ export default {
.then(({ data }) => {
uni.hideLoading();
const expires_time = dayjs(data.expires_time);
store.commit("LOGIN", data.token, expires_time);
store.commit("login", data.token, expires_time);
that.$emit("changeswitch", false);
location.reload();
})
@ -164,7 +164,7 @@ export default {
} else {
cookie.set("loginType", "wechat", 60);
uni.hideLoading();
this.$store.commit("LOGOUT");
this.$store.commit("logout");
this.$emit("changeswitch", false);
}
},
@ -204,7 +204,7 @@ export default {
avatar: userInfo.avatar
}).then(
res => {
this.$store.dispatch("USERINFO", true);
this.$store.dispatch("userInfo", true);
this.$uni.showToast({
title: res.msg,
icon: "none",
@ -229,7 +229,7 @@ export default {
if (res.confirm) {
getLogout()
.then(res => {
this.$store.commit("LOGOUT");
this.$store.commit("logout");
clearAuthStatus();
location.href = location.origin;
})

View File

@ -115,9 +115,6 @@
</view>
</view>
<view class="myService">
<view class="title acea-row row-middle">
<text>我的服务</text>
</view>
<view class="serviceList acea-row row-middle">
<template v-for="(item, MyMenusIndex) in MyMenus">
<view
@ -129,7 +126,8 @@
<view class="pictrue">
<image :src="item.pic" />
</view>
<view>{{ item.name }}</view>
<view class="cell">{{ item.name }}</view>
<text class="iconfont icon-jiantou"></text>
</view>
</template>
</view>
@ -188,7 +186,7 @@ export default {
},
computed: mapGetters(["userInfo"]),
methods: {
...mapMutations(["UPDATE_AUTHORIZATIONPAGE", "CHANGE_TABTAR"]),
...mapMutations(["updateAuthorizationPage", "CHANGE_TABTAR"]),
goReturnList() {
this.$yrouter.push("/pages/order/ReturnList/index");
},
@ -240,7 +238,7 @@ export default {
.then(res => {
console.log(res);
// this.User();
thit.$store.dispatch("USERINFO", true);
thit.$store.dispatch("userInfo", true);
uni.hideLoading();
uni.showToast({
title: res.msg,
@ -250,7 +248,7 @@ export default {
})
.catch(error => {
uni.hideLoading();
thit.$store.dispatch("USERINFO", true);
thit.$store.dispatch("userInfo", true);
console.log(error);
uni.showToast({
title:
@ -353,7 +351,7 @@ export default {
},
onHide() {
console.log('离开用户中心')
this.UPDATE_AUTHORIZATIONPAGE(false);
this.updateAuthorizationPage(false);
}
};
</script>

View File

@ -11,7 +11,7 @@ import {
} from "@/api/user";
import dialog from "@/utils/dialog";
const LOGIN_KEY = "login_status";
const loginKey = "login_status";
const vuexStore = new Vuex.Store({
state: {
@ -20,37 +20,20 @@ const vuexStore = new Vuex.Store({
// 是否授权
isAuthorization: false,
// 不建议从这里取 token但是删除掉会影响其他的页面
token: cookie.get(LOGIN_KEY) || null,
token: cookie.get(loginKey) || null,
userInfo: cookie.get('userInfo'),
$deviceType: null,
location: {
latitude: '',
longitude: ''
}
},
mutations: {
SHOW_FOOTER(state) {
state.footer = true;
},
HIDE_FOOTER(state) {
state.footer = false;
},
SHOW_HOME(state) {
state.home = true;
},
HIDE_HOME(state) {
state.home = false;
},
OPEN_HOME(state) {
state.homeActive = true;
},
CLOSE_HOME(state) {
state.homeActive = false;
},
CHANGE_TABTAR(state, index) {
state.tabtarIndex = index;
},
LOGIN(state, token, expires_time) {
login(state, token, expires_time) {
state.token = token;
cookie.set(LOGIN_KEY, token, expires_time);
cookie.set(loginKey, token, expires_time);
},
LOGOUT(state) {
logout(state) {
console.log('清除数据')
state.token = null;
state.userInfo = null
@ -59,11 +42,11 @@ const vuexStore = new Vuex.Store({
cookie.clearAll()
cookie.set('spread', spread)
},
BACKGROUND_COLOR(state, color) {
backgroundColor(state, color) {
state.color = color;
// document.body.style.backgroundColor = color;
},
UPDATE_USERINFO(state, userInfo) {
updateUserInfo(state, userInfo) {
state.userInfo = userInfo;
if (userInfo) {
cookie.set('userInfo', userInfo)
@ -71,24 +54,40 @@ const vuexStore = new Vuex.Store({
cookie.set('userInfo', null)
}
},
UPDATE_AUTHORIZATIONPAGE(state, isAuthorizationPage) {
updateAuthorizationPage(state, isAuthorizationPage) {
state.isAuthorizationPage = isAuthorizationPage;
},
UPDATE_AUTHORIZATION(state, isAuthorization) {
updateAuthorization(state, isAuthorization) {
state.isAuthorization = isAuthorization;
},
UPDATE_DEVICETYPE(state, $deviceType) {
updateDevicetype(state, $deviceType) {
state.$deviceType = $deviceType;
},
setLocation(state, location) {
console.log(location, '定位')
state.location = location
}
},
actions: {
USERINFO({ state, commit }, force) {
getLocation({ state, commit }, force) {
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log(res)
commit("setLocation", {
longitude: res.longitude,
latitude: res.latitude,
});
}
});
},
userInfo({ state, commit }, force) {
if (state.userInfo !== null && !force) {
return Promise.resolve(state.userInfo);
} else {
return new Promise(reslove => {
getUserInfo().then(res => {
commit("UPDATE_USERINFO", res.data);
commit("updateUserInfo", res.data);
reslove(res.data);
});
}).catch(() => {
@ -100,7 +99,7 @@ const vuexStore = new Vuex.Store({
return new Promise(reslove => {
getUser().then(res => {
console.log(res)
commit("UPDATE_USERINFO", res.data);
commit("updateUserInfo", res.data);
reslove(res.data);
});
}).catch((error) => {
@ -112,25 +111,25 @@ const vuexStore = new Vuex.Store({
state,
commit
}, data, date) {
commit("LOGIN", data, date);
commit("login", data, date);
},
setUserInfo({
state,
commit
}, user) {
commit("UPDATE_USERINFO", user);
commit("updateUserInfo", user);
},
changeAuthorizationPage({
state,
commit
}, index) {
commit("UPDATE_AUTHORIZATIONPAGE", index);
commit("updateAuthorizationPage", index);
},
changeAuthorization({
state,
commit
}, index) {
commit("UPDATE_AUTHORIZATION", index);
commit("updateAuthorization", index);
},
},
getters: {
@ -139,6 +138,7 @@ const vuexStore = new Vuex.Store({
token: state => state.token,
isLogin: state => !!state.token,
userInfo: state => state.userInfo || {},
location: state => state.location,
},
strict: debug
});

View File

@ -184,8 +184,8 @@ export const login = () => {
console.log('登录接口调用成功')
console.log('开始处理登录信息保存,并获取用户详情')
uni.hideLoading();
store.commit("LOGIN", data.token, dayjs(data.expires_time));
store.dispatch('USERINFO', true)
store.commit("login", data.token, dayjs(data.expires_time));
store.dispatch('userInfo', true)
getUser().then(user => {
console.log('获取用户信息成功')
store.dispatch('setUserInfo', user.data)
@ -439,7 +439,7 @@ export function routerPermissions(url, type) {
console.log('————————')
console.log('登录成功,跳转页面')
console.log('————————')
store.commit("UPDATE_AUTHORIZATIONPAGE", false);
store.commit("updateAuthorizationPage", false);
if (path == '/pages/shop/ShoppingCart/index' || path == '/pages/user/User/index') {
console.log('————————')
console.log('当前是购物车,或者个人中心')
@ -475,7 +475,7 @@ export function routerPermissions(url, type) {
switchTab({
path,
})
store.commit("UPDATE_AUTHORIZATIONPAGE", false);
store.commit("updateAuthorizationPage", false);
return
}
reLaunch({
@ -709,8 +709,8 @@ export const handleLoginFailure = () => {
console.log('退出登录,标记当前页面为授权页面,防止多次跳转')
console.log('————————')
store.commit("LOGOUT");
store.commit("UPDATE_AUTHORIZATION", false);
store.commit("logout");
store.commit("updateAuthorization", false);
// token 失效
// 判断当前是不是已经在登录页面或者授权页,防止二次跳转
@ -723,7 +723,7 @@ export const handleLoginFailure = () => {
console.log('当前是授权页面')
console.log(store.getters)
console.log('————————')
store.commit("UPDATE_AUTHORIZATIONPAGE", true);
store.commit("updateAuthorizationPage", true);
let path = getCurrentPageUrlWithArgs()