Commit Graph

414 Commits

Author SHA1 Message Date
b2894lxlx ea797356ce ✨ 完善组织人员增量同步与用户管理交互
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-10 13:56:29 +08:00
b2894lxlx eaece0209d ✨ 合同结算币种联动计费与运单计价单位,并完善合同与派车交互
结算币种驱动计费单价单位及运单/计划/总单计价单位;同步合同编号预览、部门前缀配置、派车备注与查看弹窗等交互优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-10 00:53:17 +08:00
b2894lxlx a1da644c49 ✨ 优化港口地图回填、合同展示与运单导入空值
地图选点回填国家省市区;合同选择显示编号/名称;常用数据组织筛选修正;运单详情将-1费用字段显示为空。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-09 17:07:56 +08:00
b2894lxlx 570fbeb537 🐛 运单轨迹与实时定位WGS-84转GCJ-02后再绘制高德地图
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-08 19:37:27 +08:00
b2894lxlx d1f804056e ✨ 审核通过后保留流程按钮并跳转MK页面
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-08 18:57:49 +08:00
weicw-dshsa 3320155416 ✨ 打卡照片按凭证类型分组,编辑弹窗去掉打卡状态开关
- 打卡记录照片按类型分组展示与上传,每个类型各自最多 9 张,组内第一张标「主图」
- 打卡照片是每个打卡节点必有的类型,不由过程配置决定,与各凭证类型并列且互不替代
- 附件区抽出 punch-record-photos 组件,运单详情与配载单详情共用;编辑态沿用 96px 固定方图
- 弹窗上传体积上限由 5MB 提到 20MB,与小程序一致
- 弹窗不再提供「打卡状态」开关:未打卡的记录点「补卡」进来,保存即补出一条已打卡流水
2026-10-07 16:57:46 +08:00
weicw-dshsa 8ad53894b9 ✨ 运单详情编辑打卡记录支持地图选点定打卡地址
打卡地址改为只读输入框,点击弹出地图选址(复用 address-map-picker,
与空港、港口、维修记录等处同一套),确定后回填地址与经纬度。
地址与经纬度成套更新——只回填地址会让坐标停留在司机打卡时的旧点上。
经纬度输入框保留,仍可手工微调。
2026-10-06 13:55:57 +08:00
weicw-dshsa 360147e46a 🐛 修复编辑打卡记录无附件时附件上传入口消失
打卡照片原先按过程配置的「上传凭证」取舍:配置没勾该开关、记录里又没有照片的
节点,整块照片区连带上传入口都不渲染,管理端再也补不了附件。
过程配置的「上传凭证」是司机端的要求,后端保存打卡记录时不校验它,
管理端补录的角色改为始终展示照片列表与上传入口。
2026-10-06 13:45:04 +08:00
weicw-dshsa b00e12c9bb ✨ 异常上报弹窗附件支持在线预览 2026-10-06 13:04:53 +08:00
weicw-dshsa 7543a8c06b ✨ 打卡时间轴不再为接单节点提供编辑入口
接单节点的完成由运单的接单事实决定,不落打卡流水:补录或取消打卡都改不动它,
放出去只会造出一条与运单事实打架的流水(时间轴显示已打卡、运单却还没人接单)。
后端已拒绝该节点的补录与取消,前端同步隐藏「编辑」链接。

判据与后端一致(key=accept / name=接单),优先取过程配置里的节点、回退记录上的节点标识。
2026-10-06 12:36:37 +08:00
weicw-dshsa 1699ae873f ✨ 运单详情打卡详情支持编辑打卡记录
打卡时间轴每条记录后面加「编辑」文本按钮,弹窗回显当前填写的信息,可改可存;
打卡状态也在可编辑之列。

- 字段按过程配置取舍:打卡定位决定地址/经纬度,上传货量类型决定重量/体积/数量,
  上传凭证决定照片;记录里已有值的项即使配置后来改小也保留,否则历史数据再也改不掉
