|
|
|
@ -23,7 +23,11 @@
|
|
|
|
<!-- #ifdef MP -->
|
|
|
|
<!-- #ifdef MP -->
|
|
|
|
<button hover-class="none" @tap="getUserProfile" class="bg-green btn1">微信登录</button>
|
|
|
|
<button hover-class="none" @tap="getUserProfile" class="bg-green btn1">微信登录</button>
|
|
|
|
<!-- #endif -->
|
|
|
|
<!-- #endif -->
|
|
|
|
<!-- <button hover-class="none" @click="isUp = true" class="btn2">手机号登录</button> -->
|
|
|
|
<!-- 关闭强制手机号时,引导已有账号用户去绑定 -->
|
|
|
|
|
|
|
|
<!-- #ifdef MP -->
|
|
|
|
|
|
|
|
<button hover-class="none" v-if="!requirePhone" @click="goBindAccountLogin" class="btn2">绑定已有账号</button>
|
|
|
|
|
|
|
|
<!-- #endif -->
|
|
|
|
|
|
|
|
<button hover-class="none" @click="goAccountLogin" class="btn2">账号密码登录</button>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<block v-if="isUp">
|
|
|
|
<block v-if="isUp">
|
|
|
|
@ -72,7 +76,11 @@
|
|
|
|
authKey: '',
|
|
|
|
authKey: '',
|
|
|
|
options: '',
|
|
|
|
options: '',
|
|
|
|
userInfo: {},
|
|
|
|
userInfo: {},
|
|
|
|
codeNum: 0
|
|
|
|
codeNum: 0,
|
|
|
|
|
|
|
|
// 小程序:是否强制获取微信手机号(true=弹手机号授权,false=跳转账号密码绑定)
|
|
|
|
|
|
|
|
requirePhone: false,
|
|
|
|
|
|
|
|
// 微信授权后待绑定的 key(关闭手机号时缓存,供「绑定已有账号」使用)
|
|
|
|
|
|
|
|
pendingBindAuthKey: ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
components: {
|
|
|
|
components: {
|
|
|
|
@ -80,9 +88,11 @@
|
|
|
|
routinePhone
|
|
|
|
routinePhone
|
|
|
|
},
|
|
|
|
},
|
|
|
|
onLoad(options) {
|
|
|
|
onLoad(options) {
|
|
|
|
// getLogo().then(res => {
|
|
|
|
// #ifdef MP
|
|
|
|
// this.logoUrl = res.data.logoUrl
|
|
|
|
// 先用本地配置同步初始化,避免 getLogo 未返回前 requirePhone 被误判
|
|
|
|
// })
|
|
|
|
this.requirePhone = this.parseRequirePhoneFlag(this.$config.MP_WECHAT_REQUIRE_PHONE);
|
|
|
|
|
|
|
|
this.loadMpLoginConfig();
|
|
|
|
|
|
|
|
// #endif
|
|
|
|
let that = this
|
|
|
|
let that = this
|
|
|
|
// #ifdef H5
|
|
|
|
// #ifdef H5
|
|
|
|
document.body.addEventListener("focusout", () => {
|
|
|
|
document.body.addEventListener("focusout", () => {
|
|
|
|
@ -131,6 +141,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
methods: {
|
|
|
|
|
|
|
|
// #ifdef MP
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 是否强制获取微信手机号(仅 "1" / true 为开启,其余均为关闭)
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
parseRequirePhoneFlag(value) {
|
|
|
|
|
|
|
|
return value === true || value === 1 || String(value) === '1';
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 拉取小程序微信登录配置(是否强制获取手机号)
|
|
|
|
|
|
|
|
* 后端 system_config.routine_login_require_phone:1=开启,0=关闭(默认)
|
|
|
|
|
|
|
|
* 未配置时使用 app/config/app.js 中的 MP_WECHAT_REQUIRE_PHONE
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
loadMpLoginConfig() {
|
|
|
|
|
|
|
|
const localDefault = this.parseRequirePhoneFlag(this.$config.MP_WECHAT_REQUIRE_PHONE);
|
|
|
|
|
|
|
|
return getLogo().then(res => {
|
|
|
|
|
|
|
|
const cfg = (res && res.data) ? res.data : {};
|
|
|
|
|
|
|
|
if (cfg.logoUrl) {
|
|
|
|
|
|
|
|
this.logoUrl = cfg.logoUrl;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 仅当后端明确返回 routineLoginRequirePhone 时才覆盖本地默认
|
|
|
|
|
|
|
|
if (cfg.routineLoginRequirePhone !== undefined && cfg.routineLoginRequirePhone !== null && cfg.routineLoginRequirePhone !== '') {
|
|
|
|
|
|
|
|
this.requirePhone = this.parseRequirePhoneFlag(cfg.routineLoginRequirePhone);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.requirePhone = localDefault;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.requirePhone;
|
|
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
|
|
|
this.requirePhone = localDefault;
|
|
|
|
|
|
|
|
return this.requirePhone;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 关闭强制手机号时:跳转账号密码页进行微信绑定
|
|
|
|
|
|
|
|
* 若尚未微信授权,提示先点「微信登录」
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
goBindAccountLogin() {
|
|
|
|
|
|
|
|
if (!this.pendingBindAuthKey) {
|
|
|
|
|
|
|
|
return this.$util.Tips({
|
|
|
|
|
|
|
|
title: '请先点击上方「微信登录」完成授权'
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
|
|
|
url: '/pages/users/login/index?bindWechat=1&authKey=' + encodeURIComponent(this.pendingBindAuthKey)
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 新微信用户且关闭强制手机号:跳转绑定页
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
goWechatBindLogin(authKey) {
|
|
|
|
|
|
|
|
this.pendingBindAuthKey = authKey;
|
|
|
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
|
|
|
url: '/pages/users/login/index?bindWechat=1&authKey=' + encodeURIComponent(authKey)
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
goAccountLogin() {
|
|
|
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
|
|
|
url: '/pages/users/login/index'
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
back() {
|
|
|
|
back() {
|
|
|
|
uni.navigateBack();
|
|
|
|
uni.navigateBack();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -224,19 +294,22 @@
|
|
|
|
uni.showLoading({
|
|
|
|
uni.showLoading({
|
|
|
|
title: '正在登录中'
|
|
|
|
title: '正在登录中'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// 先确保开关配置已加载,再发起微信登录,避免 requirePhone 竞态导致误弹手机号
|
|
|
|
|
|
|
|
self.loadMpLoginConfig().finally(() => {
|
|
|
|
Routine.getUserProfile()
|
|
|
|
Routine.getUserProfile()
|
|
|
|
.then(res => {
|
|
|
|
.then(res => {
|
|
|
|
Routine.getCode()
|
|
|
|
Routine.getCode()
|
|
|
|
.then(code => {
|
|
|
|
.then(code => {
|
|
|
|
self.getWxUser(code, res);
|
|
|
|
self.getWxUser(code, res);
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.catch(res => {
|
|
|
|
.catch(() => {
|
|
|
|
uni.hideLoading();
|
|
|
|
uni.hideLoading();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.catch(res => {
|
|
|
|
.catch(() => {
|
|
|
|
uni.hideLoading();
|
|
|
|
uni.hideLoading();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
getWxUser(code, res) {
|
|
|
|
getWxUser(code, res) {
|
|
|
|
@ -254,17 +327,24 @@
|
|
|
|
userInfo.type = 'routine'
|
|
|
|
userInfo.type = 'routine'
|
|
|
|
Routine.authUserInfo(userInfo.code, userInfo)
|
|
|
|
Routine.authUserInfo(userInfo.code, userInfo)
|
|
|
|
.then(res => {
|
|
|
|
.then(res => {
|
|
|
|
self.authKey = res.data.key;
|
|
|
|
const payload = (res && res.data) ? res.data : (res || {});
|
|
|
|
if (res.data.type === 'register') {
|
|
|
|
self.authKey = payload.key;
|
|
|
|
|
|
|
|
if (payload.type === 'register') {
|
|
|
|
uni.hideLoading();
|
|
|
|
uni.hideLoading();
|
|
|
|
self.isPhoneBox = true
|
|
|
|
self.isPhoneBox = false;
|
|
|
|
|
|
|
|
// 开关开启:弹出微信手机号授权;关闭:跳转账号密码绑定页
|
|
|
|
|
|
|
|
if (self.requirePhone) {
|
|
|
|
|
|
|
|
self.isPhoneBox = true;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
self.goWechatBindLogin(payload.key);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (res.data.type === 'login') {
|
|
|
|
}
|
|
|
|
|
|
|
|
if (payload.type === 'login') {
|
|
|
|
uni.hideLoading();
|
|
|
|
uni.hideLoading();
|
|
|
|
self.$store.commit('LOGIN', {
|
|
|
|
self.$store.commit('LOGIN', {
|
|
|
|
token: res.data.token
|
|
|
|
token: payload.token
|
|
|
|
});
|
|
|
|
});
|
|
|
|
self.$store.commit("SETUID", res.data.uid);
|
|
|
|
self.$store.commit("SETUID", payload.uid);
|
|
|
|
self.getUserInfo();
|
|
|
|
self.getUserInfo();
|
|
|
|
self.$util.Tips({
|
|
|
|
self.$util.Tips({
|
|
|
|
title: res,
|
|
|
|
title: res,
|
|
|
|
|