From 09a9c6c647a7c90d6f83663cddac68983b351209 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期二, 03 六月 2025 16:42:17 +0800
Subject: [PATCH] 登录修改
---
src/views/system/user/index.vue | 15 +++-
src/api/login.js | 37 ++++++++++++
src/api/system/user.js | 7 ++
src/store/modules/user.js | 31 +++++++++
src/views/login.vue | 69 +++++++++++++++++++---
5 files changed, 142 insertions(+), 17 deletions(-)
diff --git a/src/api/login.js b/src/api/login.js
index 9f333cb..100d42f 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -57,4 +57,39 @@
method: 'get',
timeout: 20000
})
-}
\ No newline at end of file
+}
+
+// 鐧诲綍鏍¢獙
+export function loginCheck(username, password) {
+ const data = {
+ username,
+ password
+ }
+ return request({
+ url: '/loginCheck',
+ headers: {
+ isToken: false,
+ repeatSubmit: false
+ },
+ method: 'post',
+ data: data
+ })
+}
+
+// 鐧诲綍鏂规硶
+export function loginCheckFactory(username, password, factoryId) {
+ const data = {
+ username,
+ password,
+ factoryId
+ }
+ return request({
+ url: '/loginCheckFactory',
+ headers: {
+ isToken: false,
+ repeatSubmit: false
+ },
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/api/system/user.js b/src/api/system/user.js
index 3a45768..5b5bb50 100644
--- a/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -141,3 +141,10 @@
method: 'get'
})
}
+// 閮ㄩ棬鍒楄〃
+export function userDeptList(userId) {
+ return request({
+ url: '/userDeptList/' + userId,
+ method: 'get',
+ })
+}
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 4b8734c..ba555bc 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,4 +1,4 @@
-import { login, logout, getInfo } from '@/api/login'
+import {login, logout, getInfo, loginCheck, loginCheckFactory} from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { isHttp, isEmpty } from "@/utils/validate"
import defAva from '@/assets/images/profile.jpg'
@@ -70,7 +70,34 @@
reject(error)
})
})
- }
+ },
+ // 鐧诲綍鏍¢獙
+ loginCheck(userInfo) {
+ const username = userInfo.username.trim()
+ const password = userInfo.password
+ return new Promise((resolve, reject) => {
+ loginCheck(username, password).then(res => {
+ resolve(res)
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+ // 閮ㄩ棬鐧诲綍
+ loginCheckFactory(userInfo) {
+ const username = userInfo.username.trim()
+ const password = userInfo.password
+ const factoryId = userInfo.factoryId
+ return new Promise((resolve, reject) => {
+ loginCheckFactory(username, password, factoryId).then(res => {
+ setToken(res.token)
+ this.token = res.token
+ resolve()
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
}
})
diff --git a/src/views/login.vue b/src/views/login.vue
index 437093e..1cc6cfd 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -59,6 +59,27 @@
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">璁颁綇瀵嗙爜</el-checkbox>
</el-form>
+ <el-dialog
+ v-model="modalView"
+ title="鐧诲綍閮ㄩ棬"
+ width="500"
+ :show-close="false">
+ <el-form :model="factoryCommitForm">
+ <el-form-item>
+ <el-select v-model="currentFatoryId">
+ <el-option v-for="item in factoryList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button @click="cancelLogin">鍙栨秷</el-button>
+ <el-button type="primary" @click="factoryCommit()">
+ 纭
+ </el-button>
+ </div>
+ </template>
+ </el-dialog>
<!-- 搴曢儴 -->
<!-- <div class="el-login-footer">-->
<!-- <span>Copyright 漏 2018-2025 ruoyi.vip All Rights Reserved.</span>-->
@@ -67,10 +88,11 @@
</template>
<script setup>
-import { getCodeImg } from "@/api/login"
+import {getCodeImg, loginCheckFactory} from "@/api/login"
import Cookies from "js-cookie"
import { encrypt, decrypt } from "@/utils/jsencrypt"
import useUserStore from '@/store/modules/user'
+import {userDeptList} from "@/api/system/user.js"
const title = import.meta.env.VITE_APP_TITLE
const userStore = useUserStore()
@@ -86,6 +108,10 @@
uuid: ""
})
+const factoryCommitForm = ref({
+ deptId:''
+})
+
const loginRules = {
username: [{ required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" }],
password: [{ required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" }],
@@ -99,6 +125,11 @@
// 娉ㄥ唽寮�鍏�
const register = ref(false)
const redirect = ref(undefined)
+
+const modalView = ref(false)
+
+const factoryList = ref([])
+const currentFatoryId = ref('')
watch(route, (newRoute) => {
redirect.value = newRoute.query && newRoute.query.redirect
@@ -120,15 +151,13 @@
Cookies.remove("rememberMe")
}
// 璋冪敤action鐨勭櫥褰曟柟娉�
- userStore.login(loginForm.value).then(() => {
- const query = route.query
- const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
- if (cur !== "redirect") {
- acc[cur] = query[cur]
- }
- return acc
- }, {})
- router.push({ path: redirect.value || "/", query: otherQueryParams })
+ userStore.loginCheck(loginForm.value).then(res => {
+ // 鏌ヨ鐢ㄦ埛閮ㄩ棬
+ userDeptList(res.data).then(res => {
+ factoryList.value = res.data
+ modalView.value = true
+ })
+
}).catch(() => {
loading.value = false
// 閲嶆柊鑾峰彇楠岃瘉鐮�
@@ -137,6 +166,21 @@
}
})
}
+ })
+}
+
+// 褰撳墠鐧诲綍鍏徃/閮ㄩ棬纭
+function factoryCommit(){
+ loginForm.value.factoryId = currentFatoryId.value
+ userStore.loginCheckFactory(loginForm.value).then(res => {
+ const query = route.query
+ const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
+ if (cur !== "redirect") {
+ acc[cur] = query[cur]
+ }
+ return acc
+ }, {})
+ router.push({ path: redirect.value || "/", query: otherQueryParams })
})
}
@@ -161,6 +205,11 @@
}
}
+function cancelLogin() {
+ modalView.value = false
+ loading.value = false
+}
+
getCode()
getCookie()
</script>
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index a43d890..4120fc3 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -61,7 +61,7 @@
<el-table-column label="鐢ㄦ埛缂栧彿" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
<el-table-column label="鐧诲綍璐﹀彿" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="鐢ㄦ埛鏄电О" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
- <el-table-column label="閮ㄩ棬" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
+ <el-table-column label="閮ㄩ棬" align="center" key="deptNames" prop="deptNames" v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="鎵嬫満鍙风爜" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
<el-table-column label="鐘舵��" align="center" key="status" v-if="columns[5].visible">
<template #default="scope">
@@ -111,8 +111,14 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="褰掑睘鍏徃" prop="deptId">
- <el-tree-select v-model="form.deptId" :data="enabledDeptOptions" :props="{ value: 'id', label: 'label', children: 'children' }" value-key="id" placeholder="璇烽�夋嫨褰掑睘鍏徃" check-strictly />
+ <el-form-item label="褰掑睘鍏徃" prop="deptIds">
+ <el-tree-select
+ v-model="form.deptIds"
+ :data="enabledDeptOptions"
+ :render-after-expand="false"
+ show-checkbox
+ multiple
+ placeholder="璇烽�夋嫨褰掑睘鍏徃" />
</el-form-item>
</el-col>
</el-row>
@@ -280,7 +286,7 @@
rules: {
userName: [{ required: true, message: "鐧诲綍璐﹀彿涓嶈兘涓虹┖", trigger: "blur" }, { min: 2, max: 20, message: "鐧诲綍璐﹀彿闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", trigger: "blur" }],
nickName: [{ required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }],
- deptId: [{ required: true, message: "鍏徃涓嶈兘涓虹┖", trigger: "change" }],
+ deptIds: [{ required: true, message: "鍏徃涓嶈兘涓虹┖", trigger: "change" }],
password: [{ required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, { min: 5, max: 20, message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", trigger: "blur" }, { pattern: /^[^<>"'|\\]+$/, message: "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\\ |", trigger: "blur" }],
email: [{ type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", trigger: ["blur", "change"] }],
phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", trigger: "blur" }]
@@ -507,6 +513,7 @@
roleOptions.value = response.roles
form.value.postIds = response.postIds
form.value.roleIds = response.roleIds
+ form.value.deptIds = response.deptIds
open.value = true
title.value = "淇敼鐢ㄦ埛"
form.password = ""
--
Gitblit v1.9.3