思路
- 关联表单填充关联表单主要是通过在关联表单的onchange函数里通过接口查询所选的数据填充到当前表单
- 二级数据筛选,多一个下拉单选作为中间组件,在关联表单的onchange函数里搜索符合条件的数据,然后赋值数据给下拉单选,在下拉单选的onchange函数里对另外一个关联表单赋值。
演示场景
一个项目会签多个合同,这里演示:
- 选择某个合同,把合同里关联的项目填充到当前表单的关联表单组件
- 选择项目后筛选出项目所签的合同
表单结构
- 项目(FORM-Y1666L71AA0WEJ5409PDPA9JYK032TZEYF4XKL)
- 项目名称:单行文本(textField_kx4fylgi)
- 合同(FORM-5L666481WK1WCR6D2USPCB6B3RZ12NHBZF4XKK)
- 合同:关联表单
- 所属项目:关联表单(associationFormField_kx4g30y8)
数据源里新建远程API
- 名称:
ht可自定义 - 自动加载:关闭
- 请求地址:
/alibaba/web/你的APPID/v1/form/getFormDataById.json流程表单不是这个地址,参考https://www.yuque.com/yida/support/aql605 - 其他保持默认
在合同组件 新建onchange函数,参考如下代码
export function onChange({ value }) {// console.log(value)// 选择了值if (value.length == 1) {// 生成请求参数const params = {formInstId: value[0].instanceId}// 请求所选数据this.dataSourceMap['ht'].load(params).then(res => {// console.log(res)// console.log(JSON.parse(JSON.parse(res.formData.associationFormField_kx4fzh5g_id)))// 给关联表单赋值this.$("associationFormField_kx4g30y8").setValue(JSON.parse(JSON.parse(res.formData.associationFormField_kx4fzh5g_id)))})}// 清除了选择,重置组件值else { this.$("associationFormField_kx4g30y8").reset() }}

数据筛选
组件:
- 项目名称:关联表单
- 合同名称:下拉单选
- 关联合同名称:关联表单
数据源里新建远程API
- 根据项目名搜索合同名
- 名称:ht 可自定义
- 自动加载:关闭
- 请求地址:
/alibaba/web/你的APPID/v1/form/searchFormDatas.json流程表单不是这个地址,参考https://www.yuque.com/yida/support/aql605 - 其他保持默认
在项目名称 新建onchange函数,参考如下代码
export function onChange({ value }) {// console.log('onChange', value);// 选择了项目名称if (value.length == 1) {const params = {formUuid: 'FORM-5L666481WK1WCR6D2USPCB6B3RZ12NHBZF4XKK',searchFieldJson: JSON.stringify({ textField_kx4lrrkd: value[0].title })}this.dataSourceMap['ht'].load(params).then(res => {// console.log(res)const newArr = []res.data.forEach(item => {// console.log(item)newArr.push({text: item.formData.textField_kx4fzh5f,value: item.formData.textField_kx4fzh5f})})// console.log(newArr)this.$("selectField_kx4hfh62").set('dataSource', newArr)this.$("selectField_kx4hfh62").reset()this.$("selectField_kx4hfh62").setBehavior('NORMAL')})}// 清除了项目名称else {this.$("selectField_kx4hfh62").reset()this.$("selectField_kx4hfh62").setBehavior('READONLY')}}
在合同名称 新建onchange2函数,参考如下代码
export function onChange2({ value, actionType, item }) {console.log('onChange', value);if (actionType == 'itemClick' || actionType == 'change') {// 选择某个选项for (const item of this.state.htFromXm.data) {if (item.formData.textField_kx4fzh5f == value) {const data = [{"appType": "APP_GG4USNCHR387FQKSY3RW","formUuid": item.formUuid,"formType": "receipt","instanceId": item.formInstId,"title": item.title,"subTitle": ""}]this.$('associationFormField_kx4hfh63').setValue(data)break}}} else if (actionType == 'clear' || actionType == 'setValue') {this.$('associationFormField_kx4hfh63').reset()}}
效果
