Browse Source

修改基础页面

v1
超级管理员 3 years ago
parent
commit
4cdb5577f7
  1. BIN
      public/favicon.ico
  2. 4
      src/api/auth/index.ts
  3. 7
      src/api/menu/index.ts
  4. 6
      src/api/user/index.ts
  5. BIN
      src/assets/logo-1.png
  6. BIN
      src/assets/logo.png
  7. 4
      src/lang/package/en.ts
  8. 4
      src/lang/package/zh-cn.ts
  9. 7
      src/layout/components/Navbar.vue
  10. 4
      src/layout/components/Sidebar/Logo.vue
  11. 32
      src/store/modules/permission.ts
  12. 58
      src/store/modules/user.ts
  13. 2390
      src/types/auto-imports.d.ts
  14. 63
      src/types/components.d.ts
  15. 5
      src/utils/request.ts

BIN
public/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 259 KiB

4
src/api/auth/index.ts

@ -17,7 +17,7 @@ export function loginApi(data: LoginData): AxiosPromise<LoginResult> {
}
export function loginApiIng(data: LoginData): AxiosPromise<LoginResult> {
return request({
url: "/base/login",
url: "/kpiapi/base/login",
method: "post",
data: data,
});
@ -44,7 +44,7 @@ export function getCaptchaApi(): AxiosPromise<CaptchaResult> {
}
export function getCaptchaApiIng(): AxiosPromise<CaptchaResult> {
return request({
url: "/base/captcha",
url: "/kpiapi/base/captcha",
method: "post",
});
}

7
src/api/menu/index.ts

@ -11,7 +11,12 @@ export function listRoutes() {
method: 'get'
});
}
export function listRoutesIng() {
return request({
url: '/menus/get_menus_three',
method: 'get'
});
}
/**
*
*

6
src/api/user/index.ts

@ -11,6 +11,12 @@ export function getUserInfo(): AxiosPromise<UserInfo> {
method: 'get'
});
}
export function getUserInfoIng(): AxiosPromise<UserInfo> {
return request({
url: '/user/get_user_cont',
method: 'get'
});
}
/**
*

BIN
src/assets/logo-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
src/assets/logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 108 KiB

4
src/lang/package/en.ts

@ -16,7 +16,7 @@ export default {
navbar: {
dashboard: 'Dashboard',
logout: 'Logout',
document: 'Document',
gitee: 'Gitee'
meinfo: 'Personal Data',
editpassword: 'Change Password'
}
};

4
src/lang/package/zh-cn.ts

@ -16,7 +16,7 @@ export default {
navbar: {
dashboard: '首页',
logout: '注销',
document: '项目文档',
gitee: '码'
meinfo: '个人资料',
editpassword: '修改密码'
}
};

7
src/layout/components/Navbar.vue

@ -88,14 +88,11 @@ function logout() {
<router-link to="/">
<el-dropdown-item>{{ $t("navbar.dashboard") }}</el-dropdown-item>
</router-link>
<a target="_blank" href="https://github.com/hxrui">
<el-dropdown-item>Github</el-dropdown-item>
</a>
<a target="_blank" href="https://gitee.com/haoxr">
<el-dropdown-item>{{ $t("navbar.gitee") }}</el-dropdown-item>
<el-dropdown-item>{{ $t("navbar.editpassword") }}</el-dropdown-item>
</a>
<a target="_blank" href="https://www.cnblogs.com/haoxianrui/">
<el-dropdown-item>{{ $t("navbar.document") }}</el-dropdown-item>
<el-dropdown-item>{{ $t("navbar.meinfo") }}</el-dropdown-item>
</a>
<el-dropdown-item divided @click="logout">
{{ $t("navbar.logout") }}

4
src/layout/components/Sidebar/Logo.vue

@ -22,7 +22,7 @@ const logo = ref(new URL(`../../../assets/logo.png`, import.meta.url).href);
class="h-full w-full flex items-center justify-center"
to="/"
>
<img v-if="settingsStore.sidebarLogo" :src="logo" class="w-5 h-5" />
<img v-if="settingsStore.sidebarLogo" :src="logo" class="w-11 h-11" />
<span v-else class="ml-3 text-white text-sm font-bold"
>恒信高科应用平台</span
>
@ -34,7 +34,7 @@ const logo = ref(new URL(`../../../assets/logo.png`, import.meta.url).href);
class="h-full w-full flex items-center justify-center"
to="/"
>
<img v-if="settingsStore.sidebarLogo" :src="logo" class="w-5 h-5" />
<img v-if="settingsStore.sidebarLogo" :src="logo" class="w-11 h-11" />
<span class="ml-3 text-white text-sm font-bold"
>恒信高科应用平台</span
>

32
src/store/modules/permission.ts

@ -2,7 +2,7 @@ import { RouteRecordRaw } from "vue-router";
import { defineStore } from "pinia";
import { constantRoutes } from "@/router";
import { store } from "@/store";
import { listRoutes } from "@/api/menu";
import { listRoutes,listRoutesIng } from "@/api/menu";
const modules = import.meta.glob("../../views/**/**.vue");
const Layout = () => import("@/layout/index.vue");
@ -85,16 +85,26 @@ export const usePermissionStore = defineStore("permission", () => {
function generateRoutes(roles: string[]) {
return new Promise<RouteRecordRaw[]>((resolve, reject) => {
// 接口获取所有路由
listRoutes()
.then(({ data: asyncRoutes }) => {
// 根据角色获取有访问权限的路由
const accessedRoutes = filterAsyncRoutes(asyncRoutes, roles);
setRoutes(accessedRoutes);
resolve(accessedRoutes);
})
.catch((error) => {
reject(error);
});
// listRoutes()
// .then(({ data: asyncRoutes }) => {
// // 根据角色获取有访问权限的路由
// const accessedRoutes = filterAsyncRoutes(asyncRoutes, roles);
// setRoutes(accessedRoutes);
// resolve(accessedRoutes);
// })
// .catch((error) => {
// reject(error);
// });
listRoutesIng()
.then(({ data: asyncRoutes }) => {
// 根据角色获取有访问权限的路由
const accessedRoutes = filterAsyncRoutes(asyncRoutes, roles);
setRoutes(accessedRoutes);
resolve(accessedRoutes);
})
.catch((error) => {
reject(error);
});
});
}
return { routes, setRoutes, generateRoutes };

58
src/store/modules/user.ts

@ -1,7 +1,7 @@
import { defineStore } from "pinia";
import { loginApi, logoutApi, loginApiIng } from "@/api/auth";
import { getUserInfo } from "@/api/user";
import { getUserInfo,getUserInfoIng } from "@/api/user";
import { resetRouter } from "@/router";
import { store } from "@/store";
@ -45,24 +45,44 @@ export const useUserStore = defineStore("user", () => {
// 获取信息(用户昵称、头像、角色集合、权限集合)
function getInfo() {
return new Promise<UserInfo>((resolve, reject) => {
getUserInfo()
.then(({ data }) => {
if (!data) {
return reject("Verification failed, please Login again.");
}
if (!data.roles || data.roles.length <= 0) {
reject("getUserInfo: roles must be a non-null array!");
}
nickname.value = data.nickname;
avatar.value = data.avatar;
roles.value = data.roles;
perms.value = data.perms;
resolve(data);
})
.catch((error) => {
reject(error);
});
// getUserInfo()
// .then(({ data }) => {
// if (!data) {
// return reject("Verification failed, please Login again.");
// }
// if (!data.roles || data.roles.length <= 0) {
// reject("getUserInfo: roles must be a non-null array!");
// }
// nickname.value = data.nickname;
// avatar.value = data.avatar;
// roles.value = data.roles;
// perms.value = data.perms;
// resolve(data);
// })
// .catch((error) => {
// reject(error);
// });
getUserInfoIng()
.then(({data})=>{
if (!data) {
return reject("验证失败,请重新登录。");
}
if (!data.roles || data.roles.length <= 0) {
reject("获取用户信息:角色必须是非null数组!");
}
nickname.value = data.nickname;
avatar.value = data.avatar;
roles.value = data.roles;
perms.value = data.perms;
resolve(data);
})
.catch((error) => {
reject(error);
});
});
}
// 注销
@ -85,6 +105,8 @@ export const useUserStore = defineStore("user", () => {
function resetToken() {
tokenIng.value = "";
nickname.value = "";
userKey.value = "";
userToken.value = "";
avatar.value = "";
roles.value = [];
perms.value = [];

2390
src/types/auto-imports.d.ts

File diff suppressed because it is too large

63
src/types/components.d.ts

@ -5,31 +5,46 @@
// Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core'
export {};
export {}
declare module "@vue/runtime-core" {
declare module '@vue/runtime-core' {
export interface GlobalComponents {
Breadcrumb: typeof import("./../components/Breadcrumb/index.vue")["default"];
ElButton: typeof import("element-plus/es")["ElButton"];
ElDropdown: typeof import("element-plus/es")["ElDropdown"];
ElDropdownItem: typeof import("element-plus/es")["ElDropdownItem"];
ElDropdownMenu: typeof import("element-plus/es")["ElDropdownMenu"];
ElForm: typeof import("element-plus/es")["ElForm"];
ElFormItem: typeof import("element-plus/es")["ElFormItem"];
ElInput: typeof import("element-plus/es")["ElInput"];
ElTooltip: typeof import("element-plus/es")["ElTooltip"];
GithubCorner: typeof import("./../components/GithubCorner/index.vue")["default"];
Hamburger: typeof import("./../components/Hamburger/index.vue")["default"];
IconSelect: typeof import("./../components/IconSelect/index.vue")["default"];
LangSelect: typeof import("./../components/LangSelect/index.vue")["default"];
MultiUpload: typeof import("./../components/Upload/MultiUpload.vue")["default"];
Pagination: typeof import("./../components/Pagination/index.vue")["default"];
RightPanel: typeof import("./../components/RightPanel/index.vue")["default"];
RouterLink: typeof import("vue-router")["RouterLink"];
RouterView: typeof import("vue-router")["RouterView"];
SingleUpload: typeof import("./../components/Upload/SingleUpload.vue")["default"];
SizeSelect: typeof import("./../components/SizeSelect/index.vue")["default"];
SvgIcon: typeof import("./../components/SvgIcon/index.vue")["default"];
WangEditor: typeof import("./../components/WangEditor/index.vue")["default"];
Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCol: typeof import('element-plus/es')['ElCol']
ElDivider: typeof import('element-plus/es')['ElDivider']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElInput: typeof import('element-plus/es')['ElInput']
ElLink: typeof import('element-plus/es')['ElLink']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
GithubCorner: typeof import('./../components/GithubCorner/index.vue')['default']
Hamburger: typeof import('./../components/Hamburger/index.vue')['default']
IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpClose: typeof import('~icons/ep/close')['default']
IEpSetting: typeof import('~icons/ep/setting')['default']
LangSelect: typeof import('./../components/LangSelect/index.vue')['default']
MultiUpload: typeof import('./../components/Upload/MultiUpload.vue')['default']
Pagination: typeof import('./../components/Pagination/index.vue')['default']
RightPanel: typeof import('./../components/RightPanel/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SingleUpload: typeof import('./../components/Upload/SingleUpload.vue')['default']
SizeSelect: typeof import('./../components/SizeSelect/index.vue')['default']
SvgIcon: typeof import('./../components/SvgIcon/index.vue')['default']
WangEditor: typeof import('./../components/WangEditor/index.vue')['default']
}
}

5
src/utils/request.ts

@ -40,12 +40,13 @@ service.interceptors.response.use(
return response;
}
ElMessage.error(msg || "系统出错");
ElMessage.error(msg || "系统出错111");
return Promise.reject(new Error(msg || "Error"));
},
(error: any) => {
if (error.response.data) {
const { code, msg } = error.response.data;
console.log("响应拦截器",code, msg)
// token 过期,重新登录
if (code === "A0230") {
ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", {
@ -56,7 +57,7 @@ service.interceptors.response.use(
window.location.href = "/";
});
} else {
ElMessage.error(msg || "系统出错");
ElMessage.error(msg || "系统出错222");
}
}
return Promise.reject(error.message);

Loading…
Cancel
Save