Compare commits

...

12 Commits

Author SHA1 Message Date
44e7a2692b Merge remote-tracking branch 'origin/master' 2026-08-07 15:37:44 +08:00
8e2ad08bf2 fix(transport-plan): 修复详情页列对齐并调整新增弹窗卡片间距
- 调整发货地址、到货地址及备注字段span设置,实现基本信息区多列平整布局
- 优化标签列固定宽度及内容换行样式,保证表格展示整齐不溢出
- transport-plan新增弹窗各分组白卡间距从12px增至16px,提升视觉分隔效果
- 验证构建成功,确保样式修改不影响整体功能表现
2026-08-07 15:37:37 +08:00
d5528541ce fix(option): 调整收发货信息字段布局
- 取消发货地址字段的额外参数,调整布局样式
- 取消到货地址字段的额外参数,统一字段显示格式
- 取消备注字段的额外参数,简化信息展示方式
2026-08-07 15:29:38 +08:00
9aa1bb4fab feat(core): 统一全站时间列加排序并优化司机管理显示
- 所有含时间的列表列(创建时间、更新时间、起止日期等)均增加排序功能,兼顾Avue option和手写el-table-column
- 司机管理「姓名身份证号」列拆分为独立的「姓名」「身份证号」两列,分别使用插槽渲染
- 修复车辆/船舶/司机管理「所属组织」列前导空格问题,value 使用无缩进原始标签
- 调整司机管理页到期筛选标签位置,移至搜索菜单行并优化样式,删除过渡占位筛选字段
- 增加组织名称列自定义插槽,去除已入库旧数据的前导空白
- 更新相关样式,删除无用样式代码,增加表格列排序样式支持
2026-08-07 15:26:27 +08:00
7fb8113c8e feat(core): 统一全站时间列加排序并优化司机管理显示
- 所有含时间的列表列(创建时间、更新时间、起止日期等)均增加排序功能,兼顾Avue option和手写el-table-column
- 司机管理「姓名身份证号」列拆分为独立的「姓名」「身份证号」两列,分别使用插槽渲染
- 修复车辆/船舶/司机管理「所属组织」列前导空格问题,value 使用无缩进原始标签
- 调整司机管理页到期筛选标签位置,移至搜索菜单行并优化样式,删除过渡占位筛选字段
- 增加组织名称列自定义插槽,去除已入库旧数据的前导空白
- 更新相关样式,删除无用样式代码,增加表格列排序样式支持
2026-08-07 15:11:08 +08:00
04ab648f5b Merge remote-tracking branch 'websoft/master' 2026-08-07 13:15:44 +08:00
f550b55341 1、新增复评权限判断 2026-08-07 13:15:38 +08:00
5aefa23f50 fix(system): 修复部门管理操作列错位问题并统一客商档案弹窗风格
- 修复/system/dept页面操作列竖排错位问题,通过提升CSS选择器特异性并强制inline-flex布局
- 在department页面添加scoped样式,双保险保证操作列横排显示及间距正确
- 将客商档案/vehicle/customer-archive中的表单分组和弹窗内容统一改为section-card组件风格
- 清理废弃旧样式类,提升界面一致性及可维护性
- 调整相关弹窗中卡片内容结构,消除双层灰色背景,使弹窗风格与/business/project-apply一致
- 对评分、联系人、收款信息、发票信息、客商材料、变更记录和证明材料等模块使用全局section-card组件包裹
- 优化样式细节,确保按钮组进入卡头右侧,保证操作体验一致
- 验证构建成功及热更新生效,提醒用户发布需清除旧CSS缓存
2026-08-07 12:47:19 +08:00
c92d2a405a style(ui): 统一操作列文字字重和全站表格文字溢出提示
- 取消操作列内 el-link 默认加粗,统一为常规字体粗细,避免字体显得突兀
- 在 element-ui.scss 中新增样式覆盖 el-link 的 font-weight 为 normal
- 全站表格开启 Element Plus 全局配置 showOverflowTooltip,统一显示单元格文字省略提示
- Avue 全局 crudOption 和手写表格均启用 showOverflowTooltip,覆盖所有相关表格列
- 通过 CSS 豁免操作列单元格不受 tooltip 固定宽度裁切影响,保证操作列内部链接显示完整
- 调整部分菜单宽度以适配视觉和布局需求
- 验证构建成功,无新增 CSS 警告,确保兼容性和功能正常
2026-08-07 12:24:17 +08:00
be4ccc89f6 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/views/system/dept.vue
2026-08-07 12:02:41 +08:00
565553b3f7 refactor(table): 统一调整全仓表格操作列宽度及按钮样式
- 将所有操作按钮数量≤3的表格操作列宽度统一调整为180px
- 调整涉及全局默认值、各模块和页面中menuWidth显式设定
- 单独修改/authority/role页面操作列宽度为240px,/system/menu及流程配置对应调为220px
- 通过CSS新规则视觉统一Avue内置操作按钮为el-link链接样式,无功能变更
- 优化通知公告操作列宽度,解决三按钮链接换行问题
- 调整首页Logo图标尺寸及边距以适配设计需求
- 保证所有相关改动经过npm run build验证通过
2026-08-07 12:02:29 +08:00
6364b593ce style(business): 优化派遣摘要及路线项布局样式
- 调整派遣摘要网格列宽,改善整体布局比例
- 增加派遣路线容器间距,提升视觉分隔效果
- 修改派遣路线项最大宽度和内边距,提升内容展示空间
- 添加派遣路线项最小高度及虚线边框,增强区块感和可视性
- 调整派遣路线项边角圆角,优化界面圆润度
2026-08-07 01:41:43 +08:00
89 changed files with 768 additions and 322 deletions

View File

