diff --git a/.claude/memory/project_progress.md b/.claude/memory/project_progress.md index 4b9dc50..5cfcab5 100644 --- a/.claude/memory/project_progress.md +++ b/.claude/memory/project_progress.md @@ -25,7 +25,7 @@ - `health-consult/` — 专家咨询管理(50+ 页)✅ - `emergency-dispatch/` — 应急就医管理(含 admin + operator 子模块,70+ 页)✅ - `health-checkup/` — 健康体检管理 ✅ -- `nutrition/` — 营养管理(55 页:溯源、档案、种采、供应、生产、用餐、异常)🔨 设计中 +- `nutrition/` — 营养管理(70+ 页:溯源、档案、种采、供应、生产、用餐、异常、食堂、数据、模型、终端、字典)🔨 设计中 - `health-monitor/` — 健康监测管理(65 页)🔨 设计中 - `wearable/` — 穿戴监测(8 页:设备管理/绑定记录/用户数据/部门报告/部门统计/个人统计/异常事件/通知配置) - `weight/` — 体重监测(20 页:体重秤/蓝牙秤/体脂仪/运动器械各含设备管理+监测+明细+新增,员工数据/部门统计/员工统计) diff --git a/web-admin/nutrition/din-order-meal.html b/web-admin/nutrition/din-order-meal.html index 4ad7e1c..5ed204e 100644 --- a/web-admin/nutrition/din-order-meal.html +++ b/web-admin/nutrition/din-order-meal.html @@ -130,6 +130,39 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} /* 复选框列 */ .th-checkbox,.td-checkbox{width:40px;text-align:center;} .td-checkbox input[disabled]{opacity:0.35;cursor:not-allowed;} +/* 餐品选择触发区域 */ +.dish-picker__trigger{min-height:36px;border:1px dashed var(--border);border-radius:var(--radius-sm);padding:8px 12px;cursor:pointer;display:flex;flex-wrap:wrap;gap:6px;align-items:center;transition:border-color .2s;background:#FAFAFA;} +.dish-picker__trigger:hover{border-color:var(--primary);} +.dish-picker__placeholder{color:var(--text-placeholder);font-size:var(--font-sm);display:flex;align-items:center;gap:4px;} +.dish-picker__tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:var(--primary-light);border-radius:12px;font-size:var(--font-xs);color:var(--primary);} +.dish-picker__tag-del{cursor:pointer;font-size:13px;opacity:0.6;line-height:1;}.dish-picker__tag-del:hover{opacity:1;color:var(--danger);} +/* 餐品选择弹窗 */ +.dish-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:1100;display:none;align-items:center;justify-content:center;} +.dish-modal-overlay.show{display:flex;} +.dish-modal{background:#fff;border-radius:var(--radius-lg);width:540px;max-height:70vh;display:flex;flex-direction:column;box-shadow:0 8px 24px rgba(0,0,0,0.18);} +.dish-modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);} +.dish-modal__title{font-size:var(--font-base);font-weight:600;color:var(--text-primary);} +.dish-modal__close{width:28px;height:28px;border:none;background:none;cursor:pointer;font-size:18px;color:var(--text-secondary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;} +.dish-modal__close:hover{background:#F0F0F0;color:var(--text-primary);} +.dish-modal__search{padding:12px 20px;border-bottom:1px solid var(--border);} +.dish-modal__search input{width:100%;height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px 0 32px;font-size:var(--font-sm);outline:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none'%3E%3Ccircle cx='6' cy='6' r='4.5' stroke='%23999' stroke-width='1.2'/%3E%3Cpath d='M9.5 9.5L12.5 12.5' stroke='%23999' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 10px center;} +.dish-modal__search input:focus{border-color:var(--primary);} +.dish-modal__list{flex:1;overflow-y:auto;padding:8px 0;} +.dish-item{display:flex;align-items:center;gap:10px;padding:10px 20px;cursor:pointer;transition:background .1s;} +.dish-item:hover{background:#F8FBFF;} +.dish-item.selected{background:var(--primary-light);} +.dish-item__check{width:18px;height:18px;border:1.5px solid var(--border);border-radius:3px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .15s;} +.dish-item.selected .dish-item__check{background:var(--primary);border-color:var(--primary);} +.dish-item.selected .dish-item__check::after{content:'';display:block;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px);} +.dish-item__info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;} +.dish-item__name{font-size:var(--font-sm);color:var(--text-primary);} +.dish-item__cat{font-size:var(--font-xs);color:var(--text-placeholder);} +.dish-item__nutri{display:flex;gap:8px;margin-top:2px;} +.dish-item__nutri span{font-size:var(--font-xs);color:var(--text-secondary);white-space:nowrap;} +.dish-item__nutri span em{font-style:normal;color:var(--text-primary);font-weight:500;} +.dish-modal__footer{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-top:1px solid var(--border);} +.dish-modal__count{font-size:var(--font-sm);color:var(--text-secondary);} +.dish-modal__actions{display:flex;gap:8px;}
@@ -500,6 +533,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} +