-
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
-
642pages/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
-
104store/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 { |
|||
city: state => state.user.vuex_cityInfo.city, |
|||
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 = { |
|||
state: { |
|||
addList: [] |
|||
vuex_cityInfo: uni.getStorageSync('vuex_cityInfo') ? uni.getStorageSync('vuex_cityInfo') : {city: '杭州市'}, |
|||
vuex_userInfo: uni.getStorageSync('vuex_userInfo') ? uni.getStorageSync('vuex_userInfo') : {}, |
|||
}, |
|||
mutations: { |
|||
// 更新广告列表
|
|||
upDateAddList(state, list) { |
|||
state.addList = list |
|||
}, |
|||
update_vuex_cityInfo(state, payload) { |
|||
state.vuex_cityInfo = payload |
|||
uni.setStorageSync('vuex_cityInfo', payload); |
|||
} |
|||
}, |
|||
actions: { |
|||
// 点击广告
|
|||
async addClick({commit, dispatch}, curAdd) { |
|||
// await dispatch('updateStatistics')
|
|||
curAdd.clicks ++ |
|||
if(!curAdd.adBannerDO.jumpUrl) { |
|||
return false |
|||
} |
|||
|
|||
commit('updateWebVeiwUrl', curAdd.adBannerDO.jumpUrl) |
|||
uni.navigateTo({ |
|||
url:'/pages/commeWebView/addWebView' |
|||
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('用户点击取消'); |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
}) |
|||
// #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) |
|||
} |
|||
}) |
|||
} |