快速引用数据时需要的容器组件,配合事件属性代码实现功能。
弹窗一般用于,表单对整体记录多个字段的选择(如:选择客户信息,需要选中客户编号,客户名称,联系人),或者子表单选择多条记录
下面以子表单选择多条记录为例
弹出窗口,在表单渲染阶段默认不显示,需要调用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)
})
}
常用api:getFormRef() 获取当前组件
getParentFormRef() 获取父级的组件
getFormData() 获取表单数据
getTableData() 获取表格数据
getWidgetRef(‘组件名’) 获取指定的组件
resetField() 组件清空
组合使用:
(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() //重置按钮 清空指定组件的值