<template> <div class="login"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" > <!-- <h3 class="title">若依后台管理系统</h3> --> <el-tabs v-model="userType" @tab-click="handleClick"> <el-tab-pane label="企业用户登录" name="01"></el-tab-pane> <el-tab-pane label="政务用户登录" name="02"></el-tab-pane> </el-tabs> <el-form-item prop="username"> <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号" > <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> </el-input> </el-form-item> <el-form-item prop="password"> <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin" > <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> </el-input> </el-form-item> <el-form-item prop="code" v-if="false"> <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin" > <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> </el-input> <div class="login-code"> <img :src="codeUrl" @click="getCode" class="login-code-img" /> </div> </el-form-item> <el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px" >记住密码</el-checkbox > <el-form-item style="width: 100%"> <el-button :loading="loading" size="medium" type="primary" style="width: 100%" @click.native.prevent="handleLogin" > <span v-if="!loading">登 录</span> <span v-else>登 录 中...</span> </el-button> <!-- <el-button size="medium" type="primary" style="width: 100%;margin-left: 0;margin-top: 20px;" @click.native.prevent="changeHttp" > <span>政务通统一身份认证登录</span> </el-button> --> <div style="float: right" v-if="register"> <router-link class="link-type" :to="'/register'" >立即注册</router-link > </div> </el-form-item> </el-form> <!-- 底部 --> <!-- <div class="el-login-footer"> <span>Copyright © 2018-2024 ruoyi.vip All Rights Reserved.</span> </div> --> <!-- 正式环境部署命令 : unzip /var/www/html/dist.zip -d /var/www/html/bms --> <!-- process.env.VUE_APP_BASE_API 替换 location.origin + '/api' publicPath: 由/dome/JinJiHu 更换为./ --> </div> </template> <script> import { getCodeImg } from "@/api/login"; import Cookies from "js-cookie"; import { encrypt, decrypt } from "@/utils/jsencrypt"; export default { name: "Login", data() { return { codeUrl: "", loginForm: { username: "", // admin password: "", // admin123 rememberMe: false, code: "", uuid: "", }, loginRules: { username: [ { required: true, trigger: "blur", message: "请输入您的账号" }, ], password: [ { required: true, trigger: "blur", message: "请输入您的密码" }, ], code: [{ required: true, trigger: "change", message: "请输入验证码" }], }, loading: false, // 验证码开关 captchaEnabled: true, // 注册开关 register: false, redirect: undefined, userType:"01", }; }, watch: { $route: { handler: function (route) { this.redirect = route.query && route.query.redirect; }, immediate: true, }, }, created() { // this.getCode(); this.getCookie(); }, methods: { handleClick(tab){ // if(tab.index == "1") { // this.getCode(); // } }, getCode() { getCodeImg().then((res) => { this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled; if (this.captchaEnabled) { this.codeUrl = "data:image/gif;base64," + res.img; this.loginForm.uuid = res.uuid; } }); }, getCookie() { const username = Cookies.get("username"); const password = Cookies.get("password"); const rememberMe = Cookies.get("rememberMe"); this.loginForm = { username: username === undefined ? this.loginForm.username : username, password: password === undefined ? this.loginForm.password : decrypt(password), rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), }; }, handleLogin() { this.$refs.loginForm.validate((valid) => { if (valid) { this.loading = true; if (this.loginForm.rememberMe) { Cookies.set("username", this.loginForm.username, { expires: 30 }); Cookies.set("password", encrypt(this.loginForm.password), { expires: 30, }); Cookies.set("rememberMe", this.loginForm.rememberMe, { expires: 30, }); } else { Cookies.remove("username"); Cookies.remove("password"); Cookies.remove("rememberMe"); } this.$store .dispatch("Login", {...this.loginForm,userType:this.userType}) .then(() => { this.$router.push({ path: this.redirect || "/" }).catch(() => {}); }) .catch(() => { this.loading = false; // if (this.captchaEnabled) { // this.getCode(); // } }); } }); }, changeHttp(){ location.href = "https://qyt.sipac.gov.cn/sipsg-enterprise-mobile-manage/#/login" }, }, }; </script> <style rel="stylesheet/scss" lang="scss"> .login { position: relative; height: 100%; background: url("../assets/images/login-background.jpg") no-repeat; background-size: 100% 100%; } .title { margin: 0px auto 30px auto; text-align: center; color: #707070; } .enterBtnLogin { height: 100%; .wai-box { height: 100%; margin-top: 30%; } } .login-form { position: absolute; top: 45%; left: 68%; transform: translate(-50%, -50%); border-radius: 6px; background: #ffffff; width: 400px; height: 330px; padding: 25px 25px 5px 25px; box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.15); .el-input { height: 38px; input { height: 38px; } } .input-icon { height: 39px; width: 14px; margin-left: 2px; } ::v-deep .el-tabs { .el-tabs__nav .el-tabs__item { width: 50%; text-align: center; } } } .login-tip { font-size: 13px; text-align: center; color: #bfbfbf; } .login-code { width: 33%; height: 38px; float: right; img { cursor: pointer; vertical-align: middle; } } .el-login-footer { height: 40px; line-height: 40px; position: fixed; bottom: 0; width: 100%; text-align: center; color: #fff; font-family: Arial; font-size: 12px; letter-spacing: 1px; } .login-code-img { height: 38px; } </style>