diff --git a/web-admin/nutrition/doc/营养管理功能说明.md b/web-admin/nutrition/doc/营养管理功能说明.md index 16b4ffe..f2d721c 100644 --- a/web-admin/nutrition/doc/营养管理功能说明.md +++ b/web-admin/nutrition/doc/营养管理功能说明.md @@ -1128,6 +1128,9 @@ - 菜品名称改为带加工规格格式(如"土豆(土豆丝)") - 新增"新建外售订单"弹窗(含溯源码、客户信息、净菜选择、金额自动计算等) - 新增行内"确认签收"操作及交互逻辑 +- 新增右侧抽屉详情组件,点击"详情"以抽屉形式展示当前行所有字段 +- 新增"确认收货"二次确认弹窗(配送中状态订单) +- 新增"备货完成"二次确认弹窗(备货中状态订单) ##### 2. sup-clean-internal.html(净菜内供) - 筛选栏"申领部门"改为"申领食堂" @@ -1135,44 +1138,61 @@ - 表格新增"包装规格""申领份数"列,移除"库存状态"列 - 菜品名称改为带加工规格格式 - 新增"新建申领单"弹窗 +- 新增右侧抽屉详情组件,点击"详情"以抽屉形式展示当前行所有字段 +- 新增"确认收货"二次确认弹窗 +- 新增"立即配送"弹窗(含配送人姓名、备注输入) +- 新增"备货完成"二次确认弹窗 ##### 3. sup-hygiene-check.html(卫生检测) - 新增监测弹窗以及交互 - 筛选栏新增"溯源码"输入框 - 操作栏移除"隔离处理"按钮,在数据行后加隔离处理按钮 +- 新增右侧抽屉详情组件,"详情"从居中弹窗改为抽屉展示 +- 新增"隔离处理"二次确认弹窗(不合格检测项) ##### 4. sup-in-clean.html(净菜加工) - "加工类型/加工规格"改为"净菜类型/加工步骤",移除"加工温度"列,新增"入库状态"列 - 操作列改为"查看视频 + 生成入库单 + 更多(下拉)"分层交互 - 新增"生成入库单"二次确认弹窗 - 弹窗表单:溯源码改为必填首位,食材名称改为只读自动带出 +- 新增右侧抽屉详情组件,下拉菜单"详情"改为抽屉展示 +- "生成入库单"确认后跳转至净菜入库页面并通过 URL 参数自动填充表单 ##### 5. sup-in-cleanin.html(净菜入库) - 新增表格列(食材名称、净菜类型、入库规格、入库数量 ) - 新增出库明细按钮已经交互 - 操作列 sticky 定位移除,改为"更多"下拉菜单交互模式 - CSS 重构与 sup-in-clean 保持一致 +- 新增「操作类型」列(操作人与操作列之间),值为"设备自动"(蓝色tag)/"人工录入"(绿色tag) +- 新增弹窗表单补充「操作类型」必填下拉字段 +- 新增右侧抽屉详情组件,下拉菜单"详情"改为抽屉展示 +- 新增 URL 参数自动填充逻辑:从净菜加工页跳转时自动解析参数并填充溯源码、食材名称等字段,自动打开新增弹窗 ##### 6. sup-in-raw.html(毛菜入库) - 弹窗新增"溯源码"必填字段 - "供应商/来源地块"改为下拉选择的"供应商" - 移除"卫生检测报告编号"字段,"验收人"改为"操作人" +- 新增右侧抽屉详情组件,点击"详情"以抽屉形式展示当前行所有字段 ##### 7. sup-pkg-label.html(净菜包装) - Tab1 净菜包:新增"新增净菜包"按钮及弹窗,"包装编号"改为"包装批次号",新增"包装规格""包装份数"列 - Tab2 餐品净菜包:新增"新增餐品净菜包"按钮及弹窗(含食材动态行) - Tab3 包装设备:新增"新增包装设备"按钮及弹窗 +- Tab2 餐品净菜包:新增「操作类型」列(终端设备与操作列之间),值为"设备自动"/"人工录入"标签 +- Tab2 新增弹窗表单补充「操作类型」必填下拉字段 ##### 8. sup-warehouse.html(仓储管理) - Tab 顺序重排:在库库存提升为默认首 Tab - 在库库存 Tab 全新重构:新筛选栏(物品类型、临期预警等)、新表格结构、新增分页组件 - 仓库档案 Tab:状态选项改为"使用中/空置中 +- 新增右侧抽屉详情组件:三个 Tab(在库库存/仓库档案/区域管理)分别有独立的详情抽屉函数 ##### 9.跨文件共性改动: - 所有页面侧边栏统一将"仓储管理"移到"毛菜入库"前面 - 溯源码字段在多个页面前移或新增 - 菜品名称统一为"食材名(加工规格)"格式 - 多个页面补充了完整的新建弹窗交互 +- 卫生供应全部 8 个页面统一新增右侧抽屉(Drawer)详情展示组件,替代原有无效链接或居中弹窗 #### 9.2 营养用餐 ##### 1.营养用餐-食堂管理(新增菜单) @@ -1248,6 +1268,10 @@ - 操作列重构:固定三项(食材溯源链路、查看视频、更多▾ hover 下拉)+ 状态按钮 - 新建组配任务弹窗重构:改用下拉选择餐品/规格/份数/来源,移除手动食材清单 - 食材明细弹窗新增「分类」列(主材/辅材/调料 标签) +- 「开始组配」「完成组配」按钮新增顶部 toast 提示交互(状态联动切换) +- 新增「操作类型」列(负责人与完成时间之间),值为"设备自动"(蓝色tag)/"人工录入"(绿色tag) +- 新建任务弹窗补充「操作类型」必填下拉字段 +- 新增右侧抽屉详情组件,下拉菜单"详情"以抽屉形式展示任务各字段 ##### 2. prod-proc-cook.html(按单烹制) - 筛选栏新增「当前食堂」「烹制日期」筛选,烹制日期默认当天 @@ -1256,6 +1280,8 @@ - 生熟比格式改为 1:0.8 - 操作列重构:固定三项 + hover 下拉 + 状态按钮(通知取餐/烹制完成/开始烹制) - 新增烹制状态对应不同的操作按钮 +- 「开始烹制」「烹制完成」「通知取餐」按钮新增顶部 toast 提示交互(状态联动切换) +- 新增右侧抽屉详情组件,下拉菜单"详情"以抽屉形式展示烹制任务各字段 ##### 3. prod-proc-serve.html(上餐监控) - 筛选栏新增「当前食堂」下拉 @@ -1263,6 +1289,7 @@ - 新增上餐弹窗:选择已完成烹制餐品后自动回填信息卡片(任务号/菜品/厨师/出锅时间/温度/餐次/识别方式/重量) - 新增 .action-more 下拉菜单样式体系 - 调整表格列的顺序和部分内容 +- 新增右侧抽屉详情组件,下拉菜单"详情"以抽屉形式展示上餐记录各字段 ##### 4. prod-proc-surplus.html(余量处置) - 筛选栏新增「当前食堂」下拉 @@ -1274,6 +1301,7 @@ - 新增余量登记弹窗重构:餐线→餐次→菜品三级联动选择(菜品来自上餐监控),选择后自动回填计划制作量/实际制作量/销售取餐量/余量信息卡片 - 处置方式选择「员工福利」时,弹窗下方动态显示员工领取记录表格(含操作列删除按钮),支持点击「+ 新增领取记录」按钮展开输入行 - 员工福利取餐明细弹窗:新增「操作」列(删除按钮),新增底部「+ 新增领取记录」交互(点击后显示输入行,支持确认/取消) +- 新增右侧抽屉详情组件,下拉菜单"详情"以抽屉形式展示处置单各字段 ##### 5. prod-proc-stats.html(生产统计) - 新增页面标题行 + 食堂切换下拉(canteen-select 高亮样式) @@ -1287,6 +1315,7 @@ - 新增页面标题行 + 食堂切换下拉切换 - 新增摄像头回放弹窗(含播放器、时间轴、分时段列表) - 新增新增证件、新增留样弹窗及交互 +- 新增右侧抽屉详情组件,多个表格(违规记录/安全巡检/人员健康证/能耗记录)的"详情"统一以抽屉形式展示 ##### 7. prod-clean-order.html(净菜订单) - 新增页面标题行 + 食堂切换下拉 @@ -1295,6 +1324,8 @@ - 订单状态选项调整为:备货中/待配送/配送中/已完成,配送中进行确认收货操作 - 新增弹窗通用样式与表单网格布局 - 调整表格字段(净菜类型,调整规格与计量方式) +- 「确认收货」按钮新增二次确认弹窗(含订单信息展示),确认后状态变为"已完成"并移除按钮 +- 新增右侧抽屉详情组件,操作列"详情"以抽屉形式展示订单各字段 ##### 8. prod-proc-cabinet.html(净菜进柜) - 新增页面标题行 + 食堂切换下拉 @@ -1302,14 +1333,28 @@ - 移除 Tab(食材净菜、餐品净菜包 、智能柜总览) 切换结构,改为左右分栏布局 - 新增标签/链接通用样式 - 新增手动存入净菜按钮及交互 +- 新增右侧抽屉详情组件,点击"详情"以抽屉形式展示格口详细信息 ##### 9. prod-recipe-plan.html(食谱规划) - 选择餐品弹窗增加营养信息展示,对齐食谱规划页弹窗样式 - 按周为单位进行食谱规划 +##### 10. prod-qc-nutrition-sync.html(营养同步) +- 新增右侧抽屉详情组件,操作列"详情"从居中弹窗改为抽屉展示(含同步信息和关联检验记录列表) + #### 9.4 绿色种采 ##### 1.绿色种采-土地环境模块 - 地块管理:表格改为二级表头(基本信息+最新监测数据); - 新增灌溉方式/土壤类型/负责人字段; - 操作从纯文本改为4个操作按钮; -- 新增地块/养殖区的新增/编辑/详情/采集记录弹窗 \ No newline at end of file +- 新增地块/养殖区的新增/编辑/详情/采集记录弹窗 +- 地块详情和养殖区详情从居中 Modal 重构为右侧 Drawer 抽屉,带 CSS 滑入动画 +- 详情内容 DOM 结构从 div 网格改为语义化 ul/li 列表(BEM 命名:detail-list__item) + +##### 2. farm-monitor-crop.html(种植监控) +- 种植记录详情从居中弹窗重构为右侧抽屉,带滑入动画和遮罩层 +- 详情内容从 div.detail-grid 改为 ul.detail-list(BEM 命名规范) + +##### 3. farm-monitor-livestock.html(养殖监控) +- 养殖批次详情从居中弹窗重构为右侧抽屉(宽度 480px),带滑入动画 +- 详情内容从 div.detail-grid 改为 ul.detail-list(BEM 命名规范) \ No newline at end of file diff --git a/web-admin/nutrition/farm-land.html b/web-admin/nutrition/farm-land.html index 65b2db0..839d5d6 100644 --- a/web-admin/nutrition/farm-land.html +++ b/web-admin/nutrition/farm-land.html @@ -124,18 +124,26 @@ table thead .sub-header th{font-size:12px;font-weight:500;} .search-select__option{padding:8px 12px;font-size:var(--font-sm);cursor:pointer;transition:background .15s;} .search-select__option:hover,.search-select__option.highlighted{background:var(--primary-light);color:var(--primary);} .search-select__empty{padding:8px 12px;font-size:var(--font-sm);color:var(--text-placeholder);text-align:center;} -/* 详情弹窗 */ -.detail-modal{width:720px;} -.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;} -.detail-item{display:flex;padding:12px 16px;border-bottom:1px solid #f0f0f0;} -.detail-item.full{grid-column:1/-1;} -.detail-label{width:120px;flex-shrink:0;color:var(--text-secondary);font-size:var(--font-sm);} -.detail-value{flex:1;font-size:var(--font-sm);color:var(--text-primary);} +/* 详情抽屉 */ +.drawer-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.45);z-index:200;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;} +.drawer-overlay.open{opacity:1;visibility:visible;} +.drawer{position:fixed;top:0;right:0;width:480px;height:100%;background:#fff;box-shadow:-4px 0 16px rgba(0,0,0,0.12);z-index:201;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);} +.drawer-overlay.open .drawer{transform:translateX(0);} +.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);flex-shrink:0;} +.drawer-title{font-size:16px;font-weight:600;color:#262626;} +.drawer-close{font-size:22px;cursor:pointer;color:#8c8c8c;line-height:1;}.drawer-close:hover{color:#262626;} +.drawer-body{flex:1;overflow-y:auto;padding:0;} +.drawer-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border);flex-shrink:0;} +.detail-list{list-style:none;} +.detail-list__item{display:flex;padding:12px 24px;border-bottom:1px solid #f0f0f0;} +.detail-list__item:last-child{border-bottom:none;} +.detail-list__label{width:120px;flex-shrink:0;color:var(--text-secondary);font-size:var(--font-sm);} +.detail-list__value{flex:1;font-size:var(--font-sm);color:var(--text-primary);word-break:break-all;} /* 详情分模块 */ .detail-section{padding:16px 24px;border-bottom:1px solid #f0f0f0;} .detail-section:last-child{border-bottom:none;} .detail-section__title{font-size:var(--font-sm);font-weight:600;color:var(--primary);margin-bottom:12px;padding-left:8px;border-left:3px solid var(--primary);} -.detail-section .detail-grid{gap:0;} +.detail-section .detail-list{}
@@ -427,29 +435,29 @@ table thead .sub-header th{font-size:12px;font-weight:500;} - -