diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts
index 92ec80b..816aeef 100644
--- a/frontend/src/api/client.ts
+++ b/frontend/src/api/client.ts
@@ -1,12 +1,12 @@
import createClient, { type Middleware } from "openapi-fetch";
import useAuthStore from "../composables/store/useAuthStore";
+import type { paths } from "./types/schema"; // generated by openapi-typescript
import {
ForbiddenError,
RequestError,
UnAuthError,
InternalServerError,
-} from "../types/error";
-import type { paths } from "./types/schema"; // generated by openapi-typescript
+} from "@/types/ErrorTypes";
const myMiddleware: Middleware = {
onRequest({ request, options }) {
diff --git a/frontend/src/components/common/Assistant.vue b/frontend/src/components/common/Assistant.vue
index 7977fa5..45a2e72 100644
--- a/frontend/src/components/common/Assistant.vue
+++ b/frontend/src/components/common/Assistant.vue
@@ -71,19 +71,19 @@
-
-
+
-
-
+
import { LoadingIcon } from "@/components/icons";
-import DepartmentUpsertModal from "@/components/modals/DepartmentUpsertModal.vue";
-import UserDeleteModal from "@/components/modals/PopupModal.vue";
-import DepartmentDeleteModal from "@/components/modals/PopupModal.vue";
-import UserUpsertModal from "@/components/modals/UserUpsertModal.vue";
+import UserDeleteModal from "@/components/modals/ConfirmationDialog.vue";
+import DepartmentDeleteModal from "@/components/modals/ConfirmationDialog.vue";
+import DepartmentFormDialog from "@/components/modals/DepartmentFormDialog.vue";
import TableButton from "@/components/tables/TableButton.vue";
import Avatar from "@/components/ui/Avatar.vue";
import InputButton from "@/components/ui/InputButton.vue";
@@ -107,8 +106,8 @@ import { useActionExcStore } from "@/composables/store/useActionExcStore";
import useAlertStore from "@/composables/store/useAlertStore";
import useUserStore from "@/composables/store/useUserStore";
import { useUserUpsert } from "@/composables/user/useUserUpsert";
-import type { DepartmentUpsertModel } from "@/types/department";
-import type { UserUpsertSubmitModel } from "@/types/user";
+import type { DepartmentUpsertModel } from "@/types/DepartmentTypes";
+import type { UserUpsertSubmitModel } from "@/types/UserTypes";
import DOMPurify from "dompurify";
import { Modal, type ModalInterface, initFlowbite } from "flowbite";
import { marked } from "marked";
diff --git a/frontend/src/components/modals/BaseModal.vue b/frontend/src/components/modals/BaseDialog.vue
similarity index 91%
rename from frontend/src/components/modals/BaseModal.vue
rename to frontend/src/components/modals/BaseDialog.vue
index b86cbd5..88a1d37 100644
--- a/frontend/src/components/modals/BaseModal.vue
+++ b/frontend/src/components/modals/BaseDialog.vue
@@ -26,19 +26,19 @@
diff --git a/frontend/src/composables/useErrorHandler.ts b/frontend/src/composables/common/useErrorHandling.ts
similarity index 86%
rename from frontend/src/composables/useErrorHandler.ts
rename to frontend/src/composables/common/useErrorHandling.ts
index adfa901..59fe3ef 100644
--- a/frontend/src/composables/useErrorHandler.ts
+++ b/frontend/src/composables/common/useErrorHandling.ts
@@ -7,20 +7,22 @@ import {
RequestError,
UnAuthError,
ValidationError,
-} from "@/types/error";
+} from "@/types/ErrorTypes";
import { useRouter } from "vue-router";
import { z } from "zod";
/**
- * 错误处理 Composable
+ * 错误处理 Composable - 提供统一的错误处理机制
+ * @returns 包含错误处理函数的对象
*/
-export function useErrorHandler() {
+export function useErrorHandling() {
const router = useRouter();
const { signOut } = useUserAuth();
const alertStore = useAlertStore();
/**
* 处理各类错误,显示对应的提示信息
+ * @param err 错误对象
*/
const handleError = (err: unknown) => {
console.error(err);
@@ -69,4 +71,4 @@ export function useErrorHandler() {
};
}
-export default useErrorHandler;
+export default useErrorHandling;
diff --git a/frontend/src/composables/page.ts b/frontend/src/composables/common/usePagination.ts
similarity index 92%
rename from frontend/src/composables/page.ts
rename to frontend/src/composables/common/usePagination.ts
index 4af7371..8f8d84c 100644
--- a/frontend/src/composables/page.ts
+++ b/frontend/src/composables/common/usePagination.ts
@@ -12,6 +12,11 @@ export interface UsePaginationOptions {
initialTotal?: number;
}
+/**
+ * 分页逻辑Composable - 提供分页相关的状态和操作
+ * @param options 分页选项
+ * @returns 分页状态和方法
+ */
export function usePagination(options: UsePaginationOptions = {}) {
const { initialPage = 1, initialPageSize = 10, initialTotal = 0 } = options;
diff --git a/frontend/src/composables/sort.ts b/frontend/src/composables/common/useSorting.ts
similarity index 63%
rename from frontend/src/composables/sort.ts
rename to frontend/src/composables/common/useSorting.ts
index d80882f..4903059 100644
--- a/frontend/src/composables/sort.ts
+++ b/frontend/src/composables/common/useSorting.ts
@@ -1,23 +1,39 @@
import { computed, ref } from "vue";
-export const useSort = () => {
- const sortFields = ref<
- {
- field: string;
- order: "asc" | "desc" | undefined;
- }[]
- >([]);
+export interface SortField {
+ field: string;
+ order: "asc" | "desc" | undefined;
+}
+/**
+ * 排序逻辑Composable - 提供排序相关的状态和操作
+ * @returns 排序状态和方法
+ */
+export function useSorting() {
+ const sortFields = ref([]);
+
+ /**
+ * 获取指定字段的排序信息
+ * @param field 字段名
+ * @returns 排序字段对象
+ */
const getSortField = (field: string) => {
return sortFields.value.find((item) => item.field === field);
};
+ /**
+ * 排序表达式,用于API请求
+ */
const sortBy = computed(() => {
return sortFields.value.length
? sortFields.value.map((item) => `${item.field}:${item.order}`).join(",")
: undefined;
});
+ /**
+ * 处理字段排序
+ * @param field 字段名
+ */
const handleSort = async (field: string) => {
if (sortFields.value?.find((item) => item.field === field)) {
sortFields.value = sortFields.value?.map((item) =>
@@ -39,4 +55,4 @@ export const useSort = () => {
handleSort,
getSortField,
};
-};
+}
diff --git a/frontend/src/composables/useMobileStyles.ts b/frontend/src/composables/common/useStyleSystem.ts
similarity index 94%
rename from frontend/src/composables/useMobileStyles.ts
rename to frontend/src/composables/common/useStyleSystem.ts
index f1678d8..37c70cc 100644
--- a/frontend/src/composables/useMobileStyles.ts
+++ b/frontend/src/composables/common/useStyleSystem.ts
@@ -1,7 +1,8 @@
/**
- * 移动端样式hook,提供通用的移动端样式类
+ * 样式系统Composable - 提供统一的样式类名
+ * @returns 样式类名集合
*/
-export function useMobileStyles() {
+export function useStyleSystem() {
// 移动端卡片容器样式
const cardContainerClass =
"p-4 bg-white rounded-lg shadow border border-gray-100";
diff --git a/frontend/src/composables/department/useDepartmentUpsert.ts b/frontend/src/composables/department/useDepartmentUpsert.ts
index 7dda2be..aaebf4f 100644
--- a/frontend/src/composables/department/useDepartmentUpsert.ts
+++ b/frontend/src/composables/department/useDepartmentUpsert.ts
@@ -1,5 +1,5 @@
import client from "../../api/client";
-import type { DepartmentUpsertModel } from "../../types/department";
+import type { DepartmentUpsertModel } from "../../types/DepartmentTypes";
export const useDepartmentUpsert = () => {
const upsertDepartment = async (department: DepartmentUpsertModel) => {
diff --git a/frontend/src/composables/permission/usePermissionUpsert.ts b/frontend/src/composables/permission/usePermissionUpsert.ts
index b101769..60cb6f3 100644
--- a/frontend/src/composables/permission/usePermissionUpsert.ts
+++ b/frontend/src/composables/permission/usePermissionUpsert.ts
@@ -1,5 +1,5 @@
import client from "../../api/client";
-import type { PermissionUpsertModel } from "../../types/permission";
+import type { PermissionUpsertModel } from "../../types/PermissionTypes";
const usePermissionUpsert = () => {
const upsertPermission = async (permission: PermissionUpsertModel) => {
diff --git a/frontend/src/composables/user/useUserUpsert.ts b/frontend/src/composables/user/useUserUpsert.ts
index 4b9299d..1a7e8b4 100644
--- a/frontend/src/composables/user/useUserUpsert.ts
+++ b/frontend/src/composables/user/useUserUpsert.ts
@@ -1,5 +1,5 @@
import client from "../../api/client";
-import type { UserUpsertSubmitModel } from "../../types/user";
+import type { UserUpsertSubmitModel } from "../../types/UserTypes";
export const useUserUpsert = () => {
const uploadUserAvatar = async (file: File) => {
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index cb5abf5..a1c6dc7 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -5,7 +5,7 @@ import { createApp } from "vue";
import VueDatePicker from "@vuepic/vue-datepicker";
import App from "./App.vue";
-import useErrorHandler from "./composables/useErrorHandler";
+import useErrorHandling from "./composables/common/useErrorHandling";
import router from "./router";
import "@vuepic/vue-datepicker/dist/main.css";
import "./assets/datepicker.css";
@@ -27,7 +27,7 @@ enableMocking().then(() => {
app.use(createPinia());
app.use(router);
- const { handleError } = useErrorHandler();
+ const { handleError } = useErrorHandling();
app.config.errorHandler = (err, instance, info) => {
handleError(err);
};
diff --git a/frontend/src/router/modules/ai.ts b/frontend/src/router/modules/ai.ts
index f2529c9..0bce41d 100644
--- a/frontend/src/router/modules/ai.ts
+++ b/frontend/src/router/modules/ai.ts
@@ -5,7 +5,7 @@ const aiRoutes: RouteRecordRaw[] = [
{
path: Routes.LLMCONFIGVIEW.path,
name: Routes.LLMCONFIGVIEW.name,
- component: () => import("@/views/LlmConfigView.vue"),
+ component: () => import("@/views/LlmConfigurationPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.READ_LLM_CONFIG_PERMISSION,
diff --git a/frontend/src/router/modules/auth.ts b/frontend/src/router/modules/auth.ts
index 3122e44..66daa35 100644
--- a/frontend/src/router/modules/auth.ts
+++ b/frontend/src/router/modules/auth.ts
@@ -12,7 +12,7 @@ const authRoutes: RouteRecordRaw[] = [
{
path: Routes.LOGIN.path,
name: Routes.LOGIN.name,
- component: () => import("../../views/LoginView.vue"),
+ component: () => import("../../views/LoginPage.vue"),
},
];
diff --git a/frontend/src/router/modules/dashboard.ts b/frontend/src/router/modules/dashboard.ts
index 14ce891..ecb391d 100644
--- a/frontend/src/router/modules/dashboard.ts
+++ b/frontend/src/router/modules/dashboard.ts
@@ -1,8 +1,8 @@
import type { RouteRecordRaw } from "vue-router";
+import Dashboard from "../../components/layout/Dashboard.vue";
import { EPermission, Routes } from "../constants";
import aiRoutes from "./ai";
import userManagementRoutes from "./user";
-import Dashboard from "../../components/layout/Dashboard.vue";
const dashboardRoutes: RouteRecordRaw = {
path: Routes.DASHBOARD.path,
@@ -15,7 +15,7 @@ const dashboardRoutes: RouteRecordRaw = {
{
path: Routes.OVERVIEW.path,
name: Routes.OVERVIEW.name,
- component: () => import("@/views/OverView.vue"),
+ component: () => import("@/views/DashboardPage.vue"),
meta: {
requiresAuth: true,
},
@@ -23,7 +23,7 @@ const dashboardRoutes: RouteRecordRaw = {
{
path: Routes.SETTINGS.path,
name: Routes.SETTINGS.name,
- component: () => import("@/views/SettingsView.vue"),
+ component: () => import("@/views/SystemSettingsPage.vue"),
meta: {
requiresAuth: true,
},
@@ -33,12 +33,12 @@ const dashboardRoutes: RouteRecordRaw = {
{
path: Routes.NOTFOUND.path,
name: Routes.NOTFOUND.name,
- component: () => import("@/views/NotFound.vue"),
+ component: () => import("@/views/NotFoundPage.vue"),
},
{
path: Routes.SCHEDULERVIEW.path,
name: Routes.SCHEDULERVIEW.name,
- component: () => import("@/views/SchedulerView.vue"),
+ component: () => import("@/views/SchedulerManagementPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.READ_SCHEDULER_PERMISSION,
@@ -47,7 +47,7 @@ const dashboardRoutes: RouteRecordRaw = {
{
path: Routes.DEPARTMENTVIEW.path,
name: Routes.DEPARTMENTVIEW.name,
- component: () => import("@/views/DepartmentView.vue"),
+ component: () => import("@/views/DepartmentManagementPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.READ_DEPARTMENT_PERMISSION,
@@ -56,7 +56,7 @@ const dashboardRoutes: RouteRecordRaw = {
{
path: Routes.POSITIONVIEW.path,
name: Routes.POSITIONVIEW.name,
- component: () => import("@/views/PositionView.vue"),
+ component: () => import("@/views/PositionManagementPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.READ_POSITION_PERMISSION,
diff --git a/frontend/src/router/modules/error.ts b/frontend/src/router/modules/error.ts
index 6f8571d..d97f0a3 100644
--- a/frontend/src/router/modules/error.ts
+++ b/frontend/src/router/modules/error.ts
@@ -5,7 +5,7 @@ const errorRoutes: RouteRecordRaw[] = [
{
path: Routes.GLOBAL_NOTFOUND.path,
name: Routes.GLOBAL_NOTFOUND.name,
- component: () => import("../../views/NotFound.vue"),
+ component: () => import("../../views/NotFoundPage.vue"),
},
];
diff --git a/frontend/src/router/modules/user.ts b/frontend/src/router/modules/user.ts
index ce84bc6..b62c564 100644
--- a/frontend/src/router/modules/user.ts
+++ b/frontend/src/router/modules/user.ts
@@ -5,7 +5,7 @@ const userManagementRoutes: RouteRecordRaw[] = [
{
path: Routes.USERVIEW.path,
name: Routes.USERVIEW.name,
- component: () => import("@/views/UserView.vue"),
+ component: () => import("@/views/UserManagementPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.READ_USER_ROLE_PERMISSION,
@@ -14,7 +14,7 @@ const userManagementRoutes: RouteRecordRaw[] = [
{
path: Routes.ROLEVIEW.path,
name: Routes.ROLEVIEW.name,
- component: () => import("@/views/RoleView.vue"),
+ component: () => import("@/views/RoleManagementPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.READ_USER_ROLE_PERMISSION,
@@ -23,7 +23,7 @@ const userManagementRoutes: RouteRecordRaw[] = [
{
path: Routes.BINDROLEVIEW.path,
name: Routes.BINDROLEVIEW.name,
- component: () => import("@/views/BindRoleView.vue"),
+ component: () => import("@/views/UserRoleAssignmentPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.WRITE_USER_ROLE_PERMISSION,
@@ -32,7 +32,7 @@ const userManagementRoutes: RouteRecordRaw[] = [
{
path: Routes.BINDDEPARTMENTVIEW.path,
name: Routes.BINDDEPARTMENTVIEW.name,
- component: () => import("@/views/BindDepartmentView.vue"),
+ component: () => import("@/views/UserDepartmentAssignmentPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.WRITE_USER_ROLE_PERMISSION,
@@ -41,7 +41,7 @@ const userManagementRoutes: RouteRecordRaw[] = [
{
path: Routes.BINDPERMISSIONVIEW.path,
name: Routes.BINDPERMISSIONVIEW.name,
- component: () => import("@/views/BindPermissionView.vue"),
+ component: () => import("@/views/RolePermissionAssignmentPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.WRITE_USER_ROLE_PERMISSION,
@@ -50,7 +50,7 @@ const userManagementRoutes: RouteRecordRaw[] = [
{
path: Routes.PERMISSIONVIEW.path,
name: Routes.PERMISSIONVIEW.name,
- component: () => import("@/views/PermissionView.vue"),
+ component: () => import("@/views/PermissionManagementPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.READ_USER_ROLE_PERMISSION,
@@ -59,7 +59,7 @@ const userManagementRoutes: RouteRecordRaw[] = [
{
path: Routes.BINDPOSITIONVIEW.path,
name: Routes.BINDPOSITIONVIEW.name,
- component: () => import("@/views/BindPositionView.vue"),
+ component: () => import("@/views/UserPositionAssignmentPage.vue"),
meta: {
requiresAuth: true,
hasPermission: EPermission.WRITE_USER_ROLE_PERMISSION,
diff --git a/frontend/src/types/AlertTypes.ts b/frontend/src/types/AlertTypes.ts
new file mode 100644
index 0000000..b8d1f94
--- /dev/null
+++ b/frontend/src/types/AlertTypes.ts
@@ -0,0 +1 @@
+export type AlertLevel = "info" | "warning" | "success" | "error";
diff --git a/frontend/src/types/DepartmentTypes.ts b/frontend/src/types/DepartmentTypes.ts
new file mode 100644
index 0000000..5a87eff
--- /dev/null
+++ b/frontend/src/types/DepartmentTypes.ts
@@ -0,0 +1,15 @@
+export interface DepartmentFormData {
+ id?: number;
+ name: string;
+ parentId?: number | null;
+}
+
+export type DepartmentUpsertModel = DepartmentFormData;
+
+export interface DepartmentData {
+ id: number;
+ name: string;
+ parentId?: number;
+ parentName?: string;
+ isBound?: boolean;
+}
diff --git a/frontend/src/types/ErrorTypes.ts b/frontend/src/types/ErrorTypes.ts
new file mode 100644
index 0000000..0a01e6b
--- /dev/null
+++ b/frontend/src/types/ErrorTypes.ts
@@ -0,0 +1,46 @@
+export class BaseError extends Error {
+ constructor(message: string) {
+ super(message);
+ this.name = this.constructor.name;
+ }
+}
+
+export class ValidationError extends BaseError {}
+
+export class RequestError extends BaseError {
+ status: number;
+
+ constructor(status: number) {
+ super(`请求错误: ${status}`);
+ this.status = status;
+ }
+}
+
+export class UnAuthError extends BaseError {
+ status: number;
+
+ constructor(status: number) {
+ super(`未授权: ${status}`);
+ this.status = status;
+ }
+}
+
+export class ForbiddenError extends BaseError {
+ status: number;
+
+ constructor(status: number) {
+ super(`禁止访问: ${status}`);
+ this.status = status;
+ }
+}
+
+export class InternalServerError extends BaseError {
+ detail?: string;
+ status: number;
+
+ constructor(status: number, detail?: string) {
+ super(`服务器错误: ${status}`);
+ this.status = status;
+ this.detail = detail;
+ }
+}
diff --git a/frontend/src/types/PermissionTypes.ts b/frontend/src/types/PermissionTypes.ts
new file mode 100644
index 0000000..d8e0602
--- /dev/null
+++ b/frontend/src/types/PermissionTypes.ts
@@ -0,0 +1,14 @@
+export interface PermissionFormData {
+ id?: number;
+ name: string;
+ code: string;
+}
+
+export type PermissionUpsertModel = PermissionFormData;
+
+export interface PermissionData {
+ id: number;
+ name: string;
+ code: string;
+ isBound?: boolean;
+}
diff --git a/frontend/src/types/PositionTypes.ts b/frontend/src/types/PositionTypes.ts
new file mode 100644
index 0000000..b2008e5
--- /dev/null
+++ b/frontend/src/types/PositionTypes.ts
@@ -0,0 +1,12 @@
+export interface PositionFormData {
+ id?: number;
+ name: string;
+}
+
+export type PositionUpsertModel = PositionFormData;
+
+export interface PositionData {
+ id: number;
+ name: string;
+ isBound?: boolean;
+}
diff --git a/frontend/src/types/RoleTypes.ts b/frontend/src/types/RoleTypes.ts
new file mode 100644
index 0000000..2c73f71
--- /dev/null
+++ b/frontend/src/types/RoleTypes.ts
@@ -0,0 +1,20 @@
+export interface RoleFormData {
+ id?: number;
+ name: string;
+ code: string;
+}
+
+export type RoleUpsertModel = RoleFormData;
+
+export interface RoleData {
+ id: number;
+ name: string;
+ code: string;
+ isBound?: boolean;
+ permissions?: Array<{
+ id: number;
+ name: string;
+ code: string;
+ isBound?: boolean;
+ }>;
+}
diff --git a/frontend/src/types/UserTypes.ts b/frontend/src/types/UserTypes.ts
new file mode 100644
index 0000000..79377da
--- /dev/null
+++ b/frontend/src/types/UserTypes.ts
@@ -0,0 +1,35 @@
+export interface UserFormData {
+ id?: number;
+ username: string;
+ password?: string;
+ enable: boolean;
+ avatar?: string;
+ realName?: string;
+ age?: number;
+ gender?: number;
+ email?: string;
+ telephone?: string;
+}
+
+export type UserUpsertSubmitModel = UserFormData;
+
+// 用户类型,根据实际情况扩展
+export interface UserData {
+ id: number;
+ username: string;
+ enable: boolean;
+ avatar?: string;
+ realName?: string;
+ age?: number;
+ gender?: number;
+ email?: string;
+ telephone?: string;
+ roles?: Array<{
+ id: number;
+ name: string;
+ code: string;
+ isBound?: boolean;
+ }>;
+}
+
+export type User = UserData | null;
diff --git a/frontend/src/types/department.d.ts b/frontend/src/types/department.d.ts
deleted file mode 100644
index 36dedbf..0000000
--- a/frontend/src/types/department.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface DepartmentUpsertModel {
- id?: number;
- name: string;
- parentId?: number | null;
-}
diff --git a/frontend/src/types/error.ts b/frontend/src/types/error.ts
deleted file mode 100644
index 4893798..0000000
--- a/frontend/src/types/error.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-class ValidationError extends Error {
- constructor(message: string) {
- super(message);
- this.name = "ValidationError";
- }
-}
-
-class HttpError extends Error {
- status: number;
- detail?: string;
- constructor(message: string, status: number, detail?: string) {
- super(message);
- this.name = "HttpError";
- this.status = status;
- this.detail = detail;
- }
-}
-
-class UnAuthError extends HttpError {
- constructor(status: number) {
- super("当前用户身份认证异常", status);
- this.name = "UnAuthError";
- }
-}
-
-class ForbiddenError extends HttpError {
- constructor(status: number) {
- super("您没有对应的权限", status);
- this.name = "ForbiddenError";
- }
-}
-
-class RequestError extends HttpError {
- constructor(status: number) {
- super("请求发生异常,请检查您的输入或稍后再试", status);
- this.name = "RequestError";
- }
-}
-
-class InternalServerError extends HttpError {
- constructor(status: number, detail: string) {
- super(detail, status, detail);
- this.name = "InternalServerError";
- }
-}
-
-export {
- UnAuthError,
- ForbiddenError,
- RequestError,
- InternalServerError,
- ValidationError,
-};
diff --git a/frontend/src/types/permission.d.ts b/frontend/src/types/permission.d.ts
deleted file mode 100644
index d43584e..0000000
--- a/frontend/src/types/permission.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface PermissionUpsertModel {
- id?: number;
- name: string;
- code: string;
-}
diff --git a/frontend/src/types/position.d.ts b/frontend/src/types/position.d.ts
deleted file mode 100644
index 0e858fb..0000000
--- a/frontend/src/types/position.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export interface PositionUpsertModel {
- id?: number;
- name: string;
-}
diff --git a/frontend/src/types/role.d.ts b/frontend/src/types/role.d.ts
deleted file mode 100644
index 3c70923..0000000
--- a/frontend/src/types/role.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface RoleUpsertModel {
- id?: number;
- name: string;
- code: string;
-}
diff --git a/frontend/src/types/user.d.ts b/frontend/src/types/user.d.ts
deleted file mode 100644
index 89ab8be..0000000
--- a/frontend/src/types/user.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-export interface UserUpsertSubmitModel {
- id?: number;
- username: string;
- password?: string;
- enable: boolean;
- avatar?: string;
-}
-
-export type User = UserRolePermissionModel | null;
diff --git a/frontend/src/views/OverView.vue b/frontend/src/views/DashboardPage.vue
similarity index 100%
rename from frontend/src/views/OverView.vue
rename to frontend/src/views/DashboardPage.vue
diff --git a/frontend/src/views/DepartmentView.vue b/frontend/src/views/DepartmentManagementPage.vue
similarity index 93%
rename from frontend/src/views/DepartmentView.vue
rename to frontend/src/views/DepartmentManagementPage.vue
index 0e0897a..ff7493d 100644
--- a/frontend/src/views/DepartmentView.vue
+++ b/frontend/src/views/DepartmentManagementPage.vue
@@ -100,31 +100,31 @@
-
-
+