Commit 2e2b72b4 by zhuzhequan

订单

parent 2d577754
...@@ -185,6 +185,17 @@ export function printDeliveryNote(data: string[], userMark?: string) { ...@@ -185,6 +185,17 @@ export function printDeliveryNote(data: string[], userMark?: string) {
}, },
) )
} }
export function getPodJomallOrderByFactoryNumber(factoryOrderNumber: string) {
return axios.get<never, BaseRespData<OrderData>>(
'factory/podJomallOrder/getPodJomallOrderByFactoryNumber',
{
params:{
factoryOrderNumber
}
},
)
}
export function updateRemarkApi(id: number, remark: string) { export function updateRemarkApi(id: number, remark: string) {
return axios.get<never, BaseRespData<never>>( return axios.get<never, BaseRespData<never>>(
'factory/podJomallOrder/setRemark', 'factory/podJomallOrder/setRemark',
......
...@@ -27,7 +27,9 @@ export interface Tab { ...@@ -27,7 +27,9 @@ export interface Tab {
export interface OrderData { export interface OrderData {
id: number id: number
namespace?: string namespace?: string
factoryNo?: string
erpId?: number erpId?: number
thirdProductAmount?: number
count?: number count?: number
orderNumber?: string orderNumber?: string
erpOrderNumber?: string erpOrderNumber?: string
......
<template>
<div class="order-detail-order">
<div class="order-detail_order-info">
<div class="order-detail_order-info--title title">订单详情</div>
<div class="order-detail_order-info--content">
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">主单号:</span>
<span class="order-detail_order-info__value value flex-1">{{
orderDetailData.factoryOrderNumber || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">工厂:</span>
<span class="order-detail_order-info__value value flex-1">{{
orderDetailData.factoryNo || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">收货人:</span>
<span class="order-detail_order-info__value value flex-1">{{
orderDetailData.lanshouName || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">收货人电话:</span>
<span class="order-detail_order-info__value value flex-1">{{
orderDetailData.lanshouPhone || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex">
<span class="order-detail_order-info__label label">邮编:</span>
<span class="order-detail_order-info__value value flex-1">{{
orderDetailData.lanshouPost || '--'
}}</span>
</div>
<div class="order-detail_order-info--content-item flex">
<span style="white-space: nowrap;" class="order-detail_order-info__label label">收货地址:</span>
<span
style="white-space: nowrap;"
:title="orderDetailData.lanshouAddress"
>{{ orderDetailData.lanshouAddress || '--' }}</span
>
</div>
</div>
</div>
<div class="order-detail_price-info">
<div class="order-detail_price-info--title title">实付款</div>
<div class="order-detail_price-info--content">
<div class="order-detail_price-info--content-item flex">
<span class="order-detail_price-info__label label">商品价:</span>
<span class="order-detail_price-info__value label flex-1">{{
orderDetailData.thirdProductAmount || '--'
}}</span>
</div>
<div class="order-detail_price-info--content-item flex">
<span class="order-detail_price-info__label label">运费¥:</span>
<span class="order-detail_price-info__value value flex-1">{{
orderDetailData.carriageAmount || '--'
}}</span>
</div>
<div class="order-detail_price-info--content-item flex">
<span class="order-detail_price-info__label label">小计¥:</span>
<span class="order-detail_price-info__value value flex-1">{{
orderDetailData.totalAmount || '--'
}}</span>
</div>
</div>
</div>
<div class="order-detail_goods-info">
<div class="order-detail_goods-info--title title">商品详情</div>
<div class="order-detail_goods-info--content">
<ProductInfo
:is-detail="true"
:row="orderDetailData"
/>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { OrderData } from '@/types/api/order'
import { PropType } from 'vue'
import ProductInfo from './ProductInfo.vue'
defineProps({
orderDetailData: {
type: Object as PropType<OrderData>,
default: () => {},
},
})
</script>
<style lang="scss" scoped>
.order-detail-order {
.title {
font-size: 18px;
font-weight: 500;
}
}
.order-detail_order-info--content,
.order-detail_price-info--content {
padding: 10px 0;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
font-size: 14px;
.label {
color: #606266;
margin-right: 6px;
}
.value {
color: #333;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.order-detail_goods-info--content {
padding: 10px 0;
font-size: 14px;
:deep(.order-list-expand_item) {
padding: 10px 0;
}
}
</style>
<template>
<div
v-for="item in row.productList?.slice(
0,
row.moreable || isDetail ? row.productList.length : 2,
)"
:key="item.id"
class="order-list-expand_item"
>
<div class="order-list-expand_item_content">
<div class="order-list-expand_item_img">
<!-- <img :src="item.variantImage" style="width: 100%; height: 100%" /> -->
<ImageView :src="item.variantImage" width="98px" height="98px" />
</div>
<div class="order-list-expand_item_info">
<div
:title="item?.productName || '--'"
class="order-list-expand_item_info_title"
style="font-weight: bold"
>
<span class="order-list-expand_item_label">商品名:</span>
<div class="order-list-expand_item_value">
{{ item?.productName || '--' }}&emsp;
<img
v-show="
status == 4 &&
item?.num !== undefined &&
item?.shipmentNum !== undefined &&
item?.notPassNum !== undefined &&
(item.num || 0) -
((item.shipmentNum || 0) - (item.notPassNum || 0)) >
0 &&
item.notPassNum > 0
"
src="@/assets/images/jiaji.svg"
alt=""
width="24"
/>
</div>
</div>
<div
:title="item.baseSku || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">Base SKU:</span>
<span class="order-list-expand_item_value"
>{{ item.baseSku || '--'
}}<el-icon class="icon" @click="copy(item.baseSku || '')"
><DocumentCopy /></el-icon
></span>
</div>
<div
:title="item.variantSku || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">Variant SKU:</span>
<span class="order-list-expand_item_value"
>{{ item.variantSku || '--' }}
<el-icon class="icon" @click="copy(item.variantSku || '')"
><DocumentCopy
/></el-icon>
</span>
</div>
<div
:title="item.shopNumber || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">店铺单号:</span>
<span class="order-list-expand_item_value"
>{{ item.shopNumber || '--' }}
<el-icon class="icon" @click="copy(item.shopNumber || '')"
><DocumentCopy
/></el-icon>
</span>
</div>
<div
:title="
isPod ? item.factorySubOrderNumber || '' : item.subOrderNumber || ''
"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">生产单号:</span>
<span class="order-list-expand_item_value"
>{{
item.factorySubOrderNumber
}}<el-icon
class="icon"
@click="
copy(
isPod
? item.factorySubOrderNumber || ''
: item.subOrderNumber || '',
)
"
><DocumentCopy
/></el-icon>
</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">发货状态:</span>
<span
v-if="(item.shipmentNum || 0) - (item.notPassNum || 0) === item.num"
class="order-list-expand_item_value"
>
<el-tag effect="dark" type="success"> 已发货 </el-tag>
</span>
<span
v-if="
item.num !== (item.shipmentNum || 0) - (item.notPassNum || 0) &&
(item.shipmentNum || 0) > 0
"
class="order-list-expand_item_value"
>
<el-tag effect="dark"> 部分发货 </el-tag>
</span>
<span
v-if="item.shipmentNum === 0"
class="order-list-expand_item_value"
>
<el-tag effect="dark" type="danger"> 未发货 </el-tag>
</span>
</div>
<div
v-if="!isPod"
:title="item.material || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">工艺:</span>
<span class="order-list-expand_item_value"
>{{ item.processName || '--' }}
</span>
</div>
<div
:title="item.remark || ''"
class="order-list-expand_item_info_title"
>
<span class="order-list-expand_item_label">备注:</span>
<span class="order-list-expand_item_value"
>{{ item.remark || '--' }}
</span>
</div>
</div>
<div class="order-list-expand_item_price">
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">单价:</span>
<span class="order-list-expand_item_value">{{
item.price || '--'
}}</span>
</div>
<div class="order-list-expand_item_info_title font-bold">
<span class="order-list-expand_item_label">购买数:</span>
<span class="order-list-expand_item_value">{{ item.num || 0 }}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">已发数:</span>
<span class="order-list-expand_item_value">{{
item.shipmentNum || 0
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">未发数:</span>
<span v-if="!isPod" class="order-list-expand_item_value">{{
(item.num || 0) - ((item.shipmentNum || 0) - (item.notPassNum || 0))
}}</span>
<span v-else class="order-list-expand_item_value">{{
(item.num || 0) - (item.shipmentNum || 0)
}}</span>
</div>
<div v-if="isPod" class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">工艺:</span>
<span class="order-list-expand_item_value">{{
item?.processName || '--'
}}</span>
</div>
<div v-if="isPod" class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label">工艺简称:</span>
<span class="order-list-expand_item_value">{{
item?.process || '--'
}}</span>
</div>
</div>
</div>
<div class="operation">
<slot name="operation" :product-item="item"></slot>
</div>
</div>
</template>
<script setup lang="ts">
import ImageView from '@/components/ImageView.vue'
import { DocumentCopy } from '@element-plus/icons-vue'
import { OrderData } from '@/types/api/order'
import { PropType } from 'vue'
defineProps({
row: {
type: Object as PropType<OrderData>,
default: () => {},
},
isDetail: {
type: Boolean,
default: false,
},
status: {
type: [Number, String],
},
isPod: {
type: Boolean,
default: false,
},
})
const copy = (text: string) => {
navigator.clipboard.writeText(text)
ElMessage.success('复制成功')
}
</script>
<style lang="scss" scoped>
.order-list-expand_item {
border-bottom: 1px solid #eee;
padding: 20px;
& .operation {
display: flex;
justify-content: flex-end;
gap: 10px;
}
}
.order-list-expand_item_content {
display: flex;
}
.order-list-expand_item:last-child {
border-bottom: 0;
}
.order-list-expand_item_img {
width: 100px;
height: 100px;
margin-right: 20px;
border: 1px solid #eee;
}
.order-list-expand_item_info {
flex: 1;
margin-right: 20px;
}
.order-list-expand_item_price {
width: 180px;
}
.order-list-expand_item_info_title {
line-height: 26px;
display: flex;
align-items: center;
}
.order-list-expand_item_label {
margin-right: 6px;
}
.order-list-expand_item_value {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: flex;
align-items: center;
}
</style>
...@@ -153,6 +153,9 @@ ...@@ -153,6 +153,9 @@
</div> </div>
</div> </div>
</template> </template>
<template #operate="{row}">
<el-button type="text" @click="showDetail(row)">查看详情</el-button>
</template>
</TableView> </TableView>
</div> </div>
<ElPagination <ElPagination
...@@ -167,12 +170,21 @@ ...@@ -167,12 +170,21 @@
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
></ElPagination> ></ElPagination>
</div> </div>
<ElDrawer
v-model="detailVisible"
title="查看详情"
direction="rtl"
size="40%"
:close-on-click-modal="false"
>
<OrderDetail :order-detail-data="orderDetailData" />
</ElDrawer>
</div> </div>
</template> </template>
<script lang="tsx" setup> <script lang="tsx" setup>
import { getUserMarkList } from '@/api/auth' import { getUserMarkList } from '@/api/auth'
import { getDeliveryNoteList, printDeliveryNote } from '@/api/podOrder' import { getDeliveryNoteList, printDeliveryNote, getPodJomallOrderByFactoryNumber } from '@/api/podOrder'
import TableView from '@/components/TableView.vue' import TableView from '@/components/TableView.vue'
import { import {
DeliveryNoteData, DeliveryNoteData,
...@@ -184,8 +196,12 @@ import { val } from '@/utils' ...@@ -184,8 +196,12 @@ import { val } from '@/utils'
import { CellCls } from 'element-plus' import { CellCls } from 'element-plus'
import { useValue } from '@/utils/hooks/useValue' import { useValue } from '@/utils/hooks/useValue'
import { filePath } from '@/api/axios' import { filePath } from '@/api/axios'
import OrderDetail from './OrderDetail.vue'
import { OrderData } from '@/types/api/order.ts'
const [searchForm, resetSearchForm] = useValue<PodDeliveryNoteSearchForm>({}) const [searchForm, resetSearchForm] = useValue<PodDeliveryNoteSearchForm>({})
const dateRange = ref<string[]>([]) const dateRange = ref<string[]>([])
const orderDetailData = ref<OrderData | undefined>()
const detailVisible = ref(false)
const { const {
currentPage, currentPage,
pageSize, pageSize,
...@@ -210,6 +226,13 @@ const nameSpaceList = ref<string[]>([]) ...@@ -210,6 +226,13 @@ const nameSpaceList = ref<string[]>([])
onMounted(() => { onMounted(() => {
getNameSpaceList() getNameSpaceList()
}) })
const showDetail = async (row:DeliveryNoteData)=>{
const {data} = await getPodJomallOrderByFactoryNumber(row.factoryOrderNumber as string)
detailVisible.value = true
orderDetailData.value = data
}
const getNameSpaceList = async () => { const getNameSpaceList = async () => {
try { try {
const res = await getUserMarkList() const res = await getUserMarkList()
...@@ -250,6 +273,11 @@ const tableColumns = computed(() => { ...@@ -250,6 +273,11 @@ const tableColumns = computed(() => {
prop: 'logisticsInfo', prop: 'logisticsInfo',
width: 280, width: 280,
slot: 'logisticsInfo', slot: 'logisticsInfo',
},{
label: '操作',
prop: 'action',
width: 100,
slot: 'operate',
}, },
] ]
}) })
......
...@@ -202,7 +202,7 @@ ...@@ -202,7 +202,7 @@
<span v-if="['TO_BE_CONFIRMED','IN_PRODUCTION'].includes(status)" class="item"> <span v-if="['TO_BE_CONFIRMED','IN_PRODUCTION'].includes(status)" class="item">
<ElButton type="danger" @click="voidedBtn">作废</ElButton> <ElButton type="danger" @click="voidedBtn">作废</ElButton>
</span> </span>
<span v-if="status === 'IN_PRODUCTION'" class="item"> <span v-if="['WAIT_SHIPMENT','IN_PRODUCTION'].includes(status)" class="item">
<ElButton type="warning" is-dark @click="applyForReplacement"> <ElButton type="warning" is-dark @click="applyForReplacement">
申请补胚</ElButton 申请补胚</ElButton
> >
...@@ -564,7 +564,7 @@ ...@@ -564,7 +564,7 @@
/></el-icon> /></el-icon>
</div> </div>
<div <div
v-if="status === 'TO_BE_RECEIPT'" v-if="['PART_SHIPPING','TO_BE_RECEIPT' ].includes(status)"
class="operation-item" class="operation-item"
> >
<el-button <el-button
......
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