Commit 957eb5db by wusiyi

feat:podus新增待排单页面

parent af6efe38
...@@ -326,16 +326,16 @@ export function createLogisticsOrderApi(params: { ...@@ -326,16 +326,16 @@ export function createLogisticsOrderApi(params: {
// 创建物流 // 创建物流
export function uploadExpressSheet(params: { export function uploadExpressSheet(params: {
trackingNumber:string trackingNumber: string
file: File file: File
}) { }) {
return axios.post<never, BaseRespData<never>>( return axios.post<never, BaseRespData<never>>(
'factory/podJomallOrderUs/uploadExpressSheet', 'factory/podJomallOrderUs/uploadExpressSheet',
params, params,
) )
}// 创建物流 } // 创建物流
export function updateSelfLogistics(params: { export function updateSelfLogistics(params: {
trackingNumber:string trackingNumber: string
expressSheet: string expressSheet: string
processNumber: string processNumber: string
id?: string id?: string
...@@ -362,6 +362,15 @@ export function updateLogisticsToPickingApi(params: { ids: string }) { ...@@ -362,6 +362,15 @@ export function updateLogisticsToPickingApi(params: { ids: string }) {
}, },
) )
} }
// 转至待排单
export function updateLogisticsToArrangeApi(params: { ids: string }) {
return axios.get<never, BaseRespData<never>>(
`factory/podJomallOrderUs/updateLogisticsToArrange`,
{
params,
},
)
}
//创建物流订单 //创建物流订单
export function createLogisticsOrdersApi(orderIds: (string | number)[]) { export function createLogisticsOrdersApi(orderIds: (string | number)[]) {
return axios.post<never, BaseRespData<never>>( return axios.post<never, BaseRespData<never>>(
...@@ -411,3 +420,11 @@ export function toOutOfStockApi(ids: number[]) { ...@@ -411,3 +420,11 @@ export function toOutOfStockApi(ids: number[]) {
ids, ids,
) )
} }
// 排单完成
export function arrangeFinishApi(ids: number[]) {
return axios.post<never, BaseRespData<never>>(
`factory/podJomallOrderProductUs/arrangeFinish`,
ids,
)
}
...@@ -15,6 +15,7 @@ export interface SearchForm { ...@@ -15,6 +15,7 @@ export interface SearchForm {
factorySubOrderNumber: string factorySubOrderNumber: string
status: string status: string
customizedQuantity: string customizedQuantity: string
multi: boolean | null
startTime: string | null startTime: string | null
endTime: string | null endTime: string | null
exceptionHandling: number | undefined exceptionHandling: number | undefined
...@@ -22,7 +23,8 @@ export interface SearchForm { ...@@ -22,7 +23,8 @@ export interface SearchForm {
productionClient: string productionClient: string
warehouseId: string | number warehouseId: string | number
thirdSkuCode: string thirdSkuCode: string
supplierProductNo:string supplierProductNo: string
batchArrangeNumber: string
} }
export interface PodUsOrderListData { export interface PodUsOrderListData {
id: number id: number
......
...@@ -30,21 +30,30 @@ ...@@ -30,21 +30,30 @@
> >
</el-date-picker> </el-date-picker>
</ElFormItem> </ElFormItem>
<ElFormItem label="定制类型"> <ElFormItem label="类型">
<ElSelect <el-radio-group v-model="searchForm.customizedQuantity">
v-model="searchForm.customizedQuantity" <el-radio-button label="single">单面</el-radio-button>
placeholder="定制类型" <el-radio-button label="multiple">多面</el-radio-button>
</el-radio-group>
</ElFormItem>
<ElFormItem label="数量">
<el-radio-group v-model="searchForm.multi">
<el-radio-button :label="false">单件</el-radio-button>
<el-radio-button :label="true">多件</el-radio-button>
</el-radio-group>
</ElFormItem>
<ElFormItem label="库存SKU">
<ElInput
v-model.trim="searchForm.thirdSkuCode"
placeholder="库存SKU"
clearable clearable
style="width: 100px" style="width: 150px"
> ></ElInput>
<ElOption label="单面" value="single" />
<ElOption label="多面" value="multiple" />
</ElSelect>
</ElFormItem> </ElFormItem>
<ElFormItem label="供应货号"> <ElFormItem label="供应货号">
<ElInput <ElInput
v-model="searchForm.supplierProductNo" v-model="searchForm.supplierProductNo"
placeholder="生产单号" placeholder="供应货号"
clearable clearable
style="width: 150px" style="width: 150px"
/> />
...@@ -65,6 +74,14 @@ ...@@ -65,6 +74,14 @@
style="width: 150px" style="width: 150px"
/> />
</ElFormItem> </ElFormItem>
<ElFormItem label="批次号">
<ElInput
v-model="searchForm.batchArrangeNumber"
placeholder="批次号"
clearable
style="width: 150px"
/>
</ElFormItem>
<ElFormItem label="店铺单号"> <ElFormItem label="店铺单号">
<ElInput <ElInput
v-model="searchForm.shopNumber" v-model="searchForm.shopNumber"
...@@ -74,10 +91,6 @@ ...@@ -74,10 +91,6 @@
/> />
</ElFormItem> </ElFormItem>
<ElFormItem> <ElFormItem>
<ElButton type="primary" @click="search">查询</ElButton>
</ElFormItem>
<ElFormItem>
<ElPopover placement="bottom" width="600" trigger="click"> <ElPopover placement="bottom" width="600" trigger="click">
<ElForm <ElForm
:model="searchForm" :model="searchForm"
...@@ -165,22 +178,14 @@ ...@@ -165,22 +178,14 @@
style="width: 150px" style="width: 150px"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem>
<ElFormItem label="Base SKU"> <!-- <ElFormItem label="Base SKU">
<ElInput <ElInput
v-model.trim="searchForm.baseSku" v-model.trim="searchForm.baseSku"
placeholder=" Base SKU" placeholder=" Base SKU"
clearable clearable
style="width: 150px" style="width: 150px"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem> -->
<ElFormItem label="库存SKU">
<ElInput
v-model.trim="searchForm.thirdSkuCode"
placeholder="库存SKU"
clearable
style="width: 150px"
></ElInput>
</ElFormItem>
<ElFormItem label="物流跟踪号"> <ElFormItem label="物流跟踪号">
<ElInput <ElInput
v-model.trim="searchForm.logisticsTracking" v-model.trim="searchForm.logisticsTracking"
...@@ -213,6 +218,12 @@ ...@@ -213,6 +218,12 @@
</template> </template>
</ElPopover> </ElPopover>
</ElFormItem> </ElFormItem>
<ElFormItem>
<ElButton type="primary" @click="search">查询</ElButton>
</ElFormItem>
<ElFormItem>
<ElButton type="danger" @click="resetSearchForm">清空</ElButton>
</ElFormItem>
</ElForm> </ElForm>
</div> </div>
<div class="header-filter-tab"> <div class="header-filter-tab">
...@@ -393,7 +404,7 @@ ...@@ -393,7 +404,7 @@
</span> </span>
<span v-if="status === 'CREATE_LOGISTICS'" class="item"> <span v-if="status === 'CREATE_LOGISTICS'" class="item">
<ElButton type="warning" @click="logisticsToPicking"> <ElButton type="warning" @click="logisticsToPicking">
转至待拣胚 转至待排单
</ElButton> </ElButton>
</span> </span>
<span <span
...@@ -433,7 +444,9 @@ ...@@ -433,7 +444,9 @@
转至待创建物流 转至待创建物流
</ElButton> </ElButton>
</span> </span>
<span v-if="status === 'TO_BE_ARRANGE'" class="item">
<ElButton type="warning" @click="arrangeFinish">排单完成</ElButton>
</span>
<span class="item"> <span class="item">
<ElButton type="primary" @click="downloadMaterial">下载素材</ElButton> <ElButton type="primary" @click="downloadMaterial">下载素材</ElButton>
</span> </span>
...@@ -456,7 +469,8 @@ ...@@ -456,7 +469,8 @@
v-if=" v-if="
status !== 'IN_PRODUCTION' && status !== 'IN_PRODUCTION' &&
status !== 'PICKING' && status !== 'PICKING' &&
status !== 'TO_BE_REPLENISHMENT' status !== 'TO_BE_REPLENISHMENT' &&
status !== 'TO_BE_ARRANGE'
" "
v-loading="loading" v-loading="loading"
element-loading-text="加载中..." element-loading-text="加载中..."
...@@ -1516,7 +1530,8 @@ import { ...@@ -1516,7 +1530,8 @@ import {
composingDesignImages, composingDesignImages,
changeLogisticsApi, changeLogisticsApi,
createLogisticsOrderApi, createLogisticsOrderApi,
updateLogisticsToPickingApi, // updateLogisticsToPickingApi,
updateLogisticsToArrangeApi,
createLogisticsOrdersApi, createLogisticsOrdersApi,
syncReceiverAddress, syncReceiverAddress,
refreshAddressApi, refreshAddressApi,
...@@ -1528,6 +1543,7 @@ import { ...@@ -1528,6 +1543,7 @@ import {
applyForReplenishmentApi, applyForReplenishmentApi,
replenishmentSuccessApi, replenishmentSuccessApi,
toOutOfStockApi, toOutOfStockApi,
arrangeFinishApi,
} from '@/api/podUsOrder' } from '@/api/podUsOrder'
import { BaseRespData } from '@/types/api' import { BaseRespData } from '@/types/api'
...@@ -1616,7 +1632,7 @@ const confirmSelectionData = ref<LogisticsData[]>([]) ...@@ -1616,7 +1632,7 @@ const confirmSelectionData = ref<LogisticsData[]>([])
const confirmRowData = ref<ProductList | null>(null) const confirmRowData = ref<ProductList | null>(null)
const status = ref('TO_BE_CONFIRMED') const status = ref('TO_BE_CONFIRMED')
const detailData = ref({}) const detailData = ref({})
const [searchForm] = useValue<SearchForm>({ const [searchForm, resetSearchForm] = useValue<SearchForm>({
timeType: null, timeType: null,
shopNumber: '', shopNumber: '',
shipmentType: '', shipmentType: '',
...@@ -1628,6 +1644,7 @@ const [searchForm] = useValue<SearchForm>({ ...@@ -1628,6 +1644,7 @@ const [searchForm] = useValue<SearchForm>({
factorySubOrderNumber: '', factorySubOrderNumber: '',
status: '', status: '',
customizedQuantity: '', customizedQuantity: '',
multi: null,
startTime: null, startTime: null,
endTime: null, endTime: null,
exceptionHandling: undefined, exceptionHandling: undefined,
...@@ -1635,7 +1652,8 @@ const [searchForm] = useValue<SearchForm>({ ...@@ -1635,7 +1652,8 @@ const [searchForm] = useValue<SearchForm>({
productionClient: '', productionClient: '',
warehouseId: '', warehouseId: '',
thirdSkuCode: '', thirdSkuCode: '',
supplierProductNo:'' supplierProductNo: '',
batchArrangeNumber: '',
}) })
const exceptionStatus = ref(1) const exceptionStatus = ref(1)
const userMarkList = ref<string[]>([]) const userMarkList = ref<string[]>([])
...@@ -1895,7 +1913,8 @@ const { ...@@ -1895,7 +1913,8 @@ const {
if ( if (
status.value !== 'IN_PRODUCTION' && status.value !== 'IN_PRODUCTION' &&
status.value !== 'PICKING' && status.value !== 'PICKING' &&
status.value !== 'TO_BE_REPLENISHMENT' status.value !== 'TO_BE_REPLENISHMENT' &&
status.value !== 'TO_BE_ARRANGE'
) { ) {
return getOrderList( return getOrderList(
{ {
...@@ -2518,6 +2537,44 @@ const downloadMaterial = async () => { ...@@ -2518,6 +2537,44 @@ const downloadMaterial = async () => {
loading.close() loading.close()
} }
} }
// 排单完成
const arrangeFinish = async () => {
const selectedIds = cardSelection.value.map((item) => item.id)
if (selectedIds.length === 0) {
return ElMessage({
message: '请选择订单',
type: 'warning',
offset: window.innerHeight / 2,
})
}
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 arrangeFinishApi(selectedIds)
if (res.code !== 200) return
ElMessage.success('操作成功')
search()
loadTabData()
} catch (e) {
console.error(e)
} finally {
loading.close()
}
}
const logList = ref<LogListData[]>([]) const logList = ref<LogListData[]>([])
const logVisible = ref(false) const logVisible = ref(false)
const operationLog = async (id: number, e: MouseEvent | null) => { const operationLog = async (id: number, e: MouseEvent | null) => {
...@@ -2617,7 +2674,7 @@ const getOrderByIdApi = async (type: string) => { ...@@ -2617,7 +2674,7 @@ const getOrderByIdApi = async (type: string) => {
factoryOrderNumber?: string factoryOrderNumber?: string
message: string message: string
}[]) || [] }[]) || []
resultRefs.value?.showDialog() resultRefs.value?.showDialog()
} else if (isString(res.data)) { } else if (isString(res.data)) {
window.open(filePath + res.data) window.open(filePath + res.data)
} }
...@@ -2816,21 +2873,21 @@ const toBePicking = async () => { ...@@ -2816,21 +2873,21 @@ const toBePicking = async () => {
loading.close() loading.close()
} }
} }
//转至待拣胚 //转至待排单
const logisticsToPicking = async () => { const logisticsToPicking = async () => {
if (selection.value.length === 0) { if (selection.value.length === 0) {
return ElMessage.warning('请选择数据') return ElMessage.warning('请选择数据')
} }
if ( // if (
selection.value.some( // selection.value.some(
(el) => // (el) =>
el.trackingNumber == null || String(el.trackingNumber).trim() === '', // el.trackingNumber == null || String(el.trackingNumber).trim() === '',
) // )
) { // ) {
return ElMessage.warning('选中数据中有未创建物流的订单,请先创建物流') // return ElMessage.warning('选中数据中有未创建物流的订单,请先创建物流')
} // }
try { try {
await ElMessageBox.confirm('确定转至待拣胚吗?', '提示', { await ElMessageBox.confirm('确定转至待排单吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
...@@ -2844,7 +2901,7 @@ const logisticsToPicking = async () => { ...@@ -2844,7 +2901,7 @@ const logisticsToPicking = async () => {
background: 'rgba(0, 0, 0, 0.3)', background: 'rgba(0, 0, 0, 0.3)',
}) })
try { try {
const res = await updateLogisticsToPickingApi({ const res = await updateLogisticsToArrangeApi({
ids: selection.value.map((item) => item.id).join(','), ids: selection.value.map((item) => item.id).join(','),
}) })
if (res.code !== 200) return if (res.code !== 200) return
......
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