函数体

  1. //下拉选项处理(包含单选、复选)
  2. export function selectOptions(data, fieldId) {
  3. let selectOptions = data.map(item => {
  4. return {
  5. text: item.formData[fieldId.substring(0, fieldId.length)],
  6. value: item.formData[fieldId.substring(0, fieldId.length)]
  7. }
  8. });
  9. let obj = {};
  10. selectOptions = selectOptions.reduce(function (item, next) {
  11. obj[next.value] ? '' : obj[next.value] = true && item.push(next);
  12. return item;
  13. }, []);
  14. return selectOptions;
  15. }

使用方法

1、请与loopLoad函数结合使用,loopLoad函数返回值可直接使用此函数,其他使用请结合宜搭数据源使用,且确保传入的data为数组。
2、调用示例

  1. this.loopLoad("getData", "FORM-T2B66FA1NN1YZIJO2ZZ6C5UX507W2MVSNFXZK1", {
  2. textField_l25xk894: ""
  3. }).then(res => {
  4. //此处可以获取到返回的结果
  5. console.log("请求结果", res);
  6. this.$("selectField_l28t6clt").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
  7. this.$("multiSelectField_l28t6clu").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
  8. this.$("radioField_l28t6clv").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
  9. this.$("checkboxField_l28t6clx").set("dataSource", this.selectOptions(res.result, "textField_l25xk894"));
  10. });
  1. this.$("selectField_l28t6clt").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));
  2. this.$("multiSelectField_l28t6clu").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));
  3. this.$("radioField_l28t6clv").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));
  4. this.$("checkboxField_l28t6clx").set("dataSource", this.selectOptions(this.state.dp1.data, "textField_l25xk894"));

3、数据返回示例
image.png

注意事项

1、selectOptions函数可以传两个参数data、fieldId。
2、其中data参数为待转化下拉的候选数据,类型为Array,必填;fieldId参数为需要作为下拉候选值的组件唯一ID,类型为String,必填。
3、此函数会自动去重。

附录

loopLoad函数