style(business): 统一业务状态标签为文字+颜色样式

- 新增全局 `.status-text` 样式,去除 el-tag 背景和边框,仅保留彩色文字和跟随文字颜色的圆点
- 业务状态相关的 el-tag 标签全部加上 `class="status-text"`,覆盖调度状态、审批状态、运单状态等全站业务状态展示
- 统一发货模板查看弹窗的卡片样式,新增分区块样式与运费信息展示板块
- 调整发货模板弹窗详情 label 宽度,所有 el-descriptions 的 label 宽度统一为 140px 以保证视觉一致
- 表格列内嵌输入控件全宽默认样式生效,无需单独设置跨度,解决输入框显示不足问题
- 弹窗中的部分表单和导入区域使用 `section-card` 统一卡片风格
- 客商档案查看模式改为独立路由,实现查看与编辑隔离并调整对应操作按钮文案
- 相关样式调整及细节优化,包括运费单位颜色等辅助样式,保证界面细节统一规范
This commit is contained in:
2026-08-24 20:15:14 +08:00
parent 6bd8d18e20
commit 8883186344
19 changed files with 312 additions and 97 deletions
+18 -6
View File
@@ -1,8 +1,20 @@
# 2026-08-24 # 2026-08-24
## project-apply.vue:弹窗改独立页(与新增项目管理一致) ## 发货模板查看弹窗白底卡片统一化
- 将「重大项目补录 / 查看 / 项目变更」三种打开方式从 `el-dialog` 改为路由跳转独立页 `/business/project-apply/form?mode=...`,与已有的「新增 / 编辑」独立页统一 - 问题:shipping-template 查看弹窗仍走 Avue 默认 rowView,各板块无白底卡片分隔
- `openProjectDialog` 全部 type 统一走 `$router.push``openProjectFormPage``route.query.mode`add/edit/view/majorSupplement/change)加载详情或空表单。 - 改动:
- 独立页标题改用全局 `archive-page-form__title`(自带 4px 主色竖条),删除原本地 `.project-apply-page__title` scoped 样式 - `src/option/business/shipping-template.js`config 新增 `detailButton: true``detailButtonIgnoreDraftStatus: true`,并配置 `detailSections`(模板信息/基本信息/收发货信息),每板块两列 el-descriptions,备注与地址占整行
- 仅改 1 个文件 `src/views/business/project-apply.vue`(约 +25 / -18 行);路由、API、全局样式未动。footer 逻辑(保存/提交/返回)沿用既有 `isProjectFormPage` 分支,无需改 - `src/views/business/components/business-crud-page.vue`:在 detailBox 通用详情模板中,货物信息卡片后新增运费信息 section-card,区分公路(单价/数量合计/运费/运费合计/其他运费合计/币种)与非公路(运费/数量合计/其他运费合计/币种)展示
- 验证:dev localhost:2889 下分别点「重大项目补录 / 新增 / 编辑 / 查看 / 项目变更」应都进入独立页面,标题显示「重大项目补录 / 新增项目管理 / 编辑项目管理 / 查看项目管理 / 项目变更」 - 样式:`&__detail-content` 已统一 `gap: 12px`section-card 间距即为 12px;新增 `&__freight-descriptions` 单位/币种辅助色
- 验证:`npm run build` 通过。
## 发货模板查看弹窗 label 宽度统一
- 问题:详情弹窗各 section 的 el-descriptions 按内容自动列宽,导致「收发货信息」板块含 6 字标签(发货联系方式/收货联系方式)时 label 列比其他板块(4 字标签)更宽,视觉不一致。原 CSS `.el-descriptions__label{width:140px}` 在含 span 行的 fixed 布局下未能可靠等宽。
- 改动:`src/views/business/components/business-crud-page.vue` 在通用详情描述(line ~3109)与运费信息两张描述表(road / 非 road)上加 `label-width="140px"`Element Plus 原生机制,覆盖 auto 列宽与 span 行差异),使所有详情 label 列统一 140px。
- 验证:`npm run build` 通过。
## 全站业务状态标签文字化(调度状态/审批状态)
- 新增全局 `.status-text` 工具类(`src/styles/element-ui.scss` 末尾):去掉 `el-tag` 背景/边框,保留彩色文字 + `currentColor` 圆点。
- 全站所有业务状态 `el-tag` 统一加 `class="status-text"`business-crud-page#status/#businessStatus/#approvalStatus 插槽 + 运输计划详情头 + 运单详情头 + 调度弹窗头)、master-order 系列 businessStatus、loading-manage 详情弹窗、结算三处 approvalStatus、process-config 流程状态。
- 已通过 dev (localhost:2889) HMR 生效,刷新即可查看。调度状态(businessStatus)全站视觉已统一为"文字 + 颜色"。
- `credit-score-quantification.vue` 状态列(#status 插槽,statusMap: 正常/停用/草稿)的 el-tag 也加 `.status-text` 统一。
+13
View File
@@ -33,6 +33,19 @@
- **master-order?mode=editor**`master-order.vue``<master-order-editor>` 包进 `<template v-else-if="mode==='editor'">`,前置 `<div class="archive-page-form__title">{{ masterEditorTitle }}</div>`computed `masterEditorTitle` = `routeId ? '编辑总单' : '新增总单'`)。 - **master-order?mode=editor**`master-order.vue``<master-order-editor>` 包进 `<template v-else-if="mode==='editor'">`,前置 `<div class="archive-page-form__title">{{ masterEditorTitle }}</div>`computed `masterEditorTitle` = `routeId ? '编辑总单' : '新增总单'`)。
- 扩展原则:新增独立表单页要带此标题,要么并入 business-crud-page 的 `formPageTitle` 条件(business-crud-page 系列),要么在对应页面模板手写 `<div class="archive-page-form__title">`loading-manage / master-order 模式)。 - 扩展原则:新增独立表单页要带此标题,要么并入 business-crud-page 的 `formPageTitle` 条件(business-crud-page 系列),要么在对应页面模板手写 `<div class="archive-page-form__title">`loading-manage / master-order 模式)。
### 表格列内嵌输入控件:全宽(全局 CSS,不动手写 scoped)
- `element-ui.scss` 在 660-678 行加了一条全局规则:`.el-table .el-table__body td.el-table__cell .cell > .el-input-number/.el-input/.el-select/.el-date-editor/.el-cascader { width:100%; --el-*-width:100% }`(带对应 `--el-input-number-width` 等变量兜底)。
- 适用场景:可编辑 el-table 列、弹窗内编辑表格。原先容易踩坑的是 el-plus 的 el-input-number 默认根 width=150pxcell 给到 min-width=150 后输入框只占自然宽度、看着"显示不全"。**新增任何"el-table cell 内嵌 el-input-number/el-input/el-select"需求不用再写 scoped 宽度**——已全局兜底。
- 与"表单内 250px 全宽"互不冲突:本规则只命中 `.el-table .el-table__body td`,表单内 `.el-form-item__content >` 的 250px 规则仍生效。
- 已覆盖:pre-settlement-editor「结算明细调整」弹窗(adjustDialog 列内 el-input-number/el-input 全宽)、transport-reconciliation-editor/formal-settlement-editor/settlement-adjustment-editor 同款结构。
### 业务状态标签文字化:全局 `.status-text` 工具类
- 需求:全站"调度状态/运单状态/审批状态"等用 `el-tag` 展示的字段,统一改为"纯文字 + 颜色"(不用 tag 背景/边框)。
- 实现:`element-ui.scss` 末尾新增 `.el-tag.status-text { background:transparent!important; border-color:transparent!important; padding:0; margin-left:8px; font-weight:500 }` + `&::before` 6px 圆点(`background:currentColor`,颜色随 el-tag 的 `:type`)。
- 用法:业务状态 `el-tag``class="status-text"`,颜色仍由现有 `statusTagType/statusType/waybillStatusType/detailStatusType` 返回的 success/warning/danger/info/primary 决定。
- 已覆盖:`business-crud-page.vue`#status/#businessStatus/#approvalStatus 插槽 + 运输计划详情头 + 运单详情头 + 调度弹窗头)、`master-order.vue`/`master-order-detail.vue`/`master-order-dispatch.vue` 的 businessStatus、`loading-manage.vue` 详情弹窗、结算三处 approvalStatus、`process-config.vue` 流程状态、`credit-score-quantification.vue` 状态列。
- 例外:`loading-manage.vue` 列表状态列本就用 `<span class="loading-manage-page__status is-${status}">` 文字化(先例),不动;"类型标签"transport-flow-tag、transportTypeName 等 `type="primary"`)非状态语义,保持 tag 样式。
## 关键文件 ## 关键文件
- 分组白卡:`src/components/section-card/main.vue` - 分组白卡:`src/components/section-card/main.vue`
- 全局弹窗/section-card 样式:`src/styles/element-ui.scss` - 全局弹窗/section-card 样式:`src/styles/element-ui.scss`
+34
View File
@@ -15,6 +15,40 @@ const templateTypeOptions = [
export const config = { export const config = {
title: '发货模板', title: '发货模板',
permission: 'shipping_template', permission: 'shipping_template',
detailButton: true,
detailButtonIgnoreDraftStatus: true,
detailSections: [
{
title: '模板信息',
fields: [
['templateCode', '模板编号'],
['templateName', '模板名称'],
['templateType', '模板类型'],
['transportType', '运输方式'],
['remark', '备注', 2],
],
},
{
title: '基本信息',
fields: [
['projectName', '项目'],
['contractName', '客户合同'],
['transportType', '运输方式'],
['basicRemark', '备注', 2],
],
},
{
title: '收发货信息',
fields: [
['departureAddress', '发货地址', 2],
['departureContact', '发货联系人'],
['departurePhone', '发货联系方式'],
['arrivalAddress', '收货地址', 2],
['arrivalContact', '收货联系人'],
['arrivalPhone', '收货联系方式'],
],
},
],
tableColumnOrder: [ tableColumnOrder: [
'templateCode', 'templateCode',
'templateName', 'templateName',
@@ -52,7 +52,7 @@ export const config = {
{ {
title: '申请信息', title: '申请信息',
fields: [ fields: [
['applicationNo', '申请单号', 2], ['applicationNo', '申请单号', 1],
['projectName', '项目', 1], ['projectName', '项目', 1],
['projectCode', '项目编号', 1], ['projectCode', '项目编号', 1],
['undertakeDeptName', '承办部门', 1], ['undertakeDeptName', '承办部门', 1],
@@ -62,7 +62,7 @@ export const config = {
['currentNode', '当前节点', 1], ['currentNode', '当前节点', 1],
['currentProcessor', '当前处理人', 1], ['currentProcessor', '当前处理人', 1],
['validUntil', '申请有效期至', 1], ['validUntil', '申请有效期至', 1],
['remark', '备注', 2], ['remark', '备注', 1],
], ],
}, },
{ {
+50
View File
@@ -657,6 +657,26 @@
text-align: center; text-align: center;
} }
// 全站统一:el-table 表格列内嵌控件默认拉满 cell(不撞表头)
// 适用场景:可编辑表、弹窗内表格(如 pre-settlement-editor 结算明细调整、transport-reconciliation/formal-settlement/settlement-adjustment editor 等)。
// 排除 .el-form-item__content 上下文,与表单内 250px 规则互不冲突。
.el-table .el-table__body td.el-table__cell .cell > .el-input-number,
.el-table .el-table__body td.el-table__cell .cell > .el-input,
.el-table .el-table__body td.el-table__cell .cell > .el-select,
.el-table .el-table__body td.el-table__cell .cell > .el-date-editor,
.el-table .el-table__body td.el-table__cell .cell > .el-cascader,
.el-table .el-table__body td.el-table__cell .cell > .el-input-number .el-input__wrapper,
.el-table .el-table__body td.el-table__cell .cell > .el-select .el-select__wrapper,
.el-table .el-table__body td.el-table__cell .cell > .el-date-editor.el-input,
.el-table .el-table__body td.el-table__cell .cell > .el-date-editor.el-input .el-input__wrapper {
width: 100%;
--el-input-number-width: 100%;
--el-input-width: 100%;
--el-select-width: 100%;
--el-date-editor-width: 100%;
--el-cascader-width: 100%;
}
// 统一 avue-crud 偶数行背景色 // 统一 avue-crud 偶数行背景色
.avue-crud .el-table__body-wrapper tr.el-table__row:nth-child(even) td.el-table__cell, .avue-crud .el-table__body-wrapper tr.el-table__row:nth-child(even) td.el-table__cell,
.avue-crud .el-table__body-wrapper tr.el-table__row:nth-child(even) td.el-table-fixed-column--left, .avue-crud .el-table__body-wrapper tr.el-table__row:nth-child(even) td.el-table-fixed-column--left,
@@ -985,6 +1005,11 @@
border-top: 0 !important; border-top: 0 !important;
margin-top: -30px !important; margin-top: -30px !important;
} }
// 查看弹窗(avue--detailfooter 不上移,避免遮住详情表格底部边框
.avue-crud__dialog .avue-form.avue--detail ~ .avue-dialog__footer {
margin-top: 0 !important;
}
.el-form-item__label { .el-form-item__label {
margin-left: 12px !important; margin-left: 12px !important;
} }
@@ -1001,3 +1026,28 @@
//.el-form-item { //.el-form-item {
// margin-bottom: 15px !important; // margin-bottom: 15px !important;
//} //}
// ============ 业务状态标签:全站统一为「文字 + 颜色」样式 ============
// 去掉 el-tag 默认背景与边框,仅保留彩色文字,并前置一个状态圆点(颜色同文字)。
// 适用于所有业务状态展示:调度状态 / 运单状态 / 审批状态等。
.el-tag.status-text {
background-color: transparent !important;
border-color: transparent !important;
padding: 0;
margin-left: 8px;
font-weight: 500;
line-height: inherit;
&::before {
content: '';
display: inline-block;
width: 6px;
height: 6px;
border-radius: 50%;
background-color: currentColor;
margin-right: 6px;
vertical-align: middle;
position: relative;
top: -1px;
}
}
@@ -98,19 +98,19 @@
</template> </template>
<template #status="{ row }"> <template #status="{ row }">
<el-tag :type="statusTagType(row.status)"> <el-tag :type="statusTagType(row.status)" class="status-text">
{{ displayStatus(row, 'status') }} {{ displayStatus(row, 'status') }}
</el-tag> </el-tag>
</template> </template>
<template #businessStatus="{ row }"> <template #businessStatus="{ row }">
<el-tag :type="statusTagType(row.businessStatus)"> <el-tag :type="statusTagType(row.businessStatus)" class="status-text">
{{ displayStatus(row, 'businessStatus') }} {{ displayStatus(row, 'businessStatus') }}
</el-tag> </el-tag>
</template> </template>
<template #approvalStatus="{ row }"> <template #approvalStatus="{ row }">
<el-tag :type="statusTagType(row.approvalStatus)"> <el-tag :type="statusTagType(row.approvalStatus)" class="status-text">
{{ displayStatus(row, 'approvalStatus') }} {{ displayStatus(row, 'approvalStatus') }}
</el-tag> </el-tag>
</template> </template>
@@ -2522,7 +2522,7 @@
<span>|</span> <span>|</span>
{{ detailRow.planNo || '-' }} {{ detailRow.planNo || '-' }}
</h2> </h2>
<el-tag class="is-dispatching" effect="light"> <el-tag :type="statusTagType(detailRow.businessStatus)" class="status-text" effect="light">
{{ displayStatus(detailRow, 'businessStatus') }} {{ displayStatus(detailRow, 'businessStatus') }}
</el-tag> </el-tag>
<el-tag type="primary" effect="light"> <el-tag type="primary" effect="light">
@@ -2692,7 +2692,7 @@
<div class="business-crud-page__waybill-heading"> <div class="business-crud-page__waybill-heading">
<strong>运单详情</strong> <strong>运单详情</strong>
<span>{{ detailRow.waybillNo || '-' }}</span> <span>{{ detailRow.waybillNo || '-' }}</span>
<el-tag type="success">{{ displayStatus(detailRow, 'businessStatus') }}</el-tag> <el-tag :type="statusTagType(detailRow.businessStatus)" class="status-text">{{ displayStatus(detailRow, 'businessStatus') }}</el-tag>
<el-tag type="primary"> <el-tag type="primary">
{{ formatTransportPlanDetailTransportType(waybillTransportMode(detailRow)) }} {{ formatTransportPlanDetailTransportType(waybillTransportMode(detailRow)) }}
</el-tag> </el-tag>
@@ -3106,7 +3106,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<el-descriptions v-else :column="2" border> <el-descriptions v-else :column="2" border label-width="140px">
<el-descriptions-item <el-descriptions-item
v-for="field in section.fields" v-for="field in section.fields"
:key="field[0]" :key="field[0]"
@@ -3133,6 +3133,67 @@
<el-table-column prop="remark" label="备注" min-width="160" /> <el-table-column prop="remark" label="备注" min-width="160" />
</el-table> </el-table>
</section-card> </section-card>
<section-card
v-if="
config.enableShippingTemplateFreight && detailRow.templateType === '运单'
"
:title="`运费信息${transportMode === 'road' ? '(公路)' : ''}`"
>
<el-descriptions
v-if="transportMode === 'road'"
:column="2"
border
label-width="140px"
class="business-crud-page__freight-descriptions"
>
<template v-for="(item, index) in shippingTemplateFreight.freightItems" :key="index">
<el-descriptions-item :label="`单价${index + 1}`">
<template v-if="item.unitPrice || item.priceUnit">
{{ formatShippingTemplateFreightNumber(item.unitPrice) }}
<span v-if="item.priceUnit" class="business-crud-page__freight-unit">{{ item.priceUnit }}</span>
</template>
<template v-else>-</template>
</el-descriptions-item>
<el-descriptions-item :label="`数量合计${index + 1}`">
{{ shippingTemplateRoadFreightQuantity(index) }}
<span v-if="transportCargoRows[index]?.quantityUnit" class="business-crud-page__freight-unit">
{{ transportCargoRows[index].quantityUnit }}
</span>
</el-descriptions-item>
<el-descriptions-item :label="`运费${index + 1}`">
{{ shippingTemplateRoadFreightAmount(item, index) }}
<span class="business-crud-page__freight-currency">{{ shippingTemplateCurrencyLabel }}</span>
</el-descriptions-item>
</template>
<el-descriptions-item label="运费合计">
{{ shippingTemplateRoadFreightTotal }}
<span class="business-crud-page__freight-currency">{{ shippingTemplateCurrencyLabel }}</span>
</el-descriptions-item>
<el-descriptions-item label="其他运费合计">
{{ formatShippingTemplateFreightNumber(shippingTemplateFreight.otherFreightAmount) }}
<span class="business-crud-page__freight-currency">{{ shippingTemplateCurrencyLabel }}</span>
</el-descriptions-item>
<el-descriptions-item label="币种">
{{ currencyName(shippingTemplateFreight.currency) }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions v-else :column="2" border label-width="140px" class="business-crud-page__freight-descriptions">
<el-descriptions-item label="运费">
{{ formatShippingTemplateFreightNumber(shippingTemplateFreight.freightAmount) }}
<span class="business-crud-page__freight-currency">{{ shippingTemplateCurrencyLabel }}</span>
</el-descriptions-item>
<el-descriptions-item label="数量合计">
{{ transportCargoQuantityTotal }}
</el-descriptions-item>
<el-descriptions-item label="其他运费合计">
{{ formatShippingTemplateFreightNumber(shippingTemplateFreight.otherFreightAmount) }}
<span class="business-crud-page__freight-currency">{{ shippingTemplateCurrencyLabel }}</span>
</el-descriptions-item>
<el-descriptions-item label="币种">
{{ currencyName(shippingTemplateFreight.currency) }}
</el-descriptions-item>
</el-descriptions>
</section-card>
<section-card <section-card
v-if="config.enableAttachmentTable" v-if="config.enableAttachmentTable"
:title="config.attachmentTitle || '附件'" :title="config.attachmentTitle || '附件'"
@@ -3702,7 +3763,7 @@
<span class="business-crud-page__dispatch-heading-no"> <span class="business-crud-page__dispatch-heading-no">
{{ dispatchDialogNo || '-' }} {{ dispatchDialogNo || '-' }}
</span> </span>
<el-tag :type="statusTagType(dispatchRow.businessStatus)" effect="light"> <el-tag :type="statusTagType(dispatchRow.businessStatus)" class="status-text" effect="light">
{{ dispatchDialogStatusText }} {{ dispatchDialogStatusText }}
</el-tag> </el-tag>
<el-tag type="primary" effect="light"> <el-tag type="primary" effect="light">
@@ -5450,22 +5511,24 @@
class="business-crud-page__cargo-import-dialog" class="business-crud-page__cargo-import-dialog"
@closed="cargoImportRows = []" @closed="cargoImportRows = []"
> >
<div class="business-crud-page__cargo-import"> <section-card>
<el-upload <div class="business-crud-page__cargo-import">
action="#" <el-upload
accept=".xls,.xlsx" action="#"
:auto-upload="false" accept=".xls,.xlsx"
:show-file-list="false" :auto-upload="false"
:disabled="cargoImportLoading" :show-file-list="false"
:on-change="handleCargoImportFileChange" :disabled="cargoImportLoading"
> :on-change="handleCargoImportFileChange"
<el-button type="primary" :loading="cargoImportLoading">上传</el-button> >
<template #tip> <el-button type="primary" :loading="cargoImportLoading">上传</el-button>
<div class="el-upload__tip">支持.xlsx.xls的文件格式单个文件大小限制50M</div> <template #tip>
</template> <div class="el-upload__tip">支持.xlsx.xls的文件格式单个文件大小限制50M</div>
</el-upload> </template>
<el-button type="primary" @click="handleCargoImportTemplate">点击下载模板</el-button> </el-upload>
</div> <el-button type="primary" @click="handleCargoImportTemplate">点击下载模板</el-button>
</div>
</section-card>
<template #footer> <template #footer>
<el-button :disabled="cargoImportLoading" @click="closeCargoImportDialog">关闭</el-button> <el-button :disabled="cargoImportLoading" @click="closeCargoImportDialog">关闭</el-button>
<el-button <el-button
@@ -15461,6 +15524,15 @@ export default {
flex-direction: column; flex-direction: column;
gap: 12px; gap: 12px;
.business-crud-page__freight-descriptions {
.business-crud-page__freight-unit,
.business-crud-page__freight-currency {
margin-left: 4px;
color: #909399;
font-size: 13px;
}
}
.section-card { .section-card {
:deep(.el-descriptions__table) { :deep(.el-descriptions__table) {
width: 100%; width: 100%;
@@ -1,7 +1,7 @@
<template> <template>
<div v-loading="loading" class="master-detail"> <div v-loading="loading" class="master-detail">
<section v-if="master" class="detail-overview"> <section v-if="master" class="detail-overview">
<div class="detail-heading"><div><h2>多联总单详情 <span>|</span> {{ master.masterNo }}</h2><el-tag :type="statusType(master.businessStatus)">{{ statusName(master.businessStatus) }}</el-tag><el-tag v-if="transportFlowLabel" type="info" class="transport-flow-tag">{{ transportFlowLabel }}</el-tag></div><el-button @click="$emit('back')">返回</el-button></div> <div class="detail-heading"><div><h2>多联总单详情 <span>|</span> {{ master.masterNo }}</h2><el-tag :type="statusType(master.businessStatus)" class="status-text">{{ statusName(master.businessStatus) }}</el-tag><el-tag v-if="transportFlowLabel" type="info" class="transport-flow-tag">{{ transportFlowLabel }}</el-tag></div><el-button @click="$emit('back')">返回</el-button></div>
<dl class="detail-meta"><div><dt>客户</dt><dd>{{ master.customerName || '-' }}</dd></div><div><dt>合同编号</dt><dd>{{ master.contractNo || '-' }}</dd></div><div><dt>项目</dt><dd>{{ master.projectName || '-' }}</dd></div><div class="detail-meta__attachments"><dt>附件</dt><dd><template v-if="attachments.length"><el-link v-for="file in attachments" :key="file.url || file.link || file.name || file.originalName" type="primary" @click="previewAttachment(file)">{{ attachmentName(file) }}</el-link></template><span v-else>-</span></dd></div></dl> <dl class="detail-meta"><div><dt>客户</dt><dd>{{ master.customerName || '-' }}</dd></div><div><dt>合同编号</dt><dd>{{ master.contractNo || '-' }}</dd></div><div><dt>项目</dt><dd>{{ master.projectName || '-' }}</dd></div><div class="detail-meta__attachments"><dt>附件</dt><dd><template v-if="attachments.length"><el-link v-for="file in attachments" :key="file.url || file.link || file.name || file.originalName" type="primary" @click="previewAttachment(file)">{{ attachmentName(file) }}</el-link></template><span v-else>-</span></dd></div></dl>
<div class="route-map"><template v-for="(route, index) in segments" :key="route.segmentNo"><div class="route-map__node"><span :class="['route-badge', index ? 'middle' : 'start']">{{ index ? '经' : '起' }}</span><strong>{{ route.departureName || '-' }}</strong><small>{{ route.departureAddress || '-' }}</small><small class="route-map__progress">{{ index ? `已到达 ${quantity(segments[index - 1].arrivedQuantity)}/${quantity(master.totalQuantity)}` : `已调度 ${quantity(route.dispatchedQuantity)}/${quantity(master.totalQuantity)}` }}</small><small v-if="index" class="route-map__progress">已调度 {{ quantity(route.dispatchedQuantity) }}/{{ quantity(master.totalQuantity) }}</small></div><div class="route-map__line"></div><div v-if="index === segments.length - 1" class="route-map__node"><span class="route-badge end">终</span><strong>{{ route.arrivalName || '-' }}</strong><small>{{ route.arrivalAddress || '-' }}</small><small class="route-map__progress">已到达 {{ quantity(route.arrivedQuantity) }}/{{ quantity(master.totalQuantity) }}</small></div></template></div> <div class="route-map"><template v-for="(route, index) in segments" :key="route.segmentNo"><div class="route-map__node"><span :class="['route-badge', index ? 'middle' : 'start']">{{ index ? '经' : '起' }}</span><strong>{{ route.departureName || '-' }}</strong><small>{{ route.departureAddress || '-' }}</small><small class="route-map__progress">{{ index ? `已到达 ${quantity(segments[index - 1].arrivedQuantity)}/${quantity(master.totalQuantity)}` : `已调度 ${quantity(route.dispatchedQuantity)}/${quantity(master.totalQuantity)}` }}</small><small v-if="index" class="route-map__progress">已调度 {{ quantity(route.dispatchedQuantity) }}/{{ quantity(master.totalQuantity) }}</small></div><div class="route-map__line"></div><div v-if="index === segments.length - 1" class="route-map__node"><span class="route-badge end">终</span><strong>{{ route.arrivalName || '-' }}</strong><small>{{ route.arrivalAddress || '-' }}</small><small class="route-map__progress">已到达 {{ quantity(route.arrivedQuantity) }}/{{ quantity(master.totalQuantity) }}</small></div></template></div>
</section> </section>
@@ -17,7 +17,7 @@
<header @click="toggleSegment(route.segmentNo)"><h3><span class="segment-index">{{ segmentNumber(route, index) }}</span><span>{{ route.departureName || '-' }} {{ route.arrivalName || '-' }}</span><span class="segment-detail__transport-type">{{ segmentTransportType(route) || '-' }}</span><span class="segment-detail__progress-bar"><span :style="{ width: `${segmentProgress(route)}%` }"></span></span><span class="segment-detail__progress">已调度 <em>{{ quantity(route.dispatchedQuantity) }}</em> / {{ quantity(plannedQuantity(route)) }} {{ plannedUnit(route) }}</span></h3><div class="segment-detail__header-right"><el-tooltip :content="isSegmentExpanded(route.segmentNo) ? '折叠' : '展开'" placement="top"><el-button circle :icon="isSegmentExpanded(route.segmentNo) ? ArrowUp : ArrowDown" @click.stop="toggleSegment(route.segmentNo)" /></el-tooltip></div></header> <header @click="toggleSegment(route.segmentNo)"><h3><span class="segment-index">{{ segmentNumber(route, index) }}</span><span>{{ route.departureName || '-' }} {{ route.arrivalName || '-' }}</span><span class="segment-detail__transport-type">{{ segmentTransportType(route) || '-' }}</span><span class="segment-detail__progress-bar"><span :style="{ width: `${segmentProgress(route)}%` }"></span></span><span class="segment-detail__progress">已调度 <em>{{ quantity(route.dispatchedQuantity) }}</em> / {{ quantity(plannedQuantity(route)) }} {{ plannedUnit(route) }}</span></h3><div class="segment-detail__header-right"><el-tooltip :content="isSegmentExpanded(route.segmentNo) ? '折叠' : '展开'" placement="top"><el-button circle :icon="isSegmentExpanded(route.segmentNo) ? ArrowUp : ArrowDown" @click.stop="toggleSegment(route.segmentNo)" /></el-tooltip></div></header>
<div v-show="isSegmentExpanded(route.segmentNo)" class="segment-execution"> <div v-show="isSegmentExpanded(route.segmentNo)" class="segment-execution">
<div class="segment-stats"><div><span>总量</span><strong>{{ quantity(master.totalQuantity) }}<small></small></strong></div><div><span>已调度</span><strong class="dispatched">{{ quantity(route.dispatchedQuantity) }}<small></small></strong></div><div><span>剩余</span><strong class="remaining">{{ quantity(remainingQuantity(route)) }}<small></small></strong></div></div> <div class="segment-stats"><div><span>总量</span><strong>{{ quantity(master.totalQuantity) }}<small></small></strong></div><div><span>已调度</span><strong class="dispatched">{{ quantity(route.dispatchedQuantity) }}<small></small></strong></div><div><span>剩余</span><strong class="remaining">{{ quantity(remainingQuantity(route)) }}<small></small></strong></div></div>
<el-table :data="route.waybills || []" border class="waybill-table"><el-table-column label="运单号" min-width="180"><template #default="{ row }"><el-link type="primary" @click="openWaybill(row)">{{ row.waybillNo }}</el-link></template></el-table-column><el-table-column prop="carrierName" label="承运商" min-width="190" /><el-table-column label="司机/车牌" min-width="180"><template #default="{ row }">{{ driverVehicle(row) }}</template></el-table-column><el-table-column prop="cargoType" label="货物类型" min-width="120" /><el-table-column label="数量(吨)" width="130"><template #default="{ row }">{{ quantity(row.quantity) }}</template></el-table-column><el-table-column label="状态" width="130"><template #default="{ row }"><el-tag :type="waybillStatusType(row.businessStatus)" size="small">{{ waybillStatusName(row.businessStatus) }}</el-tag></template></el-table-column><el-table-column prop="createTime" label="创建时间" min-width="180" /></el-table> <el-table :data="route.waybills || []" border class="waybill-table"><el-table-column label="运单号" min-width="180"><template #default="{ row }"><el-link type="primary" @click="openWaybill(row)">{{ row.waybillNo }}</el-link></template></el-table-column><el-table-column prop="carrierName" label="承运商" min-width="190" /><el-table-column label="司机/车牌" min-width="180"><template #default="{ row }">{{ driverVehicle(row) }}</template></el-table-column><el-table-column prop="cargoType" label="货物类型" min-width="120" /><el-table-column label="数量(吨)" width="130"><template #default="{ row }">{{ quantity(row.quantity) }}</template></el-table-column><el-table-column label="状态" width="130"><template #default="{ row }"><el-tag :type="waybillStatusType(row.businessStatus)" size="small" class="status-text">{{ waybillStatusName(row.businessStatus) }}</el-tag></template></el-table-column><el-table-column prop="createTime" label="创建时间" min-width="180" /></el-table>
<el-empty v-if="!(route.waybills || []).length" description="暂无运单明细" :image-size="56" /> <el-empty v-if="!(route.waybills || []).length" description="暂无运单明细" :image-size="56" />
<div v-if="(route.transportPlans || []).length" class="transport-plan-detail"><h4>关联计划单</h4><el-table :data="route.transportPlans" border><el-table-column label="计划单号" min-width="160"><template #default="{ row }"><el-link type="primary" @click="openPlan(row)">{{ row.planNo }}</el-link></template></el-table-column><el-table-column prop="planName" label="计划名称" min-width="180" /><el-table-column prop="transportType" label="运输方式" width="130" /><el-table-column prop="planStartDate" label="计划开始日期" width="130" /><el-table-column prop="planEndDate" label="计划结束日期" width="130" /><el-table-column prop="businessStatus" label="状态" width="110" /></el-table></div> <div v-if="(route.transportPlans || []).length" class="transport-plan-detail"><h4>关联计划单</h4><el-table :data="route.transportPlans" border><el-table-column label="计划单号" min-width="160"><template #default="{ row }"><el-link type="primary" @click="openPlan(row)">{{ row.planNo }}</el-link></template></el-table-column><el-table-column prop="planName" label="计划名称" min-width="180" /><el-table-column prop="transportType" label="运输方式" width="130" /><el-table-column prop="planStartDate" label="计划开始日期" width="130" /><el-table-column prop="planEndDate" label="计划结束日期" width="130" /><el-table-column prop="businessStatus" label="状态" width="110" /></el-table></div>
</div> </div>
@@ -4,7 +4,7 @@
<div class="overview-heading"> <div class="overview-heading">
<div> <div>
<h2>多联总单调度 <span>|</span> {{ master.masterNo }}</h2> <h2>多联总单调度 <span>|</span> {{ master.masterNo }}</h2>
<el-tag :type="statusType(master.businessStatus)">{{ statusName(master.businessStatus) }}</el-tag> <el-tag :type="statusType(master.businessStatus)" class="status-text">{{ statusName(master.businessStatus) }}</el-tag>
</div> </div>
</div> </div>
<div class="overview-content"> <div class="overview-content">
@@ -78,6 +78,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="请选择" placeholder="请选择"
style="width: 200px"
/></el-form-item> /></el-form-item>
</div> </div>
</template> </template>
@@ -116,6 +117,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="请选择" placeholder="请选择"
style="width: 200px"
/></el-form-item> /></el-form-item>
</div> </div>
</template> </template>
@@ -428,7 +430,27 @@
<div class="address-pagination"><el-pagination v-model:current-page="commonCargoPage.current" v-model:page-size="commonCargoPage.size" :page-sizes="[10, 20, 50]" layout="total, prev, pager, next, sizes" :total="commonCargoPage.total" @size-change="loadCommonCargoList" @current-change="loadCommonCargoList" /></div> <div class="address-pagination"><el-pagination v-model:current-page="commonCargoPage.current" v-model:page-size="commonCargoPage.size" :page-sizes="[10, 20, 50]" layout="total, prev, pager, next, sizes" :total="commonCargoPage.total" @size-change="loadCommonCargoList" @current-change="loadCommonCargoList" /></div>
<template #footer><el-button @click="commonCargoVisible = false">关闭</el-button><el-button type="primary" :disabled="!commonCargoSelected.length" @click="confirmCommonCargoSelection">确定</el-button></template> <template #footer><el-button @click="commonCargoVisible = false">关闭</el-button><el-button type="primary" :disabled="!commonCargoSelected.length" @click="confirmCommonCargoSelection">确定</el-button></template>
</el-dialog> </el-dialog>
<el-dialog v-model="cargoImportVisible" title="导入货物" append-to-body width="560px"><div class="cargo-import"><el-upload action="#" accept=".xls,.xlsx" :auto-upload="false" :show-file-list="false" :disabled="cargoImportLoading" :on-change="handleCargoImport"><el-button type="primary" :loading="cargoImportLoading">上传</el-button><template #tip><div class="el-upload__tip">支持 .xlsx、.xls 文件,单个文件不超过 50M</div></template></el-upload><el-button type="primary" plain @click="downloadCargoTemplate">点击下载模板</el-button></div><template #footer><el-button @click="cargoImportVisible = false">关闭</el-button></template></el-dialog> <el-dialog v-model="cargoImportVisible" title="导入货物" append-to-body width="560px">
<section-card>
<div class="cargo-import">
<el-upload
action="#"
accept=".xls,.xlsx"
:auto-upload="false"
:show-file-list="false"
:disabled="cargoImportLoading"
:on-change="handleCargoImport"
>
<el-button type="primary" :loading="cargoImportLoading">上传</el-button>
<template #tip>
<div class="el-upload__tip">支持 .xlsx、.xls 文件,单个文件不超过 50M</div>
</template>
</el-upload>
<el-button type="primary" plain @click="downloadCargoTemplate">点击下载模板</el-button>
</div>
</section-card>
<template #footer><el-button @click="cargoImportVisible = false">关闭</el-button></template>
</el-dialog>
<el-dialog v-model="routeDialogVisible" title="选择线路" width="1280px" @opened="loadRouteList"> <el-dialog v-model="routeDialogVisible" title="选择线路" width="1280px" @opened="loadRouteList">
<div class="route-dialog__search"> <div class="route-dialog__search">
<el-form :model="routeQuery" label-position="right" label-width="86px"> <el-form :model="routeQuery" label-position="right" label-width="86px">
@@ -1966,6 +1988,15 @@ export default {
margin-top: 8px; margin-top: 8px;
color: #606266; color: #606266;
} }
.cargo-import {
display: flex;
flex-direction: column;
gap: 16px;
.el-upload__tip {
margin-top: 8px;
line-height: 1.5;
}
}
@media screen and (max-width: 1440px) { @media screen and (max-width: 1440px) {
.route-node-form { .route-node-form {
grid-template-columns: repeat(2, minmax(320px, 1fr)); grid-template-columns: repeat(2, minmax(320px, 1fr));
+2 -1
View File
@@ -395,7 +395,7 @@
<div class="loading-detail__summary"> <div class="loading-detail__summary">
<div class="loading-detail__heading">配载单详情</div> <div class="loading-detail__heading">配载单详情</div>
<div>{{ dialogForm.loadingNo || '-' }}</div> <div>{{ dialogForm.loadingNo || '-' }}</div>
<div><el-tag :type="detailStatusType">{{ statusText(dialogForm) }}</el-tag></div> <div><el-tag :type="detailStatusType" class="status-text">{{ statusText(dialogForm) }}</el-tag></div>
<div><el-tag type="warning">{{ transportTypeLabel(dialogForm.transportType) }}</el-tag></div> <div><el-tag type="warning">{{ transportTypeLabel(dialogForm.transportType) }}</el-tag></div>
</div> </div>
<div class="loading-detail__task-row"> <div class="loading-detail__task-row">
@@ -2357,6 +2357,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.loading-manage-page { .loading-manage-page {
margin-bottom: 60px;
.loading-manage-page__search { .loading-manage-page__search {
padding: 12px 12px 4px; padding: 12px 12px 4px;
margin-bottom: 20px; margin-bottom: 20px;
+1 -1
View File
@@ -62,7 +62,7 @@
<section class="card-info"> <section class="card-info">
<div class="card-title-row"> <div class="card-title-row">
<el-link type="primary" @click="goDetail(row.id)">{{ row.masterNo }}</el-link <el-link type="primary" @click="goDetail(row.id)">{{ row.masterNo }}</el-link
><el-tag :type="statusType(row.businessStatus)" class="status-tag">{{ ><el-tag :type="statusType(row.businessStatus)" class="status-tag status-text">{{
statusName(row.businessStatus) statusName(row.businessStatus)
}}</el-tag> }}</el-tag>
</div> </div>
+4 -2
View File
@@ -44,7 +44,7 @@
</template> </template>
<template #status="{ row }"> <template #status="{ row }">
<el-tag :type="statusTagType(row.status)"> <el-tag :type="statusTagType(row.status)" class="status-text">
{{ row.statusName || displayStatus(row.status) }} {{ row.statusName || displayStatus(row.status) }}
</el-tag> </el-tag>
</template> </template>
@@ -1178,7 +1178,9 @@ export default {
&__timeline-line { &__timeline-line {
position: absolute; position: absolute;
top: 22px; // 圆点中心位置 = padding-top(12) + dot 半径(7) = 19px
// 线 height 3px,因此 top 需为 19 - 1.5 = 17.5px,使线视觉中心与圆点中心对齐
top: 17.5px;
right: 58px; right: 58px;
left: 58px; left: 58px;
height: 3px; height: 3px;
+13 -1
View File
@@ -146,7 +146,7 @@
<template #header> <template #header>
<div class="voucher-manage-page__dialog-title">凭证详情</div> <div class="voucher-manage-page__dialog-title">凭证详情</div>
</template> </template>
<el-descriptions v-loading="detailLoading" :column="2" border> <el-descriptions v-loading="detailLoading" :column="2" border class="voucher-manage-page__detail-desc">
<el-descriptions-item label="项目名称"> <el-descriptions-item label="项目名称">
{{ detailValue(detailRow.projectName) }} {{ detailValue(detailRow.projectName) }}
</el-descriptions-item> </el-descriptions-item>
@@ -1076,5 +1076,17 @@ load();
:deep(.el-table__body tr:nth-child(even) > td) { :deep(.el-table__body tr:nth-child(even) > td) {
background: #fafafa; background: #fafafa;
} }
&__detail-desc {
:deep(.el-descriptions__table) {
table-layout: fixed;
th, td {
width: 50%;
}
.el-descriptions__label,
.el-descriptions__content {
width: 50%;
}
}
}
} }
</style> </style>
@@ -64,7 +64,7 @@
<el-link v-if="column.link && row[column.prop]" type="primary" @click="emitAction('view', row)">{{ <el-link v-if="column.link && row[column.prop]" type="primary" @click="emitAction('view', row)">{{
row[column.prop] row[column.prop]
}}</el-link> }}</el-link>
<el-tag v-else-if="column.status" :type="statusType(row.approvalStatus)">{{ <el-tag v-else-if="column.status" :type="statusType(row.approvalStatus)" class="status-text">{{
displayValue(row[column.prop]) displayValue(row[column.prop])
}}</el-tag> }}</el-tag>
<span v-else-if="column.money">{{ formatMoney(row[column.prop], row.currency) }}</span> <span v-else-if="column.money">{{ formatMoney(row[column.prop], row.currency) }}</span>
@@ -411,26 +411,27 @@
destroy-on-close destroy-on-close
class="pre-settlement-candidate-dialog" class="pre-settlement-candidate-dialog"
> >
<div class="dialog-section-title">选择结算明细</div> <section-card title="选择结算明细">
<el-form :model="candidateQuery" inline label-position="right" label-width="auto"> <el-form :model="candidateQuery" inline label-position="right" label-width="auto">
<el-form-item label="批次号"> <el-form-item label="批次号">
<el-input v-model="candidateQuery.batchNo" clearable placeholder="请输入" /> <el-input v-model="candidateQuery.batchNo" clearable placeholder="请输入" />
</el-form-item> </el-form-item>
<el-form-item label="费用日期"> <el-form-item label="费用日期">
<el-date-picker <el-date-picker
v-model="candidateQuery.feeDateRange" v-model="candidateQuery.feeDateRange"
type="daterange" type="daterange"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
format="YYYY-MM-DD" format="YYYY-MM-DD"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="loadCandidates">查询</el-button> <el-button type="primary" @click="loadCandidates">查询</el-button>
<el-button @click="resetCandidateQuery">重置</el-button> <el-button @click="resetCandidateQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</section-card>
<el-table <el-table
ref="candidateTableRef" ref="candidateTableRef"
v-loading="candidateDialog.loading" v-loading="candidateDialog.loading"
+1 -1
View File
@@ -118,7 +118,7 @@
> >
{{ row[column.prop] }} {{ row[column.prop] }}
</el-link> </el-link>
<el-tag v-else-if="column.status" :type="statusTagType(row.approvalStatus)"> <el-tag v-else-if="column.status" :type="statusTagType(row.approvalStatus)" class="status-text">
{{ row[column.prop] || '-' }} {{ row[column.prop] || '-' }}
</el-tag> </el-tag>
<span v-else-if="column.money"> <span v-else-if="column.money">
@@ -71,7 +71,7 @@
type="primary" type="primary"
@click="openView(row)" @click="openView(row)"
>{{ row[column.prop] }}</el-link >{{ row[column.prop] }}</el-link
><el-tag v-else-if="column.status" :type="statusType(row.approvalStatus)">{{ ><el-tag v-else-if="column.status" :type="statusType(row.approvalStatus)" class="status-text">{{
row[column.prop] || '-' row[column.prop] || '-'
}}</el-tag }}</el-tag
><span v-else-if="column.money">{{ formatMoney(row[column.prop]) }}</span ><span v-else-if="column.money">{{ formatMoney(row[column.prop]) }}</span
@@ -39,7 +39,7 @@
</el-button> </el-button>
</template> </template>
<template #status="{ row }"> <template #status="{ row }">
<el-tag :type="statusMap[row.status].type"> <el-tag :type="statusMap[row.status].type" class="status-text">
{{ statusMap[row.status].label }} {{ statusMap[row.status].label }}
</el-tag> </el-tag>
</template> </template>
@@ -119,7 +119,7 @@
<el-table-column label="评分项目数" width="140" align="center"> <el-table-column label="评分项目数" width="140" align="center">
<template #default="{ row }">{{ row.items.length }}</template> <template #default="{ row }">{{ row.items.length }}</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="180" align="center"> <el-table-column label="操作" width="160" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-link type="primary" @click="openCategory(row)">编辑</el-link> <el-link type="primary" @click="openCategory(row)">编辑</el-link>
</template> </template>
+19 -32
View File
@@ -43,7 +43,7 @@
</el-button> </el-button>
</template> </template>
<template #customerCode="{ row }"> <template #customerCode="{ row }">
<el-button type="primary" link @click="openArchive(row, true)"> <el-button type="primary" link @click="viewArchive(row)">
{{ row.customerCode }} {{ row.customerCode }}
</el-button> </el-button>
</template> </template>
@@ -80,7 +80,7 @@
<el-link <el-link
type="primary" type="primary"
v-if="hasPermission('customer_archive_view')" v-if="hasPermission('customer_archive_view')"
@click="openArchive(row, true)" @click="viewArchive(row)"
> >
查看 查看
</el-link> </el-link>
@@ -794,12 +794,12 @@
</el-dialog> </el-dialog>
<div class="archive-form__footer"> <div class="archive-form__footer">
<el-button v-if="!isArchivePage" @click="closeArchive"> <el-button v-if="!isArchivePage || readonly" @click="closeArchive">
{{ readonly ? '关闭' : '取消' }} {{ isArchivePage ? '返回' : readonly ? '关闭' : '取消' }}
</el-button> </el-button>
<el-button type="primary" v-if="!readonly" @click="saveArchive">保存</el-button> <el-button type="primary" v-if="!readonly" @click="saveArchive">保存</el-button>
<el-button type="success" v-if="!readonly" @click="saveAndSubmitArchive">提交</el-button> <el-button type="success" v-if="!readonly" @click="saveAndSubmitArchive">提交</el-button>
<el-button v-if="!readonly" @click="closeArchive">返回</el-button> <el-button v-if="!readonly && !isArchivePage" @click="closeArchive">返回</el-button>
</div> </div>
</component> </component>
@@ -1809,7 +1809,11 @@ export default {
this.initBusinessDictionaries(); this.initBusinessDictionaries();
this.initScoreQuantificationOptions(); this.initScoreQuantificationOptions();
if (this.isArchivePage) { if (this.isArchivePage) {
this.openArchive(this.$route.query.id ? { id: this.$route.query.id } : null); const readonly = this.$route.query.view === '1' || this.$route.query.view === 'true';
this.openArchive(
this.$route.query.id ? { id: this.$route.query.id } : null,
readonly
);
} }
}, },
computed: { computed: {
@@ -1827,24 +1831,10 @@ export default {
return this.$route.path === '/vehicle/customer-archive/form'; return this.$route.path === '/vehicle/customer-archive/form';
}, },
archiveContainer() { archiveContainer() {
return this.isArchivePage ? 'div' : 'el-dialog'; return 'div';
}, },
archiveContainerProps() { archiveContainerProps() {
if (this.isArchivePage) { return { class: 'archive-page-form' };
return { class: 'archive-page-form' };
}
return {
title: this.dialogTitle,
appendToBody: true,
modelValue: this.archiveBox,
width: '92%',
top: '4vh',
modal: true,
showClose: true,
closeOnClickModal: true,
closeOnPressEscape: true,
class: 'archive-dialog',
};
}, },
regionCascaderProps() { regionCascaderProps() {
return { return {
@@ -3588,12 +3578,14 @@ export default {
query: isEdit ? { id: row.id, name: '编辑客商档案' } : { name: '新增客商档案' }, query: isEdit ? { id: row.id, name: '编辑客商档案' } : { name: '新增客商档案' },
}); });
}, },
viewArchive(row) {
this.$router.push({
path: '/vehicle/customer-archive/form',
query: { id: row.id, name: '查看客商档案', view: '1' },
});
},
closeArchive() { closeArchive() {
if (this.isArchivePage) { this.$router.push('/vehicle/customer-archive');
this.$router.push('/vehicle/customer-archive');
return;
}
this.archiveBox = false;
}, },
openArchive(row, readonly = false) { openArchive(row, readonly = false) {
this.readonly = readonly; this.readonly = readonly;
@@ -4858,11 +4850,6 @@ export default {
font-size: 14px; font-size: 14px;
} }
:deep(.archive-dialog .el-dialog__body) {
max-height: 72vh;
overflow: auto;
}
.archive-page-form { .archive-page-form {
min-height: 100%; min-height: 100%;
margin-bottom: 60px; margin-bottom: 60px;