Commit 0eb970c3 by qinjianhui

fix: 完成发货

parent dbcad4dc
......@@ -213,3 +213,13 @@ export function getWaitShipmentCount(
},
)
}
// 完成发货
export function completeDeliveryApi(
productIdList: number[],
data: ShipmentForm,
) {
return axios.post<never, BaseRespData<never>>(
'factory/podJomallOrder/completeDelivery ',
{ productIdList, ...data },
)
}
......@@ -108,6 +108,7 @@ export interface ProductList {
factorySubOrderNumber?: string
podOrderId?: number | string
isProduction?: boolean
imageAry?: string
}
export interface MemoList {
......
......@@ -180,9 +180,18 @@
</div>
</div>
<div v-if="currentRow" class="shipment-order-detail_info">
<div class="shipment-order-detail_info_image">
<div v-if="!currentRow.imageAry" class="shipment-order-detail_info_image">
<img :src="currentRow.variantImage" style="width: 100%" />
</div>
<div v-else class="shipment-order-detail_info_image-list">
<div
v-for="item in JSON.parse(currentRow.imageAry)"
:key="item"
class="shipment-order-detail_info_image-list-item"
>
<img :src="item.url" style="width: 100%" />
</div>
</div>
<div class="shipment-order-detail_info_other">
<div class="order-norm">
<span class="order-norm-label" style="margin-right: 6px">
......@@ -446,4 +455,12 @@ const calculateTotals = (ee: OrderData) => {
font-weight: bold;
}
}
.shipment-order-detail_info_image-list {
height: 100%;
overflow: auto;
border: 1px solid #eee;
.shipment-order-detail_info_image-list-item:not(:last-child) {
border-bottom: 1px solid #eee;
}
}
</style>
......@@ -185,6 +185,9 @@
>
<ElButton type="success" @click="confirmDelivery">发货</ElButton>
</span>
<span v-if="status === 'WAIT_SHIPMENT'" class="item">
<ElButton type="warning" @click="completeDelivery">完成发货</ElButton>
</span>
<span v-if="status === 'IN_PRODUCTION'" class="item">
<ElButton type="danger" @click="voidedBtn">作废</ElButton>
</span>
......@@ -913,6 +916,68 @@
:table-right-menu-visible="tableRightMenuVisible"
@on-copy-change="onCopyChange"
/>
<el-dialog
v-model="completeShipmentVisible"
title="完成发货"
width="600px"
:close-on-click-modal="false"
>
<el-form
ref="completeShipmentFormRef"
:model="completeShipmentForm"
:rules="completeShipmentRules"
label-width="100px"
>
<el-form-item label="发货方式" prop="shippingWay">
<el-select
v-model="completeShipmentForm.shippingWay"
placeholder="请选择发货方式"
style="width: 100%"
>
<el-option label="送货上门" value="1" />
<el-option label="快递" value="2" />
</el-select>
</el-form-item>
<template v-if="completeShipmentForm.shippingWay === '2'">
<el-form-item label="物流名称" prop="carriageName">
<el-select
v-model="completeShipmentForm.carriageName"
filterable
placeholder="请选择物流名称"
style="width: 100%"
>
<el-option
v-for="item in logisticsCompanyList"
:key="item.id"
:value="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="物流跟踪号" prop="logisticsTracking">
<el-input
v-model="completeShipmentForm.logisticsTracking"
placeholder="请输入物流跟踪号"
/>
</el-form-item>
<el-form-item label="物流费用" prop="carriageAmount">
<el-input
v-model="completeShipmentForm.carriageAmount"
placeholder="请输入物流费用"
/>
</el-form-item>
</template>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="completeShipmentVisible = false">取消</el-button>
<el-button type="primary" @click="saveCompleteShipment">确认</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="tsx">
// refreshJMProductInfo,reasonInvalidationApi,
......@@ -935,6 +1000,7 @@ import {
refreshJMProductInfo,
reasonInvalidationApi,
applyForReplenishmentApi,
completeDeliveryApi,
} from '@/api/podOrder'
import TableView from '@/components/TableView.vue'
import {
......@@ -947,7 +1013,14 @@ import fastProduction from '../fastProduction.vue'
import CardWrapper from '@/components/CardPods.vue'
import { CustomColumn } from '@/types/table'
import { useValue } from '@/utils/hooks/useValue'
import { computed, onBeforeUnmount, onMounted, reactive, ref } from 'vue'
import {
computed,
nextTick,
onBeforeUnmount,
onMounted,
reactive,
ref,
} from 'vue'
import dayjs from 'dayjs'
import useElTableColumnWidth from '@/utils/hooks/useElTableColumnWidth'
import ProductInfo from '../ProductInfo.vue'
......@@ -1926,6 +1999,69 @@ const handleContextMenu = (e: MouseEvent) => {
const listenerClick = () => {
tableRightMenuVisible.value = false
}
const completeShipmentVisible = ref(false)
const completeShipmentForm = ref({
shippingWay: '', // 发货方式:1-送货上门,2-快递
carriageName: '', // 物流名称
logisticsTracking: '', // 物流跟踪号
carriageAmount: '', // 物流费用
})
// 表单校验规则
const completeShipmentRules = {
shippingWay: [
{ required: true, message: '请选择发货方式', trigger: 'change' },
],
carriageName: [
{ required: true, message: '请选择物流名称', trigger: 'change' },
],
logisticsTracking: [
{ required: true, message: '请输入物流跟踪号', trigger: 'blur' },
],
carriageAmount: [
{ required: true, message: '请输入物流费用', trigger: 'blur' },
],
}
const completeShipmentFormRef = ref()
const completeDelivery = async () => {
if (selection.value.length === 0) {
ElMessage.warning('请选择要完成发货的订单')
return
}
completeShipmentForm.value = {
shippingWay: '1',
carriageName: '',
logisticsTracking: '',
carriageAmount: '',
}
completeShipmentVisible.value = true
await nextTick()
completeShipmentFormRef.value && completeShipmentFormRef.value.clearValidate()
}
const saveCompleteShipment = async () => {
try {
await completeShipmentFormRef.value.validate()
} catch (e) {
return
}
const productIdList = selection.value.map(
(item: CardOrderData | PodProductList) => item.id,
)
try {
const res = await completeDeliveryApi(productIdList, {
...completeShipmentForm.value,
})
ElMessage.success(res.message)
completeShipmentVisible.value = false
loadTabData()
loadDiffList()
} catch (e) {
console.error(e)
}
}
onMounted(() => {
document.addEventListener('keydown', listenerKeydown)
document.addEventListener('click', listenerClick)
......
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