Commit 55ddb3f8a694bb5d7e0b211e5a46b4f65a418a56

Authored by 范牧
1 parent 09a4a9a0aa
Exists in master

登陆逻辑修改

1   -<script lang="ts">
  1 +<script>
2 2 import Vue from 'vue';
  3 + import store from '@/store';
  4 +
3 5 export default Vue.extend({
4 6 mpType: 'app',
5   - onLaunch() {
6   - console.log('App Launch')
  7 + onLaunch(options) {
  8 + const option = options || {};
  9 + // 获取用户来源
  10 + console.log('软件启动,输出转来的参数:', option);
  11 + console.log('场景值------------------:', option.scene);
  12 + let loginQueryInfo = option ? option.query : {};
  13 + loginQueryInfo = loginQueryInfo || {};
  14 + console.log('loginQueryInfo onShow===>', loginQueryInfo);
  15 + const scene = decodeURIComponent(loginQueryInfo.scene);
  16 + console.log('decodeURIComponent scense====>', scene);
  17 + let fromInfo = {};
  18 +
  19 + if(scene.length > 0 ) {
  20 + const getQueryString = {
  21 + uid: undefined,
  22 + sid: undefined,
  23 + pid: undefined
  24 + };
  25 + const strB = scene.split('&');
  26 +
  27 + for(let i = 0; i < strB.length; i += 1) {
  28 + getQueryString[strB[i].split('=')[0]] = unescape(strB[i].split('=')[1]);
  29 + }
  30 + fromInfo = {
  31 + loginQueryInfo,
  32 + fromuid: getQueryString.uid,
  33 + fromsid: getQueryString.sid,
  34 + frompid: getQueryString.pid,
  35 + scene: option.scene,
  36 + }
  37 + store.dispatch('user/setFrom', fromInfo);
  38 + console.log('loginQueryInfo.hasOwnProperty=====111===>', getQueryString);
  39 + } else {
  40 + console.log('loginQueryInfo.hasOwnProperty====22222====>', loginQueryInfo);
  41 + if (loginQueryInfo.hasOwnProperty('sid') == false) {
  42 + loginQueryInfo.sid = 0;
  43 + }
  44 + if (loginQueryInfo.hasOwnProperty('pid') == false) {
  45 + loginQueryInfo.pid = 0;
  46 + }
  47 + if (loginQueryInfo.hasOwnProperty('uid') == false) {
  48 + loginQueryInfo.uid = 0;
  49 + }
  50 + fromInfo = {
  51 + loginQueryInfo,
  52 + fromuid: loginQueryInfo.uid,
  53 + fromsid: loginQueryInfo.sid,
  54 + frompid: loginQueryInfo.pid,
  55 + scene: option.scene,
  56 + }
  57 + store.dispatch('user/setFrom', fromInfo)
  58 + }
  59 +
  60 + // 登陆
  61 + const openId = uni.getStorageSync('openid') || "";
  62 + if(openId.length <= 10) {
  63 + uni.clearStorageSync()
  64 + store.dispatch("user/login", fromInfo);
  65 + } else {
  66 + store.dispatch("user/getUserInfo", fromInfo);
  67 + }
7 68 },
8 69 onShow() {
9 70  
... ... @@ -11,6 +72,8 @@
11 72 },
12 73 onHide() {
13 74 console.log('App Hide')
  75 + },
  76 + methods: {
14 77 }
15 78 });
16 79 </script>
... ...
src/pages/index/index.vue
... ... @@ -138,8 +138,10 @@ export default {
138 138 },
139 139 onLoad: function() {
140 140 store.dispatch('test/fetch');
141   - store.dispatch('categoryOrder/fetch')
142   -
  141 + store.dispatch('categoryOrder/fetch')
  142 + // 登陆
  143 + // store.dispatch('user/login')
  144 +
143 145 //定时器模拟ajax异步请求数据
144 146 setTimeout(()=>{
145 147 //传入defaultSelected的结构不能错,错了就报错运行异常。 不选中的项目传入null
... ...
src/pages/user/user.vue
1 1 <template>
2 2 <view class="wrap">
3   - <view class="content">
  3 + <view v-if="isAuth" class="content">
4 4 <view class="userInfo">
5 5 <view class="info">
6   - <image src="../../static/img/detail/d10.png" mode="aspectFill"></image>
  6 + <image :src="headerphoto" mode="aspectFill"></image>
7 7 <view class="infoText">
8   - <text class="userName">{{userName}}</text>
9   - <text class="nickName">用户名:骆驼不死的祥子</text>
  8 + <text class="userName">{{nickName}}</text>
10 9 </view>
11 10 </view>
12 11 <view class="service">
... ... @@ -57,19 +56,30 @@
57 56 </view>
58 57 </view>
59 58 </view>
60   -
  59 + <view v-else class="auth">
  60 + <view class="icon"></view>
  61 + <view class="divider"></view>
  62 + <view class="title">申请获取以下权限</view>
  63 + <view class="text">获得您的公开信息(昵称、头像等)</view>
  64 + <button
  65 + type="primary"
  66 + open-type="getUserInfo"
  67 + @getuserinfo="onGotUserInfo"
  68 + >授权登陆</button>
  69 + </view>
61 70 </view>
62 71 </template>
63 72  
64 73 <script>
65   - import Card from "@/components/CommodityCard/CommodityCard.vue"
  74 + import Card from "@/components/CommodityCard/CommodityCard.vue";
  75 + import store from '@/store';
  76 +
66 77 export default {
67 78 components: {
68 79 'Card':Card
69 80 },
70 81 data() {
71 82 return {
72   -
73 83 //商品数据
74 84 goodsList:[
75 85 { goods_id: 0, img: "/static/img/goods/p1.jpg", name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' },
... ... @@ -83,14 +93,43 @@
83 93 { goods_id: 8, img: '/static/img/goods/p9.jpg', name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' },
84 94 { goods_id: 9, img: '/static/img/goods/p10.jpg', name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' }
85 95 ],
86   - headerphoto:'',
87   - userName:'Adam'
  96 + isAuth: true, // 是否显示授权页面
88 97 }
89 98 },
90 99 onLoad() {
91   -
  100 + // 判断是否授权
  101 + uni.getSetting({
  102 + success(res) {
  103 + console.log('authSetting',res.authSetting)
  104 + if(res.authSetting['scope.userInfo'] === true) {
  105 + this.isAuth = true
  106 + } else {
  107 + this.isAuth = false
  108 + }
  109 + }
  110 + })
  111 + },
  112 + computed: {
  113 + nickName() {
  114 + console.log('nickName', this.$store.state.user.userInfo)
  115 + return this.$store.state.user.userInfo.nickName;
  116 + },
  117 + headerphoto() {
  118 + return this.$store.state.user.userInfo.headerphoto;
  119 + }
92 120 },
93 121 methods: {
  122 + // 授权
  123 + onGotUserInfo(e) {
  124 + console.log('anthInfo', e);
  125 + if(e.detail.errMsg == 'getUserInfo:ok') {
  126 + const { fromInfo } = this.$store.state.user;
  127 + console.log('=====la', fromInfo)
  128 + // 用户授权成功
  129 + store.dispatch('user/getUserInfo', fromInfo);
  130 + this.isAuth = true
  131 + }
  132 + },
94 133 toMyOrder(){
95 134 uni.navigateTo({
96 135 url: '../myOrder/myOrder?current=0',
... ... @@ -181,6 +220,7 @@
181 220 }
182 221 }
183 222 .service{
  223 + margin-top: 20rpx;
184 224 image{
185 225 height: 36rpx;
186 226 width: 36rpx;
... ... @@ -296,5 +336,42 @@
296 336 }
297 337 }
298 338 }
  339 + .auth {
  340 + height: 100vh;
  341 + display: flex;
  342 + flex-direction: column;
  343 + align-items: center;
  344 + .icon {
  345 + width: 140rpx;
  346 + height: 140rpx;
  347 + border-radius: 50%;
  348 + margin-top: 100rpx;
  349 + background-color: grey;
  350 + }
  351 + .divider {
  352 + height: 1rpx;
  353 + width: 600rpx;
  354 + margin-top: 80rpx;
  355 + background-color: #E6E3E3;
  356 + }
  357 + .title {
  358 + width: 600rpx;
  359 + margin-top: 50rpx;
  360 + text-align: left;
  361 + }
  362 + .text {
  363 + width: 600rpx;
  364 + margin-top: 30rpx;
  365 + text-align: left;
  366 + color: #E6E3E3;
  367 + }
  368 + button {
  369 + width: 450rpx;
  370 + height: 80rpx;
  371 + line-height: 80rpx;
  372 + margin-top: 80rpx;
  373 + border-radius: 30rpx;
  374 + }
  375 + }
299 376  
300 377 </style>
... ...
src/store/modules/user.js
... ... @@ -0,0 +1,132 @@
  1 +import urlAlias from '../url';
  2 +import request from '../request';
  3 +
  4 +const {
  5 + login,
  6 + getUserInfo,
  7 +} = urlAlias;
  8 +
  9 +const state = {
  10 + fromInfo: {
  11 + loginQueryInfo: {},
  12 + fromuid: 0,
  13 + fromsid: 0,
  14 + frompid: 0,
  15 + scene: 1001,
  16 + },
  17 + userInfo: {
  18 + uid: 1,
  19 + openid: '',
  20 + nickName: '',
  21 + headerphoto: '',
  22 + }
  23 +};
  24 +
  25 +const mutations = {
  26 + FROM: (state, data) => {
  27 + state.formInfo = data;
  28 + },
  29 + UPDATE: (state, data) => {
  30 + state.userInfo = data;
  31 + }
  32 +};
  33 +
  34 +const actions = {
  35 + // 登陆
  36 + login({ commit }, param) {
  37 + const {
  38 + frompid = undefined,
  39 + fromsid = undefined,
  40 + fromuid = undefined,
  41 + scene = 1001 ,
  42 + } = param || {};
  43 + uni.login({
  44 + provider: 'weixin',
  45 + success: function (loginRes) {
  46 + console.log('login',loginRes);
  47 + request({
  48 + url: login,
  49 + data: {
  50 + app_uid: 2020,
  51 + code: loginRes.code,
  52 + frompid,
  53 + fromsid,
  54 + fromuid,
  55 +
  56 + },
  57 + success: (res) => {
  58 + const { data: { session_key, openid} } = res;
  59 + console.log('res', res)
  60 + // 写入缓存
  61 + uni.setStorageSync('session_key', session_key);
  62 + uni.setStorageSync('openid', openid);
  63 + request({
  64 + url: getUserInfo,
  65 + data: {
  66 + app_uid: 2020,
  67 + frompid,
  68 + fromsid,
  69 + fromuid,
  70 + openid,
  71 + scene,
  72 + },
  73 + success: (res) => {
  74 + console.log('userInfo=====', res);
  75 + const { data: { data: { uid, username: nickName, openid, headerphoto } } } = res;
  76 + const userInfo = {
  77 + uid,
  78 + openid,
  79 + nickName,
  80 + headerphoto,
  81 + }
  82 + commit("UPDATE", userInfo)
  83 + }
  84 + })
  85 + }
  86 + })
  87 + }
  88 + });
  89 + },
  90 + setFrom({ commit }, param) {
  91 + commit("FROM", param);
  92 + },
  93 + getUserInfo( { commit }, param) {
  94 + const {
  95 + frompid = undefined,
  96 + fromsid = undefined,
  97 + fromuid = undefined,
  98 + scene = 1001 ,
  99 + } = param || {};
  100 + // 写入缓存
  101 + const openid = uni.getStorageSync('openid', openid);
  102 + request({
  103 + url: getUserInfo,
  104 + data: {
  105 + app_uid: 2020,
  106 + frompid,
  107 + fromsid,
  108 + fromuid,
  109 + openid,
  110 + scene,
  111 + },
  112 + success: (res) => {
  113 + console.log('userInfo=====', res);
  114 + const { data: { data: { uid, username: nickName, openid, headerphoto } } } = res;
  115 + const userInfo = {
  116 + uid,
  117 + openid,
  118 + nickName,
  119 + headerphoto,
  120 + }
  121 + commit("UPDATE", userInfo)
  122 + }
  123 + })
  124 + },
  125 +}
  126 +
  127 +export default {
  128 + namespaced: true,
  129 + state,
  130 + mutations,
  131 + actions,
  132 +}
0 133 \ No newline at end of file
... ...
1 1 const urlAlias = {
2   - // 获取首页商品列表
3   - shopList: '/app/prod/list',
4   -
5   - // 获取首页商品列表
6   - category: '/app/prod/category',
  2 + // 获取首页商品列表
  3 + shopList: '/app/prod/list',
  4 +
  5 + // 获取首页商品列表
  6 + category: '/app/prod/category',
  7 + // 登陆
  8 + login: '/app/glass/getOpenId', // 登陆
  9 + getUserInfo: '/app/glass/userinfo', // 获取用户信息
7 10 }
8 11  
9 12 export default urlAlias;
... ...