Commit 3357446f by qinjianhui

fix: 订单问题修改

parent 4bfeb551
......@@ -216,9 +216,9 @@
<div class="card-info-row full delay-time-row">
<span
class="delay-time-value"
:title="`订单延期:${getOrderDelayText(item.createTime as string)}`"
:title="`订单延期:${getOrderDelayText(item.orderCreateTime as string)}`"
>
{{ getOrderDelayText(item.createTime as string) }}
{{ getOrderDelayText(item.orderCreateTime as string) }}
</span>
</div>
</div>
......@@ -423,8 +423,10 @@ const getOrderDelayText = (createTime?: string | null) => {
if (!createTime) return '--'
const createAt = dayjs(createTime)
if (!createAt.isValid()) return '--'
const diffSeconds = Math.max(0, dayjs().diff(createAt, 'second'))
const hours = Math.floor(diffSeconds / (60 * 60))
const diffMinutes = Math.max(0, dayjs().diff(createAt, 'minute'))
const baseHours = Math.floor(diffMinutes / 60)
const remainMinutes = diffMinutes % 60
const hours = baseHours + (remainMinutes > 30 ? 1 : 0)
return `${hours}h`
}
......
......@@ -211,9 +211,9 @@
<div class="card-info-row full delay-time-row">
<span
class="delay-time-value"
:title="`订单延期:${getOrderDelayText(item.createTime as string)}`"
:title="`订单延期:${getOrderDelayText(item.orderCreateTime as string)}`"
>
{{ getOrderDelayText(item.createTime as string) }}
{{ getOrderDelayText(item.orderCreateTime as string) }}
</span>
</div>
</div>
......@@ -327,8 +327,10 @@ const getOrderDelayText = (createTime?: string | null) => {
if (!createTime) return '--'
const createAt = dayjs(createTime)
if (!createAt.isValid()) return '--'
const diffSeconds = Math.max(0, dayjs().diff(createAt, 'second'))
const hours = Math.floor(diffSeconds / (60 * 60))
const diffMinutes = Math.max(0, dayjs().diff(createAt, 'minute'))
const baseHours = Math.floor(diffMinutes / 60)
const remainMinutes = diffMinutes % 60
const hours = baseHours + (remainMinutes > 30 ? 1 : 0)
return `${hours}h`
}
......@@ -372,6 +374,8 @@ defineExpose({ open })
<style scoped lang="scss">
.operate-order-details-content {
height: 600px;
display: flex;
flex-direction: column;
}
.operate-order-tip {
font-size: 14px;
......@@ -382,10 +386,10 @@ defineExpose({ open })
.operate-order-card-grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-template-rows: max-content;
gap: 12px;
max-height: 500px;
overflow-y: auto;
min-height: 200px;
flex: 1;
}
.operate-order-card-item {
......@@ -486,4 +490,40 @@ defineExpose({ open })
gap: 20px;
margin-bottom: 10px;
}
.flex-between {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
overflow: hidden;
gap: 6px;
.images-position {
flex: 1;
overflow: auto hidden;
.images-container {
width: 100%;
display: flex;
gap: 6px;
}
.item-image {
width: 50px;
min-width: 50px;
height: 50px;
border: 1px solid #eee;
cursor: pointer;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
b {
margin-right: 5px;
font-size: 15px;
}
}
</style>
......@@ -547,7 +547,7 @@
<!-- 挂起 -->
<template v-if="status === 'SUSPEND'">
<span class="item">
<ElButton type="warning" @click="handleCancelSuspend"
<ElButton type="warning" @click="() => handleCancelSuspend()"
>取消挂起</ElButton
>
</span>
......@@ -701,7 +701,7 @@
修改地址
</ElButton>
<ElButton
v-if="row.status === 'PENDING_CREATE_LOGISTICS'"
v-if="status === 'PENDING_CREATE_LOGISTICS'"
type="primary"
link
size="small"
......@@ -709,21 +709,34 @@
>
刷新地址
</ElButton>
<ElButton
v-if="status === 'SUSPEND'"
type="primary"
link
size="small"
@click.stop="handleCancelSuspend(row)"
>
取消挂起
</ElButton>
</div>
</template>
</TableView>
</div>
<ElPagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[50, 100, 200, 300]"
background
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin: 10px auto 0"
@size-change="onPageSizeChange"
@current-change="onCurrentPageChange"
/>
<div class="table-pagination-bar">
<div class="selected-count-text">
已选择 <strong style="color: red">{{ selectedRows.length }}</strong> 条数
</div>
<ElPagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[50, 100, 200, 300]"
background
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="onPageSizeChange"
@current-change="onCurrentPageChange"
/>
</div>
</template>
<template #bottom>
<el-tabs
......@@ -742,7 +755,7 @@
</el-tab-pane>
<el-tab-pane name="log" label="操作日志">
<div v-loading="subLoading" class="detail-table-content">
<LogList style="height: 100%;" :log-list="logList" />
<LogList style="height: 100%" :log-list="logList" />
<div v-if="!logList.length" class="empty-content">
暂无数据
</div>
......@@ -1082,7 +1095,7 @@ const receiverAddressForm = ref<AddressInfo>({
})
const showPendingLogisticsUpdateAddress = (row: FactoryOrderNewListData) =>
row.status === 'PENDING_CREATE_LOGISTICS' && row.shipmentType === 1
status.value === 'PENDING_CREATE_LOGISTICS' && row.shipmentType === 1
const submitFactoryOrderReceiverAddress = (data: AddressInfo) =>
updateReceiverAddressApi(data)
......@@ -1152,7 +1165,7 @@ const handleSuspendTabClick = (value: number) => {
statusCurrentPageRef.value = 1
refreshTableList()
}
const mainColumns = [
const mainColumns = computed(() => [
{
prop: 'factoryOrderNumber',
label: '订单编号',
......@@ -1172,7 +1185,7 @@ const mainColumns = [
},
{
prop: 'statusName',
label: '订单状态',
label: status.value !== 'SUSPEND' ? '订单状态' : '挂起前状态',
minWidth: 120,
align: 'center',
},
......@@ -1278,7 +1291,7 @@ const mainColumns = [
slot: 'operation',
fixed: 'right',
},
]
])
const showProductInventoryColumns = computed(
() =>
......@@ -1555,6 +1568,7 @@ const openResultInfoDialog = (data: ResultInfoDataItem[]) => {
resultInfo.value = data.filter((item) => !item.status)
resultRefs.value?.showDialog()
} else {
ElMessage.success('操作成功')
refreshCurrentView({ isRefreshTree: true })
}
})
......@@ -1641,6 +1655,7 @@ const handleLogisticsCommand = async (command: string) => {
resultRefs.value?.showDialog()
} else {
ElMessage.success('操作成功')
refreshCurrentView()
}
} else if (typeof res.data === 'string') {
......@@ -1699,13 +1714,14 @@ const handleTransferToArrange = async () => {
(item: { status?: boolean }) => !item.status,
)
resultRefs.value?.showDialog()
return
} else {
ElMessage.success('操作成功')
refreshCurrentView({ isRefreshTree: true })
}
refreshCurrentView({ isRefreshTree: true })
} else {
ElMessage.success('操作成功')
refreshCurrentView({ isRefreshTree: true })
}
ElMessage.success('操作成功')
} catch (e: unknown) {
resultInfo.value = []
console.error(e)
......@@ -1936,7 +1952,10 @@ const handleProductionComplete = async () => {
if (hasFailed) {
resultInfo.value = data.filter((item) => !item.status)
resultRefs.value?.showDialog()
}
} else {
ElMessage.success('操作成功')
refreshCurrentView({ isRefreshTree: true })
}
},
})
}
......@@ -1952,10 +1971,16 @@ const handleArchiveOrder = async () => {
refreshTree: true,
})
}
const handleCancelSuspend = async () => {
const handleCancelSuspend = async (row?: FactoryOrderNewListData) => {
let ids: (number | string)[]
if (row) {
ids = [row.id]
} else {
ids = getSelectedIds()
}
await executeBatchAction({
getIds: getSelectedIds,
api: cancelSuspendApi,
getIds: () => ids,
api: (ids) => cancelSuspendApi(ids as number[]),
confirmText: '确定取消挂起吗?',
successText: '取消挂起成功',
refreshTree: true,
......@@ -2179,6 +2204,19 @@ onMounted(() => {
}
}
.table-pagination-bar {
margin-top: 10px;
display: flex;
align-items: center;
justify-content: space-between;
}
.selected-count-text {
font-size: 14px;
color: #606266;
white-space: nowrap;
}
.card-content {
flex: 1;
margin-top: 10px;
......
......@@ -197,7 +197,9 @@
@click="podOrderDetailsData && print(podOrderDetailsData, true)"
>手动打印</ElButton
>
<ElButton v-if="isNewOrder" type="primary" @click="printNormal">普货拣货 </ElButton>
<ElButton v-if="isNewOrder" type="primary" @click="printNormal"
>普货拣货
</ElButton>
<ElButton type="success" @click="handlePrintFinish"
>打单完成</ElButton
>
......@@ -261,7 +263,7 @@
</ElDialog>
</template>
<script setup lang="ts">
<script setup lang="tsx">
import { computed, nextTick, ref, watch } from 'vue'
import useLodop from '@/utils/hooks/useLodop'
import TableView from '@/components/TableView.vue'
......@@ -339,6 +341,17 @@ const podOrderDetailsColumns = computed(() => [
prop: props.isNewOrder ? 'operationNos' : 'podJomallUsNo',
width: 150,
align: 'center',
render: (row: ProductList) => {
return (
<div>
{props.isNewOrder &&
row.operationNos?.split(',').map((item) => {
return <div>{item}</div>
})}
{!props.isNewOrder && row.podJomallUsNo}
</div>
)
},
},
{
label: '库存 SKU',
......
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