fb633e27c6
- 新增 computed 属性 dispatchSummarySegments,实现待调度列表汇总文本结构化拆分 - 将模板中 dispatchSummaryText 替换为 v-for 渲染,待调度件数字显示为蓝色加粗 - 修正「件」字未分离导致整词变色问题,改为数字与单位拆分渲染 - 用户反馈后,扩展高亮范围至所有单位数字,包括「吨」「方」等 - 维持文本格式与原串完全一致,未改动原有业务逻辑和校验 - 优化部分样式,调整页面内间距,如 section-card 间距和工具栏内边距等 - 修正部分组件结构,如 master-order
10 KiB
10 KiB
2026-08-13 工作记录
business-crud-page.vue UI 对齐 customer-archive(section-card 间隔 + 表单排列统一)
问题
- 该组件内
.section-card { margin-bottom: 0 !important }(scoped 顶层)把全局 8px 卡片间距清零,导致弹窗里的 section-card 卡片贴在一起(与 customer-archive 的留白不一致)。 - 手写的 dispatch-item 表单 markup 仍写
label-width="auto"(虽被共享 CSS 块强制为calc(6em+24px),但不直观)。
改动(src/views/business/components/business-crud-page.vue)
- 删除
margin-bottom:0 !important覆盖,改为.section-card{margin-bottom:8px !important; &:last-child{margin-bottom:0}},与 customer-archive/全局 element-ui.scss 的 8px 节奏一致。 .business-crud-page__detail-content(详情弹窗,原本gap:12px)改为gap:8px并给内部.section-card{margin-bottom:0 !important},避免 8px 外边距 + gap 双重留白。:deep(.avue-form__group:has(.dialog-section-title))白卡margin-bottom:16px→8px,使主弹窗分组白卡与 section-card 同节奏。&__dispatch-summary的margin-bottom:12px→8px。- dispatch-item 表单
label-width="auto"→"calc(6em + 24px)"(与 task-form/freight-form 共享的 label 标准一致;参考 customer-archive 的右侧固定宽 label +el-row :gutter网格思路)。
验证
- 仅改 scoped SCSS + 1 处 markup 属性,未动逻辑;SFC 结构未变。表单组件排列本就通过共享
__task-form/__freight-form/__dispatch-item-form块统一为calc(6em+24px)label + 4 列网格,本次使其显式对齐。
弹窗样式与交互调整(base 模块)
1. port-terminal.vue 港口/码头弹窗
- 去掉浏览器 input autocomplete 地址联想:新增
disableDialogAutocomplete()方法(批量给.port-terminal-edit-dialog内 input/textarea 设 autocomplete=off 等),在beforeOpen两个分支done()后用setTimeout(50)调用。 - option 字段调整(用户此前需求,已指导):详细地址
detailAddress的span:24→12、order:86→88,与区县districtCode(span12,order87) 并排。
2. railway-station.vue 铁路车站弹窗
- label 宽度 85→108:option
labelWidth:'auto'→'108px'(字符串不生效),再补dialogCustomClass:'railway-station-edit-dialog'+ 非 scoped<style>强制.el-form-item__label{width:108px!important}。
3. 全站弹窗底部浮动按钮(统一规范)
- 在
src/styles/element-ui.scss新增全局规则:.el-dialog__body{max-height:calc(100vh-200px);overflow-y:auto}+.el-dialog__footer{白底+上边框+轻阴影},实现取消/保存按钮固定在底部(参照 business/project-apply)。全站 Avue 弹窗自动生效,含 railway-station。已记入 MEMORY.md 长期规范。
4. port-terminal.vue 字段分组白卡 + label 108(本次)
- 改用 Avue
option.group把表单分成 3 张白卡:基础信息 / 位置信息 / 其他信息(对齐 driver/vehicle/ship/customer-archive 的 section-card 风格)。 - root
column保留不动(脚本大量用findColumn(this.option.column,...)动态设 dicData/显示),在created()里循环把 root 列display=false,使其只服务表格/搜索、不重复渲染进表单。 - 新增
getColumnsByProp(prop)助手,统一把 8 处dicData/显示切换同时作用于 root 与 group 两处(否则 group 列的级联下拉不会刷新)。 - 样式:外层
.avue-form透明化(卡片交由分组);.avue-form__group白卡 + 4px 主色竖条标题 + 内容区左右 16px;.el-form-item__label{width:108px!important}对齐 railway-station。 - 关键坑:Avue form 的
columnOption会把 root column 也作为「无标题组」渲染进表单,故 group 页必须给 root 列display:false,否则字段重复;且动态 dicData 必须双写 root+group。
5. port-terminal.vue 回退分组白卡 + label 108(用户要求)
- 用户决定不在本页使用分组白卡与 label 宽度 108,已全部回退:
- 删除
option.group三张白卡,恢复扁平column结构(sed删 695–974 行)。 created()去掉 root 列display=false循环;删除getColumnsByProp助手;setColumnDisplay与 8 处dicData/显示切换全部还原为findColumn(this.option.column, prop)写法。- 样式块恢复:
.avue-form恢复为单张白卡(去透明化),删除.avue-form__group分组白卡规则与.el-form-item__label{width:108px};保留灰底 + 浮动底栏统一风格、input/select 250px、备注 85%。
- 删除
- 校验:SFC 解析通过,无 getColumnsByProp/group/avue-form__group/label108 残留。
6. railway-station.vue 对齐 port-terminal 统一风格(用户要求"按 port-terminal 效果改")
- 扩充
.railway-station-edit-dialog非 scoped 样式块,对齐 port-terminal:灰底.el-dialog__body(#f2f2f2, padding 8px) + 表单白卡.avue-form(白底/圆角6/轻阴影/内边距16px) + 浮动底栏.avue-dialog__footer(白底/圆角/轻阴影/右对齐) + 输入框.el-input,.el-select宽 250px + 备注.remark-input宽 85%。 - 给备注字段(
prop:'remark')加class:'remark-input',使备注 85% 规则生效(原字段仅type:textarea,无 class)。 - 保留用户之前要求的
labelWidth:'108px'与.el-form-item__label{width:108px!important}。 - 未包含 port-terminal 的「关闭浏览器地址联想 autocomplete」逻辑(用户未要求,railway 未反馈该问题);如需一致可后续补。
- 校验:SFC 解析通过。
7. 方向纠正:应改 port-terminal 参考 railway-station(非改 railway 参考 port)
- 用户澄清:第6条方向搞反了。正确语义是「改 port-terminal,参考 railway-station」。railway-station 是参考样板,不应被改。
- 还原 railway-station(撤销第6条):删除误加的冗余专属灰底白卡/250px/备注85% 块(该块
.avue-form{padding:16px}会与全局.el-dialog .avue-form的 24px 冲突造成不齐),仅保留labelWidth:'108px'+.el-form-item__label{width:108px!important};移除备注字段误加的class:'remark-input'。 - 关键认知:全局
src/styles/element-ui.scss第240-265行已有完整弹窗标准规则(灰底.el-dialog__body#f2f2f2 + 白卡.el-dialog .avue-formpadding 24px + 浮动底栏.avue-crud__dialog .avue-dialog__footer)。railway-station「整齐」即靠全局规则 + label 108;专属块属冗余且会覆盖全局 24px→16px 导致不齐。 - 改造 port-terminal 对齐 railway-station:保留专属灰底白卡兜底(其历史未命中全局,保留以防回归),补
labelWidth:'108px'+ 样式块.el-form-item__label{width:108px!important};并将专属块.avue-formpadding 由 16px 改为 24px 以与全局/railway 一致。 - 校验:两文件 SFC 解析通过;railway 无 remark-input/padding16px 残留;port-terminal 已含 label 108 + padding 24px。
8. railway-station.vue label 加宽(用户反馈太挤)
- 用户反馈新增弹窗中"所属区县"label 太挤(实测约 85×32px),要求加宽。
- 已把
option.labelWidth: '108px' → '140px',同步全局覆盖.el-form-item__label{width:108px!important} → 140px!important。 - 140px 够"所属区县"4字+必填星号+留白,也覆盖表单其他 label("行政区划编号"6字 + * 也够)。若仍觉不够可再调到 160px。
process-config.vue 套用 customer-archive 样式(用户要求"和 business-crud-page 一样的问题")
- 根因同商务页:本页原用灰色
div.dialog-section-title标题 + 自定义__fieldflex 布局(labelflex:0 0 150px),既无白卡样式也无 8px 卡片间距,与 customer-archive 的<section-card>白卡风格不一致。Avue form 本身labelPosition:'right'但labelWidth:'auto',故原页才需自定义固定宽 label。 - 改动(src/views/business/process-config.vue):
#basicInfo-form槽:去掉process-config-page__section+dialog-section-title,改为<section-card title="基本信息">+ 嵌套<el-form label-position="right" label-width="calc(6em + 24px)">+<el-row :gutter="18">+el-col(配置名称6/项目6/运输完成时限12/备注24) +el-form-item,与 customer-archive 右侧固定宽 label 栅格完全对齐。必填项加required。#nodeConfigJson-form槽:两个dialog-section-title(现行过程节点 / 节点设置)分别改为<section-card title=...>包裹(timeline 与 el-table 内容不变)。- 删除不再使用的
__section/__field/__field-label/__field-label--required样式;保留__finish-days与节点表格相关样式。
- 卡片间距:全局
.section-card{margin-bottom:8px}在本页生效(无!important覆盖),三张白卡自动保持 8px 间隔。 - 校验:@vue/compiler-sfc 编译通过,3 个 section-card 均正确闭合;未动任何业务逻辑(validateRow/syncNodeFields 等不变)。
business-crud-page.vue 待调度列表汇总「件」蓝色高亮
- 需求:调度弹窗「待调度列表」标题右侧汇总
共50吨、100件 | 已调度 50吨、100件,剩余0吨、0件中,单位是「件」的数字用蓝色显示。 - 改造(src/views/business/components/business-crud-page.vue):
- 新增 computed
dispatchSummarySegments,把原纯文本dispatchSummaryText拆成结构化三段(共/已调度/剩余),每段 items 带{unit, value, isPiece: unit==='件'},文本拼接方式与原格式完全一致(含空格、|、、、逗号)。 - 模板(约 2546 行)由
{{ dispatchSummaryText }}改为v-for渲染;件数字包裹<span class="dispatch-summary-value is-piece">。 - 样式:
.business-crud-page__dispatch-list-summary .dispatch-summary-value.is-piece { color:#409eff; font-weight:600 }(项目主蓝,轻微加粗更醒目)。
- 新增 computed
- 校验:文本格式与原串逐字符一致,仅「件」数字变色;未动
dispatchSummaryItems等其它逻辑。 - 修正(用户反馈):原把整段「数字+件」一起变蓝导致「件」字也蓝。改为数字与单位拆成两个 span(
dispatch-summary-value仅含数字、dispatch-summary-unit含单位),蓝色与加粗只作用于数字,「件」字保持默认色。 - 二次修正(用户反馈):「吨」数字也要蓝。将
isPiece由unit==='件'放宽为恒true,即所有单位的数字均蓝色、单位字默认色(覆盖 吨/件/方 等)。