Files
2026-06-10 11:44:08 +08:00
..
2026-06-01 14:44:39 +08:00
2026-06-10 11:44:08 +08:00
2026-06-10 11:44:08 +08:00
2026-06-10 11:44:08 +08:00
2026-06-10 11:44:08 +08:00

Maintenance View 複製指南

文件目的

src/views/maint/*.vue 是維護頁 demo/example。新增相似維護頁時,可以複製最接近的檔案再替換欄位、資料來源、文案、route 與 component import。

這份指南只說明應該從哪個 view 開始複製,不代表新功能一定要留在 maint 目錄。正式 feature 若有自己的 domain,優先建立 src/views/<feature>src/components/<feature>src/composables/<feature>

共通規則

複製任何維護頁後,至少同步調整:

  • src/router/routes.tspathnamecomponentmeta.layout
  • 頁面標題、查詢欄位、表格欄位與 action 文案
  • form 型別、初始值、驗證規則與送出流程
  • store、service、composable 與 component import
  • 對應的語系、menu、breadcrumb 或 favorites 資料

一般維護頁 route 使用 meta: { layout: 'default' }。不要在 view 內直接 import 或包住 MainLayout.vue

檔案選擇

EditableGrid.vue

適合複製的情況:

  • 頁面主體是可直接編輯的表格
  • view 只需要當 route 入口
  • 主要 UI 與狀態已經能放在單一 feature component

目前這個檔案只載入 @/components/maint/EditableGrid.vue。如果新頁面需要同樣的薄 view 形狀,優先複製這個檔案,再把 component import 換成新的 feature component。

SingleRecord.vue

適合複製的情況:

  • 主畫面是查詢條件加資料表
  • 使用者從資料表開啟單筆資料 dialog
  • dialog 只維護一個主檔表單
  • 需要新增、檢視、修改、刪除、換筆、未儲存變更確認

這是單主檔維護頁範本。若新需求沒有明細檔、巢狀清單或 master-detail 操作,優先從這個檔案開始。

MasterDetailA.vue

適合複製的情況:

  • dialog 需要同時呈現主檔與明細檔
  • desktop 需要主檔 card 搭配側邊明細 panel
  • 明細有獨立編輯狀態,使用者會先選一筆明細再編輯內容
  • mobile 需要在 master/detail panel 之間切換

這個版本的重點是 DetailSidePanelDetailNavigation。如果明細內容比較像側邊抽屜或右側檢視編輯區,優先複製這個檔案。

MasterDetailB.vue

適合複製的情況:

  • dialog 需要主檔加多組可展開的明細群組
  • 明細適合用 collapse/accordion 方式呈現
  • desktop 希望主檔與明細在同一個 full-height card 內操作
  • mobile detail 需要全高明細 panel

這個版本的重點是 DetailCollapseGropusDetailFullHeightPanel。如果明細資料有群組、階層或大量列項,優先複製這個檔案。

MasterDetailC.vue

適合複製的情況:

  • dialog 需要主檔加簡化明細清單
  • 明細操作比 MasterDetailB.vue 輕量
  • desktop 主要是在主檔表單下方操作簡單清單
  • mobile 需要獨立明細 panel,但不需要 full-height collapse 群組

這個版本的重點是 DetailSimpleListCourseMobilePanel。如果明細資料較少、互動較直接,優先複製這個檔案。

不建議直接複製的情況

  • 只新增一般靜態或 dashboard 頁面:參考 src/views/Home.vue
  • 只新增登入頁區塊:修改 src/components/login/*
  • 只新增共用 dialog 或基礎元件:放到適合的 feature component,必要時才放 src/components/base
  • 新頁面屬於正式 domain:複製後應改放到新 domain 目錄,不要把所有正式功能都塞進 maint

複製後的瘦身方向

SingleRecord.vueMasterDetailA.vueMasterDetailB.vueMasterDetailC.vue 仍偏厚。若複製後要長期維護,優先把下列內容拆出:

  • 大段表單欄位拆到 src/components/<feature>
  • 可重用的表格 action、dialog content 或 detail panel 拆到 feature component
  • 表單狀態、CRUD 流程、明細編輯流程拆到 src/composables/<feature>
  • 跨頁共享資料或快取才放到 src/stores