From a128d99df306bb1ab017b7069fb0441837b3917b Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 13 十月 2025 10:04:35 +0800
Subject: [PATCH] 导出加参数
---
src/views/login/index.vue | 448 +++++++++++++++++++++++++++++++------------------------
1 files changed, 251 insertions(+), 197 deletions(-)
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 1db2464..ae5111e 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -1,237 +1,291 @@
<template>
- <div class="login-container">
- <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
-
- <div class="title-container">
- <h3 class="title">Login Form</h3>
- </div>
-
- <el-form-item prop="username">
- <span class="svg-container">
- <svg-icon icon-class="user" />
- </span>
- <el-input
- ref="username"
- v-model="loginForm.username"
- placeholder="Username"
- name="username"
- type="text"
- tabindex="1"
- auto-complete="on"
- />
- </el-form-item>
-
- <el-form-item prop="password">
- <span class="svg-container">
- <svg-icon icon-class="password" />
- </span>
- <el-input
- :key="passwordType"
- ref="password"
- v-model="loginForm.password"
- :type="passwordType"
- placeholder="Password"
- name="password"
- tabindex="2"
- auto-complete="on"
- @keyup.enter.native="handleLogin"
- />
- <span class="show-pwd" @click="showPwd">
- <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
- </span>
- </el-form-item>
-
- <el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">Login</el-button>
-
- <div class="tips">
- <span style="margin-right:20px;">username: admin</span>
- <span> password: any</span>
- </div>
-
- </el-form>
- </div>
+ <div class="login-container">
+ <div class="wxLogin">
+ <el-card class="main_wx">
+ <wxlogin :appid="appid" :redirect_uri="redirect_uri" scope="snsapi_login" :href="href" :state="state">
+ </wxlogin>
+ </el-card>
+ </div>
+ </div>
</template>
<script>
-import { validUsername } from '@/utils/validate'
-
+import { validUsername } from "@/utils/validate";
+import wxlogin from "vue-wxlogin";
+import { login } from "@/api/user";
+import { findStaffByUserId } from "@/api/staff";
export default {
- name: 'Login',
- data() {
- const validateUsername = (rule, value, callback) => {
- if (!validUsername(value)) {
- callback(new Error('Please enter the correct user name'))
- } else {
- callback()
- }
- }
- const validatePassword = (rule, value, callback) => {
- if (value.length < 6) {
- callback(new Error('The password can not be less than 6 digits'))
- } else {
- callback()
- }
- }
- return {
- loginForm: {
- username: 'admin',
- password: '111111'
- },
- loginRules: {
- username: [{ required: true, trigger: 'blur', validator: validateUsername }],
- password: [{ required: true, trigger: 'blur', validator: validatePassword }]
- },
- loading: false,
- passwordType: 'password',
- redirect: undefined
- }
- },
- watch: {
- $route: {
- handler: function(route) {
- this.redirect = route.query && route.query.redirect
- },
- immediate: true
- }
- },
- methods: {
- showPwd() {
- if (this.passwordType === 'password') {
- this.passwordType = ''
- } else {
- this.passwordType = 'password'
- }
- this.$nextTick(() => {
- this.$refs.password.focus()
- })
+ name: "Login",
+ components: { wxlogin },
+ data() {
+ const validateUsername = (rule, value, callback) => {
+ if (!validUsername(value)) {
+ callback(new Error("Please enter the correct user name"));
+ } else {
+ callback();
+ }
+ };
+ const validatePassword = (rule, value, callback) => {
+ if (value.length < 6) {
+ callback(new Error("The password can not be less than 6 digits"));
+ } else {
+ callback();
+ }
+ };
+ return {
+ appid: "wx7103925df6236723",
+ redirect_uri: encodeURIComponent("https://dingdang.9village.cn/#/login"),
+ state: "1",
+ href: "data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30KLmltcG93ZXJCb3ggLnRpdGxlIHtkaXNwbGF5OiBub25lO30KLmltcG93ZXJCb3ggLmluZm8ge3dpZHRoOiAyMDBweDt9Ci5zdGF0dXNfaWNvbiB7ZGlzcGxheTogbm9uZX0KLmltcG93ZXJCb3ggLnN0YXR1cyB7dGV4dC1hbGlnbjogY2VudGVyO30g", // 鑷畾涔夋牱寮忛摼鎺�
+ loginForm: {
+ username: "admin",
+ password: "111111",
+ },
+ loginRules: {
+ username: [
+ { required: true, trigger: "blur", validator: validateUsername },
+ ],
+ password: [
+ { required: true, trigger: "blur", validator: validatePassword },
+ ],
+ },
+ loading: false,
+ passwordType: "password",
+ redirect: undefined,
+ };
},
- handleLogin() {
- this.$refs.loginForm.validate(valid => {
- if (valid) {
- this.loading = true
- this.$store.dispatch('user/login', this.loginForm).then(() => {
- this.$router.push({ path: this.redirect || '/' })
- this.loading = false
- }).catch(() => {
- this.loading = false
- })
+ watch: {
+ $route: {
+ handler: function (route) {
+ this.redirect = route.query && route.query.redirect;
+ },
+ immediate: true,
+ },
+ },
+ beforeRouteUpdate(route, from, next) {
+ this.redirect = route.query && route.query.redirect;
+ let code = route.query.code;
+ if (code) {
+ this.getUserDate(code);
} else {
- console.log('error submit!!')
- return false
+ this.getWeChatUrl();
}
- })
- }
- }
-}
+ },
+ mounted() {
+ let code = this.$route.query.code;
+ if (code) {
+ this.getUserDate(code);
+ } else {
+ this.getWeChatUrl();
+ }
+ },
+ methods: {
+ getUserDate(code) {
+ login({
+ code: code,
+ }).then((res) => {
+ localStorage.setItem("user", JSON.stringify(res));
+ localStorage.setItem("staffs", JSON.stringify(res.staffs));
+ localStorage.setItem("selectStaff", JSON.stringify(res.staffs[0]));
+
+ // 鍒ゆ柇鏄惁涓哄彯褰撶鐞嗗憳璐﹀彿
+ var isAdmin = false
+ res.staffs.forEach(o => {
+ if (o.org.orgType === "PLATFORM") {
+ isAdmin = true;
+ }
+ })
+
+ if (isAdmin) {
+ findStaffByUserId(res.id).then(sres => {
+
+ if (sres.data && sres.data.findStaffByUserId) {
+ var staffs = sres.data.findStaffByUserId;
+ localStorage.setItem("staffs", JSON.stringify(staffs));
+ localStorage.setItem("selectStaff", JSON.stringify(staffs[0]));
+
+ this.$EventBus.$emit("updateStaffs", '123');
+ }
+ })
+ }
+
+ this.$router.push("/student");
+ });
+ },
+ getWeChatUrl() {
+ // api.wachatQrUrl().then(res => {
+ // if (res && res.code === '0000') {
+ // const data = res.data
+ // this.appid = data.appId
+ // this.redirect_uri = data.wxCallbackUrl + 'weChatLogin'
+ // }
+ // })
+ },
+ showPwd() {
+ if (this.passwordType === "password") {
+ this.passwordType = "";
+ } else {
+ this.passwordType = "password";
+ }
+ this.$nextTick(() => {
+ this.$refs.password.focus();
+ });
+ },
+ handleLogin() {
+ this.$router.push({ path: "/educational/student" });
+ // this.$refs.loginForm.validate((valid) => {
+ // if (valid) {
+ // this.loading = true;
+ // this.$store
+ // .dispatch("user/login", this.loginForm)
+ // .then(() => {
+ // this.$router.push({ path: this.redirect || "/" });
+ // this.loading = false;
+ // })
+ // .catch(() => {
+ // this.loading = false;
+ // });
+ // } else {
+ // console.log("error submit!!");
+ // return false;
+ // }
+ // });
+ },
+ },
+};
</script>
<style lang="scss">
/* 淇input 鑳屾櫙涓嶅崗璋� 鍜屽厜鏍囧彉鑹� */
/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
-$bg:#283443;
-$light_gray:#fff;
+$bg: #283443;
+$light_gray: #fff;
$cursor: #fff;
@supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
- .login-container .el-input input {
- color: $cursor;
- }
+ .login-container .el-input input {
+ color: $cursor;
+ }
}
/* reset element-ui css */
.login-container {
- .el-input {
- display: inline-block;
- height: 47px;
- width: 85%;
+ background-image: url('../../assets/login_backgroup.png');
+ // background-size: contain;
+ background-size: auto 100%;
+ background-position: center center;
+ /* 鑳屾櫙鍥句笉骞抽摵 */
+ background-repeat: no-repeat;
+ /* 褰撳唴瀹归珮搴﹀ぇ浜庡浘鐗囬珮搴︽椂锛岃儗鏅浘鍍忕殑浣嶇疆鐩稿浜巚iewport鍥哄畾 */
+ background-attachment: fixed;
+ display: flex;
+ align-items: center;
+ justify-content: center;
- input {
- background: transparent;
- border: 0px;
- -webkit-appearance: none;
- border-radius: 0px;
- padding: 12px 5px 12px 15px;
- color: $light_gray;
- height: 47px;
- caret-color: $cursor;
+ .el-input {
+ display: inline-block;
+ height: 47px;
+ width: 85%;
- &:-webkit-autofill {
- box-shadow: 0 0 0px 1000px $bg inset !important;
- -webkit-text-fill-color: $cursor !important;
- }
+ input {
+ background: transparent;
+ border: 0px;
+ -webkit-appearance: none;
+ border-radius: 0px;
+ padding: 12px 5px 12px 15px;
+ color: $light_gray;
+ height: 47px;
+ caret-color: $cursor;
+
+ &:-webkit-autofill {
+ box-shadow: 0 0 0px 1000px $bg inset !important;
+ -webkit-text-fill-color: $cursor !important;
+ }
+ }
}
- }
- .el-form-item {
- border: 1px solid rgba(255, 255, 255, 0.1);
- background: rgba(0, 0, 0, 0.1);
- border-radius: 5px;
- color: #454545;
- }
+ .el-form-item {
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ background: rgba(0, 0, 0, 0.1);
+ border-radius: 5px;
+ color: #454545;
+ }
+}
+
+#weixin {
+ /* background-color: #fcf; */
+ display: flex;
+ justify-content: center;
+ margin-top: -20px;
}
</style>
<style lang="scss" scoped>
-$bg:#2d3a4b;
-$dark_gray:#889aa4;
-$light_gray:#eee;
+$bg: #ffffff;
+$dark_gray: #889aa4;
+$light_gray: #eee;
.login-container {
- min-height: 100%;
- width: 100%;
- background-color: $bg;
- overflow: hidden;
-
- .login-form {
- position: relative;
- width: 520px;
- max-width: 100%;
- padding: 160px 35px 0;
- margin: 0 auto;
+ min-height: 100%;
+ width: 100%;
+ background-color: $bg;
overflow: hidden;
- }
- .tips {
- font-size: 14px;
- color: #fff;
- margin-bottom: 10px;
-
- span {
- &:first-of-type {
- margin-right: 16px;
- }
+ .login-form {
+ position: relative;
+ width: 520px;
+ max-width: 100%;
+ padding: 160px 35px 0;
+ margin: 0 auto;
+ overflow: hidden;
}
- }
- .svg-container {
- padding: 6px 5px 6px 15px;
- color: $dark_gray;
- vertical-align: middle;
- width: 30px;
- display: inline-block;
- }
+ .tips {
+ font-size: 14px;
+ color: #fff;
+ margin-bottom: 10px;
- .title-container {
- position: relative;
-
- .title {
- font-size: 26px;
- color: $light_gray;
- margin: 0px auto 40px auto;
- text-align: center;
- font-weight: bold;
+ span {
+ &:first-of-type {
+ margin-right: 16px;
+ }
+ }
}
- }
- .show-pwd {
- position: absolute;
- right: 10px;
- top: 7px;
- font-size: 16px;
- color: $dark_gray;
- cursor: pointer;
- user-select: none;
- }
+ .svg-container {
+ padding: 6px 5px 6px 15px;
+ color: $dark_gray;
+ vertical-align: middle;
+ width: 30px;
+ display: inline-block;
+ }
+
+ .title-container {
+ position: relative;
+
+ .title {
+ font-size: 26px;
+ color: $light_gray;
+ margin: 0px auto 40px auto;
+ text-align: center;
+ font-weight: bold;
+ }
+ }
+
+ .show-pwd {
+ position: absolute;
+ right: 10px;
+ top: 7px;
+ font-size: 16px;
+ color: $dark_gray;
+ cursor: pointer;
+ user-select: none;
+ }
+}
+
+.main_wx {
+ height: 360px;
+ margin-bottom: 100px;
}
</style>
--
Gitblit v1.8.0