函数体
//下拉选项处理(包含单选、复选)
export function selectOptions(data, fieldId) {
let selectOptions = data.map(item => {
return {
text: item.formData[fieldId.substring(0, fieldId.length)],
value: item.formData[fieldId.substring(0, fieldId.length)]
}
});
let obj = {};
selectOptions = selectOptions.reduce(function (item, next) {
obj[next.value] ? '' : obj[next.value] = true && item.push(next);
return item;
}, []);
return selectOptions;
}
使用方法
1、请与loopLoad函数结合使用,loopLoad函数返回值可直接使用此函数,其他使用请结合宜搭数据源使用,且确保传入的data为数组。
2、调用示例
this.loopLoad("getData", "FORM-T2B66FA1NN1YZIJO2ZZ6C5UX507W2MVSNFXZK1", {
textField_l25xk894: ""
}).then(res => {
//此处可以获取到返回的结果
console.log("请求结果", res);
this.$("selectField_l28t6clt").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
this.$("multiSelectField_l28t6clu").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
this.$("radioField_l28t6clv").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
this.$("checkboxField_l28t6clx").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
});
this.$("selectField_l28t6clt").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));
this.$("multiSelectField_l28t6clu").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));
this.$("radioField_l28t6clv").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));
this.$("checkboxField_l28t6clx").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));
注意事项
1、selectOptions函数可以传两个参数data、fieldId。
2、其中data参数为待转化下拉的候选数据,类型为Array,必填;fieldId参数为需要作为下拉候选值的组件唯一ID,类型为String,必填。
3、此函数会自动去重。