feat: 权限系统单体应用改造完成

Former-commit-id: 8d5eaa698b11d420faa46b2c2854da4ccb0b9a1d
This commit is contained in:
horizons
2022-10-23 23:35:43 +08:00
parent cf24d080e5
commit 8746cd3b36
12 changed files with 90 additions and 90 deletions

27
src/api/auth.ts Normal file
View File

@@ -0,0 +1,27 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { LoginFormData } from '@/types/api/user';
/**
* 登录
*/
export function login(data: LoginFormData): AxiosPromise {
return request({
url: '/api/v1/auth/login',
method: 'post',
params: data,
headers: {
Authorization: 'Basic dnVlMy1lbGVtZW50LWFkbWluOnNlY3JldA==' // 客户端信息Base64明文vue3-element-admin:secret
}
});
}
/**
* 注销
*/
export function logout() {
return request({
url: '/api/v1/auth/logout',
method: 'delete'
});
}

View File

@@ -12,7 +12,7 @@ export function listDepartments(
queryParams?: DeptQueryParam queryParams?: DeptQueryParam
): AxiosPromise<DeptItem[]> { ): AxiosPromise<DeptItem[]> {
return request({ return request({
url: '/youlai-system/api/v1/dept', url: '/api/v1/dept',
method: 'get', method: 'get',
params: queryParams params: queryParams
}); });
@@ -23,7 +23,7 @@ export function listDepartments(
*/ */
export function listDeptOptions(): AxiosPromise<Option[]> { export function listDeptOptions(): AxiosPromise<Option[]> {
return request({ return request({
url: '/youlai-system/api/v1/dept/options', url: '/api/v1/dept/options',
method: 'get' method: 'get'
}); });
} }
@@ -35,7 +35,7 @@ export function listDeptOptions(): AxiosPromise<Option[]> {
*/ */
export function getDeptForm(id: string): AxiosPromise<DeptFormData> { export function getDeptForm(id: string): AxiosPromise<DeptFormData> {
return request({ return request({
url: '/youlai-system/api/v1/dept/' + id + '/form', url: '/api/v1/dept/' + id + '/form',
method: 'get' method: 'get'
}); });
} }
@@ -47,7 +47,7 @@ export function getDeptForm(id: string): AxiosPromise<DeptFormData> {
*/ */
export function addDept(data: DeptFormData) { export function addDept(data: DeptFormData) {
return request({ return request({
url: '/youlai-system/api/v1/dept', url: '/api/v1/dept',
method: 'post', method: 'post',
data: data data: data
}); });
@@ -61,7 +61,7 @@ export function addDept(data: DeptFormData) {
*/ */
export function updateDept(id: string, data: DeptFormData) { export function updateDept(id: string, data: DeptFormData) {
return request({ return request({
url: '/youlai-system/api/v1/dept/' + id, url: '/api/v1/dept/' + id,
method: 'put', method: 'put',
data: data data: data
}); });
@@ -74,7 +74,7 @@ export function updateDept(id: string, data: DeptFormData) {
*/ */
export function deleteDept(ids: string) { export function deleteDept(ids: string) {
return request({ return request({
url: '/youlai-system/api/v1/dept/' + ids, url: '/api/v1/dept/' + ids,
method: 'delete' method: 'delete'
}); });
} }

View File

@@ -19,7 +19,7 @@ export function listDictTypePages(
queryParams: DictQueryParam queryParams: DictQueryParam
): AxiosPromise<DictPageResult> { ): AxiosPromise<DictPageResult> {
return request({ return request({
url: '/youlai-system/api/v1/dict/types/pages', url: '/api/v1/dict/types/pages',
method: 'get', method: 'get',
params: queryParams params: queryParams
}); });
@@ -32,7 +32,7 @@ export function listDictTypePages(
*/ */
export function getDictTypeForm(id: number): AxiosPromise<DictTypeFormData> { export function getDictTypeForm(id: number): AxiosPromise<DictTypeFormData> {
return request({ return request({
url: '/youlai-system/api/v1/dict/types/' + id + '/form', url: '/api/v1/dict/types/' + id + '/form',
method: 'get' method: 'get'
}); });
} }
@@ -44,7 +44,7 @@ export function getDictTypeForm(id: number): AxiosPromise<DictTypeFormData> {
*/ */
export function addDictType(data: DictTypeFormData) { export function addDictType(data: DictTypeFormData) {
return request({ return request({
url: '/youlai-system/api/v1/dict/types', url: '/api/v1/dict/types',
method: 'post', method: 'post',
data: data data: data
}); });
@@ -58,7 +58,7 @@ export function addDictType(data: DictTypeFormData) {
*/ */
export function updateDictType(id: number, data: DictTypeFormData) { export function updateDictType(id: number, data: DictTypeFormData) {
return request({ return request({
url: '/youlai-system/api/v1/dict/types/' + id, url: '/api/v1/dict/types/' + id,
method: 'put', method: 'put',
data: data data: data
}); });
@@ -69,7 +69,7 @@ export function updateDictType(id: number, data: DictTypeFormData) {
*/ */
export function deleteDictTypes(ids: string) { export function deleteDictTypes(ids: string) {
return request({ return request({
url: '/youlai-system/api/v1/dict/types/' + ids, url: '/api/v1/dict/types/' + ids,
method: 'delete' method: 'delete'
}); });
} }
@@ -83,7 +83,7 @@ export function listDictItemsByTypeCode(
typeCode: string typeCode: string
): AxiosPromise<Option[]> { ): AxiosPromise<Option[]> {
return request({ return request({
url: '/youlai-system/api/v1/dict/types/' + typeCode + '/items', url: '/api/v1/dict/types/' + typeCode + '/items',
method: 'get' method: 'get'
}); });
} }
@@ -95,7 +95,7 @@ export function listDictItemPages(
queryParams: DictItemQueryParam queryParams: DictItemQueryParam
): AxiosPromise<DictItemPageResult> { ): AxiosPromise<DictItemPageResult> {
return request({ return request({
url: '/youlai-system/api/v1/dict/items/pages', url: '/api/v1/dict/items/pages',
method: 'get', method: 'get',
params: queryParams params: queryParams
}); });
@@ -108,7 +108,7 @@ export function listDictItemPages(
*/ */
export function getDictItemData(id: number): AxiosPromise<DictItemFormData> { export function getDictItemData(id: number): AxiosPromise<DictItemFormData> {
return request({ return request({
url: '/youlai-system/api/v1/dict/items/' + id + '/form', url: '/api/v1/dict/items/' + id + '/form',
method: 'get' method: 'get'
}); });
} }
@@ -120,7 +120,7 @@ export function getDictItemData(id: number): AxiosPromise<DictItemFormData> {
*/ */
export function saveDictItem(data: DictItemFormData) { export function saveDictItem(data: DictItemFormData) {
return request({ return request({
url: '/youlai-system/api/v1/dict/items', url: '/api/v1/dict/items',
method: 'post', method: 'post',
data: data data: data
}); });
@@ -134,7 +134,7 @@ export function saveDictItem(data: DictItemFormData) {
*/ */
export function updateDictItem(id: number, data: DictItemFormData) { export function updateDictItem(id: number, data: DictItemFormData) {
return request({ return request({
url: '/youlai-system/api/v1/dict/items/' + id, url: '/api/v1/dict/items/' + id,
method: 'put', method: 'put',
data: data data: data
}); });
@@ -147,7 +147,7 @@ export function updateDictItem(id: number, data: DictItemFormData) {
*/ */
export function deleteDictItems(ids: string) { export function deleteDictItems(ids: string) {
return request({ return request({
url: '/youlai-system/api/v1/dict/items/' + ids, url: '/api/v1/dict/items/' + ids,
method: 'delete' method: 'delete'
}); });
} }

View File

@@ -9,7 +9,7 @@ export function uploadFile(file: File) {
const formData = new FormData(); const formData = new FormData();
formData.append('file', file); formData.append('file', file);
return request({ return request({
url: '/youlai-system/api/v1/files', url: '/api/v1/files',
method: 'post', method: 'post',
data: formData, data: formData,
headers: { headers: {
@@ -25,7 +25,7 @@ export function uploadFile(file: File) {
*/ */
export function deleteFile(path?: string) { export function deleteFile(path?: string) {
return request({ return request({
url: '/youlai-system/api/v1/files', url: '/api/v1/files',
method: 'delete', method: 'delete',
params: { path: path } params: { path: path }
}); });

View File

@@ -13,7 +13,7 @@ import { AxiosPromise } from 'axios';
*/ */
export function listRoutes() { export function listRoutes() {
return request({ return request({
url: '/youlai-system/api/v1/menus/routes', url: '/api/v1/menus/routes',
method: 'get' method: 'get'
}); });
} }
@@ -27,7 +27,7 @@ export function listMenus(
queryParams: MenuQueryParam queryParams: MenuQueryParam
): AxiosPromise<MenuItem[]> { ): AxiosPromise<MenuItem[]> {
return request({ return request({
url: '/youlai-system/api/v1/menus', url: '/api/v1/menus',
method: 'get', method: 'get',
params: queryParams params: queryParams
}); });
@@ -38,7 +38,7 @@ export function listMenus(
*/ */
export function listMenuOptions(): AxiosPromise<Option[]> { export function listMenuOptions(): AxiosPromise<Option[]> {
return request({ return request({
url: '/youlai-system/api/v1/menus/options', url: '/api/v1/menus/options',
method: 'get' method: 'get'
}); });
} }
@@ -48,7 +48,7 @@ export function listMenuOptions(): AxiosPromise<Option[]> {
*/ */
export function listResources(): AxiosPromise<Resource[]> { export function listResources(): AxiosPromise<Resource[]> {
return request({ return request({
url: '/youlai-system/api/v1/menus/resources', url: '/api/v1/menus/resources',
method: 'get' method: 'get'
}); });
} }
@@ -59,7 +59,7 @@ export function listResources(): AxiosPromise<Resource[]> {
*/ */
export function getMenuDetail(id: string): AxiosPromise<MenuFormData> { export function getMenuDetail(id: string): AxiosPromise<MenuFormData> {
return request({ return request({
url: '/youlai-system/api/v1/menus/' + id, url: '/api/v1/menus/' + id,
method: 'get' method: 'get'
}); });
} }
@@ -71,7 +71,7 @@ export function getMenuDetail(id: string): AxiosPromise<MenuFormData> {
*/ */
export function addMenu(data: MenuFormData) { export function addMenu(data: MenuFormData) {
return request({ return request({
url: '/youlai-system/api/v1/menus', url: '/api/v1/menus',
method: 'post', method: 'post',
data: data data: data
}); });
@@ -85,7 +85,7 @@ export function addMenu(data: MenuFormData) {
*/ */
export function updateMenu(id: string, data: MenuFormData) { export function updateMenu(id: string, data: MenuFormData) {
return request({ return request({
url: '/youlai-system/api/v1/menus/' + id, url: '/api/v1/menus/' + id,
method: 'put', method: 'put',
data: data data: data
}); });
@@ -98,7 +98,7 @@ export function updateMenu(id: string, data: MenuFormData) {
*/ */
export function deleteMenus(ids: string) { export function deleteMenus(ids: string) {
return request({ return request({
url: '/youlai-system/api/v1/menus/' + ids, url: '/api/v1/menus/' + ids,
method: 'delete' method: 'delete'
}); });
} }

View File

@@ -18,7 +18,7 @@ export function listRolePages(
queryParams?: RoleQueryParam queryParams?: RoleQueryParam
): AxiosPromise<RolePageResult> { ): AxiosPromise<RolePageResult> {
return request({ return request({
url: '/youlai-system/api/v1/roles/pages', url: '/api/v1/roles/pages',
method: 'get', method: 'get',
params: queryParams params: queryParams
}); });
@@ -33,7 +33,7 @@ export function listRoleOptions(
queryParams?: RoleQueryParam queryParams?: RoleQueryParam
): AxiosPromise<Option[]> { ): AxiosPromise<Option[]> {
return request({ return request({
url: '/youlai-system/api/v1/roles/options', url: '/api/v1/roles/options',
method: 'get', method: 'get',
params: queryParams params: queryParams
}); });
@@ -46,7 +46,7 @@ export function listRoleOptions(
*/ */
export function getRoleResources(roleId: string): AxiosPromise<RoleResource> { export function getRoleResources(roleId: string): AxiosPromise<RoleResource> {
return request({ return request({
url: '/youlai-system/api/v1/roles/' + roleId + '/resources', url: '/api/v1/roles/' + roleId + '/resources',
method: 'get' method: 'get'
}); });
} }
@@ -61,7 +61,7 @@ export function updateRoleResource(
data: RoleResource data: RoleResource
): AxiosPromise<any> { ): AxiosPromise<any> {
return request({ return request({
url: '/youlai-system/api/v1/roles/' + roleId + '/resources', url: '/api/v1/roles/' + roleId + '/resources',
method: 'put', method: 'put',
data: data data: data
}); });
@@ -74,7 +74,7 @@ export function updateRoleResource(
*/ */
export function getRoleFormDetail(id: number): AxiosPromise<RoleFormData> { export function getRoleFormDetail(id: number): AxiosPromise<RoleFormData> {
return request({ return request({
url: '/youlai-system/api/v1/roles/' + id, url: '/api/v1/roles/' + id,
method: 'get' method: 'get'
}); });
} }
@@ -86,7 +86,7 @@ export function getRoleFormDetail(id: number): AxiosPromise<RoleFormData> {
*/ */
export function addRole(data: RoleFormData) { export function addRole(data: RoleFormData) {
return request({ return request({
url: '/youlai-system/api/v1/roles', url: '/api/v1/roles',
method: 'post', method: 'post',
data: data data: data
}); });
@@ -100,7 +100,7 @@ export function addRole(data: RoleFormData) {
*/ */
export function updateRole(id: number, data: RoleFormData) { export function updateRole(id: number, data: RoleFormData) {
return request({ return request({
url: '/youlai-system/api/v1/roles/' + id, url: '/api/v1/roles/' + id,
method: 'put', method: 'put',
data: data data: data
}); });
@@ -113,7 +113,7 @@ export function updateRole(id: number, data: RoleFormData) {
*/ */
export function deleteRoles(ids: string) { export function deleteRoles(ids: string) {
return request({ return request({
url: '/youlai-system/api/v1/roles/' + ids, url: '/api/v1/roles/' + ids,
method: 'delete' method: 'delete'
}); });
} }

View File

@@ -4,40 +4,15 @@ import {
UserFormData, UserFormData,
UserInfo, UserInfo,
UserPageResult, UserPageResult,
UserQueryParam, UserQueryParam
LoginFormData
} from '@/types/api/user'; } from '@/types/api/user';
/**
* 登录
*/
export function login(data: LoginFormData): AxiosPromise {
return request({
url: '/youlai-auth/oauth2/token',
method: 'post',
params: data,
headers: {
Authorization: 'Basic dnVlMy1lbGVtZW50LWFkbWluOnNlY3JldA==' // 客户端信息Base64明文vue3-element-admin:secret
}
});
}
/**
* 注销
*/
export function logout() {
return request({
url: '/youlai-auth/oauth/logout',
method: 'delete'
});
}
/** /**
* 登录成功后获取用户信息(昵称、头像、权限集合和角色集合) * 登录成功后获取用户信息(昵称、头像、权限集合和角色集合)
*/ */
export function getUserInfo(): AxiosPromise<UserInfo> { export function getUserInfo(): AxiosPromise<UserInfo> {
return request({ return request({
url: '/youlai-system/api/v1/users/me', url: '/api/v1/users/me',
method: 'get' method: 'get'
}); });
} }
@@ -51,7 +26,7 @@ export function listUserPages(
queryParams: UserQueryParam queryParams: UserQueryParam
): AxiosPromise<UserPageResult> { ): AxiosPromise<UserPageResult> {
return request({ return request({
url: '/youlai-system/api/v1/users/pages', url: '/api/v1/users/pages',
method: 'get', method: 'get',
params: queryParams params: queryParams
}); });
@@ -62,9 +37,9 @@ export function listUserPages(
* *
* @param userId * @param userId
*/ */
export function getUserDetail(userId: number): AxiosPromise<UserFormData> { export function getUserFormData(userId: number): AxiosPromise<UserFormData> {
return request({ return request({
url: '/youlai-system/api/v1/users/' + userId, url: '/api/v1/users/' + userId + '/form',
method: 'get' method: 'get'
}); });
} }
@@ -76,7 +51,7 @@ export function getUserDetail(userId: number): AxiosPromise<UserFormData> {
*/ */
export function addUser(data: any) { export function addUser(data: any) {
return request({ return request({
url: '/youlai-system/api/v1/users', url: '/api/v1/users',
method: 'post', method: 'post',
data: data data: data
}); });
@@ -90,7 +65,7 @@ export function addUser(data: any) {
*/ */
export function updateUser(id: number, data: UserFormData) { export function updateUser(id: number, data: UserFormData) {
return request({ return request({
url: '/youlai-system/api/v1/users/' + id, url: '/api/v1/users/' + id,
method: 'put', method: 'put',
data: data data: data
}); });
@@ -104,7 +79,7 @@ export function updateUser(id: number, data: UserFormData) {
*/ */
export function updateUserStatus(id: number, status: number) { export function updateUserStatus(id: number, status: number) {
return request({ return request({
url: '/youlai-system/api/v1/users/' + id + '/status', url: '/api/v1/users/' + id + '/status',
method: 'patch', method: 'patch',
params: { status: status } params: { status: status }
}); });
@@ -118,7 +93,7 @@ export function updateUserStatus(id: number, status: number) {
*/ */
export function updateUserPassword(id: number, password: string) { export function updateUserPassword(id: number, password: string) {
return request({ return request({
url: '/youlai-system/api/v1/users/' + id + '/password', url: '/api/v1/users/' + id + '/password',
method: 'patch', method: 'patch',
params: { password: password } params: { password: password }
}); });
@@ -131,7 +106,7 @@ export function updateUserPassword(id: number, password: string) {
*/ */
export function deleteUsers(ids: string) { export function deleteUsers(ids: string) {
return request({ return request({
url: '/youlai-system/api/v1/users/' + ids, url: '/api/v1/users/' + ids,
method: 'delete' method: 'delete'
}); });
} }
@@ -143,7 +118,7 @@ export function deleteUsers(ids: string) {
*/ */
export function downloadTemplate() { export function downloadTemplate() {
return request({ return request({
url: '/youlai-system/api/v1/users/template', url: '/api/v1/users/template',
method: 'get', method: 'get',
responseType: 'arraybuffer' responseType: 'arraybuffer'
}); });
@@ -157,7 +132,7 @@ export function downloadTemplate() {
*/ */
export function exportUser(queryParams: UserQueryParam) { export function exportUser(queryParams: UserQueryParam) {
return request({ return request({
url: '/youlai-system/api/v1/users/_export', url: '/api/v1/users/_export',
method: 'get', method: 'get',
params: queryParams, params: queryParams,
responseType: 'arraybuffer' responseType: 'arraybuffer'
@@ -175,7 +150,7 @@ export function importUser(deptId: number, roleIds: string, file: File) {
formData.append('deptId', deptId.toString()); formData.append('deptId', deptId.toString());
formData.append('roleIds', roleIds); formData.append('roleIds', roleIds);
return request({ return request({
url: '/youlai-system/api/v1/users/_import', url: '/api/v1/users/_import',
method: 'post', method: 'post',
data: formData, data: formData,
headers: { headers: {

View File

@@ -3,7 +3,9 @@ import { LoginFormData } from '@/types/api/user';
import { UserState } from '@/types/store/user'; import { UserState } from '@/types/store/user';
import { localStorage } from '@/utils/storage'; import { localStorage } from '@/utils/storage';
import { getUserInfo, login, logout } from '@/api/user'; import { login, logout } from '@/api/auth';
import { getUserInfo } from '@/api/user';
import { resetRouter } from '@/router'; import { resetRouter } from '@/router';
const useUserStore = defineStore({ const useUserStore = defineStore({
@@ -32,11 +34,10 @@ const useUserStore = defineStore({
}) })
.then(response => { .then(response => {
console.log('response.data', response.data); console.log('response.data', response.data);
const { access_token, token_type } = response.data; const accessToken = response.data;
const accessToken = token_type + ' ' + access_token;
localStorage.set('token', accessToken); localStorage.set('token', accessToken);
this.token = accessToken; this.token = accessToken;
resolve(access_token); resolve(accessToken);
}) })
.catch(error => { .catch(error => {
reject(error); reject(error);
@@ -74,10 +75,7 @@ const useUserStore = defineStore({
* 注销 * 注销
*/ */
logout() { logout() {
localStorage.remove('token'); return new Promise((resolve, reject) => {
this.RESET_STATE();
/* return new Promise((resolve, reject) => {
logout() logout()
.then(() => { .then(() => {
localStorage.remove('token'); localStorage.remove('token');
@@ -88,7 +86,7 @@ const useUserStore = defineStore({
.catch(error => { .catch(error => {
reject(error); reject(error);
}); });
}); */ });
}, },
/** /**

View File

@@ -26,7 +26,7 @@ const handleDictTypeClick = (row: any) => {
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="8" :xs="24"> <el-col :span="10" :xs="24">
<el-card class="box-card"> <el-card class="box-card">
<template #header> <template #header>
<svg-icon icon-class="dict" /> <svg-icon icon-class="dict" />
@@ -36,7 +36,7 @@ const handleDictTypeClick = (row: any) => {
</el-card> </el-card>
</el-col> </el-col>
<el-col :span="16" :xs="24"> <el-col :span="14" :xs="24">
<el-card class="box-card"> <el-card class="box-card">
<template #header> <template #header>
<svg-icon icon-class="dict_item" /> <svg-icon icon-class="dict_item" />
@@ -44,7 +44,7 @@ const handleDictTypeClick = (row: any) => {
<el-tag type="success" v-if="typeCode" size="small">{{ <el-tag type="success" v-if="typeCode" size="small">{{
typeName typeName
}}</el-tag> }}</el-tag>
<el-tag type="warning" v-else size="small">未选择字典</el-tag> <el-tag type="danger" v-else size="small">未选择字典类型</el-tag>
</template> </template>
<!-- 字典项组件 --> <!-- 字典项组件 -->
<dict-item :typeName="typeName" :typeCode="typeCode" /> <dict-item :typeName="typeName" :typeCode="typeCode" />

View File

@@ -191,7 +191,7 @@ const handleResourceCheckChange = (
}; };
/** /**
* 分配资源(菜单+权限)弹窗 * 资源分配
*/ */
function openRoleResourceDialog(row: RoleItem) { function openRoleResourceDialog(row: RoleItem) {
resourceDialogVisible.value = true; resourceDialogVisible.value = true;
@@ -434,7 +434,7 @@ onMounted(() => {
<!--分配资源弹窗--> <!--分配资源弹窗-->
<el-dialog <el-dialog
:title="'角色【' + checkedRole.name + '】资源分配'" :title="'【' + checkedRole.name + '】资源分配'"
v-model="resourceDialogVisible" v-model="resourceDialogVisible"
width="800px" width="800px"
> >

View File

@@ -18,7 +18,7 @@ import {
// 导入API // 导入API
import { import {
listUserPages, listUserPages,
getUserDetail, getUserFormData,
deleteUsers, deleteUsers,
addUser, addUser,
updateUser, updateUser,
@@ -292,7 +292,7 @@ async function handleUpdate(row: { [key: string]: any }) {
const userId = row.id || state.ids; const userId = row.id || state.ids;
await loadDeptOptions(); await loadDeptOptions();
await loadRoleOptions(); await loadRoleOptions();
getUserDetail(userId).then(({ data }) => { getUserFormData(userId).then(({ data }) => {
formData.value = data; formData.value = data;
}); });
} }

View File

@@ -25,7 +25,7 @@ export default ({ mode }: ConfigEnv): UserConfig => {
open: true, // 运行自动打开浏览器 open: true, // 运行自动打开浏览器
proxy: { proxy: {
[env.VITE_APP_BASE_API]: { [env.VITE_APP_BASE_API]: {
target: 'http://localhost:9999', target: 'http://localhost:8989',
changeOrigin: true, changeOrigin: true,
rewrite: path => rewrite: path =>
path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '') path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')