|
|
@@ -66,17 +66,8 @@ type Props = {
|
|
|
const emptyTxt = '(空)'
|
|
|
const requestBaseURL = envFlag ? '/api/' : `${baseUrlTemp}/api/`
|
|
|
const saveApi = 'cms/checkFirmVersion/save'
|
|
|
-const submitApiCandidates = [
|
|
|
- 'cms/checkFirmVersion/submit',
|
|
|
- 'cms/checkFirmVersion/commit',
|
|
|
- 'cms/checkFirmVersion/effect',
|
|
|
- 'cms/checkFirmVersion/publish'
|
|
|
-]
|
|
|
-const deleteApiCandidates = [
|
|
|
- 'cms/checkFirmVersion/delete',
|
|
|
- 'cms/checkFirmVersion/remove',
|
|
|
- 'cms/checkFirmVersion/del'
|
|
|
-]
|
|
|
+const updateSubmitApi = 'cms/checkFirmVersion/updateSubmit'
|
|
|
+const deleteApi = 'cms/checkFirmVersion/delete'
|
|
|
const goodsTotalCandidates = [
|
|
|
'ledgerRegister',
|
|
|
'ledgerTotal',
|
|
|
@@ -291,9 +282,11 @@ const resolveUserNameText = (
|
|
|
return joinDisplayText(parseNameList(fallback))
|
|
|
}
|
|
|
|
|
|
-const normalizeGoodsRow = (item: GoodsRowType, index: number, handlerName?: string) => {
|
|
|
+const normalizeGoodsRow = (item: GoodsRowType, index: number) => {
|
|
|
const unInfoList = parseInventoryMultiValue(item.unInfoList || item.unInfo)
|
|
|
const reasonInfoList = parseInventoryMultiValue(item.reasonInfoList || item.reasonInfo)
|
|
|
+ const rowHandler = pickValue(item, ['handler', 'handlerName'], emptyTxt)
|
|
|
+ const rowHandleTime = pickValue(item, ['handleTime'], emptyTxt)
|
|
|
|
|
|
return {
|
|
|
...item,
|
|
|
@@ -308,14 +301,15 @@ const normalizeGoodsRow = (item: GoodsRowType, index: number, handlerName?: stri
|
|
|
reasonInfoList,
|
|
|
unInfo: unInfoList.join(multiValueSeparator),
|
|
|
reasonInfo: reasonInfoList.join(multiValueSeparator),
|
|
|
- handler: item.handler || handlerName || emptyTxt,
|
|
|
+ handler: rowHandler,
|
|
|
status: pickValue(item, ['status', 'checkStatus', 'inventoryStatus'], ''),
|
|
|
- updateTime: item.updateTime || item.createTime || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
|
|
+ handleTime: rowHandleTime,
|
|
|
+ updateTime: rowHandleTime
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const normalizeRangeGoodsRow = (item: GoodsRowType, index: number, handlerName?: string) => {
|
|
|
- const { id, ...rest } = normalizeGoodsRow(item, index, handlerName)
|
|
|
+const normalizeRangeGoodsRow = (item: GoodsRowType, index: number) => {
|
|
|
+ const { id, ...rest } = normalizeGoodsRow(item, index)
|
|
|
return rest
|
|
|
}
|
|
|
|
|
|
@@ -363,6 +357,18 @@ const resolveSubmitStatusText = (value: any) => {
|
|
|
const resolveSubmitStatus = (info: any) =>
|
|
|
resolveSubmitStatusText(pickValue(info, ['submitStatus'], ''))
|
|
|
|
|
|
+const sanitizePlaceholderValue = (value: any): any => {
|
|
|
+ if (value === emptyTxt) return ''
|
|
|
+ if (Array.isArray(value)) return value.map(item => sanitizePlaceholderValue(item))
|
|
|
+ if (value && typeof value === 'object') {
|
|
|
+ return Object.keys(value).reduce((prev, key) => {
|
|
|
+ prev[key] = sanitizePlaceholderValue(value[key])
|
|
|
+ return prev
|
|
|
+ }, {} as Record<string, any>)
|
|
|
+ }
|
|
|
+ return value
|
|
|
+}
|
|
|
+
|
|
|
const buildBasePayload = (
|
|
|
formData: AddFormType,
|
|
|
userMap: Record<string, string>,
|
|
|
@@ -381,7 +387,7 @@ const buildBasePayload = (
|
|
|
owner: ownerName,
|
|
|
handlerIds,
|
|
|
handler: handlerName,
|
|
|
- firms: list
|
|
|
+ firms: sanitizePlaceholderValue(list)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -481,8 +487,8 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
|
|
|
return {
|
|
|
all: pickNumber(detailInfo, ['count']) ?? localCount.all,
|
|
|
- pending: pickNumber(detailInfo, ['checkedCount']) ?? localCount.pending,
|
|
|
- done: pickNumber(detailInfo, ['unCheckedCount']) ?? localCount.done
|
|
|
+ pending: pickNumber(detailInfo, ['unCheckedCount']) ?? localCount.pending,
|
|
|
+ done: pickNumber(detailInfo, ['checkedCount']) ?? localCount.done
|
|
|
}
|
|
|
}, [detailInfo, pageMode, selectedList])
|
|
|
|
|
|
@@ -630,10 +636,8 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
syncTableList(activeRangeForm, selectedList, goodsTab)
|
|
|
}, [activeRangeForm, goodsTab, selectedList, syncTableList])
|
|
|
|
|
|
- const getDetailGoodsListFu = useCallback((info: any, handlerName?: string) => {
|
|
|
- return getDetailGoodsRecords(info).map((item: any, index: number) =>
|
|
|
- normalizeGoodsRow(item, index, handlerName)
|
|
|
- )
|
|
|
+ const getDetailGoodsListFu = useCallback((info: any) => {
|
|
|
+ return getDetailGoodsRecords(info).map((item: any, index: number) => normalizeGoodsRow(item, index))
|
|
|
}, [])
|
|
|
|
|
|
const getDetailFu = useCallback(async () => {
|
|
|
@@ -643,7 +647,7 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
const res = await A2_APIgetInfo(detailId)
|
|
|
if (res.code === 0) {
|
|
|
const info = res.data || {}
|
|
|
- const list = getDetailGoodsListFu(info, info.handler || info.handlerName)
|
|
|
+ const list = getDetailGoodsListFu(info)
|
|
|
setDetailInfo(info)
|
|
|
setFormData(buildDetailForm(info))
|
|
|
setSelectedList(list)
|
|
|
@@ -674,7 +678,7 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
const res = await http.post('cms/importLedger/pageList', buildRangePayload(query))
|
|
|
if (res.code === 0) {
|
|
|
const list = (res.data.records || []).map((item: any, index: number) =>
|
|
|
- normalizeRangeGoodsRow(item, index, formData.handlerName)
|
|
|
+ normalizeRangeGoodsRow(item, index)
|
|
|
)
|
|
|
setRangeModalList(list)
|
|
|
}
|
|
|
@@ -682,7 +686,7 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
setRangeModalLoading(false)
|
|
|
}
|
|
|
},
|
|
|
- [formData.handlerName]
|
|
|
+ []
|
|
|
)
|
|
|
|
|
|
const openRangeModalFu = useCallback(() => {
|
|
|
@@ -862,14 +866,6 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
setRemarkValue('')
|
|
|
}, [currentRemarkKey, remarkValue, saveFillGoodsFu, selectedList])
|
|
|
|
|
|
- const requestByCandidates = useCallback(async (apiList: string[], payload: any) => {
|
|
|
- for (const api of apiList) {
|
|
|
- const res = await silentPost(api, payload)
|
|
|
- if (res) return res
|
|
|
- }
|
|
|
- return null
|
|
|
- }, [])
|
|
|
-
|
|
|
const buildValidateList = useCallback(() => {
|
|
|
return selectedList
|
|
|
.map((item, index) => {
|
|
|
@@ -909,19 +905,20 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
if (!detailId) return
|
|
|
setSubmitLoading(true)
|
|
|
try {
|
|
|
- const res = await requestByCandidates(submitApiCandidates, { id: detailId })
|
|
|
- if (res) {
|
|
|
- setValidateModalOpen(false)
|
|
|
- MessageFu.success(res.msg || '提交成功')
|
|
|
- if (saveSuccessFu) saveSuccessFu()
|
|
|
- await getDetailFu()
|
|
|
+ const res = await silentPost(updateSubmitApi, { id: detailId, submitStatus: 1 })
|
|
|
+ if (!res) {
|
|
|
+ MessageFu.warning('提交失败,请稍后重试')
|
|
|
return
|
|
|
}
|
|
|
- MessageFu.warning('暂未匹配到提交盘点单接口,请联系管理员确认')
|
|
|
+
|
|
|
+ setValidateModalOpen(false)
|
|
|
+ MessageFu.success(res.msg || '提交成功')
|
|
|
+ if (saveSuccessFu) saveSuccessFu()
|
|
|
+ await getDetailFu()
|
|
|
} finally {
|
|
|
setSubmitLoading(false)
|
|
|
}
|
|
|
- }, [detailId, getDetailFu, requestByCandidates, saveSuccessFu])
|
|
|
+ }, [detailId, getDetailFu, saveSuccessFu])
|
|
|
|
|
|
const saveFu = useCallback(async () => {
|
|
|
if (!formData.name.trim()) return MessageFu.warning('请填写盘点名称')
|
|
|
@@ -988,26 +985,19 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
if (!detailId) return
|
|
|
setSubmitLoading(true)
|
|
|
try {
|
|
|
- const res = await requestByCandidates(
|
|
|
- [
|
|
|
- 'cms/checkFirmVersion/recall',
|
|
|
- 'cms/checkFirmVersion/revoke',
|
|
|
- 'cms/checkFirmVersion/withdraw',
|
|
|
- 'cms/checkFirmVersion/cancelSubmit'
|
|
|
- ],
|
|
|
- { id: detailId }
|
|
|
- )
|
|
|
- if (res) {
|
|
|
- MessageFu.success(res.msg || '撤回成功')
|
|
|
- if (saveSuccessFu) saveSuccessFu()
|
|
|
- await getDetailFu()
|
|
|
+ const res = await silentPost(updateSubmitApi, { id: detailId, submitStatus: 0 })
|
|
|
+ if (!res) {
|
|
|
+ MessageFu.warning('撤回失败,请稍后重试')
|
|
|
return
|
|
|
}
|
|
|
- MessageFu.warning('暂未匹配到撤回盘点单接口,请联系管理员确认')
|
|
|
+
|
|
|
+ MessageFu.success(res.msg || '撤回成功')
|
|
|
+ if (saveSuccessFu) saveSuccessFu()
|
|
|
+ await getDetailFu()
|
|
|
} finally {
|
|
|
setSubmitLoading(false)
|
|
|
}
|
|
|
- }, [detailId, getDetailFu, requestByCandidates, saveSuccessFu])
|
|
|
+ }, [detailId, getDetailFu, saveSuccessFu])
|
|
|
|
|
|
const exportValidateFu = useCallback(() => {
|
|
|
if (!validateList.length) return
|
|
|
@@ -1043,20 +1033,21 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
onOk: async () => {
|
|
|
setDeleteLoading(true)
|
|
|
try {
|
|
|
- const res = await requestByCandidates(deleteApiCandidates, { id: detailId })
|
|
|
- if (res) {
|
|
|
- MessageFu.success(res.msg || '删除成功')
|
|
|
- if (saveSuccessFu) saveSuccessFu()
|
|
|
- if (closeFu) closeFu()
|
|
|
+ const res = await silentPost(deleteApi, { id: detailId })
|
|
|
+ if (!res) {
|
|
|
+ MessageFu.warning('删除失败,请稍后重试')
|
|
|
return
|
|
|
}
|
|
|
- MessageFu.warning('暂未匹配到删除盘点单接口,请联系管理员确认')
|
|
|
+
|
|
|
+ MessageFu.success(res.msg || '删除成功')
|
|
|
+ if (saveSuccessFu) saveSuccessFu()
|
|
|
+ if (closeFu) closeFu()
|
|
|
} finally {
|
|
|
setDeleteLoading(false)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
- }, [closeFu, detailId, requestByCandidates, saveSuccessFu])
|
|
|
+ }, [closeFu, detailId, saveSuccessFu])
|
|
|
|
|
|
const rangeRowSelection = useMemo(
|
|
|
() => ({
|
|
|
@@ -1321,7 +1312,7 @@ function A2add({ closeFu, saveSuccessFu, detailId, mode = 'add' }: Props) {
|
|
|
},
|
|
|
{
|
|
|
title: '编辑时间',
|
|
|
- dataIndex: 'updateTime',
|
|
|
+ dataIndex: 'handleTime',
|
|
|
width: 180
|
|
|
}
|
|
|
],
|