riku
2024-08-13 1a0e4972f80278bfa9e53283374b745b6c968341
components/form/index.js
@@ -1,4 +1,9 @@
import { cascaderNote } from './form-util.js';
Component({
  options: {
    multipleSlots: true, // 在组件定义时的选项中启用多slot支持
  },
  properties: {
    /**
     * 表单输入框采用T-design框架下的Input组件
@@ -10,7 +15,7 @@
     * value: 真实值,
     * status: 输入框状态。可选项:success/warning/error,
     * tips: 输入框下方提示文本,会根据不同的 status 呈现不同的样式,
     * inputType: 输入类型 (text: 输入框;switch:切换按钮; picker: 下拉框选项; cascader: 级联选择),
     * inputType: 输入类型 (text: 输入框; switch: 切换按钮; picker: 下拉框选项; cascader: 级联选择),
     * options: 当输入类型为picker或cascader时,提供可选项,
     * cascaderTitles: 当输入类型为cascader时,提供每个选项的标题,
     */
@@ -20,6 +25,14 @@
      observer(v) {
        this.setData({ formArray: v });
      },
    },
    submitText: {
      type: String,
      value: '保存',
    },
    cancelText: {
      type: String,
      value: '取消',
    },
  },
@@ -55,10 +68,8 @@
      this.setData({
        [`formArray[${index}].visible`]: false,
        [`formArray[${index}]._value`]: value,
        [`formArray[${index}].value`]: {
          label: label[0],
          value: value[0],
        },
        [`formArray[${index}]._label`]: label[0],
        [`formArray[${index}].value`]: value[0],
      });
    },
    onPickerCancel(e) {
@@ -75,9 +86,9 @@
    onCascaderChange(e) {
      const { index } = e.currentTarget.dataset;
      const { selectedOptions, value } = e.detail;
      const note = this._note(selectedOptions);
      const note = cascaderNote(selectedOptions);
      const v = selectedOptions.map(v => {
        return { label: v.label, value: v.value };
        return v.value;
      });
      this.setData({
        [`formArray[${index}].visible`]: false,
@@ -92,7 +103,11 @@
      const formObj = {};
      this.data.formArray.forEach(e => {
        if (e.inputType == 'picker') {
          formObj[e.name] = e.value ? e.value.value : e.value;
          formObj[e.name] = e.value;
        } else if (e.inputType == 'cascader') {
          e.referItems.forEach((r, i) => {
            formObj[r] = e.value[i];
          });
        } else {
          formObj[e.name] = e.value;
        }