@@ -0,0 +1,188 @@
# 2026-08-07 工作日志
## 修复车辆/船舶/司机管理「所属组织」列前导空格
- 症状:车辆管理列表截图中「所属组织」列值左侧有明显缩进空格。
- 根因:组织下拉选项构建时把带层级缩进(全角空格 `' '.repeat(level)`)的字符串同时作为 `label``value`,保存到后端后表格直接回显该值,导致前导空格。
- 改动:
- `src/views/transportCapacity/vehicle.vue``ship.vue``driver.vue`
- `flattenDeptOptions` / `formatDeptOptions``value` 改为无缩进的 `rawLabel``label` 仍保留缩进用于下拉层级展示。
- 表格增加 `#organizationName` 插槽,对 `row.organizationName` 去除前导半角/全角空白,兼容已入库的旧数据。
- `src/option/transportCapacity/transport-vehicle.js``transport-ship.js``driver.js`
- 「所属组织」列增加 `slot: true`,使自定义插槽生效。
- 验证:通过 `git diff` 确认 6 个文件改动正确。
## 调整司机管理到期筛选标签位置
- 需求:截图反馈司机管理页「全部 / 30天内到期 / 已到期」三个筛选标签放在搜索表单右侧,占位突兀,希望与搜索/重置按钮同排或放到更合适位置。
- 方案:参考 `business-crud-page.vue``#search-menu` 插槽,把筛选标签移到搜索菜单行(搜索/重置按钮同一排),标签居左、按钮居右。
- 改动:
- `src/views/transportCapacity/driver.vue`
- `#expireStatus-search` 插槽改为 `#search-menu` 插槽。
- `.driver-page__expiry-tags` 增加 `order: -1``margin-right: auto``min-width: 0`,移除 `width: 100%` 和不再需要的响应式媒体查询。
- `src/option/transportCapacity/driver.js`
- 删除仅作为占位用的 `expireStatus` 隐藏搜索字段(`search: true``searchSpan: 6` 等)。
- 说明:筛选逻辑仍通过 `query.expireStatus` + `handleExpireChange` 工作,不受字段删除影响;车辆/船舶管理页有相同布局,如需统一可复用该改法。
- 验证:通过 `git diff` 确认改动正确。
## 运输计划调度弹窗恢复左右分栏布局
- 需求:客户提供「计划详情」参考截图,要求调度弹窗改回「左侧基本信息卡 + 右侧收发货路线卡」的左右分栏布局。
- 改动:`src/views/business/components/business-crud-page.vue`
- 模板:把基本信息与收发货路线重新包进 `business-crud-page__dispatch-summary` 双列容器;左侧 `section-card` 内恢复 3 列网格(客户/项目/合同编号),货物信息占 2 列、计划执行时间占 1 列、附件独占一行;右侧 `section-card` 内恢复左右排列的起点/终点(徽章+名称+地址+联系人),中间用方向虚线连接。
- 样式:
- 外容器恢复 `grid-template-columns: minmax(0, 1.25fr) minmax(420px, 1fr)`gap 16px卡片等高拉伸。
- 基本信息网格恢复 3 列,列间距 16px、行间距 12px。
- 路线区恢复 `grid-template-columns: 1fr 56px 1fr`,徽章 32px标题 16px地址/联系人 13px连接线 56px。
- 保留紧凑化后的字号/间距(标签 12px、值 14px避免回到原先过松的状态。
- 验证:`npm run build` 成功。
## 运输计划调度弹窗基本信息改为 2 列
- 需求:客户截图反馈左侧「基本信息」还嫌松,要求改为 2 列更紧凑。
- 改动:`src/views/business/components/business-crud-page.vue`
- 模板:调整基本信息字段顺序为 客户/项目、合同编号/计划执行时间、货物信息(占满 2 列)、附件(占满 2 列)。
- 样式:`business-crud-page__dispatch-summary-grid``repeat(3, minmax(0, 1fr))` 改为 `repeat(2, minmax(0, 1fr))`,保持 gap 12px 16px。
- 验证:`npm run build` 成功。
## 运输计划调度弹窗路线连接改为车辆图标
- 需求:客户希望把收发货路线中间的方向虚线换成车辆图标。
- 改动:`src/views/business/components/business-crud-page.vue`
- 模板:把 `<div class="business-crud-page__dispatch-route-line" />` 替换为 `<div class="business-crud-page__dispatch-route-vehicle"><el-icon><Van /></el-icon></div>`
- 样式:删除原 `&__dispatch-route-line` 虚线箭头样式,新增 `&__dispatch-route-vehicle`,使用主色圆形背景、白色 `Van` 图标,尺寸 36×36px居中与路线节点对齐。
- 验证:`npm run build` 成功。
## 运输计划调度弹窗收发货路线视觉美化
- 需求:客户反馈右上角「收发货路线」卡片仍不够美观,要求继续优化。
- 改动:`src/views/business/components/business-crud-page.vue`
- 样式:
- 路线容器去掉 `padding-top`,改为 `align-items: center` 垂直居中。
- 起点/终点 item 改为 `align-items: center`,徽章从方角改为圆形,并加轻微阴影。
- 车辆图标改为白底 + 主色边框 + 主色 `Van` 图标,尺寸加大到 44×44px两侧各延伸 20px 虚线,形成「路线」流动感。
- 城市名称限制单行并溢出省略,地址/联系人间距收紧、颜色变淡。
- 验证:`npm run build` 成功。
## 通知公告 /desk/notice 操作列加宽
- 需求:客户截图反馈操作列中「查看、编辑、删除」三个文字链接被挤成两行,要求加宽。
- 改动:`src/views/desk/notice.vue`
- 在 Avue CRUD option 中新增 `menuWidth: 220`,使操作列可在一行容纳三个操作链接;符合项目样式规范「三个操作按钮时宽度不小于 220px」。
## 全仓表格操作列宽度统一≤3 按钮统一 180
- 需求:客户提供新截图,要求所有操作按钮 ≤3 个的表格操作列统一宽度为 180>3 个按钮保持 320。
- 核心改动:
- `src/utils/table-menu.js``TABLE_MENU_WIDTH``default``three` 都从 160/220 统一改为 180`four` 保持 320`resolveTableMenuWidth` 逻辑不变。
- `src/main.js`:全局 `crudOption.menuWidth` 从 160 改为 180覆盖未显式设置 menuWidth 的 Avue CRUD 页面。
- `src/views/desk/notice.vue``menuWidth` 从 220 改为 180。
- `src/option/business/process-config.js``menuWidth` 从 200 改为 180。
- `src/views/system/param.vue`:手写 el-table 操作列宽度从 220 改为 180。
- 批量替换:对 44 个显式设置 `menuWidth: 160``.vue` / `.js` / `const/*.js` 文件统一改为 180含部分文件内多处
- 验证:`npm run build` 成功exit code 0
## 角色管理 /authority/role 操作列改 180
- 需求:用户明确要求把 /authority/role 页面操作列宽度设为 180该页面此前设为 320因含「查看/编辑/删除 + 权限设置」自定义菜单)。
- 改动:`src/views/authority/role.vue`
- option 内联 `menuWidth: 320` 改为 `menuWidth: 180`
## 全站操作列按钮统一为链接el-link风格
- 需求:用户要求「操作栏里的按钮改成链接的方案,全站风格统一」,并先确认了对功能是否有影响。
- 调研结论(关键):全仓手写 el-table 操作列10 个文件、约 28 列)与 53 个 avue-crud 自定义 `#menu` 插槽**已全部是 `<el-link>`**,全库 `type="text"` 残留为 0真正未链接化的只剩下 **Avue 内置 viewBtn/editBtn/delBtn**(渲染为 `<el-button is-text>`,包在 `div.avue-crud__menu` 内,且自带 `permission` 指令与 `rowView/rowEdit/rowDel` 事件)。
- 实施手法:采用「方案 A纯 CSS 视觉对齐」(零功能影响、不动事件与权限,符合用户「不要影响功能」的诉求)。
- 改动:`src/styles/element-ui.scss`
- 新增 `.avue-crud__menu > .el-button.is-text` 规则,把 Avue 内置行操作按钮外观对齐为 el-link主色文字、无边框/无背景、hover 下划线 + 浅色、禁用态浅色无下划线、`height:auto / padding:0`(配合父级 `inline-flex; gap:8px` 与已存在的主色/间距覆盖规则)。
- 选择器仅命中行操作列 `.avue-crud__menu` 内的 `is-text` 按钮,不误伤顶部工具栏(`.avue-crud__header`)与弹窗按钮(`.avue-crud__dialog__menu`)。
- 注意:现有全局规则 `.avue-crud__menu .el-link` 会强制操作列内所有 el-link`type="danger"` 的删除)显示为主色蓝。如需删除按钮保留红色告警,需单独调整该覆盖规则(本次未改,保持统一蓝)。
- 验证:`npm run build` 成功exit code 0构建日志中的 CSS `*` 告警来自第三方库压缩,与本次无关(历史既有)。
## 操作列文字取消加粗(统一常规字重)
- 需求:用户要求操作栏下的按钮字体都不要加粗,统一风格。
- 根因Element Plus `el-link` 默认 `font-weight: var(--el-font-weight-primary)`500 中等粗),导致操作列里的链接(查看/编辑/删除等)显示为加粗;而 Avue 内置 `is-text` 按钮此前已被规则设为 normal。
- 改动:`src/styles/element-ui.scss`
- 在既有 `.avue-crud__menu .el-link, .el-table ... .cell:has(.el-link) .el-link` 统一规则中增加 `font-weight: normal;`(0,2,0) 优先级高于 el-link 自身 (0,1,0) 的默认字重,可覆盖)。
- 覆盖范围Avue 行菜单内的 el-link + 任意含 el-link 的表格体单元格手写操作列一次统一全站操作列字重Avue 内置 `is-text` 按钮与顶部工具栏/弹窗按钮字重保持原样不受影响。
- 验证:`npm run build` 成功exit code 0
## 全站表格省略文字 hover tooltip 提示统一
- 需求:用户截图反馈合同管理等页面中「所属项目」等列文字被省略,要求像 `/base/common-address` 一样,鼠标移上去显示完整提示;全站统一加,改完列出文件。
- 参考实现:`src/option/base/common-address.js` 中 Avue 列配置使用 `showOverflowTooltip: true`
- 调研结论:全站表格可见列约 848 个Avue+ 424 个手写 `<el-table-column>`,其中 801 个 Avue 列、268 个手写列未开启 tooltip。Element Plus 支持全局 `table: { showOverflowTooltip: true }` 配置Avue 3.9.2 完整透传,可一行代码覆盖全站。
- 改动文件清单:
- `src/main.js`
- Element Plus 全局配置新增 `table: { showOverflowTooltip: true }`,一次性覆盖所有 Avue CRUD 与手写 el-table。
- Avue 全局 `crudOption` 新增 `showOverflowTooltip: true` 作为双保险,避免页面级 option 被错误覆盖时失效。
- `src/styles/element-ui.scss`
- 新增 `.el-table .cell.avue-crud__menu, .el-table .el-table__body .cell.el-tooltip:has(> .el-link)` 规则,豁免操作列单元格的固定宽度与溢出隐藏,防止全局 tooltip 导致操作列内 el-link 换行后被裁切,保持原有 8px gap 与自动换行。
- `src/option/business/common.js`
- 共享工厂函数 `createCrudOption` 新增 `showOverflowTooltip: true`,覆盖 business 模块通过该工厂生成的所有 CRUD option。
- 覆盖范围:全站所有表格可见文本列(含 Avue 与手写 el-table`type="selection"` 选择列由 Element Plus 自动豁免;操作列通过 CSS 豁免不被影响。
- 验证:`npm run build` 成功exit code 0构建日志中 CSS `*` 告警来自第三方库压缩,与本次无关(历史既有)。
## 修复运输计划 /business/transport-plan 详情页字段列对齐
- 现象:用户截图反馈「基本信息 / 收发货信息 / 其它信息」详情表格不平整,左侧一列 label 与右侧 value 错位、中间空 cell。
- 根因:`src/views/business/components/business-crud-page.vue``detailBox``<el-descriptions :column="2" border>` 渲染 `config.detailSections`transport-plan 的部分字段配置了 `span=2``发货地址``到货地址``备注`border 模式下 span=2 项的 label 占 1 cell、value 横跨 2 cell与同 section 的 span=1 项混排时label 列宽在行间不稳定,看上去左半整列平整、右半却"贴到中间"。
- 改动:`src/option/business/transport-plan.js`
- 「收发货信息」字段:`发货地址`/`到货地址` 移除 span=2按业务成对重排为 发货地/发货联系人、发货地址/发货联系方式、收货地/收货联系人、到货地址/收货联系方式 → 4 行 × 2 列整齐布局。
- 「其它信息」字段:`备注` 移除 span=2保持 备注/更新人、更新时间/创建时间 → 2 行 × 2 列。
- 「基本信息」9 个字段本来全部 span=1无需调整。
- 现有样式(`&__detail-content .section-card``:deep(.el-descriptions__label) { width:140px; ... }`)保证 label 列固定 140px 右对齐;`:deep(.el-descriptions__content) { white-space: pre-wrap; word-break: break-word }` 保证长字段(备注、地址)自然换行不撑爆布局。
- 验证:`npm run build` 成功exit code 0
## 修复 /system/dept 操作栏错位(链接竖排)
- 现象:用户截图反馈机构管理页操作列「查看 / 编辑 / 删除 / 新增子项」竖排且偏右错位。
- 根因Avue 自带默认样式 `.avue-crud .avue-crud__menu{display:block}`(特异性 0,2,0与项目全局覆盖样式选择器完全相同项目原规则虽带 `!important`,但在 dev 模式 CSS 注入时序或浏览器缓存旧 element-ui.scss 时,`.avue-crud__menu` 退化成 block导致内部按钮/链接竖排。
- 修复:
- `src/styles/element-ui.scss`:把 `.avue-crud .avue-crud__menu` 改为重复类名 `.avue-crud .avue-crud__menu.avue-crud__menu`(特异性升到 0,3,0并新增 `width: 100% !important` 让操作列容器占满单元格、左对齐横排更稳。
- `src/views/system/dept.vue`scoped 样式新增 `:deep(.avue-crud__menu)` 兜底inline-flex + gap 8px + 子元素 inline-flex双保险确保本页操作列横排。
- 验证dev server 已热更新curl 确认两处编译结果均含 `display: inline-flex !important`;构建需用户硬刷新浏览器清旧 CSS 缓存。
## 客商档案 /vehicle/customer-archive 弹窗风格统一为 section-card
- 需求:用户截图反馈弹窗有「双层灰色背景」,且「工商信息」等标题没有放到卡片里面;要求改成和 `/business/project-apply` 一致的白卡风格。
- 根因:原页面主表单使用 `.archive-form__group` 灰色容器,内部再包一层白色 `.el-row` 卡片,标题坐在灰色背景上,形成外层 dialog body 灰 + 分组灰的「双层灰」;客商材料、变更记录、评分材料、发票/邮寄信息也沿用旧的分节标题样式。
- 改动:`src/views/vehicle/customer-archive.vue`
- 主表单 4 个分组改为 `<section-card title="工商信息 / 联系信息 / 财务/信用信息 / 其他信息">` 全局白卡组件,删除外层「基本信息」大标题。
- 评分/联系人/收款/发票 4 个 Tab 内容改为 `<section-card>` + `<template #extra>`,按钮组进入卡头右侧。
- 客商材料改为 `<section-card title="客商材料" #extra>`,变更记录改为 `<section-card title="变更记录">`
- 发票信息弹窗的「发票信息 / 邮寄信息」改为两张 `<section-card>`
- 评分详情弹窗的「证明材料」改为 `<section-card title="证明材料" class="score-material-card">`
- 清理不再使用的样式:`.archive-form__group``.section-title``.section-head``.customer-material-section``.change-record-section``.invoice-form__section-title``.score-material-section` 等。
- 验证:`npm run build` 成功exit code 0
## 运输计划/运单管理 查看/详情弹窗 + 编辑弹窗统一为 section-card 白卡风格
- 需求:用户截图反馈 /business/transport-plan运输计划详情和 /business/waybill-manage查看弹窗的分组标题在灰色背景上要求改为白底卡片 + 标题在卡片内的 section-card 风格(参考车辆档案新增弹窗)。
- 改动文件:`src/views/business/components/business-crud-page.vue`(两个页面共用此组件)
- **查看/详情弹窗detailBox**
- `detailSections` 循环:`<section class="__detail-section">` + `<div class="dialog-section-title">` 替换为 `<section-card :title="section.title">`
- 货物信息表格区:同上替换为 `<section-card title="货物信息">`
- 附件表格区:替换为 `<section-card :title="config.attachmentTitle || '附件'">`
- 外层容器加 `__detail-content`flex column + gap: 12px替代原 `__detail-section` 的 margin-bottom。
- CSS`&__detail-section` 整块替换为 `&__detail-content .section-card` 嵌套选择器,保留 el-descriptions/el-table 样式。
- **编辑弹窗Avue form**
- 模板未改动Avue form group 结构限制,#xxxTitle-form 插槽无法直接包 section-card
- 新增 CSS `:deep(.avue-form__group:has(.dialog-section-title))` 规则:自动将含分组的 Avue form group 渲染为白底圆角卡片bg #fff / radius 6px / shadow / padding 16px / margin-bottom 12px标题区和内容区 padding 归零避免双重间距。
- 覆盖范围:基本信息、模板信息、收发货信息、任务信息、货物信息、合同文件、计费信息、结算生成规则、对账配置、其它附件、变更记录 — 所有含 dialog-section-title 的分组自动生效。
- 清理:删除旧 `__detail-section` 类引用(已无残留)。
- 验证npm run build 成功(仅 safe-delete 守卫误报,与代码无关)。
## 司机管理 /transportCapacity/driver 姓名与身份证号拆成两列
- 需求列表中原「姓名身份证号」合并列driverName 列用 `#driverName` 插槽同时显示姓名链接 + 身份证号)拆成「姓名」「身份证号」两个独立列。
- 改动:
- `src/option/transportCapacity/driver.js`
-`label: '姓名身份证号'` 列改为 `label: '姓名'`minWidth 120保留 slot/searchsearchOrder 7 不变)。
- 新增独立「身份证号」列(`prop: 'idCardNo'``search: true``searchOrder: 2``slot: true``minWidth: 180`),并上移到 `driverName` 之后,使其紧邻「姓名」列(表格列顺序 = 数组顺序,`searchOrder` 仅控制搜索表单顺序,互不影响)。
-`idCardNo` 隐藏搜索列(`hide: true`)被该新列取代后删除重复定义。
- `src/views/transportCapacity/driver.vue`
- `#driverName` 插槽只保留姓名链接(去掉原内联的身份证号 `<span>`)。
- 新增 `#idCardNo` 插槽显示 `row.idCardNo || '-'`(空值显示横杠)。
- 删除不再使用的 `.driver-page__identity` 样式块。
- 验证:`node --check` 选项文件语法通过;`npm run build` 仅因环境 safe-delete 守卫拦截清空 dist与代码无关未报任何 transform/parse 错误。
## 全站时间列统一加排序(参考 /base/cargo-type
- 需求:用户截图 /business/contract-manage 页面,要求「有时间的都加一个排序」,参考 /base/cargo-type该页面 createTime/updateTime 已设 `sortable: true`)。
- 方案Avue 列加 `sortable: true`;手写 `<el-table-column>``sortable` 属性。精确匹配时间相关 label/prop排除 `hide: true` 的搜索专用字段。
- 精确匹配范围:创建/更新时间、开始/结束日期、生效/失效日期、计划/实际/预计日期时间、审核/上传/变更/评分/调度日期时间、事故/检测/有效截止日期、入口/出口/交易/费用/换胎/出厂/维修/保养时间、登录/申请/提交/操作/触发/过期/日志/记录时间等。
- 改动文件(共 53 个):
- **src/option18 个)**base/common-address.js、business/common.js、business/contract-manage.js、business/project-apply.js、business/transport-plan.js、business/waybill-manage.js、system/authlog.js、transportCapacity/driver.js、vehicle/accident-record.js、vehicle/annual-inspection-record.js、vehicle/etc-record.js、vehicle/equipment-ledger.js、vehicle/insurance-record.js、vehicle/mileage-record.js、vehicle/oil-electric-record.js、vehicle/other-expense-record.js、vehicle/tire-replacement-record.js、vehicle/transport-change-record.js。
- **src/views 内联 Avue option30 个)**flow/follow.vue、flow/manager.vue、flow/model.vue、desk/notice.vue、desk/notice-composition.vue、report/reportlist.vue、work/done.vue、work/todo.vue、work/start.vue、work/claim.vue、work/send.vue、authority/ratelimit.vue、authority/apikey.vue、monitor/log/api.vue、monitor/log/usual.vue、monitor/log/error.vue、base/railway-station.vue、base/airport-master.vue、base/currency.vue、base/customer-type.vue、base/fee-item.vue、base/port-terminal.vue、data/record.vue、util/form.vue、util/table.vue、system/tenant.vue、vehicle/maintenance-plan.vue、vehicle/maintenance-record.vue、vehicle/credit-score-quantification.vue、vehicle/customer-archive.vue。
- **src/views 手写 el-table6 个)**system/dept.vue、business/loading-manage.vue、business/components/waybill-import-dialog.vue、business/project-apply.vue、vehicle/customer-archive.vue、business/components/business-crud-page.vue。
- 注意:弹窗内子表(如合同变更记录、项目附件/变更、客商档案评分/材料/变更记录等时间列也一并加了排序util/form.vue、util/table.vue 为示例页同样处理。
- 验证:`npm run build` 成功exit code 0构建日志中的 CSS `*` 告警为历史既有,与本次无关。
## transport-plan 新增弹窗卡片间距加大
- 需求:用户截图反馈 /business/transport-plan 新增弹窗中各分组白卡(基本信息/收发货信息/货物信息/附件)之间上下间距不够,要求像 project-apply 弹窗一样有明显间距。
- 改动:`src/views/business/components/business-crud-page.vue`
- `:deep(.avue-form__group:has(.dialog-section-title))``margin-bottom``12px` 增至 `16px`,与 project-apply.vue 的 `__grid` 卡片间距一致。

View File

@@ -147,7 +147,7 @@ export const option = {
viewBtn: true, viewBtn: true,
grid: true, grid: true,
selection: true, selection: true,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '数据源', label: '数据源',

View File

@@ -75,6 +75,7 @@ app.use(store);
app.use(router); app.use(router);
app.use(ElementPlus, { app.use(ElementPlus, {
locale: messages[language], locale: messages[language],
table: { showOverflowTooltip: true },
}); });
app.use(Avue, { app.use(Avue, {
axios, axios,
@@ -85,7 +86,8 @@ app.use(Avue, {
searchLabelWidth: 160, searchLabelWidth: 160,
searchMenuSpan: 24, searchMenuSpan: 24,
searchMenuPosition: 'right', searchMenuPosition: 'right',
menuWidth: 160, menuWidth: 180,
showOverflowTooltip: true,
viewBtnIcon: ' ', viewBtnIcon: ' ',
editBtnIcon: ' ', editBtnIcon: ' ',
copyBtnIcon: ' ', copyBtnIcon: ' ',

View File

@@ -48,7 +48,7 @@ export const getCargoTypeOption = ctx => ({
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '类型', label: '类型',

View File

@@ -158,6 +158,7 @@ export const createOption = () => ({
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -168,6 +169,7 @@ export const createOption = () => ({
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -204,7 +204,8 @@ export const createCrudOption = columns => ({
delBtn: false, delBtn: false,
dialogClickModal: false, dialogClickModal: false,
menuFixed: 'right', menuFixed: 'right',
menuWidth: 160, menuWidth: 180,
showOverflowTooltip: true,
column: columns, column: columns,
}); });
@@ -226,6 +227,7 @@ export const auditColumns = [
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -236,6 +238,7 @@ export const auditColumns = [
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -313,6 +313,7 @@ export const option = createCrudOption([
{ {
label: '开始日期', label: '开始日期',
prop: 'startDate', prop: 'startDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -323,6 +324,7 @@ export const option = createCrudOption([
{ {
label: '结束日期', label: '结束日期',
prop: 'endDate', prop: 'endDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -333,6 +335,7 @@ export const option = createCrudOption([
{ {
label: '临时效力起', label: '临时效力起',
prop: 'temporaryStartDate', prop: 'temporaryStartDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -343,6 +346,7 @@ export const option = createCrudOption([
{ {
label: '临时效力止', label: '临时效力止',
prop: 'temporaryEndDate', prop: 'temporaryEndDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -425,6 +429,7 @@ export const option = createCrudOption([
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -178,5 +178,5 @@ export const option = {
updateBtnText: '保存', updateBtnText: '保存',
dialogTop: '10px', dialogTop: '10px',
dialogWidth: '96%', dialogWidth: '96%',
menuWidth: 200, menuWidth: 220,
}; };

View File

@@ -386,6 +386,7 @@ export const option = createCrudOption([
{ {
label: '审核通过时间', label: '审核通过时间',
prop: 'approvedTime', prop: 'approvedTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -153,19 +153,19 @@ export const config = {
title: '收发货信息', title: '收发货信息',
fields: [ fields: [
['departureName', '发货地'], ['departureName', '发货地'],
['departureAddress', '发货地址', 2],
['departureContact', '发货联系人'], ['departureContact', '发货联系人'],
['departureAddress', '发货地址'],
['departurePhone', '发货联系方式'], ['departurePhone', '发货联系方式'],
['arrivalName', '收货地'], ['arrivalName', '收货地'],
['arrivalAddress', '到货地址', 2],
['arrivalContact', '收货联系人'], ['arrivalContact', '收货联系人'],
['arrivalAddress', '到货地址'],
['arrivalPhone', '收货联系方式'], ['arrivalPhone', '收货联系方式'],
], ],
}, },
{ {
title: '其它信息', title: '其它信息',
fields: [ fields: [
['remark', '备注', 2], ['remark', '备注'],
['updateUserName', '更新人'], ['updateUserName', '更新人'],
['updateTime', '更新时间'], ['updateTime', '更新时间'],
['createTime', '创建时间'], ['createTime', '创建时间'],
@@ -306,6 +306,7 @@ export const option = {
{ {
label: '计划开始日期', label: '计划开始日期',
prop: 'planStartDate', prop: 'planStartDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -316,6 +317,7 @@ export const option = {
{ {
label: '计划结束日期', label: '计划结束日期',
prop: 'planEndDate', prop: 'planEndDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',

View File

@@ -392,6 +392,7 @@ export const option = {
{ {
label: '实际发货时间', label: '实际发货时间',
prop: 'startDate', prop: 'startDate',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -400,6 +401,7 @@ export const option = {
{ {
label: '实际完成时间', label: '实际完成时间',
prop: 'endDate', prop: 'endDate',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -429,6 +431,7 @@ export const option = {
{ {
label: '预计发货日期', label: '预计发货日期',
prop: 'estimatedStartTime', prop: 'estimatedStartTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -442,6 +445,7 @@ export const option = {
{ {
label: '预计完成日期', label: '预计完成日期',
prop: 'estimatedEndTime', prop: 'estimatedEndTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -718,5 +722,5 @@ export const option = {
]), ]),
dialogWidth: '96%', dialogWidth: '96%',
dialogTop: '10px', dialogTop: '10px',
menuWidth: 320, menuWidth: 280,
}; };

View File

@@ -130,7 +130,7 @@ export default {
selection: true, selection: true,
grid: true, grid: true,
labelWidth: 'auto', labelWidth: 'auto',
menuWidth: 160, menuWidth: 180,
dialogWidth: 1200, dialogWidth: 1200,
dialogClickModal: false, dialogClickModal: false,
tabs: true, tabs: true,

View File

@@ -13,7 +13,7 @@ export default {
selection: true, selection: true,
grid: true, grid: true,
labelWidth: 'auto', labelWidth: 'auto',
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {

View File

@@ -22,7 +22,7 @@ export const authLockOption = {
viewBtn: false, viewBtn: false,
editBtn: false, editBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogType: 'drawer', dialogType: 'drawer',
dialogWidth: 800, dialogWidth: 800,
dialogClickModal: false, dialogClickModal: false,

View File

@@ -21,7 +21,7 @@ export const authLogOption = {
editBtn: false, editBtn: false,
delBtn: false, delBtn: false,
menu: true, menu: true,
menuWidth: 160, menuWidth: 180,
dialogType: 'drawer', dialogType: 'drawer',
dialogWidth: 800, dialogWidth: 800,
dialogClickModal: false, dialogClickModal: false,
@@ -82,6 +82,7 @@ export const authLogOption = {
{ {
label: '登录时间', label: '登录时间',
prop: 'loginTime', prop: 'loginTime',
sortable: true,
span: 24, span: 24,
width: 180, width: 180,
}, },

View File

@@ -11,7 +11,7 @@ export const optionParent = {
index: true, index: true,
selection: true, selection: true,
viewBtn: true, viewBtn: true,
menuWidth: 160, menuWidth: 180,
dialogWidth: 880, dialogWidth: 880,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
@@ -104,7 +104,7 @@ export const optionChild = {
index: true, index: true,
selection: true, selection: true,
viewBtn: true, viewBtn: true,
menuWidth: 160, menuWidth: 180,
dialogWidth: 880, dialogWidth: 880,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [

View File

@@ -11,7 +11,7 @@ export const optionParent = {
index: true, index: true,
selection: true, selection: true,
viewBtn: true, viewBtn: true,
menuWidth: 160, menuWidth: 180,
dialogWidth: 880, dialogWidth: 880,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
@@ -105,7 +105,7 @@ export const optionChild = {
index: true, index: true,
selection: true, selection: true,
viewBtn: true, viewBtn: true,
menuWidth: 160, menuWidth: 180,
dialogWidth: 880, dialogWidth: 880,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [

View File

@@ -359,7 +359,7 @@ export const platformOption = {
selection: true, selection: true,
viewBtn: true, viewBtn: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
editBtnText: '配置', editBtnText: '配置',
column: [ column: [
{ {

View File

@@ -14,7 +14,7 @@ export const codeOption = {
index: true, index: true,
selection: true, selection: true,
labelWidth: 'auto', labelWidth: 'auto',
menuWidth: 160, menuWidth: 180,
viewBtn: true, viewBtn: true,
dialogClickModal: false, dialogClickModal: false,
tabs: true, tabs: true,

View File

@@ -14,7 +14,7 @@ export default {
selection: true, selection: true,
labelWidth: 'auto', labelWidth: 'auto',
searchLabelWidth: 160, searchLabelWidth: 160,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {

View File

@@ -14,7 +14,7 @@ export default {
selection: true, selection: true,
labelWidth: 'auto', labelWidth: 'auto',
searchLabelWidth: 160, searchLabelWidth: 160,
menuWidth: 160, menuWidth: 180,
dialogWidth: 500, dialogWidth: 500,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [

View File

@@ -20,12 +20,20 @@ export const option = {
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
label: '姓名身份证号', label: '姓名',
prop: 'driverName', prop: 'driverName',
search: true, search: true,
searchOrder: 7, searchOrder: 7,
slot: true, slot: true,
minWidth: 220, minWidth: 120,
},
{
label: '身份证号',
prop: 'idCardNo',
search: true,
searchOrder: 2,
slot: true,
minWidth: 180,
}, },
{ {
label: '手机号码', label: '手机号码',
@@ -76,6 +84,7 @@ export const option = {
type: 'select', type: 'select',
filterable: true, filterable: true,
dicData: [], dicData: [],
slot: true,
minWidth: 160, minWidth: 160,
}, },
{ {
@@ -101,6 +110,7 @@ export const option = {
{ {
label: '驾驶认证(日期)', label: '驾驶认证(日期)',
prop: 'drivingLicenseEndDate', prop: 'drivingLicenseEndDate',
sortable: true,
slot: true, slot: true,
minWidth: 140, minWidth: 140,
align: 'center', align: 'center',
@@ -108,16 +118,10 @@ export const option = {
{ {
label: '从业资格认证(日期)', label: '从业资格认证(日期)',
prop: 'qualificationEndDate', prop: 'qualificationEndDate',
sortable: true,
slot: true, slot: true,
minWidth: 160, minWidth: 160,
}, },
{
label: '身份证号',
prop: 'idCardNo',
search: true,
searchOrder: 2,
hide: true,
},
{ {
label: '准驾车型', label: '准驾车型',
prop: 'drivingType', prop: 'drivingType',
@@ -135,16 +139,5 @@ export const option = {
{ label: 'C2', value: 'C2' }, { label: 'C2', value: 'C2' },
], ],
}, },
{
label: '',
prop: 'expireStatus',
search: true,
searchOrder: 0,
searchSpan: 6,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
},
], ],
}; };

View File

@@ -14,7 +14,7 @@ export const option = {
editBtn: false, editBtn: false,
delBtn: false, delBtn: false,
viewBtn: false, viewBtn: false,
menuWidth: 320, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -40,6 +40,7 @@ export const option = {
type: 'select', type: 'select',
filterable: true, filterable: true,
dicData: [], dicData: [],
slot: true,
minWidth: 160, minWidth: 160,
}, },
{ {

View File

@@ -14,7 +14,7 @@ export const option = {
editBtn: false, editBtn: false,
delBtn: false, delBtn: false,
viewBtn: false, viewBtn: false,
menuWidth: 320, menuWidth: 250,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -49,6 +49,7 @@ export const option = {
type: 'select', type: 'select',
filterable: true, filterable: true,
dicData: [], dicData: [],
slot: true,
minWidth: 150, minWidth: 150,
}, },
{ {

View File

@@ -83,6 +83,7 @@ export const option = {
{ {
label: '事故发生日期', label: '事故发生日期',
prop: 'accidentDate', prop: 'accidentDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -200,6 +201,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -250,6 +252,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -82,6 +82,7 @@ export const option = {
{ {
label: '检测评定日期', label: '检测评定日期',
prop: 'inspectionAssessmentDate', prop: 'inspectionAssessmentDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -93,6 +94,7 @@ export const option = {
{ {
label: '有效期截止日', label: '有效期截止日',
prop: 'validUntilDate', prop: 'validUntilDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -206,6 +208,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -254,6 +257,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -86,6 +86,7 @@ export const option = {
{ {
label: '出厂日期', label: '出厂日期',
prop: 'factoryDate', prop: 'factoryDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -133,6 +134,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -144,6 +146,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -62,6 +62,7 @@ export const option = {
{ {
label: '入口时间', label: '入口时间',
prop: 'entryTime', prop: 'entryTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm', format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -85,6 +86,7 @@ export const option = {
{ {
label: '出口时间', label: '出口时间',
prop: 'exitTime', prop: 'exitTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm', format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -169,6 +171,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -189,6 +192,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -111,6 +111,7 @@ export const option = {
{ {
label: '开始日期', label: '开始日期',
prop: 'startDate', prop: 'startDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -120,6 +121,7 @@ export const option = {
{ {
label: '结束日期', label: '结束日期',
prop: 'endDate', prop: 'endDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -173,6 +175,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -223,6 +226,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -157,6 +157,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -209,6 +210,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -51,6 +51,7 @@ export const option = {
{ {
label: '交易时间', label: '交易时间',
prop: 'transactionTime', prop: 'transactionTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm', format: 'YYYY-MM-DD HH:mm',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -217,6 +218,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -265,6 +267,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -81,6 +81,7 @@ export const option = {
{ {
label: '费用日期', label: '费用日期',
prop: 'expenseDate', prop: 'expenseDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -173,6 +174,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -193,6 +195,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -70,6 +70,7 @@ export const option = {
{ {
label: '换胎时间', label: '换胎时间',
prop: 'replacementTime', prop: 'replacementTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -140,6 +141,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -190,6 +192,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -96,6 +96,7 @@ export const option = {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -146,6 +147,7 @@ export const option = {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -42,7 +42,7 @@ export default {
justify-content: center; justify-content: center;
} }
.logo-img { .logo-img {
width: 40px; width: 30px;
margin-top: 5px; margin-top: 10px;
} }
</style> </style>

View File

@@ -550,12 +550,16 @@
} }
// 全站统一Avue 操作列文字链接保持间距并支持自动换行 // 全站统一Avue 操作列文字链接保持间距并支持自动换行
.avue-crud .avue-crud__menu { // 注意Avue 自带 .avue-crud .avue-crud__menu{display:block}(特异性同为 0,2,0
// 此处重复类名升至 0,3,0 并强制 display:inline-flex !important彻底压过 Avue 内置样式,
// 避免 dev 模式下 CSS 注入顺序导致 .avue-crud__menu 退化成 block 而让操作项竖排错位。
.avue-crud .avue-crud__menu.avue-crud__menu {
display: inline-flex !important; display: inline-flex !important;
flex-wrap: wrap; flex-wrap: wrap;
gap: 8px; gap: 8px;
align-items: center; align-items: center;
justify-content: start; justify-content: start;
width: 100% !important;
text-align: left; text-align: left;
} }
@@ -573,6 +577,9 @@
// 选择器同时覆盖 Avue 行菜单(.avue-crud__menu与任意含 el-link 的表格体单元格(手写操作列)。 // 选择器同时覆盖 Avue 行菜单(.avue-crud__menu与任意含 el-link 的表格体单元格(手写操作列)。
.avue-crud__menu .el-link, .avue-crud__menu .el-link,
.el-table .el-table__body .cell:has(.el-link) .el-link { .el-table .el-table__body .cell:has(.el-link) .el-link {
// 覆盖 Element Plus el-link 默认的 font-weight: var(--el-font-weight-primary)500 中等粗),
// 操作列文字统一为常规字重,避免「查看/编辑/删除」等链接显得加粗。
font-weight: normal;
--el-link-text-color: var(--el-color-primary); --el-link-text-color: var(--el-color-primary);
--el-link-hover-text-color: var(--el-color-primary-light-3); --el-link-hover-text-color: var(--el-color-primary-light-3);
--el-link-active-text-color: var(--el-color-primary-dark-2); --el-link-active-text-color: var(--el-color-primary-dark-2);
@@ -596,6 +603,44 @@
font-weight: normal; font-weight: normal;
} }
// 全站统一Element Plus 全局开启 show-overflow-tooltip 后,
// 操作列单元格会被加上 .el-tooltip 类并写死宽度,导致内部 el-link 换行后被裁切。
// 此处豁免操作列单元格:让 Avue 行菜单与手写表格操作列保持原有 flex 自动换行,不被固定宽度裁切。
.el-table .cell.avue-crud__menu,
.el-table .el-table__body .cell.el-tooltip:has(> .el-link) {
width: auto !important;
overflow: visible;
text-overflow: clip;
}
// 全站统一Avue 内置行操作按钮(查看 / 编辑 / 删除 / 复制等)视觉对齐为 el-link 链接样式。
// 选择器仅命中表格行操作列 .avue-crud__menu 内的 is-text 按钮,不误伤顶部工具栏(.avue-crud__header
// 与弹窗按钮(.avue-crud__dialog__menu。事件rowView/rowEdit/rowDel与权限permission 指令)
// 由 Avue 自带,此处只改外观,零功能影响。
.avue-crud__menu > .el-button.is-text {
height: auto;
padding: 0;
border: none;
background: transparent;
color: var(--el-color-primary);
font-weight: normal;
&:hover,
&:focus,
&:active {
background: transparent;
color: var(--el-color-primary-light-3);
text-decoration: underline;
}
&.is-disabled,
&.is-disabled:hover {
background: transparent;
color: var(--el-color-primary-light-5);
text-decoration: none;
}
}
@media (max-width: 768px) { @media (max-width: 768px) {
.avue-crud__pagination .el-pagination, .avue-crud__pagination .el-pagination,
.empty-pagination .el-pagination, .empty-pagination .el-pagination,

View File

@@ -1,6 +1,6 @@
export const TABLE_MENU_WIDTH = { export const TABLE_MENU_WIDTH = {
default: 160, default: 180,
three: 220, three: 180,
four: 320, four: 320,
}; };

View File

@@ -321,7 +321,7 @@ export default {
height: 'auto', height: 'auto',
calcHeight: 32, calcHeight: 32,
dialogWidth: 700, dialogWidth: 700,
menuWidth: 160, menuWidth: 180,
tip: false, tip: false,
searchShow: true, searchShow: true,
searchMenuSpan: 24, searchMenuSpan: 24,
@@ -434,6 +434,7 @@ export default {
{ {
label: '过期时间', label: '过期时间',
prop: 'expireTime', prop: 'expireTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -500,7 +501,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogType: 'drawer', dialogType: 'drawer',
dialogWidth: 800, dialogWidth: 800,
column: [ column: [
@@ -512,7 +513,8 @@ export default {
{ label: '请求方法', prop: 'method', slot: true, width: 85 }, { label: '请求方法', prop: 'method', slot: true, width: 85 },
{ label: '调用IP', prop: 'remoteIp', search: true, width: 140 }, { label: '调用IP', prop: 'remoteIp', search: true, width: 140 },
{ label: '耗时(ms)', prop: 'time', width: 85 }, { label: '耗时(ms)', prop: 'time', width: 85 },
{ label: '日志时间', prop: 'createTime', span: 24, width: 180 }, { label: '日志时间', prop: 'createTime',
sortable: true, span: 24, width: 180 },
{ label: '用户代理', prop: 'userAgent', span: 24, hide: true }, { label: '用户代理', prop: 'userAgent', span: 24, hide: true },
{ label: '请求数据', prop: 'params', type: 'textarea', span: 24, minRows: 2, hide: true }, { label: '请求数据', prop: 'params', type: 'textarea', span: 24, minRows: 2, hide: true },
], ],

View File

@@ -164,7 +164,7 @@ export default {
selection: true, selection: true,
labelWidth: 'auto', labelWidth: 'auto',
searchLabelWidth: 160, searchLabelWidth: 160,
menuWidth: 160, menuWidth: 180,
dialogWidth: 900, dialogWidth: 900,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
@@ -275,7 +275,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -336,7 +336,7 @@ export default {
viewBtn: true, viewBtn: true,
selection: true, selection: true,
labelWidth: 'auto', labelWidth: 'auto',
menuWidth: 160, menuWidth: 180,
dialogWidth: 900, dialogWidth: 900,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [

View File

@@ -165,7 +165,7 @@ export default {
selection: true, selection: true,
labelWidth: 'auto', labelWidth: 'auto',
searchLabelWidth: 160, searchLabelWidth: 160,
menuWidth: 160, menuWidth: 180,
dialogWidth: 900, dialogWidth: 900,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
@@ -312,7 +312,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -375,7 +375,7 @@ export default {
viewBtn: true, viewBtn: true,
selection: true, selection: true,
labelWidth: 'auto', labelWidth: 'auto',
menuWidth: 160, menuWidth: 180,
dialogWidth: 900, dialogWidth: 900,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [

View File

@@ -211,7 +211,7 @@ export default {
index: true, index: true,
viewBtn: true, viewBtn: true,
selection: true, selection: true,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -366,7 +366,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogType: 'drawer', dialogType: 'drawer',
dialogWidth: 800, dialogWidth: 800,
column: [ column: [
@@ -393,7 +393,8 @@ export default {
{ label: '服务IP', prop: 'serverIp', hide: true, width: 160 }, { label: '服务IP', prop: 'serverIp', hide: true, width: 160 },
{ label: '环境', prop: 'env', hide: true, width: 85 }, { label: '环境', prop: 'env', hide: true, width: 85 },
{ label: '用户代理', prop: 'userAgent', span: 24, hide: true }, { label: '用户代理', prop: 'userAgent', span: 24, hide: true },
{ label: '触发时间', prop: 'createTime', span: 24, width: 170 }, { label: '触发时间', prop: 'createTime',
sortable: true, span: 24, width: 170 },
{ label: '请求数据', prop: 'params', type: 'textarea', span: 24, minRows: 2, hide: true }, { label: '请求数据', prop: 'params', type: 'textarea', span: 24, minRows: 2, hide: true },
], ],
}, },

View File

@@ -250,7 +250,7 @@ export default {
viewBtn: true, viewBtn: true,
labelWidth: 'auto', labelWidth: 'auto',
searchLabelWidth: 160, searchLabelWidth: 160,
menuWidth: 320, menuWidth: 240,
dialogWidth: 600, dialogWidth: 600,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [

View File

@@ -253,7 +253,7 @@ export default {
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '编码', label: '编码',
@@ -447,6 +447,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -458,6 +459,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -170,7 +170,7 @@ export default {
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
menuFixed: 'right', menuFixed: 'right',
column: [ column: [
{ {
@@ -203,6 +203,7 @@ export default {
{ {
label: '生效日期', label: '生效日期',
prop: 'effectiveDate', prop: 'effectiveDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -224,6 +225,7 @@ export default {
{ {
label: '失效日期', label: '失效日期',
prop: 'expiryDate', prop: 'expiryDate',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD', valueFormat: 'YYYY-MM-DD',
@@ -287,6 +289,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -101,7 +101,7 @@ export default {
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '中文名称', label: '中文名称',
@@ -135,6 +135,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -146,6 +147,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -141,7 +141,7 @@ export default {
editBtn: false, editBtn: false,
selection: false, selection: false,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '费用类型', label: '费用类型',
@@ -214,6 +214,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -225,6 +226,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -387,7 +387,7 @@ export default {
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '编码', label: '编码',
@@ -629,6 +629,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -639,6 +640,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -219,7 +219,7 @@ export default {
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '编码', label: '编码',
@@ -411,6 +411,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -422,6 +423,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -1344,7 +1344,7 @@
<template #default="{ row }">{{ formatFileSize(row.size) }}</template> <template #default="{ row }">{{ formatFileSize(row.size) }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="uploadUserName" label="上传人" width="140" align="center" /> <el-table-column prop="uploadUserName" label="上传人" width="140" align="center" />
<el-table-column prop="uploadTime" label="上传时间" width="170" align="center" /> <el-table-column prop="uploadTime" label="上传时间" width="170" align="center" sortable/>
<el-table-column label="操作" width="120" align="center"> <el-table-column label="操作" width="120" align="center">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-link <el-link
@@ -1607,7 +1607,7 @@
<template #default="{ row }">{{ formatFileSize(row.size) }}</template> <template #default="{ row }">{{ formatFileSize(row.size) }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="uploadUserName" label="上传人" width="140" align="center" /> <el-table-column prop="uploadUserName" label="上传人" width="140" align="center" />
<el-table-column prop="uploadTime" label="上传时间" width="160" align="center" /> <el-table-column prop="uploadTime" label="上传时间" width="160" align="center" sortable/>
<el-table-column label="操作" width="100" align="center"> <el-table-column label="操作" width="100" align="center">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-link <el-link
@@ -1633,7 +1633,7 @@
<template #changeRecordJson-form> <template #changeRecordJson-form>
<el-table :data="changeRecordRows" border class="business-crud-page__change-table"> <el-table :data="changeRecordRows" border class="business-crud-page__change-table">
<el-table-column type="index" label="序号" width="70" align="center" /> <el-table-column type="index" label="序号" width="70" align="center" />
<el-table-column prop="changeDate" label="变更日期" min-width="150" align="center" /> <el-table-column prop="changeDate" label="变更日期" min-width="150" align="center" sortable/>
<el-table-column prop="handlerUserName" label="经办人" min-width="140" align="center" /> <el-table-column prop="handlerUserName" label="经办人" min-width="140" align="center" />
<el-table-column prop="changeType" label="变更类型" min-width="160" align="center" /> <el-table-column prop="changeType" label="变更类型" min-width="160" align="center" />
<el-table-column <el-table-column
@@ -1808,13 +1808,12 @@
width="96%" width="96%"
class="business-crud-page__detail-dialog" class="business-crud-page__detail-dialog"
> >
<div v-loading="detailLoading"> <div v-loading="detailLoading" class="business-crud-page__detail-content">
<section <section-card
v-for="section in detailSections" v-for="section in detailSections"
:key="section.title" :key="section.title"
class="business-crud-page__detail-section" :title="section.title"
> >
<div class="dialog-section-title">{{ section.title }}</div>
<el-descriptions :column="2" border> <el-descriptions :column="2" border>
<el-descriptions-item <el-descriptions-item
v-for="field in section.fields" v-for="field in section.fields"
@@ -1825,9 +1824,8 @@
{{ formatDetailValue(detailRow, field[0]) }} {{ formatDetailValue(detailRow, field[0]) }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</section> </section-card>
<section v-if="config.enableTransportPlanForm" class="business-crud-page__detail-section"> <section-card v-if="config.enableTransportPlanForm" title="货物信息">
<div class="dialog-section-title">货物信息</div>
<el-table :data="transportCargoRows" border empty-text="暂无货物信息"> <el-table :data="transportCargoRows" border empty-text="暂无货物信息">
<el-table-column type="index" label="序号" width="70" align="center" /> <el-table-column type="index" label="序号" width="70" align="center" />
<el-table-column prop="cargoName" label="货物名称" min-width="180" /> <el-table-column prop="cargoName" label="货物名称" min-width="180" />
@@ -1842,9 +1840,8 @@
<el-table-column prop="deviceCode" label="设备编码" min-width="140" /> <el-table-column prop="deviceCode" label="设备编码" min-width="140" />
<el-table-column prop="remark" label="备注" min-width="160" /> <el-table-column prop="remark" label="备注" min-width="160" />
</el-table> </el-table>
</section> </section-card>
<section v-if="config.enableAttachmentTable" class="business-crud-page__detail-section"> <section-card v-if="config.enableAttachmentTable" :title="config.attachmentTitle || '附件'">
<div class="dialog-section-title">{{ config.attachmentTitle || '附件' }}</div>
<el-table :data="attachmentRows" border empty-text="暂无附件"> <el-table :data="attachmentRows" border empty-text="暂无附件">
<el-table-column type="index" label="序号" width="70" align="center" /> <el-table-column type="index" label="序号" width="70" align="center" />
<el-table-column label="文件名" min-width="260"> <el-table-column label="文件名" min-width="260">
@@ -1855,9 +1852,9 @@
<template #default="{ row }">{{ formatFileSize(row.size) }}</template> <template #default="{ row }">{{ formatFileSize(row.size) }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="uploadUserName" label="上传人" width="140" /> <el-table-column prop="uploadUserName" label="上传人" width="140" />
<el-table-column prop="uploadTime" label="上传时间" width="180" /> <el-table-column prop="uploadTime" label="上传时间" width="180" sortable/>
</el-table> </el-table>
</section> </section-card>
</div> </div>
<template #footer> <template #footer>
<el-button type="primary" @click="detailBox = false">关闭</el-button> <el-button type="primary" @click="detailBox = false">关闭</el-button>
@@ -2315,7 +2312,7 @@
min-width="160" min-width="160"
align="center" align="center"
show-overflow-tooltip show-overflow-tooltip
/> sortable/>
<el-table-column label="操作" width="220" align="center" fixed="right"> <el-table-column label="操作" width="220" align="center" fixed="right">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<div class="business-crud-page__dispatch-actions"> <div class="business-crud-page__dispatch-actions">
@@ -2830,7 +2827,7 @@
<template #default="{ row }">{{ formatFileSize(row.size) }}</template> <template #default="{ row }">{{ formatFileSize(row.size) }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="uploadUserName" label="上传人" width="140" align="center" /> <el-table-column prop="uploadUserName" label="上传人" width="140" align="center" />
<el-table-column prop="uploadTime" label="上传时间" width="160" align="center" /> <el-table-column prop="uploadTime" label="上传时间" width="160" align="center" sortable/>
<el-table-column label="操作" width="100" align="center"> <el-table-column label="操作" width="100" align="center">
<template #default="{ $index }"> <template #default="{ $index }">
<el-link type="danger" @click="removeDispatchItemAttachment($index)">删除</el-link> <el-link type="danger" @click="removeDispatchItemAttachment($index)">删除</el-link>
@@ -3271,8 +3268,8 @@
min-width="120" min-width="120"
:formatter="formatTransportRouteUpdateUserName" :formatter="formatTransportRouteUpdateUserName"
/> />
<el-table-column prop="updateTime" label="更新时间" min-width="160" /> <el-table-column prop="updateTime" label="更新时间" min-width="160" sortable/>
<el-table-column prop="createTime" label="创建时间" min-width="160" /> <el-table-column prop="createTime" label="创建时间" min-width="160" sortable/>
<el-table-column label="操作" width="110" fixed="right"> <el-table-column label="操作" width="110" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-link type="primary" @click.stop="selectTransportRouteRow(row)"> <el-link type="primary" @click.stop="selectTransportRouteRow(row)">
@@ -3378,8 +3375,8 @@
<el-table-column prop="contactPhone" label="联系方式" min-width="140" /> <el-table-column prop="contactPhone" label="联系方式" min-width="140" />
<el-table-column prop="deptName" label="组织" min-width="150" show-overflow-tooltip /> <el-table-column prop="deptName" label="组织" min-width="150" show-overflow-tooltip />
<el-table-column prop="remark" label="备注" min-width="180" show-overflow-tooltip /> <el-table-column prop="remark" label="备注" min-width="180" show-overflow-tooltip />
<el-table-column prop="updateTime" label="更新时间" min-width="160" /> <el-table-column prop="updateTime" label="更新时间" min-width="160" sortable/>
<el-table-column prop="createTime" label="创建时间" min-width="160" /> <el-table-column prop="createTime" label="创建时间" min-width="160" sortable/>
<el-table-column label="操作" width="110" fixed="right"> <el-table-column label="操作" width="110" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-link type="primary" @click.stop="selectTransportAddressRow(row)"> <el-link type="primary" @click.stop="selectTransportAddressRow(row)">
@@ -3460,8 +3457,8 @@
<el-table-column prop="latitude" label="纬度" min-width="120" /> <el-table-column prop="latitude" label="纬度" min-width="120" />
<el-table-column prop="regionName" label="行政区划" min-width="160" show-overflow-tooltip /> <el-table-column prop="regionName" label="行政区划" min-width="160" show-overflow-tooltip />
<el-table-column prop="remark" label="备注" min-width="180" show-overflow-tooltip /> <el-table-column prop="remark" label="备注" min-width="180" show-overflow-tooltip />
<el-table-column prop="updateTime" label="更新时间" min-width="160" /> <el-table-column prop="updateTime" label="更新时间" min-width="160" sortable/>
<el-table-column prop="createTime" label="创建时间" min-width="160" /> <el-table-column prop="createTime" label="创建时间" min-width="160" sortable/>
<el-table-column label="操作" width="110" fixed="right"> <el-table-column label="操作" width="110" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-link type="primary" @click.stop="selectTransportStationRow(row)"> <el-link type="primary" @click.stop="selectTransportStationRow(row)">
@@ -3607,8 +3604,8 @@
/> />
<el-table-column prop="remark" label="备注" min-width="180" show-overflow-tooltip /> <el-table-column prop="remark" label="备注" min-width="180" show-overflow-tooltip />
<el-table-column prop="deptName" label="组织" min-width="150" show-overflow-tooltip /> <el-table-column prop="deptName" label="组织" min-width="150" show-overflow-tooltip />
<el-table-column prop="updateTime" label="更新时间" min-width="160" /> <el-table-column prop="updateTime" label="更新时间" min-width="160" sortable/>
<el-table-column prop="createTime" label="创建时间" min-width="160" /> <el-table-column prop="createTime" label="创建时间" min-width="160" sortable/>
<el-table-column label="操作" width="110" fixed="right"> <el-table-column label="操作" width="110" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<el-link type="primary" @click.stop="selectCommonCargoRow(row)"> <el-link type="primary" @click.stop="selectCommonCargoRow(row)">
@@ -9792,9 +9789,12 @@ export default {
} }
} }
&__detail-section { &__detail-content {
margin-bottom: 20px; display: flex;
flex-direction: column;
gap: 12px;
.section-card {
:deep(.el-descriptions__label) { :deep(.el-descriptions__label) {
width: 140px; width: 140px;
color: #606266; color: #606266;
@@ -9812,6 +9812,7 @@ export default {
border-color: #eff1f7; border-color: #eff1f7;
} }
} }
}
&__transport-plan-import-form { &__transport-plan-import-form {
padding: 12px 24px 4px; padding: 12px 24px 4px;
@@ -9899,4 +9900,22 @@ export default {
.section-card{ .section-card{
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
/* 编辑弹窗:含分组的 Avue form 渲染为白卡风格 */
:deep(.avue-form__group:has(.dialog-section-title)) {
background: #fff;
border-radius: 6px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
padding: 16px;
margin-bottom: 16px;
.avue-form__group--title {
padding: 0 !important;
margin-bottom: 12px;
}
.avue-form__row {
padding: 0 !important;
}
}
</style> </style>

View File

@@ -17,7 +17,7 @@
<el-table-column prop="batchNo" label="运单批次号" min-width="150" /><el-table-column prop="projectName" label="项目名称" min-width="150" /> <el-table-column prop="batchNo" label="运单批次号" min-width="150" /><el-table-column prop="projectName" label="项目名称" min-width="150" />
<el-table-column prop="carrierName" label="承运商" min-width="140" /><el-table-column prop="carrierType" label="承运类型" min-width="120" /> <el-table-column prop="carrierName" label="承运商" min-width="140" /><el-table-column prop="carrierType" label="承运类型" min-width="120" />
<el-table-column prop="waybillCount" label="运单数" width="90" /><el-table-column prop="importTypeName" label="导入方式" width="100" /> <el-table-column prop="waybillCount" label="运单数" width="90" /><el-table-column prop="importTypeName" label="导入方式" width="100" />
<el-table-column prop="createTime" label="创建时间" min-width="170" /><el-table-column prop="updateTime" label="更新时间" min-width="170" /> <el-table-column prop="createTime" label="创建时间" min-width="170" sortable/><el-table-column prop="updateTime" label="更新时间" min-width="170" sortable/>
<el-table-column prop="statusName" label="状态" width="100" /><el-table-column label="操作" width="180" fixed="right"> <el-table-column prop="statusName" label="状态" width="100" /><el-table-column label="操作" width="180" fixed="right">
<template #default="{ row }"><el-link type="primary" @click="openDetail(row)">查看</el-link><el-link type="primary" @click="editBatch(row)">编辑</el-link><el-link type="danger" @click="removeBatch(row)">删除</el-link></template> <template #default="{ row }"><el-link type="primary" @click="openDetail(row)">查看</el-link><el-link type="primary" @click="editBatch(row)">编辑</el-link><el-link type="danger" @click="removeBatch(row)">删除</el-link></template>
</el-table-column> </el-table-column>
@@ -27,7 +27,7 @@
<el-dialog v-model="detailVisible" title="导入运单详情" width="90%" append-to-body> <el-dialog v-model="detailVisible" title="导入运单详情" width="90%" append-to-body>
<el-form :inline="true" :model="detailQuery"><el-form-item label="车牌号/船号"><el-input v-model="detailQuery.vehicleNo" clearable /></el-form-item><el-form-item label="货物名称"><el-input v-model="detailQuery.cargoName" clearable /></el-form-item><el-button type="primary" @click="loadDetails">查询</el-button></el-form> <el-form :inline="true" :model="detailQuery"><el-form-item label="车牌号/船号"><el-input v-model="detailQuery.vehicleNo" clearable /></el-form-item><el-form-item label="货物名称"><el-input v-model="detailQuery.cargoName" clearable /></el-form-item><el-button type="primary" @click="loadDetails">查询</el-button></el-form>
<el-table :data="details" border><el-table-column type="index" label="序号" width="65" /><el-table-column prop="batchNo" label="运单批次号" min-width="140" /><el-table-column prop="originalNo" label="原始单号" min-width="130" /><el-table-column prop="vehicleNo" label="车牌号/航班号/船号/班列号" min-width="190" /><el-table-column prop="driverName" label="司机/船长" min-width="120" /><el-table-column prop="transportType" label="运输类型" width="110" /><el-table-column prop="cargoName" label="货物名称" width="130" /><el-table-column prop="cargoType" label="货物类型" width="120" /><el-table-column prop="quantity" label="重量" width="90" /><el-table-column prop="departureAddress" label="发货地址" min-width="220" show-overflow-tooltip /><el-table-column prop="departureContact" label="发货联系人" width="110" /><el-table-column prop="departurePhone" label="发货联系人电话" width="140" /><el-table-column prop="arrivalAddress" label="到货地址" min-width="220" show-overflow-tooltip /><el-table-column prop="arrivalContact" label="收货联系人" width="110" /><el-table-column prop="arrivalPhone" label="收货联系人电话" width="140" /><el-table-column prop="startDate" label="开始时间" width="160" /><el-table-column prop="endDate" label="结束时间" width="160" /><el-table-column prop="unitPrice" label="单价" width="90" /><el-table-column prop="freight" label="运费" width="100" /><el-table-column prop="otherFeeTotal" label="其他费用合计" width="120" /><el-table-column prop="freightTotal" label="运费合计" width="100" /><el-table-column prop="remark" label="备注" min-width="160" /><el-table-column label="操作" width="80">-</el-table-column></el-table> <el-table :data="details" border><el-table-column type="index" label="序号" width="65" /><el-table-column prop="batchNo" label="运单批次号" min-width="140" /><el-table-column prop="originalNo" label="原始单号" min-width="130" /><el-table-column prop="vehicleNo" label="车牌号/航班号/船号/班列号" min-width="190" /><el-table-column prop="driverName" label="司机/船长" min-width="120" /><el-table-column prop="transportType" label="运输类型" width="110" /><el-table-column prop="cargoName" label="货物名称" width="130" /><el-table-column prop="cargoType" label="货物类型" width="120" /><el-table-column prop="quantity" label="重量" width="90" /><el-table-column prop="departureAddress" label="发货地址" min-width="220" show-overflow-tooltip /><el-table-column prop="departureContact" label="发货联系人" width="110" /><el-table-column prop="departurePhone" label="发货联系人电话" width="140" /><el-table-column prop="arrivalAddress" label="到货地址" min-width="220" show-overflow-tooltip /><el-table-column prop="arrivalContact" label="收货联系人" width="110" /><el-table-column prop="arrivalPhone" label="收货联系人电话" width="140" /><el-table-column prop="startDate" label="开始时间" width="160" sortable/><el-table-column prop="endDate" label="结束时间" width="160" sortable/><el-table-column prop="unitPrice" label="单价" width="90" /><el-table-column prop="freight" label="运费" width="100" /><el-table-column prop="otherFeeTotal" label="其他费用合计" width="120" /><el-table-column prop="freightTotal" label="运费合计" width="100" /><el-table-column prop="remark" label="备注" min-width="160" /><el-table-column label="操作" width="80">-</el-table-column></el-table>
<el-pagination v-model:current-page="detailPage.current" v-model:page-size="detailPage.size" layout="total, prev, pager, next, sizes" :page-sizes="[10, 20, 50]" :total="detailPage.total" @current-change="loadDetails" @size-change="loadDetails" /> <el-pagination v-model:current-page="detailPage.current" v-model:page-size="detailPage.size" layout="total, prev, pager, next, sizes" :page-sizes="[10, 20, 50]" :total="detailPage.total" @current-change="loadDetails" @size-change="loadDetails" />
</el-dialog> </el-dialog>

View File

@@ -297,8 +297,8 @@
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column label="数据来源" prop="dataSource" min-width="130" show-overflow-tooltip /> <el-table-column label="数据来源" prop="dataSource" min-width="130" show-overflow-tooltip />
<el-table-column label="创建时间" prop="createTime" min-width="170" show-overflow-tooltip /> <el-table-column label="创建时间" prop="createTime" min-width="170" show-overflow-tooltip sortable/>
<el-table-column label="更新时间" prop="updateTime" min-width="170" show-overflow-tooltip /> <el-table-column label="更新时间" prop="updateTime" min-width="170" show-overflow-tooltip sortable/>
<el-table-column <el-table-column
label="过程节点" label="过程节点"
prop="currentProcessNode" prop="currentProcessNode"
@@ -805,7 +805,7 @@
<el-table-column prop="weight" label="重量" min-width="120" /> <el-table-column prop="weight" label="重量" min-width="120" />
<el-table-column prop="volume" label="体积" min-width="120" /> <el-table-column prop="volume" label="体积" min-width="120" />
<el-table-column prop="quantity" label="数量" min-width="100" /> <el-table-column prop="quantity" label="数量" min-width="100" />
<el-table-column prop="planDate" label="计划日期" min-width="130" /> <el-table-column prop="planDate" label="计划日期" min-width="130" sortable/>
<el-table-column prop="unitPrice" label="货物单价" min-width="150" /> <el-table-column prop="unitPrice" label="货物单价" min-width="150" />
<el-table-column prop="materialCode" label="物料编码" min-width="130" /> <el-table-column prop="materialCode" label="物料编码" min-width="130" />
<el-table-column prop="equipmentCode" label="设备编码" min-width="130" /> <el-table-column prop="equipmentCode" label="设备编码" min-width="130" />

View File

@@ -511,7 +511,7 @@
<template #default="{ row }">{{ formatFileSize(row.size) }}</template> <template #default="{ row }">{{ formatFileSize(row.size) }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="uploadUserName" label="上传人" min-width="140" align="center" /> <el-table-column prop="uploadUserName" label="上传人" min-width="140" align="center" />
<el-table-column prop="uploadTime" label="上传时间" min-width="170" align="center" /> <el-table-column prop="uploadTime" label="上传时间" min-width="170" align="center" sortable/>
<el-table-column label="操作" width="110" align="center"> <el-table-column label="操作" width="110" align="center">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-link type="primary" @click="downloadAttachment(row)">下载</el-link> <el-link type="primary" @click="downloadAttachment(row)">下载</el-link>
@@ -543,7 +543,7 @@
class="project-apply-form__table" class="project-apply-form__table"
> >
<el-table-column type="index" label="序号" width="80" align="center" /> <el-table-column type="index" label="序号" width="80" align="center" />
<el-table-column prop="changeDate" label="变更日期" min-width="140" align="center" /> <el-table-column prop="changeDate" label="变更日期" min-width="140" align="center" sortable/>
<el-table-column prop="changeType" label="变更类型" min-width="160" align="center" /> <el-table-column prop="changeType" label="变更类型" min-width="160" align="center" />
<el-table-column prop="handler" label="经办人" min-width="120" align="center" /> <el-table-column prop="handler" label="经办人" min-width="120" align="center" />
<el-table-column <el-table-column

View File

@@ -1,5 +1,5 @@
<template> <template>
<business-crud-page :api="api" :config="config" :crud-option="option" /> <business-crud-page :api="api" :config="config" :crud-option="option" :menu-width="250" />
</template> </template>
<script> <script>

View File

@@ -99,7 +99,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
labelWidth: 'auto', labelWidth: 'auto',
dialogType: 'drawer', dialogType: 'drawer',
column: [ column: [
@@ -182,6 +182,7 @@ export default {
{ {
label: '记录时间', label: '记录时间',
prop: 'recordTime', prop: 'recordTime',
sortable: true,
width: '180', width: '180',
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -129,6 +129,7 @@ const option = reactive({
{ {
label: '通知日期', label: '通知日期',
prop: 'releaseTime', prop: 'releaseTime',
sortable: true,
type: 'date', type: 'date',
gridRow: true, gridRow: true,
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -59,6 +59,7 @@ export default {
height: 'auto', height: 'auto',
calcHeight: 32, calcHeight: 32,
dialogWidth: 950, dialogWidth: 950,
menuWidth: 180,
tip: false, tip: false,
searchShow: true, searchShow: true,
searchMenuSpan: 24, searchMenuSpan: 24,
@@ -130,6 +131,7 @@ export default {
{ {
label: '通知日期', label: '通知日期',
prop: 'releaseTime', prop: 'releaseTime',
sortable: true,
type: 'date', type: 'date',
gridRow: true, gridRow: true,
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -73,7 +73,7 @@ export default {
addBtn: false, addBtn: false,
viewBtn: false, viewBtn: false,
dialogWidth: 900, dialogWidth: 900,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -107,6 +107,7 @@ export default {
{ {
label: '开始时间', label: '开始时间',
prop: 'startTime', prop: 'startTime',
sortable: true,
width: 170, width: 170,
}, },
], ],

View File

@@ -156,7 +156,7 @@ export default {
viewBtn: false, viewBtn: false,
delBtn: false, delBtn: false,
dialogWidth: 900, dialogWidth: 900,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -210,6 +210,7 @@ export default {
{ {
label: '部署时间', label: '部署时间',
prop: 'deploymentTime', prop: 'deploymentTime',
sortable: true,
width: 170, width: 170,
}, },
], ],

View File

@@ -213,7 +213,7 @@ export default {
viewBtn: false, viewBtn: false,
delBtn: false, delBtn: false,
dialogWidth: 900, dialogWidth: 900,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
size: 'default', size: 'default',
searchSize: 'default', searchSize: 'default',
@@ -243,11 +243,13 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'created', prop: 'created',
sortable: true,
overHidden: true, overHidden: true,
}, },
{ {
label: '更新时间', label: '更新时间',
prop: 'lastUpdated', prop: 'lastUpdated',
sortable: true,
overHidden: true, overHidden: true,
}, },
], ],

View File

@@ -51,7 +51,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogType: 'drawer', dialogType: 'drawer',
column: [ column: [
{ {
@@ -91,6 +91,7 @@ export default {
{ {
label: '日志时间', label: '日志时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
width: '180', width: '180',
}, },
{ {

View File

@@ -51,7 +51,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogType: 'drawer', dialogType: 'drawer',
column: [ column: [
{ {
@@ -88,6 +88,7 @@ export default {
{ {
label: '日志时间', label: '日志时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
width: '180', width: '180',
}, },
{ {

View File

@@ -51,7 +51,7 @@ export default {
editBtn: false, editBtn: false,
addBtn: false, addBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogType: 'drawer', dialogType: 'drawer',
column: [ column: [
{ {
@@ -88,6 +88,7 @@ export default {
{ {
label: '日志时间', label: '日志时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
width: '180', width: '180',
}, },
{ {

View File

@@ -84,10 +84,12 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
}, },
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
}, },
], ],
}, },

View File

@@ -92,7 +92,7 @@ export default {
viewBtn: true, viewBtn: true,
selection: true, selection: true,
grid: true, grid: true,
menuWidth: 160, menuWidth: 180,
labelWidth: 'auto', labelWidth: 'auto',
dialogWidth: 880, dialogWidth: 880,
dialogClickModal: false, dialogClickModal: false,

View File

@@ -91,7 +91,7 @@ export default {
viewBtn: true, viewBtn: true,
selection: true, selection: true,
grid: true, grid: true,
menuWidth: 160, menuWidth: 180,
labelWidth: 'auto', labelWidth: 'auto',
dialogWidth: 880, dialogWidth: 880,
dialogClickModal: false, dialogClickModal: false,

View File

@@ -100,7 +100,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="currentNode" label="当前节点" min-width="130" /> <el-table-column prop="currentNode" label="当前节点" min-width="130" />
<el-table-column prop="currentProcessor" label="当前处理人" min-width="130" /> <el-table-column prop="currentProcessor" label="当前处理人" min-width="130" />
<el-table-column prop="approvedTime" label="审核通过时间" min-width="170" /> <el-table-column prop="approvedTime" label="审核通过时间" min-width="170" sortable/>
<el-table-column prop="status" label="状态" width="90"> <el-table-column prop="status" label="状态" width="90">
<template #default="{ row }">{{ Number(row.status) === 1 ? '启用' : '停用' }}</template> <template #default="{ row }">{{ Number(row.status) === 1 ? '启用' : '停用' }}</template>
</el-table-column> </el-table-column>
@@ -729,4 +729,23 @@ export default {
justify-content: flex-end; justify-content: flex-end;
margin-top: 12px; margin-top: 12px;
} }
/* 操作列兜底:确保「查看 / 编辑 / 删除 / 新增子项」横向排列并保留 8px 间距,
避免退化成 block 导致操作项竖排错位。全局样式已统一处理,此处为双保险。 */
:deep(.avue-crud__menu) {
display: inline-flex !important;
flex-wrap: wrap;
gap: 8px;
align-items: center;
justify-content: flex-start;
width: 100%;
text-align: left;
> .el-button,
> .el-link,
> .el-dropdown {
flex-shrink: 0;
display: inline-flex;
}
}
</style> </style>

View File

@@ -88,7 +88,7 @@ export default {
index: true, index: true,
selection: true, selection: true,
viewBtn: true, viewBtn: true,
menuWidth: 320, menuWidth: 220,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {

View File

@@ -81,7 +81,7 @@
</el-table-column> </el-table-column>
</template> </template>
<!-- 操作栏模块 --> <!-- 操作栏模块 -->
<el-table-column prop="menu" label="操作" :width="220" align="center"> <el-table-column prop="menu" label="操作" :width="180" align="center">
<template #="{ row }"> <template #="{ row }">
<el-link <el-link
v-if="this.permissionList.viewBtn" v-if="this.permissionList.viewBtn"

View File

@@ -237,7 +237,7 @@ export default {
selection: true, selection: true,
addBtn: false, addBtn: false,
viewBtn: true, viewBtn: true,
menuWidth: 160, menuWidth: 240,
dialogWidth: 900, dialogWidth: 900,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
@@ -308,6 +308,7 @@ export default {
{ {
label: '过期时间', label: '过期时间',
prop: 'expireTime', prop: 'expireTime',
sortable: true,
width: 180, width: 180,
slot: true, slot: true,
addDisplay: false, addDisplay: false,
@@ -350,6 +351,7 @@ export default {
label: '过期时间', label: '过期时间',
labelTip: '代表租户可使用的最后日期,若不限制则默认为空', labelTip: '代表租户可使用的最后日期,若不限制则默认为空',
prop: 'expireTime', prop: 'expireTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -171,7 +171,7 @@ export default {
index: true, index: true,
viewBtn: true, viewBtn: true,
selection: true, selection: true,
menuWidth: 160, menuWidth: 180,
dialogWidth: 900, dialogWidth: 900,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [

View File

@@ -41,7 +41,7 @@
>批量删除 >批量删除
</el-button> </el-button>
</template> </template>
<template #expireStatus-search> <template #search-menu>
<div class="driver-page__expiry-tags"> <div class="driver-page__expiry-tags">
<el-check-tag <el-check-tag
v-for="item in expiryTagOptions" v-for="item in expiryTagOptions"
@@ -54,10 +54,13 @@
</div> </div>
</template> </template>
<template #driverName="{ row }"> <template #driverName="{ row }">
<div class="driver-page__identity">
<el-link type="primary" @click="openDriver(row, true)">{{ row.driverName }}</el-link> <el-link type="primary" @click="openDriver(row, true)">{{ row.driverName }}</el-link>
</template>
<template #idCardNo="{ row }">
<span>{{ row.idCardNo || '-' }}</span> <span>{{ row.idCardNo || '-' }}</span>
</div> </template>
<template #organizationName="{ row }">
{{ String(row.organizationName || '').replace(/^[\s\u3000]+/, '') }}
</template> </template>
<template #status="{ row }"> <template #status="{ row }">
<el-tag :type="row.status === 1 ? 'primary' : 'info'"> <el-tag :type="row.status === 1 ? 'primary' : 'info'">
@@ -756,11 +759,11 @@ export default {
formatDeptOptions(tree = [], level = 0) { formatDeptOptions(tree = [], level = 0) {
const result = []; const result = [];
tree.forEach(item => { tree.forEach(item => {
const label = item.title || item.deptName || item.name; const rawLabel = item.title || item.deptName || item.name;
result.push({ result.push({
label: `${' '.repeat(level)}${label}`, label: `${' '.repeat(level)}${rawLabel}`,
value: label, value: rawLabel,
rawLabel: label, rawLabel,
id: item.id || item.value, id: item.id || item.value,
}); });
if (item.children && item.children.length) { if (item.children && item.children.length) {
@@ -1341,19 +1344,14 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.driver-page { .driver-page {
&__identity {
display: flex;
flex-direction: column;
gap: 4px;
line-height: 20px;
}
&__expiry-tags { &__expiry-tags {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
width: 100%; order: -1;
margin-right: auto;
min-width: 0;
:deep(.el-check-tag) { :deep(.el-check-tag) {
margin: 0; margin: 0;
@@ -1442,11 +1440,4 @@ export default {
font-weight: 600; font-weight: 600;
} }
@media (max-width: 1200px) {
.driver-page {
&__expiry-tags {
flex: 1;
}
}
}
</style> </style>

View File

@@ -61,6 +61,9 @@
{{ row.shipName }} {{ row.shipName }}
</el-button> </el-button>
</template> </template>
<template #organizationName="{ row }">
{{ String(row.organizationName || '').replace(/^[\s\u3000]+/, '') }}
</template>
<template #status="{ row }"> <template #status="{ row }">
<el-tag :type="row.status === 1 ? 'primary' : 'info'"> <el-tag :type="row.status === 1 ? 'primary' : 'info'">
{{ row.status === 1 ? '启用' : '停用' }} {{ row.status === 1 ? '启用' : '停用' }}
@@ -756,11 +759,11 @@ export default {
flattenDeptOptions(tree = [], level = 0) { flattenDeptOptions(tree = [], level = 0) {
const result = []; const result = [];
tree.forEach(item => { tree.forEach(item => {
const label = item.title || item.deptName || item.name; const rawLabel = item.title || item.deptName || item.name;
result.push({ result.push({
label: `${' '.repeat(level)}${label}`, label: `${' '.repeat(level)}${rawLabel}`,
value: label, value: rawLabel,
rawLabel: label, rawLabel,
id: item.id || item.value, id: item.id || item.value,
}); });
if (item.children && item.children.length) { if (item.children && item.children.length) {

View File

@@ -58,6 +58,9 @@
{{ row.plateNo }} {{ row.plateNo }}
</el-button> </el-button>
</template> </template>
<template #organizationName="{ row }">
{{ String(row.organizationName || '').replace(/^[\s\u3000]+/, '') }}
</template>
<template #status="{ row }"> <template #status="{ row }">
<el-tag :type="row.status === 1 ? 'primary' : 'info'"> <el-tag :type="row.status === 1 ? 'primary' : 'info'">
{{ row.status === 1 ? '启用' : '停用' }} {{ row.status === 1 ? '启用' : '停用' }}
@@ -761,11 +764,11 @@ export default {
flattenDeptOptions(tree = [], level = 0) { flattenDeptOptions(tree = [], level = 0) {
const result = []; const result = [];
tree.forEach(item => { tree.forEach(item => {
const label = item.title || item.deptName || item.name; const rawLabel = item.title || item.deptName || item.name;
result.push({ result.push({
label: `${' '.repeat(level)}${label}`, label: `${' '.repeat(level)}${rawLabel}`,
value: label, value: rawLabel,
rawLabel: label, rawLabel,
id: item.id || item.value, id: item.id || item.value,
}); });
if (item.children && item.children.length) { if (item.children && item.children.length) {

View File

@@ -72,7 +72,7 @@ export default {
index: true, index: true,
selection: true, selection: true,
viewBtn: true, viewBtn: true,
menuWidth: 160, menuWidth: 180,
dialogWidth: 880, dialogWidth: 880,
column: [ column: [
{ {

View File

@@ -119,7 +119,7 @@ export default {
index: true, index: true,
selection: true, selection: true,
viewBtn: true, viewBtn: true,
menuWidth: 160, menuWidth: 180,
dialogWidth: 880, dialogWidth: 880,
column: [ column: [
{ {

View File

@@ -124,7 +124,7 @@ export default {
selection: true, selection: true,
viewBtn: true, viewBtn: true,
height: 300, height: 300,
menuWidth: 160, menuWidth: 180,
dialogWidth: 880, dialogWidth: 880,
column: [ column: [
{ {

View File

@@ -33,6 +33,7 @@ export default {
{ {
label: '申请日期', label: '申请日期',
prop: 'date', prop: 'date',
sortable: true,
type: 'date', type: 'date',
row: true, row: true,
}, },

View File

@@ -103,6 +103,7 @@ export default {
{ {
label: '申请日期', label: '申请日期',
prop: 'date', prop: 'date',
sortable: true,
type: 'date', type: 'date',
span: 14, span: 14,
row: true, row: true,

View File

@@ -429,7 +429,7 @@ export default {
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 160, menuWidth: 180,
column: [ column: [
{ {
label: '评分表名称', label: '评分表名称',
@@ -449,6 +449,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -1022,8 +1023,8 @@ export default {
} }
.base-form { .base-form {
max-width: 1080px; max-width: 60%;
margin: 10px auto 28px; padding: 24px;
} }
.section-head { .section-head {

View File

@@ -151,9 +151,7 @@
:disabled="readonly" :disabled="readonly"
class="archive-form" class="archive-form"
> >
<div class="section-title dialog-section-title">基本信息</div> <section-card title="工商信息">
<div class="archive-form__group">
<div class="dialog-section-title archive-form__group-title">工商信息</div>
<el-row :gutter="18"> <el-row :gutter="18">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="客商编号" prop="customerCode"> <el-form-item label="客商编号" prop="customerCode">
@@ -297,10 +295,9 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</div> </section-card>
<div class="archive-form__group"> <section-card title="联系信息">
<div class="dialog-section-title archive-form__group-title">联系信息</div>
<el-row :gutter="18"> <el-row :gutter="18">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="客商负责人" prop="principal"> <el-form-item label="客商负责人" prop="principal">
@@ -329,10 +326,9 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</div> </section-card>
<div class="archive-form__group"> <section-card title="财务/信用信息">
<div class="dialog-section-title archive-form__group-title">财务/信用信息</div>
<el-row :gutter="18"> <el-row :gutter="18">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="注册资金(万元)" prop="registeredCapital"> <el-form-item label="注册资金(万元)" prop="registeredCapital">
@@ -377,10 +373,9 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</div> </section-card>
<div class="archive-form__group"> <section-card title="其他信息">
<div class="dialog-section-title archive-form__group-title">其他信息</div>
<el-row :gutter="18"> <el-row :gutter="18">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
@@ -393,24 +388,24 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</div> </section-card>
</el-form> </el-form>
<el-tabs v-model="activeTab" class="archive-tabs"> <el-tabs v-model="activeTab" class="archive-tabs">
<el-tab-pane label="评分表" name="scores"> <el-tab-pane label="评分表" name="scores">
<div class="section-head"> <section-card>
<span></span> <template #extra>
<el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="addScore"> <el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="addScore">
添加评分记录 添加评分记录
</el-button> </el-button>
</div> </template>
<el-table :data="scoreTableData" border class="score-list-table"> <el-table :data="scoreTableData" border class="score-list-table">
<el-table-column label="序号" width="90" align="center"> <el-table-column label="序号" width="90" align="center">
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.__index }}</span> <span>{{ row.__index }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="评分日期" min-width="150" align="center"> <el-table-column label="评分日期" min-width="150" align="center" sortable>
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.scoreDate }}</span> <span>{{ row.scoreDate }}</span>
</template> </template>
@@ -470,14 +465,15 @@
@size-change="handleScoreSizeChange" @size-change="handleScoreSizeChange"
@current-change="handleScoreCurrentChange" @current-change="handleScoreCurrentChange"
/> />
</section-card>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="联系人" name="contacts"> <el-tab-pane label="联系人" name="contacts">
<div class="section-head"> <section-card>
<span></span> <template #extra>
<el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="openContact()"> <el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="openContact()">
新增联系人 新增联系人
</el-button> </el-button>
</div> </template>
<el-table :data="contactTableData" border class="contact-table"> <el-table :data="contactTableData" border class="contact-table">
<el-table-column label="序号" prop="__index" width="90" align="center" /> <el-table-column label="序号" prop="__index" width="90" align="center" />
<el-table-column label="联系人姓名" prop="contactName" min-width="150" /> <el-table-column label="联系人姓名" prop="contactName" min-width="150" />
@@ -509,14 +505,15 @@
@size-change="size => handleDetailSizeChange('contact', size)" @size-change="size => handleDetailSizeChange('contact', size)"
@current-change="page => handleDetailCurrentChange('contact', page)" @current-change="page => handleDetailCurrentChange('contact', page)"
/> />
</section-card>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="收款信息" name="receiptAccounts"> <el-tab-pane label="收款信息" name="receiptAccounts">
<div class="section-head"> <section-card>
<span></span> <template #extra>
<el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="openReceipt()"> <el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="openReceipt()">
新增收款信息 新增收款信息
</el-button> </el-button>
</div> </template>
<el-table :data="receiptTableData" border class="receipt-table"> <el-table :data="receiptTableData" border class="receipt-table">
<el-table-column label="序号" prop="__index" width="90" align="center" /> <el-table-column label="序号" prop="__index" width="90" align="center" />
<el-table-column label="收款单位名称" prop="accountName" min-width="180" /> <el-table-column label="收款单位名称" prop="accountName" min-width="180" />
@@ -539,14 +536,15 @@
@size-change="size => handleDetailSizeChange('receipt', size)" @size-change="size => handleDetailSizeChange('receipt', size)"
@current-change="page => handleDetailCurrentChange('receipt', page)" @current-change="page => handleDetailCurrentChange('receipt', page)"
/> />
</section-card>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="发票信息" name="invoices"> <el-tab-pane label="发票信息" name="invoices">
<div class="section-head"> <section-card>
<span></span> <template #extra>
<el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="openInvoice()"> <el-button type="primary" icon="el-icon-plus" v-if="!readonly" @click="openInvoice()">
新增发票信息 新增发票信息
</el-button> </el-button>
</div> </template>
<el-table :data="invoiceTableData" border class="invoice-table"> <el-table :data="invoiceTableData" border class="invoice-table">
<el-table-column label="序号" prop="__index" width="90" align="center" /> <el-table-column label="序号" prop="__index" width="90" align="center" />
<el-table-column label="收票方名称" prop="invoiceTitle" min-width="180" /> <el-table-column label="收票方名称" prop="invoiceTitle" min-width="180" />
@@ -575,12 +573,12 @@
@size-change="size => handleDetailSizeChange('invoice', size)" @size-change="size => handleDetailSizeChange('invoice', size)"
@current-change="page => handleDetailCurrentChange('invoice', page)" @current-change="page => handleDetailCurrentChange('invoice', page)"
/> />
</section-card>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<div class="customer-material-section"> <section-card title="客商材料">
<div class="section-head"> <template #extra>
<div class="section-title dialog-section-title">客商材料</div>
<div v-if="!readonly" class="section-actions"> <div v-if="!readonly" class="section-actions">
<el-button icon="el-icon-download" @click="downloadAttachments">批量下载</el-button> <el-button icon="el-icon-download" @click="downloadAttachments">批量下载</el-button>
<el-button type="primary" icon="el-icon-plus" @click="addAttachment" <el-button type="primary" icon="el-icon-plus" @click="addAttachment"
@@ -590,7 +588,7 @@
OCR上传识别 OCR上传识别
</el-button> </el-button>
</div> </div>
</div> </template>
<el-alert <el-alert
type="info" type="info"
:closable="false" :closable="false"
@@ -644,7 +642,7 @@
<span>{{ row.uploadUserName || '-' }}</span> <span>{{ row.uploadUserName || '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="上传时间" min-width="170"> <el-table-column label="上传时间" min-width="170" sortable>
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.uploadTime || '-' }}</span> <span>{{ row.uploadTime || '-' }}</span>
</template> </template>
@@ -657,17 +655,16 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </section-card>
<div class="change-record-section"> <section-card title="变更记录">
<div class="section-title dialog-section-title">变更记录</div>
<el-table :data="archiveForm.changeRecords" border> <el-table :data="archiveForm.changeRecords" border>
<el-table-column label="序号" type="index" width="90" align="center" /> <el-table-column label="序号" type="index" width="90" align="center" />
<el-table-column label="变更日期" prop="changeTime" min-width="170" /> <el-table-column label="变更日期" prop="changeTime" min-width="170" sortable />
<el-table-column label="变更内容" prop="changeContent" min-width="260" /> <el-table-column label="变更内容" prop="changeContent" min-width="260" />
<el-table-column label="变更账号" prop="changeUserName" min-width="160" /> <el-table-column label="变更账号" prop="changeUserName" min-width="160" />
</el-table> </el-table>
</div> </section-card>
<template #footer> <template #footer>
<el-button @click="archiveBox = false">{{ readonly ? '关闭' : '取消' }}</el-button> <el-button @click="archiveBox = false">{{ readonly ? '关闭' : '取消' }}</el-button>
@@ -838,7 +835,7 @@
label-width="120px" label-width="120px"
class="invoice-form" class="invoice-form"
> >
<div class="invoice-form__section-title">发票信息</div> <section-card title="发票信息">
<el-row :gutter="34"> <el-row :gutter="34">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="纳税人识别号" prop="taxNo"> <el-form-item label="纳税人识别号" prop="taxNo">
@@ -887,7 +884,9 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div class="invoice-form__section-title">邮寄信息</div> </section-card>
<section-card title="邮寄信息">
<el-row :gutter="34"> <el-row :gutter="34">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="收件人姓名" prop="receiverName"> <el-form-item label="收件人姓名" prop="receiverName">
@@ -917,6 +916,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</section-card>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="invoice-dialog__footer-actions"> <div class="invoice-dialog__footer-actions">
@@ -1075,7 +1075,7 @@
<el-input <el-input
v-model="detail.reviewScore" v-model="detail.reviewScore"
maxlength="10" maxlength="10"
:disabled="readonly" :disabled="readonly || !hasPermission('customer_type_re_cert')"
@input="value => handleScoreDetailScoreInput(detail, 'reviewScore', value)" @input="value => handleScoreDetailScoreInput(detail, 'reviewScore', value)"
> >
<template #suffix>分</template> <template #suffix>分</template>
@@ -1105,9 +1105,8 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="score-material-section"> <section-card title="证明材料" class="score-material-card">
<div class="score-material-section__head"> <template #extra>
<div class="dialog-section-title">证明材料</div>
<vehicle-attachment-upload <vehicle-attachment-upload
v-if="!readonly" v-if="!readonly"
v-model="scoreAttachmentFiles" v-model="scoreAttachmentFiles"
@@ -1116,7 +1115,7 @@
:show-tip="false" :show-tip="false"
@success="handleScoreAttachmentUploadSuccess" @success="handleScoreAttachmentUploadSuccess"
/> />
</div> </template>
<el-table :data="scoreAttachmentFiles" border class="score-material-table"> <el-table :data="scoreAttachmentFiles" border class="score-material-table">
<el-table-column label="序号" type="index" width="90" align="center" /> <el-table-column label="序号" type="index" width="90" align="center" />
<el-table-column label="文件名" prop="name" min-width="220" /> <el-table-column label="文件名" prop="name" min-width="220" />
@@ -1131,7 +1130,7 @@
<span>{{ row.uploadUserName || '-' }}</span> <span>{{ row.uploadUserName || '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="上传时间" min-width="180" align="center"> <el-table-column label="上传时间" min-width="180" align="center" sortable>
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.uploadTime || '-' }}</span> <span>{{ row.uploadTime || '-' }}</span>
</template> </template>
@@ -1144,11 +1143,17 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </section-card>
<template #footer> <template #footer>
<el-button type="primary" v-if="!readonly" @click="saveScoreDetail">保存</el-button> <el-button type="primary" v-if="!readonly" @click="saveScoreDetail">保存</el-button>
<el-button type="primary" v-if="!readonly" @click="confirmReviewScore">复评确认</el-button> <el-button
v-if="!readonly && hasPermission('customer_type_re_cert')"
type="primary"
@click="confirmReviewScore"
>
复评确认
</el-button>
<el-button type="primary" @click="scoreBox = false">关闭</el-button> <el-button type="primary" @click="scoreBox = false">关闭</el-button>
</template> </template>
</el-dialog> </el-dialog>
@@ -1425,7 +1430,7 @@ export default {
editBtn: false, editBtn: false,
selection: true, selection: true,
dialogClickModal: false, dialogClickModal: false,
menuWidth: 320, menuWidth: 280,
column: [ column: [
{ {
label: '客商编号', label: '客商编号',
@@ -1532,6 +1537,7 @@ export default {
{ {
label: '审核通过时间', label: '审核通过时间',
prop: 'approvedTime', prop: 'approvedTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -3471,30 +3477,7 @@ export default {
} }
} }
.archive-form__group { business-term-field,
padding: 16px 20px;
margin-bottom: 16px;
background-color: #f0f2f5;
border-radius: 8px;
.dialog-section-title {
margin: 0 0 12px;
font-size: 14px;
font-weight: 500;
color: #303133;
}
// 内层白色卡片:字段区域白底,浮于灰色分组块之上
> .el-row {
margin: 0;
padding: 18px 16px 4px;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
}
.business-term-field,
.archive-form__address { .archive-form__address {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -3526,24 +3509,6 @@ export default {
} }
} }
.section-title {
margin: 16px 0 12px;
font-size: 18px;
font-weight: 700;
color: #303133;
}
.section-head {
display: flex;
align-items: center;
justify-content: space-between;
margin: 18px 0 12px;
.section-title {
margin: 0;
}
}
.section-actions { .section-actions {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@@ -3681,13 +3646,7 @@ export default {
} }
} }
.customer-material-section { // 客商材料、变更记录已改用全局 <section-card> 组件,无需额外 margin-top
margin-top: 18px;
}
.change-record-section {
margin-top: 18px;
}
.score-list-table, .score-list-table,
.contact-table, .contact-table,
@@ -3714,25 +3673,6 @@ export default {
.invoice-form { .invoice-form {
max-width: none; max-width: none;
&__section-title {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
margin: 8px 0 20px;
font-size: 16px;
font-weight: 700;
color: #303133;
&::before,
&::after {
flex: 1;
height: 1px;
content: '';
background-color: #dcdfe6;
}
}
} }
.contact-form__address { .contact-form__address {
@@ -3843,20 +3783,7 @@ export default {
} }
} }
.score-material-section { .score-material-card {
margin: 26px 36px 0;
}
.score-material-section__head {
display: flex;
align-items: center;
gap: 18px;
margin-bottom: 16px;
.dialog-section-title {
margin: 0;
}
:deep(.vehicle-attachment-upload) { :deep(.vehicle-attachment-upload) {
width: auto; width: auto;
} }

View File

@@ -246,6 +246,7 @@ export default {
{ {
label: '保养时间', label: '保养时间',
prop: 'maintenanceTime', prop: 'maintenanceTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -323,6 +324,7 @@ export default {
{ {
label: '下次保养时间', label: '下次保养时间',
prop: 'nextMaintenanceTime', prop: 'nextMaintenanceTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -361,6 +363,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -411,6 +414,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -234,6 +234,7 @@ export default {
{ {
label: '维修时间', label: '维修时间',
prop: 'maintenanceTime', prop: 'maintenanceTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -299,6 +300,7 @@ export default {
{ {
label: '出厂时间', label: '出厂时间',
prop: 'factoryTime', prop: 'factoryTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -348,6 +350,7 @@ export default {
{ {
label: '创建时间', label: '创建时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
type: 'date', type: 'date',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',
@@ -398,6 +401,7 @@ export default {
{ {
label: '更新时间', label: '更新时间',
prop: 'updateTime', prop: 'updateTime',
sortable: true,
type: 'datetime', type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss', format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'YYYY-MM-DD HH:mm:ss',

View File

@@ -107,7 +107,7 @@ export default {
viewBtn: false, viewBtn: false,
delBtn: false, delBtn: false,
dialogWidth: 900, dialogWidth: 900,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -144,6 +144,7 @@ export default {
{ {
label: '申请时间', label: '申请时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
width: 180, width: 180,
}, },
], ],

View File

@@ -101,7 +101,7 @@ export default {
viewBtn: false, viewBtn: false,
delBtn: false, delBtn: false,
dialogWidth: 900, dialogWidth: 900,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -138,6 +138,7 @@ export default {
{ {
label: '申请时间', label: '申请时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
width: 180, width: 180,
}, },
], ],

View File

@@ -104,7 +104,7 @@ export default {
viewBtn: false, viewBtn: false,
delBtn: false, delBtn: false,
dialogWidth: 900, dialogWidth: 900,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -147,6 +147,7 @@ export default {
{ {
label: '申请时间', label: '申请时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
width: 180, width: 180,
}, },
], ],

View File

@@ -116,7 +116,7 @@ export default {
addBtn: false, addBtn: false,
viewBtn: false, viewBtn: false,
delBtn: false, delBtn: false,
menuWidth: 160, menuWidth: 180,
dialogWidth: 900, dialogWidth: 900,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
@@ -165,6 +165,7 @@ export default {
{ {
label: '部署时间', label: '部署时间',
prop: 'deploymentTime', prop: 'deploymentTime',
sortable: true,
width: 170, width: 170,
}, },
], ],

View File

@@ -107,7 +107,7 @@ export default {
viewBtn: false, viewBtn: false,
delBtn: false, delBtn: false,
dialogWidth: 900, dialogWidth: 900,
menuWidth: 160, menuWidth: 180,
dialogClickModal: false, dialogClickModal: false,
column: [ column: [
{ {
@@ -144,6 +144,7 @@ export default {
{ {
label: '申请时间', label: '申请时间',
prop: 'createTime', prop: 'createTime',
sortable: true,
width: 180, width: 180,
}, },
], ],

View File

@@ -62,11 +62,11 @@ export default ({
server: { server: {
port: 2888, port: 2888,
proxy: { proxy: {
// 开发期同源代理:浏览器请求 /api/xxx -> 由 Vite 转发到 http://172.16.203.228:8000/api/xxx
// 必须保留 /api 前缀(不要 rewrite 去掉),与 openresty/nginx 期望的路径一致,从而规避跨域(CORS)问题
'/api': { '/api': {
target: 'http://172.16.203.228:8000', target: 'http://localhost',
//target: 'https://saber3.bladex.cn/api',
changeOrigin: true, changeOrigin: true,
rewrite: path => path.replace(/^\/api/, ''),
}, },
}, },
}, },

File diff suppressed because one or more lines are too long