schangxiang@126.com
2025-05-20 e92383f760f42050f55aa032c649814deb3b7752
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 
//表单工具文件
/**
 * 通用高级查询表单数据收集函数
 * @param {Array} formItems - 表单配置项数组
 * @param {Object} formData - 表单数据对象
 * @returns {Object} - 收集的表单数据
 */
export const collectFormDataForHighQuery = (formItems, formData) => {
     const data = {}; 
   
  // 遍历表单配置收集数据 
  formItems.forEach(item => { 
    // 收集基础字段 
    data[item.prop] = formData.value[item.prop] || ''; 
     
    // 收集过滤模式字段 
    if (item.highSelectAttrs && item.highSelectAttrs.prop) { 
      const filterModeProp = item.highSelectAttrs.prop; 
      data[filterModeProp] = formData.value[filterModeProp] || ''; 
    } 
  }); 
   
  return data; 
  }
 
 /**
 * 重置高级查询的过滤模式
 * @param formItems - 表单配置项数组
 * @param formData - 表单数据对象
 */
 export const onResetForHighSelect = (formItems, formData) => {   
    // 遍历所有表单字段   
    formItems.forEach(item => {   
      // 检查字段是否有高级查询的过滤模式配置   
      if (item.highSelectAttrs && item.highSelectAttrs.prop) {   
        const filterModeProp = item.highSelectAttrs.prop;   
        const options = item.highSelectAttrs.options || [];   
     
        // 如果存在选项,则设置为第一个选项的值   
        if (options.length > 0) {   
          // 假设选项格式为 { value, label } 或类似结构   
          const firstValue = options[0].value !== undefined ? options[0].value : options[0];   
          formData.value[filterModeProp] = firstValue;   
        }   
      }   
    });   
}   
 
/**
 * 重置高级查询
 * @param formItems - 表单配置项数组
 * @param formData - 表单数据对象
 */
export const onResetForHighQuery = (formItems, formData) => {   
    // 1. 清空所有基础字段(不包含过滤模式字段) 
    const baseFields = formItems.reduce((acc, item) => { 
        acc[item.prop] = ''; 
        return acc; 
        }, {}); 
   
        // 2. 应用基础字段初始值 
        formData.value = { ...baseFields }; 
}   
 
 
/**
 * 从表单数据中提取有效属性(排除无效字段),提交保存表单数据时用
 * @param formData 表单数据对象
 * @param excludeFields 需要排除的字段列表(默认为 ['id'])
 * @returns 处理后的有效数据对象
 */
export const extractFormDataForOnConfirm = (formData) => {
   //动态获取 formData 的所有属性值(排除无效属性,如 id)
  const data = Object.entries(formData.value).reduce((acc, [key, value]) => {
    // 过滤掉不需要提交的属性(如 id,可根据实际需求调整)
    if (key !== 'id') {
      acc[key] = value
    }
    return acc
  }, {} as Record<string, any>)
  return data;
  };
 
  /**
 * 从响应数据中提取有效字段并赋值给表单数据,打开表单数据时用
 * @param res 响应数据
 * @param formData 表单数据引用
 * @param options 配置选项
 * @returns 处理后的表单数据
 */
export function extractAndAssignFormData(res,formData) {
     // 提取有效字段(排除不需要的属性,如临时字段、非表单字段)
     const { id, ...validFormData } = res; // 保留 id 可根据需求调整
    
     // 直接赋值(自动过滤无效属性)
     formData.value = {
       ...validFormData, // 自动继承所有有效字段
       // 如需额外处理特定字段(如日期格式化),可在此补充
       // plannedStartTime: formatDate(res.plannedStartTime), 
     };
  }