Bỏ qua, đến nội dung

@digiforce-nc/plugin-action-bulk-edit

Plugin cung cấp chỉnh sửa hàng loạt (bulk edit) - cho phép người dùng chọn nhiều bản ghi trên bảng/gantt/map và chỉnh sửa đồng thời qua một form duy nhất.

Plugin này làm gì?

Hãy hình dung bạn có 50 đơn hàng cần đổi trạng thái. Thay vì mở từng bản ghi một, plugin-action-bulk-edit cho phép chọn tất cả → mở một form → sửa một lần. Plugin đăng ký UI action customize:bulkEdit trên các block dạng table, gantt và map.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Hiển thị form chỉnh sửaMở popup với form cho phép chọn field cần sửa và nhập giá trị mới
2Validate & gửi requestValidate dữ liệu qua Formily schema rồi gọi resource.update() với filter chứa danh sách ID đã chọn
3Kiểm soát quyềnACL map action sang update, hiển thị nút chỉ khi user có quyền updateMany

Kiến trúc

Tổng quan

Plugin hoạt động hoàn toàn ở client - server chỉ có stub (không có logic riêng). Hai stack UI song song tồn tại: classic Formily schema và newer uiCore widgets.

TầngVai tròThành phần
Action WidgetNút trên toolbar, mở popup bulk editBulkEditActionWidget
Form WidgetForm chỉnh sửa với field selectorBulkEditFormWidget
Field ComponentMỗi field có 3 chế độ: không đổi / thay thế / xóaBulkEditField
DecoratorWrap form logic, xử lý submitBulkEditActionDecorator

ACL - Phân quyền

QuyềnMô tả
updateAction được map sang quyền update của collection
updateManyNút chỉ hiển thị khi user có quyền updateMany

Luồng hoạt động

Chi tiết chế độ field

BulkEditField hỗ trợ 3 chế độ cho mỗi field trong form:

Chế độGiá trịHành vi
Không thay đổiunchangedBỏ qua field này, giữ nguyên giá trị cũ
Thay thếreplaceGhi đè bằng giá trị mới nhập trong form
XóaclearĐặt giá trị field thành null

Dual stack UI

Plugin hỗ trợ hai cách render form song song:

StackMô tảKhi nào dùng
Formily schemaClassic schema-driven formCollection dùng schema cũ
uiCore widgetsWidget-based form (mới)Collection dùng uiCore mới

Thành phần client

Thành phầnMô tả
BulkEditFormWidgetForm chỉnh sửa hàng loạt - chọn field và nhập giá trị mới
BulkEditActionWidgetWidget nút action trên toolbar bảng
BulkEditActionInitializerĐăng ký action vào schema initializer (table, gantt, map)
BulkEditFieldField component hỗ trợ chế độ "không thay đổi / thay thế / xóa"
BulkEditActionDecoratorDecorator wrap form logic và xử lý submit
BulkEditPluginProviderProvider đăng ký toàn bộ component vào plugin system

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework (peer)
@digiforce-nc/serverServer framework - stub (peer)

Mục lục chi tiết