- Pluck ids from selectedRows before any state mutation
- clearSelection() + manual selectedRows.value = [] to ensure button disables immediately
- Both calls are needed: clearSelection updates UI, manual reset ensures reactivity
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove batch toolbar from template (fixes toolbar not hiding after delete)
- Restore selectAll/selectNone/batchDelete buttons in Fast-CRUD actionbar
- batchDelete: fix order — pluck ids BEFORE clearing selectedRows
- selectAll: remove unnecessary nextTick, toggleAllSelection then sync selectedRows
- Template simplifies to just fs-crud + pagination-right total count
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove selectAll/selectNone/batchDelete from actionbar (show: false), batch ops now unified in template toolbar
- Add handleSelectAll/handleSelectNone to toolbar with toggleAllSelection/clearSelection
- Fix handleBatchDelete: pluck ids BEFORE clearing selectedRows, then clearSelection
- Toolbar always visible when table has data (isSelectable computed), hides when nothing selected
- Remove unused Close icon import
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- selectAll: use tableRef.toggleAllSelection() to select ALL table rows, then manually sync selectedRows.value since the event may not fire reliably
- selectNone: use tableRef.clearSelection() (fires no event) + manually reset selectedRows.value = []
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set .menu-btn-com height to calc(72vh - 44px) so fs-crud fills available space
- Add height:100%/flex to .menu-btn-com so table stretches correctly
- Use i18n for batch toolbar text (selectedTip/clearSelection/batchDelete/totalCount)
- Add selectAll/selectNone/clearSelection/selectedTip/totalCount i18n keys for zh-CN/en/zh-TW
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- batch_create: check component_name exists, dedupe by value, use bulk_create
- Add batchDelete/selectAll/selectNone buttons to Fast-CRUD actionbar
- Add visible batch toolbar in MenuButtonCom with row selection count
- Fix successNotification → ElMessage.success (was treating text as i18n key)
- Update docs to reflect implementation status
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Menu page: auto-scan ViewSet APIs for a selected menu, preview & batch
create MenuButton records with inline name/value editing, grouped table
- Role page: group button permissions by Model > CRUD intent (Read/Write/
Delete/Other) with expand/collapse, indeterminate checkboxes
- Backend: new batch_set_role_menu_btn action + value field in serializer
- Frontend: 300ms debounced batch updates to avoid DB lock on rapid toggles
- i18n: add scan.* keys and role intent labels for zh-cn/en/zh-tw
- Add dvadmin.test_app with BlogViewSet and ProductViewSet for testing
- Fix scan_viewset to exclude base classes (CustomModelViewSet, etc.)
- ScanModal: upgrade to el-collapse grouped table (collapsible ViewSet groups)
- Add toolbar: select all / deselect all
- Group header checkbox with indeterminate state
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add quoteDeadlineStart/End/Separator keys to pissupplier i18n
- Replace hardcoded Chinese date placeholders with i18n calls
- Replace hardcoded '币别' placeholder with i18n key
- Accept optional t param in commonCrudConfig
- Replace hardcoded Chinese placeholders with i18n calls
- Add system/common i18n files for en, zh-cn, zh-tw
- Update loginLog/crud.tsx to pass t to commonCrudConfig
- Add rfs_operation_logs i18n files for en, zh-cn, zh-tw
- Replace hardcoded Chinese labels with t() calls in crud.tsx
- Column titles, placeholders, and formatters now use i18n
- Add buyerDashboard and supplierDashboard i18n keys to home module
(zh-cn / en / zh-tw)
- Replace all hardcoded Chinese text in BuyerDashboard.vue and
SupplierDashboard.vue with $t() calls
- Update index.vue role switcher buttons to use i18n
- quickNav items, chart legend, KPI labels all now support i18n
The export keyword inside <script setup> caused a conflict with
vite-plugin-vue-setup-extend plugin. Removed export since
createCrudOptions is only used locally by useFs().
Apply PR 157 i18n pattern to formContent, associationTable, and crudTable:
- formContent: useI18n, $t() in template, themeConfig.globalI18n in API,
title_i18n fallback for display
- associationTable: $t() for labels and placeholders
- crudTable: useI18n for FastCRUD column titles and validation
- Modify formatAxis to return i18n keys instead of hardcoded strings
- Update account.vue and changePwd.vue to translate the greeting
- Add useI18n to personal/index.vue and translate the greeting
The login i18n files were exporting flat structures that didn't match
the expected key paths like message.pages.login.loginTitle.
Wrapped content in message.pages.login.* structure like other i18n modules.
Backend:
- Improve menu title language detection (query param, user lang, Accept-Language)
- Fix user language update to use correct update_datetime field
- Add menu i18n sync management command
- Add migrations for company/miscprocurement i18n fields
Frontend:
- Clear tagsView cache on language switch to reload titles in new language
Reference the original django-vue3-admin framework home page, combine
the home image and notification card into one layout. The notification
list appears below the image, matching the original framework's style
with creator name, datetime, and title for each notification item.