-
15common/js/mixins.js
-
8common/js/uniExport.js
-
2common/js/utils.js
-
79components/privacyPopup/privacyPopup.vue
-
35components/privacyRadion/privacyRadion.vue
-
9main.js
-
11manifest.json
-
2pages.json
-
204pages/tabbar/index/index.vue
-
8pages/tabbar/learnCar/index.vue
-
98pages/tabbar/mine/index.vue
-
144pages/userCenter/login/login.vue
-
40pages/userCenter/login/loginByPhone.vue
-
BINstatic/images/bigImg/topbg.png
-
BINstatic/images/userCenter/btn_shouye_nor@2x.png
-
BINstatic/images/userCenter/btn_wode_cli@2x.png
-
BINstatic/images/userCenter/btn_xueche_nor@2x.png
-
BINstatic/images/userCenter/home_icon_biangen@2x.png
-
BINstatic/images/userCenter/home_icon_shenqingtuixue@2x.png
-
BINstatic/images/userCenter/home_icon_tgzhuanxiao@2x.png
-
BINstatic/images/userCenter/ic_chaxun@2x.png
-
BINstatic/images/userCenter/ic_dingdan@2x.png
-
BINstatic/images/userCenter/ic_erweima@2x.png
-
BINstatic/images/userCenter/ic_hetong@2x.png
-
BINstatic/images/userCenter/ic_pingjia@2x.png
-
BINstatic/images/userCenter/ic_shenghuo@2x.png
-
BINstatic/images/userCenter/ic_shoucang@2x.png
-
BINstatic/images/userCenter/ic_shuju@2x.png
-
BINstatic/images/userCenter/ic_yuyue@2x.png
-
BINstatic/images/userCenter/loginTitle.png
-
BINstatic/images/userCenter/title_1.png
-
BINstatic/images/userCenter/topbg.png
-
BINstatic/images/登录流程切图/__MACOSX/登录流程切图/._.DS_Store
-
BINstatic/images/登录流程切图/__MACOSX/登录流程切图/._btn_1.png
-
BINstatic/images/登录流程切图/登录流程切图/.DS_Store
-
BINstatic/images/登录流程切图/登录流程切图/bg_1.png
-
BINstatic/images/登录流程切图/登录流程切图/btn_1.png
-
BINstatic/images/登录流程切图/登录流程切图/btn_2.png
-
BINstatic/images/登录流程切图/登录流程切图/title_1.png
-
22store/getters.js
-
58store/index.js
-
102store/modules/user.js
@ -0,0 +1,15 @@ |
|||||
|
|
||||
|
import { mapState } from 'vuex' |
||||
|
|
||||
|
export default { |
||||
|
computed: { |
||||
|
...mapState({ |
||||
|
city: state=> state.user.vuex_cityInfo.city, |
||||
|
vuex_cityInfo: state=> state.user.vuex_cityInfo |
||||
|
}), |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
|
||||
|
export let goPage = (url, params={}, type='navigateTo')=> { |
||||
|
uni.$u.route({ |
||||
|
url, |
||||
|
params, |
||||
|
type |
||||
|
}) |
||||
|
} |
@ -0,0 +1,79 @@ |
|||||
|
<template> |
||||
|
<view class="privacyPopup"> |
||||
|
<view class="h1">个人信息保护声明</view> |
||||
|
<view class="content"> |
||||
|
<view class="nickName">亲爱的用户</view> |
||||
|
<view class="text"> |
||||
|
感谢您信任并使用江西驾考公共服 |
||||
|
务平台小程序。我们深知个人信息对您 |
||||
|
的重要性,非常重视您的个人信息和隐 |
||||
|
私保护,并会尽全力保护您的个人信息 |
||||
|
安全可靠。我们承诺,我们将按业界成 |
||||
|
熟的安全标准,采取相应的安全保护措 |
||||
|
《隐私政策》帮助您了解我们收集、使 |
||||
|
用、存储和共享个人信息的情况。 |
||||
|
在您注册成为学员的过程中,您需要 |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="btnBox"> |
||||
|
<view class="btn" @click="$emit('disagree')">不同意</view> |
||||
|
<view class="btn right" @click="$emit('agree')">同意</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.privacyPopup { |
||||
|
width: 558rpx; |
||||
|
// height: 762rpx; |
||||
|
position: relative; |
||||
|
background: linear-gradient(180deg, #C1DFFE 0%, #FFFFFF 20%); |
||||
|
border-radius: 16rpx; |
||||
|
|
||||
|
.h1 { |
||||
|
padding: 42rpx 0 0 0; |
||||
|
font-size: 36rpx; |
||||
|
color: #333; |
||||
|
text-align: center; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.content { |
||||
|
padding: 30rpx 30rpx 120rpx 30rpx; |
||||
|
font-size: 28rpx; |
||||
|
color: #333; |
||||
|
.nickName { |
||||
|
z-index: 2em; |
||||
|
} |
||||
|
|
||||
|
.text { |
||||
|
margin-top: 16rpx; |
||||
|
z-index: 2em; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.btnBox { |
||||
|
width: 100%; |
||||
|
height: 110rpx; |
||||
|
border-top: 1rpx solid #E8E9EC; |
||||
|
display: flex; |
||||
|
padding: 30rpx 0; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: 0; |
||||
|
.btn { |
||||
|
flex: 1; |
||||
|
text-align: center; |
||||
|
color: #ADADAD; |
||||
|
font-size: 36rpx; |
||||
|
} |
||||
|
|
||||
|
.btn.right { |
||||
|
color: $themC; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,35 @@ |
|||||
|
<template> |
||||
|
<view class="radioWrap"> |
||||
|
<u-checkbox-group @change="changeRadio"> |
||||
|
<u-checkbox v-model="isCheck" shape="circle" label="已阅读并同意" :labelSize="12" ></u-checkbox> |
||||
|
</u-checkbox-group> |
||||
|
<view class="privacyText"> |
||||
|
<text>《用户协议》</text>和 <text>《隐私协议》</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
props: ['isCheck'], |
||||
|
methods: { |
||||
|
changeRadio(val) { |
||||
|
this.$emit('changeRadio', val) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.radioWrap { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
.privacyText { |
||||
|
font-size: 24rpx; |
||||
|
color: #888E94; |
||||
|
text { |
||||
|
color: $themC; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
After Width: 750 | Height: 362 | Size: 130 KiB |
After Width: 56 | Height: 56 | Size: 2.8 KiB |
After Width: 56 | Height: 56 | Size: 1.3 KiB |
After Width: 56 | Height: 56 | Size: 1.8 KiB |
After Width: 48 | Height: 48 | Size: 2.2 KiB |
After Width: 48 | Height: 48 | Size: 705 B |
After Width: 48 | Height: 48 | Size: 865 B |
After Width: 48 | Height: 48 | Size: 1.0 KiB |
After Width: 68 | Height: 68 | Size: 2.1 KiB |
After Width: 40 | Height: 40 | Size: 1.4 KiB |
After Width: 68 | Height: 68 | Size: 2.2 KiB |
After Width: 68 | Height: 68 | Size: 2.3 KiB |
After Width: 68 | Height: 68 | Size: 3.0 KiB |
After Width: 68 | Height: 68 | Size: 3.1 KiB |
After Width: 68 | Height: 68 | Size: 2.8 KiB |
After Width: 68 | Height: 68 | Size: 3.1 KiB |
After Width: 658 | Height: 94 | Size: 19 KiB |
Before Width: 329 | Height: 47 | Size: 8.8 KiB |
After Width: 750 | Height: 362 | Size: 130 KiB |
Before Width: 375 | Height: 180 | Size: 36 KiB |
Before Width: 16 | Height: 16 | Size: 461 B |
Before Width: 16 | Height: 16 | Size: 567 B |
Before Width: 329 | Height: 47 | Size: 8.8 KiB |
@ -1,21 +1,7 @@ |
|||||
// export default {
|
|
||||
// userInfo: state => state.user.userInfo,
|
|
||||
// pushMessage: state => state.push.pushMessage,
|
|
||||
// currentAdd: state=>{
|
|
||||
// };
|
|
||||
|
|
||||
export default { |
export default { |
||||
|
city: state => state.user.vuex_cityInfo.city, |
||||
pushMessage: state => state.push.pushMessage, |
pushMessage: state => state.push.pushMessage, |
||||
getCurrentAdd: function (state) { |
|
||||
//返回一个函数用于接收
|
|
||||
return function (id) { |
|
||||
let add = state.add.addList.find(item => item.id == id) |
|
||||
if(add) { |
|
||||
return add |
|
||||
}else { |
|
||||
return {} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
}; |
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
@ -1,31 +1,99 @@ |
|||||
|
import qqmapWx from '../../common/sdk/qqmap-wx-jssdk.min.js'; // 引入
|
||||
|
|
||||
import addApi from '../../common/sdk/qqmap-wx-jssdk.min.js'; // 引入
|
|
||||
|
|
||||
const user = { |
const user = { |
||||
state: { |
state: { |
||||
addList: [] |
|
||||
|
vuex_cityInfo: uni.getStorageSync('vuex_cityInfo') ? uni.getStorageSync('vuex_cityInfo') : {city: '杭州市'}, |
||||
|
vuex_userInfo: uni.getStorageSync('vuex_userInfo') ? uni.getStorageSync('vuex_userInfo') : {}, |
||||
}, |
}, |
||||
mutations: { |
mutations: { |
||||
// 更新广告列表
|
|
||||
upDateAddList(state, list) { |
|
||||
state.addList = list |
|
||||
}, |
|
||||
|
update_vuex_cityInfo(state, payload) { |
||||
|
state.vuex_cityInfo = payload |
||||
|
uni.setStorageSync('vuex_cityInfo', payload); |
||||
|
} |
||||
}, |
}, |
||||
actions: { |
actions: { |
||||
// 点击广告
|
|
||||
async addClick({commit, dispatch}, curAdd) { |
|
||||
// await dispatch('updateStatistics')
|
|
||||
curAdd.clicks ++ |
|
||||
if(!curAdd.adBannerDO.jumpUrl) { |
|
||||
return false |
|
||||
|
getCity({commit}) { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
// #ifdef APP-PLUS||H5
|
||||
|
getCityInfo(resolve, reject,commit) |
||||
|
// #endif
|
||||
|
// #ifdef MP-WEIXIN
|
||||
|
uni.authorize({ |
||||
|
scope: 'scope.userLocation', |
||||
|
success() { |
||||
|
getCityInfo(resolve, reject,commit) |
||||
|
}, |
||||
|
fail: function(res4) { |
||||
|
uni.showModal({ |
||||
|
title: '提示', |
||||
|
content: '小程序想要获取您的地里位置', |
||||
|
success: function(res) { |
||||
|
if (res.confirm) { |
||||
|
uni.openSetting({ |
||||
|
success(res) { |
||||
|
getCityInfo(resolve, reject,commit) |
||||
|
} |
||||
|
}); |
||||
|
} else if (res.cancel) { |
||||
|
console.log('用户点击取消'); |
||||
|
} |
||||
} |
} |
||||
|
|
||||
commit('updateWebVeiwUrl', curAdd.adBannerDO.jumpUrl) |
|
||||
uni.navigateTo({ |
|
||||
url:'/pages/commeWebView/addWebView' |
|
||||
|
}) |
||||
|
}, |
||||
|
}) |
||||
|
// #endif
|
||||
}) |
}) |
||||
}, |
}, |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
export default user |
|
||||
|
export default user |
||||
|
|
||||
|
|
||||
|
function getCityInfo(resolve, reject, commit) { |
||||
|
uni.showLoading({ |
||||
|
title: '加载中...' |
||||
|
}) |
||||
|
var qqmapKey = new qqmapWx({ |
||||
|
key: '2BTBZ-6BQRB-ZG4UG-NOYYG-KZMH7-B4BYN' |
||||
|
}) |
||||
|
uni.getLocation({ |
||||
|
type: 'wgs84', |
||||
|
// type: 'gcj02',
|
||||
|
success: function(res) { |
||||
|
console.log('当前位置的经度:' + res.longitude); |
||||
|
console.log('当前位置的纬度:' + res.latitude); |
||||
|
qqmapKey.reverseGeocoder({ |
||||
|
location: { |
||||
|
latitude: res.latitude, |
||||
|
longitude: res.longitude |
||||
|
}, |
||||
|
success(res2) { |
||||
|
// console.log('城市信息')
|
||||
|
// console.log(res2.result)
|
||||
|
let result = res2.result |
||||
|
let obj = { |
||||
|
latitude: res.latitude, |
||||
|
longitude: res.longitude, |
||||
|
city: result.address_component.city, |
||||
|
cityCode: result.ad_info.adcode, |
||||
|
province: result.address_component.province, |
||||
|
district: result.address_component.district |
||||
|
} |
||||
|
commit('update_vuex_cityInfo', obj) |
||||
|
resolve(obj) |
||||
|
uni.hideLoading(); |
||||
|
|
||||
|
}, |
||||
|
fail: function(res3) { |
||||
|
reject(res3) |
||||
|
uni.hideLoading(); |
||||
|
}, |
||||
|
}) |
||||
|
}, |
||||
|
fail(e) { |
||||
|
console.log(e) |
||||
|
} |
||||
|
}) |
||||
|
} |