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. 14
      src/store/modules/permission.ts
  12. 32
      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> { export function loginApiIng(data: LoginData): AxiosPromise<LoginResult> {
return request({ return request({
url: "/base/login", url: "/kpiapi/base/login",
method: "post", method: "post",
data: data, data: data,
}); });
@ -44,7 +44,7 @@ export function getCaptchaApi(): AxiosPromise<CaptchaResult> {
} }
export function getCaptchaApiIng(): AxiosPromise<CaptchaResult> { export function getCaptchaApiIng(): AxiosPromise<CaptchaResult> {
return request({ return request({
url: "/base/captcha", url: "/kpiapi/base/captcha",
method: "post", method: "post",
}); });
} }

7
src/api/menu/index.ts

@ -11,7 +11,12 @@ export function listRoutes() {
method: 'get' 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' 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: { navbar: {
dashboard: 'Dashboard', dashboard: 'Dashboard',
logout: 'Logout', logout: 'Logout',
document: 'Document', meinfo: 'Personal Data',
gitee: 'Gitee' editpassword: 'Change Password'
} }
}; };

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

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

7
src/layout/components/Navbar.vue

@ -88,14 +88,11 @@ function logout() {
<router-link to="/"> <router-link to="/">
<el-dropdown-item>{{ $t("navbar.dashboard") }}</el-dropdown-item> <el-dropdown-item>{{ $t("navbar.dashboard") }}</el-dropdown-item>
</router-link> </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"> <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>
<a target="_blank" href="https://www.cnblogs.com/haoxianrui/"> <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> </a>
<el-dropdown-item divided @click="logout"> <el-dropdown-item divided @click="logout">
{{ $t("navbar.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" class="h-full w-full flex items-center justify-center"
to="/" 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 v-else class="ml-3 text-white text-sm font-bold"
>恒信高科应用平台</span >恒信高科应用平台</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" class="h-full w-full flex items-center justify-center"
to="/" 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 class="ml-3 text-white text-sm font-bold"
>恒信高科应用平台</span >恒信高科应用平台</span
> >

14
src/store/modules/permission.ts

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

32
src/store/modules/user.ts

@ -1,7 +1,7 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import { loginApi, logoutApi, loginApiIng } from "@/api/auth"; import { loginApi, logoutApi, loginApiIng } from "@/api/auth";
import { getUserInfo } from "@/api/user"; import { getUserInfo,getUserInfoIng } from "@/api/user";
import { resetRouter } from "@/router"; import { resetRouter } from "@/router";
import { store } from "@/store"; import { store } from "@/store";
@ -45,13 +45,30 @@ export const useUserStore = defineStore("user", () => {
// 获取信息(用户昵称、头像、角色集合、权限集合) // 获取信息(用户昵称、头像、角色集合、权限集合)
function getInfo() { function getInfo() {
return new Promise<UserInfo>((resolve, reject) => { return new Promise<UserInfo>((resolve, reject) => {
getUserInfo() // getUserInfo()
.then(({ data }) => { // .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) { if (!data) {
return reject("Verification failed, please Login again."); return reject("验证失败,请重新登录。");
} }
if (!data.roles || data.roles.length <= 0) { if (!data.roles || data.roles.length <= 0) {
reject("getUserInfo: roles must be a non-null array!"); reject("获取用户信息:角色必须是非null数组!");
} }
nickname.value = data.nickname; nickname.value = data.nickname;
avatar.value = data.avatar; avatar.value = data.avatar;
@ -62,7 +79,10 @@ export const useUserStore = defineStore("user", () => {
.catch((error) => { .catch((error) => {
reject(error); reject(error);
}); });
}); });
} }
// 注销 // 注销
@ -85,6 +105,8 @@ export const useUserStore = defineStore("user", () => {
function resetToken() { function resetToken() {
tokenIng.value = ""; tokenIng.value = "";
nickname.value = ""; nickname.value = "";
userKey.value = "";
userToken.value = "";
avatar.value = ""; avatar.value = "";
roles.value = []; roles.value = [];
perms.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 // Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core' import '@vue/runtime-core'
export {}; export {}
declare module "@vue/runtime-core" { declare module '@vue/runtime-core' {
export interface GlobalComponents { export interface GlobalComponents {
Breadcrumb: typeof import("./../components/Breadcrumb/index.vue")["default"]; Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default']
ElButton: typeof import("element-plus/es")["ElButton"]; ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElDropdown: typeof import("element-plus/es")["ElDropdown"]; ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElDropdownItem: typeof import("element-plus/es")["ElDropdownItem"]; ElButton: typeof import('element-plus/es')['ElButton']
ElDropdownMenu: typeof import("element-plus/es")["ElDropdownMenu"]; ElCard: typeof import('element-plus/es')['ElCard']
ElForm: typeof import("element-plus/es")["ElForm"]; ElCol: typeof import('element-plus/es')['ElCol']
ElFormItem: typeof import("element-plus/es")["ElFormItem"]; ElDivider: typeof import('element-plus/es')['ElDivider']
ElInput: typeof import("element-plus/es")["ElInput"]; ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElTooltip: typeof import("element-plus/es")["ElTooltip"]; ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
GithubCorner: typeof import("./../components/GithubCorner/index.vue")["default"]; ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
Hamburger: typeof import("./../components/Hamburger/index.vue")["default"]; ElForm: typeof import('element-plus/es')['ElForm']
IconSelect: typeof import("./../components/IconSelect/index.vue")["default"]; ElFormItem: typeof import('element-plus/es')['ElFormItem']
LangSelect: typeof import("./../components/LangSelect/index.vue")["default"]; ElInput: typeof import('element-plus/es')['ElInput']
MultiUpload: typeof import("./../components/Upload/MultiUpload.vue")["default"]; ElLink: typeof import('element-plus/es')['ElLink']
Pagination: typeof import("./../components/Pagination/index.vue")["default"]; ElMenu: typeof import('element-plus/es')['ElMenu']
RightPanel: typeof import("./../components/RightPanel/index.vue")["default"]; ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
RouterLink: typeof import("vue-router")["RouterLink"]; ElRow: typeof import('element-plus/es')['ElRow']
RouterView: typeof import("vue-router")["RouterView"]; ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
SingleUpload: typeof import("./../components/Upload/SingleUpload.vue")["default"]; ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
SizeSelect: typeof import("./../components/SizeSelect/index.vue")["default"]; ElSwitch: typeof import('element-plus/es')['ElSwitch']
SvgIcon: typeof import("./../components/SvgIcon/index.vue")["default"]; ElTooltip: typeof import('element-plus/es')['ElTooltip']
WangEditor: typeof import("./../components/WangEditor/index.vue")["default"]; 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; return response;
} }
ElMessage.error(msg || "系统出错"); ElMessage.error(msg || "系统出错111");
return Promise.reject(new Error(msg || "Error")); return Promise.reject(new Error(msg || "Error"));
}, },
(error: any) => { (error: any) => {
if (error.response.data) { if (error.response.data) {
const { code, msg } = error.response.data; const { code, msg } = error.response.data;
console.log("响应拦截器",code, msg)
// token 过期,重新登录 // token 过期,重新登录
if (code === "A0230") { if (code === "A0230") {
ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", { ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", {
@ -56,7 +57,7 @@ service.interceptors.response.use(
window.location.href = "/"; window.location.href = "/";
}); });
} else { } else {
ElMessage.error(msg || "系统出错"); ElMessage.error(msg || "系统出错222");
} }
} }
return Promise.reject(error.message); return Promise.reject(error.message);

Loading…
Cancel
Save