- 接单/回单是确认节点,过程配置里没有打卡定位开关,不采信其模板默认的 location
- 未打卡保存即清除该节点打卡流水,弹窗有对应提示;在途打卡表只有单张照片字段,
  上传时只留一张
- 入口与运单编辑同权限(waybill_manage_edit),管理员天然可见
2026-10-06 04:41:22 +08:00
weicw-dshsa 462f9bbea2 🐛 修复打卡时间轴异常标签随记录重排错位
时间轴 key 与异常索引共用 `${nodeCode}-${index}`,带上了序号。时间轴按打卡时间
排序,序号随顺序变化,异常标签就会挂到别的节点上或整个消失——编辑打卡时间或把
未打卡改成已打卡都会触发,实测改完「卸货」后它的「已处理异常/详情」直接不见了。

key 改为只认节点标识(nodeCode → id → 兜底序号),异常索引与 v-for 同源,
顺序怎么变都对得上。顺带修好原本就错位的「到场」「装货」:它们的异常标签此前
一直没显示出来。
2026-10-06 04:41:13 +08:00
weicw-dshsa d62d3da60e 🐛 配载管理打卡详情删除在途节点的「在途」标签
该标签与运单管理打卡详情是同一段代码的副本,此前只改了运单管理侧,配电单侧
仍旧渲染,节点名已表明是在途。
2026-10-05 15:25:53 +08:00
weicw-dshsa 50b8abf85c 🐛 修复 pnpm-workspace 中 allowBuilds 的占位值
三个包的 allowBuilds 值是 pnpm 生成的占位文本「set this to true or false」,
不是布尔值,全新 clone 后安装依赖会失败;按实际需要改为 true。
2026-10-05 15:13:39 +08:00
weicw-dshsa 509f5e163c ✨ 打卡详情展示异常状态并新增异常节点展示
运单详情「打卡详情」时间轴按节点关联异常处置:存在未了结异常时显示「异常」标签
与「跟进」链接,全部处理完成时显示「已处理异常」与「详情」链接。异常跟节点走,
节点未打卡也可能有异常。

异常来源改用异常处置表而非打卡行的 exception_flag —— 后者由打卡接口写入且未随
异常上报维护,实测有异常的节点该值仍为 0,原「异常」标签从未显示过。

「已处理」的口径与后端打卡门禁一致(已完成、已撤销都放行),故「处理中」仍算
未处理。

异常节点字段补入各处异常信息:运单详情「异常上报」表格、编辑弹窗、跟进/详情
弹窗,统一放在异常类型之前;表格内空节点显示「-」而不是留白(存量异常无节点)。

过程节点列显示配置中的中文名而非原始 key(库里混存 key 与中文名两种格式)。

删除打卡详情中在途节点的「在途」标签 —— 节点名已表明是在途。
2026-10-05 15:13:34 +08:00
weicw-dshsa 0e853ea751 🐛 关闭内层弹窗时一并复位异常处置弹窗
closeInnerDialogs 逐个复位了页面内其余弹窗,异常处置弹窗当时未列入。
2026-10-05 08:46:25 +08:00
weicw-dshsa d67240bc3b ✨ 运单详情页新增异常上报卡片
在运费信息之后展示该运单关联的异常处置记录,表格沿用异常处置页的操作与权限,
列只保留上报人、异常类型、上报说明、承运商、最新跟进说明、状态。
跟进/编辑/详情弹窗在本页内完成,操作后局部刷新该卡片,不跳转列表页。
2026-10-05 08:43:01 +08:00
weicw-dshsa d0770c8e83 🎨 详情弹窗按运单/异常拆成两块并统一成描述列表
原「异常信息」一块混了运单字段与上报字段,且用的是 dl/dt/dd 自定义栅格。
现拆成「运单信息」与「异常信息」两个 section-card,都用 el-descriptions,
与编辑弹窗的分区口径和视觉一致。

