Files
ZangShiQi/addon/pc/source/os/pages/auth/login.vue
2026-04-04 17:27:12 +08:00

404 lines
14 KiB
Vue
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="ns-login-wrap" :style="{ background: backgroundColor }" v-loading="loadingAd" @keypress="keypress">
<div class="el-row-wrap el-row-wrap-login">
<el-row>
<el-col :span="13">
<el-carousel height="460px" class="ns-login-bg" @change="handleChange" v-if="adList.length">
<el-carousel-item v-for="item in adList" :key="item.adv_id">
<el-image :src="$img(item.adv_image)" fit="cover" @click="$util.pushToTab(item.adv_url.url)" />
</el-carousel-item>
</el-carousel>
</el-col>
<el-col :span="11" class="ns-login-form" style="float:right;margin-right:70px">
<div class="grid-content bg-purple">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="账号登录" name="first" v-if="registerConfig.login.indexOf('username') != -1">
<el-form v-if="activeName == 'first'" :model="formData" :rules="accountRules" ref="ruleForm">
<el-form-item prop="account">
<el-input v-model="formData.account" placeholder="请输入账号">
<template slot="prepend">
<i class="iconfont icon-zhanghao"></i>
</template>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input type="password" v-model="formData.password" autocomplete="off" placeholder="请输入登录密码">
<template slot="prepend">
<i class="iconfont icon-mima"></i>
</template>
</el-input>
</el-form-item>
<el-form-item prop="vercode">
<el-input v-model="formData.vercode" autocomplete="off" placeholder="请输入验证码" maxlength="4">
<template slot="prepend">
<i class="iconfont icon-yanzhengma"></i>
</template>
<template slot="append">
<img :src="captcha.img" mode class="captcha" @click="getCaptcha" />
</template>
</el-input>
</el-form-item>
<el-form-item>
<el-row>
<el-col :span="12">
<el-checkbox v-model="formData.checked">七天自动登录</el-checkbox>
</el-col>
<el-col :span="12" class="ns-forget-pass">
<router-link to="/auth/find" class>忘记密码</router-link>
</el-col>
</el-row>
</el-form-item>
<el-form-item style="margin-bottom: 18px;">
<el-button type="primary" @click="accountLogin('ruleForm')">登录</el-button>
</el-form-item>
<el-form-item>
<el-row>
<el-col :span="24">
<div class="bg-purple-light" style="padding: 0 0 10px 0;" :style="wechatConfigStatus ? 'border-bottom: 1px solid #ebebeb' : ''">
没有账号
<router-link to="/auth/register"><p style="color: #fd274a;">立即注册</p></router-link>
<!-- <i class="iconfont icon-arrow-right"></i> -->
</div>
</el-col>
</el-row>
<el-col :span="18" v-if="wechatConfigStatus">
<div style="margin-left: 100px; margin-top: 20px; position: relative;" class="go-wx-login iconfont icon-weixin-copy" @click="weixinLogin()">
<p style="font-size: 14px; text-indent: 10px; position: absolute;top: 1px;">使用微信扫码登录</p>
</div>
</el-col>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="手机动态码登录" name="second" v-if="registerConfig.login.indexOf('mobile') != -1">
<el-form v-if="activeName == 'second'" :model="formData" :rules="mobileRules" ref="mobileRuleForm" class="ns-login-mobile">
<el-form-item prop="mobile">
<el-input v-model="formData.mobile" placeholder="请输入手机号">
<template slot="prepend">
<i class="iconfont icon-shouji-copy"></i>
</template>
</el-input>
</el-form-item>
<el-form-item prop="vercode">
<el-input v-model="formData.vercode" autocomplete="off" placeholder="请输入验证码" maxlength="4">
<template slot="prepend">
<i class="iconfont icon-yanzhengma"></i>
</template>
<template slot="append">
<img :src="captcha.img" mode class="captcha" @click="getCaptcha" />
</template>
</el-input>
</el-form-item>
<el-form-item prop="dynacode">
<el-input v-model="formData.dynacode" maxlength="4" placeholder="请输入短信动态码">
<template slot="prepend">
<i class="iconfont icon-dongtaima"></i>
</template>
<template slot="append">
<div class="dynacode" :class="dynacodeData.seconds == 120 ? 'ns-text-color' : 'ns-text-color-gray'" @click="sendMobileCode('mobileRuleForm')">
{{ dynacodeData.codeText }}
</div>
</template>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="mobileLogin('mobileRuleForm')">登录</el-button>
</el-form-item>
<el-form-item>
<el-row>
<el-col :span="24">
<div class="bg-purple-light" style="padding: 0 0 10px 0;" :style="wechatConfigStatus ? 'border-bottom: 1px solid #ebebeb' : ''">
<router-link to="/auth/register">立即注册</router-link>
<i class="iconfont icon-arrow-right"></i>
</div>
</el-col>
</el-row>
<el-col :span="18" v-if="wechatConfigStatus">
<div style="margin-left: 100px; margin-top: 20px; position: relative;" class="go-wx-login iconfont icon-weixin-copy" @click="weixinLogin()">
<p style="font-size: 14px; text-indent: 10px; position: absolute;top: 1px;">使用微信扫码登录</p>
</div>
</el-col>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
</div>
</el-col>
<div class="wx-login" :class="ischecked == true ? 'wx-login-display' : ''">
<p class="wx-login-title">微信扫码登录</p>
<div class="qrcode"><img :src="img" /></div>
<div style="display: flex;">
<p class="iconfont icon-arrowLeft" @click="closeWx()"></p>
<p class="wx-login-footer" @click="closeWx()">使用账号密码登录</p>
</div>
</div>
<div class="wx-login1" :class="ischecked1 == true ? 'wx-login-display1' : ''">
<p class="wx-login-title1">扫码成功</p>
<el-col :span="11" class="ns-login-form ns-login-form2">
<div class="grid-content bg-purple">
<el-form :model="formData" :rules="wechatRules" ref="wechatRuleForm">
<el-form-item prop="mobile">
<el-input v-model="formData.mobile" placeholder="请输入手机号">
<template slot="prepend">
<i class="iconfont icon-shouji-copy"></i>
</template>
</el-input>
</el-form-item>
<el-form-item prop="vercode">
<el-input v-model="formData.vercode" autocomplete="off" placeholder="请输入验证码" maxlength="4">
<template slot="prepend">
<i class="iconfont icon-yanzhengma"></i>
</template>
<template slot="append">
<img :src="captcha.img" mode class="captcha" @click="getCaptcha" />
</template>
</el-input>
</el-form-item>
<el-form-item prop="dynacode">
<el-input v-model="formData.dynacode" maxlength="4" placeholder="请输入短信动态码">
<template slot="prepend">
<i class="iconfont icon-dongtaima"></i>
</template>
<template slot="append">
<div class="dynacode" :class="dynacodeData.seconds == 120 ? 'ns-text-color' : 'ns-text-color-gray'" @click="sendWechatMobileCode('wechatRuleForm')">
{{ dynacodeData.codeText }}
</div>
</template>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="wechatLogin('wechatRuleForm')">确定</el-button>
</el-form-item>
<el-form-item>
<el-row>
<el-col :span="12">
<div class="go-wx-login iconfont" @click="closeWx1()">
<p>使用其他方式登录</p>
</div>
</el-col>
<el-col :span="12">
<div class="bg-purple-light">
<router-link to="/auth/register">立即注册</router-link>
<i class="iconfont icon-arrow-right"></i>
</div>
</el-col>
</el-row>
</el-form-item>
</el-form>
</div>
</el-col>
</div>
</el-row>
</div>
</div>
</template>
<script>
import login from '~/assets/js/auth/login.js';
export default {
name: 'login',
layout: 'login',
mixins: [login]
};
</script>
<style lang="scss" scoped>
.icon-arrowLeft {
line-height: 55px;
font-size: 30px;
margin-right: 10px;
margin-left: 130px;
}
.ns-login-wrap {
width: 100%;
height: 500px;
min-width: $width;
.el-row-wrap-login {
width: 1200px;
margin: 0 auto;
.ns-login-bg {
margin-top: 40px;
}
.ns-login-form {
width: 400px;
margin-left: 50px;
background: #ffffff;
margin-top: 25px;
.el-form {
.captcha {
vertical-align: top;
max-width: inherit;
max-height: 38px;
line-height: 38px;
cursor: pointer;
}
.dynacode {
cursor: pointer;
}
[class*=' el-icon-'],
[class^='el-icon-'] {
font-size: 16px;
}
}
.grid-content {
padding: 10px 20px;
}
.el-form-item__error {
padding-left: 50px;
}
button {
width: 100%;
}
.ns-forget-pass {
text-align: right;
}
i {
font-size: 18px;
}
.bg-purple-light {
display: flex;
justify-content: flex-end;
align-items: center;
i {
width: 16px;
height: 16px;
line-height: 16px;
text-align: center;
border-radius: 50%;
background-color: $base-color;
color: #ffffff;
font-size: 12px;
margin-left: 8px;
}
}
}
.ns-login-form2 {
margin-left: 9px;
}
}
}
.icon-weixin-copy {
color: #09bb07;
font-size: 26px;
p {
font-size: 16px;
color: #000;
display: inline-block;
padding-right: 15px;
}
}
.go-wx-login {
cursor: pointer;
}
.wx-login-display {
display: block !important;
}
.wx-login {
width: 410px;
height: 460px;
background: #fff;
position: absolute;
top: 22px;
right: 90px;
z-index: 10;
display: none;
.wx-login-title {
text-align: center;
margin-top: 30px;
font-weight: 600;
font-size: 16px;
color: #fc183e;
}
img {
width: 200px;
margin: 45px 105px;
}
.wx-login-footer {
margin-top: 15px;
text-align: center;
cursor: pointer;
}
}
.wx-login-display1 {
display: block !important;
}
.wx-login1 {
width: 410px;
height: 460px;
background: #fff;
position: absolute;
top: 22px;
right: 90px;
z-index: 11;
display: none;
.wx-login-title1 {
text-align: center;
margin-top: 30px;
font-weight: 600;
}
.wx-login-footer1 {
margin-top: 15px;
text-align: center;
cursor: pointer;
}
}
</style>
<style lang="scss">
.ns-login-form {
.el-form-item__error {
/* 错误提示信息 */
padding-left: 57px;
}
.el-tabs__active-bar,
.el-tabs__nav-wrap::after {
/* 清除tab标签底部横线 */
height: 0;
}
/* 立即注册 */
.el-form-item__content {
line-height: 20px;
}
}
</style>