1. 使用场景
当自定义页面中使用自定义表格展示数据后,那么顶部操作的搜索只能搜索某一列数据,这时如果我们需要对我们的数据多列进行搜索,那么就可以使用查询组件来实现。
当自定义页面中使用自定义表格展示数据后,那么顶部操作的搜索只能搜索某一列数据,这时如果我们需要对我们的数据多列进行搜索,那么就可以使用查询组件来实现。
参考文档:根据条件搜索表单实例详情列表
接口配置如图:
添加数据源
注:如果返回的数据是 proxy 形式,可以使用 JSON.parse(JSON.stringify(proxy 属性的数据 ))
function didFetch(content) { // content.b = 1; 修改返回数据结构中的 b 字段为1 const value = []; const data = content.data.map((item)=>{ let arr={ name: item.formData.textField_hr9o6eq, sex: item.formData.textField_62lufhf, age: item.formData.textField_0nibhpr, study: item.formData.textField_97okczu, work: item.formData.textField_456c4b7, instid: item.formInstId } value.push(arr); console.log(arr); }) let result ={ "data" : value, "currentPage" : content.currentPage, "totalCount" : content.totalCount } return result; // 重要,需返回 content }
自定义页面添加查询组件
当查询条件对应组件的搜索类型为模糊搜索时,查询时该值可为空。当查询条件对应组件的搜索类型为精确搜索时,查询时该值不能为空。
若需要精确搜索组件为空,则需在 js 中进行判断,当该值为空时,单独配置其他组件值为 searchFieldJson 参数。
使用`${'value.fileid'}`获取输入框的值,并配置 searchFieldJson 参数,重新加载数据源。
参考代码如下:
export function onSubmit(value) { console.log("value",value) const work = `${value.textField_krbe9jrp}`; const sex = `${value.textField_krc0uzre}`; console.log("work", work) const somejson = { textField_456c4b7: work, textField_62lufhf: sex } const param = { formUuid: "FORM-HC9660C1TGFQ8927Y6905OPBO30Y1I9YOD3PKH", searchFieldJson: JSON.stringify(somejson) } this.dataSourceMap['getDatas_copy'].load(param); }
当我们点击重置按钮时,通过重置展示所有数据。
参考代码如下:
export function onReset(values) { console.log('onFilterReset', values); this.dataSourceMap['getDatas_copy'].load(); }
点击翻页时,返回的 params 数据中的 currentPage 为当前选择页码,通过「this.$('组件唯一标识').getValue()」获取查询组件中对应搜索输入框的值,然后将 params.currentPage ,formUuid 以及查询条件searchFieldJson 作为新的参数加载数据源 getDatas ,实现搜索后翻页功能。当不进行查询时,查询条件searchFieldJson为空,因此只实现原数据翻页功能。
参考代码如下:
export function onFetchData(params) { // 如果是搜索的话翻页重置到 1 if (params.from === 'search') { params.currentPage = 1; } // 如果你需要把表格查询条件保存起来,可以取消下一行注释,并添加一个 params 的变量类型数据源 // this.setState({ tableParams: params }); // 如果使用远程接口作为表格数据源,理论上你只需要将下方的“dataSourceName”改为实际的数据源名称即可 const work = this.$('textField_krbe9jrp').getValue(); const sex = this.$('textField_krc0uzre').getValue(); const somejson ={ textField_456c4b7: work, textField_62lufhf: sex } const newparam = { formUuid: "FORM-HC9660C1TGFQ8927Y6905OPBO30Y1I9YOD3PKH", currentPage : params.currentPage, searchFieldJson: JSON.stringify(somejson) } this.dataSourceMap['getDatas'].load(newparam); }
在线体验请移步开发者中心 ? 自定义页面的查询组件