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