拆出的两个字段配置与编辑弹窗同源同序,只读展示;原 detailFields 的十个字段
一个不少。同时删掉因此不再使用的 __detail-grid 样式与它的响应式断点。

原先这些字段带 link: true,渲染成 el-link 但没有任何点击行为,
看着可点却没反应,一并去掉。
2026-10-05 08:18:02 +08:00
weicw-dshsa cc0b889fef ✨ 异常处置补上司机上报时间
详情/跟进弹窗与编辑弹窗的「异常信息」里都加上上报时间,列表也加一列。
列表原本只有上报时间的筛选条件、没有这一列,筛的是看不到的值。

编辑弹窗里上报人与上报时间同属上报行为,一并放进「异常信息」,
从「运单信息」移出,避免同一个事实显示两遍。
2026-10-05 08:09:20 +08:00
weicw-dshsa 3d27e981e1 🎨 异常跟进修排版并支持上传附件
跟进弹窗按编辑弹窗的排法改造:section-card 分组 + el-row/el-col 栅格,
依次为异常信息、现场照片、跟进、历史跟进。

新增跟进附件上传(v-model 走 vehicle-attachment-upload),
历史跟进表补附件列。跟进说明与附件至少填其一,二者都为空时前端拦下,
与后端校验一致。
2026-10-05 01:09:39 +08:00
weicw-dshsa 2994539de4 ✨ 异常处置新增编辑功能
列表操作列新增「编辑」,弹窗内只呈现运单信息与可编辑项,
按项目既有习惯用 section-card 分组、el-descriptions 展示只读信息、
el-row/el-col 排可编辑字段。

异常类型与异常原因的下拉值改为中文原文:库里 exception_type 存大类中文名、
exception_reason 存子类中文名(小程序上报即如此)。原先一级 value 是英文码
(traffic),而查询按该值做精确匹配,导致按异常类型筛选一行都查不到。

现场照片支持增删,上传走与我方 OSS 端点一致的 put-file 接口。
2026-10-05 00:54:22 +08:00
weicw-dshsa 785ad08b7e 📝 车辆审核字段注释去掉事故经过描述
保留「键名对不上不报错」这一约束,去掉对既往现象的铺陈。
2026-10-04 23:55:28 +08:00
weicw-dshsa 8de51e568d 🔀 合并认证审核页面分支到 master
新增认证审核-司机/车辆页(按字段级 diff 对比待审值与生效值)、
审核列表待审核/已通过/已驳回页签、司机审核补手机号、
车辆表单补所有人与人车辆识别代号,并移除旧认证审核入口。
2026-10-04 23:38:45 +08:00
b2894lxlx d22fe4777d 🐛 过程配置与常用线路组织筛选只传单个deptId
多组织账号默认搜索不再拼接逗号分隔 ID,避免列表接口 Long 转换失败。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-04 20:48:03 +08:00
b2894lxlx 7751a735c5 ✨ 业务数量单位改走计量单位,并放开运输计划日期必填
发货模板、运输计划、运单与总单调度从计量单位取 unitName;修复调度提交顶层单位为空,并取消计划开始/结束日期必填。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-04 20:26:35 +08:00
weicw-dshsa 069d0e92ff 🐛 修车辆审核详情字段元数据的旧键名,止期之外不再被长期有效遮蔽
车辆字段整组停留在改造前的旧键名(licenseNo / licenseValidStart / licenseValidEnd /
licenseLongTerm / roadTransportNo / roadTransportValid* / engineNo),而快照早已改名成
drivingLicense* / roadTransportCert* / registration*。键名对不上不报错——每个字段都算「没有值」,
于是车辆审核详情里行驶证与道路运输证两组全显示「—」,真值全落到未翻译的「其他字段」组里
露着 camelCase 键名,审核员既看不到内容、也 diff 不出变更。

- 按 VehicleCertSubmitRequest 重写车辆四组字段(基本信息 / 行驶证 / 道路运输证 / 机动车登记本),
  补上此前漏登记的所有人、外廓尺寸、核定载质量、准牵引总质量、能源类型、业务关系、机动车登记编号与六张图;
