zhou zhou
13 小时以前 a49845f424ae5b1e43e391837a55c43ce07ea62d
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
import request from '@/utils/http'
 
function normalizeText(value) {
  return typeof value === 'string' ? value.trim() : value
}
 
function normalizeOptionalText(value) {
  const text = normalizeText(value)
  return text === '-' ? '' : text
}
 
function normalizeNumber(value) {
  if (value === '' || value === null || value === undefined) {
    return value
  }
  const numericValue = Number(value)
  return Number.isFinite(numericValue) ? numericValue : value
}
 
function compactDefinedFields(record = {}) {
  return Object.fromEntries(
    Object.entries(record).filter(([, value]) => value !== undefined && value !== null && value !== '')
  )
}
 
function filterParams(params = {}, ignoredKeys = []) {
  return Object.fromEntries(
    Object.entries(params)
      .filter(([key, value]) => {
        if (ignoredKeys.includes(key)) return false
        if (value === undefined || value === null) return false
        if (typeof value === 'string' && value.trim() === '') return false
        return true
      })
      .map(([key, value]) => [key, typeof value === 'string' ? normalizeText(value) : value])
  )
}
 
export function buildOutBoundInventoryPageParams(params = {}) {
  return {
    current: params.current || 1,
    pageSize: params.pageSize || params.size || 20,
    ...filterParams(params, ['current', 'pageSize', 'size'])
  }
}
 
export function fetchOutboundInventoryPage(params = {}) {
  return request.post({
    url: '/locItem/useO/page',
    params: buildOutBoundInventoryPageParams(params)
  })
}
 
export function fetchGetOutboundInventoryDetail(id) {
  return request.get({
    url: `/locItem/${id}`
  })
}
 
export function fetchGenerateOutboundTask(payload = {}) {
  return request.post({
    url: '/locItem/generate/task',
    data: payload
  })
}
 
export function fetchOutboundSiteList(params = {}) {
  return request.post({
    url: '/selectStaList/list',
    params: {
      type: params.type || [101, 103]
    }
  })
}
 
export function normalizeOutboundTaskPayload(payload = {}) {
  return {
    ...payload,
    siteNo: normalizeOptionalText(payload.siteNo),
    memo: normalizeText(payload.memo),
    items: Array.isArray(payload.items)
      ? payload.items.map((item) =>
          compactDefinedFields({
            ...item,
            id: normalizeNumber(item.id),
            locId: normalizeNumber(item.locId),
            orderId: normalizeNumber(item.orderId),
            orderItemId: normalizeNumber(item.orderItemId),
            wkType: normalizeNumber(item.wkType),
            matnrId: normalizeNumber(item.matnrId),
            outQty: Number(normalizeNumber(item.outQty) || 0),
            anfme: Number(normalizeNumber(item.anfme) || 0),
            workQty: Number(normalizeNumber(item.workQty) || 0),
            qty: Number(normalizeNumber(item.qty) || 0),
            channel: normalizeNumber(item.channel),
            status: normalizeNumber(item.status),
            siteNo: normalizeOptionalText(item.siteNo),
            memo: normalizeOptionalText(item.memo)
          })
        )
      : []
  }
}