zhou zhou
3 天以前 50ad3274da207e52c4fa51673db7e9dfa65184a8
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
const STATUS_OPTIONS = [
  { label: '正常', value: 1, tagType: 'success' },
  { label: '冻结', value: 0, tagType: 'danger' }
]
 
function normalizeText(value) {
  return typeof value === 'string' ? value.trim() : value
}
 
function normalizeNumber(value, fallback = void 0) {
  if (value === '' || value === null || value === undefined) {
    return fallback
  }
  const numericValue = Number(value)
  return Number.isFinite(numericValue) ? numericValue : fallback
}
 
function pickText(record, keys, fallback = '-') {
  for (const key of keys) {
    const value = record?.[key]
    if (typeof value === 'string' && value.trim()) {
      return value.trim()
    }
  }
  return fallback
}
 
export const REVISE_LOG_ITEM_REPORT_TITLE = '库位调整日志明细'
export const REVISE_LOG_ITEM_REPORT_STYLE = {
  titleAlign: 'center',
  titleLevel: 'strong',
  orientation: 'landscape',
  density: 'compact',
  showSequence: true
}
 
export function getReviseLogItemPaginationKey() {
  return {
    current: 'current',
    size: 'pageSize'
  }
}
 
export function createReviseLogItemSearchState() {
  return {
    condition: '',
    reviseLogId: '',
    locCode: '',
    matnrCode: '',
    maktx: '',
    batch: '',
    fieldsIndex: '',
    status: '',
    memo: '',
    timeStart: '',
    timeEnd: ''
  }
}
 
export function buildReviseLogItemSearchParams(params = {}) {
  const result = {}
  ;[
    'condition',
    'locCode',
    'matnrCode',
    'maktx',
    'batch',
    'fieldsIndex',
    'memo',
    'timeStart',
    'timeEnd'
  ].forEach((key) => {
    const value = normalizeText(params[key])
    if (value) {
      result[key] = value
    }
  })
 
  ;['reviseLogId', 'status'].forEach((key) => {
    const value = normalizeNumber(params[key], void 0)
    if (value !== void 0) {
      result[key] = value
    }
  })
 
  return result
}
 
export function buildReviseLogItemPageQueryParams(params = {}) {
  return {
    current: params.current || 1,
    pageSize: params.pageSize || params.size || 20,
    ...buildReviseLogItemSearchParams(params)
  }
}
 
export function getReviseLogItemStatusMeta(value) {
  const target = STATUS_OPTIONS.find((item) => Number(item.value) === Number(value))
  return target || { label: '-', value, tagType: 'info' }
}
 
export function normalizeReviseLogItemRow(record = {}) {
  const statusMeta = getReviseLogItemStatusMeta(record.status)
  const reviseQty = normalizeNumber(record.reviseQty, 0)
  const anfme = normalizeNumber(record.anfme, 0)
  return {
    ...record,
    reviseLogId: normalizeNumber(record.reviseLogId, record.reviseLogId),
    locCode: pickText(record, ['locCode']),
    matnrCode: pickText(record, ['matnrCode']),
    maktx: pickText(record, ['maktx']),
    unit: pickText(record, ['unit']),
    anfme,
    reviseQty,
    diffQty: Math.round((reviseQty - anfme) * 10000) / 10000,
    batch: pickText(record, ['batch']),
    spec: pickText(record, ['spec']),
    model: pickText(record, ['model']),
    fieldsIndex: pickText(record, ['fieldsIndex']),
    statusText: pickText(record, ['status$'], statusMeta.label),
    statusTagType: statusMeta.tagType,
    createByText: pickText(record, ['createBy$']),
    createTimeText: pickText(record, ['createTime$'], record.createTime || '-'),
    updateByText: pickText(record, ['updateBy$']),
    updateTimeText: pickText(record, ['updateTime$'], record.updateTime || '-'),
    memo: pickText(record, ['memo'], '-')
  }
}