Преглед изворни кода

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>
wuzilong пре 1 месец
родитељ
комит
8dc1820622
1 измењених фајлова са 39 додато и 1 уклоњено
  1. 39 1
      web-admin/src/views/pl/plan-contract/index.vue

+ 39 - 1
web-admin/src/views/pl/plan-contract/index.vue

@@ -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;