riku
2025-04-27 f46786f11c5c08ead7501a82e5a71430ad69b782
components/form/form-util.js
@@ -2,8 +2,8 @@
 * 生成一条表单条目
 * @param {String} _label 标签名称
 * @param {String} _name 字段名称
 * @param {String} _type 输入类型 (text: 输入框; switch: 切换按钮; picker: 下拉框选项; cascader: 级联选择)
 * @param {Boolean} _required 是否为必填项
 * @param {String} _type 输入类型 (text: 输入框; textarea: 多行输入框; switch: 切换按钮; picker: 下拉框选项; cascader: 级联选择)
 * @param {Array} _options 当输入类型为picker或cascader时,提供可选项
 * @param {Array} cascaderTitles 当输入类型为cascader时,提供每层选项的标题
 * @param {Array} referItems 当输入类型为cascader时,提供关联的属性name
@@ -20,7 +20,7 @@
  return {
    required: _required,
    label: _label,
    placeholder: (_type == 'text' ? '请输入' : '请选择') + _label,
    placeholder: (_type == 'text' || _type == 'textarea' ? '请输入' : '请选择') + _label,
    name: _name,
    value: null,
    status: 'success',
@@ -50,23 +50,27 @@
 * @param {Object} defaultValue 初始数据
 */
function setDefaultValue(items, defaultValue) {
  if (typeof defaultValue === 'object') {
  if (defaultValue && typeof defaultValue === 'object') {
    items.forEach(e => {
      // 文本和开关类型直接赋值
      if (e.inputType == 'text' || e.inputType == 'switch') {
      if (e.inputType == 'text' || e.inputType == 'switch' || e.inputType == 'textarea') {
        if (defaultValue.hasOwnProperty(e.name)) {
          e.value = defaultValue[e.name];
        }
      }
      // 下拉框除了赋值,需要额外赋值属性_value(数组类型,组件t-picker的特性)
      else if (e.inputType == 'picker') {
        if (defaultValue.hasOwnProperty(e.name)) {
        if (
          defaultValue.hasOwnProperty(e.name) &&
          defaultValue[e.name] != null &&
          defaultValue[e.name] != undefined
        ) {
          e.value = defaultValue[e.name] + '';
          e._value = [e.value];
          const op = e.options.find(o=>{
            return o.value == e.value
          })
          e._label = op.label
          const op = e.options.find(o => {
            return o.value == e.value;
          });
          e._label = op.label;
        }
      }
      // 级联选择器,根据属性referItems找到对应的初始数据
@@ -76,7 +80,11 @@
          note,
          options = e.options;
        e.referItems.forEach(r => {
          if (defaultValue.hasOwnProperty(r)) {
          if (
            defaultValue.hasOwnProperty(r) &&
            defaultValue[r] != null &&
            defaultValue[r] != undefined
          ) {
            const o = options.find(v => {
              return v.value == defaultValue[r];
            });