feat(web-admin): add deliveryTimes column on plan contract-gap list

Filter and display deduped delivery dates beside planDate.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-09-12 21:31:20 +08:00
1 parent 754113a6d2
commit 8dc1820622
1 file changed
+39 -1
+39 -1
View File
@@ -98,6 +98,35 @@
<template #default="{ row }">{{ asGapItem(row).planDate || '—' }}</template>
</el-table-column>
<el-table-column prop="deliveryTimes" label="送货时间" min-width="130" align="center">
<template #header>
<div class="col-header-with-filter">
<span class="col-header-with-filter__label">送货时间</span>
<ColumnHeaderFilter
prop="deliveryTimes"
label="送货时间"
type="datetime"
:is-active="isFilterActive('deliveryTimes')"
:model-value="filters.deliveryTimes || null"
@update:model-value="(v) => setFilterState('deliveryTimes', v)"
/>
</div>
</template>
<template #default="{ row }">
<div
v-if="(asGapItem(row).deliveryTimes || []).length"
class="pl-delivery-times-cell"
>
<div
v-for="(t, i) in asGapItem(row).deliveryTimes"
:key="`${asGapItem(row).id}-dt-${i}`"
>
{{ t }}
</div>
</div>
<span v-else>—</span>
</template>
</el-table-column>
<el-table-column prop="planType" label="单据类型" min-width="100" align="center">
<template #header>
<div class="col-header-with-filter">
@@ -522,7 +551,7 @@ import { isPlInternalCustomerName } from '@/utils/pl-internal-customer'
import { refreshMenuBadges } from '@/utils/menu-badge-registry'
import { useMenuStore } from '@/store/modules/menu'
const PLAN_MERGE_COLUMN_PROPS = ['planDate', 'planType', 'followStatus'] as const
const PLAN_MERGE_COLUMN_PROPS = ['planDate', 'deliveryTimes', 'planType', 'followStatus'] as const
const menuStore = useMenuStore()
const { ContractDetailDialog, contractDetailRef, openContractDetail } = useContractDetailDialog()
@@ -707,6 +736,7 @@ function getContractGapExportFilterParams() {
const contractGapExportColumns = [
'planNo',
'planDate',
'deliveryTimes',
'planType',
'followStatus',
'supplierName',
@@ -936,6 +966,14 @@ onMounted(() => {
}
}
.pl-delivery-times-cell {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
line-height: 1.35;
}
.pl-plan-contract-stat {
display: inline-flex;
align-items: center;