在表单设计中引用外部数据库数据或其他表单收集的数据
当需要引入大量不方便重新录入的数据时,比如需要在表单中快速填写供应商信息时。
引用其他表单的数据填充表单组件
需要从其他表单调用数据时, 如在固定资产申请表调用供应商信息表的数据。
参数 | 含义 |
---|---|
1 | 未提交 |
2 | 审批中 |
3 | 通过 |
4 | 驳回 |
5 | 终止 |
6 | 转入 |
7 | 结束 |
8 | 挂起 |
通过配置连接数据库引用数据以便在表单设计中使用
需要从外部大型数据库引用数据时,比如从某平台中引用供应商信息。
需要调用第三方API数据时可使用该方法进行数据引用。
需要自行配置API接口信息时
唯一名称:必填属性,是数据源的唯一标识,建议使用大小写字母、数字进行组合; 请求地址:即后端接口的URL,支持字符串常量或变量表达式;
描述信息:补充说明数据源的功能或使用要求,在选择数据源时作为参考;
请求配置:是一个回调函数,可以在发送请求之前再次修改config对象
数据处理:是一个回调函数,可以对获取到的数据结果进行加工处理
测试数据源 DSV数据源变量:默认显示通过global-dsv属性传递的数据,在测试数据源时DSV是可以修改的。
为组件绑定数据源 目前支持数据源绑定的组件有:单选项radio、多选项checkbox、下列选项select、级联选择cascader以及数据表格data-table。
新增数据源配置示例:
引用组件市场中预设的API端口
弹出窗口,在表单渲染阶段默认不显示,需要调用showDialog方法才能显示。
let form = this.getFormRef();
form.showDialog('xz')
let Dsv = this.getGlobalDsv()
//记录所在行rowId,用于数据回填
Dsv['xsddRowId'] = this.subFormRowId
主表单弹窗事件代码如下(请仔细检查所有字段是否准确替换):
//获取数据表格
let dataTable = this.getWidgetRef("datatable35195")
//获取数据表格选中行
let data = dataTable.getSelectedRow();
let form = this.getFormRef();
form.getParentFormRef().getWidgetRef('gysmc').setValue(data[0].num)
form.getParentFormRef().getWidgetRef('khh').setValue(data[0].khmc)
form.getParentFormRef().getWidgetRef('yhzh').setValue(data[0].khbm)
//console.log(form)
明细子表单弹窗事件代码如下(请仔细检查字段是否准确替换):
let form = this.getFormRef();
//获取数据表格
let dataTable = this.getWidgetRef("datatable65537")
//获取数据表格选中行
let data = dataTable.getSelectedRow();
let Dsv = form.getGlobalDsv()
//取出当前行rowID
let rowId = Dsv['xsddRowId']
//对数据进行赋值
form.getParentFormRef().getWidgetRef('wlbm' + '@row' + rowId).setValue(data[0].wlbm)
form.getParentFormRef().getWidgetRef('wlmc' + '@row' + rowId).setValue(data[0].wlmc)
form.getParentFormRef().getWidgetRef('ggxh' + '@row' + rowId).setValue(data[0].ggxh)
form.getParentFormRef().getWidgetRef('dw' + '@row' + rowId).setValue(data[0].dw)
//如果选择多条数据,先添加新的空白行,然后再赋值
let xsddmx = form.getParentFormRef().getWidgetRef("#Relate_xsddmx");
for(let i=1 ;i<data.length;i++){
xsddmx.addSubFormRow()
let rowIdData = xsddmx.getRowIdData()
let newRowId = rowIdData[xsddmx.getSubFormRowCount()-1]
this.$nextTick(() => {
form.getParentFormRef().getWidgetRef('wlbm' + '@row' + newRowId).setValue(data[i].wlbm)
form.getParentFormRef().getWidgetRef('wlmc' + '@row' + newRowId).setValue(data[i].wlmc)
form.getParentFormRef().getWidgetRef('ggxh' + '@row' + newRowId).setValue(data[i].ggxh)
form.getParentFormRef().getWidgetRef('dw' + '@row' + newRowId).setValue(data[i].dw)
})
}
var pagination={total:result.data.result.total};
var vform_template=VFR.getWidgetRef('数据表格字段名');
vform_template.setPagination(pagination);
return result.data.result;
组合使用示例:
(1)this.getParentFormRef().widgetRefList[·组件名·].getTableData() //弹框中获取外部table的数据
(2)this.getParentFormRef().widgetRefList[·组件名·].setTableData() //弹框中设置外部table的数据
(3)this.getFormRef().getFormData(false) //获取当前弹框的表单数据 注意:(needValidation = true),获取表单数据时是否开启表单校验,默认开启。开启表单校验,返回的是一个Promise对象,否则返回数据对象。 (4)this.getFormRef().getWidgetRef('组件名') //点击获取指定组件
(5)this.getFormRef().getWidgetRef(''组件名').resetField() //重置按钮 清空指定组件的值