| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588 |
- import { login,loginByWeChat,setPhone,getUserInfo } from '@/api/user'
- let univerifyManager=null;
- let registrationID=uni.getStorageSync("registrationID");
- let userPhone="";
- let unionid="";
- let loginType=3;//1账号密码 2:微信登录 3:手机号一键登录
- export function showLoginPage(provider){
- // #ifdef APP-PLUS
- // if(this.$qconfig.applyLogin){
- // return;
- // }
- // if(registrationID==null || registrationID==""){
- // getRegistrationID();
- // }
- // 微信一键登录
- if(provider == "weixin") {
- weixinLogin()
- } else {
- // 手机号一键登录
- let that=this;
- univerifyManager = uni.getUniverifyManager();
- univerifyLogin(that);
- const loginCallBack = (res) => {
- // 获取一键登录弹框协议勾选状态
- univerifyManager.getCheckBoxState({
- success(res) {
- // that.$qconfig.applyLogin=false;
- if(!res.state){
- uni.showToast({title: "请同意服务条款和隐私政策",icon: 'none',position:'bottom'});
- return;
- }
- loginType=2;
- uni.login({
- provider: "weixin",
- onlyAuthorize:false,
- success: async (res) => {
- console.log('login success:成功', JSON.stringify(res));
- let that=this;
- uni.showLoading({title:"处理中..."});
- const params={code:res.code,jpushId:registrationID};
- loginByWeChatAct(111,params);
- },
- fail: (err) => {
- console.log('login fail:', JSON.stringify(err));
- // 未开通
- if (err.code == 1000) {
- uni.showModal({
- title: '登录失败',
- content: `${err.errMsg}\n,错误码:${err.code}`,
- confirmText: '开通指南',
- cancelText: '确定',
- success: (res) => {
- if (res.confirm) {
- setTimeout(() => {
- plus.runtime.openWeb('https://ask.dcloud.net.cn/article/37965')
- }, 500)
- }
- }
- });
- return;
- }
- if (err.code == '-100') {
- uni.showToast({
- title: "授权拒绝",
- icon: "none"
- });
- return;
- }
- // 一键登录预登陆失败
- if (err.code == '30005') {
- uni.showModal({
- showCancel: false,
- title: '预登录失败',
- content: err.errMsg
- });
- return;
- }
- if (err.code == 30006) {
- uni.showToast({ title: "登录已取消,请重新操作", icon: "none" });
- return;
- }
- // 一键登录用户关闭验证界面
- if (err.code != '30003') {
- uni.showModal({
- showCancel: false,
- title: '登录失败',
- content: JSON.stringify(err)
- });
- }
- },
- complete: () => {
-
- }
- });
- // 关闭一键登录弹框
- univerifyManager.close();
- }
- });
- }
-
- // 订阅自定义按钮点击事件
- univerifyManager.onButtonsClick(loginCallBack);
- // 取消订阅自定义按钮点击事件
- //univerifyManager.offButtonsClick(loginCallBack);
- // this.$qconfig.applyLogin=true;
- }
-
- // #endif
-
- // #ifdef H5
-
- if(String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger"){
- let url=window.location.href;
- let urlPaths=url.split("/h5");
- uni.setStorageSync('beforLoginPage',urlPaths[1]);
- uni.navigateTo({
- url: "/pages/auth/h5WxLogin"
- });
- }
- else{
- uni.navigateTo({
- url: "/pages/auth/passwordLogin"
- });
- }
-
- // #endif
-
- }
-
- const univerifyLogin=function(that){
- univerifyManager.login({
- provider: 'univerify',
- univerifyStyle: { // 自定义登录框样式
- fullScreen: true,
- icon: {
- "path": "static/logo.png", // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo
- "width": "80px", //图标宽度 默认值:60px
- "height": "80px" ,//图标高度 默认值:60px
- },
- authButton: {
- "title": "本机号码一键登录",
- "normalColor": "#018C39",
- "highlightColor": "#018C39",
- },
- otherLoginButton: {
- // "title": "微信快捷登录",
- "visible": "true",
- "borderRadius": "24px",
- "borderColor": "#ECECEC",
- },
- closeIcon: {
- "path": "static/images/icon_close.png",
- "width": "160px", //图标宽度 默认值:60px (HBuilderX 4.0支持)
- "height": "160px" //图标高度 默认值:60px (HBuilderX 4.0支持)
- },
- buttons: {
- "iconWidth": "55px", // 图标宽度(高度等比例缩放) 默认值:45px
- "list": [
- // {
- // "provider": "apple",
- // "iconPath": "/static/apple.png" // 图标路径仅支持本地图片
- // },
- {
- "provider": "weixin",
- "iconPath": "/static/images/wechat.png" // 图标路径仅支持本地图片
- }
- ]
- },
- privacyTerms: {
- "defaultCheckBoxState":false, // 条款勾选框初始状态 默认值: true
- "isCenterHint":false, //未勾选服务条款时点击登录按钮的提示是否居中显示 默认值: false (3.7.13+ 版本支持)
- "uncheckedImage":"/static/icons/radio_default_icon.png", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)
- "checkedImage":"/static/icons/radio_choose_icon.png", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)
- "checkBoxSize":13, // 可选 条款勾选框大小
- "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB
- "termsColor": "#018C39", // 协议文字颜色 默认值: #5496E3
- "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”
- "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”
- "privacyItems": [ // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效
- {
- "url": "https://userapp.zhengzefeng.com/h5/userAgreement", // 点击跳转的协议详情页面
- "title": "用户服务协议" // 协议名称
- },
- {
- "url": "https://userapp.zhengzefeng.com/h5/privacyPolicy", // 点击跳转的协议详情页面
- "title": "隐私保护" // 协议名称
- }
- // {
- // "url": "https://userapp.his.cdwjyyh.com/h5/healthCustomerService", // 点击跳转的协议详情页面
- // "title": "健康客服协议" // 协议名称
- // }
- ]
- },
- },
- success(res){ // 登录成功
- console.log("qxj univerify login:"+JSON.stringify(res.authResult)); // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
- //uni.hideLoading();
- // that.$qconfig.applyLogin=false;
- loginType=3;
- loginByUniverify(res.authResult,0);
- },
- fail(res){
- //uni.hideLoading();
- // that.$qconfig.applyLogin=false;
- if (res.code == 30002) {
- // uni.closeAuthView()
- uni.navigateTo({
- url: "/pages/auth/passwordLogin"
- })
- }else if(res.code==30008){ //用户点击了自定义按钮
- uni.getCheckBoxState({
- success(res){
- console.log(res.state) // Boolean 用户是否勾选了选框
- console.log(res.errMsg)
- if(!res.state){
- uni.showToast({title: "请同意服务条款和隐私政策",icon: 'none',position:'bottom'});
- return;
- }
- loginType=2;
- uni.login({
- provider: "weixin",
- onlyAuthorize:false,
- success: async (res) => {
- console.log('login success:', JSON.stringify(res));
- let that=this;
- uni.showLoading({
- title:"处理中..."
- });
- const params={code:res.code};
- console.log('微信',params)
- loginByWeChatAct(params);
- },
- fail: (err) => {
- console.log('login fail:', JSON.stringify(err));
- // 未开通
- if (err.code == 1000) {
- uni.showModal({
- title: '登录失败',
- content: `${err.errMsg}\n,错误码:${err.code}`,
- confirmText: '开通指南',
- cancelText: '确定',
- success: (res) => {
- if (res.confirm) {
- setTimeout(() => {
- plus.runtime.openWeb('https://ask.dcloud.net.cn/article/37965')
- }, 500)
- }
- }
- });
- return;
- }
- if (err.code == '-100') {
- uni.showToast({
- title: "授权拒绝",
- icon: "none"
- });
- return;
- }
- // 一键登录预登陆失败
- if (err.code == '30005') {
- uni.showModal({
- showCancel: false,
- title: '预登录失败',
- content: err.errMsg
- });
- return;
- }
- // 一键登录用户关闭验证界面
- if (err.code != '30003') {
- uni.showModal({
- showCancel: false,
- title: '登录失败',
- content: JSON.stringify(err)
- });
- }
- },
- complete: () => {
-
- }
- });
-
- },
- fail(res){
- console.log(res.errCode)
- console.log(res.errMsg)
- }
- });
- console.log("----qxj 一键登录调用2-----");
- }
- else if(res.code==30003){ //关闭验证界面
- return false;
- }
- else if(res.code==30005){ //预登录失败
- //uni.showToast({title: "一键登录失败请检查网络和SIM卡是否可用",icon: 'none',position:'bottom'});
- setTimeout(function() {
- uni.navigateTo({url: "/pages/auth/passwordLogin"});
- }, 1800);
- }
- else{
-
- }
- //登录失败
- console.log("微信一键登录failRes:"+JSON.stringify(res));
- }
- });
- };
-
-
- export function loginByWeChatAct(params){
- loginByWeChat(params).then(res => {
- if(res.code==200){
- if(res.user!=null){
- uni.hideLoading();
- uni.setStorageSync('AppToken',res.token);
- uni.setStorageSync('userInfo',JSON.stringify(res.user));
- uni.closeAuthView();
- uni.$emit('refreshUserInfo',{});
- // // #ifdef APP-PLUS
- // const jyJPush = uni.requireNativePlugin('JY-JPush');
- // jyJPush.setJYJPushAlias({userAlias: registrationID}, result=> {
- // // 设置成功或者失败,都会通过这个result回调返回数据;数据格式保持极光返回的安卓/iOS数据一致
- // // 注:若没有返回任何数据,考虑是否初始化完成
- // console.log("qxj userAlias "+JSON.stringify(result));
- // });
- // // #endif
- uni.reLaunch({
- url: "/pages/home/index"
- })
- }else{
- unionid=res.unionid;
- if(res.isNew){
- bindMobile();
- }
- }
- }
- else{
- uni.hideLoading();
- console.log(res)
- uni.showToast({title: res.msg,icon: 'none'});
- }
- },
- rej => {}
- );
-
- }
-
-
- export function bindMobile(){
- // #ifdef APP-PLUS
- //uni.showLoading({title:""});
- uni.login({
- provider: 'univerify',
- univerifyStyle: { // 自定义登录框样式
- fullScreen: false,
- authButton: {
- "title": "绑定手机号",
- "normalColor": "#018C39",
- "highlightColor": "#018C39",
- },
- privacyTerms: {
- "defaultCheckBoxState":true, // 条款勾选框初始状态 默认值: true
- "isCenterHint":false, //未勾选服务条款时点击登录按钮的提示是否居中显示 默认值: false (3.7.13+ 版本支持)
- "uncheckedImage":"", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)
- "checkedImage":"", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)
- "checkBoxSize":18, // 可选 条款勾选框大小
- "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB
- "termsColor": "#018C39", // 协议文字颜色 默认值: #5496E3
- "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”
- "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”
- "privacyItems": [ // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效
-
- ]
- },
- },
- success(res){ //
- console.log("qxj univerify login:"+JSON.stringify(res.authResult)); // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
- loginByUniverify(res.authResult,1);
- },
- fail(res){
- uni.hideLoading();
- uni.closeAuthView();
- if(res.errCode==30005){ //预登录失败
- //uni.showToast({title: "一键登录失败请检查网络和SIM卡是否可用",icon: 'none',position:'bottom'});
- //setTimeout(function() {
- uni.navigateTo({url: "/pages/auth/passwordLogin"});
- //}, 1800);
- }
- console.log("qxj failRes:"+JSON.stringify(res));
-
- }
- });
- console.log("----qxj 一键登录调用3-----");
-
- // #endif
-
- // #ifdef H5
- uni.navigateTo({
- url: "/pages/auth/passwordLogin"
- });
- // #endif
- };
-
- export function loginByUniverify(authResult,type){
- uniCloud.callFunction({
- name: 'loginByMobile', // 你的云函数名称
- data: {
- access_token: authResult.access_token, // 客户端一键登录接口返回的access_token
- openid:authResult.openid // 客户端一键登录接口返回的openid
- }
- }).then(res => {
- console.log("qxj doUniverify:",JSON.stringify(res));
- if(res.result.errCode==0){
- userPhone=res.result.phoneNumber;
- console.log("电话:",res.result.phoneNumber);
- if(type==0){
- loginActionAct();
- }else{
- setPhoneAct(userPhone,unionid);
- }
-
- }else{
- uni.showToast({title:res.result.message,icon: 'none' });
- }
- }).catch(err=>{
- // 处理错误
- console.error('调用云函数失败:',err);
- // 详细记录错误信息
- console.error('错误信息:', err.errMsg);
- })
- }
- export function loginActionAct(){
- if (loginType==3 && userPhone==null) {
- uni.showToast({
- title: "请授权手机号登录",
- icon: 'none'
- });
- return
- }
- var data = {
- phone:userPhone,
- // jpushId:registrationID,
- loginType:loginType
- };
- var that=this;
- uni.showLoading({
- title:"处理中..."
- });
- login(data).then(res => {
- uni.hideLoading();
- if(res.code==200){
- uni.setStorageSync('AppToken',res.token);
- uni.setStorageSync('userInfo',JSON.stringify(res.user));
- uni.closeAuthView();
- // // #ifdef APP-PLUS
- // const jyJPush = uni.requireNativePlugin('JY-JPush');
- // jyJPush.setJYJPushAlias({userAlias: registrationID}, result=> {
- // // 设置成功或者失败,都会通过这个result回调返回数据;数据格式保持极光返回的安卓/iOS数据一致
- // // 注:若没有返回任何数据,考虑是否初始化完成
- // console.log("qxj userAlias "+JSON.stringify(result));
- // });
- // // #endif
- uni.reLaunch({
- url: "/pages/home/index"
- })
- }
- else{
- console.log("loginActionAct error",res)
- uni.showToast({title: res.msg,icon: 'none'});
- }
- },
- rej => {}
- );
-
- }
-
- export function setPhoneAct(phone,unionId){
- let params={phone:phone,unionId:unionId};
- setPhone(params).then(res => {
- uni.hideLoading();
- if(res.code==200){
- uni.setStorageSync('AppToken',res.token);
- uni.setStorageSync('userInfo',JSON.stringify(res.user));
- uni.closeAuthView();
- // // #ifdef APP-PLUS
- // const jyJPush = uni.requireNativePlugin('JY-JPush');
- // jyJPush.setJYJPushAlias({userAlias: registrationID}, result=> {
- // // 设置成功或者失败,都会通过这个result回调返回数据;数据格式保持极光返回的安卓/iOS数据一致
- // // 注:若没有返回任何数据,考虑是否初始化完成
- // console.log("qxj userAlias "+JSON.stringify(result));
- // });
- // // #endif
- }
- else{
- uni.showToast({title: res.msg,icon: 'none'});
- }
- },
- rej => {}
- );
- }
-
- export function getRegistrationID(){
- // #ifdef APP-PLUS
- const jyJPush = uni.requireNativePlugin('JY-JPush');
- //获取registrationID
- jyJPush.getRegistrationID(result => {
- console.log("qxj loginJs getRegistrationID result:"+JSON.stringify(result));
- registrationID=result.registrationID;
- uni.setStorageSync("registrationID",result.registrationID)
- });
- // #endif
- }
-
- export function weixinLogin() {
- loginType=2;
- uni.login({
- provider: "weixin",
- onlyAuthorize:false,
- success: async (res) => {
- console.log('login success:', JSON.stringify(res));
- let that=this;
- uni.showLoading({
- title:"处理中..."
- });
- // const params={code:res.code,jpushId:registrationID};
- const params={code:res.code};
- console.log('login微信:', params);
- loginByWeChatAct(params);
- },
- fail: (err) => {
- console.log('login fail:', JSON.stringify(err));
- // 未开通
- if (err.code == 1000) {
- uni.showModal({
- title: '登录失败',
- content: `${err.errMsg}\n,错误码:${err.code}`,
- confirmText: '开通指南',
- cancelText: '确定',
- success: (res) => {
- if (res.confirm) {
- setTimeout(() => {
- plus.runtime.openWeb('https://ask.dcloud.net.cn/article/37965')
- }, 500)
- }
- }
- });
- return;
- }
- // 授权拒绝
- if (err.code == '-100') {
- uni.showToast({
- title: "授权拒绝",
- icon: "none"
- });
- return;
- }
- // 一键登录预登陆失败
- if (err.code == '30005') {
- uni.showModal({
- showCancel: false,
- title: '预登录失败',
- content: err.errMsg
- });
- return;
- }
- if (err.code == 30006) {
- uni.showToast({ title: "登录已取消,请重新操作", icon: "none" });
- return;
- }
- // 一键登录用户关闭验证界面
- if (err.code != '30003') {
- uni.showModal({
- showCancel: false,
- title: '登录失败',
- content: JSON.stringify(err)
- });
- }
- },
- complete: () => {
-
- }
- });
- }
-
|