- longTermKey 只挂在被长期有效作废掉的那个字段(有效期止、强制报废日期)上:
  起期是独立日期,挂上去会把真实值显示成「长期有效」,还让审核员看不到起期的改动。
2026-10-03 17:57:01 +08:00
weicw-dshsa ce54d21344 ✨ 新增/编辑车辆表单补「所有人」与「车辆识别代号」
车辆表新增这两列(所有人:行驶证登记的单位名称,与「所属组织」是两个字段;
车辆识别代号:司机端车辆认证一直在收这个值,此前车辆档案里没有对应列,
只存在于认证快照中)。管理端表单同步补上,否则两个入口建出来的车字段不一致。

所有人为必填(行驶证上的登记主体),车辆识别代号选填、填了校验 17 位。
2026-10-03 16:34:59 +08:00
weicw-dshsa 715c0dc00c ✨ 司机审核与车辆审核新增司机手机号,统一按当前姓名取数
两个审核页的表格与搜索栏都加上「司机手机号」,姓名列改绑司机档案的当前值
(原绑提交时的历史姓名)。同时去掉「提交人」列:真实路径下提交人就是司机本人,
两列必然同值,而存量记录本就没有提交人,留着一列空值加同值没有意义。

手机号不脱敏:审核员靠它联系司机核实材料,与司机管理页一致。
2026-10-03 14:36:08 +08:00
weicw-dshsa b8d74de4a4 ✨ 认证审核列表新增待审核/已通过/已驳回页签
审核对象是「一条认证记录」,每次提交产生一条,原列表只能看审核中的,
已通过与已驳回的记录无从查看。

三个页签默认停在待审核;切换页签回到第一页;只有审核中的记录显示「审核」,
终态记录显示「查看」(详情弹窗本就对终态禁用通过/驳回)。
2026-10-02 19:58:17 +08:00
weicw-dshsa 71a6f7c4f8 ♻️ 车辆管理移除旧认证审核入口,认证状态改用统一状态词表
认证审核职责已迁到「认证审核-车辆」页:审核对象是一条认证记录,生效值与
待审值分离后,原来「看车辆行当前值直接通过/驳回」的单条模型语义不再成立。

- vehicle.vue:移除操作列的「审核」入口与认证审核弹窗及其方法、样式,
  同时删除 api/transportCapacity/transport-vehicle.js 的 auditCertification 封装
  (后端旧接口仅保留兼容,前端不再调用)
- 认证状态列与筛选项统一为 审核中 / 已通过 / 已驳回 / 已作废(新增 已作废,
  原先的「认证中/已认证」不再使用),缓存为空时显示「未认证」
- 去掉按证件到期日期推断「已认证 / 已过期」的兜底:是否已认证由生效快照指针
  决定(曾审核通过即永久保持),与证件日期无关;到期信息仍由列表顶部到期标签
  与日期列标色展示
- driver.vue 选择车辆弹窗的车辆认证状态文案一并统一
2026-10-02 17:15:09 +08:00
weicw-dshsa 7c6ac2e5db ✨ 新增认证审核-司机/车辆页,审核详情按字段级 diff 对比待审值与生效值
审核对象由「司机行 / 车辆行」改为「一条认证记录」,故新增两个待审列表页
(挂在运力管理下,path /transportCapacity/cert-audit-driver|vehicle,与页面
文件名一一对应)与审核详情弹窗:

- api/transportCapacity/certification-audit.js:pending-page / detail / audit 三个接口
- utils/cert-audit.js:快照字段元数据(中文名、控件类型、分组)与两侧快照的
  字段级 diff 计算。两侧字段名一致(同一套快照结构),故逐键比较;日期归一化后
  判等、长期有效联动展示、未登记字段兜底进「其他字段」
