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;}
+ +
+
+ 用户管理 + 2026-05-20 · 数据实时更新 +
+
+ + +
+
+
@@ -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活动水平人员类别饮食禁忌状态操作
张伟研发部3822.9中度活动会员正常详情 推荐食谱
李娜市场部3419.8轻度活动会员高钠正常详情 推荐食谱
王磊运营部4126.8久坐非会员高脂预警详情 推荐食谱
赵敏财务部3618.8轻度活动会员高糖正常详情 推荐食谱
陈刚人事部2921.4重度活动非会员正常详情 推荐食谱
刘芳市场部3220.6中度活动会员正常详情 推荐食谱
孙磊行政部4524.3久坐非会员高钠预警详情 推荐食谱
钱芳销售部2717.9轻度活动会员正常详情 推荐食谱
张运维运维部3523.5中度活动员工正常详情 推荐食谱
李后勤后勤部4225.1中度活动员工正常详情 推荐食谱
王保安安保部4824.8重度活动工作人员正常详情 推荐食谱
赵清洁保洁部5022.0重度活动工作人员正常详情 推荐食谱
林教授外部访客5523.8轻度活动外部人员正常详情 推荐食谱
张伟EMP0033822.9中度活动会员正常详情 编辑 更多 ▾
李娜EMP0013419.8轻度活动会员高钠正常详情 编辑 更多 ▾
王磊EMP0024126.8久坐非会员高脂预警详情 编辑 更多 ▾
赵敏EMP0043618.8轻度活动会员高糖正常详情 编辑 更多 ▾
陈刚EMP0052921.4重度活动非会员正常详情 编辑 更多 ▾
刘芳EMP0063220.6中度活动会员正常详情 编辑 更多 ▾
孙磊EMP0074524.3久坐非会员高钠预警详情 编辑 更多 ▾
钱芳EMP0082717.9轻度活动会员正常详情 编辑 更多 ▾
张运维EMP00935总部机关/运维部23.5中度活动员工正常详情 编辑 更多 ▾
李后勤EMP01042总部机关/后勤部25.1中度活动员工正常详情 编辑 更多 ▾
王保安WK0034824.8重度活动工作人员正常详情 编辑 更多 ▾
赵清洁WK0045022.0重度活动工作人员正常详情 编辑 更多 ▾
林教授EXT00155外部单位/访客组23.8轻度活动外部人员正常详情 编辑 更多 ▾
@@ -408,6 +531,61 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} \ No newline at end of file