You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

200 lines
9.1 KiB

<template>
<div id="login">
<el-row class="loginBody">
5 years ago
<el-col :span="12">
<img class="loginBackImg" src="http://qiniu.smileyi.top/login-banner">
</el-col>
5 years ago
<el-col :span="12">
<el-tabs v-if="formType=='login'" v-model="loginType" class="login-form-tab" style="width: 320px;"
@tab-click="loginTypeHandleClick"
>
<el-tab-pane label="微信扫码登录" name="wx">
<div class="wx-login">
<div style="text-align: center;">
<img class="qrcode" :src="wxLoginQrCode">
</div>
<div style="text-align: center;">
<el-link icon="el-icon-refresh-left" :underline="false">刷新二维码</el-link>
</div>
<el-divider style="width: 100px;" />
<div style="display: flex; flex-direction: row;">
<el-link style="margin-left: 20px;">忘记密码</el-link>
<el-link style="margin-left: 20px;" @click="()=>{this.formType='reg'}">立即注册</el-link>
<div class="other-login">
<svg-icon name="loginQQ" class="other-login-icon" />
<svg-icon name="loginWx" class="other-login-icon" />
</div>
</div>
<el-divider style="width: 100px;" />
<p class="login-tip">关于TDuckCloud登录</p>
<p class="login-tip">
若微信扫码失败请打开 微信授权页面 登录
若QQ登录填鸭云异常可查阅 帮助文档
若因微信QQ公众号冻结或账号密码找回失败等无法登录 自助申请 登录账号
</p>
</div>
</el-tab-pane>
<el-tab-pane label="账号密码登录" name="account">
5 years ago
<el-form ref="form" label-position="top" size="small" :model="account"
class="account-login-form"
>
<el-form-item label="手机号/邮箱登录">
<el-input v-model="account.username" placeholder="请输入手机号/邮箱" />
</el-form-item>
<el-form-item label="密码">
<el-input v-model="account.password" placeholder="请输入密码" show-password />
</el-form-item>
<el-form-item label="">
<el-radio v-model="agreeProtocol" label="" />
<span class="protocol-tip">我已同意</span>
<el-link :underline="false" type="primary" class="protocol-tip">TDuck用户服务协议</el-link>
<el-link :underline="false" type="primary" class="protocol-tip" style="float: right;">忘记密码</el-link>
</el-form-item>
<el-form-item>
<el-button style="width: 100%;" type="primary">登录</el-button>
</el-form-item>
<el-form-item style="text-align: center;">
<span class="protocol-tip">使用第三方登录 </span>
<el-link :underline="false" type="primary" class="protocol-tip" @click="()=>{this.formType='reg'}">立即注册</el-link>
<div class="other-login">
<svg-icon name="loginQQ" class="other-login-icon" />
<svg-icon name="loginWx" class="other-login-icon" />
</div>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
5 years ago
<el-tabs v-if="formType==='reg'" v-model="regType" class="login-form" style="width: 300px;"
@tab-click="loginTypeHandleClick"
>
<el-tab-pane label="手机号注册" name="regPhone">
<el-form ref="form" :model="account" label-width="0px">
<el-form-item label="">
<el-input v-model="account.username" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="">
<el-input v-model="account.password" placeholder="请输入密码" />
</el-form-item>
<el-form-item label="">
<el-input v-model="account.code" style="width: 150px;" placeholder="请输入验证码" />
<el-button style="margin-left: 20px;" type="primary">发送验证码</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" width: 100%;>登录</el-button>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="邮箱注册" name="regEmail">
<el-form ref="form" :model="account" label-width="0px">
<el-form-item label="">
<el-input v-model="account.username" placeholder="请输入邮箱" />
</el-form-item>
<el-form-item label="">
<el-input v-model="account.password" placeholder="请输入密码" />
</el-form-item>
<el-form-item label="">
<el-input v-model="account.code" style="width: 150px;" placeholder="请输入验证码" />
<el-button style="margin-left: 20px;" type="primary">发送验证码</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" style="width: 100%;">确定</el-button>
</el-form-item>
</el-form>
</el-tab-pane>
<div style="display: flex; flex-direction: row;">
<el-link style="margin-left: 20px;">忘记密码</el-link>
<el-link style="margin-left: 20px;" @click="reigsterHandleClick">立即注册</el-link>
<div class="other-login">
<svg-icon name="loginQQ" class="other-login-icon" />
<svg-icon name="loginWx" class="other-login-icon" />
</div>
</div>
</el-tabs>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
5 years ago
name: 'Login',
data() {
return {
5 years ago
loginType: 'wx',
formType: 'reg',
regType: 'regPhone',
agreeProtocol: '',
account: {
username: '',
password: ''
},
wxLoginQrCode: 'http://qiniu.smileyi.top/20191213/9f217b754ad44f0caaa83040ce62fe93.png'
}
},
methods: {
loginTypeHandleClick() {
},
reigsterHandleClick() {
},
login() {
this.$store.dispatch('token/login').then(() => {
// 登录成功后路由跳回
if (this.$route.query.redirect) {
this.$router.replace({
path: this.$route.query.redirect
})
} else {
if (window.history.length <= 1) {
this.$router.push({path: '/'})
} else {
this.$router.go(-1)
}
}
})
}
}
}
</script>
<style scoped>
.loginBody {
5 years ago
/* border: solid thin black; */
margin: 70px 0 0 0;
}
.loginBackImg {
width: 100%;
}
5 years ago
.login-form-tab {
margin-left: 100px;
height: 500px;
width: 520px;
.wx-login {
display: flex;
align-content: center;
align-items: center;
justify-content: center;
flex-direction: column;
.qrcode {
margin: 20px;
}
}
}
.other-login {
margin-left: auto;
}
.login-tip {
color: rgba(16, 16, 16, 1);
font-size: 13px;
font-weight: 400;
text-align: left;
line-height: 20px;
}
.account-login-form .el-form-item--small.el-form-item {
margin-bottom: 5px;
}
.account-login-form .el-radio {
margin-right: 0;
}
.account-login-form .protocol-tip {
font-size: 12px;
}
</style>