- components/cert-audit-diff:当前生效值与待审提交值并排展示,差异行高亮并标注
  新增 / 已修改 / 已清空,支持切换只看变更项;从未认证通过(生效快照为空)时
  显示「无对比基准」,不报错
- components/cert-audit-detail:审核详情弹窗(提交信息 + diff + 审核意见),
  通过 / 驳回动作。驳回原因前端先拦一道(必填且不超过 200 字),通过时不提交原因;
  已终态记录不可再审
- components/cert-audit-list + 两个菜单页:分页与按展示键(司机姓名 / 车牌号)筛选,
  审核链接按 cert_certification_audit_{driver,vehicle}_audit 权限点控制

检索过的现有实现:driver.vue / vehicle.vue 的列表与弹窗写法(Avue option + search、
权限点 hasPermission 写法)、image-upload-field、section-card、utils/table-menu.js。
未找到可复用的快照或 diff 实现,故新增 utils/cert-audit.js 纯函数承担比对;
两个列表页除 bizType 与权限点外完全相同,故抽出通用列表组件承接分页/搜索,
避免两页逻辑各自演化。
2026-10-02 17:15:03 +08:00
gxwebsoft 0b81001ce7 refactor(wel): 重构欢迎页为模块化组件
- 将欢迎页整体结构拆分为多个功能区组件,提高代码可维护性
- 移除原有欢迎横幅、指标卡、图表区、下方区及快捷入口的静态实现
- 引入并注册 SectionKpi、SectionStructure、SectionBusiness 等八个子组件
- 删除冗余样式,更新整体背景和布局样式
- 精简模板内容,仅保留子组件渲染及页脚版权信息
- 移除无用的响应式数据、计算属性及方法
- 包含依赖包 echarts 的新增,支持后续图表功能开发
2026-09-30 17:39:42 +08:00
b2894lxlx 50c1afe9c8 ✨ 列表导出补齐创建人创建时间,并修复组织类型提交
多模块列表与导出展示创建人、创建时间;组织类型强制提交数字编码,避免中文 dictKey 反序列化失败。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 14:22:39 +08:00
b2894lxlx e5a7ad616c 🐛 超管业务列表默认查全部组织,并简化区划编号录入
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-29 21:41:48 +08:00
b2894lxlx 2210e33643 🐛 修复组织类型字典非数字key导致下拉无数据,并调整用户弹窗布局
兼容 organization_type 的中文 dictKey 展示;用户弹窗所属组织与备注宽度按四列布局对齐。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-29 03:31:56 +08:00
b2894lxlx 1ed524f80f ✨ 组织类型接业务字典,并支持多所属组织与MK再提交
组织管理类型改为 organization_type;用户所属组织支持多选;提交MK前保留原审批状态以识别通过后再提交。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-29 03:15:27 +08:00
b2894lxlx 4418836fcd 🐛 审核通过后再提交强制新建MK表单实例
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-29 02:44:49 +08:00
b2894lxlx 4641d0a5dd ✨ 多业务接入MK审核流,提交改传bizId并由后端生成表单实例
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-29 02:23:24 +08:00
b2894lxlx 8b9c908237 ⚡ 统一地图选址搜索为高德 place/text 并展示分页候选
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 00:19:17 +08:00
b2894lxlx b5043575e4 🐛 修复常用货物组织筛选,并调整列表字段与常用地址行政区划禁用
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 23:39:38 +08:00
b2894lxlx b92625528c ⚡ 优化区划国家入口、计划-1展示、路线地图点选与对账导出
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 23:16:18 +08:00
b2894lxlx f3a33b1a04 ✨ 完善运单导入编辑回填、分批校验与运费录入
导入编辑进入独立页面并回填数据,确认导入按每批100条校验后统一导出失败明细,完整录入运费信息按数量单位联动单价单位。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 22:54:33 +08:00
b2894lxlx 98fbf123f5 🐛 修复车务非必填-1展示,并完善总单调度与运单表单体验
调度页限制上一段到达后才可调度;司机候选项点击展开;车务多模块-1显示为空;同步配载/总单编辑与导入相关优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 21:27:14 +08:00
weicw-dshsa c268d2e64d 🔀 合并 fix/import-error-message-blob
修复导入失败时前端误报「系统错误」,根因有两层:
- axios 的 validateStatus 允许 200-500,HTTP 400 走的是成功分支而不是错误分支;
- 导入请求用 responseType='blob',res.data 是 Blob,读不到 code/msg,
  于是状态码退回 res.status、文案落到「系统错误」兜底。

