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