feat: 健康生产模块交互完善——余量处置重构、上餐监控更多菜单、生产统计日期范围
- prod-proc-surplus: 筛选栏新增餐线/餐次,余量红色倒序,操作列合并为更多下拉,新增弹窗三级联动+员工福利领取记录 - prod-proc-serve: 操作列详情/编辑/删除合并为更多hover下拉菜单,新增上餐弹窗自动回填 - prod-proc-stats: 生产报表和成本利润日期筛选改为范围选择器,默认当月 - 营养管理功能说明.md: 新增9.3健康生产调整记录章节 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1202,7 +1202,75 @@
|
||||
- 人群基础标准:全部4个表格(算法标准/个性化方案/大众方案/动态规则)补全了完整的新增/编辑/详情/删除弹窗交互;筛选器增加 JS 事件绑定;删除"批量安排复评"按钮及弹窗
|
||||
- VIP定制标准:新增完整的 VIP 新增/编辑/详情/删除弹窗;定制目标增加彩色 tag 标签;删除"批量安排复评"按钮及弹窗
|
||||
|
||||
#### 9.3 绿色种采
|
||||
#### 9.3 健康生产
|
||||
|
||||
##### 1. prod-proc-combo.html(净菜组配)
|
||||
- 筛选栏新增「当前食堂」「任务来源」「任务截止日期」筛选,截止日期默认当天
|
||||
- 表头重构:去掉需求规格列,新增餐品规格/份数/任务截止时间/任务来源/完成时间列
|
||||
- 食材配方列移至任务截止时间后,「查看配方」改为「食材明细」
|
||||
- 操作列重构:固定三项(食材溯源链路、查看视频、更多▾ hover 下拉)+ 状态按钮
|
||||
- 新建组配任务弹窗重构:改用下拉选择餐品/规格/份数/来源,移除手动食材清单
|
||||
- 食材明细弹窗新增「分类」列(主材/辅材/调料 标签)
|
||||
|
||||
##### 2. prod-proc-cook.html(按单烹制)
|
||||
- 筛选栏新增「当前食堂」「烹制日期」筛选,烹制日期默认当天
|
||||
- 表头重构:去掉计划/实际烹制规格、视频记录,新增餐品规格/需求份数/烹制份数/烹制日期
|
||||
- 烹制状态前移至烹制份数后,食材明细/温度过程/模型数据列前移至生重/熟重/生熟比前
|
||||
- 生熟比格式改为 1:0.8
|
||||
- 操作列重构:固定三项 + hover 下拉 + 状态按钮(通知取餐/烹制完成/开始烹制)
|
||||
- 新增烹制状态对应不同的操作按钮
|
||||
|
||||
##### 3. prod-proc-serve.html(上餐监控)
|
||||
- 筛选栏新增「当前食堂」下拉
|
||||
- 操作列重构:保留「食材溯源链路」「查看视频」,将「详情/编辑/删除」合并为「更多▾」hover 下拉菜单
|
||||
- 新增上餐弹窗:选择已完成烹制餐品后自动回填信息卡片(任务号/菜品/厨师/出锅时间/温度/餐次/识别方式/重量)
|
||||
- 新增 .action-more 下拉菜单样式体系
|
||||
- 调整表格列的顺序和部分内容
|
||||
|
||||
##### 4. prod-proc-surplus.html(余量处置)
|
||||
- 筛选栏新增「当前食堂」下拉
|
||||
- 筛选栏新增「餐线」「餐次」下拉筛选框(位于食堂之后)
|
||||
- 处置日期默认选中当天
|
||||
- 表格新增「餐线」列(位于餐次前)、「备注」列(位于处置方式后)
|
||||
- 余量(kg)列使用红色字体显示,数据按余量倒序排列
|
||||
- 操作列重构:将「详情/编辑/删除」合并为「更多▾」hover 下拉菜单
|
||||
- 新增余量登记弹窗重构:餐线→餐次→菜品三级联动选择(菜品来自上餐监控),选择后自动回填计划制作量/实际制作量/销售取餐量/余量信息卡片
|
||||
- 处置方式选择「员工福利」时,弹窗下方动态显示员工领取记录表格(含操作列删除按钮),支持点击「+ 新增领取记录」按钮展开输入行
|
||||
- 员工福利取餐明细弹窗:新增「操作」列(删除按钮),新增底部「+ 新增领取记录」交互(点击后显示输入行,支持确认/取消)
|
||||
|
||||
##### 5. prod-proc-stats.html(生产统计)
|
||||
- 新增页面标题行 + 食堂切换下拉(canteen-select 高亮样式)
|
||||
- 移除两个 Tab 筛选栏中原有的「食堂」筛选项
|
||||
- 生产报表 Tab:日期筛选从单个 date 改为日期范围(起始日期 至 结束日期),默认当月
|
||||
- 成本利润 Tab:日期筛选从单个 date 改为日期范围,默认当月
|
||||
|
||||
##### 6. prod-qc-daily.html(食安监控)
|
||||
- 水电气表 Tab 移除「生成能耗日报」按钮
|
||||
- 水/电/气三张能耗卡片右上角新增「✏️ 录入」入口,支持手动编辑当前余量与今日用量
|
||||
- 新增页面标题行 + 食堂切换下拉切换
|
||||
- 新增摄像头回放弹窗(含播放器、时间轴、分时段列表)
|
||||
- 新增新增证件、新增留样弹窗及交互
|
||||
|
||||
##### 7. prod-clean-order.html(净菜订单)
|
||||
- 新增页面标题行 + 食堂切换下拉
|
||||
- 筛选栏新增「预定配送时间」日期范围筛选
|
||||
- 筛选栏新增「净菜类型」下拉(净菜包/餐品净菜包)
|
||||
- 订单状态选项调整为:备货中/待配送/配送中/已完成,配送中进行确认收货操作
|
||||
- 新增弹窗通用样式与表单网格布局
|
||||
- 调整表格字段(净菜类型,调整规格与计量方式)
|
||||
|
||||
##### 8. prod-proc-cabinet.html(净菜进柜)
|
||||
- 新增页面标题行 + 食堂切换下拉
|
||||
- 重构页面样式(采用左侧柜体【支持切换】+右侧储物明细)
|
||||
- 移除 Tab(食材净菜、餐品净菜包 、智能柜总览) 切换结构,改为左右分栏布局
|
||||
- 新增标签/链接通用样式
|
||||
- 新增手动存入净菜按钮及交互
|
||||
|
||||
##### 9. prod-recipe-plan.html(食谱规划)
|
||||
- 选择餐品弹窗增加营养信息展示,对齐食谱规划页弹窗样式
|
||||
- 按周为单位进行食谱规划
|
||||
|
||||
#### 9.4 绿色种采
|
||||
##### 1.绿色种采-土地环境模块
|
||||
- 地块管理:表格改为二级表头(基本信息+最新监测数据);
|
||||
- 新增灌溉方式/土壤类型/负责人字段;
|
||||
|
||||
@@ -39,7 +39,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
|
||||
.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__content{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;}
|
||||
.table-card__content{overflow-x:auto;overflow-y:visible;-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;}
|
||||
@@ -62,6 +62,39 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
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;}
|
||||
/* 更多下拉菜单 - hover触发 */
|
||||
.action-more{position:relative;display:inline-flex;}
|
||||
.action-more__trigger{color:var(--primary);cursor:pointer;font-size:var(--font-sm);user-select:none;}
|
||||
.action-more__trigger:hover{color:#40a9ff;}
|
||||
.action-more__menu{display:none;position:absolute;right:0;bottom:100%;margin-bottom:4px;background:#fff;border-radius:var(--radius-sm);box-shadow:0 3px 12px rgba(0,0,0,0.15);min-width:90px;z-index:100;padding:4px 0;}
|
||||
.action-more:hover .action-more__menu{display:block;}
|
||||
.action-more__item{display:block;padding:6px 14px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;white-space:nowrap;transition:background .1s;}
|
||||
.action-more__item:hover{background:var(--primary-light);color:var(--primary);}
|
||||
.action-more__item--danger{color:var(--danger);}
|
||||
.action-more__item--danger:hover{background:#FFF1F0;color:var(--danger);}
|
||||
/* 弹窗 */
|
||||
.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;max-height:85vh;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 24px;}
|
||||
.form-grid .form-item--full{grid-column:1/-1;}
|
||||
.form-item{display:flex;flex-direction:column;gap:6px;}
|
||||
.form-item__label{font-size:13px;color:#595959;}.form-item__label em{color:var(--danger);font-style:normal;margin-right:2px;}
|
||||
.form-item__input{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:13px;color:var(--text-primary);outline:none;background:#fff;}
|
||||
.form-item__input:focus{border-color:var(--primary);}
|
||||
.form-item__input[readonly]{background:#f5f5f5;color:#8c8c8c;cursor:not-allowed;}
|
||||
.form-item__select{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 28px 0 12px;font-size:13px;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;}
|
||||
.form-item__select:focus{border-color:var(--primary);}
|
||||
/* 回填信息卡片 */
|
||||
.autofill-card{background:#f6f9ff;border:1px solid #d6e4ff;border-radius:6px;padding:12px 16px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px 16px;}
|
||||
.autofill-card__item{display:flex;flex-direction:column;gap:2px;}
|
||||
.autofill-card__label{font-size:11px;color:#8c8c8c;}
|
||||
.autofill-card__value{font-size:13px;color:#262626;font-weight:500;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -87,15 +120,15 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
<div class="main">
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item"><label>当前食堂</label><select class="filter-select"><option selected>长庆一食堂</option><option>长庆二食堂</option><option>长庆三食堂</option></select></div>
|
||||
<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>晚餐</option></select></div>
|
||||
<div class="filter-item"><label>厨师</label><input class="filter-input" type="text" placeholder="请输入厨师姓名" style="min-width:140px;"></div>
|
||||
<div class="filter-item"><label>餐线</label><select class="filter-select"><option>全部</option><option>A区中餐线</option><option>B区中餐线</option><option>A区早餐线</option><option>B区早餐线</option><option>C区快餐线</option></select></div>
|
||||
<div class="filter-item"><label>上餐状态</label><select class="filter-select"><option>全部</option><option>上餐中</option><option>延误</option><option>已结束</option><option>待上餐</option></select></div>
|
||||
<div class="filter-item"><label>日期范围</label><input class="filter-input" type="date" style="min-width:150px;"></div>
|
||||
<div class="filter-item"><label>餐次</label><select class="filter-select"><option>全部</option><option>早餐</option><option>午餐</option><option>晚餐</option></select></div>
|
||||
<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>余量不足</option></select></div>
|
||||
<div class="filter-item"><label>日期</label><input id="filterDate" class="filter-input" type="date" style="min-width:160px;"></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()"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M7 2v10M2 7h10" stroke="#fff" stroke-width="1.6" stroke-linecap="round"/></svg>新增上餐</button>
|
||||
<button class="btn btn-primary">🔄 刷新记录</button>
|
||||
<button class="btn btn-primary"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 10v2h10v-2M7 2v7M4.5 6.5L7 9l2.5-2.5" stroke="#fff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg>导出列表数据</button>
|
||||
<button class="btn btn-default"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><rect x="2" y="2" width="10" height="10" rx="1.5" stroke="currentColor" stroke-width="1.4"/><path d="M4 5h6M4 7.5h4" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/></svg>查看导出任务</button>
|
||||
@@ -104,14 +137,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
<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>上餐重量(kg)</th><th>上餐状态</th><th>操作</th></tr></thead>
|
||||
<thead><tr><th>送达餐线</th><th>餐次</th><th>送达设备(秤台)</th><th>识别方式</th><th>菜品名称</th><th>当前余量(kg)</th><th>上餐重量(kg)</th><th>出锅时间</th><th>送达餐线时间</th><th>上餐状态</th><th>烹制任务号</th><th>出锅温度(℃)</th><th>厨师</th><th>操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><span class="tag tag-blue">午餐</span></td><td>宫保鸡丁</td><td><span class="tag tag-green">🤖 自动识别</span></td><td>张厨师</td><td>COOK-001</td><td>11:18</td><td>82</td><td>11:30</td><td>A区中餐线</td><td>00025号秤</td><td>38.2</td><td><span class="tag tag-blue">上餐中</span></td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td><span class="tag tag-blue">午餐</span></td><td>番茄炒蛋</td><td><span class="tag tag-green">🤖 自动识别</span></td><td>李厨师</td><td>COOK-002</td><td>11:20</td><td>78</td><td>11:30</td><td>A区中餐线</td><td>00025号秤</td><td>22.6</td><td><span class="tag tag-blue">上餐中</span></td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td><span class="tag tag-blue">午餐</span></td><td>红烧肉</td><td><span class="tag tag-blue">👤 人工选择</span></td><td>王厨师</td><td>COOK-003</td><td>11:22</td><td>86</td><td>11:38</td><td>B区中餐线</td><td>00027号秤</td><td>42.6</td><td><span class="tag tag-orange">延误8分钟</span></td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td><span class="tag tag-gray">早餐</span></td><td>小米粥</td><td><span class="tag tag-green">🤖 自动识别</span></td><td>赵厨师</td><td>COOK-006</td><td>07:20</td><td>75</td><td>07:28</td><td>A区早餐线</td><td>00022号秤</td><td>12.6</td><td><span class="tag tag-gray">已结束</span></td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td><span class="tag tag-gray">早餐</span></td><td>燕麦粥</td><td><span class="tag tag-blue">👤 人工选择</span></td><td>陈厨师</td><td>COOK-007</td><td>07:22</td><td>72</td><td>07:35</td><td>B区早餐线</td><td>00023号秤</td><td>8.4</td><td><span class="tag tag-orange">延误5分钟</span></td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td><span class="tag tag-blue">午餐</span></td><td>蒜蓉菠菜</td><td><span class="tag tag-blue">👤 人工选择</span></td><td>—</td><td>COOK-005</td><td>—</td><td>—</td><td>—</td><td>C区快餐线</td><td>00028号秤</td><td>—</td><td><span class="tag tag-gray">待上餐</span></td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>A区中餐线</td><td><span class="tag tag-blue">午餐</span></td><td>00025号秤</td><td><span class="tag tag-green">🤖 自动识别</span></td><td>宫保鸡丁</td><td>12.5</td><td>38.2</td><td>11:18</td><td>11:30</td><td><span class="tag tag-green">上餐完成</span></td><td>COOK-001</td><td>82</td><td>张厨师</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>A区中餐线</td><td><span class="tag tag-blue">午餐</span></td><td>00025号秤</td><td><span class="tag tag-green">🤖 自动识别</span></td><td>番茄炒蛋</td><td>8.3</td><td>22.6</td><td>11:20</td><td>11:30</td><td><span class="tag tag-green">上餐完成</span></td><td>COOK-002</td><td>78</td><td>李厨师</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>B区中餐线</td><td><span class="tag tag-blue">午餐</span></td><td>00027号秤</td><td><span class="tag tag-blue">👤 人工选择</span></td><td>红烧肉</td><td>1.2</td><td>42.6</td><td>11:22</td><td>11:38</td><td><span class="tag tag-red">余量不足</span></td><td>COOK-003</td><td>86</td><td>王厨师</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>A区早餐线</td><td><span class="tag tag-gray">早餐</span></td><td>00022号秤</td><td><span class="tag tag-green">🤖 自动识别</span></td><td>小米粥</td><td>0</td><td>12.6</td><td>07:20</td><td>07:28</td><td><span class="tag tag-green">上餐完成</span></td><td>COOK-006</td><td>75</td><td>赵厨师</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>B区早餐线</td><td><span class="tag tag-gray">早餐</span></td><td>00023号秤</td><td><span class="tag tag-blue">👤 人工选择</span></td><td>燕麦粥</td><td>2.1</td><td>8.4</td><td>07:22</td><td>07:35</td><td><span class="tag tag-green">上餐完成</span></td><td>COOK-007</td><td>72</td><td>陈厨师</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>C区快餐线</td><td><span class="tag tag-blue">午餐</span></td><td>00028号秤</td><td><span class="tag tag-blue">👤 人工选择</span></td><td>蒜蓉菠菜</td><td>—</td><td>—</td><td>—</td><td>—</td><td><span class="tag tag-gray">待上餐</span></td><td>COOK-005</td><td>—</td><td>—</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -121,6 +154,112 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script></script>
|
||||
|
||||
<!-- 新增上餐弹窗 -->
|
||||
<div class="modal-overlay" id="addServeModal" style="display:none;" onclick="if(event.target===this)closeAddModal()">
|
||||
<div class="modal" style="width:720px;">
|
||||
<div class="modal-header">
|
||||
<span class="modal-title">新增上餐</span>
|
||||
<span class="modal-close" onclick="closeAddModal()">×</span>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- 选择已完成烹制餐品 -->
|
||||
<div class="form-item" style="margin-bottom:16px;">
|
||||
<span class="form-item__label"><em>*</em>选择烹制餐品(已完成)</span>
|
||||
<select class="form-item__select" id="selectDish" onchange="onDishChange(this)">
|
||||
<option value="">请选择已完成烹制的餐品</option>
|
||||
<option value="1">COOK-001 | 宫保鸡丁 | 张厨师 | 出锅 11:18</option>
|
||||
<option value="2">COOK-002 | 番茄炒蛋 | 李厨师 | 出锅 11:20</option>
|
||||
<option value="3">COOK-003 | 红烧肉 | 王厨师 | 出锅 11:22</option>
|
||||
<option value="4">COOK-006 | 小米粥 | 赵厨师 | 出锅 07:20</option>
|
||||
<option value="5">COOK-007 | 燕麦粥 | 陈厨师 | 出锅 07:22</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- 自动回填信息卡片 -->
|
||||
<div class="autofill-card" id="autofillCard" style="margin-bottom:20px;display:none;">
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">烹制任务号</span><span class="autofill-card__value" id="af_taskNo">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">菜品名称</span><span class="autofill-card__value" id="af_dish">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">厨师</span><span class="autofill-card__value" id="af_chef">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">出锅时间</span><span class="autofill-card__value" id="af_outTime">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">出锅温度(℃)</span><span class="autofill-card__value" id="af_outTemp">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">餐次</span><span class="autofill-card__value" id="af_meal">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">识别方式</span><span class="autofill-card__value" id="af_recog">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">上餐重量(kg)</span><span class="autofill-card__value" id="af_weight">—</span></div>
|
||||
</div>
|
||||
<!-- 手动填写字段 -->
|
||||
<div class="form-grid">
|
||||
<div class="form-item">
|
||||
<span class="form-item__label"><em>*</em>送达餐线</span>
|
||||
<select class="form-item__select">
|
||||
<option value="">请选择</option>
|
||||
<option>A区中餐线</option>
|
||||
<option>B区中餐线</option>
|
||||
<option>A区早餐线</option>
|
||||
<option>B区早餐线</option>
|
||||
<option>C区快餐线</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-item__label"><em>*</em>送达设备(秤台)</span>
|
||||
<select class="form-item__select">
|
||||
<option value="">请选择</option>
|
||||
<option>00022号秤</option>
|
||||
<option>00023号秤</option>
|
||||
<option>00025号秤</option>
|
||||
<option>00027号秤</option>
|
||||
<option>00028号秤</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-item__label"><em>*</em>送达餐线时间</span>
|
||||
<input class="form-item__input" type="time" value="">
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span class="form-item__label">当前余量(kg)</span>
|
||||
<input class="form-item__input" type="number" step="0.1" placeholder="请输入当前余量">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-default" onclick="closeAddModal()">取消</button>
|
||||
<button class="btn btn-primary" onclick="closeAddModal()">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/* 日期默认选中当天 */
|
||||
(function(){var d=new Date();var y=d.getFullYear();var m=String(d.getMonth()+1).padStart(2,'0');var day=String(d.getDate()).padStart(2,'0');document.getElementById('filterDate').value=y+'-'+m+'-'+day;})();
|
||||
|
||||
/* 新增上餐弹窗 */
|
||||
function openAddModal(){
|
||||
document.getElementById('addServeModal').style.display='flex';
|
||||
document.getElementById('selectDish').value='';
|
||||
document.getElementById('autofillCard').style.display='none';
|
||||
}
|
||||
function closeAddModal(){document.getElementById('addServeModal').style.display='none';}
|
||||
|
||||
/* 已完成烹制餐品模拟数据 */
|
||||
var dishData={
|
||||
'1':{taskNo:'COOK-001',dish:'宫保鸡丁',chef:'张厨师',outTime:'11:18',outTemp:'82',meal:'午餐',recog:'自动识别',weight:'38.2'},
|
||||
'2':{taskNo:'COOK-002',dish:'番茄炒蛋',chef:'李厨师',outTime:'11:20',outTemp:'78',meal:'午餐',recog:'自动识别',weight:'22.6'},
|
||||
'3':{taskNo:'COOK-003',dish:'红烧肉',chef:'王厨师',outTime:'11:22',outTemp:'86',meal:'午餐',recog:'人工选择',weight:'42.6'},
|
||||
'4':{taskNo:'COOK-006',dish:'小米粥',chef:'赵厨师',outTime:'07:20',outTemp:'75',meal:'早餐',recog:'自动识别',weight:'12.6'},
|
||||
'5':{taskNo:'COOK-007',dish:'燕麦粥',chef:'陈厨师',outTime:'07:22',outTemp:'72',meal:'早餐',recog:'人工选择',weight:'8.4'}
|
||||
};
|
||||
function onDishChange(sel){
|
||||
var v=sel.value,card=document.getElementById('autofillCard');
|
||||
if(!v){card.style.display='none';return;}
|
||||
var d=dishData[v];card.style.display='grid';
|
||||
document.getElementById('af_taskNo').textContent=d.taskNo;
|
||||
document.getElementById('af_dish').textContent=d.dish;
|
||||
document.getElementById('af_chef').textContent=d.chef;
|
||||
document.getElementById('af_outTime').textContent=d.outTime;
|
||||
document.getElementById('af_outTemp').textContent=d.outTemp;
|
||||
document.getElementById('af_meal').textContent=d.meal;
|
||||
document.getElementById('af_recog').textContent=d.recog;
|
||||
document.getElementById('af_weight').textContent=d.weight+' kg';
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -146,7 +146,7 @@ tr.summary-row td{font-weight:700;background:#FAFAFA;}
|
||||
<!-- Tab1: 生产报表 -->
|
||||
<div class="tab-panel active">
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item"><label>日期</label><input class="filter-input" type="date" value="2026-04-23"></div>
|
||||
<div class="filter-item"><label>日期范围</label><input id="prodDateStart" class="filter-input" type="date" style="min-width:140px;"> <span style="margin:0 4px;color:#999;">至</span> <input id="prodDateEnd" class="filter-input" type="date" style="min-width:140px;"></div>
|
||||
<div class="filter-item"><label>餐次</label><select class="filter-select"><option>全部</option><option>早餐</option><option>午餐</option><option>晚餐</option></select></div>
|
||||
<button class="btn btn-primary">查询</button><button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
@@ -171,7 +171,7 @@ tr.summary-row td{font-weight:700;background:#FAFAFA;}
|
||||
<!-- Tab2: 成本利润 -->
|
||||
<div class="tab-panel">
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item"><label>日期</label><input class="filter-input" type="date" value="2026-04-23"></div>
|
||||
<div class="filter-item"><label>日期范围</label><input id="costDateStart" class="filter-input" type="date" style="min-width:140px;"> <span style="margin:0 4px;color:#999;">至</span> <input id="costDateEnd" class="filter-input" type="date" style="min-width:140px;"></div>
|
||||
<button class="btn btn-primary">查询</button><button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
<div class="action-bar"><button class="btn btn-primary"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 10v2h10v-2M7 2v7M4.5 6.5L7 9l2.5-2.5" stroke="#fff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg>导出列表数据</button><button class="btn btn-default"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><rect x="2" y="2" width="10" height="10" rx="1.5" stroke="currentColor" stroke-width="1.4"/><path d="M4 5h6M4 7.5h4" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/></svg>查看导出任务</button></div>
|
||||
@@ -217,6 +217,17 @@ tr.summary-row td{font-weight:700;background:#FAFAFA;}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/* 日期范围默认当月 */
|
||||
(function(){
|
||||
var d=new Date();var y=d.getFullYear();var m=String(d.getMonth()+1).padStart(2,'0');
|
||||
var today=y+'-'+m+'-'+String(d.getDate()).padStart(2,'0');
|
||||
var monthStart=y+'-'+m+'-01';
|
||||
document.getElementById('prodDateStart').value=monthStart;
|
||||
document.getElementById('prodDateEnd').value=today;
|
||||
document.getElementById('costDateStart').value=monthStart;
|
||||
document.getElementById('costDateEnd').value=today;
|
||||
})();
|
||||
|
||||
function switchTab(idx){
|
||||
document.querySelectorAll('.page-tab').forEach((t,i)=>t.classList.toggle('active',i===idx));
|
||||
document.querySelectorAll('.tab-panel').forEach((p,i)=>p.classList.toggle('active',i===idx));
|
||||
|
||||
@@ -46,7 +46,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
|
||||
.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{overflow-x:auto;overflow-y:visible;-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;}
|
||||
@@ -85,6 +85,23 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
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;}
|
||||
/* 更多下拉菜单 - hover触发 */
|
||||
.action-more{position:relative;display:inline-flex;}
|
||||
.action-more__trigger{color:var(--primary);cursor:pointer;font-size:var(--font-sm);user-select:none;}
|
||||
.action-more__trigger:hover{color:#40a9ff;}
|
||||
.action-more__menu{display:none;position:absolute;right:0;bottom:100%;margin-bottom:4px;background:#fff;border-radius:var(--radius-sm);box-shadow:0 3px 12px rgba(0,0,0,0.15);min-width:90px;z-index:100;padding:4px 0;}
|
||||
.action-more:hover .action-more__menu{display:block;}
|
||||
.action-more__item{display:block;padding:6px 14px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;white-space:nowrap;transition:background .1s;}
|
||||
.action-more__item:hover{background:var(--primary-light);color:var(--primary);}
|
||||
.action-more__item--danger{color:var(--danger);}
|
||||
.action-more__item--danger:hover{background:#FFF1F0;color:var(--danger);}
|
||||
/* 余量红色字体 */
|
||||
.td-surplus{color:var(--danger);font-weight:500;}
|
||||
/* 回填信息卡片 */
|
||||
.autofill-card{background:#f6f9ff;border:1px solid #d6e4ff;border-radius:6px;padding:12px 16px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px 16px;}
|
||||
.autofill-card__item{display:flex;flex-direction:column;gap:2px;}
|
||||
.autofill-card__label{font-size:11px;color:#8c8c8c;}
|
||||
.autofill-card__value{font-size:13px;color:#262626;font-weight:500;}
|
||||
/* 取餐明细弹窗 */
|
||||
.welfare-meta{display:flex;gap:32px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #f0f0f0;}
|
||||
.welfare-meta__item{display:flex;flex-direction:column;gap:4px;}
|
||||
@@ -133,7 +150,9 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item"><label>当前食堂</label><select class="filter-select"><option selected>长庆一食堂</option><option>长庆二食堂</option><option>长庆三食堂</option></select></div>
|
||||
<div class="filter-item"><label>处置日期</label><input class="filter-input" type="date"></div>
|
||||
<div class="filter-item"><label>餐线</label><select class="filter-select"><option>全部</option><option>A区中餐线</option><option>B区中餐线</option><option>A区早餐线</option><option>B区早餐线</option><option>C区快餐线</option></select></div>
|
||||
<div class="filter-item"><label>餐次</label><select class="filter-select"><option>全部</option><option>早餐</option><option>午餐</option><option>晚餐</option></select></div>
|
||||
<div class="filter-item"><label>处置日期</label><input id="filterDate" class="filter-input" type="date" style="min-width:160px;"></div>
|
||||
<div class="filter-item"><label>处置方式</label><select class="filter-select"><option>全部</option><option>员工福利</option><option>捐赠</option><option>废弃</option><option>加工再利用</option></select></div>
|
||||
<div class="filter-item"><label>食材/菜品</label><input class="filter-input" type="text" placeholder="请输入食材/菜品"></div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
@@ -150,16 +169,16 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
<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>计划制作量(kg)</th><th>实际制作量(kg)</th><th>销售/取餐量(kg)</th><th>余量(kg)</th><th>余量率(%)</th><th>处置方式</th><th>处置数量(kg)</th><th>交叉核对状态</th><th>处置时间</th><th>处置人员</th><th>操作</th></tr></thead>
|
||||
<thead><tr><th>处置单号</th><th>菜品名称</th><th>餐线</th><th>餐次</th><th>计划制作(kg)</th><th>实际制作(kg)</th><th>销售/取餐(kg)</th><th>余量(kg)</th><th>余量率(%)</th><th>处置方式</th><th>备注</th><th>处置数量(kg)</th><th>交叉核对状态</th><th>处置时间</th><th>处置人员</th><th>操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>SUR-001</td><td>宫保鸡丁</td><td>午餐</td><td>42.5</td><td>43.0</td><td>39.5</td><td>3.5</td><td>8.1%</td><td><a class="link" onclick="openWelfareModal('宫保鸡丁','SUR-001','2.0')">员工福利</a></td><td>2.0</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-001</td><td>宫保鸡丁</td><td>午餐</td><td>42.5</td><td>43.0</td><td>39.5</td><td>3.5</td><td>8.1%</td><td>捐赠</td><td>1.5</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-002</td><td>白米饭</td><td>午餐</td><td>60.0</td><td>62.0</td><td>54.0</td><td>8.0</td><td>12.9%</td><td>捐赠</td><td>5.0</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-002</td><td>白米饭</td><td>午餐</td><td>60.0</td><td>62.0</td><td>54.0</td><td>8.0</td><td>12.9%</td><td><a class="link" onclick="openWelfareModal('白米饭','SUR-002','3.0')">员工福利</a></td><td>3.0</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-003</td><td>番茄炒蛋</td><td>午餐</td><td>20.0</td><td>20.5</td><td>18.3</td><td>2.2</td><td>10.7%</td><td><a class="link" onclick="openWelfareModal('番茄炒蛋','SUR-003','2.2')">员工福利</a></td><td>2.2</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:30</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-004</td><td>蒜蓉菠菜</td><td>午餐</td><td>15.0</td><td>14.8</td><td>10.0</td><td>4.8</td><td>32.4%</td><td>废弃</td><td>3.0</td><td><span class="tag tag-red">异常(损耗超标)</span></td><td>2026-04-22 15:00</td><td>李主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-004</td><td>蒜蓉菠菜</td><td>午餐</td><td>15.0</td><td>14.8</td><td>10.0</td><td>4.8</td><td>32.4%</td><td>加工再利用</td><td>1.8</td><td><span class="tag tag-red">异常(损耗超标)</span></td><td>2026-04-22 15:00</td><td>李主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-005</td><td>红烧肉</td><td>午餐</td><td>50.0</td><td>48.5</td><td>45.3</td><td>3.2</td><td>6.6%</td><td><a class="link" onclick="openWelfareModal('红烧肉','SUR-005','3.2')">员工福利</a></td><td>3.2</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:45</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <a class="link">详情</a> <a class="link">编辑</a> <a class="link" style="color:var(--danger)">删除</a></td></tr>
|
||||
<tr><td>SUR-002</td><td>白米饭</td><td>A区中餐线</td><td>午餐</td><td>60.0</td><td>62.0</td><td>54.0</td><td class="td-surplus">8.0</td><td>12.9%</td><td>捐赠</td><td>捐赠予未央环卫</td><td>5.0</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>SUR-002</td><td>白米饭</td><td>A区中餐线</td><td>午餐</td><td>60.0</td><td>62.0</td><td>54.0</td><td class="td-surplus">8.0</td><td>12.9%</td><td><a class="link" onclick="openWelfareModal('白米饭','SUR-002','3.0')">员工福利</a></td><td>加班餐</td><td>3.0</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>SUR-004</td><td>蒜蓉菠菜</td><td>B区中餐线</td><td>午餐</td><td>15.0</td><td>14.8</td><td>10.0</td><td class="td-surplus">4.8</td><td>32.4%</td><td>废弃</td><td>叶片发黄</td><td>3.0</td><td><span class="tag tag-red">异常(损耗超标)</span></td><td>2026-04-22 15:00</td><td>李主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>SUR-004</td><td>蒜蓉菠菜</td><td>B区中餐线</td><td>午餐</td><td>15.0</td><td>14.8</td><td>10.0</td><td class="td-surplus">4.8</td><td>32.4%</td><td>加工再利用</td><td>制作蔬菜饼</td><td>1.8</td><td><span class="tag tag-red">异常(损耗超标)</span></td><td>2026-04-22 15:00</td><td>李主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>SUR-001</td><td>宫保鸡丁</td><td>A区中餐线</td><td>午餐</td><td>42.5</td><td>43.0</td><td>39.5</td><td class="td-surplus">3.5</td><td>8.1%</td><td><a class="link" onclick="openWelfareModal('宫保鸡丁','SUR-001','2.0')">员工福利</a></td><td>加班餐</td><td>2.0</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>SUR-001</td><td>宫保鸡丁</td><td>A区中餐线</td><td>午餐</td><td>42.5</td><td>43.0</td><td>39.5</td><td class="td-surplus">3.5</td><td>8.1%</td><td>捐赠</td><td>捐赠予安保部</td><td>1.5</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:00</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>SUR-005</td><td>红烧肉</td><td>B区中餐线</td><td>午餐</td><td>50.0</td><td>48.5</td><td>45.3</td><td class="td-surplus">3.2</td><td>6.6%</td><td><a class="link" onclick="openWelfareModal('红烧肉','SUR-005','3.2')">员工福利</a></td><td>加班餐</td><td>3.2</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:45</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
<tr><td>SUR-003</td><td>香辣大虾</td><td>C区快餐线</td><td>午餐</td><td>20.0</td><td>20.5</td><td>18.3</td><td class="td-surplus">2.2</td><td>10.7%</td><td>废弃</td><td>只剩辣椒和虾头</td><td>2.2</td><td><span class="tag tag-green">正常</span></td><td>2026-04-22 14:30</td><td>张主管</td><td class="td-actions"><a class="link">食材溯源链路</a> <a class="link">查看视频</a> <span class="action-more"><a class="action-more__trigger">更多 ▾</a><div class="action-more__menu"><a class="action-more__item">详情</a><a class="action-more__item">编辑</a><a class="action-more__item action-more__item--danger">删除</a></div></span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -175,44 +194,53 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
</div>
|
||||
|
||||
<div class="modal-overlay" id="modalOverlay" style="display:none;">
|
||||
<div class="modal">
|
||||
<div class="modal" style="width:760px;">
|
||||
<div class="modal-header">
|
||||
<span class="modal-title">新增余量处置</span>
|
||||
<span class="modal-close" onclick="closeModal()">×</span>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- 第一步:选择餐线、餐次、菜品 -->
|
||||
<div class="form-grid">
|
||||
<div class="form-item">
|
||||
<label>菜品名称<span class="required">*</span></label>
|
||||
<input type="text" placeholder="请输入菜品名称">
|
||||
<label>餐线<span class="required">*</span></label>
|
||||
<select id="addSurplusLine" onchange="onSurplusLineChange()">
|
||||
<option value="">请选择餐线</option>
|
||||
<option>A区中餐线</option><option>B区中餐线</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>餐次<span class="required">*</span></label>
|
||||
<select><option>请选择</option><option>早餐</option><option>午餐</option><option>晚餐</option></select>
|
||||
<select id="addSurplusMeal" onchange="onSurplusMealChange()">
|
||||
<option value="">请选择餐次</option>
|
||||
<option>午餐</option><option>晚餐</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>计划制作量(kg)<span class="required">*</span></label>
|
||||
<input type="number" placeholder="请输入计划制作量">
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>实际制作量(kg)<span class="required">*</span></label>
|
||||
<input type="number" placeholder="请输入实际制作量">
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>销售/取餐量(kg)<span class="required">*</span></label>
|
||||
<input type="number" placeholder="请输入销售/取餐量">
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>余量(kg)<span class="required">*</span></label>
|
||||
<input type="number" placeholder="自动计算或手动输入">
|
||||
<div class="form-item full">
|
||||
<label>菜品名称(来自上餐监控)<span class="required">*</span></label>
|
||||
<select id="addSurplusDish" onchange="onSurplusDishChange()">
|
||||
<option value="">请先选择餐线和餐次</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 自动回填信息卡片 -->
|
||||
<div class="autofill-card" id="surplusAutofill" style="margin:16px 0;display:none;">
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">计划制作量(kg)</span><span class="autofill-card__value" id="sf_plan">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">实际制作量(kg)</span><span class="autofill-card__value" id="sf_actual">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">销售/取餐量(kg)</span><span class="autofill-card__value" id="sf_sold">—</span></div>
|
||||
<div class="autofill-card__item"><span class="autofill-card__label">余量(kg)</span><span class="autofill-card__value" id="sf_surplus" style="color:#ff4d4f;font-weight:600;">—</span></div>
|
||||
</div>
|
||||
<!-- 第二步:处置信息 -->
|
||||
<div class="form-grid" style="margin-top:16px;">
|
||||
<div class="form-item">
|
||||
<label>处置方式<span class="required">*</span></label>
|
||||
<select><option>请选择</option><option>员工福利</option><option>捐赠</option><option>废弃</option><option>加工再利用</option></select>
|
||||
<select id="addSurplusMethod" onchange="onSurplusMethodChange()">
|
||||
<option value="">请选择</option><option>员工福利</option><option>捐赠</option><option>废弃</option><option>加工再利用</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>处置数量(kg)<span class="required">*</span></label>
|
||||
<input type="number" placeholder="请输入处置数量">
|
||||
<input type="number" step="0.1" placeholder="请输入处置数量">
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label>处置人员<span class="required">*</span></label>
|
||||
@@ -223,21 +251,99 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
<input type="datetime-local">
|
||||
</div>
|
||||
<div class="form-item full">
|
||||
<label>备注(异常原因描述)</label>
|
||||
<textarea placeholder="如有异常请填写原因描述"></textarea>
|
||||
<label>备注</label>
|
||||
<input type="text" placeholder="如有异常请填写原因描述" style="width:100%;">
|
||||
</div>
|
||||
</div>
|
||||
<!-- 员工福利领取记录(处置方式=员工福利时显示) -->
|
||||
<div id="surplusWelfareSection" style="display:none;margin-top:20px;border-top:1px solid #e8e8e8;padding-top:16px;">
|
||||
<div style="font-size:14px;font-weight:500;margin-bottom:12px;">员工领取记录</div>
|
||||
<table style="width:100%;border-collapse:collapse;border:1px solid #e8e8e8;border-radius:4px;">
|
||||
<thead><tr style="background:#fafafa;"><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">序号</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取人</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">工号</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">部门</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取量(kg)</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取时间</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取方式</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">操作</th></tr></thead>
|
||||
<tbody id="surplusWelfareTbody">
|
||||
<!-- 新增行(默认隐藏) -->
|
||||
<tr id="surplusWelfareAddRow" style="display:none;background:#f9fbff;"><td style="padding:8px 12px;font-size:13px;color:#8c8c8c;">1</td><td style="padding:8px 12px;"><input style="width:60px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="姓名"></td><td style="padding:8px 12px;"><input style="width:72px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="工号"></td><td style="padding:8px 12px;"><input style="width:60px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="部门"></td><td style="padding:8px 12px;"><input style="width:50px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="kg"></td><td style="padding:8px 12px;"><input style="width:60px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" type="time"></td><td style="padding:8px 12px;"><select style="height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;"><option>刷脸取餐</option><option>刷卡取餐</option><option>扫码取餐</option></select></td><td style="padding:8px 12px;"><a style="color:#1890FF;cursor:pointer;font-size:13px;">确认</a> <a style="color:#8c8c8c;cursor:pointer;font-size:13px;margin-left:6px;" onclick="document.getElementById('surplusWelfareAddRow').style.display='none'">取消</a></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="margin-top:10px;"><a style="color:#1890FF;cursor:pointer;font-size:13px;" onclick="document.getElementById('surplusWelfareAddRow').style.display='table-row'">+ 新增领取记录</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-default" onclick="closeModal()">取消</button>
|
||||
<button class="btn btn-primary">确定</button>
|
||||
<button class="btn btn-primary" onclick="closeModal()">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
function openModal(){document.getElementById('modalOverlay').style.display='flex';}
|
||||
/* 处置日期默认选中当天 */
|
||||
(function(){var d=new Date();var y=d.getFullYear();var m=String(d.getMonth()+1).padStart(2,'0');var day=String(d.getDate()).padStart(2,'0');document.getElementById('filterDate').value=y+'-'+m+'-'+day;})();
|
||||
|
||||
function openModal(){
|
||||
document.getElementById('modalOverlay').style.display='flex';
|
||||
document.getElementById('addSurplusLine').value='';
|
||||
document.getElementById('addSurplusMeal').value='';
|
||||
document.getElementById('addSurplusDish').innerHTML='<option value="">请先选择餐线和餐次</option>';
|
||||
document.getElementById('surplusAutofill').style.display='none';
|
||||
document.getElementById('addSurplusMethod').value='';
|
||||
document.getElementById('surplusWelfareSection').style.display='none';
|
||||
}
|
||||
function closeModal(){document.getElementById('modalOverlay').style.display='none';}
|
||||
document.getElementById('modalOverlay').addEventListener('click',function(e){if(e.target===this)closeModal();});
|
||||
|
||||
/* 模拟上餐监控菜品数据(按餐线+餐次) */
|
||||
var serveDishData={
|
||||
'A区中餐线_午餐':[
|
||||
{name:'宫保鸡丁',plan:'42.5',actual:'43.0',sold:'39.5',surplus:'3.5'},
|
||||
{name:'番茄炒蛋',plan:'20.0',actual:'20.5',sold:'18.3',surplus:'2.2'},
|
||||
{name:'白米饭',plan:'60.0',actual:'62.0',sold:'54.0',surplus:'8.0'}
|
||||
],
|
||||
'B区中餐线_午餐':[
|
||||
{name:'红烧肉',plan:'50.0',actual:'48.5',sold:'45.3',surplus:'3.2'},
|
||||
{name:'蒜蓉菠菜',plan:'15.0',actual:'14.8',sold:'10.0',surplus:'4.8'}
|
||||
],
|
||||
'C区快餐线_午餐':[
|
||||
{name:'番茄炒蛋',plan:'20.0',actual:'20.5',sold:'18.3',surplus:'2.2'}
|
||||
],
|
||||
'A区早餐线_早餐':[
|
||||
{name:'小米粥',plan:'15.0',actual:'14.0',sold:'12.6',surplus:'1.4'}
|
||||
],
|
||||
'B区早餐线_早餐':[
|
||||
{name:'燕麦粥',plan:'10.0',actual:'9.5',sold:'8.4',surplus:'1.1'}
|
||||
]
|
||||
};
|
||||
|
||||
function onSurplusLineChange(){onSurplusMealChange();}
|
||||
function onSurplusMealChange(){
|
||||
var line=document.getElementById('addSurplusLine').value;
|
||||
var meal=document.getElementById('addSurplusMeal').value;
|
||||
var sel=document.getElementById('addSurplusDish');
|
||||
document.getElementById('surplusAutofill').style.display='none';
|
||||
if(!line||!meal){sel.innerHTML='<option value="">请先选择餐线和餐次</option>';return;}
|
||||
var key=line+'_'+meal;
|
||||
var dishes=serveDishData[key]||[];
|
||||
var html='<option value="">请选择菜品(共'+dishes.length+'项)</option>';
|
||||
dishes.forEach(function(d,i){html+='<option value="'+i+'">'+d.name+'(余量 '+d.surplus+' kg)</option>';});
|
||||
sel.innerHTML=html;
|
||||
}
|
||||
function onSurplusDishChange(){
|
||||
var line=document.getElementById('addSurplusLine').value;
|
||||
var meal=document.getElementById('addSurplusMeal').value;
|
||||
var idx=document.getElementById('addSurplusDish').value;
|
||||
var card=document.getElementById('surplusAutofill');
|
||||
if(!idx){card.style.display='none';return;}
|
||||
var key=line+'_'+meal;
|
||||
var d=serveDishData[key][parseInt(idx)];
|
||||
card.style.display='grid';
|
||||
document.getElementById('sf_plan').textContent=d.plan;
|
||||
document.getElementById('sf_actual').textContent=d.actual;
|
||||
document.getElementById('sf_sold').textContent=d.sold;
|
||||
document.getElementById('sf_surplus').textContent=d.surplus;
|
||||
}
|
||||
function onSurplusMethodChange(){
|
||||
var v=document.getElementById('addSurplusMethod').value;
|
||||
document.getElementById('surplusWelfareSection').style.display=(v==='员工福利')?'block':'none';
|
||||
}
|
||||
|
||||
function openWelfareModal(name,code,total){
|
||||
document.getElementById('welfareTitle').textContent='员工福利取餐明细 — '+name;
|
||||
document.getElementById('welfareName').textContent=name;
|
||||
@@ -265,14 +371,18 @@ function openWelfareModal(name,code,total){
|
||||
</div>
|
||||
<!-- 取餐明细表格 -->
|
||||
<table style="width:100%;border-collapse:collapse;border:1px solid #e8e8e8;border-radius:4px;">
|
||||
<thead><tr style="background:#fafafa;"><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">序号</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取人</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">工号</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">部门</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取量(kg)</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取时间</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取方式</th></tr></thead>
|
||||
<thead><tr style="background:#fafafa;"><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">序号</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取人</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">工号</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">部门</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取量(kg)</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取时间</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">领取方式</th><th style="padding:10px 12px;text-align:left;font-size:12px;color:#8c8c8c;border-bottom:1px solid #e8e8e8;">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">1</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">张三</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">EMP-0012</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">研发部</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">0.5</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">14:05</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">刷脸取餐</td></tr>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">2</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">李四</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">EMP-0034</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">市场部</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">0.5</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">14:08</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">刷卡取餐</td></tr>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">3</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">王五</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">EMP-0056</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">行政部</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">0.5</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">14:12</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">刷脸取餐</td></tr>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;">4</td><td style="padding:10px 12px;font-size:13px;">赵六</td><td style="padding:10px 12px;font-size:13px;">EMP-0078</td><td style="padding:10px 12px;font-size:13px;">财务部</td><td style="padding:10px 12px;font-size:13px;">0.3</td><td style="padding:10px 12px;font-size:13px;">14:15</td><td style="padding:10px 12px;font-size:13px;">扫码取餐</td></tr>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">1</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">张三</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">EMP-0012</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">研发部</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">0.5</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">14:05</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">刷脸取餐</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;"><a style="color:#ff4d4f;cursor:pointer;font-size:13px;">删除</a></td></tr>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">2</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">李四</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">EMP-0034</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">市场部</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">0.5</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">14:08</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">刷卡取餐</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;"><a style="color:#ff4d4f;cursor:pointer;font-size:13px;">删除</a></td></tr>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">3</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">王五</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">EMP-0056</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">行政部</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">0.5</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">14:12</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">刷脸取餐</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;"><a style="color:#ff4d4f;cursor:pointer;font-size:13px;">删除</a></td></tr>
|
||||
<tr><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">4</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">赵六</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">EMP-0078</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">财务部</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">0.3</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">14:15</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;">扫码取餐</td><td style="padding:10px 12px;font-size:13px;border-bottom:1px solid #e8e8e8;"><a style="color:#ff4d4f;cursor:pointer;font-size:13px;">删除</a></td></tr>
|
||||
<!-- 新增行(默认隐藏,点击按钮后显示) -->
|
||||
<tr id="welfareAddRow" style="display:none;background:#f9fbff;"><td style="padding:8px 12px;font-size:13px;color:#8c8c8c;">5</td><td style="padding:8px 12px;"><input style="width:60px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="姓名"></td><td style="padding:8px 12px;"><input style="width:72px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="工号"></td><td style="padding:8px 12px;"><input style="width:60px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="部门"></td><td style="padding:8px 12px;"><input style="width:50px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" placeholder="kg"></td><td style="padding:8px 12px;"><input style="width:60px;height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;" type="time"></td><td style="padding:8px 12px;"><select style="height:28px;border:1px solid #d9d9d9;border-radius:4px;padding:0 6px;font-size:12px;"><option>刷脸取餐</option><option>刷卡取餐</option><option>扫码取餐</option></select></td><td style="padding:8px 12px;"><a style="color:#1890FF;cursor:pointer;font-size:13px;">确认</a> <a style="color:#8c8c8c;cursor:pointer;font-size:13px;margin-left:6px;" onclick="document.getElementById('welfareAddRow').style.display='none'">取消</a></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- 新增按钮 -->
|
||||
<div style="margin-top:10px;"><a style="color:#1890FF;cursor:pointer;font-size:13px;" onclick="document.getElementById('welfareAddRow').style.display='table-row'">+ 新增领取记录</a></div>
|
||||
<!-- 汇总 -->
|
||||
<div class="welfare-summary">📊 汇总:已领取 1.8 kg / 福利总量 2.0 kg,剩余 0.2 kg(领取率 90%)</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user