- Outer div: flex column, fills tab-pane height
- .menu-scan-btn: fixed height ~44px
- MenuButtonCom with .menu-btn-fill: flex:1 fills remaining space
- MenuButtonCom inner: height:100% instead of 72vh
- Fixes pagination/selected-count being covered by overflow
- Also i18n "自动扫描" button text with scan.title key
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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
- scan_get_apps: scan views/ subdirectories instead of apps registry
- scan_viewset: scan submodules in views/ directory using pkgutil
- Fix model name extraction using removesuffix instead of fixed slice
- Add class ID deduplication to avoid duplicate ViewSets
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- scan_get_apps: list all scannable Django apps under dvadmin
- scan_viewset: scan ViewSet actions and return preview data
- scan_batch_create: bulk create MenuButton records
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add check_inquiry_published_notifications() task scanning status 3/4 inquiries every 1 min
- Add check_quote_completed_notifications() task scanning status 5 inquiries every 1 min
- Both respect 24h EmailNotice cooldown and follow existing check_quote_deadline_expired pattern
- Return dict with checked/sent/skipped/errors counts
- 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