diff --git a/docs/frontend-layering.md b/docs/frontend-layering.md index 26d0fbd..206144c 100644 --- a/docs/frontend-layering.md +++ b/docs/frontend-layering.md @@ -61,11 +61,6 @@ 目前已接近薄 view 的頁面: -- [Dashboard.vue](/home/carl/git/skt-vuetify-templates/src/views/Dashboard.vue) -- [Analysis.vue](/home/carl/git/skt-vuetify-templates/src/views/Analysis.vue) -- [RoleManagement.vue](/home/carl/git/skt-vuetify-templates/src/views/RoleManagement.vue) -- [MenuManagement.vue](/home/carl/git/skt-vuetify-templates/src/views/MenuManagement.vue) -- [DeptManagement.vue](/home/carl/git/skt-vuetify-templates/src/views/DeptManagement.vue) - [EditableGridMnt.vue](/home/carl/git/skt-vuetify-templates/src/views/maint/EditableGridMnt.vue) - [Forbidden.vue](/home/carl/git/skt-vuetify-templates/src/views/errors/Forbidden.vue) - [ServerError.vue](/home/carl/git/skt-vuetify-templates/src/views/errors/ServerError.vue) @@ -92,18 +87,14 @@ ### `src/components` -目前 `components` 已經分成四種角色,不能再用單一規則描述。 +目前 `components` 已經分成三種主要角色,不能再用單一規則描述。 #### 1. 頁面型元件 目前以下元件實際上扮演「page component」: - [PageLogin.vue](/home/carl/git/skt-vuetify-templates/src/components/PageLogin.vue) -- [SKDashboard.vue](/home/carl/git/skt-vuetify-templates/src/components/SKDashboard.vue) -- [SKAnalysis.vue](/home/carl/git/skt-vuetify-templates/src/components/SKAnalysis.vue) -- [SKRoleManagement.vue](/home/carl/git/skt-vuetify-templates/src/components/SKRoleManagement.vue) -- [SKMenuManagement.vue](/home/carl/git/skt-vuetify-templates/src/components/SKMenuManagement.vue) -- [SKDeptManagement.vue](/home/carl/git/skt-vuetify-templates/src/components/SKDeptManagement.vue) +- [PageIndex.vue](/home/carl/git/skt-vuetify-templates/src/components/PageIndex.vue) 這些檔案目前的實際責任是: @@ -117,18 +108,8 @@ 文件原先寫法是「`base` 只放真正通用元件」,但目前專案並不完全符合。 -現在 `components/base` 內同時存在兩類東西: - -- 跨頁可重用元件: - - [SKFormEditDialog.vue](/home/carl/git/skt-vuetify-templates/src/components/base/SKFormEditDialog.vue) - - [SKSearchFilter.vue](/home/carl/git/skt-vuetify-templates/src/components/base/SKSearchFilter.vue) - - [SKTableActionBar.vue](/home/carl/git/skt-vuetify-templates/src/components/base/SKTableActionBar.vue) - - [SKTreeTable.vue](/home/carl/git/skt-vuetify-templates/src/components/base/SKTreeTable.vue) -- 頁面家族的內部子元件: - - `base/login/*` - - `base/dashboard/*` - - `base/analysis/*` - - `base/input_field/*` +現在 `components/base` 內主要保留頁面家族的內部子元件: +- `base/login/*` 因此目前對 `base` 的正確認知應該是: @@ -138,7 +119,6 @@ 目前建議: -- 真正跨頁重用的元件,才放在 `components/base` 根層 - 若元件只服務單一頁面家族,優先放到對應資料夾或 feature/domain 資料夾 #### 3. `components/layouts` @@ -164,7 +144,7 @@ layout 不應承擔: - 頁面專屬業務流程 - 特定 domain 的資料規則 -#### 4. `components/maintenance` +#### 3. `components/maintenance` 這個目錄目前已經是最接近 feature folder 的區域: @@ -264,11 +244,7 @@ layout 不應承擔: 已落地頁面: - `Login` -- `Dashboard` -- `Analysis` -- `RoleManagement` -- `MenuManagement` -- `DeptManagement` +- `Home` 代表目前專案已經存在一種穩定模式: @@ -276,7 +252,7 @@ layout 不應承擔: - page component 負責頁面畫面組裝 - 較細的視覺區塊再拆到內部子元件 -這是目前除 maintenance 外最明確的頁面分層。 +這是目前在一般展示頁面中最明確的頁面分層。 ### 模式 2:`view -> maintenance components + maintenance composables` @@ -319,33 +295,27 @@ layout 不應承擔: - [MasterDetailMntC.vue](/home/carl/git/skt-vuetify-templates/src/views/maint/MasterDetailMntC.vue) - 重新整理: - [Login.vue](/home/carl/git/skt-vuetify-templates/src/views/Login.vue) - - [Home.vue](/home/carl/git/skt-vuetify-templates/src/views/Home.vue) 原因: -- 這些頁面仍保留大量模板、資料轉換或頁面內對話框協調邏輯 +- 這些頁面仍保留大量資料轉換或頁面內對話框協調邏輯 ### 中優先度 - 重新命名或重新安置頁面型元件: - [PageLogin.vue](/home/carl/git/skt-vuetify-templates/src/components/PageLogin.vue) - - [SKDashboard.vue](/home/carl/git/skt-vuetify-templates/src/components/SKDashboard.vue) - - [SKAnalysis.vue](/home/carl/git/skt-vuetify-templates/src/components/SKAnalysis.vue) - - [SKRoleManagement.vue](/home/carl/git/skt-vuetify-templates/src/components/SKRoleManagement.vue) - - [SKMenuManagement.vue](/home/carl/git/skt-vuetify-templates/src/components/SKMenuManagement.vue) - - [SKDeptManagement.vue](/home/carl/git/skt-vuetify-templates/src/components/SKDeptManagement.vue) + - [PageIndex.vue](/home/carl/git/skt-vuetify-templates/src/components/PageIndex.vue) 原因: -- 它們語意上已是頁面型元件,但仍放在 `components` 根目錄 -- 目前仍可接受,但新功能不應沿用這種命名與放置方式擴散 +- 它們仍是頁面型元件,但目前放在 `components` 根目錄 +- 若後續繼續保留 page component 分層,建議改成更清楚的命名與歸位方式 ### 中低優先度 - 清理 `src/stores/stores/*` 重複結構 - 檢查 `components/base/*` 是否要把頁面家族子元件搬到更明確的資料夾 - 檢查空資料夾 `src/components/base/management` 是否仍需要保留 -- 重新評估 [SKSearchFilter.vue](/home/carl/git/skt-vuetify-templates/src/components/base/SKSearchFilter.vue)、[SKFormEditDialog.vue](/home/carl/git/skt-vuetify-templates/src/components/base/SKFormEditDialog.vue)、[SKTreeTable.vue](/home/carl/git/skt-vuetify-templates/src/components/base/SKTreeTable.vue) 是否仍保持跨頁通用 ## 新增或修改檔案時的判斷準則 diff --git a/src/App.vue b/src/App.vue index 53b8e36..7ae5186 100644 --- a/src/App.vue +++ b/src/App.vue @@ -170,23 +170,18 @@ + + diff --git a/src/components/SKAnalysis.vue b/src/components/SKAnalysis.vue deleted file mode 100644 index 3b65f61..0000000 --- a/src/components/SKAnalysis.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/SKDashboard.vue b/src/components/SKDashboard.vue deleted file mode 100644 index 5398632..0000000 --- a/src/components/SKDashboard.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/SKDeptManagement.vue b/src/components/SKDeptManagement.vue deleted file mode 100644 index 2562bab..0000000 --- a/src/components/SKDeptManagement.vue +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - {{ isEnabledStatus(item.status) ? props.statusEnabledText : props.statusDisabledText }} - - - - - - - {{ props.addSubActionText }} - - - {{ props.editActionText }} - - - {{ props.deleteActionText }} - - - - - - - - diff --git a/src/components/SKMenuManagement.vue b/src/components/SKMenuManagement.vue deleted file mode 100644 index 56b5e7a..0000000 --- a/src/components/SKMenuManagement.vue +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - new - - - - - - - - - - - {{ item.permission }} - - - - - - - {{ isEnabledStatus(item.status) ? props.statusEnabledText : props.statusDisabledText }} - - - - - - - {{ props.editActionText }} - - - - - - - - diff --git a/src/components/SKRoleManagement.vue b/src/components/SKRoleManagement.vue deleted file mode 100644 index 12109ab..0000000 --- a/src/components/SKRoleManagement.vue +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - {{ props.editActionText }} - - - - {{ props.deleteActionText }} - - - - - - - - diff --git a/src/components/base/SKFormEditDialog.vue b/src/components/base/SKFormEditDialog.vue deleted file mode 100644 index 7231269..0000000 --- a/src/components/base/SKFormEditDialog.vue +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - {{ props.titleText }} - - - - - - - - - - - - - - - - - - - - {{ props.cancelText }} - - - {{ props.confirmText }} - - - - - - - - diff --git a/src/components/base/SKSearchFilter.vue b/src/components/base/SKSearchFilter.vue deleted file mode 100644 index 5b9a21b..0000000 --- a/src/components/base/SKSearchFilter.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - {{ field.label }} - - - - - - - - - - - - - - - - {{ resetBtnText }} - - - {{ searchBtnText }} - - - {{ expand ? collapseBtnText : expandBtnText }} - - - - - - - - - diff --git a/src/components/base/SKTableActionBar.vue b/src/components/base/SKTableActionBar.vue deleted file mode 100644 index ac14d1b..0000000 --- a/src/components/base/SKTableActionBar.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - {{ title }} - - - - {{ createBtnText }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/base/SKTreeTable.vue b/src/components/base/SKTreeTable.vue deleted file mode 100644 index ab80f46..0000000 --- a/src/components/base/SKTreeTable.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - {{ item[header.key] }} - - - - - - - - - - - - - - diff --git a/src/components/base/analysis/AnalysisBarChart.vue b/src/components/base/analysis/AnalysisBarChart.vue deleted file mode 100644 index 0042bea..0000000 --- a/src/components/base/analysis/AnalysisBarChart.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - {{ title }} - - - - - - - {{ item.label }} - {{ item.value }}% - - - - - - - - - diff --git a/src/components/base/analysis/AnalysisDonutChart.vue b/src/components/base/analysis/AnalysisDonutChart.vue deleted file mode 100644 index f995282..0000000 --- a/src/components/base/analysis/AnalysisDonutChart.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - {{ title }} - - - - - - - - - - {{ data.label }} - 佔比 {{ data.value }}% - - - - - - diff --git a/src/components/base/analysis/AnalysisPieChart.vue b/src/components/base/analysis/AnalysisPieChart.vue deleted file mode 100644 index 50dd404..0000000 --- a/src/components/base/analysis/AnalysisPieChart.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - {{ title }} - - - - - - - - - {{ data.value }}% - {{ data.label }} - - - - - - - {{ data.label }} - - 其他 - - - - - - diff --git a/src/components/base/analysis/AnalysisStatsCard.vue b/src/components/base/analysis/AnalysisStatsCard.vue deleted file mode 100644 index e6f7e4e..0000000 --- a/src/components/base/analysis/AnalysisStatsCard.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - {{ title }} - - {{ value }} - - - - - - {{ label }} - {{ total }} - - - - - - diff --git a/src/components/base/analysis/AnalysisTrendChart.vue b/src/components/base/analysis/AnalysisTrendChart.vue deleted file mode 100644 index ecaa715..0000000 --- a/src/components/base/analysis/AnalysisTrendChart.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - {{ title }} - - - - - {{ filter }} - - - - - - - - - {{ item.value }} - - - - - {{ 6 + i }}:00 - - - - - - - - - - diff --git a/src/components/base/dashboard/DashboardAnnouncements.vue b/src/components/base/dashboard/DashboardAnnouncements.vue deleted file mode 100644 index a2675e7..0000000 --- a/src/components/base/dashboard/DashboardAnnouncements.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - {{ title }} - - - {{ viewMoreText }} - - - - - - - {{ item.author[0] }} - - - - - - {{ item.title }} - - - - {{ item.author }} - {{ item.time }} - - - - - - - diff --git a/src/components/base/dashboard/DashboardApps.vue b/src/components/base/dashboard/DashboardApps.vue deleted file mode 100644 index caaed2d..0000000 --- a/src/components/base/dashboard/DashboardApps.vue +++ /dev/null @@ -1,80 +0,0 @@ - - - - {{ title }} - - - {{ viewAllText }} - - - - - - - - - {{ app.name }} - - - {{ app.desc }} - - - {{ app.group }} - {{ app.date }} - - - - - - - - - - - diff --git a/src/components/base/dashboard/DashboardChart.vue b/src/components/base/dashboard/DashboardChart.vue deleted file mode 100644 index 1a116f3..0000000 --- a/src/components/base/dashboard/DashboardChart.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - {{ title }} - - - - - - {{ value }}% - {{ subtitle }} - - - - - - - {{ primaryLabel }} - - - - {{ secondaryLabel }} - - - - - - - diff --git a/src/components/base/dashboard/DashboardHeader.vue b/src/components/base/dashboard/DashboardHeader.vue deleted file mode 100644 index 5c7b4ca..0000000 --- a/src/components/base/dashboard/DashboardHeader.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - {{ greetingTitle }} - - - {{ weatherInfo }} - - - - - - - {{ todoLabel }} - {{ todo }} - - - {{ projectsLabel }} - {{ projects }} - - - {{ teamLabel }} - {{ team }} - - - - - - - diff --git a/src/components/base/dashboard/DashboardQuickNav.vue b/src/components/base/dashboard/DashboardQuickNav.vue deleted file mode 100644 index cc245ed..0000000 --- a/src/components/base/dashboard/DashboardQuickNav.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - {{ title }} - - - - - - - - {{ nav.title }} - - - - - - - diff --git a/src/components/base/dashboard/DashboardTodoList.vue b/src/components/base/dashboard/DashboardTodoList.vue deleted file mode 100644 index c451779..0000000 --- a/src/components/base/dashboard/DashboardTodoList.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - {{ title }} - - - - - - - - {{ todo.title }} - - - {{ todo.due }} - - - - - - - diff --git a/src/components/base/input_field/SKDatePicker.vue b/src/components/base/input_field/SKDatePicker.vue deleted file mode 100644 index bd452e8..0000000 --- a/src/components/base/input_field/SKDatePicker.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/src/components/base/input_field/SKSelectField.vue b/src/components/base/input_field/SKSelectField.vue deleted file mode 100644 index 4e7289e..0000000 --- a/src/components/base/input_field/SKSelectField.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/src/components/base/input_field/SKTextField.vue b/src/components/base/input_field/SKTextField.vue deleted file mode 100644 index bd452e8..0000000 --- a/src/components/base/input_field/SKTextField.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/src/router/routes.ts b/src/router/routes.ts index be21c1c..b0ce26e 100644 --- a/src/router/routes.ts +++ b/src/router/routes.ts @@ -19,30 +19,6 @@ export const routes: RouteRecordRaw[] = [ component: () => import('@/views/Login.vue'), meta: { layout: 'none', guestOnly: true }, }, - { - path: '/role-management', - name: 'role-management', - component: () => import('@/views/RoleManagement.vue'), - meta: { layout: 'default' }, - }, - { - path: '/menu-management', - name: 'menu-management', - component: () => import('@/views/MenuManagement.vue'), - meta: { layout: 'default' }, - }, - { - path: '/dept-management', - name: 'dept-management', - component: () => import('@/views/DeptManagement.vue'), - meta: { layout: 'default' }, - }, - { - path: '/analysis', - name: 'analysis', - component: () => import('@/views/Analysis.vue'), - meta: { layout: 'default' }, - }, { path: '/single-record-maintenance', name: 'single-record-maintenance', @@ -73,12 +49,6 @@ export const routes: RouteRecordRaw[] = [ component: () => import('@/views/maint/EditableGridMnt.vue'), meta: { layout: 'default' }, }, - { - path: '/dashboard', - name: 'dashboard', - component: () => import('@/views/Dashboard.vue'), - meta: { layout: 'default' }, - }, { path: '/:fncId([0-9A-Z]{5,6})', name: 'fnc-page', diff --git a/src/views/Analysis.vue b/src/views/Analysis.vue deleted file mode 100644 index 6fc2e9a..0000000 --- a/src/views/Analysis.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue deleted file mode 100644 index 5a3bab9..0000000 --- a/src/views/Dashboard.vue +++ /dev/null @@ -1,132 +0,0 @@ - - - - - diff --git a/src/views/DeptManagement.vue b/src/views/DeptManagement.vue deleted file mode 100644 index 8055edb..0000000 --- a/src/views/DeptManagement.vue +++ /dev/null @@ -1,188 +0,0 @@ - - - - - diff --git a/src/views/Home.vue b/src/views/Home.vue index c1c2a33..da03b82 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -1,141 +1,19 @@ - - - - - 👋 - - - 歡迎使用校務資訊系統 - - 使用頂部搜尋框快速找到功能,或從左側選單瀏覽所有系統模組 - - - - - - 📰 最新消息 - - - - - - - - - {{ resolveNewsItem(wrapped).date }} - {{ resolveNewsItem(wrapped).month }} - - - - {{ resolveNewsItem(wrapped).title }} - - NEW - - - - {{ resolveNewsItem(wrapped).desc }} - - - - - {{ resolveNewsItem(wrapped).dept }} - - - - {{ resolveNewsItem(wrapped).views }} 次瀏覽 - - - - - - - - - - - - - - ✉️ - - - 訊息中心 - 12 筆未讀 - - - 查看全部 → - - - - 🚀 快速存取 - - - - {{ item.icon }} - {{ item.title }} - - - - - - - - - - - {{ selectedNews.title }} - - - {{ selectedNews.month }} {{ selectedNews.date }} · {{ selectedNews.dept }} · - {{ selectedNews.views }} 次瀏覽 - - - {{ selectedNews.desc }} - - - 關閉 - - - - + - - diff --git a/src/views/MenuManagement.vue b/src/views/MenuManagement.vue deleted file mode 100644 index 9502249..0000000 --- a/src/views/MenuManagement.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - - - diff --git a/src/views/RoleManagement.vue b/src/views/RoleManagement.vue deleted file mode 100644 index 2c56a2b..0000000 --- a/src/views/RoleManagement.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - - -