-
-
+
+
@@ -105,8 +109,8 @@
-
@@ -347,7 +351,6 @@
import PlVehicleViewDialog from '@/components/business/pl-vehicle-view-dialog/index.vue'
import ViewKvTable from '@/components/business/system-view-dialog/ViewKvTable.vue'
import type { ViewField } from '@/components/business/system-view-dialog/types'
- import { businessTypeTagType } from '@/components/business/db/db-related-view'
import type { ContractVO } from '@/api/crm/contract/types'
import { inventoryApi } from '@/api/db/inventory'
import {
@@ -362,7 +365,7 @@
mapContractProducts,
type PlanFormProductRow
} from '@/composables/usePlContractToPlan'
- import { mapPlanProductToFormRow, usePlPlanViewDetail, type PlPlanTransportDibangRow, type PlPlanTransportSiteRow } from '@/composables/usePlPlanViewDetail'
+ import { mapPlanProductToFormRow, usePlPlanViewDetail, type PlPlanTransportSiteRow } from '@/composables/usePlPlanViewDetail'
import { resolveFreightUnitLabel } from '@/composables/usePlFreightCalc'
import { isHazardProduct } from '@/composables/usePlToxicProductCertCheck'
import { useDictStore } from '@/store/modules/dict'
@@ -400,6 +403,10 @@
feedbackEditable?: boolean
/** 将司机/现场/地磅回传区块镜像渲染到归档左侧等目标节点 */
feedbackMirrorTo?: string | HTMLElement | null
+ /** 隐藏内部 Tab 导航(由外层统一控制 Tab) */
+ hideNav?: boolean
+ /** 受控当前 Tab:overview / transport / contract */
+ tab?: string
}>(),
{
embedded: false,
@@ -407,11 +414,33 @@
arrangeDriverUrl: '',
arrangeSiteRecords: () => [],
feedbackEditable: false,
- feedbackMirrorTo: null
+ feedbackMirrorTo: null,
+ hideNav: false,
+ tab: undefined
}
)
- const activeTab = ref('overview')
+ const emit = defineEmits<{
+ 'update:tab': [value: string]
+ }>()
+
+ const innerActiveTab = ref(props.tab || 'overview')
+ const activeTab = computed({
+ get: () => props.tab || innerActiveTab.value,
+ set: (value: string) => {
+ innerActiveTab.value = value
+ emit('update:tab', value)
+ }
+ })
+
+ watch(
+ () => props.tab,
+ (value) => {
+ if (value && value !== innerActiveTab.value) {
+ innerActiveTab.value = value
+ }
+ }
+ )
const contractDetailDialogActive = ref(false)
const contractDetailRef = ref
>()
const vehicleViewVisible = ref(false)
@@ -899,28 +928,6 @@
}))
)
- function dibangBasicViewFields(row: PlPlanTransportDibangRow): ViewField[] {
- const businessType = row.inventory?.businessType
- // long: false — 强制六字段同一行展示,避免往来单位等长文案自动折行
- return [
- { label: '出入库单号', value: row.inventory?.batchNo || row.link.batchNo, long: false },
- {
- label: '业务类型',
- value: businessType,
- tagType: businessType ? businessTypeTagType(businessType) : undefined,
- long: false
- },
- { label: '往来单位', value: row.inventory?.partnerCompany, long: false },
- {
- label: '车牌号',
- value: row.inventory?.vehicleNo || plan.value?.licensePlate || transport.value?.licensePlate,
- long: false
- },
- { label: '产品', value: row.inventory?.product || row.link.productName, long: false },
- { label: '数量(吨)', value: row.inventory?.quantity, long: false }
- ]
- }
-
const dibangPlanRows = computed(() =>
dibangRows.value.filter(row => Boolean(row.link.dbPurchasePlanId?.trim()))
)
@@ -1048,8 +1055,7 @@
ioOrderViewFields: ioOrderViewFields.value,
ioOrderImageCsv: ioOrderImageCsv.value,
siteFeedbackTableRows: siteFeedbackTableRows.value,
- dibangPlanRows: dibangPlanRows.value,
- dibangBasicViewFields
+ dibangPlanRows: dibangPlanRows.value
}))
const feedbackBlocksOn = {
@@ -1284,6 +1290,16 @@
margin-top: 0;
}
}
+
+ &.is-hide-nav {
+ .pl-plan-view-tabs__nav :deep(> .el-tabs__header) {
+ display: none;
+ }
+
+ .pl-plan-view-tabs__nav :deep(> .el-tabs__content) {
+ padding-top: 0;
+ }
+ }
}
.pl-plan-view-tabs__nav :deep(.el-tabs__content) {
@@ -1449,6 +1465,23 @@
}
}
+ .pl-plan-logistics-panel {
+ :deep(.view-kv-table--dual th) {
+ width: 88px;
+ white-space: nowrap;
+ }
+
+ :deep(.view-kv-table--dual td) {
+ width: auto;
+ min-width: 7.5em;
+ }
+
+ /* 取货/送达时间所在值列禁止换行,避免 2026-07-31 被拆开 */
+ :deep(.view-kv-table--dual tr:not(.row-long) td:first-of-type) {
+ white-space: nowrap;
+ }
+ }
+
.party-panel__title {
margin-bottom: 12px;
padding-left: 10px;
diff --git a/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue b/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue
index a15907e35..ea9d5b92e 100644
--- a/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue
+++ b/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue
@@ -15,9 +15,13 @@
{{ item }}
- {{
- formatViewValue(field.value)
- }}
+ {{ formatViewValue(field.value) }}
@@ -60,6 +64,22 @@
&--cols-5 {
grid-template-columns: repeat(5, minmax(0, 1fr));
}
+
+ &--cols-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+
+ &--cols-7 {
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ }
+
+ &--cols-8 {
+ grid-template-columns: repeat(8, minmax(0, 1fr));
+ }
+
+ &--cols-9 {
+ grid-template-columns: repeat(9, minmax(0, 1fr));
+ }
}
.view-kv {
@@ -85,6 +105,11 @@
word-break: break-word;
line-height: 1.5;
}
+
+ .danger-display {
+ color: #dc2626;
+ font-weight: 600;
+ }
}
.view-kv-span-2 {
@@ -105,9 +130,20 @@
}
}
+ @media (max-width: 1400px) {
+ .view-kv-grid--cols-8,
+ .view-kv-grid--cols-9 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+ }
+
@media (max-width: 1100px) {
.view-kv-grid--cols-4,
- .view-kv-grid--cols-5 {
+ .view-kv-grid--cols-5,
+ .view-kv-grid--cols-6,
+ .view-kv-grid--cols-7,
+ .view-kv-grid--cols-8,
+ .view-kv-grid--cols-9 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
@@ -115,7 +151,11 @@
@media (max-width: 900px) {
.view-kv-grid--cols-3,
.view-kv-grid--cols-4,
- .view-kv-grid--cols-5 {
+ .view-kv-grid--cols-5,
+ .view-kv-grid--cols-6,
+ .view-kv-grid--cols-7,
+ .view-kv-grid--cols-8,
+ .view-kv-grid--cols-9 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@@ -124,7 +164,11 @@
.view-kv-grid,
.view-kv-grid--cols-3,
.view-kv-grid--cols-4,
- .view-kv-grid--cols-5 {
+ .view-kv-grid--cols-5,
+ .view-kv-grid--cols-6,
+ .view-kv-grid--cols-7,
+ .view-kv-grid--cols-8,
+ .view-kv-grid--cols-9 {
grid-template-columns: 1fr;
}
diff --git a/web-admin/src/views/db/plans/index.vue b/web-admin/src/views/db/plans/index.vue
index 8d65b08e3..58d3028b6 100644
--- a/web-admin/src/views/db/plans/index.vue
+++ b/web-admin/src/views/db/plans/index.vue
@@ -351,7 +351,11 @@
/>
-
+
-
+
-
+
{