diff --git a/CLAUDE.md b/CLAUDE.md index 10343be..0a98661 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,4 +1,4 @@ - + # 项目约束 本项目所有工作必须严格遵守 `项目背景.md` 中定义的全部规范,包括: diff --git a/index.html b/index.html index c495d93..64fd6e0 100644 --- a/index.html +++ b/index.html @@ -312,6 +312,7 @@ const SITE_MAP = [ { file:'din-canteen.html', label:'食堂管理' }, { file:'din-canteen-add.html', label:'新增食堂' }, { file:'din-canteen-line.html', label:'餐线管理' }, + { file:'din-canteen-shift.html', label:'场所排版设置' }, { file:'din-dict-mgmt.html', label:'字典管理' }, { file:'din-dict-config.html', label:'字典配置' }, { file:'din-algo-population.html', label:'群体算法' }, @@ -872,6 +873,17 @@ const SITE_MAP = [ {label:'扫码溯源', file:'trace-query.html'}, {label:'溯源链路', file:'trace-detail.html'} ] }, + { name:'营养管理餐品配送', dir:'other-module/meal-delivery-h5', entry:'01-home.html', pages:[ + {label:'配送员登录', file:'00-login.html'}, + {label:'工作台首页(模块入口)', file:'01-home.html'}, + {label:'派单接听 · 核心', file:'02-dispatch-incoming.html'}, + {label:'抢单大厅', file:'03-grab-pool.html'}, + {label:'订单详情', file:'04-order-detail.html'}, + {label:'配送中', file:'05-delivering.html'}, + {label:'送达签收', file:'06-finish-sign.html'}, + {label:'历史订单', file:'07-history.html'}, + {label:'个人中心', file:'08-profile.html'} + ] }, { name:'西安应急中心大屏', dir:'other-module/emergency-screen/xian-center', entry:'index-v4.html', pages:[ {label:'应急中心大屏', file:'index-v4.html'} ] }, diff --git a/other-module/canteen-device/checkout-device/02-standby.html b/other-module/canteen-device/checkout-device/02-standby.html index 2b274a1..c4a9c96 100644 --- a/other-module/canteen-device/checkout-device/02-standby.html +++ b/other-module/canteen-device/checkout-device/02-standby.html @@ -37,6 +37,7 @@ background: #1a2b4a; padding: 0 20px; flex-shrink: 0; + gap: 12px; } .back-btn { font-size: 13px; @@ -57,6 +58,36 @@ font-size: 12px; color: rgba(255, 255, 255, 0.5); font-family: Menlo, Consolas, monospace; + flex-shrink: 0; + } + .top-bar__right { + display: flex; + align-items: center; + gap: 10px; + flex-shrink: 0; + } + /* 顶部栏内的收银员信息(紧凑版) */ + .cashier-info--compact { + display: flex; + align-items: center; + gap: 6px; + padding: 4px 10px 4px 4px; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 16px; + } + .cashier-info--compact .cashier-info__avatar { + width: 22px; + height: 22px; + font-size: 10px; + } + .cashier-info--compact .cashier-info__text { + font-size: 11px; + color: rgba(255, 255, 255, 0.8); + } + .logout-btn--compact { + padding: 4px 10px; + font-size: 11px; } /* 主内容 */ @@ -132,6 +163,84 @@ color: #ff6b6b; } + /* 餐次控制区 */ + .meal-ctrl { + display: flex; + flex-direction: column; + gap: 10px; + padding: 14px 18px; + background: rgba(26, 43, 74, 0.4); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 14px; + min-width: 200px; + } + .meal-ctrl__status { + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + font-weight: 600; + } + .meal-ctrl__status-dot { + width: 8px; + height: 8px; + border-radius: 50%; + flex-shrink: 0; + } + .meal-ctrl__status-dot--live { + background: #4ade80; + box-shadow: 0 0 8px rgba(74, 222, 128, 0.5); + animation: dotBlink2 1.4s infinite; + } + .meal-ctrl__status-dot--off { + background: #94a3b8; + } + @keyframes dotBlink2 { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.35; } + } + .meal-ctrl__status-text { color: #fff; } + .meal-ctrl__status-text--live { color: #4ade80; } + .meal-ctrl__status-text--off { color: rgba(255, 255, 255, 0.5); } + .meal-ctrl__buttons { + display: flex; + gap: 8px; + } + .meal-ctrl__btn { + flex: 1; + height: 38px; + border-radius: 10px; + font-size: 13px; + font-weight: 600; + cursor: pointer; + border: 1px solid; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 5px; + transition: all 0.2s; + text-decoration: none; + } + .meal-ctrl__btn--start { + background: linear-gradient(135deg, rgba(74, 222, 128, 0.18), rgba(34, 197, 94, 0.12)); + border-color: rgba(74, 222, 128, 0.4); + color: #4ade80; + } + .meal-ctrl__btn--start:hover { + background: linear-gradient(135deg, rgba(74, 222, 128, 0.28), rgba(34, 197, 94, 0.2)); + border-color: rgba(74, 222, 128, 0.6); + box-shadow: 0 4px 14px rgba(74, 222, 128, 0.2); + } + .meal-ctrl__btn--stop { + background: rgba(239, 68, 68, 0.1); + border-color: rgba(239, 68, 68, 0.3); + color: #f87171; + } + .meal-ctrl__btn--stop:hover { + background: rgba(239, 68, 68, 0.2); + border-color: rgba(239, 68, 68, 0.5); + } + /* 中央:核心动作区 */ .hero { flex: 1; @@ -466,6 +575,254 @@ font-size: 11px; color: rgba(255, 255, 255, 0.5); } + + /* ============ 交接班弹窗 ============ */ + .shift-overlay { + position: absolute; + inset: 0; + background: rgba(0, 0, 0, 0.72); + backdrop-filter: blur(6px); + display: flex; + align-items: center; + justify-content: center; + z-index: 100; + border-radius: 24px; + } + .shift-modal { + width: 680px; + max-height: 680px; + background: linear-gradient(180deg, #1a2744 0%, #141e36 100%); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 18px; + padding: 28px 32px 24px; + box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), 0 0 120px rgba(74, 144, 217, 0.08); + overflow: hidden; + } + .shift-modal__head { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + } + .shift-modal__title { + font-size: 18px; + font-weight: 700; + color: #fff; + } + .shift-modal__close { + width: 30px; + height: 30px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.1); + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + color: rgba(255, 255, 255, 0.55); + cursor: pointer; + transition: all 0.2s; + } + .shift-modal__close:hover { + background: rgba(245, 34, 45, 0.2); + border-color: rgba(245, 34, 45, 0.4); + color: #ff6b6b; + } + + /* 收银员信息条 */ + .shift-modal__cashier { + display: flex; + align-items: center; + gap: 12px; + padding: 14px 16px; + background: rgba(0, 0, 0, 0.25); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: 12px; + margin-bottom: 20px; + } + .shift-modal__cashier-avatar { + width: 40px; + height: 40px; + border-radius: 50%; + background: linear-gradient(135deg, #4a90d9, #0AC4A8); + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + font-weight: 700; + flex-shrink: 0; + } + .shift-modal__cashier-info { + display: flex; + flex-direction: column; + gap: 4px; + } + .shift-modal__cashier-name { + font-size: 14px; + font-weight: 600; + color: #fff; + } + .shift-modal__cashier-meta { + font-size: 12px; + color: rgba(255, 255, 255, 0.5); + } + + /* 统计指标网格 */ + .shift-modal__kpi-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; + } + .shift-kpi { + background: rgba(0, 0, 0, 0.2); + border: 1px solid rgba(255, 255, 255, 0.05); + border-radius: 10px; + padding: 14px 16px; + display: flex; + flex-direction: column; + gap: 6px; + } + .shift-kpi__label { + font-size: 11px; + color: rgba(255, 255, 255, 0.5); + } + .shift-kpi__value { + font-size: 20px; + font-weight: 700; + color: #fff; + display: flex; + align-items: baseline; + gap: 4px; + } + .shift-kpi__value--green { color: #4ade80; } + .shift-kpi__value--gold { color: #fbbf24; } + .shift-kpi__unit { + font-size: 12px; + font-weight: 400; + color: rgba(255, 255, 255, 0.55); + } + .shift-kpi__hint { + font-size: 10px; + color: rgba(255, 255, 255, 0.35); + line-height: 1.4; + } + .shift-modal__kpi-grid--two { + grid-template-columns: 1fr 1fr; + } + + /* 分区标题 */ + .shift-modal__section { + margin-bottom: 12px; + } + .shift-modal__section-title { + font-size: 13px; + font-weight: 600; + color: rgba(255, 255, 255, 0.7); + margin-bottom: 10px; + display: flex; + align-items: center; + gap: 6px; + } + + /* 支付方式明细表 */ + .shift-pay-table { + background: rgba(0, 0, 0, 0.2); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: 10px; + overflow: hidden; + } + .shift-pay-table__head { + display: flex; + padding: 8px 16px; + background: rgba(255, 255, 255, 0.04); + border-bottom: 1px solid rgba(255, 255, 255, 0.06); + } + .shift-pay-table__th { + font-size: 11px; + color: rgba(255, 255, 255, 0.45); + font-weight: 500; + } + .shift-pay-table__th--name { flex: 1; } + .shift-pay-table__th--num { width: 80px; text-align: right; } + .shift-pay-table__row { + display: flex; + padding: 9px 16px; + align-items: center; + border-bottom: 1px solid rgba(255, 255, 255, 0.04); + transition: background 0.15s; + } + .shift-pay-table__row:last-child { border-bottom: none; } + .shift-pay-table__row:hover { background: rgba(255, 255, 255, 0.03); } + .shift-pay-table__row--total { + background: rgba(255, 255, 255, 0.04); + font-weight: 700; + border-top: 1px solid rgba(255, 255, 255, 0.08); + } + .shift-pay-table__td { + font-size: 13px; + color: rgba(255, 255, 255, 0.85); + } + .shift-pay-table__td--name { flex: 1; display: flex; align-items: center; gap: 8px; } + .shift-pay-table__td--num { width: 80px; text-align: right; font-variant-numeric: tabular-nums; font-family: Menlo, Consolas, monospace; font-size: 12px; } + .shift-pay-table__row--total .shift-pay-table__td { color: #fff; } + + /* 支付方式色点 */ + .shift-pay-dot { + width: 8px; + height: 8px; + border-radius: 50%; + flex-shrink: 0; + } + .shift-pay-dot--online { background: #4ade80; box-shadow: 0 0 6px rgba(74, 222, 128, 0.5); } + .shift-pay-dot--cash { background: #fb923c; box-shadow: 0 0 6px rgba(251, 146, 60, 0.5); } + .shift-pay-dot--balance { background: #60a5fa; box-shadow: 0 0 6px rgba(96, 165, 250, 0.5); } + + /* 分割线 */ + .shift-modal__divider { + height: 1px; + background: rgba(255, 255, 255, 0.08); + margin: 20px 0; + } + + /* 底部操作区 */ + .shift-modal__actions { + display: flex; + gap: 12px; + justify-content: flex-end; + } + .shift-modal__btn { + height: 40px; + border-radius: 10px; + font-size: 14px; + font-weight: 600; + cursor: pointer; + border: 1px solid; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 28px; + text-decoration: none; + transition: all 0.2s; + } + .shift-modal__btn--cancel { + background: rgba(255, 255, 255, 0.06); + border-color: rgba(255, 255, 255, 0.12); + color: rgba(255, 255, 255, 0.7); + } + .shift-modal__btn--cancel:hover { + background: rgba(255, 255, 255, 0.1); + color: #fff; + } + .shift-modal__btn--exit { + background: linear-gradient(135deg, rgba(245, 34, 45, 0.18), rgba(239, 68, 68, 0.12)); + border-color: rgba(245, 34, 45, 0.4); + color: #ff6b6b; + } + .shift-modal__btn--exit:hover { + background: linear-gradient(135deg, rgba(245, 34, 45, 0.3), rgba(239, 68, 68, 0.22)); + border-color: rgba(245, 34, 45, 0.6); + box-shadow: 0 4px 16px rgba(245, 34, 45, 0.2); + }
@@ -477,6 +834,13 @@ ◀ 返回主页 + @@ -491,11 +855,21 @@