1370 lines
42 KiB
Vue
1370 lines
42 KiB
Vue
<template>
|
||
<view class="login">
|
||
<view class="auth-pop" v-if="isMpWeixin && !isAuthorizationed">
|
||
<view class="auth-box">
|
||
<image
|
||
src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/xcxfile/appicon/shield.png"
|
||
></image>
|
||
<label>{{ __("新用户注册") }}</label>
|
||
<text>{{ __("使用微信头像、昵称授权注册") }}</text>
|
||
|
||
<view class="btn-row" style="margin-top: 40rpx; padding: 10rpx 20rpx">
|
||
<checkbox-group @change="onChangeProtocol">
|
||
<label>
|
||
<checkbox :checked="protocol_checked" value="1" />
|
||
</label>
|
||
<label @tap="showProtocol('reg_protocols_description')">
|
||
{{ __("同意") }}{{ __("《用户协议》") }}
|
||
</label>
|
||
</checkbox-group>
|
||
</view>
|
||
|
||
<button
|
||
open-type="getUserInfo"
|
||
type="primary"
|
||
@getuserinfo="bindGetUserInfo"
|
||
>
|
||
{{ __("一键注册") }}
|
||
</button>
|
||
</view>
|
||
</view>
|
||
<view class="content" v-else>
|
||
<!-- 头部logo -->
|
||
<view class="header">
|
||
<image :src="logo"></image>
|
||
</view>
|
||
<!-- 主体表单 -->
|
||
<view class="main">
|
||
<wInput
|
||
v-model="account"
|
||
type="text"
|
||
:placeholder="__('请输入账号')"
|
||
></wInput>
|
||
<wInput
|
||
v-model="password"
|
||
type="password"
|
||
:placeholder="__('请输入密码')"
|
||
></wInput>
|
||
</view>
|
||
<wButton
|
||
:text="__('登 录')"
|
||
:rotate="isRotate"
|
||
@click.native="bindLogin()"
|
||
class="wbutton"
|
||
></wButton>
|
||
|
||
<!-- 其他登录 -->
|
||
<!-- #ifdef H5 -->
|
||
<view class="other_login cuIcon">
|
||
<view
|
||
class="login_icon"
|
||
v-for="provider in providerList"
|
||
:key="provider.value"
|
||
>
|
||
<view class="cuIcon-item" @tap="login_weixin"
|
||
><image
|
||
:src="provider.image"
|
||
@tap="plus_oauth(provider.value)"
|
||
></image
|
||
></view>
|
||
</view>
|
||
</view>
|
||
<!-- #endif -->
|
||
|
||
<!-- #ifndef H5 -->
|
||
<view class="other_login cuIcon">
|
||
<view
|
||
class="login_icon"
|
||
v-for="provider in providerList"
|
||
:key="provider.value"
|
||
>
|
||
<view class="cuIcon-item" @tap="login_weixin"
|
||
><image :src="provider.image" @tap="oauth(provider.value)"></image
|
||
></view>
|
||
</view>
|
||
</view>
|
||
<!-- #endif -->
|
||
|
||
<!-- 底部信息 -->
|
||
<view class="footer">
|
||
<navigator url="forget" open-type="navigate">{{
|
||
__("找回密码")
|
||
}}</navigator>
|
||
<text>|</text>
|
||
<navigator url="register" open-type="navigate">{{
|
||
__("注册账号")
|
||
}}</navigator>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
|
||
|
||
<script>
|
||
import wInput from "../../components/watch-login/watch-input.vue"; //input
|
||
import wButton from "../../components/watch-login/watch-button.vue"; //button
|
||
|
||
// #ifdef H5
|
||
import $cookies from "../../helpers/vue-cookies";
|
||
// #endif
|
||
|
||
/*
|
||
//获取当前路由
|
||
let curPage = getCurPage();
|
||
//在微信小程序或是app中,通过curPage.options;如果是H5,则需要curPage.$route.query(H5中的curPage.options为undefined,所以刚好就不需要条件编译了)
|
||
let curParam = curPage.options || curPage.$route.query;
|
||
|
||
export function getCurPage(){
|
||
let pages = getCurrentPages();
|
||
let curPage = pages[pages.length-1];
|
||
return curPage
|
||
}
|
||
*/
|
||
|
||
import { mapState, mapMutations } from "vuex";
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
providerList: [],
|
||
hasProvider: false,
|
||
logo: "",
|
||
account: "",
|
||
password: "",
|
||
positionTop: 0,
|
||
protocol_checked: true,
|
||
|
||
isAuthorizationed: false,
|
||
isMpWeixin: false,
|
||
wxwork: 0, //是否企业微信
|
||
|
||
plusOauthWeixin: {},
|
||
|
||
isRotate: false, //是否加载旋转
|
||
};
|
||
},
|
||
components: {
|
||
wInput,
|
||
wButton,
|
||
},
|
||
computed: mapState([
|
||
"Config",
|
||
"StateCode",
|
||
"notice",
|
||
"plantformInfo",
|
||
"shopInfo",
|
||
"userInfo",
|
||
"hasLogin",
|
||
"forcedLoginState",
|
||
]),
|
||
onLoad(options) {
|
||
uni.setNavigationBarTitle({
|
||
title: this.__("登录"),
|
||
});
|
||
|
||
this.setData({
|
||
options: options,
|
||
});
|
||
|
||
setTimeout(() => {
|
||
this.getPlantformInfo((plantformInfo) => {
|
||
this.logo = plantformInfo.logo;
|
||
});
|
||
}, 200);
|
||
|
||
let that = this;
|
||
|
||
// #ifdef MP-WEIXIN
|
||
this.isMpWeixin = true;
|
||
|
||
//判断是否企业微信
|
||
let e = that.$.getSystemInfoSync();
|
||
|
||
if (e.environment) {
|
||
this.wxwork = e.environment == "wxwork" ? 1 : 0;
|
||
}
|
||
|
||
this.wxwork = e.environment == "wxwork" ? 1 : 0;
|
||
|
||
let login_func = that.$.login;
|
||
|
||
if (this.wxwork) {
|
||
login_func = wx.qy.login;
|
||
wx.getSetting({
|
||
success: function (res) {
|
||
if (res.authSetting["scope.userInfo"]) {
|
||
that.setData({ isAuthorizationed: false });
|
||
|
||
login_func({
|
||
success: function (qy_datainfo) {
|
||
that.$.login({
|
||
success: function (datainfo) {
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.wx.checkAppLogin,
|
||
data: {
|
||
qy_code: qy_datainfo.code,
|
||
code: datainfo.code,
|
||
wxwork: that.wxwork,
|
||
source_store_id:
|
||
that.$.getStorageSync("source_store_id"),
|
||
source_user_id: that.$.getStorageSync("source_user_id"),
|
||
},
|
||
success: function (data, status, msg, code) {
|
||
if (status == 200) {
|
||
that.setData({ isAuthorizationed: true });
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
} else {
|
||
that.setData({ isAuthorizationed: false });
|
||
}
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
},
|
||
});
|
||
},
|
||
});
|
||
} else {
|
||
login_func({
|
||
success: function (qy_datainfo) {
|
||
that.$.login({
|
||
success: function (datainfo) {
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.wx.checkAppLogin,
|
||
data: {
|
||
qy_code: qy_datainfo.code,
|
||
code: datainfo.code,
|
||
wxwork: that.wxwork,
|
||
source_store_id:
|
||
that.$.getStorageSync("source_store_id"),
|
||
source_user_id: that.$.getStorageSync("source_user_id"),
|
||
},
|
||
success: function (data, status, msg, code) {
|
||
if (status == 200) {
|
||
that.setData({ isAuthorizationed: true });
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
} else {
|
||
that.setData({ isAuthorizationed: false });
|
||
}
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
},
|
||
});
|
||
},
|
||
});
|
||
}
|
||
},
|
||
});
|
||
} else {
|
||
wx.getSetting({
|
||
success: function (res) {
|
||
if (res.authSetting["scope.userInfo"]) {
|
||
that.setData({ isAuthorizationed: false });
|
||
|
||
//console.log('是否授权!是');
|
||
//console.info(res);
|
||
|
||
login_func({
|
||
success: function (datainfo) {
|
||
//console.log('是否注册!否');
|
||
//console.info(datainfo);
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.wx.checkAppLogin,
|
||
data: {
|
||
code: datainfo.code,
|
||
wxwork: that.wxwork,
|
||
source_store_id: that.$.getStorageSync("source_store_id"),
|
||
source_user_id: that.$.getStorageSync("source_user_id"),
|
||
},
|
||
success: function (data, status, msg, code) {
|
||
if (status == 200) {
|
||
that.setData({ isAuthorizationed: true });
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
} else {
|
||
that.setData({ isAuthorizationed: false });
|
||
}
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
},
|
||
});
|
||
} else {
|
||
login_func({
|
||
success: function (t) {
|
||
//console.log('是否注册!否');
|
||
//console.info(t);
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.wx.checkAppLogin,
|
||
data: {
|
||
code: t.code,
|
||
wxwork: that.wxwork,
|
||
source_store_id: that.$.getStorageSync("source_store_id"),
|
||
source_user_id: that.$.getStorageSync("source_user_id"),
|
||
},
|
||
success: function (data, status, msg, code) {
|
||
if (status == 200) {
|
||
that.setData({ isAuthorizationed: true });
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
} else {
|
||
that.setData({ isAuthorizationed: false });
|
||
}
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
},
|
||
});
|
||
}
|
||
},
|
||
});
|
||
}
|
||
// #endif
|
||
|
||
// #ifdef H5
|
||
if (that.$.isWeixin()) {
|
||
let uid = $cookies.get("uid");
|
||
let ukey = $cookies.get("ukey");
|
||
|
||
if (uid && ukey) {
|
||
} else {
|
||
uid = that.$.getStorageSync("uid");
|
||
ukey = that.$.getStorageSync("ukey");
|
||
}
|
||
|
||
//判断Cookie是否登录
|
||
if (uid && ukey) {
|
||
that.$.request({
|
||
url: this.Config.URL.check_islogin,
|
||
data: { perm_id: uid, perm_key: ukey },
|
||
success: function (data, status, msg, code) {
|
||
if (200 == status) {
|
||
var id = that.$.setStorageSync("uid", uid);
|
||
var key = that.$.setStorageSync("ukey", ukey);
|
||
|
||
data["as"] = $cookies.get("as");
|
||
that.toMain(data);
|
||
|
||
//返回来源页面
|
||
} else {
|
||
that.logout();
|
||
}
|
||
},
|
||
fail: function (err, status) {
|
||
that.logout();
|
||
},
|
||
});
|
||
} else {
|
||
if (
|
||
getCurrentPages()[getCurrentPages().length - 1].route ==
|
||
"pages/login/login" ||
|
||
getCurrentPages()[getCurrentPages().length - 1].route ==
|
||
"/pages/login/login"
|
||
) {
|
||
//记录来源页面
|
||
if (getCurrentPages().length > 1) {
|
||
var prePage = getCurrentPages()[getCurrentPages().length - 2];
|
||
if (prePage) {
|
||
that.$.setStorageSync("pre_route", prePage.route);
|
||
|
||
if (prePage.options) {
|
||
that.$.setStorageSync("pre_options", prePage.options);
|
||
}
|
||
}
|
||
} else {
|
||
}
|
||
|
||
//是否企业微信
|
||
if (that.$.isQyWeixin()) {
|
||
window.location.href =
|
||
that.Config.URL.wx.mplogin +
|
||
"&wxwork=1" +
|
||
"&callback=" +
|
||
encodeURIComponent(
|
||
that.Config.CONFIG.base_url + "/h5/pages/login/login"
|
||
); //暂时注释
|
||
} else {
|
||
window.location.href =
|
||
that.Config.URL.wx.mplogin +
|
||
"&callback=" +
|
||
encodeURIComponent(
|
||
that.Config.CONFIG.base_url + "/h5/pages/login/login"
|
||
); //暂时注释
|
||
}
|
||
} else {
|
||
var prePage = getCurrentPages()[getCurrentPages().length - 1];
|
||
if (prePage) {
|
||
that.$.setStorageSync("pre_route", prePage.route);
|
||
|
||
if (prePage.options) {
|
||
that.$.setStorageSync("pre_options", prePage.options);
|
||
}
|
||
}
|
||
//记录来源页面
|
||
|
||
//是否企业微信
|
||
if (that.$.isQyWeixin()) {
|
||
window.location.href =
|
||
that.Config.URL.wx.mplogin +
|
||
"&wxwork=1" +
|
||
"&callback=" +
|
||
encodeURIComponent(
|
||
that.Config.CONFIG.base_url + "/h5/pages/login/login"
|
||
); //暂时注释
|
||
} else {
|
||
window.location.href =
|
||
that.Config.URL.wx.mplogin +
|
||
"&callback=" +
|
||
encodeURIComponent(
|
||
that.Config.CONFIG.base_url + "/h5/pages/login/login"
|
||
); //暂时注释
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
//H5
|
||
let uid = $cookies.get("uid");
|
||
let ukey = $cookies.get("ukey");
|
||
|
||
if (uid && ukey) {
|
||
} else {
|
||
uid = that.$.getStorageSync("uid");
|
||
ukey = that.$.getStorageSync("ukey");
|
||
}
|
||
|
||
//判断Cookie是否登录
|
||
if (uid && ukey) {
|
||
that.$.request({
|
||
url: this.Config.URL.check_islogin,
|
||
data: { perm_id: uid, perm_key: ukey },
|
||
success: function (data, status, msg, code) {
|
||
if (200 == status) {
|
||
var id = that.$.setStorageSync("uid", uid);
|
||
var key = that.$.setStorageSync("ukey", ukey);
|
||
|
||
that.toMain(data);
|
||
|
||
//返回来源页面
|
||
} else {
|
||
that.logout();
|
||
}
|
||
},
|
||
fail: function (err, status) {
|
||
that.logout();
|
||
},
|
||
});
|
||
}
|
||
}
|
||
// #endif
|
||
|
||
this.initPosition();
|
||
this.initProvider();
|
||
},
|
||
//仅 5+App 平台上支持此函数。
|
||
onBackPress() {},
|
||
methods: {
|
||
...mapMutations([
|
||
"login",
|
||
"logout",
|
||
"getPlantformInfo",
|
||
"forceUserInfo",
|
||
"getUserInfo",
|
||
]),
|
||
initProvider() {
|
||
let that = this;
|
||
//const filters = ['weixin', 'qq', 'sinaweibo'];
|
||
const filters = ["weixin"];
|
||
//const filters = [];
|
||
|
||
// #ifndef H5
|
||
that.$.getProvider({
|
||
service: "oauth",
|
||
success: (res) => {
|
||
if (res.provider && res.provider.length) {
|
||
for (let i = 0; i < res.provider.length; i++) {
|
||
if (~filters.indexOf(res.provider[i])) {
|
||
this.providerList.push({
|
||
value: res.provider[i],
|
||
image: "/static/images/login/" + res.provider[i] + ".png",
|
||
});
|
||
}
|
||
}
|
||
this.hasProvider = true;
|
||
}
|
||
},
|
||
fail: (err) => {
|
||
console.error("获取服务供应商失败:" + JSON.stringify(err));
|
||
},
|
||
});
|
||
// #endif
|
||
|
||
// #ifdef H5
|
||
//判断是否为APP调用
|
||
if (that.$.ifUniApp()) {
|
||
//1. 初始化加载分享模块
|
||
plus.oauth.getServices(
|
||
function (res) {
|
||
//console.log(JSON.stringify(res));
|
||
|
||
if (res && res.length) {
|
||
for (let i = 0; i < res.length; i++) {
|
||
if (~filters.indexOf(res[i]["id"])) {
|
||
that.providerList.push({
|
||
value: res[i]["id"],
|
||
image: "/static/images/login/" + res[i]["id"] + ".png",
|
||
});
|
||
}
|
||
|
||
if ("weixin" == res[i]["id"]) {
|
||
that.plusOauthWeixin = res[i];
|
||
}
|
||
}
|
||
|
||
that.hasProvider = true;
|
||
}
|
||
},
|
||
|
||
function (e) {
|
||
alert("获取分享服务列表失败:" + e.message);
|
||
}
|
||
);
|
||
|
||
//setTimeout(share, 5000)
|
||
}
|
||
// #endif
|
||
},
|
||
initPosition() {
|
||
let that = this;
|
||
/**
|
||
* 使用 absolute 定位,并且设置 bottom 值进行定位。软键盘弹出时,底部会因为窗口变化而被顶上来。
|
||
* 反向使用 top 进行定位,可以避免此问题。
|
||
*/
|
||
this.positionTop = that.$.getSystemInfoSync().windowHeight - 100;
|
||
},
|
||
bindLogin() {
|
||
var that = this;
|
||
//登录
|
||
if (this.isRotate) {
|
||
//判断是否加载中,避免重复点击请求
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 客户端对账号信息进行一些必要的校验。
|
||
* 实际开发中,根据业务需要进行处理,这里仅做示例。
|
||
*/
|
||
if (this.account.length < 4) {
|
||
that.$.showToast({
|
||
icon: "none",
|
||
title: that.__("账号最短为 4 个字符"),
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (this.password.length < 6) {
|
||
that.$.showToast({
|
||
icon: "none",
|
||
title: that.__("密码最短为 6 个字符"),
|
||
});
|
||
return;
|
||
}
|
||
|
||
that.isRotate = true;
|
||
setTimeout(function () {
|
||
that.isRotate = false;
|
||
}, 2000);
|
||
|
||
/**
|
||
* 下面简单模拟下服务端的处理
|
||
* 检测用户账号密码是否在已注册的用户列表中
|
||
* 实际开发中,使用 that.$.request 将账号信息发送至服务端,客户端在回调函数中获取结果信息。
|
||
*/
|
||
//SYS.URL.login,
|
||
const params = {
|
||
user_account: this.account,
|
||
user_password: this.password,
|
||
};
|
||
|
||
that.$.request({
|
||
url: this.Config.URL.login,
|
||
data: params,
|
||
success: function (data, status, msg, code) {
|
||
//console.info(JSON.stringify(data));
|
||
|
||
if (200 == status) {
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
// #ifdef H5
|
||
$cookies.set("uid", data.user_id);
|
||
$cookies.set("ukey", data.key);
|
||
// #endif
|
||
|
||
data["user_password"] = params.user_password;
|
||
|
||
that.toMain(data);
|
||
} else {
|
||
that.$.showToast({
|
||
icon: "none",
|
||
title: that.__("用户账号或密码不正确"),
|
||
});
|
||
}
|
||
},
|
||
fail: function (err, status) {
|
||
that.$.showToast({
|
||
icon: "none",
|
||
title: that.__("登录有误,请重试"),
|
||
});
|
||
},
|
||
});
|
||
},
|
||
oauth(value) {
|
||
let that = this;
|
||
that.$.login({
|
||
provider: value,
|
||
success: (res) => {
|
||
that.$.getUserInfo({
|
||
provider: value,
|
||
success: (infoRes) => {
|
||
if (infoRes.errMsg == "getUserInfo:ok") {
|
||
//console.info(JSON.stringify(infoRes));
|
||
//console.info(value);
|
||
|
||
/**
|
||
* 实际开发中,获取用户信息后,需要将信息上报至服务端。
|
||
* 服务端可以用 userInfo.openId 作为用户的唯一标识新增或绑定用户信息。
|
||
*/
|
||
//this.toMain(infoRes.userInfo.nickName);
|
||
var t = infoRes.userInfo;
|
||
t.bind_name = value;
|
||
|
||
//{"openId":"o6tGM1biEBK05U1f7-DjAhO8J864","nickName":"黄新泽","gender":1,"city":"闵行","province":"上海","country":"中国","avatarUrl":"http://thirdwx.qlogo.cn/mmopen/vi_32/PiajxSqBRaEJBP1wRhHlbGtp9FGR1go2f3hc21LRcruDqr5hncC4uSwCVYDuyReKSyic00E33sXOXeCWNhkVEHrQ/132","unionId":"ozDRT1vHoz4_NDw7xZ4vsRDasdYg"}
|
||
|
||
if (value == "weixin") {
|
||
let rawData = JSON.parse(infoRes.rawData);
|
||
|
||
var encryptedData = encodeURIComponent(rawData.encryptedData); //一定要把加密串转成URI编码
|
||
var iv = encodeURIComponent(rawData.iv);
|
||
var code = t.openId;
|
||
|
||
t.code = code;
|
||
t.encryptedData = encryptedData;
|
||
t.iv = iv;
|
||
}
|
||
|
||
t.source_store_id = that.$.getStorageSync("source_store_id");
|
||
t.source_user_id = that.$.getStorageSync("source_user_id");
|
||
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.do_app_login,
|
||
data: t,
|
||
success: function (data, status, msg, code) {
|
||
if (status != 200) {
|
||
// 登录错误
|
||
that.$.showModal({
|
||
title: "提示",
|
||
content: "无法登录,请重试!",
|
||
showCancel: false,
|
||
});
|
||
|
||
that.$.navigateBack();
|
||
return;
|
||
}
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
} else {
|
||
}
|
||
},
|
||
});
|
||
},
|
||
fail: (err) => {
|
||
console.error("授权登录失败:" + JSON.stringify(err));
|
||
},
|
||
});
|
||
},
|
||
|
||
/* wap app 登录*/
|
||
plus_oauth(value) {
|
||
let that = this;
|
||
|
||
// 登录操作
|
||
function authLogin() {
|
||
//console.info('plusOauthWeixin')
|
||
//console.info(that.plusOauthWeixin)
|
||
var s = that.plusOauthWeixin;
|
||
|
||
if (!s.authResult) {
|
||
s.login(
|
||
function (e) {
|
||
authUserInfo();
|
||
},
|
||
function (e) {
|
||
alert("登录认证失败!");
|
||
}
|
||
);
|
||
} else {
|
||
//alert( "已经登录认证!" );
|
||
|
||
authUserInfo();
|
||
}
|
||
}
|
||
|
||
// 获取登录用户信息操作
|
||
function authUserInfo() {
|
||
var s = that.plusOauthWeixin;
|
||
|
||
if (!s.authResult) {
|
||
alert("未登录授权!");
|
||
} else {
|
||
s.getUserInfo(
|
||
function (res) {
|
||
////console.info( "获取用户信息成功:"+JSON.stringify(res) );
|
||
//alert( "获取用户信息成功:"+JSON.stringify(s.userInfo) );
|
||
|
||
var value = "weixin";
|
||
var infoRes = res.target;
|
||
|
||
if (true) {
|
||
/**
|
||
* 实际开发中,获取用户信息后,需要将信息上报至服务端。
|
||
* 服务端可以用 userInfo.openId 作为用户的唯一标识新增或绑定用户信息。
|
||
*/
|
||
//this.toMain(infoRes.userInfo.nickName);
|
||
var t = infoRes.userInfo;
|
||
t.bind_name = value;
|
||
|
||
//{"openId":"o6tGM1biEBK05U1f7-DjAhO8J864","nickName":"黄新泽","gender":1,"city":"闵行","province":"上海","country":"中国","avatarUrl":"http://thirdwx.qlogo.cn/mmopen/vi_32/PiajxSqBRaEJBP1wRhHlbGtp9FGR1go2f3hc21LRcruDqr5hncC4uSwCVYDuyReKSyic00E33sXOXeCWNhkVEHrQ/132","unionId":"ozDRT1vHoz4_NDw7xZ4vsRDasdYg"}
|
||
|
||
if (value == "weixin") {
|
||
/*
|
||
let rawData = JSON.parse(infoRes.rawData);
|
||
|
||
var encryptedData = encodeURIComponent(rawData.encryptedData); //一定要把加密串转成URI编码
|
||
var iv = encodeURIComponent(rawData.iv);
|
||
var code = t.openId;
|
||
|
||
t.encryptedData = encryptedData;
|
||
t.iv = iv;
|
||
*/
|
||
t.code = t.openid;
|
||
}
|
||
|
||
t.source_store_id = that.$.getStorageSync("source_store_id");
|
||
t.source_user_id = that.$.getStorageSync("source_user_id");
|
||
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.do_app_login,
|
||
data: t,
|
||
success: function (data, status, msg, code) {
|
||
if (status != 200) {
|
||
// 登录错误
|
||
that.$.showModal({
|
||
title: "提示",
|
||
content: "无法登录,请重试!",
|
||
showCancel: false,
|
||
});
|
||
|
||
that.$.navigateBack();
|
||
return;
|
||
}
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
} else {
|
||
}
|
||
},
|
||
function (e) {
|
||
alert("获取用户信息失败:" + e.message + " - " + e.code);
|
||
}
|
||
);
|
||
}
|
||
}
|
||
authLogin();
|
||
/*
|
||
that.$.login({
|
||
provider: value,
|
||
success: res => {
|
||
that.$.getUserInfo({
|
||
provider: value,
|
||
success: infoRes => {
|
||
if (infoRes.errMsg == 'getUserInfo:ok')
|
||
{
|
||
//console.info(JSON.stringify(infoRes));
|
||
//console.info(value);
|
||
|
||
//this.toMain(infoRes.userInfo.nickName);
|
||
var t = infoRes.userInfo;
|
||
t.bind_name = value;
|
||
|
||
//{"openId":"o6tGM1biEBK05U1f7-DjAhO8J864","nickName":"黄新泽","gender":1,"city":"闵行","province":"上海","country":"中国","avatarUrl":"http://thirdwx.qlogo.cn/mmopen/vi_32/PiajxSqBRaEJBP1wRhHlbGtp9FGR1go2f3hc21LRcruDqr5hncC4uSwCVYDuyReKSyic00E33sXOXeCWNhkVEHrQ/132","unionId":"ozDRT1vHoz4_NDw7xZ4vsRDasdYg"}
|
||
|
||
if (value == 'weixin')
|
||
{
|
||
let rawData = JSON.parse(infoRes.rawData);
|
||
|
||
var encryptedData = encodeURIComponent(rawData.encryptedData); //一定要把加密串转成URI编码
|
||
var iv = encodeURIComponent(rawData.iv);
|
||
var code = t.openId;
|
||
|
||
t.code = code;
|
||
t.encryptedData = encryptedData;
|
||
t.iv = iv;
|
||
}
|
||
|
||
t.source_store_id = that.$.getStorageSync('source_store_id');
|
||
t.source_user_id = that.$.getStorageSync('source_user_id');
|
||
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.do_app_login,
|
||
data: t,
|
||
success: function(data, status, msg, code) {
|
||
if (status != 200) {
|
||
// 登录错误
|
||
that.$.showModal({
|
||
title: '提示',
|
||
content: '无法登录,请重试!',
|
||
showCancel: false
|
||
});
|
||
|
||
that.$.navigateBack();
|
||
return;
|
||
}
|
||
|
||
var id = that.$.setStorageSync('uid', data.user_id);
|
||
var key = that.$.setStorageSync('ukey', data.key);
|
||
|
||
that.toMain(data);
|
||
},
|
||
fail: function() {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function() {
|
||
// complete
|
||
}
|
||
});
|
||
}
|
||
else
|
||
{
|
||
|
||
}
|
||
}
|
||
});
|
||
},
|
||
fail: err => {
|
||
console.error('授权登录失败:' + JSON.stringify(err));
|
||
}
|
||
});
|
||
*/
|
||
},
|
||
|
||
toMain(userInfo) {
|
||
var that = this;
|
||
|
||
that.$.request({
|
||
url: this.Config.URL.user.overview,
|
||
success: function (data, status, msg, code) {
|
||
userInfo = Object.assign(userInfo, data.member_info);
|
||
that.login("=======" + userInfo);
|
||
if (userInfo.im && that.plantformInfo.config.chat_global) {
|
||
that.$Socket.connectserver(userInfo.im);
|
||
}
|
||
|
||
that.notice.postNotificationName("RefreshCart", 0);
|
||
/**
|
||
* 强制登录时使用reLaunch方式跳转过来
|
||
* 返回首页也使用reLaunch方式
|
||
*/
|
||
if (that.forcedLoginState) {
|
||
that.$.reLaunch({
|
||
url: "/pages/index/member",
|
||
});
|
||
} else {
|
||
// #ifdef H5
|
||
if (that.$.isWeixin()) {
|
||
let pre_route = that.$.getStorageSync("pre_route");
|
||
let pre_options = that.$.getStorageSync("pre_options");
|
||
|
||
//console.info(pre_route);
|
||
//console.info(pre_options);
|
||
|
||
if (pre_route) {
|
||
let pre_url = "/" + that.$.createUrl(pre_route, pre_options);
|
||
that.$.gotopage(pre_url);
|
||
} else {
|
||
that.$.gotopage("/pages/index/member");
|
||
}
|
||
|
||
return;
|
||
}
|
||
// #endif
|
||
|
||
if (
|
||
getCurrentPages()[getCurrentPages().length - 1].route ==
|
||
"pages/login/login" ||
|
||
getCurrentPages()[getCurrentPages().length - 1].route ==
|
||
"/pages/login/login"
|
||
) {
|
||
if (getCurrentPages().length > 1) {
|
||
var prePage = getCurrentPages()[getCurrentPages().length - 2];
|
||
|
||
// #ifndef H5
|
||
if (
|
||
"pages/login/login" == prePage.route ||
|
||
"/pages/login/login" == prePage.route
|
||
) {
|
||
that.$.switchTab({
|
||
url: "/pages/index/member",
|
||
});
|
||
} else {
|
||
if (prePage.refreshData) {
|
||
prePage.refreshData(prePage.options);
|
||
that.$.navigateBack();
|
||
} else if (prePage.onLoad) {
|
||
prePage.onLoad(prePage.options);
|
||
that.$.navigateBack();
|
||
} else {
|
||
let pre_url =
|
||
"/" + that.$.createUrl(prePage.route, prePage.options);
|
||
that.$.gotopage(pre_url);
|
||
}
|
||
}
|
||
// #endif
|
||
|
||
// #ifdef H5
|
||
//修正 onLoad 不存在问题。
|
||
//console.info('++++++++++++++++++++++');
|
||
//console.info(prePage);
|
||
//console.info(prePage.onLoad);
|
||
//console.info(prePage.route);
|
||
//console.info(prePage.options);
|
||
|
||
if (
|
||
"pages/login/login" == prePage.route ||
|
||
"/pages/login/login" == prePage.route
|
||
) {
|
||
that.$.switchTab({
|
||
url: "/pages/index/member",
|
||
});
|
||
} else {
|
||
if (prePage.refreshData) {
|
||
prePage.refreshData(prePage.options);
|
||
that.$.navigateBack();
|
||
} else if (prePage.onLoad) {
|
||
prePage.onLoad(prePage.options);
|
||
that.$.navigateBack();
|
||
} else {
|
||
let pre_url =
|
||
"/" + that.$.createUrl(prePage.route, prePage.options);
|
||
that.$.gotopage(pre_url);
|
||
}
|
||
}
|
||
// #endif
|
||
} else {
|
||
//回到上个页面
|
||
that.$.switchTab({
|
||
url: "/pages/index/member",
|
||
});
|
||
}
|
||
} else {
|
||
var prePage = getCurrentPages()[getCurrentPages().length - 1];
|
||
|
||
if (
|
||
"pages/login/login" == prePage.route ||
|
||
"/pages/login/login" == prePage.route
|
||
) {
|
||
that.$.switchTab({
|
||
url: "/pages/index/member",
|
||
});
|
||
} else {
|
||
prePage.onLoad && prePage.onLoad(prePage.options);
|
||
}
|
||
|
||
//that.$.navigateBack();
|
||
}
|
||
}
|
||
},
|
||
});
|
||
},
|
||
|
||
bindGetUserInfo: function (res2) {
|
||
var that = this;
|
||
|
||
if (!this.protocol_checked) {
|
||
this.$.showModal({
|
||
title: this.__("提示"),
|
||
content: this.__("请先阅读并同意用户协议"),
|
||
showCancel: false,
|
||
});
|
||
|
||
return;
|
||
}
|
||
|
||
let login_func = that.$.login;
|
||
if (this.wxwork) {
|
||
login_func = wx.qy.login;
|
||
|
||
//console.info(res2);
|
||
if (res2.detail.errMsg == "getUserInfo:ok") {
|
||
that.setData({ isAuthorizationed: false });
|
||
var wx_user = that.$.parseJSON(res2.detail.rawData);
|
||
login_func({
|
||
success: function (qy_datainfo) {
|
||
that.$.login({
|
||
success: function (res) {
|
||
var t = {
|
||
code: res.code,
|
||
wxwork: that.wxwork,
|
||
NickName: wx_user.nickName,
|
||
sex: wx_user.gender,
|
||
photo: wx_user.avatarUrl,
|
||
WXCountry: wx_user.country,
|
||
WXCity: wx_user.city,
|
||
WXProvince: wx_user.province,
|
||
Uid: 0,
|
||
storeId: 0,
|
||
};
|
||
var encryptedData = encodeURIComponent(
|
||
res2.detail.encryptedData
|
||
); //一定要把加密串转成URI编码
|
||
var iv = encodeURIComponent(res2.detail.iv);
|
||
var code = res.code;
|
||
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.wx.applogin,
|
||
data: {
|
||
qy_code: qy_datainfo.code,
|
||
code: code,
|
||
wxwork: that.wxwork,
|
||
encryptedData: encryptedData,
|
||
iv: iv,
|
||
source_store_id: that.$.getStorageSync("source_store_id"),
|
||
source_user_id: that.$.getStorageSync("source_user_id"),
|
||
},
|
||
success: function (data, status, msg, code) {
|
||
if (status != 200) {
|
||
// 登录错误
|
||
that.$.showModal({
|
||
title: "提示",
|
||
content: "无法登录,请重试!",
|
||
showCancel: false,
|
||
});
|
||
|
||
that.$.navigateBack();
|
||
return;
|
||
}
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
},
|
||
});
|
||
},
|
||
});
|
||
}
|
||
} else {
|
||
//console.info(res2);
|
||
if (res2.detail.errMsg == "getUserInfo:ok") {
|
||
that.setData({ isAuthorizationed: false });
|
||
var wx_user = that.$.parseJSON(res2.detail.rawData);
|
||
login_func({
|
||
success: function (res) {
|
||
var t = {
|
||
code: res.code,
|
||
wxwork: that.wxwork,
|
||
NickName: wx_user.nickName,
|
||
sex: wx_user.gender,
|
||
photo: wx_user.avatarUrl,
|
||
WXCountry: wx_user.country,
|
||
WXCity: wx_user.city,
|
||
WXProvince: wx_user.province,
|
||
Uid: 0,
|
||
storeId: 0,
|
||
};
|
||
|
||
var encryptedData = encodeURIComponent(res2.detail.encryptedData); //一定要把加密串转成URI编码
|
||
var iv = encodeURIComponent(res2.detail.iv);
|
||
var code = res.code;
|
||
|
||
//请求服务器
|
||
that.$.request({
|
||
url: that.Config.URL.wx.applogin,
|
||
data: {
|
||
code: code,
|
||
encryptedData: encryptedData,
|
||
iv: iv,
|
||
source_store_id: that.$.getStorageSync("source_store_id"),
|
||
source_user_id: that.$.getStorageSync("source_user_id"),
|
||
},
|
||
success: function (data, status, msg, code) {
|
||
if (status != 200) {
|
||
// 登录错误
|
||
that.$.showModal({
|
||
title: "提示",
|
||
content: "无法登录,请重试!",
|
||
showCancel: false,
|
||
});
|
||
|
||
that.$.navigateBack();
|
||
return;
|
||
}
|
||
|
||
var id = that.$.setStorageSync("uid", data.user_id);
|
||
var key = that.$.setStorageSync("ukey", data.key);
|
||
|
||
that.toMain(data);
|
||
},
|
||
fail: function () {
|
||
// fail
|
||
// that.$.hideToast();
|
||
},
|
||
complete: function () {
|
||
// complete
|
||
},
|
||
});
|
||
},
|
||
});
|
||
}
|
||
}
|
||
},
|
||
|
||
onChangeProtocol: function (e) {
|
||
var values = e.detail.value;
|
||
|
||
if (values.length > 0) {
|
||
this.protocol_checked = true;
|
||
} else {
|
||
this.protocol_checked = false;
|
||
}
|
||
},
|
||
|
||
showProtocol: function (id) {
|
||
uni.navigateTo({
|
||
url: "/member/member/protocol?id=" + id,
|
||
});
|
||
},
|
||
startLogin: function () {
|
||
//登录
|
||
if (this.isRotate) {
|
||
//判断是否加载中,避免重复点击请求
|
||
return false;
|
||
}
|
||
|
||
console.info(this.account);
|
||
console.info(typeof this.account);
|
||
if (this.account.length == "") {
|
||
uni.showToast({
|
||
icon: "none",
|
||
position: "bottom",
|
||
title: "用户名不能为空",
|
||
});
|
||
return;
|
||
}
|
||
if (this.password.length < 5) {
|
||
uni.showToast({
|
||
icon: "none",
|
||
position: "bottom",
|
||
title: "密码不正确",
|
||
});
|
||
return;
|
||
}
|
||
|
||
console.log("登录成功");
|
||
|
||
_this.isRotate = true;
|
||
setTimeout(function () {
|
||
_this.isRotate = false;
|
||
}, 3000);
|
||
// uni.showLoading({
|
||
// title: '登录中'
|
||
// });
|
||
// getLogin()
|
||
// .then(res => {
|
||
// //console.log(res)
|
||
// //简单验证下登录(不安全)
|
||
// if(_this.account==res.data.username && _this.password==res.data.password){
|
||
// let userdata={
|
||
// "username":res.data.username,
|
||
// "nickname":res.data.nickname,
|
||
// "accesstoken":res.data.accesstoken,
|
||
// } //保存用户信息和accesstoken
|
||
// _this.$store.dispatch("setUserData",userdata); //存入状态
|
||
// try {
|
||
// uni.setStorageSync('setUserData', userdata); //存入缓存
|
||
// } catch (e) {
|
||
// // error
|
||
// }
|
||
// uni.showToast({
|
||
// icon: 'success',
|
||
// position: 'bottom',
|
||
// title: '登录成功'
|
||
// });
|
||
// uni.reLaunch({
|
||
// url: '../../../pages/index',
|
||
// });
|
||
// }else{
|
||
// _this.password=""
|
||
// uni.showToast({
|
||
// icon: 'error',
|
||
// position: 'bottom',
|
||
// title: '账号或密码错误,账号admin密码admin'
|
||
// });
|
||
// }
|
||
// uni.hideLoading();
|
||
// }).catch(err => {
|
||
// uni.hideLoading();
|
||
// })
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
|
||
<style lang="scss">
|
||
@import "../../styles/reg.scss";
|
||
|
||
.cuIcon-item {
|
||
font-size: 64rpx;
|
||
|
||
image {
|
||
width: 64rpx;
|
||
height: 64rpx;
|
||
}
|
||
}
|
||
|
||
/* common/authorization-info.wxss */
|
||
.auth-pop {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background-color: rgba(0, 0, 0, 0.5);
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
text-align: center;
|
||
flex-wrap: wrap;
|
||
z-index: 999;
|
||
}
|
||
.auth-box {
|
||
width: 600rpx;
|
||
background-color: #fff;
|
||
border-radius: 24rpx;
|
||
box-sizing: border-box;
|
||
padding: 110rpx 60rpx;
|
||
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.5);
|
||
}
|
||
.auth-box image {
|
||
width: 166rpx;
|
||
height: 197rpx;
|
||
}
|
||
.auth-box label {
|
||
font-size: 32rpx;
|
||
color: #333;
|
||
margin: 20rpx 0;
|
||
display: inline-block;
|
||
width: 100%;
|
||
}
|
||
.auth-box text {
|
||
font-size: 24rpx;
|
||
color: #666;
|
||
}
|
||
.auth-box button {
|
||
margin-top: 80rpx;
|
||
}
|
||
|
||
.btn-row {
|
||
margin-top: 50px;
|
||
padding: 0px;
|
||
|
||
label {
|
||
font-size: 32rpx;
|
||
color: #333;
|
||
margin: 20rpx 0;
|
||
display: inline;
|
||
width: 100%;
|
||
}
|
||
}
|
||
</style>
|