Bỏ qua, đến nội dung

@digiforce-nc/plugin-field-vietnam-region ​

Plugin cung cấp kiểu field Tỉnh/Huyện/Xã Việt Nam — tích hợp sẵn bộ dữ liệu hành chính 63 tỉnh thành với cascading picker 3 cấp, lưu trữ trong collection vietnamRegions dạng cây phân cấp.

Plugin này làm gì? ​

Hãy hình dung: bạn cần trường chọn địa chỉ Việt Nam (Tỉnh → Quận/Huyện → Phường/Xã) trong form. Plugin này cung cấp sẵn toàn bộ dữ liệu hành chính (63 tỉnh, 700+ huyện, 10,000+ xã) và UI cascading picker tự động lọc theo cấp cha — không cần tự xây dựng.

Ba nhiệm vụ chính ​

#Nhiệm vụChi tiết
1Dữ liệu hành chínhBulk load 63 tỉnh, 700+ huyện, 10,000+ xã khi install
2Cascading pickerUI chọn 3 cấp với lazy loading theo cấp cha
3Giá trị chuẩn hóatoValue / toString chuyển đổi giữa code và tên đầy đủ

Kiến trúc ​

Tổng quan ​

Plugin có cả server (collection, data import, ACL) và client (cascading picker, hooks). Server quản lý dữ liệu vùng miền; client cung cấp UI chọn địa chỉ.

Luồng install ​

Khi install, plugin đọc 3 file JSON (provinces, districts, communes) và bulk insert vào collection vietnamRegions theo 3 cấp (63 tỉnh → 700+ huyện → 10,000+ xã).

Luồng chọn địa chỉ trên UI ​

Collection: vietnamRegions ​

CộtKiểuMô tả
codeSTRINGMã vùng (primary key) — ví dụ: 79 (TP.HCM)
nameSTRINGTên vùng — ví dụ: Thành phố Hồ Chí Minh
parentCodeSTRINGMã vùng cha (null cho level 1)
levelINTEGERCấp: 1 = tỉnh, 2 = huyện, 3 = xã

Interface: vietnamRegion ​

Hỗ trợ toValue (mã code → giá trị lưu trữ) và toString (mã code → tên đầy đủ "Phường X, Quận Y, TP Z").

ACL ​

PermissionMô tả
vietnamRegions:listCho phép đọc danh sách vùng miền (cần cho cascading picker)

Client Hooks ​

HookChức năng
useVietnamRegionDataSourceCung cấp data source cho cascading picker
useVietnamRegionLoadDataLazy load dữ liệu theo cấp cha khi user chọn

Ví dụ sử dụng ​

Cấu hình field vietnam region ​

typescript
const addressField = {
  name: 'address',
  type: 'vietnamRegion',
  interface: 'vietnamRegion',
  uiSchema: {
    type: 'array',
    title: 'Địa chỉ',
    'x-component': 'VietnamRegionCascader',
  },
};

Giá trị lưu trữ ​

typescript
// Giá trị lưu trong DB (array mã code)
const value = ['79', '760', '26734'];

// toString → "Phường Bến Nghé, Quận 1, TP. Hồ Chí Minh"

Thành phần client ​

Thành phầnMô tả
VietnamRegionCascaderCascading picker 3 cấp
useVietnamRegionDataSourceHook cung cấp data source
useVietnamRegionLoadDataHook lazy load theo cấp cha

Dependencies ​

PackageVai trò
@digiforce-nc/serverServer framework — collection, ACL
@digiforce-nc/databaseDatabase ORM — đăng ký field type
@digiforce-nc/clientClient framework — đăng ký component
vietnam-divisionDữ liệu hành chính Việt Nam (JSON)

Mục lục chi tiết ​