merge:解决冲突文件

This commit is contained in:
冯普
2026-05-26 11:34:27 +08:00
4271 changed files with 797819 additions and 4843 deletions
+58
View File
@@ -0,0 +1,58 @@
一级菜单|二级菜单|三级菜单|菜单功能描述
档案|个人监测数据||将员工历年产生的五类人群划分、健康排查、穿戴监测数据、体重监测数据进行归档,整体进行查看
|单位报表数据||将各单位历年产生的相关数据进行归档,包含穿戴设备、体重监测设备入库及分配情况、环境监测设备及布放位置等信息,整体进行查看
|算法模型||管理员可以在此查看该业务板块涉及到的算法模型说明文件。
健康排查|排查问卷|问题分类|管理员配置问卷问题分类信息。
||积分规则|管理员设置积分规则
||模板信息|管理员配置问卷问题模板信息,关联用户分类和问题分类
||问题管理|管理员配置问卷问题信息,配置所属问题分类
|格言管理||管理员配置格言相关知识信息
|排查记录|用户排查|管理员查看员工填写的问卷排查信息,详细排查记录
||部门排查|管理员以部门为维度,统计每个部门排查的人数
穿戴监测|工具管理||健康监测工具管理主要包含管理员对工具的新增,入库导入,列表支持工具编码绑定状态等搜索;工具绑定支持单个设备绑定和批量导出绑定,同时支持查看设备的绑定记录
|绑定记录||此功能是系统对管理员提供健康监测工具绑定用户的操作记录查询,导出功能,支持单位和员工信息的筛选
|用户数据||管理员查看员工的监测工具上报数据,列表可查看各项指标的最新值,数据详情中可根据时间范围查看具体监测项的趋势变化和历史明细数据
|异常事件||管理员查看员工检测指标(一键告警,体温异常,心率异常,血氧异常,压力异常)告警数据以及告警位置,支持查看全时段历史异常数据
|通知消息||管理员可通过后台给佩戴健康监测工具的员工发送消息通知,通知范围提供全员通知和指定员工两种模式
|部门数据统计||数据列表以单位或作业区为维度统计该单位下穿戴设备的佩戴情况和数据异常人数支持数据导出;明细数据可查看该单位下每位员工每天的穿戴设备佩戴记录,同时支持数据导出
|个人数据统计||以天为维度查看每位员工当天的统计数据(主要统计各类监测数据的最大值,最小值,平均值,数据总量等)
体重监测|体重秤|设备管理|系统提供针对管理员进行身高体重秤设备的新增和导入功能,列表支持设备信息的搜索;注:体重秤目前仅支持两个厂商(数字味道、上禾电子)的设备,每个厂商的数据对接渠道不同
||设备监测|管理员可以通过列表页查看每个身高体重秤的使用频率统计并可根据使用频率排序,数据明细中可查看具体每次的使用测量记录,支持员工实名和员工匿名两个维度的查询
||设备统计|管理员查看单位、个人两种维度的身高体重大秤统计信息
|蓝牙称|设备管理|系统提供针对管理员进行个人体重秤设备的新增和导入功能,列表支持设备信息和人员信息的搜索;绑定管理支持设备绑定员工和解绑员工,同时支持批量导入绑定信息
||设备监测|管理员可以通过列表页查看每个体脂称的最新测量数据,数据明细中支持查看每个秤的历史使用情况和员工体重变化趋势
||设备统计|管理员查看单位、个人两种维度的个人体重小秤统计信息
|体脂仪|设备管理|系统针对管理员提供体脂仪设备的新增和导入功能,列表支持设备信息的搜索
||设备监测|管理员可通过列表页查看每个体脂仪的使用频率统计并可根据使用频率排序,数据明细中可查看具体每次的使用测量记录,支持员工实名和员工匿名两个维度的查询
||设备统计|管理员查看单位、个人两种维度的人体成分仪统计信息
|运动器械|设备管理|系统针对管理员提供运动设备的新增和导入导出功能,列表支持设备信息的搜索
||设备监测|管理员可通过列表页查看每个体脂仪的使用频率统计并可根据使用频率排序,数据明细中可查看具体每次的使用测量记录,支持员工实名和员工匿名两个维度的查询
||设备统计|管理员查看单位、个人两种维度的运动器械统计信息
|员工数据||管理员可以用过列表形式查看员工最新的监测数据,包含测量时间、测量设备、身高、体重、BMI、体脂率,点击测量记录可以查看员工详细的测量历史记录信息
环境监测|室内空气|设备列表|管理员维护室内环境监测设备的信息,列表查看所有设备,支持切换地图展示方式
||设备分类|管理员维护室内环境监测设备分类信息,统一设置不同监测指标的阈值
||数据监测|管理员查看室内环境监测设备的最新监测数据,点开详情查看不同监测指标近30日的变化趋势
||异常报警|管理员查看室内环境监测设备的指标异常报警信息
||应用记录|管理员查看移动端在室内环境模块点击查看的次数
||历史数据|管理员查看室内环境监测设备的历史监测数据和历史异常数据
|室外空气|设备列表|管理员维护室外环境监测设备的信息,列表查看所有设备,支持切换地图展示方式
||设备分类|管理员维护室外环境监测设备分类信息,统一设置不同监测指标的阈值
||数据监测|管理员查看室外环境监测设备的最新监测数据,点开详情查看不同监测指标近30日的变化趋势
||异常报警|管理员查看室外环境监测设备的指标异常报警信息
||应用记录|管理员查看移动端在室外环境模块点击查看的次数
||历史数据|管理员查看室外环境监测设备的历史监测数据和历史异常数据
|水质监测|设备列表|管理员维护水质监测设备的信息,列表查看所有设备,支持切换地图展示方式。
||设备分类|管理员维护水质监测设备分类信息,统一设置不同监测指标的阈值
||数据监测|管理员查看水质监测设备的最新监测数据,点开详情查看不同监测指标近30日的变化趋势
||异常报警|管理员查看水质监测设备的指标异常报警信息
||应用记录|管理员查看移动端在水质监测模块点击查看的次数
||历史数据|管理员查看水质监测设备的历史监测数据和历史异常数据
|花粉监测|设备列表|管理员维护花粉监测设备的信息,列表查看所有设备,支持切换地图展示方式。
||设备分类|管理员维护花粉监测设备分类信息,统一设置不同监测指标的阈值
||数据监测|管理员查看花粉监测设备的最新监测数据,点开详情查看不同监测指标近30日的变化趋势
||异常报警|管理员查看花粉监测设备的指标异常报警信息
||应用记录|管理员查看移动端在花粉监测模块点击查看的次数
||历史数据|管理员查看花粉监测设备的历史监测数据和历史异常数据
||知识科普|管理员维护移动端花粉监测模块显示的科普资源信息
异常事件|系统脏数据||生命体征不可能值(如心率 0 bpm 且有运动步数,血氧 > 100%)或设备连接异常数据(如心电波形数据丢失/断续)等情形被定义为系统脏数据。处理方案包括双重保障措施:首先,在业务系统中对数据质量进行严格控制,作为第一道保障;其次,将业务数据汇总至数据中台后进行清洗、质量筛查,中台标记异常数据并将问题数据回传给业务系统。系统将于实时向管理员(系统运维/数据专员)推送告警。
|结果异常||生命体征告警(如静息心率 > 100 bpm,血氧 < 90%,血压 > 140/90 mmHg)或设备长时间失联(如 24小时无数据上传)被定义为结果异常。数据入库后,中台根据医学/业务模型分析,判定为风险或异常,生成待办工单或预警。系统将于实时(针对高危)或每日定时(针对一般指标)向用户(本人)及管理员(医生/健康专员)推送。
+1 -1
View File
@@ -144,7 +144,7 @@ ${CSS_RULE}
<div class="sidebar-menu__title">档案</div>
<a class="sidebar-item" href="arc-employee.html"><span class="mi">👤</span>员工营养数据</a>
<a class="sidebar-item" href="arc-unit.html"><span class="mi">🏢</span>单位报表数据</a>
<a class="sidebar-item" href="arc-canteen.html"><span class="mi">🍽️</span>食堂报表数据</a>
<a class="sidebar-item" href="arc-canteen.html"><span class="mi">🍽️</span>场所报表数据</a>
<a class="sidebar-item active" href="arc-algo.html"><span class="mi">🤖</span>算法模型</a>
</div>
+8 -8
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>营养管理 - 食堂报表数据 | 健康长庆原型</title>
<title>营养管理 - 场所报表数据 | 健康长庆原型</title>
<style>
/* 设计令牌 */
*{box-sizing:border-box;margin:0;padding:0;}
@@ -124,7 +124,7 @@ tbody tr:hover{background:#F8FBFF;}
<div class="sidebar-menu__title">档案</div>
<a class="sidebar-item" href="arc-employee.html"><span class="mi">👤</span>员工营养数据</a>
<a class="sidebar-item" href="arc-unit.html"><span class="mi">🏢</span>单位报表数据</a>
<a class="sidebar-item active" href="arc-canteen.html"><span class="mi">🍽️</span>食堂报表数据</a>
<a class="sidebar-item active" href="arc-canteen.html"><span class="mi">🍽️</span>场所报表数据</a>
<a class="sidebar-item" href="arc-algo.html"><span class="mi">🤖</span>算法模型</a>
</aside>
@@ -137,7 +137,7 @@ tbody tr:hover{background:#F8FBFF;}
<div class="stat-card__icon blue">🍽️</div>
<div class="stat-card__info">
<div class="stat-card__value">12</div>
<div class="stat-card__label">食堂总数</div>
<div class="stat-card__label">场所总数</div>
</div>
</div>
<div class="stat-card">
@@ -174,7 +174,7 @@ tbody tr:hover{background:#F8FBFF;}
<!-- 筛选栏 -->
<div class="filter-bar">
<div class="filter-item">
<label>食堂名称</label>
<label>场所名称</label>
<select class="filter-select" style="min-width:160px;">
<option>全部</option>
<option>总部一食堂</option>
@@ -215,7 +215,7 @@ tbody tr:hover{background:#F8FBFF;}
<!-- 数据表格 -->
<div class="table-card">
<div class="table-card__header">
<div class="table-card__title">食堂运营数据(2026年)</div>
<div class="table-card__title">场所运营数据(2026年)</div>
</div>
<!-- Tab0: 运营总览 -->
@@ -224,7 +224,7 @@ tbody tr:hover{background:#F8FBFF;}
<table>
<thead>
<tr>
<th>食堂名称</th>
<th>场所名称</th>
<th>所属单位</th>
<th>餐线数量</th>
<th>开餐天数</th>
@@ -358,7 +358,7 @@ tbody tr:hover{background:#F8FBFF;}
<table>
<thead>
<tr>
<th>食堂名称</th>
<th>场所名称</th>
<th>所属单位</th>
<th>年度营收(元)</th>
<th>成本总计(元)</th>
@@ -496,7 +496,7 @@ function switchTab(idx) {
document.querySelectorAll('.tab-item').forEach(function(t, i) { t.classList.toggle('active', i === idx); });
document.querySelectorAll('.tab-panel').forEach(function(p, i) { p.classList.toggle('active', i === idx); });
/* 更新表格标题 */
var titles = ['食堂运营数据', '食堂成本效益数据'];
var titles = ['场所运营数据', '场所成本效益数据'];
var timeText = document.getElementById('timeSelect').options[document.getElementById('timeSelect').selectedIndex].text;
document.querySelector('.table-card__title').textContent = titles[idx] + '' + timeText + '';
}
+1 -1
View File
@@ -115,7 +115,7 @@ ${CSS_RULE}
<div class="sidebar-menu__title">档案</div>
<a class="sidebar-item active" href="arc-employee.html"><span class="mi">👤</span>员工营养数据</a>
<a class="sidebar-item" href="arc-unit.html"><span class="mi">🏢</span>单位报表数据</a>
<a class="sidebar-item" href="arc-canteen.html"><span class="mi">🍽️</span>食堂报表数据</a>
<a class="sidebar-item" href="arc-canteen.html"><span class="mi">🍽️</span>场所报表数据</a>
<a class="sidebar-item" href="arc-algo.html"><span class="mi">🤖</span>算法模型</a>
</aside>
+1 -1
View File
@@ -140,7 +140,7 @@ tbody tr:hover{background:#F8FBFF;}
<div class="sidebar-menu__title">档案</div>
<a class="sidebar-item" href="arc-employee.html"><span class="mi">👤</span>员工营养数据</a>
<a class="sidebar-item active" href="arc-unit.html"><span class="mi">🏢</span>单位报表数据</a>
<a class="sidebar-item" href="arc-canteen.html"><span class="mi">🍽️</span>食堂报表数据</a>
<a class="sidebar-item" href="arc-canteen.html"><span class="mi">🍽️</span>场所报表数据</a>
<a class="sidebar-item" href="arc-algo.html"><span class="mi">🤖</span>算法模型</a>
</div>
+1 -1
View File
@@ -146,7 +146,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
+1 -1
View File
@@ -147,7 +147,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
+16 -9
View File
@@ -2,7 +2,7 @@
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>营养管理 - 新增食堂 | 健康长庆原型</title>
<title>营养管理 - 新增场所 | 健康长庆原型</title>
<style>
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;background:#F5F7FA;color:#333;min-width:1280px;}
@@ -108,7 +108,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item active"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item active"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -149,9 +149,9 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<main class="main">
<!-- 面包屑 -->
<div class="breadcrumb">
<a href="din-canteen.html">食堂管理</a>
<a href="din-canteen.html">场所管理</a>
<span class="breadcrumb__sep">/</span>
<span>新增食堂</span>
<span>新增场所</span>
</div>
<!-- 基本信息表单 -->
@@ -159,16 +159,23 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<div class="form-card__title">基本信息</div>
<div class="form-grid">
<div class="form-group">
<label class="form-label">食堂名称<span class="required">*</span></label>
<input class="form-input" placeholder="请输入食堂名称">
<label class="form-label">场所名称<span class="required">*</span></label>
<input class="form-input" placeholder="请输入场所名称">
</div>
<div class="form-group">
<label class="form-label">食堂编号</label>
<label class="form-label">场所编号</label>
<input class="form-input" value="系统自动生成" disabled>
</div>
<div class="form-group">
<label class="form-label">食堂所属单位<span class="required">*</span></label>
<label class="form-label">场所类型<span class="required">*</span></label>
<div class="radio-group">
<label class="radio-item"><input type="radio" name="type" value="canteen" checked> 食堂</label>
<label class="radio-item"><input type="radio" name="type" value="restaurant"> 餐厅</label>
</div>
</div>
<div class="form-group">
<label class="form-label">场所所属单位<span class="required">*</span></label>
<select class="form-select">
<option value="">请选择所属单位</option>
<option>长庆油田总部</option>
@@ -274,7 +281,7 @@ document.querySelector('.map-mock').addEventListener('click',function(e){
});
function handleSave(){
alert('【交互说明】点击保存后,校验必填项,通过后保存并返回食堂列表页');
alert('【交互说明】点击保存后,校验必填项,通过后保存并返回场所列表页');
}
</script>
</body>
+5 -5
View File
@@ -40,7 +40,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
.breadcrumb{display:flex;align-items:center;gap:6px;font-size:var(--font-sm);color:var(--text-secondary);margin-bottom:16px;}
.breadcrumb a{color:var(--primary);text-decoration:none;}.breadcrumb a:hover{text-decoration:underline;}
.breadcrumb__sep{color:var(--text-placeholder);}
/* 食堂信息卡片 */
/* 场所信息卡片 */
.info-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:20px 24px;margin-bottom:20px;}
.info-card__title{font-size:var(--font-base);font-weight:600;margin-bottom:16px;display:flex;align-items:center;gap:8px;}
.info-card__title .icon{font-size:20px;}
@@ -111,7 +111,7 @@ tr:hover td{background:#FAFAFA;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item active"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item active"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -152,17 +152,17 @@ tr:hover td{background:#FAFAFA;}
<main class="main">
<!-- 面包屑 -->
<div class="breadcrumb">
<a href="din-canteen.html">食堂管理</a>
<a href="din-canteen.html">场所管理</a>
<span class="breadcrumb__sep">/</span>
<span>餐线管理</span>
</div>
<!-- 食堂基本信息 -->
<!-- 场所基本信息 -->
<div class="info-card">
<div class="info-card__title"><span class="icon">🏢</span> 总部一号食堂</div>
<div class="info-grid">
<div class="info-item">
<div class="info-item__label">食堂编号</div>
<div class="info-item__label">场所编号</div>
<div class="info-item__value">ST-2026-001</div>
</div>
<div class="info-item">
+21 -20
View File
@@ -2,7 +2,7 @@
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>营养管理 - 食堂管理 | 健康长庆原型</title>
<title>营养管理 - 场所管理 | 健康长庆原型</title>
<style>
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;background:#F5F7FA;color:#333;min-width:1280px;}
@@ -107,7 +107,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item active"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item active"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -148,8 +148,8 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<main class="main">
<!-- 筛选栏 -->
<div class="filter-bar">
<div class="filter-item"><label>食堂名称</label><input class="filter-input" placeholder="请输入食堂名称"></div>
<div class="filter-item"><label>食堂编号</label><input class="filter-input" placeholder="请输入食堂编号"></div>
<div class="filter-item"><label>场所名称</label><input class="filter-input" placeholder="请输入场所名称"></div>
<div class="filter-item"><label>场所编号</label><input class="filter-input" placeholder="请输入场所编号"></div>
<div class="filter-item"><label>所属单位</label>
<select class="filter-select">
<option value="">全部</option>
@@ -166,7 +166,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 操作按钮 -->
<div class="action-bar">
<a href="din-canteen-add.html" class="btn btn-primary" style="text-decoration:none;"> 新增食堂</a>
<a href="din-canteen-add.html" class="btn btn-primary" style="text-decoration:none;"> 新增场所</a>
<button class="btn btn-success">📥 导出列表数据</button>
<button class="btn btn-default">📋 查看导出任务</button>
</div>
@@ -174,15 +174,15 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 表格 -->
<div class="table-card">
<div class="table-card__header">
<div class="table-card__title">食堂列表</div>
<div class="table-card__title">场所列表</div>
<div class="table-card__actions"><span style="font-size:var(--font-xs);color:var(--text-secondary);">共 5 条</span></div>
</div>
<div class="table-card__content">
<table>
<thead><tr><th>食堂名称</th><th>食堂编号</th><th>所属单位</th><th>详细地址</th><th>操作</th></tr></thead>
<thead><tr><th>场所编号</th><th>场所名称</th><th>场所类型</th><th>所属单位</th><th>详细地址</th><th>操作</th></tr></thead>
<tbody>
<tr>
<td>总部一号食堂</td><td>ST-2026-001</td><td>长庆油田总部</td><td>陕西省西安市未央区凤城八路总部基地A区</td>
<td>ST-2026-001</td><td>总部一号食堂</td><td><span class="tag tag-blue">食堂</span></td><td>长庆油田总部</td><td>陕西省西安市未央区凤城八路总部基地A区</td>
<td class="td-actions">
<span class="link" onclick="openDrawer(0)">详情</span>
<a class="link" href="din-canteen-line.html?id=1&name=总部一号食堂">餐线管理</a>
@@ -191,7 +191,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</td>
</tr>
<tr>
<td>总部二号食堂</td><td>ST-2026-002</td><td>长庆油田总部</td><td>陕西省西安市未央区凤城八路总部基地B区</td>
<td>ST-2026-002</td><td>总部二号食堂</td><td><span class="tag tag-blue">食堂</span></td><td>长庆油田总部</td><td>陕西省西安市未央区凤城八路总部基地B区</td>
<td class="td-actions">
<span class="link" onclick="openDrawer(1)">详情</span>
<a class="link" href="din-canteen-line.html?id=2&name=总部二号食堂">餐线管理</a>
@@ -200,7 +200,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</td>
</tr>
<tr>
<td>采油一厂职工食堂</td><td>ST-2026-003</td><td>采油一厂</td><td>陕西省延安市安塞区采油一厂生活区</td>
<td>ST-2026-003</td><td>采油一厂职工食堂</td><td><span class="tag tag-blue">食堂</span></td><td>采油一厂</td><td>陕西省延安市安塞区采油一厂生活区</td>
<td class="td-actions">
<span class="link" onclick="openDrawer(2)">详情</span>
<a class="link" href="din-canteen-line.html?id=3&name=采油一厂职工食堂">餐线管理</a>
@@ -209,7 +209,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</td>
</tr>
<tr>
<td>采油二厂综合食堂</td><td>ST-2026-004</td><td>采油二厂</td><td>甘肃省庆阳市庆城县采油二厂驻地</td>
<td>ST-2026-004</td><td>采油二厂综合食堂</td><td><span class="tag tag-blue">食堂</span></td><td>采油二厂</td><td>甘肃省庆阳市庆城县采油二厂驻地</td>
<td class="td-actions">
<span class="link" onclick="openDrawer(3)">详情</span>
<a class="link" href="din-canteen-line.html?id=4&name=采油二厂综合食堂">餐线管理</a>
@@ -218,7 +218,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</td>
</tr>
<tr>
<td>采气一厂营养餐厅</td><td>ST-2026-005</td><td>采气一厂</td><td>陕西省榆林市靖边县采气一厂作业区</td>
<td>ST-2026-005</td><td>采气一厂营养餐厅</td><td><span class="tag tag-green">餐厅</span></td><td>采气一厂</td><td>陕西省榆林市靖边县采气一厂作业区</td>
<td class="td-actions">
<span class="link" onclick="openDrawer(4)">详情</span>
<a class="link" href="din-canteen-line.html?id=5&name=采气一厂营养餐厅">餐线管理</a>
@@ -237,7 +237,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="drawer-mask" id="drawerMask" onclick="closeDrawer()"></div>
<div class="drawer" id="drawer">
<div class="drawer__header">
<span class="drawer__title">食堂详情</span>
<span class="drawer__title">场所详情</span>
<span class="drawer__close" onclick="closeDrawer()">&times;</span>
</div>
<div class="drawer__body" id="drawerBody"></div>
@@ -249,18 +249,19 @@ function toggleSubgroup(header){header.parentElement.classList.toggle('open');}
/* 详情数据 */
var canteens=[
{name:'总部一号食堂',code:'ST-2026-001',unit:'长庆油田总部',address:'陕西省西安市未央区凤城八路总部基地A区',leader:'张建国',phone:'138****1001',terminal:'是'},
{name:'总部二号食堂',code:'ST-2026-002',unit:'长庆油田总部',address:'陕西省西安市未央区凤城八路总部基地B区',leader:'李红梅',phone:'139****2002',terminal:'是'},
{name:'采油一厂职工食堂',code:'ST-2026-003',unit:'采油一厂',address:'陕西省延安市安塞区采油一厂生活区',leader:'王志强',phone:'137****3003',terminal:'否'},
{name:'采油二厂综合食堂',code:'ST-2026-004',unit:'采油二厂',address:'甘肃省庆阳市庆城县采油二厂驻地',leader:'刘文静',phone:'136****4004',terminal:'是'},
{name:'采气一厂营养餐厅',code:'ST-2026-005',unit:'采气一厂',address:'陕西省榆林市靖边县采气一厂作业区',leader:'陈伟',phone:'135****5005',terminal:'否'}
{name:'总部一号食堂',code:'ST-2026-001',type:'食堂',unit:'长庆油田总部',address:'陕西省西安市未央区凤城八路总部基地A区',leader:'张建国',phone:'138****1001',terminal:'是'},
{name:'总部二号食堂',code:'ST-2026-002',type:'食堂',unit:'长庆油田总部',address:'陕西省西安市未央区凤城八路总部基地B区',leader:'李红梅',phone:'139****2002',terminal:'是'},
{name:'采油一厂职工食堂',code:'ST-2026-003',type:'食堂',unit:'采油一厂',address:'陕西省延安市安塞区采油一厂生活区',leader:'王志强',phone:'137****3003',terminal:'否'},
{name:'采油二厂综合食堂',code:'ST-2026-004',type:'食堂',unit:'采油二厂',address:'甘肃省庆阳市庆城县采油二厂驻地',leader:'刘文静',phone:'136****4004',terminal:'是'},
{name:'采气一厂营养餐厅',code:'ST-2026-005',type:'餐厅',unit:'采气一厂',address:'陕西省榆林市靖边县采气一厂作业区',leader:'陈伟',phone:'135****5005',terminal:'否'}
];
function openDrawer(idx){
var d=canteens[idx];
document.getElementById('drawerBody').innerHTML=
'<div class="detail-row"><div class="detail-label">食堂名称</div><div class="detail-value">'+d.name+'</div></div>'+
'<div class="detail-row"><div class="detail-label">食堂编号</div><div class="detail-value">'+d.code+'</div></div>'+
'<div class="detail-row"><div class="detail-label">场所编号</div><div class="detail-value">'+d.code+'</div></div>'+
'<div class="detail-row"><div class="detail-label">场所名称</div><div class="detail-value">'+d.name+'</div></div>'+
'<div class="detail-row"><div class="detail-label">场所类型</div><div class="detail-value"><span class="tag '+(d.type==='食堂'?'tag-blue':'tag-green')+'">'+d.type+'</span></div></div>'+
'<div class="detail-row"><div class="detail-label">所属单位</div><div class="detail-value">'+d.unit+'</div></div>'+
'<div class="detail-row"><div class="detail-label">详细地址</div><div class="detail-value">'+d.address+'</div></div>'+
'<div class="detail-row"><div class="detail-label">负责人</div><div class="detail-value">'+d.leader+'</div></div>'+
+5 -5
View File
@@ -181,7 +181,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -227,11 +227,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前食堂</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+5 -5
View File
@@ -172,7 +172,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -219,11 +219,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前餐厅</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">餐厅(东区)</option>
<option value="2">餐厅(西区)</option>
<option value="3">餐厅(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+5 -5
View File
@@ -408,7 +408,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -455,11 +455,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前食堂</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+1 -1
View File
@@ -117,7 +117,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item active"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
+1 -1
View File
@@ -121,7 +121,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item active"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
+1 -1
View File
@@ -184,7 +184,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🧪</span>食物成分</a>
+1 -1
View File
@@ -173,7 +173,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🧪</span>食物成分</a>
+1 -1
View File
@@ -139,7 +139,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item active"><span class="mi">🧪</span>食物成分</a>
+1 -1
View File
@@ -164,7 +164,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<!-- 侧边栏:营养用餐 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item active"><span class="mi">🧪</span>食物成分</a>
+5 -5
View File
@@ -163,7 +163,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</header>
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -190,11 +190,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</div>
<div class="page-header-bar__right">
<label>当前食堂</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+1 -1
View File
@@ -137,7 +137,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
+1 -1
View File
@@ -156,7 +156,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
+30 -30
View File
@@ -182,7 +182,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -229,11 +229,11 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前食堂</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
@@ -300,15 +300,15 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
<div class="table-card__content">
<table>
<thead>
<tr><th>日期</th><th>食堂</th><th>餐线名称</th><th>餐次</th><th>秤台编号</th><th>秤台状态</th><th>称台类型</th><th>上餐类型</th><th>开机时间</th><th>上餐时间</th><th>餐品名称</th><th>餐品单价</th><th>应收金额</th><th>实时重量(kg)</th><th>累计取餐重量</th><th>累计上餐生重(kg)</th><th>累计上餐重量</th><th>最高温度</th><th>最低温度</th><th>保鲜时间</th><th>取餐人次</th><th>取餐视频</th><th>上餐视频</th><th>操作</th></tr>
<tr><th>日期</th><th>场所</th><th>餐线名称</th><th>餐次</th><th>秤台编号</th><th>秤台状态</th><th>称台类型</th><th>上餐类型</th><th>开机时间</th><th>上餐时间</th><th>餐品名称</th><th>餐品单价</th><th>应收金额</th><th>实时重量(kg)</th><th>累计取餐重量</th><th>累计上餐生重(kg)</th><th>累计上餐重量</th><th>最高温度</th><th>最低温度</th><th>保鲜时间</th><th>取餐人次</th><th>取餐视频</th><th>上餐视频</th><th>操作</th></tr>
</thead>
<tbody>
<tr><td>2026-05-19</td><td>一号食堂</td><td>A区早餐线</td><td>早餐</td><td>00022号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>06:50</td><td>07:28</td><td>小米粥</td><td>¥5</td><td>¥1,600</td><td>12.6</td><td><a class="link">9.8kg</a></td><td>14.2</td><td><a class="link">12.6kg</a></td><td>68℃</td><td>55℃</td><td>09:30</td><td>320人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号食堂</td><td>B区早餐线</td><td>早餐</td><td>00023号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>06:55</td><td>07:35</td><td>燕麦粥</td><td>¥4</td><td>¥1,144</td><td>8.4</td><td><a class="link">6.2kg</a></td><td>9.6</td><td><a class="link">8.4kg</a></td><td>65℃</td><td>55℃</td><td>09:30</td><td>286人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>A区中餐线</td><td>中餐</td><td>00025号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>10:30</td><td>11:30</td><td>宫保鸡丁</td><td>¥14</td><td>¥6,804</td><td>38.2</td><td><a class="link">31.6kg</a></td><td>44.0</td><td><a class="link">38.2kg</a></td><td>75℃</td><td>71℃</td><td>13:30</td><td>486人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>B区中餐线</td><td>中餐</td><td>00026号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>10:35</td><td>11:38</td><td>红烧肉</td><td>¥16</td><td>¥6,592</td><td>42.6</td><td><a class="link">38.4kg</a></td><td>48.5</td><td><a class="link">42.6kg</a></td><td>72℃</td><td>68℃</td><td>13:30</td><td>412人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号食堂</td><td>C区快餐线</td><td>中餐</td><td>00027号秤</td><td><span class="tag tag-orange">无网络</span></td><td><span class="tag tag-gray">单称</span></td><td><span class="tag tag-blue">加餐</span></td><td>10:40</td><td>12:12</td><td>番茄炒蛋</td><td>¥8</td><td>¥1,024</td><td>16.8</td><td><a class="link">14.2kg</a></td><td>18.6</td><td><a class="link">16.8kg</a></td><td>74℃</td><td>70℃</td><td>13:30</td><td>128人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>三号食堂</td><td>D区晚餐线</td><td>晚餐</td><td>00028号秤</td><td><span class="tag tag-gray">未开机</span></td><td><span class="tag tag-gray">双称</span></td><td><span class="tag tag-gray">待上餐</span></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>19:30</td><td></td><td></td><td></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>A区早餐线</td><td>早餐</td><td>00022号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>06:50</td><td>07:28</td><td>小米粥</td><td>¥5</td><td>¥1,600</td><td>12.6</td><td><a class="link">9.8kg</a></td><td>14.2</td><td><a class="link">12.6kg</a></td><td>68℃</td><td>55℃</td><td>09:30</td><td>320人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号场所</td><td>B区早餐线</td><td>早餐</td><td>00023号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>06:55</td><td>07:35</td><td>燕麦粥</td><td>¥4</td><td>¥1,144</td><td>8.4</td><td><a class="link">6.2kg</a></td><td>9.6</td><td><a class="link">8.4kg</a></td><td>65℃</td><td>55℃</td><td>09:30</td><td>286人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>A区中餐线</td><td>中餐</td><td>00025号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>10:30</td><td>11:30</td><td>宫保鸡丁</td><td>¥14</td><td>¥6,804</td><td>38.2</td><td><a class="link">31.6kg</a></td><td>44.0</td><td><a class="link">38.2kg</a></td><td>75℃</td><td>71℃</td><td>13:30</td><td>486人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>B区中餐线</td><td>中餐</td><td>00026号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>10:35</td><td>11:38</td><td>红烧肉</td><td>¥16</td><td>¥6,592</td><td>42.6</td><td><a class="link">38.4kg</a></td><td>48.5</td><td><a class="link">42.6kg</a></td><td>72℃</td><td>68℃</td><td>13:30</td><td>412人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号场所</td><td>C区快餐线</td><td>中餐</td><td>00027号秤</td><td><span class="tag tag-orange">无网络</span></td><td><span class="tag tag-gray">单称</span></td><td><span class="tag tag-blue">加餐</span></td><td>10:40</td><td>12:12</td><td>番茄炒蛋</td><td>¥8</td><td>¥1,024</td><td>16.8</td><td><a class="link">14.2kg</a></td><td>18.6</td><td><a class="link">16.8kg</a></td><td>74℃</td><td>70℃</td><td>13:30</td><td>128人</td><td><a class="link">▶ 取餐</a></td><td><a class="link">▶ 上餐</a></td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>三号场所</td><td>D区晚餐线</td><td>晚餐</td><td>00028号秤</td><td><span class="tag tag-gray">未开机</span></td><td><span class="tag tag-gray">双称</span></td><td><span class="tag tag-gray">待上餐</span></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>19:30</td><td></td><td></td><td></td><td class="td-actions"><a class="link">详情</a></td></tr>
</tbody>
</table>
</div>
@@ -343,17 +343,17 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
<div class="table-card__content">
<table>
<thead>
<tr><th>统计日期</th><th>食堂</th><th>餐线名称</th><th>餐次</th><th>餐品数量</th><th>累计取餐重量(kg)</th><th>累计上餐重量(kg)</th><th>累计应收金额</th><th>取餐人次</th><th>平均取餐重量(g/人)</th><th>最高温度</th><th>最低温度</th><th>异常次数</th><th>操作</th></tr>
<tr><th>统计日期</th><th>场所</th><th>餐线名称</th><th>餐次</th><th>餐品数量</th><th>累计取餐重量(kg)</th><th>累计上餐重量(kg)</th><th>累计应收金额</th><th>取餐人次</th><th>平均取餐重量(g/人)</th><th>最高温度</th><th>最低温度</th><th>异常次数</th><th>操作</th></tr>
</thead>
<tbody>
<tr class="summary-row"><td>汇总</td><td></td><td></td><td></td><td>84道</td><td>1,286</td><td>1,540</td><td>¥58,420</td><td>5,612人</td><td>229g</td><td></td><td></td><td>3次</td><td></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>A区中餐线</td><td>中餐</td><td>12道</td><td>256</td><td>312</td><td>¥14,280</td><td>1,140人</td><td>225g</td><td>78℃</td><td>68℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>B区中餐线</td><td>中餐</td><td>10道</td><td>218</td><td>268</td><td>¥12,640</td><td>980人</td><td>222g</td><td>76℃</td><td>66℃</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>A区早餐线</td><td>早餐</td><td>8道</td><td>148</td><td>182</td><td>¥7,400</td><td>980人</td><td>151g</td><td>70℃</td><td>55℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-18</td><td>一号食堂</td><td>A区中餐线</td><td>中餐</td><td>12道</td><td>248</td><td>304</td><td>¥13,860</td><td>1,100人</td><td>226g</td><td>77℃</td><td>67℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-18</td><td>一号食堂</td><td>B区中餐线</td><td>中餐</td><td>10道</td><td>210</td><td>258</td><td>¥12,180</td><td>960人</td><td>219g</td><td>75℃</td><td>65℃</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-18</td><td>二号食堂</td><td>B区早餐线</td><td>早餐</td><td>8道</td><td>142</td><td>176</td><td>¥7,100</td><td>920人</td><td>154g</td><td>69℃</td><td>54℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-17</td><td>一号食堂</td><td>A区中餐线</td><td>中餐</td><td>11道</td><td>212</td><td>260</td><td>¥11,860</td><td>960人</td><td>221g</td><td>76℃</td><td>66℃</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>A区中餐线</td><td>中餐</td><td>12道</td><td>256</td><td>312</td><td>¥14,280</td><td>1,140人</td><td>225g</td><td>78℃</td><td>68℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>B区中餐线</td><td>中餐</td><td>10道</td><td>218</td><td>268</td><td>¥12,640</td><td>980人</td><td>222g</td><td>76℃</td><td>66℃</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>A区早餐线</td><td>早餐</td><td>8道</td><td>148</td><td>182</td><td>¥7,400</td><td>980人</td><td>151g</td><td>70℃</td><td>55℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-18</td><td>一号场所</td><td>A区中餐线</td><td>中餐</td><td>12道</td><td>248</td><td>304</td><td>¥13,860</td><td>1,100人</td><td>226g</td><td>77℃</td><td>67℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-18</td><td>一号场所</td><td>B区中餐线</td><td>中餐</td><td>10道</td><td>210</td><td>258</td><td>¥12,180</td><td>960人</td><td>219g</td><td>75℃</td><td>65℃</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-18</td><td>二号场所</td><td>B区早餐线</td><td>早餐</td><td>8道</td><td>142</td><td>176</td><td>¥7,100</td><td>920人</td><td>154g</td><td>69℃</td><td>54℃</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-17</td><td>一号场所</td><td>A区中餐线</td><td>中餐</td><td>11道</td><td>212</td><td>260</td><td>¥11,860</td><td>960人</td><td>221g</td><td>76℃</td><td>66℃</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
</tbody>
</table>
</div>
@@ -385,16 +385,16 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
<div class="table-card__content">
<table>
<thead>
<tr><th>日期</th><th>食堂</th><th>餐线名称</th><th>餐次</th><th>秤台编号</th><th>秤台状态</th><th>称台类型</th><th>上餐类型</th><th>餐品数量</th><th>累计应收金额</th><th>累计取餐重量(kg)</th><th>累计上餐生重(kg)</th><th>累计上餐重量(kg)</th><th>最高温度</th><th>最低温度</th><th>取餐人次</th><th>平均取餐重量(g/人)</th><th>异常次数</th><th>操作</th></tr>
<tr><th>日期</th><th>场所</th><th>餐线名称</th><th>餐次</th><th>秤台编号</th><th>秤台状态</th><th>称台类型</th><th>上餐类型</th><th>餐品数量</th><th>累计应收金额</th><th>累计取餐重量(kg)</th><th>累计上餐生重(kg)</th><th>累计上餐重量(kg)</th><th>最高温度</th><th>最低温度</th><th>取餐人次</th><th>平均取餐重量(g/人)</th><th>异常次数</th><th>操作</th></tr>
</thead>
<tbody>
<tr class="summary-row"><td>汇总</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>84道</td><td>¥58,420</td><td>1,286</td><td>1,720</td><td>1,540</td><td></td><td></td><td>5,612人</td><td>229g</td><td>3次</td><td></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>A区早餐线</td><td>早餐</td><td>00022号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>8道</td><td>¥7,400</td><td>148</td><td>186</td><td>182</td><td>70℃</td><td>55℃</td><td>980人</td><td>151g</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号食堂</td><td>B区早餐线</td><td>早餐</td><td>00023号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>6道</td><td>¥4,860</td><td>92</td><td>118</td><td>108</td><td>68℃</td><td>54℃</td><td>720人</td><td>128g</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>A区中餐线</td><td>中餐</td><td>00025号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>12道</td><td>¥14,280</td><td>256</td><td>342</td><td>312</td><td>78℃</td><td>68℃</td><td>1,140人</td><td>225g</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号食堂</td><td>B区中餐线</td><td>中餐</td><td>00026号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>10道</td><td>¥12,640</td><td>218</td><td>294</td><td>268</td><td>76℃</td><td>66℃</td><td>980人</td><td>222g</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号食堂</td><td>C区快餐线</td><td>中餐</td><td>00027号秤</td><td><span class="tag tag-orange">无网络</span></td><td><span class="tag tag-gray">单称</span></td><td><span class="tag tag-blue">加餐</span></td><td>6道</td><td>¥4,820</td><td>92</td><td>128</td><td>120</td><td>74℃</td><td>70℃</td><td>516人</td><td>178g</td><td>2次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>三号食堂</td><td>D区晚餐线</td><td>晚餐</td><td>00028号秤</td><td><span class="tag tag-gray">未开机</span></td><td><span class="tag tag-gray">双称</span></td><td><span class="tag tag-gray">待上餐</span></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>A区早餐线</td><td>早餐</td><td>00022号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>8道</td><td>¥7,400</td><td>148</td><td>186</td><td>182</td><td>70℃</td><td>55℃</td><td>980人</td><td>151g</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号场所</td><td>B区早餐线</td><td>早餐</td><td>00023号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>6道</td><td>¥4,860</td><td>92</td><td>118</td><td>108</td><td>68℃</td><td>54℃</td><td>720人</td><td>128g</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>A区中餐线</td><td>中餐</td><td>00025号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">单称</span></td><td><span class="tag tag-green">开餐</span></td><td>12道</td><td>¥14,280</td><td>256</td><td>342</td><td>312</td><td>78℃</td><td>68℃</td><td>1,140人</td><td>225g</td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>一号场所</td><td>B区中餐线</td><td>中餐</td><td>00026号秤</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-blue">双称</span></td><td><span class="tag tag-green">开餐</span></td><td>10道</td><td>¥12,640</td><td>218</td><td>294</td><td>268</td><td>76℃</td><td>66℃</td><td>980人</td><td>222g</td><td>1次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>二号场所</td><td>C区快餐线</td><td>中餐</td><td>00027号秤</td><td><span class="tag tag-orange">无网络</span></td><td><span class="tag tag-gray">单称</span></td><td><span class="tag tag-blue">加餐</span></td><td>6道</td><td>¥4,820</td><td>92</td><td>128</td><td>120</td><td>74℃</td><td>70℃</td><td>516人</td><td>178g</td><td>2次</td><td class="td-actions"><a class="link">详情</a></td></tr>
<tr><td>2026-05-19</td><td>三号场所</td><td>D区晚餐线</td><td>晚餐</td><td>00028号秤</td><td><span class="tag tag-gray">未开机</span></td><td><span class="tag tag-gray">双称</span></td><td><span class="tag tag-gray">待上餐</span></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>0次</td><td class="td-actions"><a class="link">详情</a></td></tr>
</tbody>
</table>
</div>
@@ -576,7 +576,7 @@ function showScaleDetail(row) {
'<div class="drawer-section__title">设备信息</div>' +
'<div class="drawer-fields">' +
'<div class="drawer-field"><span class="drawer-field__label">日期</span><span class="drawer-field__value">' + getText(0) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">食堂</span><span class="drawer-field__value">' + getText(1) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">场所</span><span class="drawer-field__value">' + getText(1) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">餐线名称</span><span class="drawer-field__value">' + getText(2) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">秤台编号</span><span class="drawer-field__value">' + getText(4) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">秤台状态</span><span class="drawer-field__value">' + get(5) + '</span></div>' +
@@ -632,7 +632,7 @@ function showSummaryDetail(row) {
'<div class="drawer-section__title">基本信息</div>' +
'<div class="drawer-fields">' +
'<div class="drawer-field"><span class="drawer-field__label">统计日期</span><span class="drawer-field__value">' + getText(0) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">食堂</span><span class="drawer-field__value">' + getText(1) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">场所</span><span class="drawer-field__value">' + getText(1) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">餐线名称</span><span class="drawer-field__value">' + getText(2) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">餐次</span><span class="drawer-field__value">' + getText(3) + '</span></div>' +
'</div>' +
@@ -714,7 +714,7 @@ function showScaleSummaryDetail(row) {
'<div class="drawer-section__title">基本信息</div>' +
'<div class="drawer-fields">' +
'<div class="drawer-field"><span class="drawer-field__label">日期</span><span class="drawer-field__value">' + getText(0) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">食堂</span><span class="drawer-field__value">' + getText(1) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">场所</span><span class="drawer-field__value">' + getText(1) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">餐线名称</span><span class="drawer-field__value">' + getText(2) + '</span></div>' +
'<div class="drawer-field"><span class="drawer-field__label">餐次</span><span class="drawer-field__value">' + getText(3) + '</span></div>' +
'</div>' +
+5 -5
View File
@@ -191,7 +191,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -237,11 +237,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前餐厅</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+5 -5
View File
@@ -214,7 +214,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -261,11 +261,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前食堂</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+5 -5
View File
@@ -245,7 +245,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -288,11 +288,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="recipe-toolbar">
<div class="recipe-toolbar__left">
<div class="filter-item">
<label>食堂</label>
<label>场所</label>
<select class="filter-select" id="canteenSelect">
<option value="1" selected>一号食堂</option>
<option value="2">二号食堂</option>
<option value="3">三号食堂</option>
<option value="1" selected>一号场所</option>
<option value="2">二号场所</option>
<option value="3">三号场所</option>
</select>
</div>
<div class="filter-item">
+5 -5
View File
@@ -172,7 +172,7 @@ tbody tr:hover{background:#F8FBFF;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -219,11 +219,11 @@ tbody tr:hover{background:#F8FBFF;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前食堂</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+5 -5
View File
@@ -329,7 +329,7 @@ tbody td.td-actions{overflow:visible;}
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -376,11 +376,11 @@ tbody td.td-actions{overflow:visible;}
<span class="page-header-bar__meta">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前餐厅</label>
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">餐厅(东区)</option>
<option value="2">餐厅(西区)</option>
<option value="3">餐厅(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
+53
View File
@@ -1,5 +1,58 @@
# 营养用餐管理端 CHANGELOG
## [2026-05-26]
### 优化 — 营养模块全量术语更新(食堂/餐厅→场所)
**全模块 63 个 HTML 页面完整术语替换**:
- **菜单导航**:所有页面侧边栏菜单"食堂管理" → "场所管理"
- **页面标题与表格标题**:所有涉及"食堂"/"餐厅"的页面标题、表格列标题统一改为"场所"
- **表单字段标签**
- "食堂名称" → "场所名称"
- "食堂编号" → "场所编号"
- "当前食堂" → "当前场所"
- "选择食堂" → "选择场所"
- "申领食堂" → "申领场所"
- "当前餐厅" → "当前场所"
- **筛选栏与下拉选项**:所有筛选项、下拉菜单中的"食堂"改为"场所"
- **表格数据行**:表格中的"食堂"术语改为"场所"(如"一号食堂厨房" → "一号场所厨房"
- **JavaScript 代码**:Drawer 详情项、表单字段标签等代码中的"食堂"改为"场所"
- **注释**:代码注释中的"食堂切换" → "场所切换"
**保留规则**
- 具体场所名称(如"总部一号食堂"、"采气一厂营养餐厅"等)保留不改
- 类型选项(单选框中的"食堂"/"餐厅")保留不改
- 数据库字段名保留不改
**涉及文件**(共 20+ 个):
- 场所管理:`din-canteen.html`, `din-canteen-add.html`, `din-canteen-line.html`
- 用餐管理:`din-user-mgmt.html`, `din-order-meal.html`, `din-order-pickup.html`, `din-order-line.html`
- 生产管理:`prod-clean-order.html`, `prod-proc-cabinet.html`, `prod-proc-combo.html`, `prod-proc-cook.html`, `prod-proc-serve.html`, `prod-proc-stats.html`, `prod-proc-surplus.html`, `prod-qc-daily.html`, `prod-qc-nutrition.html`, `prod-qc-nutrition-add.html`
- 供应管理:`sup-clean-internal.html`, `sup-clean-external.html`, `sup-in-cleanin.html`
- 其他:`din-data-benefit.html`, `din-data-nutri.html`, `din-innovation.html`, `din-recipe-mgmt.html`, `din-terminal.html`, `farm-purchase.html`
### 优化 — 场所管理模块命名与功能完善
- **`din-canteen.html`** 场所管理(原食堂管理)
- 菜单名称:食堂管理 → 场所管理
- 页面标题、表格标题、按钮文案中的"食堂"统一改为"场所"
- 筛选栏字段:食堂名称 → 场所名称,食堂编号 → 场所编号
- 表格列顺序调整:场所编号、场所名称、**场所类型**、所属单位、详细地址、操作
- 新增"场所类型"列,显示"食堂"或"餐厅"标签(蓝色/绿色区分)
- 详情抽屉标题:食堂详情 → 场所详情
- 详情抽屉字段顺序调整:场所编号、场所名称、场所类型、所属单位、详细地址、负责人、负责人电话、使用三减终端
- **`din-canteen-add.html`** 新增/编辑场所
- 页面标题:新增食堂 → 新增场所
- 面包屑导航:食堂管理 → 场所管理,新增食堂 → 新增场所
- 表单字段:食堂名称 → 场所名称,食堂编号 → 场所编号,食堂所属单位 → 场所所属单位
- 新增"场所类型"单选框字段(食堂/餐厅),位置在场所编号之后
- 保存提示文案:返回食堂列表页 → 返回场所列表页
- **`din-canteen-line.html`** 餐线管理
- 侧边栏菜单:食堂管理 → 场所管理
## [2026-05-25]
### 修复 — 绿色种采 · 土地环境页面结构修正
File diff suppressed because it is too large Load Diff
+24 -24
View File
@@ -217,7 +217,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</div>
<div class="stat-card">
<div class="stat-card__icon blue">🏠</div>
<div class="stat-card__info"><div class="stat-card__value">3</div><div class="stat-card__label">采购食堂</div></div>
<div class="stat-card__info"><div class="stat-card__value">3</div><div class="stat-card__label">采购场所</div></div>
</div>
</div>
@@ -228,9 +228,9 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<input class="filter-input" type="text" placeholder="请输入采购单号">
</div>
<div class="filter-item">
<label>采购食堂</label>
<label>采购场所</label>
<select class="filter-select">
<option>全部</option><option>一号食堂</option><option>二号食堂</option><option>三号食堂</option>
<option>全部</option><option>一号场所</option><option>二号场所</option><option>三号场所</option>
</select>
</div>
<div class="filter-item">
@@ -274,7 +274,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<tr>
<th style="width:40px;"></th>
<th>采购单号</th>
<th>采购食堂</th>
<th>采购场所</th>
<th>供应商</th>
<th>食材品种数</th>
<th>总金额</th>
@@ -290,7 +290,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<tr>
<td><span class="expand-toggle" onclick="toggleRow(this,'detail-1')"></span></td>
<td>PO-20260416-005</td>
<td>二号食堂</td>
<td>二号场所</td>
<td>绿源蔬菜配送</td>
<td>2 种</td>
<td style="font-weight:600;">¥660</td>
@@ -316,7 +316,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<tr>
<td><span class="expand-toggle" onclick="toggleRow(this,'detail-2')"></span></td>
<td>PO-20260415-001</td>
<td>一号食堂</td>
<td>一号场所</td>
<td>绿源蔬菜配送</td>
<td>3 种</td>
<td style="font-weight:600;">¥485</td>
@@ -343,7 +343,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<tr>
<td><span class="expand-toggle" onclick="toggleRow(this,'detail-3')"></span></td>
<td>PO-20260415-002</td>
<td>一号食堂</td>
<td>一号场所</td>
<td>鲜肉直供公司</td>
<td>2 种</td>
<td style="font-weight:600;">¥8,480</td>
@@ -369,7 +369,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<tr>
<td><span class="expand-toggle" onclick="toggleRow(this,'detail-4')"></span></td>
<td>PO-20260414-003</td>
<td>二号食堂</td>
<td>二号场所</td>
<td>海鲜水产配送</td>
<td>3 种</td>
<td style="font-weight:600;">¥3,860</td>
@@ -396,7 +396,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<tr>
<td><span class="expand-toggle" onclick="toggleRow(this,'detail-5')"></span></td>
<td>PO-20260413-004</td>
<td>三号食堂</td>
<td>三号场所</td>
<td>粮油批发商行</td>
<td>2 种</td>
<td style="font-weight:600;">¥6,188</td>
@@ -444,14 +444,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="modal-body">
<!-- 基本信息 -->
<div class="form-grid">
<div class="form-item"><label>采购食堂<span class="required">*</span></label><select id="fm-canteen" onchange="showCanteenContact()"><option value="">请选择食堂</option><option>一号食堂</option><option>二号食堂</option><option>三号食堂</option></select></div>
<div class="form-item"><label>采购场所<span class="required">*</span></label><select id="fm-canteen" onchange="showCanteenContact()"><option value="">请选择场所</option><option>一号场所</option><option>二号场所</option><option>三号场所</option></select></div>
<div class="form-item"><label>供应商<span class="required">*</span></label><select id="fm-supplier" onchange="showSupplierContact()"><option value="">请选择供应商</option><option>绿源蔬菜配送</option><option>鲜肉直供公司</option><option>海鲜水产配送</option><option>粮油批发商行</option></select></div>
<div class="form-item"><label>预计到货日期<span class="required">*</span></label><input type="date" id="fm-arrival"></div>
<div class="form-item"><label>采购单来源</label><select id="fm-source"><option>手动创建</option><option>食谱搭配</option></select></div>
</div>
<!-- 联系人回显 -->
<div id="contactInfoBar" style="display:none;margin-top:12px;padding:10px 16px;background:#F6F8FA;border-radius:var(--radius-sm);display:none;gap:24px;font-size:var(--font-sm);color:var(--text-secondary);">
<span id="ciCanteen" style="display:none;">食堂联系人:<strong id="ciCanteenName"></strong>&nbsp;&nbsp;电话:<strong id="ciCanteenPhone"></strong></span>
<span id="ciCanteen" style="display:none;">场所联系人:<strong id="ciCanteenName"></strong>&nbsp;&nbsp;电话:<strong id="ciCanteenPhone"></strong></span>
<span id="ciSupplier" style="display:none;">供应商联系人:<strong id="ciSupplierName"></strong>&nbsp;&nbsp;电话:<strong id="ciSupplierPhone"></strong></span>
</div>
<!-- 食材明细 -->
@@ -488,8 +488,8 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 订单信息 -->
<div class="drawer-section-title">订单信息</div>
<div class="detail-grid" id="drawerOrderInfo"></div>
<!-- 食堂信息 -->
<div class="drawer-section-title">采购食堂信息</div>
<!-- 场所信息 -->
<div class="drawer-section-title">采购场所信息</div>
<div class="detail-grid" id="drawerCanteenInfo"></div>
<!-- 供应商信息 -->
<div class="drawer-section-title">供应商信息</div>
@@ -577,7 +577,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<option value="">请选择</option>
<option>供应商自送</option>
<option>第三方物流</option>
<option>食堂自提</option>
<option>场所自提</option>
</select>
</div>
<div class="form-item">
@@ -626,9 +626,9 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<script>
/* ===== 联系人模拟数据 ===== */
var canteenContacts = {
'一号食堂': {contact:'王建国', phone:'029-8812-3001'},
'二号食堂': {contact:'赵芳', phone:'029-8812-3002'},
'三号食堂': {contact:'刘洋', phone:'029-8812-3003'}
'一号场所': {contact:'王建国', phone:'029-8812-3001'},
'二号场所': {contact:'赵芳', phone:'029-8812-3002'},
'三号场所': {contact:'刘洋', phone:'029-8812-3003'}
};
var supplierContacts = {
'绿源蔬菜配送': {contact:'李明', phone:'138-9912-3456'},
@@ -639,14 +639,14 @@ var supplierContacts = {
/* ===== 模拟数据 ===== */
var orders = [
{ no:'PO-20260416-005', canteen:'二号食堂', canteenContact:'赵芳', canteenPhone:'029-8812-3002',
{ no:'PO-20260416-005', canteen:'二号场所', canteenContact:'赵芳', canteenPhone:'029-8812-3002',
supplier:'绿源蔬菜配送', supplierContact:'李明', supplierPhone:'138-9912-3456',
date:'2026-04-16', arrival:'2026-04-17', source:'食谱搭配', status:'待接单', total:'¥660',
items:[
{trace:'ST-EX-LY01-VG-XLHU-080K-20260416-001',name:'西兰花',cat:'蔬菜类',qty:80,spec:'散装(kg)',price:4.5,subtotal:'¥360',remark:'—'},
{trace:'ST-EX-LY01-VG-QCAI-120K-20260416-002',name:'芹菜',cat:'蔬菜类',qty:120,spec:'散装(kg)',price:2.5,subtotal:'¥300',remark:'—'}
]},
{ no:'PO-20260415-001', canteen:'一号食堂', canteenContact:'王建国', canteenPhone:'029-8812-3001',
{ no:'PO-20260415-001', canteen:'一号场所', canteenContact:'王建国', canteenPhone:'029-8812-3001',
supplier:'绿源蔬菜配送', supplierContact:'李明', supplierPhone:'138-9912-3456',
date:'2026-04-15', arrival:'2026-04-16', source:'食谱搭配', status:'待发货', total:'¥485',
items:[
@@ -654,7 +654,7 @@ var orders = [
{trace:'ST-EX-LY01-VG-BCAI-080K-20260415-003',name:'白菜',cat:'蔬菜类',qty:80,spec:'散装(kg)',price:1.8,subtotal:'¥144',remark:'—'},
{trace:'ST-EX-LY01-VG-HLUB-120K-20260415-004',name:'胡萝卜',cat:'蔬菜类',qty:120,spec:'散装(kg)',price:1.8,subtotal:'¥216',remark:'—'}
]},
{ no:'PO-20260415-002', canteen:'一号食堂', canteenContact:'王建国', canteenPhone:'029-8812-3001',
{ no:'PO-20260415-002', canteen:'一号场所', canteenContact:'王建国', canteenPhone:'029-8812-3001',
supplier:'鲜肉直供公司', supplierContact:'张伟', supplierPhone:'139-0088-7654',
date:'2026-04-15', arrival:'2026-04-16', source:'食谱搭配', status:'待收货', total:'¥8,480',
deliveryMethod:'供应商自送', deliveryPerson:'张伟', deliveryPhone:'139-0088-7654', deliveryETA:'2026-04-16 14:00',
@@ -662,7 +662,7 @@ var orders = [
{trace:'ST-EX-XR01-MT-ZLRJ-080K-20260415-005',name:'猪里脊',cat:'肉禽类',qty:80,spec:'25kg/件',price:28,subtotal:'¥2,240',remark:'需冷链运输'},
{trace:'ST-EX-XR01-MT-ZWUA-240K-20260415-006',name:'猪五花',cat:'肉禽类',qty:240,spec:'25kg/件',price:26,subtotal:'¥6,240',remark:'—'}
]},
{ no:'PO-20260414-003', canteen:'二号食堂', canteenContact:'赵芳', canteenPhone:'029-8812-3002',
{ no:'PO-20260414-003', canteen:'二号场所', canteenContact:'赵芳', canteenPhone:'029-8812-3002',
supplier:'海鲜水产配送', supplierContact:'陈浩', supplierPhone:'136-7766-5432',
date:'2026-04-14', arrival:'2026-04-15', source:'手动创建', status:'已完成', total:'¥3,860',
deliveryMethod:'第三方物流', deliveryPerson:'陈浩', deliveryPhone:'136-7766-5432', deliveryETA:'2026-04-15 10:30',
@@ -671,7 +671,7 @@ var orders = [
{trace:'ST-EX-HS01-SF-JIYU-080K-20260414-002',name:'鲫鱼',cat:'水产类',qty:80,spec:'散装(kg)',price:16,subtotal:'¥1,280',remark:'—'},
{trace:'ST-EX-HS01-SF-XIAA-050K-20260414-003',name:'虾',cat:'水产类',qty:50,spec:'散装(kg)',price:30,subtotal:'¥1,500',remark:'冰鲜'}
]},
{ no:'PO-20260413-004', canteen:'三号食堂', canteenContact:'刘洋', canteenPhone:'029-8812-3003',
{ no:'PO-20260413-004', canteen:'三号场所', canteenContact:'刘洋', canteenPhone:'029-8812-3003',
supplier:'粮油批发商行', supplierContact:'孙强', supplierPhone:'137-5544-3210',
date:'2026-04-13', arrival:'2026-04-14', source:'手动创建', status:'已取消', total:'¥6,188',
cancelReason:'供应商无法供货',
@@ -824,8 +824,8 @@ function showDetail(idx) {
+ buildDetailRow('预计到货', o.arrival)
+ buildDetailRow('采购总额', '<span style="font-weight:600;color:var(--primary);">'+o.total+'</span>');
document.getElementById('drawerCanteenInfo').innerHTML =
buildDetailRow('采购食堂', o.canteen)
+ buildDetailRow('食堂联系人', o.canteenContact)
buildDetailRow('采购场所', o.canteen)
+ buildDetailRow('场所联系人', o.canteenContact)
+ buildDetailRow('联系电话', o.canteenPhone);
document.getElementById('drawerSupplierInfo').innerHTML =
buildDetailRow('供应商', o.supplier)
+5 -5
View File
@@ -144,18 +144,18 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="prod-proc-stats.html" class="sidebar-item"><span class="mi">📊</span>生产统计</a>
</aside>
<div class="main">
<!-- 页面标题行 + 食堂切换 -->
<!-- 页面标题行 + 场所切换 -->
<div class="page-header">
<div class="page-header__left">
<span class="page-header__title">净菜订单</span>
<span class="page-header__desc">2026-05-19 · 数据实时更新</span>
</div>
<div class="page-header__right">
<span class="page-header__label">当前食堂</span>
<span class="page-header__label">当前场所</span>
<select class="canteen-select">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(南区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(南区)</option>
</select>
</div>
</div>
+5 -5
View File
@@ -204,18 +204,18 @@ tbody tr.row-active td.td-actions{background:var(--primary-light);}
<a href="prod-proc-stats.html" class="sidebar-item"><span class="mi">📊</span>生产统计</a>
</aside>
<main class="main">
<!-- 页面标题行 + 食堂切换 -->
<!-- 页面标题行 + 场所切换 -->
<div class="page-header">
<div class="page-header__left">
<span class="page-header__title">净菜进柜</span>
<span class="page-header__desc">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header__right">
<span class="page-header__label">当前食堂</span>
<span class="page-header__label">当前场所</span>
<select class="canteen-select">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(南区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(南区)</option>
</select>
</div>
</div>
+1 -1
View File
@@ -161,7 +161,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="main">
<div class="filter-bar">
<div class="filter-item"><label>当前食堂</label><select class="filter-select"><option selected>长庆一食堂</option><option>长庆二食堂</option><option>长庆三食堂</option></select></div>
<div class="filter-item"><label>当前场所</label><select class="filter-select"><option selected>长庆一场所</option><option>长庆二场所</option><option>长庆三场所</option></select></div>
<div class="filter-item"><label>任务编号</label><input class="filter-input" type="text" placeholder="请输入任务编号"></div>
<div class="filter-item"><label>目标菜品</label><input class="filter-input" type="text" placeholder="请输入目标菜品"></div>
<div class="filter-item"><label>状态</label><select class="filter-select"><option>全部</option><option>已完成</option><option>组配中</option><option>待组配</option></select></div>
+1 -1
View File
@@ -179,7 +179,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="main">
<div class="filter-bar">
<div class="filter-item"><label>当前食堂</label><select class="filter-select"><option selected>长庆一食堂</option><option>长庆二食堂</option><option>长庆三食堂</option></select></div>
<div class="filter-item"><label>当前场所</label><select class="filter-select"><option selected>长庆一场所</option><option>长庆二场所</option><option>长庆三场所</option></select></div>
<div class="filter-item"><label>任务单号</label><input class="filter-input" type="text" placeholder="请输入任务单号"></div>
<div class="filter-item"><label>菜品名称</label><input class="filter-input" type="text" placeholder="请输入菜品名称"></div>
<div class="filter-item"><label>来源类型</label><select class="filter-select"><option>全部</option><option>点餐</option><option>餐线</option></select></div>
+1 -1
View File
@@ -140,7 +140,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</aside>
<div class="main">
<div class="filter-bar">
<div class="filter-item"><label>当前食堂</label><select class="filter-select"><option selected>长庆一食堂</option><option>长庆二食堂</option><option>长庆三食堂</option></select></div>
<div class="filter-item"><label>当前场所</label><select class="filter-select"><option selected>长庆一场所</option><option>长庆二场所</option><option>长庆三场所</option></select></div>
<div class="filter-item"><label>餐线</label><select class="filter-select"><option>全部</option><option>A区中餐线</option><option>B区中餐线</option><option>A区早餐线</option><option>B区早餐线</option><option>C区快餐线</option></select></div>
<div class="filter-item"><label>餐次</label><select class="filter-select"><option>全部</option><option>早餐</option><option>午餐</option><option>晚餐</option></select></div>
<div class="filter-item"><label>菜品名称</label><input class="filter-input" type="text" placeholder="请输入菜品名称"></div>
+4 -4
View File
@@ -125,11 +125,11 @@ tr.summary-row td{font-weight:700;background:#FAFAFA;}
<span class="page-header__desc">2026-05-20 · 数据实时更新</span>
</div>
<div class="page-header__right">
<span class="page-header__label">当前食堂</span>
<span class="page-header__label">当前场所</span>
<select class="canteen-select">
<option selected>长庆一食堂</option>
<option>长庆二食堂</option>
<option>长庆三食堂</option>
<option selected>长庆一场所</option>
<option>长庆二场所</option>
<option>长庆三场所</option>
</select>
</div>
</div>
+1 -1
View File
@@ -170,7 +170,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="main">
<div class="filter-bar">
<div class="filter-item"><label>当前食堂</label><select class="filter-select"><option selected>长庆一食堂</option><option>长庆二食堂</option><option>长庆三食堂</option></select></div>
<div class="filter-item"><label>当前场所</label><select class="filter-select"><option selected>长庆一场所</option><option>长庆二场所</option><option>长庆三场所</option></select></div>
<div class="filter-item"><label>餐线</label><select class="filter-select"><option>全部</option><option>A区中餐线</option><option>B区中餐线</option><option>A区早餐线</option><option>B区早餐线</option><option>C区快餐线</option></select></div>
<div class="filter-item"><label>餐次</label><select class="filter-select"><option>全部</option><option>早餐</option><option>午餐</option><option>晚餐</option></select></div>
<div class="filter-item"><label>处置日期</label><input id="filterDate" class="filter-input" type="date" style="min-width:160px;"></div>
+4 -4
View File
@@ -261,11 +261,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<span class="page-header__desc">2026-05-19 · 数据实时更新</span>
</div>
<div class="page-header__right">
<span class="page-header__label">当前食堂</span>
<span class="page-header__label">当前场所</span>
<select class="canteen-select" onchange="switchCanteen(this.value)">
<option value="1">食堂(东区)</option>
<option value="2">食堂(西区)</option>
<option value="3">食堂(北区)</option>
<option value="1">场所(东区)</option>
<option value="2">场所(西区)</option>
<option value="3">场所(北区)</option>
</select>
</div>
</div>
@@ -112,7 +112,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item active"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -188,9 +188,9 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<div class="form-card__title">检验菜品选择</div>
<div class="form-row" style="grid-template-columns:repeat(4,1fr);">
<div class="form-group">
<label>选择食堂<span class="required">*</span></label>
<label>选择场所<span class="required">*</span></label>
<select class="form-select" id="canteenSelect" onchange="onCanteenChange()">
<option value="">请选择食堂</option>
<option value="">请选择场所</option>
<option value="1">总部一号食堂</option>
<option value="2">总部二号食堂</option>
<option value="3">采油一厂职工食堂</option>
@@ -201,7 +201,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<div class="form-group">
<label>选择餐线<span class="required">*</span></label>
<select class="form-select" id="lineSelect" onchange="onLineChange()" disabled>
<option value="">请先选择食堂</option>
<option value="">请先选择场所</option>
</select>
</div>
<div class="form-group">
@@ -215,7 +215,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
</select>
</div>
</div>
<div id="dishHint" style="font-size:var(--font-xs);color:var(--text-placeholder);margin-top:4px;">提示:依次选择食堂、餐线、日期后,将加载该餐线当日的菜品列表</div>
<div id="dishHint" style="font-size:var(--font-xs);color:var(--text-placeholder);margin-top:4px;">提示:依次选择场所、餐线、日期后,将加载该餐线当日的菜品列表</div>
</div>
<!-- 检验数据 -->
@@ -194,7 +194,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item active"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -559,7 +559,7 @@ function renderDialogRight(){
+'<div class="detail-item"><div class="detail-item__label">检验时间</div><div class="detail-item__value">'+r.time+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">检验人员</div><div class="detail-item__value">'+r.inspector+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">检验批次</div><div class="detail-item__value">'+r.batch+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">食堂</div><div class="detail-item__value">'+r.category+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">场所</div><div class="detail-item__value">'+r.category+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">餐线</div><div class="detail-item__value">'+r.line+'</div></div>'
+'</div>';
@@ -660,7 +660,7 @@ function showDetail(syncIdx){
+'<div class="drawer-field"><div class="drawer-field__label">检验时间</div><div class="drawer-field__value">'+r.time+'</div></div>'
+'<div class="drawer-field"><div class="drawer-field__label">检验人员</div><div class="drawer-field__value">'+r.inspector+'</div></div>'
+'<div class="drawer-field"><div class="drawer-field__label">批次</div><div class="drawer-field__value">'+r.batch+'</div></div>'
+'<div class="drawer-field"><div class="drawer-field__label">食堂</div><div class="drawer-field__value">'+r.category+'</div></div>'
+'<div class="drawer-field"><div class="drawer-field__label">场所</div><div class="drawer-field__value">'+r.category+'</div></div>'
+'<div class="drawer-field"><div class="drawer-field__label">餐线</div><div class="drawer-field__value">'+r.line+'</div></div>'
+'<div class="drawer-field"><div class="drawer-field__label">营养检验</div><div class="drawer-field__value">'+nutriTag(r.nutri)+'</div></div>'
+'<div class="drawer-field"><div class="drawer-field__label">味道评级</div><div class="drawer-field__value">'+gradeTag(r.tasteData.grade)+'</div></div>'
+3 -3
View File
@@ -189,7 +189,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<!-- 侧边栏 -->
<aside class="sidebar">
<div class="sidebar-menu__title">营养用餐</div>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>食堂管理</a>
<a href="din-canteen.html" class="sidebar-item"><span class="mi">🏢</span>场所管理</a>
<a href="din-dict-mgmt.html" class="sidebar-item"><span class="mi">📖</span>字典管理</a>
<a href="prod-qc-nutrition.html" class="sidebar-item active"><span class="mi">🔬</span>营养检验</a>
<a href="din-ingredient.html" class="sidebar-item"><span class="mi">🥦</span>食物成分</a>
@@ -295,7 +295,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<th>检验单号</th>
<th>检验时间</th>
<th>检验餐品</th>
<th>食堂</th>
<th>场所</th>
<th>检验人员</th>
<th>营养检验</th>
<th>味道检验</th>
@@ -485,7 +485,7 @@ function openDrawer(idx){
+'</div></div>';
// 检验菜品
html+='<div class="detail-section"><div class="detail-section__title">检验菜品</div><div class="detail-grid">'
+'<div class="detail-item"><div class="detail-item__label">食堂</div><div class="detail-item__value">'+r.category+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">场所</div><div class="detail-item__value">'+r.category+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">餐线</div><div class="detail-item__value">'+r.line+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">日期</div><div class="detail-item__value">'+r.date+'</div></div>'
+'<div class="detail-item"><div class="detail-item__label">菜品名称</div><div class="detail-item__value">'+r.dish+'</div></div>'
+94 -197
View File
@@ -122,10 +122,6 @@ textarea.form-control{height:auto;padding:8px 12px;resize:vertical;min-height:60
.drawer-field{display:flex;flex-direction:column;gap:2px;}
.drawer-field__label{font-size:var(--font-xs);color:var(--text-placeholder);}
.drawer-field__value{font-size:var(--font-sm);color:var(--text-primary);font-weight:500;min-height:22px;}
/* 食材明细表格(抽屉内) */
.ing-detail-table{width:100%;border-collapse:collapse;margin-top:8px;}
.ing-detail-table th{background:#FAFAFA;padding:8px 12px;text-align:left;font-size:var(--font-xs);color:var(--text-secondary);font-weight:500;border:1px solid var(--border);}
.ing-detail-table td{padding:6px 12px;font-size:var(--font-sm);color:var(--text-primary);border:1px solid var(--border);}
</style>
</head>
<body>
@@ -210,17 +206,17 @@ textarea.form-control{height:auto;padding:8px 12px;resize:vertical;min-height:60
<div class="table-card__content">
<table>
<thead><tr>
<th>订单号</th><th>客户名称</th><th>净菜类型</th><th>净菜/餐品</th><th>包装规格</th><th>售卖份数</th><th>计量(kg)</th><th>单价(元/kg)</th><th>小计金额</th><th>下单时间</th><th>物流单号</th><th>订单状态</th><th>操作</th>
<th>订单号</th><th>溯源码</th><th>客户名称</th><th>净菜类型</th><th>净菜/餐品</th><th>包装规格</th><th>售卖份数</th><th>计量(kg)</th><th>单价(元/kg)</th><th>小计金额</th><th>出库区域</th><th>下单时间</th><th>物流单号</th><th>订单状态</th><th>操作</th>
</tr></thead>
<tbody>
<tr><td>EXT-001</td><td>社区便民超市</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>土豆(土豆丝)</td><td>5kg/箱</td><td>10</td><td>50</td><td>¥3.5</td><td>¥175</td><td>2026-04-22 08:00</td><td>SF1234567890</td><td><span class="tag tag-green">已完成</span></td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-001</td><td>社区便民超市</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>土豆(土豆块)</td><td>5kg/箱</td><td>6</td><td>30</td><td>¥3.5</td><td>¥105</td><td>2026-04-22 08:00</td><td>SF1234567890</td><td><span class="tag tag-green">已完成</span></td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-002</td><td>周边餐饮企业</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>净猪里脊</td><td>1kg/箱</td><td>5</td><td>50</td><td>¥28</td><td>¥1,400</td><td>2026-04-22 09:30</td><td>SF9876543210</td><td><span class="tag tag-blue">配送中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-003</td><td>周边餐饮企业</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>宫保鸡丁</td><td>标准份(500g</td><td>40</td><td>20</td><td>¥12</td><td>¥240</td><td>2026-04-22 09:30</td><td>SF9876543210</td><td><span class="tag tag-blue">配送中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-004</td><td>学校食堂</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>鸡肉(鸡肉块)</td><td>1kg/箱</td><td>6</td><td>60</td><td>¥2.0</td><td>¥120</td><td>2026-04-22 10:00</td><td></td><td><span class="tag tag-orange">待配送</span></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openShipModal('EXT-004')">立即发货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-004</td><td>学校食堂</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>净西兰花</td><td>5kg/箱</td><td>8</td><td>40</td><td>¥4.5</td><td>¥180</td><td>2026-04-22 10:00</td><td></td><td><span class="tag tag-orange">待配送</span></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openShipModal('EXT-004')">立即发货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-005</td><td>职工家属区团购</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>清蒸鱼</td><td>标准份(500g</td><td>20</td><td>10</td><td>¥15</td><td>¥150</td><td>2026-04-22 10:30</td><td></td><td><span class="tag tag-gray">备货中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-006</td><td>职工家属区团购</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>蒜蓉菠菜</td><td>标准份(500g</td><td>30</td><td>15</td><td>¥8</td><td>¥120</td><td>2026-04-22 10:30</td><td></td><td><span class="tag tag-gray">备货中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-001</td><td>NC-INT-BOCA-20260422-01</td><td>社区便民超市</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>土豆(土豆丝)</td><td>5kg/箱</td><td>10</td><td>50</td><td>¥3.5</td><td>¥175</td><td>A仓-蔬菜区-01</td><td>2026-04-22 08:00</td><td>SF1234567890</td><td><span class="tag tag-green">已完成</span></td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-001</td><td>NC-INT-HLUB-20260422-01</td><td>社区便民超市</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>土豆(土豆块)</td><td>5kg/箱</td><td>6</td><td>30</td><td>¥3.5</td><td>¥105</td><td>A仓-蔬菜区-03</td><td>2026-04-22 08:00</td><td>SF1234567890</td><td><span class="tag tag-green">已完成</span></td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-002</td><td>NC-INT-ZLRJ-20260422-01</td><td>周边餐饮企业</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>净猪里脊</td><td>1kg/箱</td><td>5</td><td>50</td><td>¥28</td><td>¥1,400</td><td>B仓-肉类区-01</td><td>2026-04-22 09:30</td><td>SF9876543210</td><td><span class="tag tag-blue">配送中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-003</td><td>NC-INT-JXRJ-20260422-01</td><td>周边餐饮企业</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>宫保鸡丁</td><td>标准份(500g</td><td>40</td><td>20</td><td>¥12</td><td>¥240</td><td>B仓-肉类区-02</td><td>2026-04-22 09:30</td><td>SF9876543210</td><td><span class="tag tag-blue">配送中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-004</td><td>NC-INT-BCAI-20260422-01</td><td>学校场所</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>鸡肉(鸡肉块)</td><td>1kg/箱</td><td>6</td><td>60</td><td>¥2.0</td><td>¥120</td><td>A仓-蔬菜区-02</td><td>2026-04-22 10:00</td><td></td><td><span class="tag tag-orange">待配送</span></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openShipModal('EXT-004')">立即发货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-004</td><td>NC-INT-XLHU-20260422-01</td><td>学校场所</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>净西兰花</td><td>5kg/箱</td><td>8</td><td>40</td><td>¥4.5</td><td>¥180</td><td>A仓-蔬菜区-04</td><td>2026-04-22 10:00</td><td></td><td><span class="tag tag-orange">待配送</span></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openShipModal('EXT-004')">立即发货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-005</td><td>NC-INT-QZYU-20260422-01</td><td>职工家属区团购</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>清蒸鱼</td><td>标准份(500g</td><td>20</td><td>10</td><td>¥15</td><td>¥150</td><td>C仓-水产区-01</td><td>2026-04-22 10:30</td><td></td><td><span class="tag tag-gray">备货中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>EXT-006</td><td>NC-INT-SRBC-20260422-01</td><td>职工家属区团购</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>蒜蓉菠菜</td><td>标准份(500g</td><td>30</td><td>15</td><td>¥8</td><td>¥120</td><td>A仓-蔬菜区-01</td><td>2026-04-22 10:30</td><td></td><td><span class="tag tag-gray">备货中</span></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
</tbody>
</table>
</div>
@@ -243,15 +239,44 @@ textarea.form-control{height:auto;padding:8px 12px;resize:vertical;min-height:60
</div>
<div class="modal__body">
<div class="form-grid">
<div class="form-group">
<label class="form-label">溯源码<span class="required">*</span></label>
<input class="form-control" id="orderTraceCode" placeholder="请输入溯源码">
</div>
<div class="form-group">
<label class="form-label">客户名称<span class="required">*</span></label>
<select class="form-control" id="orderCustomer">
<option value="">请选择客户</option>
<option>社区便民超市</option>
<option>周边餐饮企业</option>
<option>学校场所</option>
<option>职工家属区团购</option>
</select>
</div>
<div class="form-group">
<label class="form-label">净菜类型<span class="required">*</span></label>
<select class="form-control" id="orderType">
<select class="form-control" id="orderType" onchange="toggleOrderName()">
<option value="">请选择</option>
<option value="nc">净菜包</option>
<option value="cp">餐品净菜包</option>
</select>
</div>
<div class="form-group">
<label class="form-label">联系人</label>
<input class="form-control" placeholder="请输入联系人姓名">
</div>
<div class="form-group">
<label class="form-label">联系电话</label>
<input class="form-control" placeholder="请输入联系电话">
</div>
<div class="form-group full">
<label class="form-label">收货地址</label>
<input class="form-control" placeholder="请输入收货地址">
</div>
<hr class="form-divider">
<div class="form-group" id="orderNameNC">
<label class="form-label">净菜名称<span class="required">*</span></label>
<select class="form-control" id="orderItem" onchange="onItemChange()">
<option value="">请选择净菜</option>
@@ -263,34 +288,23 @@ textarea.form-control{height:auto;padding:8px 12px;resize:vertical;min-height:60
<option value="净胡萝卜" data-price="4.0" data-pkg="5kg/箱">净胡萝卜</option>
</select>
</div>
<div class="form-group">
<label class="form-label">包装批次号</label>
<select class="form-control" id="orderBatchSelect" onchange="onOrderBatchChange(this.value)">
<option value="">请选择批次号(选填)</option>
<option>BATCH-DH-20260415-01</option>
<option>BATCH-DH-20260415-02</option>
<option>BATCH-DH-20260415-03</option>
<option>BATCH-DH-20260415-04</option>
<div class="form-group" id="orderNameCP" style="display:none;">
<label class="form-label">餐品名称<span class="required">*</span></label>
<select class="form-control" id="orderItemCP" onchange="onItemChange()">
<option value="">请选择餐品</option>
<option value="宫保鸡丁" data-price="12" data-pkg="标准份(500g">宫保鸡丁</option>
<option value="清蒸鱼" data-price="15" data-pkg="标准份(500g">清蒸鱼</option>
<option value="蒜蓉菠菜" data-price="8" data-pkg="标准份(500g">蒜蓉菠菜</option>
<option value="炒胡萝卜" data-price="6" data-pkg="大份(800g">炒胡萝卜</option>
<option value="红烧排骨" data-price="25" data-pkg="标准份(500g">红烧排骨</option>
</select>
</div>
<div class="form-group full" id="orderBatchInfoPanel" style="display:none;">
<label class="form-label">批次包装信息</label>
<div style="background:#FAFAFA;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;font-size:var(--font-sm);">
<div><span style="color:var(--text-secondary);">包装餐品:</span><span id="obDish" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装规格:</span><span id="obSpec" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装方式:</span><span id="obMethod" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装份数:</span><span id="obQty" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装日期:</span><span id="obDate" style="font-weight:500;"></span></div>
</div>
</div>
</div>
<div class="form-group">
<label class="form-label">包装规格</label>
<input class="form-control" id="orderPkg" readonly placeholder="选择净菜后自动填充">
</div>
<div class="form-group">
<label class="form-label">售卖份数<span class="required">*</span></label>
<label class="form-label">申领份数<span class="required">*</span></label>
<input class="form-control" id="orderQty" type="number" min="1" value="1" oninput="calcOrder()">
</div>
<div class="form-group">
@@ -305,24 +319,16 @@ textarea.form-control{height:auto;padding:8px 12px;resize:vertical;min-height:60
<label class="form-label">小计金额</label>
<input class="form-control" id="orderSubtotal" readonly placeholder="自动计算">
</div>
<hr class="form-divider">
<div class="form-group">
<label class="form-label">客户名称<span class="required">*</span></label>
<input class="form-control" id="orderCustomer" placeholder="请输入客户名称">
</div>
<div class="form-group">
<label class="form-label">联系人</label>
<input class="form-control" placeholder="请输入联系人姓名">
</div>
<div class="form-group">
<label class="form-label">联系电话</label>
<input class="form-control" placeholder="请输入联系电话">
</div>
<div class="form-group full">
<label class="form-label">收货地址</label>
<input class="form-control" placeholder="请输入收货地址">
<label class="form-label">出库区域<span class="required">*</span></label>
<select class="form-control" id="orderArea">
<option value="">请选择出库区域</option>
<option>A仓-蔬菜区-01</option>
<option>A仓-蔬菜区-02</option>
<option>A仓-蔬菜区-03</option>
<option>A仓-蔬菜区-04</option>
<option>B仓-肉类区-01</option>
</select>
</div>
<hr class="form-divider">
@@ -396,81 +402,27 @@ textarea.form-control{height:auto;padding:8px 12px;resize:vertical;min-height:60
</div>
</div>
<!-- 备货完成弹窗(补全备货信息) -->
<!-- 备货完成二次确认弹窗 -->
<div class="modal-mask" id="readyModal">
<div class="modal" style="width:520px;">
<div class="modal" style="width:420px;">
<div class="modal__header">
<div class="modal__title">补全备货信息</div>
<div class="modal__title">确认备货完成</div>
<button class="modal__close" onclick="closeReadyConfirm()">&times;</button>
</div>
<div class="modal__body">
<div style="background:var(--primary-light);border-radius:var(--radius-md);padding:12px 16px;margin-bottom:20px;font-size:var(--font-sm);color:var(--primary);display:flex;align-items:center;gap:8px;">
<span style="font-size:16px;">📋</span>
<span>订单号:<strong id="readyOrderNo"></strong> 净菜/餐品:<strong id="readyFoodName"></strong></span>
</div>
<div class="form-grid" style="grid-template-columns:1fr;">
<div class="form-group">
<label class="form-label">包装批次号<span class="required">*</span></label>
<select class="form-control" id="readyBatchSelect" onchange="onReadyBatchChange(this.value)">
<option value="">请选择批次号</option>
<option>BATCH-DH-20260415-01</option>
<option>BATCH-DH-20260415-02</option>
<option>BATCH-DH-20260415-03</option>
<option>BATCH-DH-20260415-04</option>
</select>
</div>
<div class="form-group" id="readyBatchInfoPanel" style="display:none;">
<label class="form-label">批次包装信息</label>
<div style="background:#FAFAFA;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;font-size:var(--font-sm);">
<div><span style="color:var(--text-secondary);">包装餐品:</span><span id="readyBatchDish" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装规格:</span><span id="readyBatchSpec" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装方式:</span><span id="readyBatchMethod" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装份数:</span><span id="readyBatchQty" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装日期:</span><span id="readyBatchDate" style="font-weight:500;"></span></div>
</div>
</div>
</div>
</div>
<p style="font-size:var(--font-xs);color:var(--text-placeholder);margin-top:12px;">选择包装批次号后,订单状态将变为「待配送」</p>
<div class="modal__body" style="text-align:center;padding:32px 24px;">
<div style="font-size:40px;margin-bottom:12px;">📦</div>
<p style="font-size:15px;color:#333;font-weight:600;margin-bottom:8px;">确认订单 <span id="readyOrderNo"></span> 已备货完成?</p>
<p style="font-size:13px;color:#999;line-height:1.6;">净菜/餐品:<span id="readyFoodName" style="color:#333;font-weight:500;"></span><br>确认后订单状态将变为「待配送」</p>
</div>
<div class="modal__footer">
<div class="modal__footer" style="justify-content:center;">
<button class="btn btn-default" onclick="closeReadyConfirm()">取消</button>
<button class="btn btn-primary" onclick="doReady()">确认备货完成</button>
<button class="btn btn-primary" style="background:var(--success);" onclick="doReady()">确认完成</button>
</div>
</div>
</div>
<script>
/* ========== 数据 ========== */
var batchInfo={
'BATCH-DH-20260415-01':{dish:'宫保鸡丁',spec:'标准份(500g',method:'冷鲜袋',qty:'10',date:'2026-04-15'},
'BATCH-DH-20260415-02':{dish:'清蒸鱼',spec:'标准份(500g',method:'保鲜盒',qty:'8',date:'2026-04-15'},
'BATCH-DH-20260415-03':{dish:'蒜蓉菠菜',spec:'标准份(500g',method:'冷鲜袋',qty:'12',date:'2026-04-15'},
'BATCH-DH-20260415-04':{dish:'炒胡萝卜',spec:'大份(800g',method:'保鲜盒',qty:'6',date:'2026-04-15'}
};
var dishIngredients={
'宫保鸡丁':[{trace:'NC-PROC-JXR-20260415-01',name:'鸡胸肉',type:'主材',amount:'120g'},{trace:'NC-PROC-HUS-20260415-01',name:'花生',type:'辅材',amount:'20g'},{trace:'NC-PROC-GLJ-20260415-01',name:'干辣椒',type:'调料',amount:'5g'}],
'清蒸鱼':[{trace:'NC-PROC-CYU-20260415-01',name:'草鱼',type:'主材',amount:'100g'},{trace:'NC-PROC-JPN-20260415-01',name:'姜片',type:'调料',amount:'适量'}],
'蒜蓉菠菜':[{trace:'NC-PROC-BOC-20260415-01',name:'净菠菜',type:'主材',amount:'120g'},{trace:'NC-PROC-DSN-20260415-01',name:'大蒜',type:'调料',amount:'8g'}],
'炒胡萝卜':[{trace:'NC-PROC-HLB-20260415-01',name:'净胡萝卜',type:'主材',amount:'260g'},{trace:'NC-PROC-CJG-20260415-01',name:'葱姜',type:'调料',amount:'适量'}]
};
var dishBatch={
'宫保鸡丁':'BATCH-DH-20260415-01',
'清蒸鱼':'BATCH-DH-20260415-02',
'蒜蓉菠菜':'BATCH-DH-20260415-03',
'炒胡萝卜':'BATCH-DH-20260415-04'
};
var traceMap={
'净菠菜':'NC-PROC-BOC-20260415-01',
'净胡萝卜':'NC-PROC-HLB-20260415-01',
'净土豆丝':'NC-PROC-TDS-20260415-01',
'净西兰花':'NC-PROC-XLH-20260415-01',
'净白菜':'NC-PROC-BCA-20260415-01',
'净黄瓜':'NC-PROC-HGU-20260415-01'
};
/* ========== 新建订单弹窗 ========== */
/* 新建订单弹窗 */
function openCreateOrder(){
document.getElementById('createOrderModal').classList.add('show');
}
@@ -481,23 +433,17 @@ document.getElementById('createOrderModal').addEventListener('click',function(e)
if(e.target===this) closeCreateOrder();
});
/* 选择批次号后回显包装信息 */
function onOrderBatchChange(val){
var panel=document.getElementById('orderBatchInfoPanel');
if(!val){panel.style.display='none';return;}
var info=batchInfo[val];
if(!info){panel.style.display='none';return;}
document.getElementById('obDish').textContent=info.dish;
document.getElementById('obSpec').textContent=info.spec;
document.getElementById('obMethod').textContent=info.method;
document.getElementById('obQty').textContent=info.qty;
document.getElementById('obDate').textContent=info.date;
panel.style.display='grid';
/* 净菜类型切换:显示净菜名称或餐品名称 */
function toggleOrderName(){
var v=document.getElementById('orderType').value;
document.getElementById('orderNameNC').style.display=(v==='cp'?'none':'block');
document.getElementById('orderNameCP').style.display=(v==='cp'?'block':'none');
}
/* 选择净菜后自动填充包装规格并计算 */
function onItemChange(){
var sel=document.getElementById('orderItem');
var typeVal=document.getElementById('orderType').value;
var sel=typeVal==='cp'?document.getElementById('orderItemCP'):document.getElementById('orderItem');
var opt=sel.options[sel.selectedIndex];
var pkg=opt.getAttribute('data-pkg')||'';
document.getElementById('orderPkg').value=pkg;
@@ -520,19 +466,21 @@ function calcOrder(){
/* 提交订单 */
function submitOrder(){
var typeVal=document.getElementById('orderType').value;
if(!typeVal){alert('请选择净菜类型');return;}
var traceCode=document.getElementById('orderTraceCode').value.trim();
if(!traceCode){alert('请输入溯源码');return;}
var customer=document.getElementById('orderCustomer').value;
if(!customer){alert('请选择客户名称');return;}
var item=document.getElementById('orderItem').value;
if(!item){alert('请选择净菜名称');return;}
var price=document.getElementById('orderPrice').value;
if(!price){alert('请输入单价');return;}
var customer=document.getElementById('orderCustomer').value.trim();
if(!customer){alert('请输入客户名称');return;}
var area=document.getElementById('orderArea').value;
if(!area){alert('请选择出库区域');return;}
alert('订单提交成功!');
closeCreateOrder();
}
/* ========== 发货确认弹窗 ========== */
/* 发货确认弹窗 */
function openShipModal(orderNo){
document.getElementById('shipOrderNo').value=orderNo;
document.getElementById('shipCompany').value='';
@@ -554,12 +502,12 @@ function confirmShip(){
closeShipModal();
}
/* ========== 确认收货 ========== */
/* 确认收货 */
function openReceiveConfirm(el){
var tr=el.closest('tr');
var tds=tr.querySelectorAll('td');
document.getElementById('receiveOrderNo').textContent=tds[0].textContent;
document.getElementById('receiveFoodName').textContent=tds[3].textContent;
document.getElementById('receiveFoodName').textContent=tds[4].textContent;
document.getElementById('receiveModal').classList.add('show');
}
function closeReceiveConfirm(){document.getElementById('receiveModal').classList.remove('show');}
@@ -569,39 +517,22 @@ function doReceive(){
alert('收货确认成功,订单状态已变为「已完成」');
}
/* ========== 备货完成 — 补全备货信息 ========== */
/* 备货完成 */
function openReadyConfirm(el){
var tr=el.closest('tr');
var tds=tr.querySelectorAll('td');
document.getElementById('readyOrderNo').textContent=tds[0].textContent;
document.getElementById('readyFoodName').textContent=tds[3].textContent;
// 重置批次选择和面板
document.getElementById('readyBatchSelect').selectedIndex=0;
document.getElementById('readyBatchInfoPanel').style.display='none';
document.getElementById('readyFoodName').textContent=tds[4].textContent;
document.getElementById('readyModal').classList.add('show');
}
function closeReadyConfirm(){document.getElementById('readyModal').classList.remove('show');}
document.getElementById('readyModal').addEventListener('click',function(e){if(e.target===this)closeReadyConfirm();});
function onReadyBatchChange(val){
var panel=document.getElementById('readyBatchInfoPanel');
if(!val){panel.style.display='none';return;}
var info=batchInfo[val];
if(!info){panel.style.display='none';return;}
document.getElementById('readyBatchDish').textContent=info.dish;
document.getElementById('readyBatchSpec').textContent=info.spec;
document.getElementById('readyBatchMethod').textContent=info.method;
document.getElementById('readyBatchQty').textContent=info.qty;
document.getElementById('readyBatchDate').textContent=info.date;
panel.style.display='block';
}
function doReady(){
var batch=document.getElementById('readyBatchSelect').value;
if(!batch){alert('请选择包装批次号');return;}
closeReadyConfirm();
alert('备货信息已补全,订单状态已变为「待配送」\n包装批次号:'+batch);
alert('备货已确认完成,订单状态已变为「待配送」');
}
/* ========== 右侧抽屉组件 ========== */
/* 右侧抽屉组件 */
var Drawer={
open:function(title,bodyHtml){
this.close();
@@ -619,23 +550,12 @@ var Drawer={
}
};
/* ========== 详情抽屉(按净菜类型定制渲染) ========== */
/* 详情抽屉 */
function showDetail(el){
var tr=el.closest('tr');
var ths=tr.closest('table').querySelectorAll('thead th');
var tds=tr.querySelectorAll('td');
var orderNo=tds[0].textContent.trim();
var customer=tds[1].textContent.trim();
var ncType=tds[2].textContent.trim();
var foodName=tds[3].textContent.trim();
var pkg=tds[4].textContent.trim();
var qty=tds[5].textContent.trim();
var weight=tds[6].textContent.trim();
var price=tds[7].textContent.trim();
var subtotal=tds[8].textContent.trim();
var orderTime=tds[9].textContent.trim();
var logistics=tds[10].textContent.trim();
var status=tds[11].innerHTML;
var orderNo=tds[0].textContent;
var html='<div class="drawer-section"><div class="drawer-section__title">订单信息</div><div class="drawer-fields">';
html+='<div class="drawer-field"><div class="drawer-field__label">订单号</div><div class="drawer-field__value">'+orderNo+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">客户名称</div><div class="drawer-field__value">'+customer+'</div></div>';
@@ -651,35 +571,12 @@ function showDetail(el){
var ncBatchMap={'净菠菜':'BATCH-NC-20260415-01','净胡萝卜':'BATCH-NC-20260415-02','净土豆丝':'BATCH-NC-20260415-03','净西兰花':'BATCH-NC-20260415-04','净白菜':'BATCH-NC-20260415-05','净黄瓜':'BATCH-NC-20260415-06','土豆(土豆丝)':'BATCH-NC-20260415-03','土豆(土豆块)':'BATCH-NC-20260415-07'};
html+='<div class="drawer-field"><div class="drawer-field__label">溯源码</div><div class="drawer-field__value">'+trace+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">包装批次号</div><div class="drawer-field__value">'+(ncBatchMap[foodName]||'—')+'</div></div>';
for(var i=0;i<ths.length-1;i++){
html+='<div class="drawer-field"><div class="drawer-field__label">'+ths[i].textContent+'</div><div class="drawer-field__value">'+tds[i].innerHTML+'</div></div>';
}
html+='<div class="drawer-field"><div class="drawer-field__label">净菜/餐品</div><div class="drawer-field__value">'+foodName+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">包装规格</div><div class="drawer-field__value">'+pkg+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">售卖份数</div><div class="drawer-field__value">'+qty+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">计量(kg)</div><div class="drawer-field__value">'+weight+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">单价(元/kg)</div><div class="drawer-field__value">'+price+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">小计金额</div><div class="drawer-field__value">'+subtotal+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">下单时间</div><div class="drawer-field__value">'+orderTime+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">物流单号</div><div class="drawer-field__value">'+logistics+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">订单状态</div><div class="drawer-field__value">'+status+'</div></div>';
html+='</div></div>';
/* 餐品净菜包显示净菜包明细 */
if(isCP){
var ings=dishIngredients[foodName];
if(ings&&ings.length){
html+='<div class="drawer-section"><div class="drawer-section__title">净菜包明细</div>';
html+='<table class="ing-detail-table"><thead><tr><th>食材溯源码</th><th>食材名称</th><th>分类</th><th>每份用量</th></tr></thead><tbody>';
for(var i=0;i<ings.length;i++){
var tagClass=ings[i].type==='主材'?'tag-blue':ings[i].type==='辅材'?'tag-green':'tag-orange';
html+='<tr><td>'+ings[i].trace+'</td><td>'+ings[i].name+'</td><td><span class="status-tag '+tagClass+'">'+ings[i].type+'</span></td><td>'+ings[i].amount+'</td></tr>';
}
html+='</tbody></table></div>';
}
}
Drawer.open('外售详情 — '+orderNo, html);
}
};}
</script>
</body>
+55 -165
View File
@@ -117,10 +117,6 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
.drawer-field{display:flex;flex-direction:column;gap:2px;}
.drawer-field__label{font-size:var(--font-xs);color:var(--text-placeholder);}
.drawer-field__value{font-size:var(--font-sm);color:var(--text-primary);font-weight:500;min-height:22px;}
/* 食材明细表格(抽屉内) */
.ing-detail-table{width:100%;border-collapse:collapse;margin-top:8px;}
.ing-detail-table th{background:#FAFAFA;padding:8px 12px;text-align:left;font-size:var(--font-xs);color:var(--text-secondary);font-weight:500;border:1px solid var(--border);}
.ing-detail-table td{padding:6px 12px;font-size:var(--font-sm);color:var(--text-primary);border:1px solid var(--border);}
</style>
</head>
<body>
@@ -165,8 +161,8 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 筛选栏 -->
<div class="filter-bar">
<div class="filter-item"><label>申领单号/食材名称</label><input class="filter-input" placeholder="请输入申领单号或食材名称"></div>
<div class="filter-item"><label>申领食堂</label>
<select class="filter-select"><option>全部</option><option>一号食堂厨房</option><option>二号食堂厨房</option><option>三号食堂厨房</option></select>
<div class="filter-item"><label>申领场所</label>
<select class="filter-select"><option>全部</option><option>一号场所厨房</option><option>二号场所厨房</option><option>三号场所厨房</option></select>
</div>
<div class="filter-item"><label>净菜类型</label>
<select class="filter-select"><option>全部</option><option>净菜包</option><option>餐品净菜包</option></select>
@@ -187,17 +183,17 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="table-card__content">
<table>
<thead><tr>
<th>申领单号</th><th>申领食堂</th><th>净菜类型</th><th>净菜/餐品</th><th>包装规格</th><th>申领份数</th><th>申领数量(kg)</th><th>订单状态</th><th>申领时间</th><th>预定配送时间</th><th>配送人</th><th>操作</th>
<th>申领单号</th><th>溯源码</th><th>申领场所</th><th>净菜类型</th><th>净菜/餐品</th><th>包装规格</th><th>申领份数</th><th>申领数量(kg)</th><th>订单状态</th><th>关联仓库区域</th><th>申领时间</th><th>预定配送时间</th><th>配送人</th><th>操作</th>
</tr></thead>
<tbody>
<tr><td>INT-001</td><td>一号食堂厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>菠菜</td><td>500g/袋</td><td>50</td><td>25</td><td><span class="tag tag-green">已完成</span></td><td>2026-04-22 07:30</td><td>2026-04-22 09:00</td><td>李配送</td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-001</td><td>一号食堂厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>玉米(玉米粒)</td><td>1kg/盒</td><td>20</td><td>20</td><td><span class="tag tag-green">已完成</span></td><td>2026-04-22 07:30</td><td>2026-04-22 09:00</td><td>李配送</td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-002</td><td>二号食堂厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>猪排骨</td><td>2kg/盘</td><td>20</td><td>40</td><td><span class="tag tag-blue">配送中</span></td><td>2026-04-22 08:00</td><td>2026-04-22 10:00</td><td>王配送</td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-003</td><td>二号食堂厨房</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>宫保鸡丁</td><td>标准份(500g</td><td>30</td><td>15</td><td><span class="tag tag-blue">配送中</span></td><td>2026-04-22 08:00</td><td>2026-04-22 10:00</td><td>王配送</td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-004</td><td>三号食堂厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>草鱼(鱼片)</td><td>2kg/盘</td><td>20</td><td>40</td><td><span class="tag tag-orange">待配送</span></td><td>2026-04-22 08:30</td><td>2026-04-22 10:30</td><td></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openDeliverModal(this)">立即配送</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-005</td><td>一号食堂厨房</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>清蒸鱼</td><td>标准份(500g</td><td>15</td><td>7.5</td><td><span class="tag tag-orange">待配送</span></td><td>2026-04-22 09:00</td><td>2026-04-22 11:00</td><td></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openDeliverModal(this)">立即配送</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-006</td><td>三号食堂厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>土豆(土豆丝)</td><td>500g/袋</td><td>40</td><td>20</td><td><span class="tag tag-gray">备货中</span></td><td>2026-04-22 09:15</td><td>2026-04-22 11:30</td><td></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-007</td><td>二号食堂厨房</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>蒜蓉菠菜</td><td>标准份(500g</td><td>25</td><td>12.5</td><td><span class="tag tag-gray">备货中</span></td><td>2026-04-22 09:30</td><td>2026-04-22 12:00</td><td></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-001</td><td>NC-INT-BOCA-20260422-01</td><td>一号场所厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>菠菜</td><td>500g/袋</td><td>50</td><td>25</td><td><span class="tag tag-green">已完成</span></td><td>A仓-蔬菜区-01</td><td>2026-04-22 07:30</td><td>2026-04-22 09:00</td><td>李配送</td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-001</td><td>NC-INT-BCAI-20260422-01</td><td>一号场所厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>玉米(玉米粒)</td><td>1kg/盒</td><td>20</td><td>20</td><td><span class="tag tag-green">已完成</span></td><td>A仓-蔬菜区-02</td><td>2026-04-22 07:30</td><td>2026-04-22 09:00</td><td>李配送</td><td class="td-actions"><span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-002</td><td>NC-INT-ZLRJ-20260422-01</td><td>二号场所厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>猪排骨</td><td>2kg/盘</td><td>20</td><td>40</td><td><span class="tag tag-blue">配送中</span></td><td>B仓-肉类区-01</td><td>2026-04-22 08:00</td><td>2026-04-22 10:00</td><td>王配送</td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-003</td><td>NC-INT-JXRJ-20260422-01</td><td>二号场所厨房</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>宫保鸡丁</td><td>标准份(500g</td><td>30</td><td>15</td><td><span class="tag tag-blue">配送中</span></td><td>B仓-肉类区-02</td><td>2026-04-22 08:00</td><td>2026-04-22 10:00</td><td>王配送</td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReceiveConfirm(this)">确认收货</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-004</td><td>NC-INT-CAYO-20260422-01</td><td>三号场所厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>草鱼(鱼片)</td><td>2kg/盘</td><td>20</td><td>40</td><td><span class="tag tag-orange">待配送</span></td><td>C仓-水产区-01</td><td>2026-04-22 08:30</td><td>2026-04-22 10:30</td><td></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openDeliverModal(this)">立即配送</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-005</td><td>NC-INT-QZYU-20260422-01</td><td>一号场所厨房</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>清蒸鱼</td><td>标准份(500g</td><td>15</td><td>7.5</td><td><span class="tag tag-orange">待配送</span></td><td>C仓-水产区-02</td><td>2026-04-22 09:00</td><td>2026-04-22 11:00</td><td></td><td class="td-actions"><span class="link" style="color:var(--primary)" onclick="openDeliverModal(this)">立即配送</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-006</td><td>NC-INT-TDSI-20260422-01</td><td>三号场所厨房</td><td><span class="tag tag-green">🥬 净菜包</span></td><td>土豆(土豆丝)</td><td>500g/袋</td><td>40</td><td>20</td><td><span class="tag tag-gray">备货中</span></td><td>A仓-蔬菜区-03</td><td>2026-04-22 09:15</td><td>2026-04-22 11:30</td><td></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
<tr><td>INT-007</td><td>NC-INT-SRBC-20260422-01</td><td>二号场所厨房</td><td><span class="tag tag-orange">🍱 餐品净菜包</span></td><td>蒜蓉菠菜</td><td>标准份(500g</td><td>25</td><td>12.5</td><td><span class="tag tag-gray">备货中</span></td><td>A仓-蔬菜区-01</td><td>2026-04-22 09:30</td><td>2026-04-22 12:00</td><td></td><td class="td-actions"><span class="link" style="color:var(--success)" onclick="openReadyConfirm(this)">备货完成</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td></tr>
</tbody>
</table>
</div>
@@ -222,33 +218,25 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</div>
<div class="modal__body">
<div class="form-grid">
<div class="form-item">
<div class="form-item__label">溯源码<span class="required">*</span></div>
<input placeholder="输入溯源码可带出净菜信息以及仓库信息">
</div>
<div class="form-item">
<div class="form-item__label">净菜类型<span class="required">*</span></div>
<select id="claimType"><option value="">请选择</option><option value="nc">净菜包</option><option value="cp">餐品净菜包</option></select>
<select id="claimType" onchange="toggleClaimName()"><option value="">请选择</option><option value="nc">净菜包</option><option value="cp">餐品净菜包</option></select>
</div>
<div class="form-item">
<div class="form-item__label">申领食堂<span class="required">*</span></div>
<select><option value="">请选择</option><option>一号食堂厨房</option><option>二号食堂厨房</option><option>三号食堂厨房</option></select>
<div class="form-item__label">申领场所<span class="required">*</span></div>
<select><option value="">请选择</option><option>一号场所厨房</option><option>二号场所厨房</option><option>三号场所厨房</option></select>
</div>
<div class="form-item">
<div class="form-item" id="claimNameNC">
<div class="form-item__label">净菜名称<span class="required">*</span></div>
<select><option value="">请选择净菜</option><option>菠菜</option><option>玉米(玉米粒)</option><option>猪排骨</option><option>鸡胸肉(鸡肉丝)</option><option>草鱼(鱼片)</option><option>土豆(土豆丝)</option></select>
</div>
<div class="form-item">
<div class="form-item__label">包装批次号</div>
<select id="claimBatchSelect" onchange="onBatchChange(this.value)"><option value="">请选择批次号(选填)</option><option>BATCH-DH-20260415-01</option><option>BATCH-DH-20260415-02</option><option>BATCH-DH-20260415-03</option><option>BATCH-DH-20260415-04</option></select>
</div>
<div class="form-item full" id="batchInfoPanel" style="display:none;">
<div class="form-item__label">批次包装信息</div>
<div style="background:#FAFAFA;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;font-size:var(--font-sm);">
<div><span style="color:var(--text-secondary);">包装餐品:</span><span id="batchDish" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装规格:</span><span id="batchSpec" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装方式:</span><span id="batchMethod" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装份数:</span><span id="batchQty" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装日期:</span><span id="batchDate" style="font-weight:500;"></span></div>
</div>
</div>
<div class="form-item" id="claimNameCP" style="display:none;">
<div class="form-item__label">餐品名称<span class="required">*</span></div>
<select><option value="">请选择餐品</option><option>宫保鸡丁</option><option>清蒸鱼</option><option>蒜蓉菠菜</option><option>炒胡萝卜</option><option>红烧排骨</option></select>
</div>
<div class="form-item">
<div class="form-item__label">包装规格<span class="required">*</span></div>
@@ -262,6 +250,10 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<div class="form-item__label">申领数量(kg)<span class="required">*</span></div>
<input type="number" placeholder="请输入数量">
</div>
<div class="form-item">
<div class="form-item__label">关联仓库区域</div>
<select><option value="">请选择</option><option>A仓-蔬菜区-01</option><option>A仓-蔬菜区-02</option><option>B仓-肉类区-01</option><option>B仓-肉类区-02</option><option>C仓-水产区-01</option></select>
</div>
<div class="form-item">
<div class="form-item__label">预定配送时间</div>
<input type="datetime-local" placeholder="请选择配送时间">
@@ -328,41 +320,21 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
</div>
</div>
<!-- 备货完成弹窗(补全备货信息) -->
<!-- 备货完成二次确认弹窗 -->
<div class="modal-mask" id="modal-ready">
<div class="modal" style="width:520px;">
<div class="modal" style="width:420px;">
<div class="modal__header">
<div class="modal__title">补全备货信息</div>
<div class="modal__title">确认备货完成</div>
<button class="modal__close" onclick="closeModal('modal-ready')"></button>
</div>
<div class="modal__body">
<div style="background:var(--primary-light);border-radius:var(--radius-md);padding:12px 16px;margin-bottom:20px;font-size:var(--font-sm);color:var(--primary);display:flex;align-items:center;gap:8px;">
<span style="font-size:16px;">📋</span>
<span>申领单号:<strong id="readyOrderNo"></strong> 净菜/餐品:<strong id="readyFoodName"></strong></span>
</div>
<div class="form-grid" style="grid-template-columns:1fr;">
<div class="form-item">
<div class="form-item__label">包装批次号<span class="required">*</span></div>
<select id="readyBatchSelect" onchange="onReadyBatchChange(this.value)"><option value="">请选择批次号</option><option>BATCH-DH-20260415-01</option><option>BATCH-DH-20260415-02</option><option>BATCH-DH-20260415-03</option><option>BATCH-DH-20260415-04</option></select>
</div>
<div class="form-item" id="readyBatchInfoPanel" style="display:none;">
<div class="form-item__label">批次包装信息</div>
<div style="background:#FAFAFA;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;font-size:var(--font-sm);">
<div><span style="color:var(--text-secondary);">包装餐品:</span><span id="readyBatchDish" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装规格:</span><span id="readyBatchSpec" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装方式:</span><span id="readyBatchMethod" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装份数:</span><span id="readyBatchQty" style="font-weight:500;"></span></div>
<div><span style="color:var(--text-secondary);">包装日期:</span><span id="readyBatchDate" style="font-weight:500;"></span></div>
</div>
</div>
</div>
</div>
<p style="font-size:var(--font-xs);color:var(--text-placeholder);margin-top:12px;">选择包装批次号后,订单状态将变为「待配送」</p>
<div class="modal__body" style="text-align:center;padding:32px 24px;">
<div style="font-size:40px;margin-bottom:12px;">📦</div>
<p style="font-size:15px;color:#333;font-weight:600;margin-bottom:8px;">确认申领单 <span id="readyOrderNo"></span> 已备货完成?</p>
<p style="font-size:13px;color:#999;line-height:1.6;">净菜/餐品:<span id="readyFoodName" style="color:#333;font-weight:500;"></span><br>确认后订单状态将变为「待配送」</p>
</div>
<div class="modal__footer">
<div class="modal__footer" style="justify-content:center;">
<button class="btn btn-default" onclick="closeModal('modal-ready')">取消</button>
<button class="btn btn-primary" onclick="doReady()">确认备货完成</button>
<button class="btn btn-primary" style="background:var(--success);" onclick="doReady()">确认完成</button>
</div>
</div>
</div>
@@ -375,50 +347,20 @@ function closeModal(id){document.getElementById(id).classList.remove('show');}
document.querySelectorAll('.modal-mask').forEach(m=>{
m.addEventListener('click',e=>{if(e.target===m)m.classList.remove('show');});
});
/* ========== 批次包装信息数据 ========== */
var batchInfo={
'BATCH-DH-20260415-01':{dish:'宫保鸡丁',spec:'标准份(500g',method:'冷鲜袋',qty:'10',date:'2026-04-15'},
'BATCH-DH-20260415-02':{dish:'清蒸鱼',spec:'标准份(500g',method:'保鲜盒',qty:'8',date:'2026-04-15'},
'BATCH-DH-20260415-03':{dish:'蒜蓉菠菜',spec:'标准份(500g',method:'冷鲜袋',qty:'12',date:'2026-04-15'},
'BATCH-DH-20260415-04':{dish:'炒胡萝卜',spec:'大份(800g',method:'保鲜盒',qty:'6',date:'2026-04-15'}
};
// 新建申领单 — 选择批次号回显信息
function onBatchChange(val){
var panel=document.getElementById('batchInfoPanel');
var info=batchInfo[val];
if(!info){panel.style.display='none';return;}
document.getElementById('batchDish').textContent=info.dish;
document.getElementById('batchSpec').textContent=info.spec;
document.getElementById('batchMethod').textContent=info.method;
document.getElementById('batchQty').textContent=info.qty;
document.getElementById('batchDate').textContent=info.date;
panel.style.display='flex';
// 净菜类型切换:显示净菜名称或餐品名称
function toggleClaimName(){
var v=document.getElementById('claimType').value;
document.getElementById('claimNameNC').style.display=(v==='cp'?'none':'flex');
document.getElementById('claimNameCP').style.display=(v==='cp'?'flex':'none');
}
// 备货完成弹窗 — 选择批次号回显信息
function onReadyBatchChange(val){
var panel=document.getElementById('readyBatchInfoPanel');
var info=batchInfo[val];
if(!info){panel.style.display='none';return;}
document.getElementById('readyBatchDish').textContent=info.dish;
document.getElementById('readyBatchSpec').textContent=info.spec;
document.getElementById('readyBatchMethod').textContent=info.method;
document.getElementById('readyBatchQty').textContent=info.qty;
document.getElementById('readyBatchDate').textContent=info.date;
panel.style.display='flex';
}
/* ========== 列索引(去掉溯源码和关联仓库区域后) ========== */
/* 0申领单号 1申领食堂 2净菜类型 3净菜/餐品 4包装规格 5申领份数 6申领数量 7订单状态 8申领时间 9预定配送时间 10配送人 11操作 */
/* 确认收货 */
function openReceiveConfirm(el){
var tr=el.closest('tr');
var tds=tr.querySelectorAll('td');
/* 列:0申领单号 4净菜/餐品 */
document.getElementById('receiveOrderNo').textContent=tds[0].textContent;
document.getElementById('receiveFoodName').textContent=tds[3].textContent;
document.getElementById('receiveFoodName').textContent=tds[4].textContent;
openModal('modal-receive');
}
function doReceive(){
@@ -431,7 +373,7 @@ function openDeliverModal(el){
var tr=el.closest('tr');
var tds=tr.querySelectorAll('td');
document.getElementById('deliverOrderNo').textContent=tds[0].textContent;
document.getElementById('deliverFoodName').textContent=tds[3].textContent;
document.getElementById('deliverFoodName').textContent=tds[4].textContent;
document.getElementById('deliverPerson').value='';
document.getElementById('deliverRemark').value='';
openModal('modal-deliver');
@@ -443,52 +385,19 @@ function doDeliver(){
alert('配送任务已创建,配送人:'+person+',订单状态已变为「配送中」');
}
/* 备货完成 — 打开补全备货信息弹窗 */
/* 备货完成 */
function openReadyConfirm(el){
var tr=el.closest('tr');
var tds=tr.querySelectorAll('td');
document.getElementById('readyOrderNo').textContent=tds[0].textContent;
document.getElementById('readyFoodName').textContent=tds[3].textContent;
// 重置批次选择和面板
document.getElementById('readyBatchSelect').selectedIndex=0;
document.getElementById('readyBatchInfoPanel').style.display='none';
document.getElementById('readyFoodName').textContent=tds[4].textContent;
openModal('modal-ready');
}
function doReady(){
var batch=document.getElementById('readyBatchSelect').value;
if(!batch){alert('请选择包装批次号');return;}
closeModal('modal-ready');
alert('备货信息已补全,订单状态已变为「待配送」\n包装批次号:'+batch);
alert('备货已确认完成,订单状态已变为「待配送」');
}
/* ========== 餐品食材数据(与 sup-pkg-label 保持一致) ========== */
var dishIngredients={
'宫保鸡丁':[
{trace:'NC-PROC-JXR-20260415-01',name:'鸡胸肉',type:'主材',amount:'120g'},
{trace:'NC-PROC-HUS-20260415-01',name:'花生',type:'辅材',amount:'20g'},
{trace:'NC-PROC-GLJ-20260415-01',name:'干辣椒',type:'调料',amount:'5g'}
],
'清蒸鱼':[
{trace:'NC-PROC-CYU-20260415-01',name:'草鱼',type:'主材',amount:'100g'},
{trace:'NC-PROC-JPN-20260415-01',name:'姜片',type:'调料',amount:'适量'}
],
'蒜蓉菠菜':[
{trace:'NC-PROC-BOC-20260415-01',name:'净菠菜',type:'主材',amount:'120g'},
{trace:'NC-PROC-DSN-20260415-01',name:'大蒜',type:'调料',amount:'8g'}
],
'炒胡萝卜':[
{trace:'NC-PROC-HLB-20260415-01',name:'净胡萝卜',type:'主材',amount:'260g'},
{trace:'NC-PROC-CJG-20260415-01',name:'葱姜',type:'调料',amount:'适量'}
]
};
// 餐品净菜包对应的包装批次号
var dishBatch={
'宫保鸡丁':'BATCH-DH-20260415-01',
'清蒸鱼':'BATCH-DH-20260415-02',
'蒜蓉菠菜':'BATCH-DH-20260415-03',
'炒胡萝卜':'BATCH-DH-20260415-04'
};
/* 右侧抽屉组件 */
var Drawer={
open:function(title,bodyHtml){
@@ -507,9 +416,10 @@ var Drawer={
}
};
/* ========== 详情抽屉(定制化渲染) ========== */
/* 详情抽屉 */
function showDetail(el){
var tr=el.closest('tr');
var ths=tr.closest('table').querySelectorAll('thead th');
var tds=tr.querySelectorAll('td');
/* 列序:0申领单号 1申领食堂 2净菜类型 3净菜/餐品 4包装规格 5申领份数 6申领数量 7订单状态 8申领时间 9预定配送时间 10配送人 */
var orderNo=tds[0].textContent;
@@ -544,35 +454,15 @@ function showDetail(el){
} else {
// 餐品净菜包 → 显示包装批次号
html+='<div class="drawer-field"><div class="drawer-field__label">包装批次号</div><div class="drawer-field__value">'+(dishBatch[foodName]||'—')+'</div></div>';
}
html+='<div class="drawer-field"><div class="drawer-field__label">包装规格</div><div class="drawer-field__value">'+spec+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">申领份数</div><div class="drawer-field__value">'+qty+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">申领数量(kg)</div><div class="drawer-field__value">'+weight+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">订单状态</div><div class="drawer-field__value">'+statusHtml+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">申领时间</div><div class="drawer-field__value">'+claimTime+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">预定配送时间</div><div class="drawer-field__value">'+deliverTime+'</div></div>';
html+='<div class="drawer-field"><div class="drawer-field__label">配送人</div><div class="drawer-field__value">'+deliverPerson+'</div></div>';
var html='<div class="drawer-section"><div class="drawer-section__title">详细信息</div><div class="drawer-fields">';
for(var i=0;i<ths.length-1;i++){
html+='<div class="drawer-field"><div class="drawer-field__label">'+ths[i].textContent+'</div><div class="drawer-field__value">'+tds[i].innerHTML+'</div></div>';
}
html+='</div></div>';
// 餐品净菜包 → 追加净菜包明细表格
if(isCp){
var ings=dishIngredients[foodName]||[];
var tagCls={'主材':'tag-blue','辅材':'tag-green','调料':'tag-orange'};
html+='<div class="drawer-section"><div class="drawer-section__title">净菜包明细</div>';
html+='<table class="ing-detail-table"><thead><tr><th>食材溯源码</th><th>食材名称</th><th>分类</th><th>每份用量</th></tr></thead><tbody>';
if(ings.length>0){
ings.forEach(function(i){
html+='<tr><td>'+i.trace+'</td><td>'+i.name+'</td><td><span class="tag '+(tagCls[i.type]||'')+'">'+i.type+'</span></td><td>'+i.amount+'</td></tr>';
});
} else {
html+='<tr><td colspan="4" style="text-align:center;color:var(--text-placeholder);">暂无明细数据</td></tr>';
}
html+='</tbody></table></div>';
}
Drawer.open('净菜内供详情 — '+orderNo, html);
}
var key=tds[0].textContent;
Drawer.open('净菜内供详情 — '+key, html);
}}
</script>
</body>
+2 -2
View File
@@ -267,9 +267,9 @@ tbody td.td-actions{white-space:nowrap;}
<table>
<thead><tr><th>出库单号</th><th>售卖类型</th><th>出库数量</th><th>出库重量(kg)</th><th>接收方</th><th>出库时间</th><th>操作人</th></tr></thead>
<tbody>
<tr><td>OUT-20260415-001</td><td><span class="tag tag-blue">内供</span></td><td>20</td><td>10.0</td><td>第一食堂</td><td>2026-04-15 14:30</td><td>赵出库</td></tr>
<tr><td>OUT-20260415-001</td><td><span class="tag tag-blue">内供</span></td><td>20</td><td>10.0</td><td>第一场所</td><td>2026-04-15 14:30</td><td>赵出库</td></tr>
<tr><td>OUT-20260415-002</td><td><span class="tag tag-green">外售</span></td><td>8</td><td>4.0</td><td>鲜达超市</td><td>2026-04-15 16:00</td><td>赵出库</td></tr>
<tr><td>OUT-20260416-001</td><td><span class="tag tag-blue">内供</span></td><td>15</td><td>7.5</td><td>第二食堂</td><td>2026-04-16 09:20</td><td>钱出库</td></tr>
<tr><td>OUT-20260416-001</td><td><span class="tag tag-blue">内供</span></td><td>15</td><td>7.5</td><td>第二场所</td><td>2026-04-16 09:20</td><td>钱出库</td></tr>
</tbody>
</table>
</div>