This commit is contained in:
2026-03-31 15:46:15 +08:00
parent 654724a213
commit 6d79836682
68 changed files with 3076 additions and 4488 deletions
+1 -1
View File
@@ -13,5 +13,5 @@
}
]
},
"lastUpdated": 1774931057335
"lastUpdated": 1774942956287
}
+70
View File
@@ -6,3 +6,73 @@
- 用户确认:主力前端开发目录是 `frontend/ops_vue_js`JS 版,Tabler UI
- `frontend/ops_vue/`TypeScript 版)为旧目录已弃用
- MEMORY.md 已更新为正确的前端目录信息
## 前端整体重构 ✅
- **方案**:整体翻新(方案 C),新建文件替换旧代码
- **构建结果**6176 modules transformed, 0 errors, 7.23s
### 新建基础设施层
- `src/api/index.js` — axios 实例 + 请求/响应拦截器 + async/await 封装
- `src/api/auth.js` — 认证相关 API(登录/注册/修改密码/更新信息等)
- `src/api/purchase.js` — 采购相关 API
- `src/stores/user.js` — 精简的 user storecomputed getter、async actions
- `src/stores/toast.js` — 全局 Toast 通知 store
- `src/composables/usePageTitle.js` — 自动页面标题(一行搞定,替代三件套)
- `src/composables/index.js` — useValidation + isValidEmail
### 新建布局和组件
- `src/layouts/DefaultLayout.vue` — 带 Header + Footer 的主布局
- `src/layouts/AuthLayout.vue` — 登录/注册的全屏居中布局
- `src/components/AppHeader.vue` — 导航栏(Tabler Icons 替代内联 SVG
- `src/components/AppFooter.vue` — 页脚
- `src/components/AppToast.vue` — 全局 Toast 通知(替代 MyOffcanvas
- `src/components/SettingNav.vue` — 设置侧边导航
### 重写的页面
- 认证:LoginView / RegisterView / ForgotPasswordView
- 设置:AccountView / ContactView / SecurityView
- 采购:PurchaseList / AddOrder / ShowOrder
- 其他:HomeView / ScheduleView / WarehouseView / AdminView / NotFoundView
### 核心改进
1. **API 层**:回调地狱 → async/await,统一拦截器处理 cookie 注入和错误
2. **响应式**DOM 操作 `ref.value.classList.add()``v-model` + `is-invalid` class
3. **Auth guard**:每个页面手动检查 → Router beforeEach 统一守卫
4. **页面标题**:三件套复制5遍 → `usePageTitle(key)` 一行
5. **图标**:内联 SVG → `@tabler/icons-vue` 组件
6. **命名**HeardMain → AppHeader, myfunc → composables 等
7. **布局分离**:认证页和主站页使用不同 Layout
### 删除的旧文件
- `my_network_func.js`, `myfunc.js`
- `HeardMain.vue`, `FooterMain.vue`, `MyOffcanvas.vue`, `settingNavigation.vue`
- `HelloWorld.vue`, `TheWelcome.vue`, `WelcomeItem.vue`
- 所有旧视图文件(loginView/registerView/forgotPassword/adminView/warehouse/test/404/scheduleView 等)
## CSS 框架迁移:Bootstrap/Tabler → Tailwind CSS v4 ✅
- **安装**`tailwindcss` + `@tailwindcss/vite`Vite 插件方式)
- **卸载**`@tabler/core``bootstrap`
- **构建结果**6160 modules transformed, 0 errors, 8.84s
- CSS 总大小:~56 kB(之前 Tabler 整包 200+ kB),Tree-shaking 后更小
### 改动的文件(全部从 Bootstrap class 替换为 Tailwind class
- `vite.config.js` — 添加 tailwindcss 插件
- `src/assets/main.css``@import "tailwindcss"` 替换 Tabler CSS
- `src/main.js` — 移除 Tabler CSS 导入
- `src/layouts/` — DefaultLayout/AuthLayout
- `src/components/` — AppHeader/AppFooter/AppToast/SettingNav/imageCropper
- `src/views/` — 所有 15 个视图文件全部重写
- 主题切换改用 `document.documentElement.classList.toggle('dark')`
- 所有表单控件、按钮、卡片、表格、分页等均用 Tailwind class 重写
## 字符损坏修复(第二次) ✅
- 20 个 Vue 文件因批量字符替换脚本导致损坏(`a→n`, `i→l`, `s→n` 等偏移)
- 前一 session 已修复 4 个组件文件(dateTimePicker/tagadder/useDropzone/imageCropper
- 本次 session 修复了剩余 14 个视图文件:
- Auth: LoginView, RegisterView, ForgotPasswordView
- 基础: HomeView, NotFoundView
- 占位: WarehouseView, AdminView, ScheduleViewFullCalendar
- Settings: AccountView, ContactView, SecurityView
- Purchase: PurchaseList, AddOrder, ShowOrder
- **构建验证**6169 modules, 0 errors, 15.73s ✅
- 修复了 `IconFileTypeText` 不存在于 `@tabler/icons-vue` 的导入错误
+24 -9
View File
@@ -19,23 +19,24 @@
- **框架**Vue 3 + JavaScript(非 TypeScript
- **路由**Vue RouterHash 模式)
- **构建工具**Vite 7
- **UI 框架**TablerBootstrap 5 + @tabler/core
- **CSS 框架**Tailwind CSS v4@tailwindcss/vite 插件
- **图标**@tabler/icons-vue
- **状态管理**Pinia
- **国际化**vue-i18n
- **日期选择**flatpickr / litepicker
- **文件上传**FilePond
- **图片裁剪**CropperJS / @cropper/*
- **图片裁剪**CropperJS@cropper/elements
- **日历**FullCalendar(含 daygrid/timegrid/list/interaction
- **其他组件**MyOffcanvas、imageCropper、datePicker、dateTimePicker、tagadder、useDropzone 等
- **其他组件**imageCropper、tagadder、dateTimePicker、useDropzone 等
- ~~**UI 框架**TablerBootstrap 5 + @tabler/core~~ 已弃用(2026-03-31 迁移至 Tailwind
> 注意:`frontend/ops_vue/`TypeScript 版)是旧目录,已弃用
### 前端页面路由(ops_vue_js
- `/` — 首页(HomeView
- `/login` — 登录
- `/register` — 注册
- `/forgot_password` — 找回密码
- `/login` — 登录AuthLayout
- `/register` — 注册AuthLayout
- `/forgot_password` — 找回密码AuthLayout
- `/admin` — 管理后台
- `/schedule` — 日程/排班(FullCalendar
- `/purchase` — 采购订单列表
@@ -71,11 +72,25 @@
## 项目现状(2026-03-31
- 后端基础架构完整,采购模块已有基础实现
- 前端 `ops_vue_js` 目录是主力开发目录(JS 版 Vue3Tabler UI
- 已有页面:登录/注册/采购/日程/仓库/设置等
- 前端 `ops_vue_js` 目录是主力开发目录(Vue 3 + Tailwind CSS v4
- **已完成前端整体重构**API 层 async/await、Router 导航守卫、composables、布局分离
- **已完成 Tabler → Tailwind CSS v4 迁移**
- **已修复所有字符损坏文件**(20 个 Vue 文件,因批量脚本偏移错误)
- 所有页面构建通过,6169 modules, 0 errors
- 前端构建产物放在 `backend/dist/` 供后端 serve
- `frontend/ops_vue/`TypeScript 版)是旧目录,已弃用
- 目录名原为 `frontent`(拼写错误),实际文件系统路径为 `frontend`
## 经验教训
- **批量字符替换脚本危险**:需在源码上使用前先备份,并限定替换范围
- **`@tabler/icons-vue` 不包含所有图标**:如 `IconFileTypeText` 不存在,使用前需确认
## 前端重构后架构(2026-03-31
- **API 层**`src/api/` — axios 实例 + 拦截器,async/await 封装
- **Composables**`src/composables/` — usePageTitle、useValidation、isValidEmail
- **Stores**`src/stores/user.js`(精简)、`src/stores/toast.js`(全局通知)
- **布局**`src/layouts/DefaultLayout.vue`(主站)、`AuthLayout.vue`(认证页)
- **公共组件**AppHeader、AppFooter、AppToast、SettingNav
- **命名规范**PascalCase 文件名,camelCase 函数名
## 开发规范
- API 请求统一携带 `userCookieValue` 做身份验证