刘光辉
5 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
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
import { getDateTimeUnit } from '@jnpf/utils';
 
import dayjs from 'dayjs';
import { cloneDeep } from 'lodash-es';
 
export function refreshFlowEditTime(fields: any[], formData: any, config: any, now = new Date()) {
  if (String(config.opType) !== '-1' || !config.id || config.disabled || config.readonly) return formData;
 
  const data = cloneDeep(formData);
  const operates = config.formOperates || [];
  const current = dayjs(now);
 
  const canWrite = (id: string) => {
    const operate = operates.find((item) => item.id === id);
    return !operate || !!operate.write;
  };
  const visit = (items: any[], record: any, tableName = '') => {
    for (const item of items || []) {
      const fieldName = item.__vModel__;
      const fieldConfig = item.__config__;
      if (!fieldConfig) continue;
 
      const operateId = tableName ? `${tableName}-${fieldName}` : fieldName;
      if (fieldConfig.jnpfKey === 'table') {
        if (fieldName && canWrite(operateId) && Array.isArray(record[fieldName])) {
          for (const row of record[fieldName]) {
            if (row && typeof row === 'object') visit(fieldConfig.children, row, fieldName);
          }
        }
        continue;
      }
 
      if (fieldName && fieldConfig.updateOnFlowEdit && canWrite(operateId)) {
        if (fieldConfig.jnpfKey === 'datePicker') record[fieldName] = current.startOf(getDateTimeUnit(item.format)).valueOf();
        if (fieldConfig.jnpfKey === 'timePicker') record[fieldName] = current.format(item.format || 'HH:mm:ss');
      }
      if (Array.isArray(fieldConfig.children)) visit(fieldConfig.children, record, tableName);
    }
  };
  visit(fields, data);
  return data;
}