Commit 54fb19a8 by linjinhong

feat:【工厂端】生产中发现缺货的订单支持打缺货标签,便于工厂人员快速识别优先补库存#1002026

parent efb77b93
......@@ -770,7 +770,7 @@ export function updateCustomDeclarationInfoApi({
formData.append(key, String(value))
}
})
return axios.post<never, BaseRespData<never>>(
'factory/podJomallOrderCn/batchUpdateCustomsClearanceInfo',
formData,
......@@ -779,3 +779,14 @@ export function updateCustomDeclarationInfoApi({
},
)
}
// 标记缺货/移除缺货共用
export function updateProductOutOfStockApi(params: {
productIds: (number | string)[]
orderFrom: string
outOfStock: boolean
}) {
return axios.post<never, BaseRespData<never>>(
`/factory/podJomallOrderProductCnUs/updateProductOutOfStock`,
params,
)
}
......@@ -286,7 +286,10 @@ export function clearBoxApi(
},
)
}
export function clearAllBoxApi(warehouseId: string | number, factoryNo: string | number | undefined) {
export function clearAllBoxApi(
warehouseId: string | number,
factoryNo: string | number | undefined,
) {
return axios.get<never, BaseRespData<never>>(
'factory/podJomallOrderUs/delPodBoxOrderDetails',
{
......@@ -685,3 +688,14 @@ export function printNormalPickPdfApi(ids: string) {
{ params: { ids } },
)
}
// 标记缺货/移除缺货共用
export function updateProductOutOfStockApi(params: {
productIds: (number | string)[]
orderFrom: string
outOfStock: boolean
}) {
return axios.post<never, BaseRespData<never>>(
`/factory/podJomallOrderProductCnUs/updateProductOutOfStock`,
params,
)
}
......@@ -54,6 +54,7 @@ export interface SearchForm {
automaticComposing?: number
employeeId?: number
blocking?: boolean
outOfStock?: boolean
}
export interface PodCnOrderListData {
id: number
......@@ -158,6 +159,7 @@ export interface ProductList {
batchArrangeNumber?: string | null
sizeType?: number | null
customTagList?: { name: string }[]
outOfStock?: boolean
}
export interface cardImages {
title: string
......
......@@ -50,6 +50,7 @@ export interface SearchForm {
automaticComposing?: number
employeeId?: number
blocking?: boolean
outOfStock?: boolean
}
export interface PodUsOrderListData {
id: number
......@@ -157,6 +158,7 @@ export interface ProductList {
sizeType?: number | null
productMark?: string | null
customTagList?: { name: string }[]
outOfStock?: boolean
}
export interface cardImages {
title: string
......
......@@ -252,6 +252,25 @@
>
</el-radio-group>
</ElFormItem>
<ElFormItem
label="标签"
v-if="status == 'TO_BE_REPLENISHMENT' || status == 'PICKING'"
>
<ElSelect
v-model="searchForm.outOfStock"
clearable
filterable
placeholder="请输入标签"
style="width: 150px"
>
<el-option
v-for="item in labelList"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</ElSelect>
</ElFormItem>
<ElFormItem v-if="status !== 'BATCH_DOWNLOAD'">
<ElPopover placement="bottom" width="600" trigger="click">
<ElForm
......@@ -416,10 +435,10 @@
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem label="标签">
<ElFormItem label="ERP标签">
<ElSelect
v-model="searchForm.tagsIdArr"
placeholder="请选择标签"
placeholder="请选择ERP标签"
clearable
filterable
multiple
......@@ -676,9 +695,9 @@
拣胚完成
</ElButton>
</span>
<span v-if="status === 'PICKING'" class="item">
<!-- <span v-if="status === 'PICKING'" class="item">
<ElButton type="success" @click="toOutOfStock"> 转至缺货 </ElButton>
</span>
</span> -->
<span v-if="status === 'TO_BE_CONFIRMED'" class="item">
<ElButton type="warning" @click="changeExceptionOrder">
转为异常单
......@@ -916,6 +935,35 @@
</ElDropdown>
</span>
<span
v-if="status === 'PICKING' || status === 'TO_BE_REPLENISHMENT'"
class="item"
>
<ElDropdown>
<el-button type="warning">
标签管理<el-icon class="el-icon--right"><ArrowDown /></el-icon>
</el-button>
<template #dropdown>
<ElDropdownMenu>
<ElDropdownItem
:disabled="
selection.length === 0 && cardSelection.length === 0
"
@click="labelFn(true)"
>添加缺货标签</ElDropdownItem
>
<ElDropdownItem
:disabled="
selection.length === 0 && cardSelection.length === 0
"
@click="labelFn(false)"
>移除缺货标签</ElDropdownItem
>
</ElDropdownMenu>
</template>
</ElDropdown>
</span>
<span
v-if="['WAIT_TRACK', 'COMPLETE', 'IN_TRANSIT'].includes(status)"
class="item"
>
......@@ -1939,6 +1987,14 @@
>
<template #top_left>
<el-tooltip
v-if="cardItem.outOfStock"
effect="light"
content="生产中缺货"
placement="bottom"
>
<el-icon color="#bd3124"> </el-icon>
</el-tooltip>
<el-tooltip
v-if="
cardItem.interceptStatus == 0 ||
cardItem.interceptStatus == 2
......@@ -2786,7 +2842,7 @@ import {
confirmProductApi,
applyForReplenishmentApi,
replenishmentSuccessApi,
toOutOfStockApi,
// toOutOfStockApi,
arrangeFinishApi,
getListCraftApi,
batchDownloadApi,
......@@ -2815,6 +2871,7 @@ import {
changeLogisticsApi,
getEmployeeListApi,
allErpCodeListApi,
updateProductOutOfStockApi,
} from '@/api/podCnOrder'
// import { logisticsCompanyAllCodelist } from '@/api/logistics.ts'
......@@ -3140,6 +3197,11 @@ const sizeList = ref<{ name: string; value: number }[]>([
{ name: '正常码', value: 1 },
{ name: '大码', value: 2 },
])
// 标签类型表
const labelList = ref<{ name: string; value: boolean }[]>([
{ name: '生产中缺货', value: true },
{ name: '无标签', value: false },
])
const handleRefreshAddress = async (row: PodCnOrderListData) => {
try {
......@@ -4495,37 +4557,37 @@ const pickingComplete = async () => {
loading.close()
}
}
const toOutOfStock = async () => {
if (cardSelection.value.length === 0) {
return ElMessage.warning('请选择数据')
}
const orderIds = cardSelection.value.map((item) => item.podJomallOrderCnId)
try {
await ElMessageBox.confirm('确定转至缺货吗?', '提示', {
cancelButtonText: '取消',
confirmButtonText: '确认',
type: 'warning',
})
} catch {
return
}
const loading = ElLoading.service({
fullscreen: true,
text: '操作中...',
background: 'rgba(0, 0, 0, 0.3)',
})
try {
const res = await toOutOfStockApi(orderIds)
if (res.code !== 200) return
search()
loadTabData()
cardSelection.value = []
} catch (e) {
console.error(e)
} finally {
loading.close()
}
}
// const toOutOfStock = async () => {
// if (cardSelection.value.length === 0) {
// return ElMessage.warning('请选择数据')
// }
// const orderIds = cardSelection.value.map((item) => item.podJomallOrderCnId)
// try {
// await ElMessageBox.confirm('确定转至缺货吗?', '提示', {
// cancelButtonText: '取消',
// confirmButtonText: '确认',
// type: 'warning',
// })
// } catch {
// return
// }
// const loading = ElLoading.service({
// fullscreen: true,
// text: '操作中...',
// background: 'rgba(0, 0, 0, 0.3)',
// })
// try {
// const res = await toOutOfStockApi(orderIds)
// if (res.code !== 200) return
// search()
// loadTabData()
// cardSelection.value = []
// } catch (e) {
// console.error(e)
// } finally {
// loading.close()
// }
// }
const inputBlur = () => {
if (!pageSize.value || Number(pageSize.value) <= 0) {
pageSize.value = initPageSize.value
......@@ -5844,6 +5906,39 @@ const getNewImageFn = (img: string) => {
}
}
const labelFn = async (type: boolean) => {
try {
await ElMessageBox.confirm('确定添加“生产中缺货”标签?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
} catch {
return
}
const loading = ElLoading.service({
fullscreen: true,
text: '操作中...',
background: 'rgba(0, 0, 0, 0.3)',
})
try {
const params = {
productIds: selection.value.map((item) => item.id),
orderFrom: 'CN',
outOfStock: type,
}
await updateProductOutOfStockApi(params)
ElMessage.success('操作成功')
search()
loadTabData()
} catch (error) {
console.log(error)
} finally {
loading.close()
}
}
useRouter().beforeEach((to, from, next) => {
handleBeforeRouteLeave(to, from, next)
})
......
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