From 6b1c170f31233e61c597da602a42d418ded3b3ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E6=99=AE?= <18691763612@163.com> Date: Thu, 21 May 2026 10:33:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=81=A5=E5=BA=B7=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E6=A8=A1=E5=9D=97=E4=BA=A4=E4=BA=92=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E2=80=94=E2=80=94=E4=BD=99=E9=87=8F=E5=A4=84=E7=BD=AE=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E3=80=81=E4=B8=8A=E9=A4=90=E7=9B=91=E6=8E=A7=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E8=8F=9C=E5=8D=95=E3=80=81=E7=94=9F=E4=BA=A7=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=97=A5=E6=9C=9F=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - prod-proc-surplus: 筛选栏新增餐线/餐次,余量红色倒序,操作列合并为更多下拉,新增弹窗三级联动+员工福利领取记录 - prod-proc-serve: 操作列详情/编辑/删除合并为更多hover下拉菜单,新增上餐弹窗自动回填 - prod-proc-stats: 生产报表和成本利润日期筛选改为范围选择器,默认当月 - 营养管理功能说明.md: 新增9.3健康生产调整记录章节 Co-Authored-By: Claude Opus 4.6 --- web-admin/nutrition/doc/营养管理功能说明.md | 70 ++++++- web-admin/nutrition/prod-proc-serve.html | 167 +++++++++++++++-- web-admin/nutrition/prod-proc-stats.html | 15 +- web-admin/nutrition/prod-proc-surplus.html | 192 +++++++++++++++----- 4 files changed, 386 insertions(+), 58 deletions(-) diff --git a/web-admin/nutrition/doc/营养管理功能说明.md b/web-admin/nutrition/doc/营养管理功能说明.md index 5399108..5c527c3 100644 --- a/web-admin/nutrition/doc/营养管理功能说明.md +++ b/web-admin/nutrition/doc/营养管理功能说明.md @@ -1202,7 +1202,75 @@ - 人群基础标准:全部4个表格(算法标准/个性化方案/大众方案/动态规则)补全了完整的新增/编辑/详情/删除弹窗交互;筛选器增加 JS 事件绑定;删除"批量安排复评"按钮及弹窗 - VIP定制标准:新增完整的 VIP 新增/编辑/详情/删除弹窗;定制目标增加彩色 tag 标签;删除"批量安排复评"按钮及弹窗 -#### 9.3 绿色种采 +#### 9.3 健康生产 + +##### 1. prod-proc-combo.html(净菜组配) +- 筛选栏新增「当前食堂」「任务来源」「任务截止日期」筛选,截止日期默认当天 +- 表头重构:去掉需求规格列,新增餐品规格/份数/任务截止时间/任务来源/完成时间列 +- 食材配方列移至任务截止时间后,「查看配方」改为「食材明细」 +- 操作列重构:固定三项(食材溯源链路、查看视频、更多▾ hover 下拉)+ 状态按钮 +- 新建组配任务弹窗重构:改用下拉选择餐品/规格/份数/来源,移除手动食材清单 +- 食材明细弹窗新增「分类」列(主材/辅材/调料 标签) + +##### 2. prod-proc-cook.html(按单烹制) +- 筛选栏新增「当前食堂」「烹制日期」筛选,烹制日期默认当天 +- 表头重构:去掉计划/实际烹制规格、视频记录,新增餐品规格/需求份数/烹制份数/烹制日期 +- 烹制状态前移至烹制份数后,食材明细/温度过程/模型数据列前移至生重/熟重/生熟比前 +- 生熟比格式改为 1:0.8 +- 操作列重构:固定三项 + hover 下拉 + 状态按钮(通知取餐/烹制完成/开始烹制) +- 新增烹制状态对应不同的操作按钮 + +##### 3. prod-proc-serve.html(上餐监控) +- 筛选栏新增「当前食堂」下拉 +- 操作列重构:保留「食材溯源链路」「查看视频」,将「详情/编辑/删除」合并为「更多▾」hover 下拉菜单 +- 新增上餐弹窗:选择已完成烹制餐品后自动回填信息卡片(任务号/菜品/厨师/出锅时间/温度/餐次/识别方式/重量) +- 新增 .action-more 下拉菜单样式体系 +- 调整表格列的顺序和部分内容 + +##### 4. prod-proc-surplus.html(余量处置) +- 筛选栏新增「当前食堂」下拉 +- 筛选栏新增「餐线」「餐次」下拉筛选框(位于食堂之后) +- 处置日期默认选中当天 +- 表格新增「餐线」列(位于餐次前)、「备注」列(位于处置方式后) +- 余量(kg)列使用红色字体显示,数据按余量倒序排列 +- 操作列重构:将「详情/编辑/删除」合并为「更多▾」hover 下拉菜单 +- 新增余量登记弹窗重构:餐线→餐次→菜品三级联动选择(菜品来自上餐监控),选择后自动回填计划制作量/实际制作量/销售取餐量/余量信息卡片 +- 处置方式选择「员工福利」时,弹窗下方动态显示员工领取记录表格(含操作列删除按钮),支持点击「+ 新增领取记录」按钮展开输入行 +- 员工福利取餐明细弹窗:新增「操作」列(删除按钮),新增底部「+ 新增领取记录」交互(点击后显示输入行,支持确认/取消) + +##### 5. prod-proc-stats.html(生产统计) +- 新增页面标题行 + 食堂切换下拉(canteen-select 高亮样式) +- 移除两个 Tab 筛选栏中原有的「食堂」筛选项 +- 生产报表 Tab:日期筛选从单个 date 改为日期范围(起始日期 至 结束日期),默认当月 +- 成本利润 Tab:日期筛选从单个 date 改为日期范围,默认当月 + +##### 6. prod-qc-daily.html(食安监控) +- 水电气表 Tab 移除「生成能耗日报」按钮 +- 水/电/气三张能耗卡片右上角新增「✏️ 录入」入口,支持手动编辑当前余量与今日用量 +- 新增页面标题行 + 食堂切换下拉切换 +- 新增摄像头回放弹窗(含播放器、时间轴、分时段列表) +- 新增新增证件、新增留样弹窗及交互 + +##### 7. prod-clean-order.html(净菜订单) +- 新增页面标题行 + 食堂切换下拉 +- 筛选栏新增「预定配送时间」日期范围筛选 +- 筛选栏新增「净菜类型」下拉(净菜包/餐品净菜包) +- 订单状态选项调整为:备货中/待配送/配送中/已完成,配送中进行确认收货操作 +- 新增弹窗通用样式与表单网格布局 +- 调整表格字段(净菜类型,调整规格与计量方式) + +##### 8. prod-proc-cabinet.html(净菜进柜) +- 新增页面标题行 + 食堂切换下拉 +- 重构页面样式(采用左侧柜体【支持切换】+右侧储物明细) +- 移除 Tab(食材净菜、餐品净菜包 、智能柜总览) 切换结构,改为左右分栏布局 +- 新增标签/链接通用样式 +- 新增手动存入净菜按钮及交互 + +##### 9. prod-recipe-plan.html(食谱规划) +- 选择餐品弹窗增加营养信息展示,对齐食谱规划页弹窗样式 +- 按周为单位进行食谱规划 + +#### 9.4 绿色种采 ##### 1.绿色种采-土地环境模块 - 地块管理:表格改为二级表头(基本信息+最新监测数据); - 新增灌溉方式/土壤类型/负责人字段; diff --git a/web-admin/nutrition/prod-proc-serve.html b/web-admin/nutrition/prod-proc-serve.html index 68aa7dc..b71407c 100644 --- a/web-admin/nutrition/prod-proc-serve.html +++ b/web-admin/nutrition/prod-proc-serve.html @@ -39,7 +39,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;} .table-card__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);} .table-card__title{font-size:var(--font-base);font-weight:600;} -.table-card__content{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;} +.table-card__content{overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;} .table-card__content table{min-width:100%;white-space:nowrap;} table{width:100%;border-collapse:collapse;} thead th{background:#FAFAFA;padding:12px 16px;text-align:left;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;} @@ -62,6 +62,39 @@ tbody tr:hover{background:#F8FBFF;} thead th:last-child,tbody td.td-actions{position:sticky;right:0;background:#fff;box-shadow:-4px 0 8px rgba(0,0,0,0.04);z-index:2;white-space:nowrap;} thead th:last-child{background:#FAFAFA;} tbody tr:hover td.td-actions{background:#F8FBFF;} +/* 更多下拉菜单 - hover触发 */ +.action-more{position:relative;display:inline-flex;} +.action-more__trigger{color:var(--primary);cursor:pointer;font-size:var(--font-sm);user-select:none;} +.action-more__trigger:hover{color:#40a9ff;} +.action-more__menu{display:none;position:absolute;right:0;bottom:100%;margin-bottom:4px;background:#fff;border-radius:var(--radius-sm);box-shadow:0 3px 12px rgba(0,0,0,0.15);min-width:90px;z-index:100;padding:4px 0;} +.action-more:hover .action-more__menu{display:block;} +.action-more__item{display:block;padding:6px 14px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;white-space:nowrap;transition:background .1s;} +.action-more__item:hover{background:var(--primary-light);color:var(--primary);} +.action-more__item--danger{color:var(--danger);} +.action-more__item--danger:hover{background:#FFF1F0;color:var(--danger);} +/* 弹窗 */ +.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.45);z-index:1000;display:flex;align-items:center;justify-content:center;} +.modal{background:#fff;border-radius:8px;max-height:85vh;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,0.15);} +.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid #e8e8e8;} +.modal-title{font-size:16px;font-weight:600;color:#262626;} +.modal-close{font-size:22px;cursor:pointer;color:#8c8c8c;line-height:1;}.modal-close:hover{color:#262626;} +.modal-body{padding:24px;} +.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e8e8e8;} +/* 表单网格 */ +.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;} +.form-grid .form-item--full{grid-column:1/-1;} +.form-item{display:flex;flex-direction:column;gap:6px;} +.form-item__label{font-size:13px;color:#595959;}.form-item__label em{color:var(--danger);font-style:normal;margin-right:2px;} +.form-item__input{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:13px;color:var(--text-primary);outline:none;background:#fff;} +.form-item__input:focus{border-color:var(--primary);} +.form-item__input[readonly]{background:#f5f5f5;color:#8c8c8c;cursor:not-allowed;} +.form-item__select{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 28px 0 12px;font-size:13px;color:var(--text-primary);outline:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;cursor:pointer;} +.form-item__select:focus{border-color:var(--primary);} +/* 回填信息卡片 */ +.autofill-card{background:#f6f9ff;border:1px solid #d6e4ff;border-radius:6px;padding:12px 16px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px 16px;} +.autofill-card__item{display:flex;flex-direction:column;gap:2px;} +.autofill-card__label{font-size:11px;color:#8c8c8c;} +.autofill-card__value{font-size:13px;color:#262626;font-weight:500;} @@ -87,15 +120,15 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
-
-
-
-
-
+
+
+
+
+ @@ -104,14 +137,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
上餐监控
- + - - - - - - + + + + + +
餐次菜品名称识别方式厨师烹制任务号出锅时间出锅温度(℃)送达餐线时间送达餐线送达设备(秤台)上餐重量(kg)上餐状态操作
送达餐线餐次送达设备(秤台)识别方式菜品名称当前余量(kg)上餐重量(kg)出锅时间送达餐线时间上餐状态烹制任务号出锅温度(℃)厨师操作
午餐宫保鸡丁🤖 自动识别张厨师COOK-00111:188211:30A区中餐线00025号秤38.2上餐中食材溯源链路 查看视频 详情 编辑 删除
午餐番茄炒蛋🤖 自动识别李厨师COOK-00211:207811:30A区中餐线00025号秤22.6上餐中食材溯源链路 查看视频 详情 编辑 删除
午餐红烧肉👤 人工选择王厨师COOK-00311:228611:38B区中餐线00027号秤42.6延误8分钟食材溯源链路 查看视频 详情 编辑 删除
早餐小米粥🤖 自动识别赵厨师COOK-00607:207507:28A区早餐线00022号秤12.6已结束食材溯源链路 查看视频 详情 编辑 删除
早餐燕麦粥👤 人工选择陈厨师COOK-00707:227207:35B区早餐线00023号秤8.4延误5分钟食材溯源链路 查看视频 详情 编辑 删除
午餐蒜蓉菠菜👤 人工选择COOK-005C区快餐线00028号秤待上餐食材溯源链路 查看视频 详情 编辑 删除
A区中餐线午餐00025号秤🤖 自动识别宫保鸡丁12.538.211:1811:30上餐完成COOK-00182张厨师食材溯源链路 查看视频 更多 ▾
A区中餐线午餐00025号秤🤖 自动识别番茄炒蛋8.322.611:2011:30上餐完成COOK-00278李厨师食材溯源链路 查看视频 更多 ▾
B区中餐线午餐00027号秤👤 人工选择红烧肉1.242.611:2211:38余量不足COOK-00386王厨师食材溯源链路 查看视频 更多 ▾
A区早餐线早餐00022号秤🤖 自动识别小米粥012.607:2007:28上餐完成COOK-00675赵厨师食材溯源链路 查看视频 更多 ▾
B区早餐线早餐00023号秤👤 人工选择燕麦粥2.18.407:2207:35上餐完成COOK-00772陈厨师食材溯源链路 查看视频 更多 ▾
C区快餐线午餐00028号秤👤 人工选择蒜蓉菠菜待上餐COOK-005食材溯源链路 查看视频 更多 ▾
@@ -121,6 +154,112 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
- + + + + + diff --git a/web-admin/nutrition/prod-proc-stats.html b/web-admin/nutrition/prod-proc-stats.html index aa8e810..0586d2e 100644 --- a/web-admin/nutrition/prod-proc-stats.html +++ b/web-admin/nutrition/prod-proc-stats.html @@ -146,7 +146,7 @@ tr.summary-row td{font-weight:700;background:#FAFAFA;}
-
+
@@ -171,7 +171,7 @@ tr.summary-row td{font-weight:700;background:#FAFAFA;}
-
+
@@ -217,6 +217,17 @@ tr.summary-row td{font-weight:700;background:#FAFAFA;}
+ + diff --git a/web-admin/nutrition/arc-employee.html b/web-admin/nutrition/arc-employee.html index 1def294..42e1505 100644 --- a/web-admin/nutrition/arc-employee.html +++ b/web-admin/nutrition/arc-employee.html @@ -115,6 +115,7 @@ ${CSS_RULE} 👤员工营养数据 🏢单位报表数据 + 🍽️食堂报表数据 🤖算法模型 diff --git a/web-admin/nutrition/arc-unit.html b/web-admin/nutrition/arc-unit.html index bef1a59..53160e0 100644 --- a/web-admin/nutrition/arc-unit.html +++ b/web-admin/nutrition/arc-unit.html @@ -140,6 +140,7 @@ tbody tr:hover{background:#F8FBFF;} 👤员工营养数据 🏢单位报表数据 + 🍽️食堂报表数据 🤖算法模型
diff --git a/web-admin/nutrition/farm-monitor-crop.html b/web-admin/nutrition/farm-monitor-crop.html index b009b18..abb6291 100644 --- a/web-admin/nutrition/farm-monitor-crop.html +++ b/web-admin/nutrition/farm-monitor-crop.html @@ -122,6 +122,22 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} .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);} +/* 巡检记录弹窗 */ +.inspection-modal{width:960px;max-height:85vh;} +.inspection-header-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;} +.inspection-header-bar .batch-info{font-size:var(--font-sm);color:var(--text-secondary);} +.inspection-header-bar .batch-info strong{color:var(--text-primary);margin-right:16px;} +.inspection-table{width:100%;border-collapse:collapse;font-size:var(--font-sm);} +.inspection-table thead th{background:#FAFAFA;padding:10px 12px;text-align:left;color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;} +.inspection-table tbody td{padding:12px;color:var(--text-primary);border-bottom:1px solid var(--border);} +.inspection-table tbody tr:last-child td{border-bottom:none;} +.inspection-table tbody tr:hover{background:#F8FBFF;} +.inspection-empty{text-align:center;padding:40px 0;color:var(--text-placeholder);font-size:var(--font-sm);} +/* 巡检内联编辑行 */ +.inspection-table .edit-row td{background:#F9FAFB;padding:8px;} +.inspection-table .edit-row input,.inspection-table .edit-row select,.inspection-table .edit-row textarea{height:32px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;outline:none;width:100%;min-width:80px;} +.inspection-table .edit-row input:focus,.inspection-table .edit-row select:focus,.inspection-table .edit-row textarea:focus{border-color:var(--primary);} +.inspection-table .edit-row textarea{height:32px;padding:4px 8px;resize:none;} @@ -173,31 +189,31 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
-
🌱
+
🗺️
-
24
-
监控地块
+
5
+
种植地块数
-
+
🌱
-
21
-
生长正常
+
18
+
本年总批次
-
🐛
+
🌾
-
2
-
虫害预警
+
4
+
在种批次
-
⚠️
+
📦
-
1
-
生长异常
+
3
+
待收获批次
@@ -214,22 +230,26 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} + +
- +
- - + + + +
@@ -237,7 +257,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
- +
@@ -255,79 +275,121 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} 地块名称 作物名称 品种 + 种植面积(亩) 播种日期 - 当前生长周期 - 生长状态 - 虫害预警 - 病虫害处理记录 预计收获日期 - 巡检人 + 当前生长周期 + 灌溉方式 + 健康状况 + 种植负责人 + 负责人电话 + 种植状态 操作 - CROP-202604-001 + CROP-202601-001 A区蔬菜基地 菠菜 尖叶菠菜 - 2026-03-20 - 生长期 - 正常 - 无 - — - 2026-04-24 - 李巡检 - 详情 编辑 删除 + 12.5 + 2026-01-10 + 2026-03-15 + 成熟期 + 滴灌 + 良好 + 李建国 + 138****2051 + 已收获 + 详情 编辑 删除 巡检记录 - CROP-202604-002 + CROP-202603-002 B区根茎基地 胡萝卜 红芯胡萝卜 + 8.0 2026-03-01 + 2026-05-28 成熟期 - 正常 - 无 - — - 2026-04-28 - 王巡检 - 详情 编辑 删除 + 喷灌 + 良好 + 王志强 + 139****8837 + 生长中 + 详情 编辑 删除 巡检记录 - CROP-202604-003 - C区菌菇大棚 - 香菇 - 808香菇 - 2026-04-01 - 幼苗期 - 虫害预警 - 有:蚜虫 - 2026-04-21 喷施苦参碱,待复查 - 待定 - 李巡检 - 详情 编辑 删除 + CROP-202603-003 + A区蔬菜基地 + 油麦菜 + 香油麦 + 6.0 + 2026-03-20 + 2026-05-10 + 成熟期 + 滴灌 + 良好 + 李建国 + 138****2051 + 已收获 + 详情 编辑 删除 巡检记录 CROP-202604-004 + C区菌菇大棚 + 香菇 + 808香菇 + 3.5 + 2026-04-01 + 2026-06-15 + 生长期 + 微喷 + 一般 + 张伟 + 137****6543 + 生长中 + 详情 编辑 删除 巡检记录 + + + CROP-202604-005 D区豆类基地 四季豆 架豆王 - 2026-03-15 - 生长期 - 正常 - 无 - — - 2026-04-26 - 张巡检 - 详情 编辑 删除 + 10.0 + 2026-04-15 + 2026-07-10 + 幼苗期 + 沟灌 + 良好 + 赵明 + 136****9021 + 生长中 + 详情 编辑 删除 巡检记录 + + + CROP-202605-006 + E区叶菜基地 + 生菜 + 罗马生菜 + 5.0 + 2026-05-05 + 2026-07-01 + 播种期 + 滴灌 + 良好 + 李建国 + 138****2051 + 播种期 + 详情 编辑 删除 巡检记录 - +