From 39e31e00fbd6210ea3029bc3e4105905294e0fbc Mon Sep 17 00:00:00 2001 From: puhui999 Date: Thu, 26 Jun 2025 11:25:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20FormCreate=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E8=81=94=E5=8A=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infra/demo/formCreateControl/README.md | 177 ++++++ .../infra/demo/formCreateControl/index.vue | 590 ++++++++++++++++++ 2 files changed, 767 insertions(+) create mode 100644 src/views/infra/demo/formCreateControl/README.md create mode 100644 src/views/infra/demo/formCreateControl/index.vue diff --git a/src/views/infra/demo/formCreateControl/README.md b/src/views/infra/demo/formCreateControl/README.md new file mode 100644 index 000000000..d6f25bab0 --- /dev/null +++ b/src/views/infra/demo/formCreateControl/README.md @@ -0,0 +1,177 @@ +# FormCreate 组件联动示例 + +这个示例页面演示了 FormCreate 中各种组件联动的使用方法,参考了官方文档 https://form-create.com/v3/guide/control + +## 功能特性 + +### 1. 基础联动 (Basic Control) + +- **显示/隐藏控制**:根据用户类型选择显示不同的表单字段 +- **条件逻辑**:个人用户显示身份证号,企业用户显示公司信息 +- **实时响应**:选择变化时立即更新表单结构 + +### 2. 禁用联动 (Disabled Control) + +- **启用/禁用控制**:通过开关控制表单字段的可编辑状态 +- **批量操作**:一次性控制多个字段的禁用状态 +- **状态保持**:禁用时保持原有数据不变 + +### 3. 选项联动 (Options Control) + +- **三级联动**:省市区三级下拉选择联动 +- **动态选项**:根据上级选择动态更新下级选项 +- **选项替换**:使用 `replaceOptions` 方法更新选项列表 + +### 4. 复杂联动 (Complex Control) + +- **多条件控制**:根据订单类型显示不同的业务字段 +- **业务场景**:模拟真实的订单管理场景 +- **混合控制**:同时使用显示/隐藏和选项联动 + +### 5. 动态规则 (Dynamic Rules) + +- **动态添加**:运行时动态添加表单字段 +- **动态删除**:运行时删除已添加的字段 +- **API操作**:使用 FormCreate API 进行动态操作 + +## 技术要点 + +### Control 配置结构 + +```typescript +control: [ + { + value: '触发值', // 触发联动的值 + condition: '==', // 条件操作符 (==, !=, >, <, >=, <=, in, !in) + method: '联动方法', // 联动方法 (hidden, display, disabled, enabled, replaceOptions) + rule: ['字段名'], // 受影响的字段 + options: [] // 新选项 (仅 replaceOptions 方法使用) + } +] +``` + +### 联动方法说明 + +- **hidden**: 隐藏字段 +- **display**: 显示字段 +- **disabled**: 禁用字段 +- **enabled**: 启用字段 +- **replaceOptions**: 替换选项 + +### 条件操作符 + +- **==**: 等于 +- **!=**: 不等于 +- **>**: 大于 +- **<**: 小于 +- **>=**: 大于等于 +- **<=**: 小于等于 +- **in**: 包含在数组中 +- **!in**: 不包含在数组中 + +## 使用示例 + +### 基础显示/隐藏联动 + +```typescript +{ + type: 'radio', + field: 'userType', + control: [ + { + value: 'personal', + condition: '==', + method: 'hidden', + rule: ['companyName', 'businessLicense'] + } + ] +} +``` + +### 选项联动 + +```typescript +{ + type: 'select', + field: 'province', + control: [ + { + value: 'guangdong', + condition: '==', + method: 'replaceOptions', + rule: ['city'], + options: [ + { label: '广州市', value: 'guangzhou' }, + { label: '深圳市', value: 'shenzhen' } + ] + } + ] +} +``` + +### 动态操作 + +```typescript +// 添加字段 +formApi.append({ + type: 'input', + field: 'newField', + title: '新字段' +}) + +// 删除字段 +formApi.removeField('fieldName') + +// 更新字段属性 +formApi.updateRule('fieldName', { + props: { disabled: true } +}) +``` + +## 最佳实践 + +1. **合理使用联动**:避免过于复杂的联动逻辑,保持用户体验流畅 +2. **性能考虑**:大量字段联动时注意性能影响 +3. **用户体验**:联动变化要有明确的视觉反馈 +4. **数据一致性**:隐藏字段时考虑是否需要清空数据 +5. **错误处理**:联动失败时要有合适的错误处理机制 + +## 扩展功能 + +- 支持自定义联动方法 +- 支持异步联动(如远程获取选项) +- 支持复杂条件表达式 +- 支持联动动画效果 +- 支持联动历史记录 + +## 访问方式 + +### 开发环境访问 + +直接在浏览器中访问: + +```url +http://localhost:3000/#/infra/demo/formCreateControl +``` + +### 路由配置 + +如果需要在菜单中显示,可以在后台管理系统中添加菜单项: + +- **菜单名称**: FormCreate联动示例 +- **路由地址**: `demo/formCreateControl` +- **组件路径**: `infra/demo/formCreateControl/index` + +### 文件结构 + +```text +src/views/infra/demo/formCreateControl/ +├── index.vue # 主页面组件 +└── README.md # 说明文档 +``` + +## 相关文档 + +- [FormCreate 官方文档](https://form-create.com/v3/) +- [Control 联动控制](https://form-create.com/v3/guide/control) +- [API 参考](https://form-create.com/v3/guide/api) \ No newline at end of file diff --git a/src/views/infra/demo/formCreateControl/index.vue b/src/views/infra/demo/formCreateControl/index.vue new file mode 100644 index 000000000..c454eb2dd --- /dev/null +++ b/src/views/infra/demo/formCreateControl/index.vue @@ -0,0 +1,590 @@ + + + + + -- Gitee