feat: 自有餐品库改名+终端管理重构为分组菜单

- 自由餐品库 → 自有餐品库,路径 din-dish-free.html → din-dish-own.html
- 「终端管理」升级为可展开二级菜单组,下设「设备管理」(din-terminal.html) 和「内容中心」(din-content-center.html 新增)
- 同步更新全部营养用餐分组页面侧边栏及 index.html SITE_MAP

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
fengpu
2026-08-03 18:38:46 +08:00
co-authored by Claude Opus 4.7
parent b19d24bef8
commit 8e49ebc020
27 changed files with 855 additions and 54 deletions
+3 -2
View File
@@ -294,14 +294,15 @@ const SITE_MAP = [
{ file:'sup-clean-external.html', label:'净菜外售' },
{ file:'din-user-mgmt.html', label:'用户管理' },
{ file:'din-dish-all.html', label:'菜品总库' },
{ file:'din-dish-free.html', label:'自餐品库' },
{ file:'din-dish-own.html', label:'自餐品库' },
{ file:'din-dish-all-dialog.html', label:'菜品总库弹窗', dialog:true },
{ file:'din-dish-add.html', label:'新增菜品' },
{ file:'din-ingredient.html', label:'食材管理' },
{ file:'din-ingredient-dialog.html', label:'食材管理弹窗', dialog:true },
{ file:'din-ingredient-detail.html', label:'食材详情' },
{ file:'din-recipe-mgmt.html', label:'食谱管理' },
{ file:'din-terminal.html', label:'终端管理' },
{ file:'din-terminal.html', label:'设备管理' },
{ file:'din-content-center.html', label:'内容中心' },
{ file:'din-order-meal.html', label:'点餐订单' },
{ file:'din-order-line.html', label:'排队取餐' },
{ file:'din-order-pickup.html', label:'取餐管理' },
+11 -2
View File
@@ -151,7 +151,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup open">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -170,7 +170,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -152,7 +152,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup open">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -171,7 +171,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -174,7 +174,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -193,7 +193,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -116,7 +116,7 @@ tr:hover td{background:#FAFAFA;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -135,7 +135,16 @@ tr:hover td{background:#FAFAFA;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -134,7 +134,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -153,7 +153,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+547
View File
@@ -0,0 +1,547 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>营养管理 - 内容中心 | 健康CQ原型</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;}
:root{
--primary:#1890FF;--primary-light:#E6F7FF;--success:#52C41A;--warning:#FAAD14;--danger:#FF4D4F;
--text-primary:#333;--text-secondary:#666;--text-placeholder:#999;--border:#E8E8E8;--background:#F5F7FA;
--font-xs:11px;--font-sm:13px;--font-base:15px;--font-lg:17px;--font-xl:20px;--font-xxl:24px;
--radius-sm:4px;--radius-md:8px;--radius-lg:12px;
--shadow-sm:0 1px 4px rgba(0,0,0,0.08);--shadow-md:0 4px 12px rgba(0,0,0,0.12);
}
.top-bar{display:flex;align-items:center;height:56px;background:#001529;padding:0 24px;position:fixed;top:0;left:0;right:0;z-index:100;}
.top-bar__logo{display:flex;align-items:center;gap:8px;color:#fff;font-size:var(--font-lg);font-weight:600;white-space:nowrap;width:240px;flex-shrink:0;}
.top-bar__logo svg{width:28px;height:28px;}
.top-bar__nav{display:flex;align-items:center;gap:4px;flex:1;}
.top-bar__nav a{color:rgba(255,255,255,0.65);text-decoration:none;padding:6px 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);transition:all .2s;}
.top-bar__nav a:hover{color:#fff;background:rgba(255,255,255,0.08);}
.top-bar__nav a.active{color:#fff;background:var(--primary);}
.top-bar__right{display:flex;align-items:center;gap:16px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);}
.top-bar__right .btn-back{color:rgba(255,255,255,0.65);cursor:pointer;display:flex;align-items:center;gap:4px;text-decoration:none;}
.top-bar__right .btn-back:hover{color:#fff;}
.avatar{width:32px;height:32px;border-radius:50%;background:#1890FF;display:flex;align-items:center;justify-content:center;color:#fff;font-size:var(--font-sm);cursor:pointer;}
.sidebar{position:fixed;top:56px;left:0;bottom:0;width:240px;background:#001529;overflow-y:auto;z-index:90;padding-top:8px;}
.sidebar-menu__title{color:rgba(255,255,255,0.35);font-size:var(--font-xs);padding:16px 24px 8px;text-transform:uppercase;letter-spacing:.5px;}
.sidebar-item{display:flex;align-items:center;gap:8px;padding:10px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;text-decoration:none;}
.sidebar-item:hover{color:#fff;background:rgba(255,255,255,0.06);}
.sidebar-item.active{color:#fff;background:var(--primary);}
.mi{display:inline-block;width:20px;text-align:center;filter:grayscale(1);opacity:0.65;margin-right:2px;}
.sidebar-item.active .mi{opacity:0.9;}
.sidebar-subgroup__header{display:flex;align-items:center;gap:6px;padding:10px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;user-select:none;}
.sidebar-subgroup__header:hover{color:rgba(255,255,255,0.85);background:rgba(255,255,255,0.04);}
.sidebar-subgroup__header .arrow{width:10px;height:10px;transition:transform .2s;flex-shrink:0;}
.sidebar-subgroup__header .arrow path{stroke:rgba(255,255,255,0.45);}
.sidebar-subgroup.open>.sidebar-subgroup__header{color:rgba(255,255,255,0.85);}
.sidebar-subgroup.open>.sidebar-subgroup__header .arrow{transform:rotate(90deg);}
.sidebar-subgroup__body{display:none;padding-left:16px;}
.sidebar-subgroup.open>.sidebar-subgroup__body{display:block;}
.sidebar-subgroup__body .sidebar-item{padding-left:36px;font-size:12px;}
.main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);}
.filter-bar{background:#fff;border-radius:var(--radius-md);padding:20px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.filter-item{display:flex;align-items:center;gap:8px;}
.filter-item label{font-size:var(--font-sm);color:var(--text-secondary);white-space:nowrap;}
.filter-input{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:var(--font-sm);color:var(--text-primary);outline:none;background:#fff;min-width:200px;}
.filter-input:focus{border-color:var(--primary);}
.filter-select{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 28px 0 12px;font-size:var(--font-sm);color:var(--text-primary);outline:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;cursor:pointer;min-width:120px;}
.btn{height:36px;padding:0 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);cursor:pointer;border:none;transition:all .2s;display:inline-flex;align-items:center;gap:6px;}
.btn-primary{background:var(--primary);color:#fff;}.btn-primary:hover{background:#40a9ff;}
.btn-default{background:#fff;color:var(--text-primary);border:1px solid var(--border);}.btn-default:hover{color:var(--primary);border-color:var(--primary);}
.btn-danger{background:#fff;color:var(--danger);border:1px solid var(--danger);}.btn-danger:hover{background:#fff1f0;}
.table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;}
.table-card__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);}
.table-card__title{font-size:var(--font-base);font-weight:600;}
.table-card__actions{display:flex;gap:8px;align-items:center;}
.table-card__content{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;}
.table-card__content table{min-width:100%;white-space:nowrap;}
table{width:100%;border-collapse:collapse;}
thead th{background:#FAFAFA;padding:12px 16px;text-align:left;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;}
tbody td{padding:14px 16px;font-size:var(--font-sm);color:var(--text-primary);border-bottom:1px solid var(--border);white-space:nowrap;}
thead th:last-child,tbody td.td-actions{position:sticky;right:0;background:#fff;box-shadow:-4px 0 8px rgba(0,0,0,0.04);z-index:2;white-space:nowrap;}
thead th:last-child{background:#FAFAFA;}
tbody tr:hover td.td-actions{background:#F8FBFF;}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover{background:#F8FBFF;}
.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:var(--font-xs);}
.tag-blue{background:var(--primary-light);color:var(--primary);}
.tag-green{background:#F6FFED;color:var(--success);}
.tag-orange{background:#FFF7E6;color:var(--warning);}
.tag-red{background:#FFF1F0;color:var(--danger);}
.tag-gray{background:#F5F5F5;color:#999;}
.link{color:var(--primary);cursor:pointer;font-size:var(--font-sm);}.link:hover{color:#40a9ff;}
.pagination{display:flex;align-items:center;justify-content:flex-end;padding:16px 24px;gap:8px;border-top:1px solid var(--border);}
.pagination span{font-size:var(--font-sm);color:var(--text-secondary);}
.page-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;font-size:var(--font-sm);display:inline-flex;align-items:center;justify-content:center;transition:all .2s;}
.page-btn:hover,.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.45);z-index:1000;display:flex;align-items:center;justify-content:center;}
.modal{background:#fff;border-radius:8px;width:640px;max-height:80vh;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,0.15);}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid #e8e8e8;}
.modal-title{font-size:16px;font-weight:600;color:#262626;}
.modal-close{font-size:22px;cursor:pointer;color:#8c8c8c;line-height:1;}
.modal-close:hover{color:#262626;}
.modal-body{padding:24px;}
.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e8e8e8;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.form-item{display:flex;flex-direction:column;gap:4px;}
.form-item.full{grid-column:1/-1;}
.form-item label{font-size:13px;color:#8c8c8c;}
.form-item label .required{color:#ff4d4f;margin-left:2px;}
.form-item input,.form-item select,.form-item textarea{height:36px;padding:0 12px;border:1px solid #e8e8e8;border-radius:4px;font-size:13px;outline:none;width:100%;}
.form-item input:focus,.form-item select:focus,.form-item textarea:focus{border-color:#1890FF;}
.form-item textarea{height:80px;padding:8px 12px;resize:vertical;}
/* 内容类型面板切换 */
.content-tabs{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;}
.content-tabs__tab{flex:1;padding:8px 0;text-align:center;font-size:var(--font-sm);color:var(--text-secondary);cursor:pointer;background:#FAFAFA;border-right:1px solid var(--border);transition:all .2s;user-select:none;}
.content-tabs__tab:last-child{border-right:none;}
.content-tabs__tab:hover{color:var(--primary);background:#fff;}
.content-tabs__tab.active{color:#fff;background:var(--primary);}
.content-panel{display:none;margin-top:12px;}
.content-panel.show{display:block;}
.upload-area{border:2px dashed #e8e8e8;border-radius:8px;padding:28px;text-align:center;color:#999;font-size:13px;cursor:pointer;transition:all .2s;}
.upload-area:hover{border-color:#1890FF;color:#1890FF;background:#F8FBFF;}
.upload-area__icon{font-size:28px;margin-bottom:6px;display:block;}
.upload-area__hint{font-size:12px;color:#bbb;margin-top:4px;}
.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px;}
.stat-card{background:#fff;border-radius:var(--radius-md);padding:20px 24px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:16px;}
.stat-card__icon{width:48px;height:48px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:24px;}
.stat-card__icon.blue{background:var(--primary-light);}
.stat-card__icon.green{background:#F6FFED;}
.stat-card__icon.orange{background:#FFF7E6;}
.stat-card__icon.red{background:#FFF1F0;}
.stat-card__info{display:flex;flex-direction:column;gap:4px;}
.stat-card__value{font-size:var(--font-xl);font-weight:700;color:var(--text-primary);}
.stat-card__label{font-size:var(--font-sm);color:var(--text-secondary);}
.action-bar{display:flex;align-items:center;gap:8px;margin-bottom:16px;}
/* 页面信息栏 */
.page-header-bar{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:var(--radius-md);padding:16px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);}
.page-header-bar__left{display:flex;align-items:center;gap:12px;}
.page-header-bar__title{font-size:var(--font-lg);font-weight:700;color:var(--text-primary);}
.page-header-bar__meta{font-size:var(--font-sm);color:var(--text-placeholder);}
.page-header-bar__right{display:flex;align-items:center;gap:12px;}
.page-header-bar__right label{font-size:var(--font-sm);color:var(--text-secondary);white-space:nowrap;}
.page-header-bar__right .canteen-select{height:36px;border:2px solid var(--primary);border-radius:var(--radius-sm);padding:0 32px 0 14px;font-size:var(--font-sm);color:var(--primary);font-weight:500;outline:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%231890FF'/%3E%3C/svg%3E") no-repeat right 12px center;appearance:none;cursor:pointer;min-width:140px;}
/* 右侧详情抽屉 */
.drawer-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:1000;}
.drawer-mask.show{display:block;}
.drawer{position:fixed;top:0;right:-520px;bottom:0;width:520px;background:#fff;z-index:1001;transition:right .3s ease;box-shadow:-4px 0 20px rgba(0,0,0,0.15);display:flex;flex-direction:column;}
.drawer.show{right:0;}
.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);flex-shrink:0;}
.drawer__title{font-size:var(--font-base);font-weight:600;}
.drawer__close{font-size:22px;cursor:pointer;color:var(--text-secondary);line-height:1;}.drawer__close:hover{color:var(--text-primary);}
.drawer__body{padding:24px;overflow-y:auto;flex:1;}
/* 抽屉-分区 */
.detail-section{border-top:1px dashed var(--border);padding-top:18px;margin-top:18px;}
.detail-section:first-child{border-top:none;padding-top:0;margin-top:0;}
.detail-section__title{font-size:var(--font-sm);font-weight:600;color:var(--text-primary);margin-bottom:14px;display:flex;align-items:center;gap:6px;}
.detail-section__title .dot{width:6px;height:6px;border-radius:50%;background:var(--primary);}
.detail-row{display:flex;margin-bottom:14px;}
.detail-label{width:100px;flex-shrink:0;font-size:var(--font-sm);color:var(--text-secondary);}
.detail-value{font-size:var(--font-sm);color:var(--text-primary);flex:1;}
/* 抽屉-内容预览 */
.drawer-preview{margin-top:12px;border-radius:8px;overflow:hidden;}
.drawer-preview img{width:100%;max-height:300px;object-fit:cover;border-radius:8px;border:1px solid var(--border);}
.drawer-preview .preview-text{padding:16px;background:#FAFAFA;border-radius:8px;font-size:var(--font-sm);line-height:1.7;white-space:pre-wrap;color:var(--text-primary);border:1px solid #f0f0f0;}
.drawer-preview .preview-video{width:100%;height:260px;background:#000;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;border-radius:8px;}
.drawer-preview .preview-html{border:1px solid var(--border);border-radius:8px;overflow:hidden;}
/* 确认弹窗 */
.confirm-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:1100;display:flex;align-items:center;justify-content:center;}
.confirm-modal{background:#fff;border-radius:8px;width:420px;box-shadow:0 4px 12px rgba(0,0,0,0.15);}
.confirm-icon{display:flex;align-items:center;justify-content:center;margin-bottom:16px;}
.confirm-icon svg{width:48px;height:48px;}
.confirm-msg{text-align:center;font-size:var(--font-base);color:var(--text-primary);margin-bottom:8px;font-weight:500;}
.confirm-sub{text-align:center;font-size:var(--font-sm);color:var(--text-secondary);}
</style>
</head>
<body>
<!-- 顶部导航 -->
<header class="top-bar">
<div class="top-bar__logo">
<svg viewBox="0 0 28 28" fill="none"><rect width="28" height="28" rx="6" fill="#1890FF"/><path d="M7 14h14M14 7v14" stroke="#fff" stroke-width="2.5" stroke-linecap="round"/></svg>
营养管理
</div>
<nav class="top-bar__nav">
<a href="trace-query.html">溯源总览</a>
<a href="arc-employee.html">档案</a>
<a href="farm-land.html">绿色种采</a>
<a href="sup-hygiene-check.html">卫生供应</a>
<a href="prod-qc-daily.html">健康生产</a>
<a href="din-dict-mgmt.html" class="active">营养用餐</a>
<a href="ano-dirty.html">异常事件</a>
</nav>
<div class="top-bar__right">
<a href="../../index.html" class="btn-back">← 返回首页</a>
<div class="avatar"></div>
<span>系统管理员 ▾</span>
</div>
</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-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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>自有餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
📐 算法标准
</div>
<div class="sidebar-subgroup__body">
<a href="din-algo-population.html" class="sidebar-item"><span class="mi">👥</span>人群基础标准</a>
<a href="din-algo-vip.html" class="sidebar-item"><span class="mi">💎</span>VIP定制标准</a>
</div>
</div>
<a href="din-recipe-mgmt.html" class="sidebar-item"><span class="mi">📋</span>食谱管理</a>
<a href="din-order-meal.html" class="sidebar-item"><span class="mi">🛒</span>营养点餐</a>
<a href="din-user-mgmt.html" class="sidebar-item"><span class="mi">🧑</span>用户管理</a>
<a href="din-order-line.html" class="sidebar-item"><span class="mi">⚖️</span>餐线管理</a>
<a href="din-order-pickup.html" class="sidebar-item"><span class="mi">🍽️</span>取餐管理</a>
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<div class="sidebar-subgroup open">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item active"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🤖 模型管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-model-llm.html" class="sidebar-item"><span class="mi">🧠</span>大模型管理</a>
<a href="din-model-small.html" class="sidebar-item"><span class="mi">⚙️</span>小模型管理</a>
</div>
</div>
<a href="din-innovation.html" class="sidebar-item"><span class="mi">🌟</span>味养创新</a>
</aside>
<!-- 主内容区 -->
<div class="main">
<!-- 页面信息栏 -->
<div class="page-header-bar">
<div class="page-header-bar__left">
<span class="page-header-bar__title">内容中心</span>
<span class="page-header-bar__meta">管理终端投放物料,支持按设备类型或指定设备配置</span>
</div>
<div class="page-header-bar__right">
<label>当前场所</label>
<select class="canteen-select" id="globalCanteen">
<option value="1">一场所(东区)</option>
<option value="2">二场所(西区)</option>
<option value="3">三场所(北区)</option>
</select>
</div>
</div>
<!-- 统计卡片 -->
<div class="stats-row">
<div class="stat-card"><div class="stat-card__icon blue">📦</div><div class="stat-card__info"><div class="stat-card__value">48</div><div class="stat-card__label">物料总数</div></div></div>
<div class="stat-card"><div class="stat-card__icon green"></div><div class="stat-card__info"><div class="stat-card__value">42</div><div class="stat-card__label">生效中</div></div></div>
<div class="stat-card"><div class="stat-card__icon red"></div><div class="stat-card__info"><div class="stat-card__value">6</div><div class="stat-card__label">已过期</div></div></div>
</div>
<!-- 筛选栏 -->
<div class="filter-bar">
<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>HTML片段</option><option>视频</option></select></div>
<div class="filter-item"><label>关联设备类型</label><select class="filter-select"><option>全部</option><option>点餐屏</option><option>智能取餐柜</option><option>LED显示屏</option><option>餐线秤台</option></select></div>
<div class="filter-item"><label>状态</label><select class="filter-select"><option>全部</option><option>生效中</option><option>已过期</option></select></div>
<button class="btn btn-primary">查询</button>
<button class="btn btn-default">重置</button>
</div>
<!-- 操作栏 -->
<div class="action-bar">
<button class="btn btn-primary" onclick="openAddModal()"> 新增物料</button>
<button class="btn btn-default">🔄 刷新</button>
</div>
<!-- 数据表格 -->
<div class="table-card">
<div class="table-card__header">
<div class="table-card__title">物料列表</div>
</div>
<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></tr></thead>
<tbody>
<tr data-id="MT-001" data-name="今日推荐-宫保鸡丁" data-type="图片" data-scope="按设备类型" data-device="点餐屏" data-position="首页横幅" data-sort="1" data-start="2026-04-22 08:00" data-end="2026-04-30 23:59" data-creator="张运营" data-ctime="2026-04-22 10:30" data-status="生效中" data-content-type="img">
<td>MT-001</td><td>今日推荐-宫保鸡丁</td><td><span class="tag tag-blue">图片</span></td><td>按设备类型</td><td>点餐屏</td><td>首页横幅</td><td>1</td><td>2026-04-22 08:00</td><td>2026-04-30 23:59</td><td>张运营</td><td>2026-04-22 10:30</td><td><span class="tag tag-green">生效中</span></td>
<td class="td-actions"><a class="link" onclick="showDetail(this)">详情</a> <a class="link" onclick="openEditModal(this)">编辑</a> <a class="link" style="color:var(--danger)" onclick="showDeleteConfirm(this)">删除</a></td>
</tr>
<tr data-id="MT-002" data-name="营养小贴士-春季养生" data-type="文字" data-scope="按设备类型" data-device="LED显示屏" data-position="底部滚动" data-sort="2" data-start="2026-04-20 08:00" data-end="2026-05-31 23:59" data-creator="张运营" data-ctime="2026-04-20 14:00" data-status="生效中" data-content-type="text">
<td>MT-002</td><td>营养小贴士-春季养生</td><td><span class="tag tag-blue">文字</span></td><td>按设备类型</td><td>LED显示屏</td><td>底部滚动</td><td>2</td><td>2026-04-20 08:00</td><td>2026-05-31 23:59</td><td>张运营</td><td>2026-04-20 14:00</td><td><span class="tag tag-green">生效中</span></td>
<td class="td-actions"><a class="link" onclick="showDetail(this)">详情</a> <a class="link" onclick="openEditModal(this)">编辑</a> <a class="link" style="color:var(--danger)" onclick="showDeleteConfirm(this)">删除</a></td>
</tr>
<tr data-id="MT-003" data-name="新品上市横幅" data-type="HTML片段" data-scope="指定设备" data-device="1号点餐屏" data-position="弹窗" data-sort="3" data-start="2026-04-25 08:00" data-end="2026-05-15 23:59" data-creator="李运营" data-ctime="2026-04-23 09:00" data-status="生效中" data-content-type="html">
<td>MT-003</td><td>新品上市横幅</td><td><span class="tag tag-blue">HTML片段</span></td><td>指定设备</td><td>1号点餐屏</td><td>弹窗</td><td>3</td><td>2026-04-25 08:00</td><td>2026-05-15 23:59</td><td>李运营</td><td>2026-04-23 09:00</td><td><span class="tag tag-green">生效中</span></td>
<td class="td-actions"><a class="link" onclick="showDetail(this)">详情</a> <a class="link" onclick="openEditModal(this)">编辑</a> <a class="link" style="color:var(--danger)" onclick="showDeleteConfirm(this)">删除</a></td>
</tr>
<tr data-id="MT-004" data-name="食堂宣传视频" data-type="视频" data-scope="指定设备" data-device="LED屏-01" data-position="全屏播放" data-sort="4" data-start="2026-04-15 08:00" data-end="2026-06-30 23:59" data-creator="王运营" data-ctime="2026-04-15 16:20" data-status="生效中" data-content-type="video">
<td>MT-004</td><td>食堂宣传视频</td><td><span class="tag tag-blue">视频</span></td><td>指定设备</td><td>LED屏-01</td><td>全屏播放</td><td>4</td><td>2026-04-15 08:00</td><td>2026-06-30 23:59</td><td>王运营</td><td>2026-04-15 16:20</td><td><span class="tag tag-green">生效中</span></td>
<td class="td-actions"><a class="link" onclick="showDetail(this)">详情</a> <a class="link" onclick="openEditModal(this)">编辑</a> <a class="link" style="color:var(--danger)" onclick="showDeleteConfirm(this)">删除</a></td>
</tr>
<tr data-id="MT-005" data-name="周一套餐海报" data-type="图片" data-scope="指定设备" data-device="智能取餐柜-01" data-position="屏幕保护" data-sort="5" data-start="2026-04-14 08:00" data-end="2026-04-20 23:59" data-creator="张运营" data-ctime="2026-04-14 11:00" data-status="已过期" data-content-type="img">
<td>MT-005</td><td>周一套餐海报</td><td><span class="tag tag-blue">图片</span></td><td>指定设备</td><td>智能取餐柜-01</td><td>屏幕保护</td><td>5</td><td>2026-04-14 08:00</td><td>2026-04-20 23:59</td><td>张运营</td><td>2026-04-14 11:00</td><td><span class="tag tag-gray">已过期</span></td>
<td class="td-actions"><a class="link" onclick="showDetail(this)">详情</a> <a class="link" onclick="openEditModal(this)">编辑</a> <a class="link" style="color:var(--danger)" onclick="showDeleteConfirm(this)">删除</a></td>
</tr>
<tr data-id="MT-006" data-name="端午活动弹窗" data-type="HTML片段" data-scope="按设备类型" data-device="点餐屏" data-position="弹窗" data-sort="6" data-start="2026-05-28 08:00" data-end="2026-06-05 23:59" data-creator="李运营" data-ctime="2026-04-23 10:00" data-status="生效中" data-content-type="html">
<td>MT-006</td><td>端午活动弹窗</td><td><span class="tag tag-blue">HTML片段</span></td><td>按设备类型</td><td>点餐屏</td><td>弹窗</td><td>6</td><td>2026-05-28 08:00</td><td>2026-06-05 23:59</td><td>李运营</td><td>2026-04-23 10:00</td><td><span class="tag tag-green">生效中</span></td>
<td class="td-actions"><a class="link" onclick="showDetail(this)">详情</a> <a class="link" onclick="openEditModal(this)">编辑</a> <a class="link" style="color:var(--danger)" onclick="showDeleteConfirm(this)">删除</a></td>
</tr>
</tbody>
</table>
</div>
<div class="pagination"><span>显示 6 条,共 48 条</span><button class="page-btn"></button><button class="page-btn active">1</button><button class="page-btn">2</button><button class="page-btn">3</button><button class="page-btn"></button></div>
</div>
</div>
<!-- 新增/编辑物料弹窗 -->
<div class="modal-overlay" id="modalOverlay" style="display:none;">
<div class="modal">
<div class="modal-header">
<span class="modal-title" id="modalTitle">新增物料</span>
<span class="modal-close" onclick="closeModal()">&times;</span>
</div>
<div class="modal-body">
<div class="form-grid">
<div class="form-item full">
<label>物料名称<span class="required">*</span></label>
<input type="text" id="matName" placeholder="请输入物料名称">
</div>
<div class="form-item full">
<label>物料内容<span class="required">*</span></label>
<div class="content-tabs" id="contentTabs">
<div class="content-tabs__tab active" data-panel="panelImg">图片</div>
<div class="content-tabs__tab" data-panel="panelText">文字</div>
<div class="content-tabs__tab" data-panel="panelHtml">HTML</div>
<div class="content-tabs__tab" data-panel="panelVideo">视频</div>
</div>
<div class="content-panel show" id="panelImg">
<div class="upload-area"><span class="upload-area__icon">🖼️</span>点击或拖拽上传图片<span class="upload-area__hint">支持 JPG / PNG / GIF,最大 10MB</span></div>
</div>
<div class="content-panel" id="panelText">
<textarea id="textContent" placeholder="请输入要展示的文字内容" style="height:120px;"></textarea>
</div>
<div class="content-panel" id="panelHtml">
<textarea id="htmlContent" placeholder="请输入 HTML 片段内容" style="height:140px;font-family:monospace;font-size:12px;"></textarea>
</div>
<div class="content-panel" id="panelVideo">
<div class="upload-area"><span class="upload-area__icon">🎬</span>点击或拖拽上传视频<span class="upload-area__hint">支持 MP4,最大 50MB</span></div>
</div>
</div>
<div class="form-item">
<label>关联范围<span class="required">*</span></label>
<select id="scopeType"><option value="">请选择</option><option value="deviceType">按设备类型</option><option value="device">指定设备</option></select>
</div>
<div class="form-item" id="scopeValueWrap" style="display:none;">
<label id="scopeValueLabel">设备类型<span class="required">*</span></label>
<select id="scopeValue"><option value="">请选择</option></select>
</div>
<div class="form-item">
<label>位置标识<span class="required">*</span></label>
<input type="text" id="matPosition" placeholder="请输入位置标识,如:首页横幅">
</div>
<div class="form-item">
<label>排序</label>
<input type="number" id="matSort" placeholder="数字越小越靠前" min="1" value="1">
</div>
<div class="form-item">
<label>生效时间<span class="required">*</span></label>
<input type="datetime-local" id="matStart">
</div>
<div class="form-item">
<label>到期时间<span class="required">*</span></label>
<input type="datetime-local" id="matEnd">
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-default" onclick="closeModal()">取消</button>
<button class="btn btn-primary" id="btnSubmit">确定</button>
</div>
</div>
</div>
<!-- 详情抽屉 -->
<div class="drawer-mask" id="drawerMask" onclick="closeDrawer()"></div>
<div class="drawer" id="drawer">
<div class="drawer__header">
<span class="drawer__title" id="drawerTitle">物料详情</span>
<span class="drawer__close" onclick="closeDrawer()">&times;</span>
</div>
<div class="drawer__body" id="drawerBody"></div>
</div>
<script>
/* ===== 侧边栏 ===== */
function toggleSubgroup(header){header.parentElement.classList.toggle('open');}
(function(){var active=document.querySelector('.sidebar-item.active');if(!active)return;var sub=active.closest('.sidebar-subgroup');if(sub)sub.classList.add('open');})();
/* ===== 新增弹窗 ===== */
var editMode=false;
function openAddModal(){
editMode=false;
document.getElementById('modalTitle').textContent='新增物料';
document.getElementById('btnSubmit').textContent='确定';
document.getElementById('modalOverlay').style.display='flex';
resetForm();
}
function closeModal(){document.getElementById('modalOverlay').style.display='none';}
document.getElementById('modalOverlay').addEventListener('click',function(e){if(e.target===this)closeModal();});
/* ===== 编辑弹窗 ===== */
function openEditModal(linkEl){
editMode=true;
var row=linkEl.closest('tr');
var d=row.dataset;
document.getElementById('modalTitle').textContent='编辑物料';
document.getElementById('btnSubmit').textContent='保存';
document.getElementById('matName').value=d.name;
document.getElementById('scopeType').value=d.scope==='按设备类型'?'deviceType':'device';
document.getElementById('scopeType').dispatchEvent(new Event('change'));
setTimeout(function(){document.getElementById('scopeValue').value=d.device;},50);
document.getElementById('matPosition').value=d.position;
document.getElementById('matSort').value=d.sort;
document.getElementById('matStart').value=d.start.replace(' ','T');
document.getElementById('matEnd').value=d.end.replace(' ','T');
// 切换内容面板
var panelMap={img:'panelImg',text:'panelText',html:'panelHtml',video:'panelVideo'};
var targetPanel=panelMap[d.contentType]||'panelImg';
document.querySelectorAll('.content-tabs__tab').forEach(function(t){t.classList.toggle('active',t.dataset.panel===targetPanel);});
document.querySelectorAll('.content-panel').forEach(function(p){p.classList.toggle('show',p.id===targetPanel);});
document.getElementById('modalOverlay').style.display='flex';
}
/* ===== 内容面板切换 ===== */
document.querySelectorAll('.content-tabs__tab').forEach(function(tab){
tab.addEventListener('click',function(){
document.querySelectorAll('.content-tabs__tab').forEach(function(t){t.classList.remove('active');});
this.classList.add('active');
document.querySelectorAll('.content-panel').forEach(function(p){p.classList.remove('show');});
document.getElementById(this.dataset.panel).classList.add('show');
});
});
/* ===== 关联范围切换 ===== */
document.getElementById('scopeType').addEventListener('change',function(){
var wrap=document.getElementById('scopeValueWrap');
var label=document.getElementById('scopeValueLabel');
var sel=document.getElementById('scopeValue');
sel.innerHTML='<option value="">请选择</option>';
if(this.value==='deviceType'){
label.textContent='设备类型';
['点餐屏','智能取餐柜','LED显示屏','餐线秤台'].forEach(function(v){sel.innerHTML+='<option>'+v+'</option>';});
wrap.style.display='block';
}else if(this.value==='device'){
label.textContent='指定设备';
['1号点餐屏','2号点餐屏','智能取餐柜-01','智能取餐柜-02','LED屏-01','LED屏-02'].forEach(function(v){sel.innerHTML+='<option>'+v+'</option>';});
wrap.style.display='block';
}else{
wrap.style.display='none';
}
});
/* ===== 重置表单 ===== */
function resetForm(){
document.getElementById('matName').value='';
document.getElementById('scopeType').value='';
document.getElementById('scopeValueWrap').style.display='none';
document.getElementById('matPosition').value='';
document.getElementById('matSort').value='1';
document.getElementById('matStart').value='';
document.getElementById('matEnd').value='';
document.querySelectorAll('.content-tabs__tab').forEach(function(t,i){t.classList.toggle('active',i===0);});
document.querySelectorAll('.content-panel').forEach(function(p,i){p.classList.toggle('show',i===0);});
}
/* ===== 详情抽屉 ===== */
function showDetail(linkEl){
var row=linkEl.closest('tr');
var d=row.dataset;
var statusTag='<span class="tag '+(d.status==='生效中'?'tag-green':'tag-gray')+'">'+d.status+'</span>';
var typeTag='<span class="tag tag-blue">'+d.type+'</span>';
// 渲染内容预览
var previewHtml='';
switch(d.contentType){
case 'img':
previewHtml='<div class="drawer-preview"><img src="https://placehold.co/600x360/1890FF/white?text='+encodeURIComponent(d.name)+'" alt="'+d.name+'"></div>';
break;
case 'text':
previewHtml='<div class="drawer-preview"><div class="preview-text">春季养生小贴士:\n1. 多吃时令蔬菜,如春笋、菠菜\n2. 适当增加蛋白质摄入\n3. 保持饮食清淡,少油少盐\n4. 多喝温水,促进新陈代谢\n5. 适量运动,增强体质</div></div>';
break;
case 'html':
previewHtml='<div class="drawer-preview"><div class="preview-html"><div style="background:linear-gradient(135deg,#ff6b35,#f7931e);color:#fff;padding:24px;text-align:center;"><h2 style="margin:0 0 8px;font-size:22px">'+d.name+'</h2><p style="margin:0;font-size:18px">限时特惠 美味来袭</p><p style="margin:8px 0 0;font-size:14px;opacity:0.85">尝鲜价 ¥19.9 | 原价 ¥29.9</p></div></div></div>';
break;
case 'video':
previewHtml='<div class="drawer-preview"><div class="preview-video">▶ '+d.name+'</div></div>';
break;
default:
previewHtml='<div class="drawer-preview" style="color:var(--text-placeholder);text-align:center;padding:40px;">暂无内容预览</div>';
}
document.getElementById('drawerTitle').textContent='物料详情 — '+d.name;
document.getElementById('drawerBody').innerHTML=
'<div class="detail-section">'+
'<div class="detail-section__title"><span class="dot"></span>基本信息</div>'+
'<div class="detail-row"><div class="detail-label">物料编号</div><div class="detail-value">'+d.id+'</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">'+typeTag+'</div></div>'+
'<div class="detail-row"><div class="detail-label">状态</div><div class="detail-value">'+statusTag+'</div></div>'+
'<div class="detail-row"><div class="detail-label">关联范围</div><div class="detail-value">'+d.scope+'</div></div>'+
'<div class="detail-row"><div class="detail-label">关联设备</div><div class="detail-value">'+d.device+'</div></div>'+
'<div class="detail-row"><div class="detail-label">位置标识</div><div class="detail-value">'+d.position+'</div></div>'+
'<div class="detail-row"><div class="detail-label">排序</div><div class="detail-value">'+d.sort+'</div></div>'+
'</div>'+
'<div class="detail-section">'+
'<div class="detail-section__title"><span class="dot"></span>时间信息</div>'+
'<div class="detail-row"><div class="detail-label">生效时间</div><div class="detail-value">'+d.start+'</div></div>'+
'<div class="detail-row"><div class="detail-label">到期时间</div><div class="detail-value">'+d.end+'</div></div>'+
'<div class="detail-row"><div class="detail-label">创建人</div><div class="detail-value">'+d.creator+'</div></div>'+
'<div class="detail-row"><div class="detail-label">创建时间</div><div class="detail-value">'+d.ctime+'</div></div>'+
'</div>'+
'<div class="detail-section">'+
'<div class="detail-section__title"><span class="dot"></span>物料内容预览</div>'+
previewHtml+
'</div>';
document.getElementById('drawerMask').classList.add('show');
document.getElementById('drawer').classList.add('show');
}
function closeDrawer(){
document.getElementById('drawerMask').classList.remove('show');
document.getElementById('drawer').classList.remove('show');
}
/* ===== 删除确认弹窗 ===== */
function showDeleteConfirm(linkEl){
var row=linkEl.closest('tr');
var overlay=document.createElement('div');
overlay.className='confirm-overlay';
overlay.innerHTML='<div class="confirm-modal"><div class="modal-header"><span class="modal-title">删除确认</span><span class="modal-close">&times;</span></div><div class="modal-body">'+
'<div class="confirm-icon"><svg viewBox="0 0 48 48" fill="none"><circle cx="24" cy="24" r="22" fill="#FFF1F0" stroke="#FF4D4F" stroke-width="2"/><path d="M24 14v14" stroke="#FF4D4F" stroke-width="3" stroke-linecap="round"/><circle cx="24" cy="34" r="2" fill="#FF4D4F"/></svg></div>'+
'<div class="confirm-msg">确定要删除该物料吗?</div>'+
'<div class="confirm-sub">'+row.dataset.id+' · '+row.dataset.name+'</div>'+
'</div><div class="modal-footer"><button class="btn btn-default close-confirm">取消</button><button class="btn btn-danger close-confirm">确定删除</button></div></div>';
document.body.appendChild(overlay);
overlay.addEventListener('click',function(e){if(e.target===overlay||e.target.classList.contains('close-confirm'))overlay.remove();});
}
</script>
</body>
</html>
+11 -2
View File
@@ -186,7 +186,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -205,7 +205,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item active"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -177,7 +177,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -196,7 +196,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item active"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -413,7 +413,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -432,7 +432,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item active"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -122,7 +122,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -141,7 +141,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -126,7 +126,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -145,7 +145,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -206,7 +206,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item active"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -225,7 +225,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -2,7 +2,7 @@
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>营养管理 - 自餐品库 | 健康CQ原型</title>
<title>营养管理 - 自餐品库 | 健康CQ原型</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;}
@@ -173,6 +173,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
.status-toggle.active .status-toggle__switch::after{transform:translateX(16px);}
.status-toggle__label{font-size:var(--font-xs);color:var(--text-placeholder);}
.status-toggle.active .status-toggle__label{color:var(--success);}
/* 页面信息栏 + 食堂切换 */
.page-header-bar{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:var(--radius-md);padding:16px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);}
.page-header-bar__left{display:flex;align-items:center;gap:12px;}
.page-header-bar__title{font-size:var(--font-lg);font-weight:700;color:var(--text-primary);}
.page-header-bar__meta{font-size:var(--font-sm);color:var(--text-placeholder);}
.page-header-bar__right{display:flex;align-items:center;gap:12px;}
.page-header-bar__right label{font-size:var(--font-sm);color:var(--text-secondary);white-space:nowrap;}
.page-header-bar__right .canteen-select{height:36px;border:2px solid var(--primary);border-radius:var(--radius-sm);padding:0 32px 0 14px;font-size:var(--font-sm);color:var(--primary);font-weight:500;outline:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%231890FF'/%3E%3C/svg%3E") no-repeat right 12px center;appearance:none;cursor:pointer;min-width:140px;}
</style>
</head>
<body>
@@ -206,7 +214,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item active"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item active"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -225,7 +233,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -241,6 +258,22 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<!-- 主内容 -->
<main class="main">
<!-- 页面信息栏 -->
<div class="page-header-bar">
<div class="page-header-bar__left">
<span class="page-header-bar__title">自有餐品库</span>
<span class="page-header-bar__meta">2026-08-03 · 数据实时更新</span>
</div>
<div class="page-header-bar__right">
<label>当前场所</label>
<select class="canteen-select">
<option value="1">一场所(东区)</option>
<option value="2">二场所(西区)</option>
<option value="3">三场所(北区)</option>
</select>
</div>
</div>
<!-- 统计卡片 -->
<div class="stats-row">
<div class="stat-card"><div class="stat-card__icon blue">🍽️</div><div class="stat-card__info"><div class="stat-card__value">486</div><div class="stat-card__label">餐品总数</div></div></div>
@@ -414,7 +447,11 @@ function renderBasic(d){
<div class="info-section"><div class="info-section__title">🎬 制作流程</div>
<div class="media-grid">
<div class="media-card"><div class="media-card__thumb">🎬</div></div>
</div></div>`;
</div></div>
<div class="info-section"><div class="info-section__title">🎬 宣传视频</div>
<div class="media-grid">
<div class="media-card"><div class="media-card__thumb">🎬</div><div class="media-card__info"><div class="media-card__title">${d.name} 宣传视频</div><div class="media-card__meta">1分30秒 · 48MB · <span class="link">播放</span></div></div></div>
</div></div>`;
}
function renderComposition(d){
+11 -2
View File
@@ -167,7 +167,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -186,7 +186,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -210,7 +210,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -229,7 +229,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -168,7 +168,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup"><div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)"><svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>📐 算法标准</div><div class="sidebar-subgroup__body"><a href="din-algo-population.html" class="sidebar-item"><span class="mi">👥</span>人群基础标准</a><a href="din-algo-vip.html" class="sidebar-item"><span class="mi">💎</span>VIP定制标准</a></div></div>
<a href="din-recipe-mgmt.html" class="sidebar-item"><span class="mi">📋</span>食谱管理</a>
<a href="din-order-meal.html" class="sidebar-item"><span class="mi">🛒</span>营养点餐</a>
@@ -178,7 +178,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup"><div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)"><svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>🤖 模型管理</div><div class="sidebar-subgroup__body"><a href="din-model-llm.html" class="sidebar-item"><span class="mi">🧠</span>大模型管理</a><a href="din-model-small.html" class="sidebar-item"><span class="mi">⚙️</span>小模型管理</a></div></div>
<a href="din-innovation.html" class="sidebar-item active"><span class="mi">🌟</span>味养创新</a>
</aside>
+11 -2
View File
@@ -142,7 +142,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -161,7 +161,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -161,7 +161,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -180,7 +180,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -187,7 +187,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -206,7 +206,16 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -196,7 +196,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -215,7 +215,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -219,7 +219,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -238,7 +238,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -252,7 +252,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍽️</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -271,7 +271,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💳</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -177,7 +177,7 @@ tbody tr:hover{background:#F8FBFF;}
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -196,7 +196,16 @@ tbody tr:hover{background:#F8FBFF;}
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item active"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup open">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item active"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -117,7 +117,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -136,7 +136,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -199,7 +199,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -218,7 +218,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
+11 -2
View File
@@ -194,7 +194,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<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>
<a href="din-dish-all.html" class="sidebar-item"><span class="mi">🍲</span>餐品总库</a>
<a href="din-dish-free.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<a href="din-dish-own.html" class="sidebar-item"><span class="mi">📦</span>餐品库</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
@@ -213,7 +213,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
<a href="din-data-consume.html" class="sidebar-item"><span class="mi">💰</span>消费管理</a>
<a href="din-data-nutri.html" class="sidebar-item"><span class="mi">📊</span>营养管理</a>
<a href="din-data-benefit.html" class="sidebar-item"><span class="mi">📈</span>餐材效益</a>
<a href="din-terminal.html" class="sidebar-item"><span class="mi">🖥️</span>终端管理</a>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>
🖥️ 终端管理
</div>
<div class="sidebar-subgroup__body">
<a href="din-terminal.html" class="sidebar-item"><span class="mi">📟</span>设备管理</a>
<a href="din-content-center.html" class="sidebar-item"><span class="mi">📦</span>内容中心</a>
</div>
</div>
<div class="sidebar-subgroup">
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
<svg class="arrow" viewBox="0 0 10 10" fill="none"><path d="M3 1l4 4-4 4" stroke-width="1.5"/></svg>