Commit d9156ae7 by qinjianhui

feat: 工厂订单取消后挂起功能接口联调

parent 93c4ac4e
......@@ -57,6 +57,7 @@ declare module 'vue' {
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload']
Icon: typeof import('./src/components/Icon.vue')['default']
ImageView: typeof import('./src/components/ImageView.vue')['default']
......
import axios from './axios'
import type { BasePaginationData } from '@/types/api'
import type { BasePaginationData, BaseRespData } from '@/types/api'
import type { CancelOrderProcessStateGroupMap } from '@/types/api/cancelOrderProcess'
import type { operateOrderListData } from '@/types/api/factoryOrderNew'
function normalizePodOrderQueryPayload(
......@@ -17,14 +18,36 @@ function normalizePodOrderQueryPayload(
}
}
export function getCancelOrderProcessStateGroupMapApi() {
return axios.get<never, BaseRespData<CancelOrderProcessStateGroupMap>>(
'factory/podOrderOperationForReclaim/findStateGroupMap',
)
}
export function getCancelOrderProcessListApi(
data: Record<string, unknown>,
currentPage: number,
pageSize: number,
alreadyInStock: boolean,
) {
const body = normalizePodOrderQueryPayload({ ...data })
return axios.post<never, BasePaginationData<operateOrderListData>>(
'factory/podOrderOperation/list_page',
{ ...body, status: 'PENDING_SCHEDULE', currentPage, pageSize },
'factory/podOrderOperationForReclaim/list_page',
{ ...body, currentPage, pageSize, alreadyInStock },
)
}
export function getOperationInfoByNoApi(operationNo: string) {
return axios.get<never, BaseRespData<operateOrderListData>>(
`factory/podOrderOperationForReclaim/getByOperationNo?operationNo=${operationNo}`,
)
}
export function completeDeliveryByCancelOrderProcessApi(data: {
operationNo: string
inboundType: number
warehouseId: number
}) {
return axios.post<never, BaseRespData<never>>(
'factory/podOrderOperationForReclaim/storeAfterScan',
data,
)
}
export interface CancelOrderProcessStateGroupMap {
alreadyInStock: number
NotInStock: number
}
......@@ -3,19 +3,19 @@
<div class="order-status">
<div
class="order-status-item"
:class="{ 'order-status-item-active': currentStatus === 'processed' }"
@click="handleOrderStatusClick('processed')"
:class="{ 'order-status-item-active': currentStatus === 'unprocessed' }"
@click="handleOrderStatusClick('unprocessed')"
>
<span>处理</span>
<span>({{ orderStatus.processed }})</span>
<span>处理</span>
<span>({{ orderStatus.NotInStock }})</span>
</div>
<div
class="order-status-item"
:class="{ 'order-status-item-active': currentStatus === 'unprocessed' }"
@click="handleOrderStatusClick('unprocessed')"
:class="{ 'order-status-item-active': currentStatus === 'processed' }"
@click="handleOrderStatusClick('processed')"
>
<span>处理</span>
<span>({{ orderStatus.unprocessed }})</span>
<span>处理</span>
<span>({{ orderStatus.alreadyInStock }})</span>
</div>
</div>
<div class="order-content flex-1 flex-column overflow-hidden">
......@@ -303,12 +303,12 @@
</div>
</div>
<div class="operation-list">
<span v-if="currentStatus === 'processed'" class="item">
<span v-if="currentStatus === 'unprocessed'" class="item">
<ElButton type="primary" @click="handleEmbryoInStock"
>胚衣入库</ElButton
>
</span>
<span v-if="currentStatus === 'processed'" class="item">
<span v-if="currentStatus === 'unprocessed'" class="item">
<ElButton type="success" @click="handleProductionCompleteInStock"
>生产完成入库</ElButton
>
......@@ -379,12 +379,13 @@ import CardLayout from '../factoryOrderNew/component/CardLayout.vue'
import platformJson from '../../../json/platform.json'
import { useOrderDictionaries } from '../factoryOrderNew/hooks/useOrderDictionaries'
import { operateOrderListData } from '@/types/api/factoryOrderNew'
import { getFactoryOrderNewOperateDetailApi } from '@/api/factoryOrderNew'
import {
completeDeliveryApi,
getByOperationNoLogApi,
getFactoryOrderNewOperateDetailApi,
} from '@/api/factoryOrderNew'
import { getCancelOrderProcessListApi } from '@/api/cancelOrderProcess'
getCancelOrderProcessListApi,
getCancelOrderProcessStateGroupMapApi,
getOperationInfoByNoApi,
completeDeliveryByCancelOrderProcessApi,
} from '@/api/cancelOrderProcess'
import type { CardLayoutListFetcher } from '@/types/api/factoryOrderNew'
import LogisticsWaySelect from '@/views/logistics/components/LogisticsWaySelect'
import { SearchForm } from '@/types/api/order/factoryOrderNew'
......@@ -410,11 +411,17 @@ import {
warehouseInfo,
warehouseInfoGetAll,
} from '@/api/warehouse'
import type { CancelOrderProcessStateGroupMap } from '@/types/api/cancelOrderProcess'
const cardLayoutRef = ref()
const fetchCardList: CardLayoutListFetcher = async (payload, current, size) => {
const res = await getCancelOrderProcessListApi(payload, current, size)
const res = await getCancelOrderProcessListApi(
payload,
current,
size,
currentStatus.value === 'processed',
)
return res.data
}
......@@ -480,8 +487,21 @@ const reset = () => {
search()
})
}
const loadOrderStatusCounts = async () => {
try {
const res = await getCancelOrderProcessStateGroupMapApi()
if (res.code !== 200) return
orderStatus.value = {
alreadyInStock: res.data.alreadyInStock ?? 0,
NotInStock: res.data.NotInStock ?? 0,
}
} catch (e) {
console.error(e)
}
}
const search = () => {
cardLayoutRef.value?.clearSelection()
nextTick(() => {
cardLayoutRef.value?.refresh()
})
......@@ -512,8 +532,14 @@ const handleViewDetail = async (item: operateOrderListData) => {
}
}
const getOperationByNo = (operationNo: string) =>
getByOperationNoLogApi(operationNo) as Promise<{ data?: unknown }>
const completeOperationById = (ids: number[]) => completeDeliveryApi(ids)
getOperationInfoByNoApi(operationNo) as Promise<{ data?: unknown }>
const fastInboundType = ref(0)
const completeOperationById = (_: number[], detail: Record<string, unknown>) =>
completeDeliveryByCancelOrderProcessApi({
operationNo: detail.operationNo as string,
warehouseId: detail.warehouseId as number,
inboundType: fastInboundType.value,
})
const handleFastProductionSuccess = (data: ResultInfoDataItem[]) => {
const result = data[0]
if (!result.status) {
......@@ -540,14 +566,11 @@ const {
productTypeGroups,
loadAllDictionaries,
} = useOrderDictionaries()
const orderStatus = ref<{
processed: number
unprocessed: number
}>({
processed: 0,
unprocessed: 0,
const orderStatus = ref<CancelOrderProcessStateGroupMap>({
alreadyInStock: 0,
NotInStock: 0,
})
const currentStatus = ref<'processed' | 'unprocessed'>('processed')
const currentStatus = ref<'processed' | 'unprocessed'>('unprocessed')
const handleOrderStatusClick = (status: 'processed' | 'unprocessed') => {
currentStatus.value = status
search()
......@@ -615,10 +638,11 @@ const handleEmbryoInStock = async () => {
if (cardSelectList.value.length !== 0) {
handleEmbryoInStockByCard()
} else {
handleEmbryoInFastStock()
handleEmbryoInFastStock(0)
}
}
const handleEmbryoInFastStock = async () => {
const handleEmbryoInFastStock = (inboundType: number) => {
fastInboundType.value = inboundType
fastKey.value = 'fastReceipt'
detailVisible.value = true
detailData.value = {}
......@@ -771,14 +795,19 @@ const handleReceiptSave = async () => {
const handleProductionCompleteInStock = () => {
// 客户定制的单子不能操作生产完成入库,提示:客户定制商品,不能入库!
if (cardSelectList.value.length !== 0) {
if (cardSelectList.value.some((r) => r.inboundType === 2)) {
ElMessage.error('客户定制商品,不能入库!')
return
}
handleEmbryoInStockByCard()
} else {
handleEmbryoInFastStock()
handleEmbryoInFastStock(1)
}
}
onMounted(() => {
void loadAllDictionaries()
void loadOrderStatusCounts()
search()
})
</script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment