# M8 React前端可视化拖拽页面模板建模层 v2.2 (新增 template_order_audit 订单审核 + template_employee_create/modify 员工录入/修改) # 约束:所有组件字段强制绑定M1领域模型,不允许自定义字段;自动关联M4场景、M2命令、M5脱敏、MetaRule规则。 # 业务迭代仅修改本模板,无需修改React底层业务源码 —— 通用渲染引擎读取本文件动态生成页面。 frontModel: reactGlobalConfig: uiLib: antd dragEngineStorage: mysql8 renderFramework: react18 autoGenFormSubmit: true autoBindApiFromScene: true dragRolePermission: [backend_admin] desc: 拖拽编辑器仅管理员可见;普通用户仅渲染页面,不可编辑模板 pageTemplates: # 模板1:单实体表单模板 - 客户录入 - templateId: template_customer_single templateName: 客户单表单录入模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_CREATE_CUSTOMER masterAggregate: CustomerAggregate detailAggregates: [] rootComponents: - compId: card_customer_base compType: card width: 100% span: 24 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerId formLabel: 客户基础信息卡片12 childComponents: - compId: input_cust_name compType: input span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerName formLabel: 客户名称12123123 required: true - compId: input_cust_phone compType: input span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: contactPhone formLabel: 联系手机号 required: true maskField: true - compId: select_cust_level compType: select span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerLevel formLabel: 客户等级 required: true - compId: date_register compType: date_picker span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: registerTime formLabel: 注册时间 # 模板2:主从表单模板 - 订单录入(聚合根+多子实体) - templateId: template_order_master_detail templateName: 订单主从录入模板 templateType: master_detail_form renderMode: page_container bindSceneId: SCENE_CREATE_ORDER masterAggregate: OrderAggregate detailAggregates: [OrderItem, PaymentTerm, DeliveryAddressEntity] rootComponents: # 订单主信息卡片 - compId: card_order_master compType: card width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: orderId formLabel: 订单主信息 childComponents: - compId: select_customer compType: select span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerId formLabel: 客户 required: true - compId: input_currency compType: input span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: totalCurrency formLabel: 结算币种 required: true - compId: number_total_amt compType: number_input span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: totalAmount formLabel: 订单总金额 required: true - compId: date_create compType: date_picker span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: createTime formLabel: 下单时间 # 订单明细表格子实体 - compId: table_order_item compType: table width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: OrderItem domainFieldName: itemId formLabel: 订单商品明细 childComponents: - compId: select_product compType: select span: 6 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: productId formLabel: 商品 required: true - compId: number_qty compType: number_input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: OrderItem domainFieldName: quantity formLabel: 购买数量 required: true - compId: number_price compType: number_input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: OrderItem domainFieldName: itemPrice formLabel: 单品单价 - compId: input_item_currency compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: OrderItem domainFieldName: itemCurrency formLabel: 单品币种 # 付款条件子实体卡片 - compId: card_payment_term compType: card width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: PaymentTerm domainFieldName: termId formLabel: 付款条款 childComponents: - compId: select_pay_type compType: select span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: PaymentTerm domainFieldName: paymentType formLabel: 付款方式 - compId: number_duedays compType: number_input span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: PaymentTerm domainFieldName: dueDays formLabel: 账期天数 # 收货地址子实体卡片 - compId: card_delivery_addr compType: card width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: addrId formLabel: 收货地址 childComponents: - compId: input_province compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: province formLabel: 省份 - compId: input_city compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: city formLabel: 城市 - compId: input_district compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: district formLabel: 区县 - compId: input_street compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: streetDetail formLabel: 详细街道 - compId: input_receiver compType: input span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: receiverName formLabel: 收货人 - compId: input_receiver_phone compType: input span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: receiverPhone formLabel: 收货电话 maskField: true # 模板3:单键操作模板 - 取消订单(cancel 命令,仅选订单即可,后端据 ME 补偿归还库存) - templateId: template_order_cancel templateName: 订单取消模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_CANCEL_ORDER masterAggregate: OrderAggregate detailAggregates: [] rootComponents: - compId: card_cancel_order compType: card width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: orderId formLabel: 取消订单 childComponents: - compId: select_cancel_order compType: select span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: orderId formLabel: 待取消订单 required: true # 模板4:主从更新模板 - 修改订单收货地址(update 命令,主卡选订单+子实体卡录新地址) - templateId: template_order_modify_addr templateName: 订单收货地址修改模板 templateType: master_detail_form renderMode: page_container bindSceneId: SCENE_MODIFY_ORDER_ADDR masterAggregate: OrderAggregate detailAggregates: [DeliveryAddressEntity] rootComponents: # 目标订单(聚合根,提供 orderId 定位待更新订单) - compId: card_modaddr_order compType: card width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: orderId formLabel: 目标订单 childComponents: - compId: select_modaddr_order compType: select span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: orderId formLabel: 订单 required: true # 新收货地址(DeliveryAddressEntity 子实体,字段/校验/脱敏与订单录入同源) - compId: card_modaddr_addr compType: card width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: addrId formLabel: 新收货地址 childComponents: - compId: input_modaddr_province compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: province formLabel: 省份 - compId: input_modaddr_city compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: city formLabel: 城市 - compId: input_modaddr_district compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: district formLabel: 区县 - compId: input_modaddr_street compType: input span: 6 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: streetDetail formLabel: 详细街道 - compId: input_modaddr_receiver compType: input span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: receiverName formLabel: 收货人 - compId: input_modaddr_receiver_phone compType: input span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_entity domainEntityName: DeliveryAddressEntity domainFieldName: receiverPhone formLabel: 收货电话 maskField: true # 模板5:客户信息修改模板(update;主卡选客户 + 可改字段,contactPhone 存储加密/展示脱敏) - templateId: template_customer_modify templateName: 客户信息修改模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_MODIFY_CUSTOMER masterAggregate: CustomerAggregate detailAggregates: [] rootComponents: - compId: card_modcust_base compType: card width: 100% span: 24 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerId formLabel: 修改客户信息 childComponents: - compId: select_modcust_id compType: select span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerId formLabel: 目标客户 required: true - compId: input_modcust_name compType: input span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerName formLabel: 客户名称 - compId: input_modcust_phone compType: input span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: contactPhone formLabel: 联系手机号 maskField: true - compId: select_modcust_level compType: select span: 12 fieldBind: bindAggregateId: CustomerAggregate bindSourceType: aggregate_root domainFieldName: customerLevel formLabel: 客户等级 # 模板6:商品档案录入模板(create;productId 由引擎生成,故主卡不含 id 输入) - templateId: template_product_single templateName: 商品档案录入模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_CREATE_PRODUCT masterAggregate: ProductAggregate detailAggregates: [] rootComponents: - compId: card_product_base compType: card width: 100% span: 24 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: productId formLabel: 商品基础信息 childComponents: - compId: input_prod_name compType: input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: productName formLabel: 商品名称 required: true - compId: input_prod_sku compType: input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: skuCode formLabel: SKU编码 required: true - compId: input_prod_category compType: input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: category formLabel: 商品类目 - compId: input_prod_currency compType: input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: saleCurrency formLabel: 销售币种 - compId: number_prod_price compType: number_input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: salePrice formLabel: 销售单价 required: true - compId: number_prod_stock compType: number_input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: stockNum formLabel: 库存数量 required: true - compId: switch_prod_onsale compType: switch span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: isOnSale formLabel: 是否上架 # 模板7:商品售价修改模板(update;主卡选商品 + 改币种/售价,售价字段在聚合根表可真正落库) - templateId: template_product_modify_price templateName: 商品售价修改模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_MODIFY_PRODUCT_PRICE masterAggregate: ProductAggregate detailAggregates: [] rootComponents: - compId: card_modprice_base compType: card width: 100% span: 24 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: productId formLabel: 修改商品售价 childComponents: - compId: select_modprice_id compType: select span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: productId formLabel: 目标商品 required: true - compId: input_modprice_currency compType: input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: saleCurrency formLabel: 销售币种 - compId: number_modprice_price compType: number_input span: 12 fieldBind: bindAggregateId: ProductAggregate bindSourceType: aggregate_root domainFieldName: salePrice formLabel: 新售价 # 模板9:订单审核模板(update;主卡选订单 + 选审核人 + 审核结论/备注) # 演示 AuditOrder 的 bizSteps 闭指令集程序:LOAD_AGGREGATE → AUTO_FILL(auditTime) → SET_FIELD(auditorId) # → REMOTE_QUERY_SET_FIELD(按 auditorId 查 EmployeeAggregate.employeeName 回填 auditorName) # → SET_FIELD(auditRemark) → CONDITION_SET_FIELD(auditResult → orderStatus) → COMMIT_TRANSACTION。 # 审核人下拉:auditorId 带 M1 refAggregate=EmployeeAggregate,渲染引擎通用地据引用取员工选项(非硬编码)。 - templateId: template_order_audit templateName: 订单审核模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_AUDIT_ORDER masterAggregate: OrderAggregate detailAggregates: [] rootComponents: - compId: card_audit_order compType: card width: 100% span: 24 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: orderId formLabel: 订单审核 childComponents: - compId: select_audit_order compType: select span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: orderId formLabel: 待审核订单 required: true - compId: select_audit_auditor compType: select span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: auditorId formLabel: 审核人(引用员工聚合) required: true - compId: select_audit_result compType: select span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: auditResult formLabel: 审核结论(PASS/REJECT) required: true - compId: input_audit_remark compType: text_area span: 12 fieldBind: bindAggregateId: OrderAggregate bindSourceType: aggregate_root domainFieldName: auditRemark formLabel: 审核备注 # 模板10:员工档案录入模板(create;employeeId 由引擎生成,审核计数由 CreateEmployee 的 bizSteps 置 0) - templateId: template_employee_create templateName: 员工档案录入模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_CREATE_EMPLOYEE masterAggregate: EmployeeAggregate detailAggregates: [] rootComponents: - compId: card_employee_base compType: card width: 100% span: 24 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: employeeId formLabel: 员工基础信息 childComponents: - compId: input_emp_name compType: input span: 12 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: employeeName formLabel: 员工姓名 required: true - compId: input_emp_dept compType: input span: 12 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: department formLabel: 部门 # 模板11:员工信息修改模板(update;主卡选员工 + 改姓名/部门/备注) - templateId: template_employee_modify templateName: 员工信息修改模板 templateType: single_table_form renderMode: page_container bindSceneId: SCENE_MODIFY_EMPLOYEE masterAggregate: EmployeeAggregate detailAggregates: [] rootComponents: - compId: card_modemp_base compType: card width: 100% span: 24 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: employeeId formLabel: 修改员工信息 childComponents: - compId: select_modemp_id compType: select span: 12 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: employeeId formLabel: 目标员工 required: true - compId: input_modemp_name compType: input span: 12 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: employeeName formLabel: 员工姓名 - compId: input_modemp_dept compType: input span: 12 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: department formLabel: 部门 - compId: input_modemp_remark compType: text_area span: 12 fieldBind: bindAggregateId: EmployeeAggregate bindSourceType: aggregate_root domainFieldName: remark formLabel: 备注 # 模板8:空白自定义拖拽模板(全新业务场景使用) - templateId: template_custom_blank templateName: 空白自定义拖拽模板 templateType: custom_drag_form renderMode: drawer bindSceneId: "" masterAggregate: null detailAggregates: [] rootComponents: []