跳到主要内容

邮轮穿舱件管理系统 - 前端技术文档

项目概述

邮轮穿舱件管理系统是一个基于Vue.js 2.x技术栈的后台管理系统,主要用于管理邮轮穿舱件的图片识别和相关业务数据。系统采用现代化的前端架构,集成了路由管理、状态管理、UI组件库等核心功能。

参考文件:

技术栈架构

核心技术栈

graph TD
A[Vue.js 2.6.14] --> B[Vue Router 3.6.5]
A --> C[Vuex 3.6.2]
A --> D[Vuetify 2.6.0]
A --> E[Axios 1.7.5]

B --> F[路由守卫]
C --> G[状态管理]
D --> H[Material Design UI]
E --> I[HTTP请求拦截]

J[JWT认证] --> K[js-cookie]
J --> L[jwt-decode]

M[开发工具] --> N[Vue CLI 5.0.0]
M --> O[Babel 7.12.16]
M --> P[ESLint 7.32.0]

技术栈详情:

类别技术/库版本用途
框架Vue.js2.6.14核心框架
路由Vue Router3.6.5单页应用路由管理
状态管理Vuex3.6.2全局状态管理
UI框架Vuetify2.6.0Material Design UI组件库
HTTP客户端Axios1.7.5RESTful API调用
认证js-cookie + jwt-decode3.0.5 + 4.0.0JWT令牌管理
工具库moment2.30.1日期时间处理
Markdownmarked + markdown-it15.0.7 + 14.1.0Markdown渲染

参考文件:

系统架构设计

整体架构图

flowchart TD
subgraph "前端应用层"
A[App.vue] --> B[路由系统]
A --> C[导航组件]
A --> D[页脚组件]
end

subgraph "业务模块层"
B --> E[首页模块]
B --> F[工件管理]
B --> G[图片管理]
B --> H[调度系统]
B --> I[审计管理]
B --> J[用户管理]
end

subgraph "基础设施层"
K[状态管理] --> L[Vuex Store]
M[HTTP服务] --> N[Axios拦截器]
O[工具函数] --> P[认证工具]
O --> Q[Token管理]
end

E --> K
F --> M
G --> O

核心组件关系

classDiagram
class App {
+Vue实例根组件
+导航栏状态管理
+认证状态检查
+change_drawer_state()
}

class Router {
+路由配置管理
+路由守卫逻辑
+懒加载组件
+beforeEach()
}

class Store {
+navigator_drawer
+authenticated
+user_info
+user_token
+状态变更方法
}

class Utils {
+checkAuthorizaion()
+loadSessionToken()
+getUserInfoFromToken()
+logout()
}

class HTTP {
+axios实例
+请求拦截器
+响应拦截器
+token自动添加
}

App --> Router
App --> Store
Router --> Store
Utils --> Store
HTTP --> Utils

参考文件:

路由系统设计

路由架构图

flowchart TD
A[根路径 /] --> B[首页 /home]

B --> C[工件管理 /workpiece]
B --> D[图片管理 /image]
B --> E[调度系统 /dispatch]
B --> F[审计管理 /audit]
B --> G[用户管理 /user]
B --> H[文章管理 /article]
B --> I[搜索调试 /search]
B --> J[系统调试 /debug]

C --> K[工件编辑 /workpiece/edit/:id]
E --> L[工单创建 /dispatch/ticket/create]
E --> M[工单编辑 /dispatch/ticket/edit/:id]
E --> N[工单查看 /dispatch/ticket/view/:id]

O[认证相关] --> P[登录 /login]
O --> Q[注册 /register]
O --> R[登出 /logout]
O --> S[关于 /about]

T[404页面] --> U[未找到页面 *]

路由守卫逻辑

sequenceDiagram
participant U as 用户
participant R as 路由守卫
participant S as Store状态
participant L as 登录页面

U->>R: 导航到受保护路由
R->>S: 检查认证状态
alt 已认证
S-->>R: authenticated = true
R->>U: 允许访问目标页面
else 未认证
S-->>R: authenticated = false
R->>L: 重定向到登录页
L->>U: 显示登录界面
end

路由配置详情:

路径名称组件认证要求功能描述
/Index重定向到/home应用入口
/homeHomeHomeView.vue系统首页
/workpieceWorkpieceWorkpieceView.vue工件管理
/imageImageImageView.vue图片管理
/dispatchDispatchDataDispatchDataView.vue调度系统
/auditAuditAuditView.vue审计管理
/userUserUserAdmin.vue用户管理
/loginLoginLoginView.vue用户登录
/registerRegisterRegisterView.vue用户注册

参考文件:

状态管理系统

Vuex Store架构

stateDiagram-v2
[*] --> 未认证状态
未认证状态 --> 已认证状态 : 登录成功
已认证状态 --> 未认证状态 : 登出或token过期

state 未认证状态 {
authenticated: false
user_info: null
user_token: null
}

state 已认证状态 {
authenticated: true
user_info: {...}
user_token: "jwt_token"
}

Store模块设计

classDiagram
class StoreState {
+Boolean navigator_drawer
+Boolean authenticated
+Object user_info
+String user_token
}

class StoreMutations {
+set_user_info(state, value)
+set_user_token(state, value)
+set_navigator_drawer(state, value)
+set_authenticated(state, value)
+toggle_navigator_drawer(state)
}

class StoreActions {
+set_user_info({commit}, value)
+set_user_token({commit}, value)
+set_navigator_drawer({commit}, value)
+set_authenticated({commit}, value)
+toggle_navigator_drawer({commit})
}

class StoreGetters {
+get_navigator_drawer(state)
+get_authenticated(state)
+get_user_info(state)
+get_user_token(state)
}

