diff --git a/web-admin/nutrition/din-dish-add.html b/web-admin/nutrition/din-dish-add.html
index d198ac5..91e5c03 100644
--- a/web-admin/nutrition/din-dish-add.html
+++ b/web-admin/nutrition/din-dish-add.html
@@ -285,12 +285,14 @@ var STEP_HTML = [
👥 适配人群
@@ -326,7 +328,7 @@ var STEP_HTML = [
// Step 1: 餐品构成
`🧩 餐品构成
- 食材清单
+ 食材清单*
diff --git a/web-admin/nutrition/din-dish-all.html b/web-admin/nutrition/din-dish-all.html
index 117215c..39a73ab 100644
--- a/web-admin/nutrition/din-dish-all.html
+++ b/web-admin/nutrition/din-dish-all.html
@@ -274,7 +274,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
diff --git a/web-admin/nutrition/din-order-pickup.html b/web-admin/nutrition/din-order-pickup.html
index 26df32c..ecc25b4 100644
--- a/web-admin/nutrition/din-order-pickup.html
+++ b/web-admin/nutrition/din-order-pickup.html
@@ -328,7 +328,7 @@ const Modal = {
/* 模拟用户十维档案数据 */
const userProfiles = {
- '张伟': { dept:'研发部', age:32, gender:'男', height:'175cm', weight:'72kg', bmi:'23.5', activity:'中等',
+ '张伟': { dept:'公司机关/研发部', age:32, gender:'男', height:'175cm', weight:'72kg', bmi:'23.5', activity:'中等',
disease:'无', chronic:'无', medicine:'无', family:'高血压(父)',
examDate:'2026-03-15', bp:'125/80', glucose:'5.2', lipid:'正常', uric:'380', liver:'正常', kidney:'正常',
taste:'偏辣', region:'川菜、湘菜',
@@ -513,7 +513,7 @@ function switchTab(el, key) {
function showUserProfile(name) {
const pureName = name.replace(/\(.*\)/, '').trim();
const p = userProfiles[pureName] || defaultProfile;
- Modal.open('用户十维档案 — ' + pureName, buildProfileHTML(pureName, p));
+ Modal.open('用户信息 — ' + pureName, buildProfileHTML(pureName, p));
}
/* 绑定表格中的"查看用户信息"链接 */
diff --git a/web-admin/nutrition/din-user-mgmt.html b/web-admin/nutrition/din-user-mgmt.html
index da43604..2eae07d 100644
--- a/web-admin/nutrition/din-user-mgmt.html
+++ b/web-admin/nutrition/din-user-mgmt.html
@@ -102,8 +102,10 @@ tbody tr:hover{background:#F8FBFF;}
.empty-hint{padding:60px 24px;text-align:center;color:var(--text-placeholder);font-size:var(--font-base);background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);}
/* 操作列固定右侧 */
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;}
+thead th:last-child{background:#FAFAFA;z-index:3;}
tbody tr:hover td.td-actions{background:#F8FBFF;}
+tbody td.td-actions{overflow:visible;}
+.more-wrap.open{z-index:100;}
/* 弹窗样式 */
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:center;justify-content:center;animation:modalFadeIn .2s ease;}
@@ -121,6 +123,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
.modal-body{padding:24px;overflow-y:auto;flex:1;}
.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border);}
+/* 页面信息栏 */
+.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;}
+
+
/* 十维档案 Tab */
.profile-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto;}
.profile-tab{padding:10px 16px;font-size:var(--font-sm);color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;transition:all .2s;}
@@ -137,6 +149,51 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
.profile-summary__info{display:flex;flex-direction:column;gap:4px;}
.profile-summary__name{font-size:var(--font-base);font-weight:600;color:var(--text-primary);}
.profile-summary__meta{font-size:var(--font-sm);color:var(--text-secondary);}
+.profile-field__value .tag{margin-left:4px;}
+
+/* 历史用餐明细表格 */
+.meal-history-table{width:100%;border-collapse:collapse;font-size:var(--font-sm);}
+.meal-history-table thead th{background:#FAFAFA;padding:10px 12px;text-align:left;color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);}
+.meal-history-table tbody td{padding:12px;color:var(--text-primary);border-bottom:1px solid #f0f0f0;}
+.meal-history-table tbody tr:last-child td{border-bottom:none;}
+.meal-history-table tbody tr:hover{background:#F8FBFF;}
+.score-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:var(--font-sm);font-weight:600;}
+.score-green{color:#52C41A;background:#F6FFED;}
+.score-orange{color:#FA8C16;background:#FFF7E6;}
+
+/* 菜品偏好 */
+.dish-pref-section{display:flex;flex-direction:column;gap:12px;}
+.dish-pref-item__label{font-size:var(--font-xs);color:var(--text-secondary);margin-bottom:6px;}
+.dish-pref-item__tags{display:flex;gap:6px;flex-wrap:wrap;}
+.dish-tag{display:inline-block;padding:2px 10px;border-radius:4px;font-size:var(--font-xs);color:#52C41A;background:#F6FFED;border:1px solid #B7EB8F;}
+.dish-pref-item__value{font-size:var(--font-sm);color:var(--text-primary);}
+.dish-pref-item__big{font-size:var(--font-base);font-weight:600;color:var(--text-primary);}
+
+/* 妈妈味道 */
+.mom-section{background:#FFF8F0;border-radius:var(--radius-md);padding:12px 16px;}
+.mom-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
+.mom-header__icon{font-size:22px;}
+.mom-header__title{font-size:var(--font-sm);font-weight:600;color:var(--text-primary);}
+.mom-header__sub{font-size:var(--font-xs);color:#FA8C16;margin-top:2px;}
+.mom-header__tags{display:flex;gap:6px;flex-wrap:wrap;}
+.mom-tag{display:inline-block;padding:2px 10px;border-radius:4px;font-size:var(--font-xs);color:#FA8C16;background:#FFF7E6;border:1px solid #FFD591;}
+
+/* 个性模型 */
+.model-section{background:#E6F7FF;border-radius:var(--radius-md);padding:12px 16px;margin-bottom:16px;}
+.model-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
+.model-header__icon{font-size:22px;}
+.model-header__title{font-size:var(--font-sm);font-weight:600;color:var(--primary);}
+.model-header__sub{font-size:var(--font-xs);color:var(--text-secondary);margin-top:2px;}
+.model-header__tags{display:flex;gap:6px;flex-wrap:wrap;}
+.model-tag{display:inline-block;padding:2px 10px;border-radius:4px;font-size:var(--font-xs);color:var(--primary);background:#fff;border:1px solid #91D5FF;}
+.model-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 20px;margin-bottom:16px;}
+.model-item__label{font-size:var(--font-xs);color:var(--text-secondary);margin-bottom:4px;}
+.model-item__big{font-size:var(--font-base);font-weight:600;color:var(--text-primary);}
+.model-item__value{font-size:var(--font-sm);}
+.risk-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-size:var(--font-xs);font-weight:500;}
+.risk-safe{background:#F6FFED;color:#52C41A;border:1px solid #B7EB8F;}
+.risk-warn{background:#FFF7E6;color:#FA8C16;border:1px solid #FFD591;}
+.model-footer{font-size:var(--font-xs);color:var(--text-secondary);padding:10px 12px;background:#F5F7FA;border-radius:var(--radius-sm);}
/* 推荐食谱弹窗 */
.recipe-modal{width:720px;}
@@ -153,6 +210,55 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
.recipe-summary__item{display:flex;align-items:center;gap:4px;}
.recipe-summary__label{color:var(--text-secondary);}
.recipe-summary__value{font-weight:600;color:var(--text-primary);}
+
+/* 更多操作 Tip 弹窗 */
+.more-wrap{position:relative;display:inline-block;}
+.cascader{position:relative;display:inline-block;}
+.cascader__trigger{display:flex;align-items:center;gap:4px;padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:#fff;cursor:pointer;font-size:var(--font-sm);min-width:140px;justify-content:space-between;}
+.cascader__trigger:hover{border-color:var(--primary);}
+.cascader__arrow{font-size:10px;color:var(--text-3);transition:transform .2s;}
+.cascader.open .cascader__arrow{transform:rotate(180deg);}
+.cascader__panel{display:none;position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:1px solid var(--border);z-index:100;white-space:nowrap;}
+.cascader.open .cascader__panel{display:flex;}
+.cascader__col{min-width:120px;max-height:240px;overflow-y:auto;padding:4px 0;border-right:1px solid var(--border);}
+.cascader__col:last-child{border-right:none;}
+.cascader__col-item{padding:6px 16px;cursor:pointer;font-size:var(--font-sm);color:var(--text-1);}
+.cascader__col-item:hover{background:var(--bg-hover);}
+.cascader__col-item.active{color:var(--primary);background:var(--primary-light,#f0f7ff);}
+.more-tip{display:none;position:fixed;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:1px solid var(--border);padding:4px 0;z-index:9999;min-width:120px;white-space:nowrap;}
+.more-tip__item{display:block;padding:8px 16px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;transition:background .15s;text-decoration:none;}
+.more-tip__item:hover{background:var(--primary-light);color:var(--primary);}
+.more-tip__item--danger{color:var(--danger);}
+.more-tip__item--danger:hover{background:#FFF1F0;color:var(--danger);}
+
+/* 人脸采集弹窗 */
+.face-current{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px 0 24px;border-bottom:1px solid var(--border);margin-bottom:20px;}
+.face-current__img{width:120px;height:120px;border-radius:50%;border:3px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:48px;color:var(--text-placeholder);background:#FAFAFA;overflow:hidden;}
+.face-current__img.has-face{border-color:var(--primary);}
+.face-current__img img{width:100%;height:100%;object-fit:cover;}
+.face-current__status{font-size:var(--font-sm);color:var(--text-secondary);}
+.face-current__status.ok{color:var(--success);}
+.face-methods{display:flex;gap:16px;margin-bottom:20px;}
+.face-method-card{flex:1;border:2px solid var(--border);border-radius:var(--radius-md);padding:24px 16px;text-align:center;cursor:pointer;transition:all .2s;}
+.face-method-card:hover{border-color:var(--primary);background:#F0F7FF;}
+.face-method-card.active{border-color:var(--primary);background:#F0F7FF;}
+.face-method-card__icon{font-size:36px;margin-bottom:10px;}
+.face-method-card__title{font-size:var(--font-sm);font-weight:600;color:var(--text-primary);margin-bottom:4px;}
+.face-method-card__desc{font-size:var(--font-xs);color:var(--text-secondary);}
+.face-panel{display:none;}
+.face-panel.active{display:block;}
+.face-camera{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px 0;}
+.face-camera__view{width:280px;height:280px;border-radius:12px;background:#000;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;position:relative;overflow:hidden;}
+.face-camera__mask{position:absolute;width:200px;height:200px;border:2px dashed rgba(255,255,255,.6);border-radius:50%;}
+.face-upload{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px 0;}
+.face-upload__drop{width:280px;height:200px;border:2px dashed var(--border);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:all .2s;color:var(--text-secondary);}
+.face-upload__drop:hover{border-color:var(--primary);background:#F0F7FF;}
+.face-upload__drop-icon{font-size:36px;}
+.face-upload__drop-text{font-size:var(--font-sm);}
+.face-upload__drop-hint{font-size:var(--font-xs);color:var(--text-placeholder);}
+.face-upload__preview{display:none;width:280px;text-align:center;}
+.face-upload__preview img{width:160px;height:160px;border-radius:50%;object-fit:cover;border:3px solid var(--primary);margin-bottom:12px;}
+.face-upload__preview-actions{display:flex;gap:8px;justify-content:center;}
@@ -222,6 +328,22 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
+
+
+
@@ -256,8 +378,8 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
-
🧑 个人用户
-
👥 群体用户
+
🧑 个人账户
+
👥 群体账户
💎 会员账户
🏆 等级配置
@@ -265,8 +387,9 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
-
-
+
+
+
@@ -280,27 +403,27 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
- | 姓名 | 部门 | 年龄 | BMI | 活动水平 | 人员类别 | 饮食禁忌 | 状态 | 操作 |
+ | 姓名 | 员工/用户编号 | 性别 | 年龄 | 单位部门 | BMI | 活动水平 | 人员类别 | 饮食禁忌 | 状态 | 操作 |
- | 张伟 | 研发部 | 38 | 22.9 | 中度活动 | 会员 | 无 | 正常 | 详情 推荐食谱 |
- | 李娜 | 市场部 | 34 | 19.8 | 轻度活动 | 会员 | 高钠 | 正常 | 详情 推荐食谱 |
- | 王磊 | 运营部 | 41 | 26.8 | 久坐 | 非会员 | 高脂 | 预警 | 详情 推荐食谱 |
- | 赵敏 | 财务部 | 36 | 18.8 | 轻度活动 | 会员 | 高糖 | 正常 | 详情 推荐食谱 |
- | 陈刚 | 人事部 | 29 | 21.4 | 重度活动 | 非会员 | 无 | 正常 | 详情 推荐食谱 |
- | 刘芳 | 市场部 | 32 | 20.6 | 中度活动 | 会员 | 无 | 正常 | 详情 推荐食谱 |
- | 孙磊 | 行政部 | 45 | 24.3 | 久坐 | 非会员 | 高钠 | 预警 | 详情 推荐食谱 |
- | 钱芳 | 销售部 | 27 | 17.9 | 轻度活动 | 会员 | 无 | 正常 | 详情 推荐食谱 |
- | 张运维 | 运维部 | 35 | 23.5 | 中度活动 | 员工 | 无 | 正常 | 详情 推荐食谱 |
- | 李后勤 | 后勤部 | 42 | 25.1 | 中度活动 | 员工 | 无 | 正常 | 详情 推荐食谱 |
- | 王保安 | 安保部 | 48 | 24.8 | 重度活动 | 工作人员 | 无 | 正常 | 详情 推荐食谱 |
- | 赵清洁 | 保洁部 | 50 | 22.0 | 重度活动 | 工作人员 | 无 | 正常 | 详情 推荐食谱 |
- | 林教授 | 外部访客 | 55 | 23.8 | 轻度活动 | 外部人员 | 无 | 正常 | 详情 推荐食谱 |
+ | 张伟 | EMP003 | 男 | 38 | — | 22.9 | 中度活动 | 会员 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 李娜 | EMP001 | 女 | 34 | — | 19.8 | 轻度活动 | 会员 | 高钠 | 正常 | 详情 编辑 更多 ▾ |
+ | 王磊 | EMP002 | 男 | 41 | — | 26.8 | 久坐 | 非会员 | 高脂 | 预警 | 详情 编辑 更多 ▾ |
+ | 赵敏 | EMP004 | 女 | 36 | — | 18.8 | 轻度活动 | 会员 | 高糖 | 正常 | 详情 编辑 更多 ▾ |
+ | 陈刚 | EMP005 | 男 | 29 | — | 21.4 | 重度活动 | 非会员 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 刘芳 | EMP006 | 女 | 32 | — | 20.6 | 中度活动 | 会员 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 孙磊 | EMP007 | 男 | 45 | — | 24.3 | 久坐 | 非会员 | 高钠 | 预警 | 详情 编辑 更多 ▾ |
+ | 钱芳 | EMP008 | 女 | 27 | — | 17.9 | 轻度活动 | 会员 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 张运维 | EMP009 | 男 | 35 | 总部机关/运维部 | 23.5 | 中度活动 | 员工 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 李后勤 | EMP010 | 男 | 42 | 总部机关/后勤部 | 25.1 | 中度活动 | 员工 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 王保安 | WK003 | 男 | 48 | — | 24.8 | 重度活动 | 工作人员 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 赵清洁 | WK004 | 女 | 50 | — | 22.0 | 重度活动 | 工作人员 | 无 | 正常 | 详情 编辑 更多 ▾ |
+ | 林教授 | EXT001 | 男 | 55 | 外部单位/访客组 | 23.8 | 轻度活动 | 外部人员 | 无 | 正常 | 详情 编辑 更多 ▾ |
@@ -408,6 +531,61 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}