123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454 |
- <template>
- <div class="login-container">
- <div class="company-name" style="margin-top: -88px; margin-bottom: 90px">
-
- <div class="shadow-font">马边县城市供水综合管理平台</div>
-
- </div>
- <div class="fill-container">
- <div class="left">
- <img src="./images/supplierPipe.png" />
- </div>
- <div class="right">
- <div class="top">
-
- <div
- class="left-img"
- style="
- width: 33%;
- float: left;
- margin-top: -14px;
- text-align: right;
- "
- >
- <img src="./images/left.png" />
- </div>
- <div
- class="center-span"
- style="
- width: 34%;
- float: left;
- font-size: 24px;
- font-weight: bold;
- text-align: center;
- color: #2f75e7;
- "
- >
- <span>欢迎登录</span>
- </div>
- <div
- class="right-img"
- style="width: 33%; float: left; margin-top: -14px"
- >
- <img src="./images/right.png" />
- </div>
- </div>
- <el-form
- ref="loginForm"
- :model="loginForm"
- :rules="loginRules"
- class="login-form middle"
- auto-complete="on"
- label-position="left"
- >
- <el-input
- ref="username"
- v-model="loginForm.username"
- suffix-icon="el-icon-user"
- placeholder="请输入账号"
- name="username"
- type="text"
- class="form-input"
- tabindex="1"
- auto-complete="on"
- />
- <el-input
- :key="passwordType"
- ref="password"
- v-model="loginForm.password"
- :type="passwordType"
- placeholder="请输入密码"
- name="password"
- tabindex="2"
- class="form-input"
- auto-complete="on"
- suffix-icon="el-icon-lock"
- @keyup.enter.native="handleLogin"
- />
- <div class="form-input">
- <el-input
- v-model="loginForm.verifyCode"
- name="verifyCode"
- placeholder="请输入验证码"
- style="float: left; width: calc(100% - 189px)"
- ></el-input>
- <img
- :src="captchaUrl"
- @click="refreshCaptcha"
- style="float: left; height: 34px; width: 188px; cursor: pointer"
- />
- </div>
- </el-form>
- <el-button
- class="login-btn"
- :loading="loading"
- @click.native.prevent="handleLogin"
- >登录</el-button
- >
- </div>
- </div>
- <el-dialog
- title="密码修改"
- :visible.sync="passwordDialog"
- append-to-body
- width="520px"
- top="25vh"
- :close-on-click-modal="false"
- :close-on-press-escape="false"
- :show-close="false"
- >
- <el-form
- ref="changePwdForm"
- :model="changePwd"
- :rules="pwdRules"
- label-width="100px"
- label-position="right"
- >
- <el-form-item label="密码:" prop="pass" style="margin-bottom: 25px">
- <el-input
- v-model="changePwd.pass"
- autocomplete="off"
- type="password"
- placeholder="请输入密码"
- suffix-icon="el-icon-lock"
- />
- </el-form-item>
- <el-form-item label="确认密码:" prop="checkPass">
- <el-input
- v-model="changePwd.checkPass"
- autocomplete="off"
- type="password"
- placeholder="请输入密码"
- suffix-icon="el-icon-lock"
- />
- </el-form-item>
- </el-form>
- <template slot="footer">
- <el-button @click="handleDialogBtnClick('cancel')">取消</el-button>
- <el-button type="primary" @click="handleDialogBtnClick('confirm')"
- >确定</el-button
- >
- </template>
- </el-dialog>
- </div>
- </template>
- <script>
- import { userFirstLogin } from "@/api/user";
- import { changePassword } from "@/api/base";
- import { regPassword } from "@/utils/reg";
- import { IP } from "@/utils/request.js";
- const sha1Hex = require("sha1-hex");
- export default {
- name: "Login",
- data() {
- const validatePwd1st = (rule, value, callback) => {
- if (value === "") {
- callback(new Error("请输入密码!"));
- } else {
- if (this.changePwd.pass !== "") {
- if (!regPassword().test(value)) {
- callback(
- new Error(
- "密码位数8-16位,必须包含大小写字母和数字,不可包含非法字符!"
- )
- );
- return;
- }
- }
- callback();
- }
- };
- const validatePwd2nd = (rule, value, callback) => {
- if (value === "") {
- callback(new Error("请再次输入密码"));
- } else if (value !== this.changePwd.pass && value !== "") {
- callback(new Error("两次输入密码不一致!"));
- } else {
- callback();
- }
- };
- return {
- url: "@/assets/images/login/logo.png",
- loginForm: {
- username: "",
- password: "",
- verifyCode: "",
- },
- loginRules: {
- username: [{ required: true, trigger: "blur", message: "请输入账号" }],
- password: [{ required: true, trigger: "blur", message: "请输入密码" }],
- verifyCode: [
- { required: true, trigger: "blur", message: "请输入验证码" },
- ],
- },
-
- loading: false,
- passwordType: "password",
- redirect: undefined,
- error: 1,
-
- msg: "",
- passwordDialog: false,
- changePwd: {
- pass: "",
- checkPass: "",
- },
- pwdRules: {
- pass: [{ required: true, validator: validatePwd1st, trigger: "blur" }],
- checkPass: [
- { required: true, validator: validatePwd2nd, trigger: "blur" },
- ],
- },
- userId: "",
- captchaUrl: IP + "/auth/token/getVerifyCode",
- };
- },
- computed: {
- sysTitle() {
- return this.$store.state.settings.sysTitle;
- },
- },
- watch: {
- $route: {
- handler: function (route) {
- this.redirect = route.query && route.query.redirect;
- },
- immediate: true,
- },
- },
- methods: {
-
- showPwd() {
- if (this.passwordType === "password") {
- this.passwordType = "text";
- } else {
- this.passwordType = "password";
- }
- this.$nextTick(() => {
- this.$refs.password.focus();
- });
- },
-
- handleLogin() {
- this.$refs.loginForm.validate((valid) => {
- if (valid) {
- this.loading = true;
- this.$store
- .dispatch("user/login", this.loginForm)
- .then((res) => {
- const { id } = res.result;
-
- userFirstLogin(id)
- .then((res) => {
-
- const { auditstatus, enableFlag } = res.result;
- if (enableFlag === "0") {
- this.$message({
- message: "用户已被禁用,请先启用!",
- type: "error",
- });
-
- sessionStorage.clear();
- return;
- }
- if (auditstatus !== "2" && auditstatus !== null) {
- this.$message({
- message:
- auditstatus === 1
- ? "账户还未审核通过!"
- : "账户审核未被通过!",
- type: "error",
- });
-
- sessionStorage.clear();
- return;
- }
-
- if (res.result.firstlog === "1") {
- this.userId = id;
- this.passwordDialog = true;
-
- sessionStorage.removeItem("userId");
- this.$store.state.user.userId = undefined;
- } else {
-
- this.$router.push({ path: "/" });
- }
- })
- .catch(() => {
- sessionStorage.clear();
- this.loading = false;
- });
-
- })
- .catch(() => {
- this.loading = false;
- });
- } else {
- console.log("error submit!!");
- return false;
- }
-
- });
- },
-
- handleDialogBtnClick(type) {
- if (type === "cancel") {
- this.$nextTick(() => {
- this.$refs.changePwdForm.resetFields();
- });
- this.passwordDialog = false;
- this.changePwd.pass = "";
- this.changePwd.checkPass = "";
- sessionStorage.clear();
- this.loading = false;
- } else {
- this.$refs.changePwdForm.validate((valid) => {
- if (valid) {
- const originalPassword = "000000";
- const data = {
- originalPassword: sha1Hex(originalPassword),
- id: this.userId,
- firstlog: 0,
- password: sha1Hex(this.changePwd.checkPass),
- };
- changePassword(data).then((res) => {
- if (res.code !== -1) {
- this.$message({
- message: "密码修改成功,请您重新登录!",
- type: "success",
- });
- this.passwordDialog = false;
- this.loading = false;
- this.changePwd.pass = "";
- this.changePwd.checkPass = "";
- sessionStorage.clear();
- } else {
- this.$nextTick(() => {
- this.$refs.changePwdForm.resetFields();
- });
- this.passwordDialog = false;
- this.loading = false;
- this.changePwd.pass = "";
- this.changePwd.checkPass = "";
- sessionStorage.clear();
- this.$message({
- message: res.message,
- type: "error",
- });
- }
- });
- } else return false;
- });
- }
- },
- refreshCaptcha() {
- this.captchaUrl = `${IP}/auth/token/getVerifyCode?t=${new Date().getTime()}`;
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .login-container {
- width: 100%;
- height: 100%;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- background: url("./images/background.png") no-repeat fixed center/100%;
- img {
- user-select: none;
- height: 100%;
- }
- .fill-container {
- width: 900px;
- height: 434px;
- display: flex;
- border-radius: 10px;
- background-color: #ffffff;
- box-shadow: 3px 3px 4px
- linear-gradient(#333333 40%, #333333 60%, black 80%, blue 100%);
- .left {
- flex: 1;
- overflow: hidden;
- }
- .right {
- width: 362px;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding-top: 60px;
- .top {
- position: relative;
- height: 48px;
- width: 100%;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- font-size: 30px;
- color: #333333;
- margin-bottom: 52px;
- > span {
- line-height: 30px;
- &:nth-of-type(2) {
- margin-top: 16px;
- }
- }
- }
- .middle {
- width: 320px;
- height: 126px;
- margin-bottom: 80px;
- > .form-input {
- height: 36px;
- line-height: 36px;
- ::v-deep input {
- height: 36px;
- }
- &:nth-of-type(2) {
- margin-top: 34px;
- }
- &:nth-of-type(3) {
- margin-top: 34px;
- }
- }
- }
- .login-btn {
- width: 320px;
- height: 44px;
- border-radius: 22px;
- overflow: hidden;
- font-size: 16px;
- background: #2d74e7;
- transition: background 0.3s linear;
- color: #ffffff;
- &:hover {
- background: #2467d3;
- }
- }
- }
- }
- .shadow-font {
- color: #ffffff;
- font-size: 40px;
- font-weight: bold;
- letter-spacing: 6px;
- // -webkit-box-reflect: below 1px -webkit-gradient(linear, 0 0, 0 50%, from(transparent), color-stop(.2, transparent), to(rgba(3,3,3,.1)));
- }
- }
- </style>
|