.env.development
@@ -13,7 +13,7 @@ # çæ§å°å VITE_APP_MONITRO_ADMIN = 'http://localhost:9090/admin/applications' # powerjob æ§å¶å°å°å VITE_APP_POWERJOB_ADMIN = 'http://localhost:7700/' # xxl-job æ§å¶å°å°å VITE_APP_XXL_JOB_ADMIN = 'http://localhost:9100/xxl-job-admin' VITE_APP_PORT = 80 .env.production
@@ -10,8 +10,8 @@ # çæ§å°å VITE_APP_MONITRO_ADMIN = '/admin/applications' # powerjob æ§å¶å°å°å VITE_APP_POWERJOB_ADMIN = '/powerjob' # çæ§å°å VITE_APP_XXL_JOB_ADMIN = '/xxl-job-admin' # ç产ç¯å¢ VITE_APP_BASE_API = '/prod-api' .gitignore
@@ -1,5 +1,4 @@ .DS_Store .history node_modules/ dist/ npm-debug.log* src/api/login.ts
@@ -2,7 +2,6 @@ import { AxiosPromise } from 'axios'; import { LoginData, LoginResult, VerifyCodeResult, TenantInfo } from './types'; import { UserInfo } from '@/api/system/user/types'; import { da } from 'element-plus/es/locale'; /** * @param data {LoginData} @@ -10,9 +9,11 @@ */ export function login(data: LoginData): AxiosPromise<LoginResult> { const params = { ...data, clientId: data.clientId || 'e5cd7e4891bf95d1d19206ce24a7b32e', grantType: data.grantType || 'password' tenantId: data.tenantId, username: data.username.trim(), password: data.password, code: data.code, uuid: data.uuid }; return request({ url: '/auth/login', @@ -57,22 +58,6 @@ }, method: 'get', timeout: 20000 }); } /** * ç¬¬ä¸æ¹ç»å½ * @param source ç¬¬ä¸æ¹ç»å½ç±»å * */ export function callback(data: LoginData): AxiosPromise<any> { const LoginData = { ...data, clientId: 'e5cd7e4891bf95d1d19206ce24a7b32e', grantType: 'social' }; return request({ url: '/auth/social/callback', method: 'post', data: LoginData }); } src/api/system/client/index.ts
ÎļþÒÑɾ³ý src/api/system/client/types.ts
ÎļþÒÑɾ³ý src/api/system/social/auth.ts
ÎļþÒÑɾ³ý src/api/types.ts
@@ -15,24 +15,19 @@ * ç»å½è¯·æ± */ export interface LoginData { tenantId?: string; username?: string; password?: string; tenantId: string; username: string; password: string; rememberMe?: boolean; socialCode?: string, socialState?: string, source?: string, code?: string; uuid?: string; clientId: string; grantType: string; } /** * ç»å½ååº */ export interface LoginResult { access_token: string; token: string; } /** src/assets/icons/svg/gitee.svg
ÎļþÒÑɾ³ý src/layout/components/SocialLogin/index.vue
ÎļþÒÑɾ³ý src/permission.ts
@@ -10,7 +10,7 @@ import usePermissionStore from '@/store/modules/permission'; NProgress.configure({ showSpinner: false }); const whiteList = ['/login', '/register', '/social-login']; const whiteList = ['/login', '/register']; router.beforeEach(async (to, from, next) => { NProgress.start(); src/router/index.ts
@@ -38,11 +38,6 @@ ] }, { path: '/social-login', hidden: true, component: () => import('@/layout/components/SocialLogin/index.vue') }, { path: '/login', component: () => import('@/views/login.vue'), hidden: true @@ -180,6 +175,5 @@ } } }); export default router; src/store/modules/user.ts
@@ -23,8 +23,8 @@ const [err, res] = await to(loginApi(userInfo)); if (res) { const data = res.data; setToken(data.access_token); token.value = data.access_token; setToken(data.token); token.value = data.token; return Promise.resolve(); } return Promise.reject(err); src/types/env.d.ts
@@ -65,7 +65,7 @@ VITE_APP_BASE_URL: string; VITE_APP_CONTEXT_PATH: string; VITE_APP_MONITRO_ADMIN: string; VITE_APP_POWERJOB_ADMIN: string; VITE_APP_XXL_JOB_ADMIN: string; VITE_APP_ENV: string; } interface ImportMeta { src/utils/auth.ts
@@ -4,6 +4,6 @@ export const getToken = () => tokenStorage.value; export const setToken = (access_token: string) => (tokenStorage.value = access_token); export const setToken = (token: string) => (tokenStorage.value = token); export const removeToken = () => (tokenStorage.value = null); src/views/index.vue
@@ -21,7 +21,7 @@ * åå¸å¼é Lock4j 注解éãå·¥å ·é å¤ç§å¤æ ·<br /> * åå¸å¼å¹ç Lock4j åºäºåå¸å¼éå®ç°<br /> * åå¸å¼é¾è·¯è¿½è¸ª SkyWalking æ¯æé¾è·¯è¿½è¸ªãç½æ ¼åæã度éèåãå¯è§å<br /> * åå¸å¼ä»»å¡è°åº¦ PowerJob 髿§è½ é«å¯é ææ©å±<br /> * åå¸å¼ä»»å¡è°åº¦ Xxl-Job 髿§è½ é«å¯é ææ©å±<br /> * æä»¶åå¨ Minio æ¬å°åå¨<br /> * æä»¶åå¨ ä¸çãé¿éãè ¾è®¯ äºåå¨<br /> * çæ§æ¡æ¶ SpringBoot-Admin å ¨æ¹ä½æå¡çæ§<br /> src/views/login.vue
@@ -4,8 +4,7 @@ <h3 class="title">RuoYi-Vue-Pluså¤ç§æ·ç®¡çç³»ç»</h3> <el-form-item prop="tenantId" v-if="tenantEnabled"> <el-select v-model="loginForm.tenantId" filterable placeholder="è¯·éæ©/è¾å ¥å ¬å¸åç§°" style="width: 100%"> <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option> <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"> </el-option> <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template> </el-select> </el-form-item> @@ -15,14 +14,12 @@ </el-input> </el-form-item> <el-form-item prop="password"> <el-input v-model="loginForm.password" type="password" size="large" auto-complete="off" placeholder="å¯ç " @keyup.enter="handleLogin"> <el-input v-model="loginForm.password" type="password" size="large" auto-complete="off" placeholder="å¯ç " @keyup.enter="handleLogin"> <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template> </el-input> </el-form-item> <el-form-item prop="code" v-if="captchaEnabled"> <el-input v-model="loginForm.code" size="large" auto-complete="off" placeholder="éªè¯ç " style="width: 63%" @keyup.enter="handleLogin"> <el-input v-model="loginForm.code" size="large" auto-complete="off" placeholder="éªè¯ç " style="width: 63%" @keyup.enter="handleLogin"> <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template> </el-input> <div class="login-code"> @@ -39,20 +36,6 @@ <router-link class="link-type" :to="'/register'">ç«å³æ³¨å</router-link> </div> </el-form-item> <div style="display: flex;justify-content: flex-end;flex-direction: row;"> <el-button circle> <svg-icon icon-class="qq" @click="doSocialLogin('qq')" /> </el-button> <el-button circle> <svg-icon icon-class="wechat" @click="doSocialLogin('wechat')" /> </el-button> <el-button circle> <svg-icon icon-class="gitee" @click="doSocialLogin('gitee')" /> </el-button> <el-button circle> <svg-icon icon-class="github" @click="doSocialLogin('github')" /> </el-button> </div> </el-form> <!-- åºé¨ --> <div class="el-login-footer"> @@ -63,12 +46,11 @@ <script setup lang="ts"> import { getCodeImg, getTenantList } from '@/api/login'; import { authBinding } from '@/api/system/social/auth'; import Cookies from 'js-cookie'; import { encrypt, decrypt } from '@/utils/jsencrypt'; import { useUserStore } from '@/store/modules/user'; import { LoginData, TenantVO } from '@/api/types'; import { ElForm, FormRules } from 'element-plus'; import { FormRules } from 'element-plus'; import { to } from 'await-to-js'; const userStore = useUserStore(); @@ -181,27 +163,6 @@ } } //æ£æµç§æ·éæ©æ¡çåå watch(() => loginForm.value.tenantId, (val: string) => { Cookies.set("tenantId", loginForm.value.tenantId, { expires: 30 }) }); /** * ç¬¬ä¸æ¹ç»å½ * @param type */ const doSocialLogin = (type: string) => { authBinding(type).then((res: any) => { if (res.code === 200) { window.location.href = res.msg; } else { ElMessage.error(res.msg); } }); }; onMounted(() => { getCode(); initTenantList(); @@ -218,7 +179,6 @@ background-image: url("../assets/images/login-background.jpg"); background-size: cover; } .title { margin: 0px auto 30px auto; text-align: center; @@ -230,39 +190,32 @@ background: #ffffff; width: 400px; padding: 25px 25px 5px 25px; .el-input { height: 40px; input { height: 40px; } } .input-icon { height: 39px; width: 14px; margin-left: 0px; } } .login-tip { font-size: 13px; text-align: center; color: #bfbfbf; } .login-code { width: 33%; height: 40px; float: right; img { cursor: pointer; vertical-align: middle; } } .el-login-footer { height: 40px; line-height: 40px; @@ -275,7 +228,6 @@ font-size: 12px; letter-spacing: 1px; } .login-code-img { height: 40px; padding-left: 12px; src/views/monitor/xxljob/index.vue
ÎļþÃû´Ó src/views/monitor/powerjob/index.vue ÐÞ¸Ä @@ -5,5 +5,5 @@ </template> <script setup lang="ts"> const url = ref(import.meta.env.VITE_APP_POWERJOB_ADMIN); const url = ref(import.meta.env.VITE_APP_XXL_JOB_ADMIN); </script> src/views/system/client/index.vue
ÎļþÒÑɾ³ý src/views/system/menu/index.vue
@@ -180,7 +180,7 @@ </el-col> <el-col :span="12" v-if="form.menuType === 'C'"> <el-form-item> <el-input v-model="form.queryParam" placeholder="请è¾å ¥è·¯ç±åæ°" maxlength="255" /> <el-input v-model="form.query" placeholder="请è¾å ¥è·¯ç±åæ°" maxlength="255" /> <template #label> <span> <el-tooltip content='访é®è·¯ç±çé»è®¤ä¼ éåæ°ï¼å¦ï¼`{"id": 1, "name": "ry"}`' placement="top"> src/views/system/user/profile/index.vue
@@ -55,9 +55,6 @@ <el-tab-pane label="ä¿®æ¹å¯ç " name="resetPwd"> <resetPwd /> </el-tab-pane> <el-tab-pane label="ç¬¬ä¸æ¹åºç¨" name="thirdParty"> <thirdParty :auths="state.auths" /> </el-tab-pane> </el-tabs> </el-card> </el-col> @@ -69,16 +66,13 @@ import userAvatar from "./userAvatar.vue"; import userInfo from "./userInfo.vue"; import resetPwd from "./resetPwd.vue"; import thirdParty from "./thirdParty.vue"; import { getAuthList } from "@/api/system/social/auth"; import { getUserProfile } from "@/api/system/user"; const activeTab = ref("userinfo"); const state = ref<{ user: any; roleGroup: string; postGroup: string; auths:any[]}>({ const state = ref<{ user: any; roleGroup: string; postGroup: string}>({ user: {}, roleGroup: '', postGroup: '', auths: [], postGroup: '' }); const userForm = ref({}); @@ -91,13 +85,7 @@ state.value.postGroup = res.data.postGroup; }; const getAuths = async () => { const res = await getAuthList(); state.value.auths = res.data; }; onMounted(() => { getUser(); getAuths(); }) </script> src/views/system/user/profile/thirdParty.vue
ÎļþÒÑɾ³ý