|
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
|
|
approvePlatformUnifiedOrder,
|
|
|
|
|
batchApprovePlatformUnifiedOrders,
|
|
|
|
|
getPlatformUnifiedOrderBatchApprovalPreview,
|
|
|
|
|
addPlatformUnifiedOrderNote,
|
|
|
|
|
updatePlatformUnifiedOrderRemarks,
|
|
|
|
|
listPlatformUnifiedOrders,
|
|
|
|
|
updatePlatformUnifiedOrderPlanning,
|
|
|
|
|
unifiedOrderStatusOptions,
|
|
|
|
@@ -85,15 +85,6 @@ import {
|
|
|
|
|
} from '@/modules/inbounds'
|
|
|
|
|
import { listCustomerChargeRules, type CustomerChargeRule } from '@/modules/fba-pricing'
|
|
|
|
|
import { getCustomerDimensionConfig, type CustomerDimensionConfig, type CustomerDimensionRule } from '@/modules/dimension-config'
|
|
|
|
|
import {
|
|
|
|
|
OrderBasicInfoIcon,
|
|
|
|
|
OrderCargoInfoIcon,
|
|
|
|
|
OrderFeeInfoIcon,
|
|
|
|
|
OrderFulfillmentIcon,
|
|
|
|
|
OrderHistoryIcon,
|
|
|
|
|
OrderMeasurementIcon,
|
|
|
|
|
OrderOtherIcon,
|
|
|
|
|
} from '@/core/navigation/prototypeMenuIcons'
|
|
|
|
|
|
|
|
|
|
type FilterModel = QueryModel & {
|
|
|
|
|
tenantId: string
|
|
|
|
@@ -188,7 +179,7 @@ const coLoadError = ref<ApiErrorDetails | null>(null)
|
|
|
|
|
const approvalOrder = ref<UnifiedOrderResource | null>(null)
|
|
|
|
|
const noteOpen = ref(false)
|
|
|
|
|
const noteSaving = ref(false)
|
|
|
|
|
const noteContent = ref('')
|
|
|
|
|
const noteForm = reactive({ internalRemark: '', warehouseRemark: '', customerServiceRemark: '' })
|
|
|
|
|
const noteOrder = ref<UnifiedOrderResource | null>(null)
|
|
|
|
|
const holdDetail = ref<InboundHoldDetail | null>(null)
|
|
|
|
|
const holdLoading = ref(false)
|
|
|
|
@@ -334,13 +325,13 @@ const canReleaseInbound = computed(() => Boolean(
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
const detailTabs = [
|
|
|
|
|
{ key: 'basic', label: '基本信息', icon: OrderBasicInfoIcon },
|
|
|
|
|
{ key: 'cargo', label: '货品信息', icon: OrderCargoInfoIcon },
|
|
|
|
|
{ key: 'fees', label: '费用信息', icon: OrderFeeInfoIcon },
|
|
|
|
|
{ key: 'history', label: '状态历史', icon: OrderHistoryIcon },
|
|
|
|
|
{ key: 'measurement', label: '测量数据', icon: OrderMeasurementIcon },
|
|
|
|
|
{ key: 'other', label: '其他', icon: OrderOtherIcon },
|
|
|
|
|
{ key: 'fulfillment', label: '拆分履约', icon: OrderFulfillmentIcon },
|
|
|
|
|
{ key: 'basic', label: '基本信息', icon: '📋' },
|
|
|
|
|
{ key: 'cargo', label: '货品信息', icon: '📦' },
|
|
|
|
|
{ key: 'fees', label: '费用信息', icon: '💰' },
|
|
|
|
|
{ key: 'history', label: '状态历史', icon: '📝' },
|
|
|
|
|
{ key: 'measurement', label: '测量数据', icon: '📐' },
|
|
|
|
|
{ key: 'other', label: '其他', icon: '🗂️' },
|
|
|
|
|
{ key: 'fulfillment', label: '拆分履约', icon: '🧩' },
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
const customerMeasurementColumns = [
|
|
|
|
@@ -1369,27 +1360,30 @@ function openNoteDialog(order?: UnifiedOrderResource) {
|
|
|
|
|
const target = order || detail.value?.summary || null
|
|
|
|
|
if (!target) return
|
|
|
|
|
noteOrder.value = target
|
|
|
|
|
noteContent.value = ''
|
|
|
|
|
noteForm.internalRemark = target.latestInternalNote || target.internalRemark || ''
|
|
|
|
|
noteForm.warehouseRemark = target.warehouseRemark || ''
|
|
|
|
|
noteForm.customerServiceRemark = target.customerServiceRemark || ''
|
|
|
|
|
noteOpen.value = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function saveNote() {
|
|
|
|
|
const content = noteContent.value.trim()
|
|
|
|
|
if (!noteOrder.value || !content) {
|
|
|
|
|
ElMessage.warning('请填写内部备注')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (!noteOrder.value) return
|
|
|
|
|
noteSaving.value = true
|
|
|
|
|
try {
|
|
|
|
|
const target = noteOrder.value
|
|
|
|
|
await addPlatformUnifiedOrderNote(String(target.tenantId), String(target.orderId), content)
|
|
|
|
|
await updatePlatformUnifiedOrderRemarks(String(target.tenantId), String(target.orderId), {
|
|
|
|
|
expectedVersion: Number(target.orderVersion || 0),
|
|
|
|
|
internalRemark: noteForm.internalRemark.trim() || null,
|
|
|
|
|
warehouseRemark: noteForm.warehouseRemark.trim() || null,
|
|
|
|
|
customerServiceRemark: noteForm.customerServiceRemark.trim() || null,
|
|
|
|
|
})
|
|
|
|
|
noteOpen.value = false
|
|
|
|
|
await loadOrders()
|
|
|
|
|
if (detail.value?.summary.orderId === target.orderId) await loadDetail(true)
|
|
|
|
|
noteOrder.value = null
|
|
|
|
|
ElMessage.success('内部备注已保存')
|
|
|
|
|
ElMessage.success('订单备注已保存')
|
|
|
|
|
} catch (error) {
|
|
|
|
|
ElMessage.error(getApiErrorDetails(error, '内部备注保存失败,请稍后重试').message)
|
|
|
|
|
ElMessage.error(getApiErrorDetails(error, '订单备注保存失败,请稍后重试').message)
|
|
|
|
|
} finally {
|
|
|
|
|
noteSaving.value = false
|
|
|
|
|
}
|
|
|
|
@@ -2199,7 +2193,7 @@ onBeforeUnmount(() => {
|
|
|
|
|
<template>
|
|
|
|
|
<AdminPage>
|
|
|
|
|
<section class="business-page unified-orders-page">
|
|
|
|
|
<AppDialog class="order-density-dialog" v-model="feeConfirmOpen" title="编辑计费数据" confirm-text="确认并发送" :confirm-loading="confirmFeeSending || feeConfirmReferenceLoading" width="min(920px, 94vw)" :teleported="false" @confirm="executeConfirmAndSendFee">
|
|
|
|
|
<AppDialog class="admin-density-dialog" v-model="feeConfirmOpen" title="编辑计费数据" confirm-text="确认并发送" :confirm-loading="confirmFeeSending || feeConfirmReferenceLoading" width="min(920px, 94vw)" :teleported="false" @confirm="executeConfirmAndSendFee">
|
|
|
|
|
<el-alert class="fee-confirm-price-alert" title="价格表单价仅作为参考;本次对客单价可人工修改,客户将一次确认计费量、单价和费用合计。" type="info" :closable="false" show-icon />
|
|
|
|
|
<el-form label-position="top" class="fee-confirm-form">
|
|
|
|
|
<el-form-item label="入仓码"><el-input :model-value="detail?.summary.inboundCode || '—'" disabled /></el-form-item>
|
|
|
|
@@ -2257,7 +2251,7 @@ onBeforeUnmount(() => {
|
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
<div class="detail-tabs" role="tablist" aria-label="订单详情模块">
|
|
|
|
|
<button v-for="tab in detailTabs" :id="`order-detail-tab-${tab.key}`" :key="tab.key" type="button" role="tab" :class="{ active: activeDetailTab === tab.key }" :aria-selected="activeDetailTab === tab.key" :aria-controls="`order-detail-panel-${tab.key}`" :tabindex="activeDetailTab === tab.key ? 0 : -1" @click="selectDetailTab(tab.key)"><component :is="tab.icon" :size="17" /><span>{{ tab.label }}</span></button>
|
|
|
|
|
<button v-for="tab in detailTabs" :id="`order-detail-tab-${tab.key}`" :key="tab.key" type="button" role="tab" :class="{ active: activeDetailTab === tab.key }" :aria-selected="activeDetailTab === tab.key" :aria-controls="`order-detail-panel-${tab.key}`" :tabindex="activeDetailTab === tab.key ? 0 : -1" @click="selectDetailTab(tab.key)"><span class="detail-tab-icon" aria-hidden="true">{{ tab.icon }}</span><span>{{ tab.label }}</span></button>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<section :id="`order-detail-panel-${activeDetailTab}`" class="detail-panel" role="tabpanel" :aria-labelledby="`order-detail-tab-${activeDetailTab}`" tabindex="0">
|
|
|
|
@@ -2686,7 +2680,7 @@ onBeforeUnmount(() => {
|
|
|
|
|
</template>
|
|
|
|
|
</ListPageLayout>
|
|
|
|
|
<SmartLoadingDialog v-model="smartLoadingOpen" />
|
|
|
|
|
<AppDialog class="order-density-dialog" v-model="batchApprovalOpen" title="批量审核订单" confirm-text="确认批量审核" confirm-type="success" width="min(1100px, calc(100vw - 28px))" :loading="batchApprovalLoading" :confirm-loading="batchApprovalSaving" :confirm-disabled="batchApprovalLoading || !batchApprovalSelectedRows.length" destroy-on-close @confirm="batchApproveOrders">
|
|
|
|
|
<AppDialog class="admin-density-dialog" v-model="batchApprovalOpen" title="批量审核订单" confirm-text="确认批量审核" confirm-type="success" width="min(1100px, calc(100vw - 28px))" :loading="batchApprovalLoading" :confirm-loading="batchApprovalSaving" :confirm-disabled="batchApprovalLoading || !batchApprovalSelectedRows.length" destroy-on-close @confirm="batchApproveOrders">
|
|
|
|
|
<el-alert title="请逐票核对入仓码、客户、中文品名、渠道和目的仓;审核通过后订单进入待测量。" type="info" :closable="false" show-icon />
|
|
|
|
|
<LoadErrorState v-if="batchApprovalError" compact title="批量审核预览加载失败" :message="batchApprovalError.message" :loading="batchApprovalLoading" @retry="openBatchApproval"><template #details><ApiErrorMeta :details="batchApprovalError" /></template></LoadErrorState>
|
|
|
|
|
<template v-else>
|
|
|
|
@@ -2702,12 +2696,12 @@ onBeforeUnmount(() => {
|
|
|
|
|
</el-table>
|
|
|
|
|
</template>
|
|
|
|
|
</AppDialog>
|
|
|
|
|
<AppDialog class="order-density-dialog" v-model="coLoadCreateOpen" title="合柜报关" confirm-text="确认建组" :confirm-loading="coLoadSaving" :confirm-disabled="!canCreateCoLoadGroup" @confirm="createCoLoadGroup">
|
|
|
|
|
<AppDialog class="admin-density-dialog" v-model="coLoadCreateOpen" title="合柜报关" confirm-text="确认建组" :confirm-loading="coLoadSaving" :confirm-disabled="!canCreateCoLoadGroup" @confirm="createCoLoadGroup">
|
|
|
|
|
<el-alert type="warning" :closable="false" show-icon :title="`所选 ${selectedOrders.length} 票须属于同一国内仓、同一渠道,并全量进入同一柜;目的仓或目的港可以不同。资格由服务端按完整入仓片段校验。`" />
|
|
|
|
|
<div class="coload-selection"><span v-for="row in selectedOrders" :key="String(row.orderId)">{{ row.inboundCode || '待生成入仓码' }}</span></div>
|
|
|
|
|
<div v-if="coLoadError" class="coload-error" role="alert"><span>{{ coLoadError.message }}</span><ApiErrorMeta :details="coLoadError" /></div>
|
|
|
|
|
</AppDialog>
|
|
|
|
|
<AppDialog class="order-density-dialog" v-model="coLoadDetailOpen" title="同柜组成员" :show-confirm="false" cancel-text="关闭" width="min(720px, 94vw)" :loading="coLoadDetailLoading" :confirm-loading="coLoadCancelSaving">
|
|
|
|
|
<AppDialog class="admin-density-dialog" v-model="coLoadDetailOpen" title="同柜组成员" :show-confirm="false" cancel-text="关闭" width="min(720px, 94vw)" :loading="coLoadDetailLoading" :confirm-loading="coLoadCancelSaving">
|
|
|
|
|
<LoadErrorState v-if="coLoadDetailError" title="同柜组成员加载失败" :message="coLoadDetailError.message" :loading="coLoadDetailLoading" @retry="loadCoLoadDetail"><template #details><ApiErrorMeta :details="coLoadDetailError" /></template></LoadErrorState>
|
|
|
|
|
<template v-else-if="coLoadDetailSummary">
|
|
|
|
|
<div class="coload-detail-summary"><el-tag size="small" :type="coLoadDetailSummary.status === 'ACTIVE' ? 'warning' : 'info'">{{ coLoadGroupSummary(coLoadDetailSummary) }}</el-tag><span>{{ coLoadDetailSummary.memberCount }} 个成员</span></div>
|
|
|
|
@@ -2734,16 +2728,21 @@ onBeforeUnmount(() => {
|
|
|
|
|
/>
|
|
|
|
|
</AppDrawer>
|
|
|
|
|
|
|
|
|
|
<AppDialog class="order-density-dialog" v-model="noteOpen" title="添加内部备注" confirm-text="保存备注" :confirm-loading="noteSaving" @confirm="saveNote">
|
|
|
|
|
<el-input v-model="noteContent" type="textarea" :rows="5" maxlength="2000" show-word-limit placeholder="请输入仅平台内部可见的备注" aria-label="内部备注内容" />
|
|
|
|
|
<AppDialog class="admin-density-dialog" v-model="noteOpen" title="编辑订单备注" width="min(680px, calc(100vw - 28px))" confirm-text="保存备注" :confirm-loading="noteSaving" @confirm="saveNote">
|
|
|
|
|
<el-form label-position="top" class="order-remarks-form">
|
|
|
|
|
<el-form-item label="客户备注(只读)"><el-input :model-value="noteOrder?.customerRemark || '—'" disabled /></el-form-item>
|
|
|
|
|
<el-form-item label="内部备注"><el-input v-model="noteForm.internalRemark" type="textarea" :rows="3" maxlength="1000" show-word-limit placeholder="可填写、修改或清空内部备注" /></el-form-item>
|
|
|
|
|
<el-form-item label="仓库备注"><el-input v-model="noteForm.warehouseRemark" type="textarea" :rows="3" maxlength="1000" show-word-limit placeholder="可填写、修改或清空仓库备注" /></el-form-item>
|
|
|
|
|
<el-form-item label="客服备注"><el-input v-model="noteForm.customerServiceRemark" type="textarea" :rows="3" maxlength="1000" show-word-limit placeholder="可填写、修改或清空客服备注" /></el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</AppDialog>
|
|
|
|
|
|
|
|
|
|
<AppDialog class="order-density-dialog" v-model="holdDialogOpen" :title="holdAction === 'HOLD' ? '确认扣货' : '确认解除扣货'" :confirm-text="holdAction === 'HOLD' ? '确认扣货' : '确认解除'" :confirm-type="holdAction === 'HOLD' ? 'danger' : 'primary'" :confirm-loading="holdSaving" :confirm-disabled="!holdReason.trim() || holdReason.trim().length > 1000" width="min(600px, calc(100vw - 28px))" destroy-on-close @confirm="submitHoldAction">
|
|
|
|
|
<AppDialog class="admin-density-dialog" v-model="holdDialogOpen" :title="holdAction === 'HOLD' ? '确认扣货' : '确认解除扣货'" :confirm-text="holdAction === 'HOLD' ? '确认扣货' : '确认解除'" :confirm-type="holdAction === 'HOLD' ? 'danger' : 'primary'" :confirm-loading="holdSaving" :confirm-disabled="!holdReason.trim() || holdReason.trim().length > 1000" width="min(600px, calc(100vw - 28px))" destroy-on-close @confirm="submitHoldAction">
|
|
|
|
|
<el-alert :title="holdAction === 'HOLD' ? '扣货后服务端将阻止后续实物履约操作。' : '解除后是否可继续履约仍以服务端状态为准。'" :type="holdAction === 'HOLD' ? 'warning' : 'info'" :closable="false" show-icon />
|
|
|
|
|
<el-form label-position="top" class="hold-command-form"><el-form-item :label="holdAction === 'HOLD' ? '扣货原因' : '解除原因'" required><el-input v-model="holdReason" type="textarea" :rows="4" maxlength="1000" show-word-limit :placeholder="holdAction === 'HOLD' ? '请输入扣货原因' : '请输入解除扣货原因'" aria-label="扣货操作原因" /></el-form-item><el-form-item label="关联文件(选填)"><el-upload :key="holdEvidenceUploadKey" :auto-upload="false" :limit="1" accept=".txt,.pdf,.jpg,.jpeg,.png,text/plain,application/pdf,image/jpeg,image/png" :disabled="holdSaving" :on-change="selectHoldEvidenceFile" :on-remove="removeHoldEvidenceFile"><el-button :disabled="holdSaving"><FileUp :size="15" />选择文件</el-button><template #tip><div class="el-upload__tip">仅支持 TXT、PDF、JPG、PNG,单文件不超过 10MB;服务端将校验文件真实内容。</div></template></el-upload></el-form-item><LoadErrorState v-if="holdEvidenceError" compact title="关联文件处理失败" :message="holdEvidenceError.message" :show-retry="false"><template #details><ApiErrorMeta :details="holdEvidenceError" /></template></LoadErrorState></el-form>
|
|
|
|
|
</AppDialog>
|
|
|
|
|
|
|
|
|
|
<AppDialog class="order-density-dialog" v-model="approvalOpen" title="审核订单" confirm-text="审核通过" confirm-type="success" :confirm-loading="approvalSaving" destroy-on-close @confirm="approveOrder" @cancel="closeApproval">
|
|
|
|
|
<AppDialog class="admin-density-dialog" v-model="approvalOpen" title="审核订单" confirm-text="审核通过" confirm-type="success" :confirm-loading="approvalSaving" destroy-on-close @confirm="approveOrder" @cancel="closeApproval">
|
|
|
|
|
<dl v-if="approvalOrder" class="approval-facts">
|
|
|
|
|
<div><dt>入仓码</dt><dd>{{ approvalOrder.inboundCode || '—' }}</dd></div>
|
|
|
|
|
<div><dt>客户</dt><dd>{{ customerName(approvalOrder) }}</dd></div>
|
|
|
|
@@ -2762,7 +2761,7 @@ onBeforeUnmount(() => {
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<AppDialog
|
|
|
|
|
class="order-density-dialog"
|
|
|
|
|
class="admin-density-dialog"
|
|
|
|
|
v-model="measurementPreviewOpen"
|
|
|
|
|
:title="measurementPreviewTitle"
|
|
|
|
|
width="min(920px, calc(100vw - 28px))"
|
|
|
|
@@ -2778,7 +2777,7 @@ onBeforeUnmount(() => {
|
|
|
|
|
</AppDialog>
|
|
|
|
|
|
|
|
|
|
<InboundMeasurementDialog
|
|
|
|
|
class="order-density-dialog order-measurement-dialog"
|
|
|
|
|
class="admin-density-dialog"
|
|
|
|
|
v-if="measurementOrder?.inboundId"
|
|
|
|
|
v-model="measurementDialogOpen"
|
|
|
|
|
:customer-id="String(measurementOrder.tenantId)"
|
|
|
|
@@ -2872,6 +2871,8 @@ onBeforeUnmount(() => {
|
|
|
|
|
.table-card :deep(.el-table__body tr:hover > td.el-table__cell) { background: #f3f7fb; }
|
|
|
|
|
.row-actions { display: flex; align-items: center; gap: 4px; white-space: nowrap; }
|
|
|
|
|
.row-actions :deep(.el-button) { margin-left: 0; }
|
|
|
|
|
.table-card :deep(.data-table__system-cell .row-actions .el-button) { height: 28px; margin-left: 0; padding: 4px 6px; font-size: 13px; }
|
|
|
|
|
.table-card :deep(.data-table__system-cell .row-actions .el-dropdown) { margin-left: 0; }
|
|
|
|
|
.planning-cell { display: grid; min-width: 0; gap: 4px; }
|
|
|
|
|
.planning-cell > small { color: var(--cc-muted); font-size: 11px; }
|
|
|
|
|
.planning-volume-input,.planning-arrival-input { width: 100%; max-width: 100%; }
|
|
|
|
@@ -2896,6 +2897,7 @@ onBeforeUnmount(() => {
|
|
|
|
|
.detail-overview { display: flex; flex-wrap: wrap; gap: 6px 24px; margin: 0; padding: 8px 12px; border: 1px solid var(--cc-border); border-top: 0; background: #fff; }
|
|
|
|
|
.detail-tabs { display: flex; overflow-x: auto; overflow-y: hidden; border: 1px solid var(--cc-border); border-block: 0; background: #fff; scrollbar-width: thin; }
|
|
|
|
|
.detail-tabs button { position: relative; display: inline-flex; min-width: max-content; min-height: 38px; flex: 0 0 auto; align-items: center; justify-content: center; gap: 6px; padding: 0 16px; border: 0; background: transparent; color: #475467; font-size: 13px; font-weight: 500; cursor: pointer; }
|
|
|
|
|
.detail-tab-icon { display: inline-flex; width: 18px; height: 18px; flex: 0 0 18px; align-items: center; justify-content: center; font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; font-size: 17px; font-weight: 400; line-height: 1; }
|
|
|
|
|
.detail-tabs button:last-child { border-right: 0; }
|
|
|
|
|
.detail-tabs button::after { position: absolute; right: 12px; bottom: 0; left: 12px; height: 2px; background: transparent; content: ''; }
|
|
|
|
|
.detail-tabs button:hover { background: #fafbff; color: #344054; }
|
|
|
|
@@ -2992,12 +2994,13 @@ onBeforeUnmount(() => {
|
|
|
|
|
.notes-list li:last-child { padding-bottom: 0; border-bottom: 0; }
|
|
|
|
|
.notes-list li > p { margin: 0; color: var(--cc-text); font-size: 13px; }
|
|
|
|
|
.notes-list span { display: block; margin-top: 5px; color: var(--cc-muted); font-size: 12px; }
|
|
|
|
|
@media (max-width: 960px) { .detail-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); } .order-info-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .measurement-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
|
|
|
@media (max-width: 960px) { .order-info-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .measurement-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
|
|
|
@media (max-width: 720px) { .page-intro { align-items: stretch; flex-direction: column; } .page-intro :deep(.el-button) { width: 100%; min-height: 44px; } .status-tab { min-height: 46px; padding: 0 14px; } .table-actions :deep(.el-button) { width: 100%; min-height: 40px; } .row-actions { flex-wrap: wrap; } .order-detail-header { align-items: stretch; flex-direction: column; } .order-detail-heading { flex-wrap: wrap; } .detail-header-actions { display: grid; grid-template-columns: 1fr; } .detail-header-actions :deep(.el-button) { min-height: 40px; } .order-info-grid, .measurement-grid { grid-template-columns: 1fr; } .order-info-grid > div.wide { grid-column: auto; } .detail-tabs button { padding: 0 18px; } .detail-panel { padding: 16px; } .measurement-section-title { align-items: flex-start; flex-wrap: wrap; padding: 12px; } .measurement-section-summary { width: 100%; flex-basis: calc(100% - 34px); flex-wrap: wrap; justify-content: flex-start; gap: 6px 16px; white-space: normal; } .measurement-section-title > svg { margin-left: auto; } .measurement-total { flex-wrap: wrap; justify-content: flex-start; gap: 6px 16px; } .measurement-total strong { width: 100%; } }
|
|
|
|
|
@media (max-width: 720px) { .weight-evidence__heading { flex-direction: column; } .weight-evidence__heading dl { text-align: left; } }
|
|
|
|
|
@media (max-width: 720px) { .fee-overview { grid-template-columns: 1fr; } .fee-overview > div + div { border-top: 1px solid var(--cc-border); border-left: 0; } }
|
|
|
|
|
@media (max-width: 720px) { .measurement-section-title { align-items: stretch; flex-direction: column; } .measurement-section-toggle { align-items: flex-start; flex-wrap: wrap; } .measurement-section-toggle > svg { margin-left: auto; } .measurement-section-mode { width: 100%; flex-basis: auto; } }
|
|
|
|
|
@media (max-width: 420px) { .weight-evidence { padding: 10px; } .weight-evidence-grid { grid-template-columns: 1fr; } }
|
|
|
|
|
@media (max-width: 420px) { .weight-evidence { padding: 10px; } .weight-evidence-grid { grid-template-columns: 1fr; } }
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
<style src="@/styles/adminDensity.css"></style>
|
|
|
|
|
<style src="../styles/orderDensity.css"></style>
|
|
|
|
|