mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2026-02-05 10:05:33 +08:00
JeecgBoot 2.4 微服务正式版本发布,基于SpringBoot的低代码平台
This commit is contained in:
@ -0,0 +1,211 @@
|
||||
/**
|
||||
*第三方登录
|
||||
*/
|
||||
import { mapActions } from 'vuex'
|
||||
import { postAction } from '@api/manage'
|
||||
import { timeFix } from '@/utils/util'
|
||||
|
||||
export const JeecgThirdLoginMixin = {
|
||||
data() {
|
||||
return {
|
||||
//第三方登录相关信息
|
||||
thirdLoginInfo: '',
|
||||
thirdPasswordShow: false,
|
||||
thirdLoginPassword: '',
|
||||
thirdLoginUser: '',
|
||||
thirdConfirmShow: false,
|
||||
thirdCreateUserLoding: false,
|
||||
thirdLoginState: false,
|
||||
//绑定手机号弹窗
|
||||
bindingPhoneModal: false,
|
||||
thirdPhone: '',
|
||||
thirdCaptcha: '',
|
||||
//获取验证码按钮30s之内是否可点击
|
||||
thirdState: {
|
||||
time: 30,
|
||||
smsSendBtn: false
|
||||
},
|
||||
//第三方用户UUID
|
||||
thirdUserUuid: '',
|
||||
thirdType: '',
|
||||
url: {
|
||||
bindingThirdPhone: '/sys/thirdLogin/bindingThirdPhone'
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['ThirdLogin']),
|
||||
//第三方登录
|
||||
onThirdLogin(source) {
|
||||
let url = window._CONFIG['domianURL'] + `/sys/thirdLogin/render/${source}`
|
||||
window.open(url, `login ${source}`, 'height=500, width=500, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no')
|
||||
let that = this
|
||||
that.thirdType = source
|
||||
that.thirdLoginInfo = ''
|
||||
that.thirdLoginState = false
|
||||
let receiveMessage = function(event) {
|
||||
let token = event.data
|
||||
if (typeof token === 'string') {
|
||||
//如果是字符串类型 说明是token信息
|
||||
if (token === '登录失败') {
|
||||
that.$message.warning(token)
|
||||
} else if (token.includes('绑定手机号')) {
|
||||
that.bindingPhoneModal = true
|
||||
let strings = token.split(',')
|
||||
that.thirdUserUuid = strings[1]
|
||||
} else {
|
||||
that.doThirdLogin(token)
|
||||
}
|
||||
} else if (typeof token === 'object') {
|
||||
//对象类型 说明需要提示是否绑定现有账号
|
||||
if (token['isObj'] === true) {
|
||||
that.thirdConfirmShow = true
|
||||
that.thirdLoginInfo = { ...token }
|
||||
}
|
||||
} else {
|
||||
that.$message.warning('不识别的信息传递')
|
||||
}
|
||||
}
|
||||
window.addEventListener('message', receiveMessage, false)
|
||||
},
|
||||
// 根据token执行登录
|
||||
doThirdLogin(token) {
|
||||
if (this.thirdLoginState === false) {
|
||||
this.thirdLoginState = true
|
||||
let param={};
|
||||
param.thirdType=this.thirdType
|
||||
param.token=token
|
||||
this.ThirdLogin(param).then(res => {
|
||||
if (res.success) {
|
||||
this.loginSuccess()
|
||||
} else {
|
||||
this.requestFailed(res)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
// 绑定已有账号 需要输入密码
|
||||
thirdLoginUserBind() {
|
||||
this.thirdLoginPassword = ''
|
||||
this.thirdLoginUser = this.thirdLoginInfo.uuid
|
||||
this.thirdConfirmShow = false
|
||||
this.thirdPasswordShow = true
|
||||
},
|
||||
//创建新账号
|
||||
thirdLoginUserCreate() {
|
||||
this.thirdCreateUserLoding = true
|
||||
// 账号名后面添加两位随机数
|
||||
this.thirdLoginInfo['suffix'] = parseInt(Math.random() * 98 + 1)
|
||||
//this.thirdLoginInfo.operateCode = 123 //测试校验失败
|
||||
postAction('/sys/third/user/create', this.thirdLoginInfo).then(res => {
|
||||
if (res.success) {
|
||||
let token = res.result
|
||||
console.log('thirdCreateNewAccount', token)
|
||||
this.doThirdLogin(token)
|
||||
this.thirdConfirmShow = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.thirdCreateUserLoding = false
|
||||
})
|
||||
},
|
||||
// 核实密码
|
||||
thirdLoginCheckPassword() {
|
||||
//this.thirdLoginInfo.operateCode = 123 //测试校验失败
|
||||
let param = Object.assign({}, this.thirdLoginInfo, { password: this.thirdLoginPassword })
|
||||
postAction('/sys/third/user/checkPassword', param).then(res => {
|
||||
if (res.success) {
|
||||
this.thirdLoginNoPassword()
|
||||
this.doThirdLogin(res.result)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 没有密码 取消操作
|
||||
thirdLoginNoPassword() {
|
||||
this.thirdPasswordShow = false
|
||||
this.thirdLoginPassword = ''
|
||||
this.thirdLoginUser = ''
|
||||
},
|
||||
//获取第三方验证码
|
||||
getThirdCaptcha() {
|
||||
let that = this
|
||||
if (!this.thirdPhone) {
|
||||
that.cmsFailed('请输入手机号')
|
||||
} else {
|
||||
this.thirdState.smsSendBtn = true
|
||||
let interval = window.setInterval(() => {
|
||||
if (that.thirdState.time-- <= 0) {
|
||||
that.thirdState.time = 30
|
||||
that.thirdState.smsSendBtn = false
|
||||
window.clearInterval(interval)
|
||||
}
|
||||
}, 1000)
|
||||
const hide = this.$message.loading('验证码发送中..', 0)
|
||||
let smsParams = {}
|
||||
smsParams.mobile = this.thirdPhone
|
||||
smsParams.smsmode = '1'
|
||||
postAction('/sys/sms', smsParams).then(res => {
|
||||
if (!res.success) {
|
||||
setTimeout(hide, 0)
|
||||
this.cmsFailed(res.message)
|
||||
}
|
||||
setTimeout(hide, 500)
|
||||
}).catch(err => {
|
||||
setTimeout(hide, 1)
|
||||
clearInterval(interval)
|
||||
that.thirdState.time = 30
|
||||
that.thirdState.smsSendBtn = false
|
||||
this.requestFailed(err)
|
||||
})
|
||||
}
|
||||
},
|
||||
//绑定手机号点击确定按钮
|
||||
thirdHandleOk() {
|
||||
let bingingParams = {}
|
||||
bingingParams.mobile = this.thirdPhone
|
||||
bingingParams.captcha = this.thirdCaptcha
|
||||
bingingParams.thirdUserUuid = this.thirdUserUuid
|
||||
postAction(this.url.bindingThirdPhone, bingingParams).then(res => {
|
||||
if (res.success) {
|
||||
this.bindingPhoneModal = false
|
||||
this.doThirdLogin(res.result)
|
||||
} else {
|
||||
this.$message.$warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
loginSuccess () {
|
||||
// update-begin- author:sunjianlei --- date:20190812 --- for: 登录成功后不解除禁用按钮,防止多次点击
|
||||
// this.loginBtn = false
|
||||
// update-end- author:sunjianlei --- date:20190812 --- for: 登录成功后不解除禁用按钮,防止多次点击
|
||||
this.$router.push({ path: "/dashboard/analysis" }).catch(()=>{
|
||||
console.log('登录跳转首页出错,这个错误从哪里来的')
|
||||
})
|
||||
this.$notification.success({
|
||||
message: '欢迎',
|
||||
description: `${timeFix()},欢迎回来`,
|
||||
});
|
||||
},
|
||||
cmsFailed(err){
|
||||
this.$notification[ 'error' ]({
|
||||
message: "登录失败",
|
||||
description:err,
|
||||
duration: 4,
|
||||
});
|
||||
},
|
||||
requestFailed (err) {
|
||||
this.$notification[ 'error' ]({
|
||||
message: '登录失败',
|
||||
description: ((err.response || {}).data || {}).message || err.message || "请求出现错误,请稍后再试",
|
||||
duration: 4,
|
||||
});
|
||||
this.loginBtn = false;
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user