StoreState --> StoreMutations
StoreMutations --> StoreActions
StoreState --> StoreGetters

参考文件:

认证授权系统

认证流程设计

sequenceDiagram
participant U as 用户
participant A as App.vue
participant UTL as Utils工具
participant C as Cookie存储
participant S as Session存储
participant ST as Store状态

U->>A: 访问应用
A->>UTL: 调用checkAuthorizaion()
UTL->>C: 读取token Cookie
alt token存在且有效
C-->>UTL: 返回token
UTL->>S: 存储到sessionStorage
UTL-->>A: 返回true
A->>ST: 设置authenticated=true
else token无效或不存在
UTL-->>A: 返回false
A->>ST: 设置authenticated=false
end

Token管理机制

flowchart TD
A[用户登录] --> B[获取JWT Token]
B --> C[存储到Cookie]
C --> D[应用启动时检查]

D --> E{Token有效?}
E -->|是| F[设置认证状态]
E -->|否| G[跳转到登录页]

F --> H[访问受保护路由]
H --> I[请求自动添加Token]

J[Token过期] --> K[清除存储]
K --> L[重置认证状态]

认证工具函数:

函数名参数返回值功能描述
checkAuthorizaionBoolean检查用户认证状态
loadSessionTokenString/null从sessionStorage加载token
logoutvoid清除所有认证信息
getUserInfoFromTokenObject/null从token解析用户信息

参考文件:

HTTP服务架构

请求拦截流程

sequenceDiagram
participant C as 组件
participant I as 拦截器
participant S as 服务器
participant T as Token管理

C->>I: 发起API请求
I->>T: 获取token
T-->>I: 返回token/null
I->>I: 添加Authorization头
I->>S: 发送请求
S-->>I: 返回响应
I-->>C: 返回数据

HTTP服务配置

// Axios实例配置
const service = axios.create({
baseURL: process.env.VUE_APP_API || "",
withCredentials: false
});

// 请求拦截器
service.interceptors.request.use(config => {
const token = getTokenFromCookie('token');
if (token) {
config.headers['Authorization'] = `Bearer ${token}`;
}
return config;
});

参考文件:

组件架构设计

核心组件关系

graph TD
A[App.vue] --> B[NavigatorPage.vue]
A --> C[FooterPage.vue]
A --> D[RouterView]

B --> E[导航菜单项]
E --> F[首页]
E --> G[用户管理]
E --> H[工件管理]
E --> I[图片管理]
E --> J[调度系统]

D --> K[HomeView.vue]
D --> L[各种业务视图]

导航组件结构

classDiagram
class NavigatorPage {
+Array items
+Boolean drawerSwitch
+linkto(link)
+drawBack()
+computed drawerSwitch
}

class NavigationItem {
+String title
+String link
+String icon
+String color
}

NavigatorPage --> NavigationItem

导航菜单项配置:

标题路径图标颜色功能描述
首页/homemdi-homeprimary系统首页
用户管理/usermdi-account-groupprimary用户管理功能
工件管理/workpiecemdi-boxsuccess工件数据管理
图片管理/imagemdi-imageinfo图片资源管理
调度系统/dispatchmdi-calculatorwarning任务调度管理
审计管理/auditmdi-magnifyred系统审计功能

参考文件:

首页模块设计

首页功能架构

flowchart TD
A[HomeView.vue] --> B[认证状态显示]
A --> C[统计信息展示]
A --> D[快速导航菜单]

B --> E[未登录警告]
B --> F[已登录信息]

C --> G[用户数量统计]
C --> H[任务数量统计]
C --> I[图片数量统计]
C --> J[日志数量统计]

D --> K[用户管理入口]
D --> L[工件管理入口]
D --> M[图片管理入口]
D --> N[调度系统入口]

数据流设计

sequenceDiagram
participant H as HomeView
participant HTTP as HTTP服务
participant API as 后端API
participant S as Store状态

H->>HTTP: GET /stat/countInfo
HTTP->>API: 请求统计信息
API-->>HTTP: 返回统计数据
HTTP-->>H: 更新界面数据

H->>S: 读取认证状态
S-->>H: 返回authenticated状态
alt 已认证
H->>H: 显示用户信息
else 未认证
H->>H: 显示登录提示
end

参考文件:

开发与构建配置

开发环境配置

graph TD
A[Vue CLI 5.0.0] --> B[开发服务器]
A --> C[热重载]
A --> D[ESLint检查]

B --> E[本地开发]
C --> F[实时预览]
D --> G[代码质量]

H[Babel 7.12.16] --> I[ES6+转换]
J[Vuetify Loader] --> K[组件按需加载]

构建配置

项目使用Vue CLI进行构建,主要配置包括:

  • Babel转译配置
  • ESLint代码规范检查
  • Vuetify组件库集成
  • 环境变量管理

参考文件:

部署与运行

Docker部署配置

项目提供Dockerfile用于容器化部署,支持快速的环境搭建和部署。

环境变量配置

系统支持通过环境变量配置API地址:

VUE_APP_API=http://api.example.com

索引

邮轮穿舱件管理系统前端采用现代化的Vue.js技术栈,具备完整的路由管理、状态管理、认证授权和UI组件体系。系统架构清晰,组件设计合理,为邮轮穿舱件管理业务提供了稳定可靠的前端解决方案。

核心优势:

  1. 基于Vue.js生态的成熟技术栈
  2. 完整的认证授权机制
  3. 响应式UI设计
  4. 模块化的组件架构
  5. 完善的开发工具链

该系统为后续功能扩展和维护提供了良好的基础架构支持。