改法:按 Content-Type 判断,声明为 JSON 的响应体才把 Blob 读成文本解析回
对象;真·文件流(Excel 明细)保持 Blob 原样走下载分支。
另统一 notifiedError() 给 Error 打 _notified 标记,业务层据此避免同一条
错误被弹两次。
2026-09-26 15:32:00 +08:00
weicw-dshsa fc7df95c1a 🐛 修复导入错误提示重复弹出并丢失业务文案
- axios 拦截器:blob 请求(导入/导出)在业务校验失败时后端返回的是
  JSON(Content-Type: application/json),而 axios 在 responseType='blob'
  下把响应体解析成 Blob,直接读 res.data.msg 取不到任何字段,
  status 退回 res.status、文案落到「系统错误」兜底,用户误以为系统崩溃。
  现按 Content-Type 判断:JSON 才解析回对象,真·文件流保持原样不动。
- 统一提示出口 notifiedError():弹窗后给 Error 打 _notified 标记,
  业务层据此避免同一条错误被弹两次。
- import-excel:拦截器已提示过的错误不再重复 $message.error;
  >500/网络异常等仍由 resolveErrorMessage 从 Blob 中取 msg 兜底。
2026-09-26 12:21:20 +08:00
weicw-dshsa 088c9cace0 🐛 导入失败时显示后端业务提示,不再误报系统错误
问题(用户实测反馈):导入只有一个表头的空文件时,前端提示「系统错误」,
用户误以为系统崩溃;后端其实已返回明确文案(400 + 「导入数据不能为空」)。

根因(两处叠加):
1) axios 错误分支 reject(new Error(error)) 把原始错误包装掉,
   error.response 丢失、message 退化成 [object Object];
2) 导入接口统一用 responseType:'blob',非 2xx 的响应体也是 Blob,
   而 axios 错误分支不做解析,拿不到后端 msg。

修复:
- src/axios.js:错误分支直接 reject 原始 axios 错误,保留 response;
- src/utils/import-excel.js:新增 resolveErrorMessage,从错误响应的 Blob 中
  解析后端 JSON 取 msg;解析不到时兜底为中文提示(不再暴露
  「Request failed with status code xxx」这类英文技术文案)。

验证:vite build 通过;模拟真实响应体验证 400 + 空表场景,
提示由「系统错误」变为后端原文「未读取到数据行,请确认表头下方已填写内容」。
2026-09-26 11:50:49 +08:00
b2894lxlx 079be78c2c ✨ 优化配载详情执行打卡与运单切换展示
执行详情按运单切换,补充打卡记录时间线与状态展示。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-25 17:45:21 +08:00
b2894lxlx ee7160e393 ✨ 完善客商MK审核提交、地区校验与流程实例校验
提交增加 loading,拆分所在地区/详细地址校验,支持 MK 审核跳转,并在已有流程实例时跳过重复提交。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-25 17:45:21 +08:00
b2894lxlx aa26beda28 ✨ MK公开页、预结算体验优化、地图选址与认证密码规则完善 2026-09-23 18:36:18 +08:00
b2894lxlx a919781d4f ✨ 完善配载确认、承运商组织过滤司机与地址展示
配载草稿确认生成正式单并优化详情/列表地址市区展示;运单调度等按承运商联系人所属组织筛选司机车辆;统一地图搜索结果与登录默认账号清理。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 18:35:27 +08:00