diff --git a/other-module/mini-program/nutrition/doc/CHANGELOG.md b/other-module/mini-program/nutrition/doc/CHANGELOG.md index 38994af..152db47 100644 --- a/other-module/mini-program/nutrition/doc/CHANGELOG.md +++ b/other-module/mini-program/nutrition/doc/CHANGELOG.md @@ -1,5 +1,13 @@ # 营养管理小程序 CHANGELOG +## [1.3.0] - 2026-06-22 + +### 变更 + +**吃模块** +- `eat-home.html` — 今日就餐记录列表改造:移除食物图标,食物名称左上角新增序号徽标,食物名称下方副信息由「蛋白质/脂肪/碳水」改为「重量(g)· 热量(kcal)」;数据来源标识由两种扩展为三种(员工食堂 / 补充记录 / 拍照记录),其中拍照记录条目不显示重量与热量;底部「自记餐品」按钮拆分为「手动补录」+「拍照记录」两个按钮,分别跳转 `eat-self-record.html` 与新增页 `eat-photo-record.html` +- `eat-photo-record.html` — 新增拍照记录页:支持手动输入餐品名称 + 拍照/上传图片,可添加多个餐品并保存至 `sessionStorage['photoRecord_餐次']`,与 `eat-home.html` 就餐记录联动 + ## [1.2.1] - 2026-06-17 ### 变更 diff --git a/other-module/mini-program/nutrition/eat-home.html b/other-module/mini-program/nutrition/eat-home.html index 3811df1..21be0d1 100644 --- a/other-module/mini-program/nutrition/eat-home.html +++ b/other-module/mini-program/nutrition/eat-home.html @@ -81,26 +81,37 @@ border-bottom: 0.5px solid #f5f5f5; cursor: pointer; text-decoration: none; color: inherit; } .meal-item:last-child { border-bottom: none; } - .meal-item .food-icon { - width: 44px; height: 44px; border-radius: 12px; background: #f5f5f5; - display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; - } .meal-item .food-info { flex: 1; min-width: 0; } - .meal-item .food-name { font-size: 14px; font-weight: 500; } - .meal-item .food-meta { font-size: 12px; color: #999; margin-top: 2px; } - /* 右侧:热量 + 来源徽标(员工食堂 / 自记餐品) */ - .meal-item .food-right { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; flex-shrink: 0; } - .meal-item .food-cal { font-size: 13px; font-weight: 600; color: #fa8c16; } - .meal-item .food-source { font-size: 10px; color: #999; padding: 1px 6px; border-radius: 3px; background: #f5f5f5; } - .meal-item .food-source.self { color: #1677ff; background: #e6f4ff; } - /* 自记餐品按钮(位于餐品列表下方) */ - .self-record-btn-wrap { padding: 4px 16px 16px; background: #fff; } - .self-record-btn { - width: 100%; padding: 11px 0; border-radius: 12px; border: 1.5px dashed #1677ff; - background: #f0f7ff; color: #1677ff; font-size: 14px; font-weight: 600; - cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 4px; + /* 食物名称行:序号 + 名称 + 重量/热量(右对齐) */ + .meal-item .food-name-row { display: flex; align-items: center; gap: 6px; } + .meal-item .food-index { + flex-shrink: 0; min-width: 18px; height: 18px; line-height: 18px; padding: 0 5px; + border-radius: 9px; background: #1677ff; color: #fff; + font-size: 11px; font-weight: 600; text-align: center; } - .self-record-btn:active { background: #d6e8ff; } + .meal-item .food-name { font-size: 14px; font-weight: 500; flex-shrink: 0; } + .meal-item .food-meta { font-size: 12px; color: #999; text-align: right; } + /* 就餐时间 */ + .meal-item .food-time { font-size: 11px; color: #bbb; margin-top: 4px; } + /* 右侧:来源徽标(员工食堂 / 补充记录 / 拍照记录) */ + .meal-item .food-right { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; flex-shrink: 0; } + .meal-item .food-source { + font-size: 10px; color: #999; padding: 1px 6px; border-radius: 3px; background: #f5f5f5; + } + .meal-item .food-source.self { color: #1677ff; background: #e6f4ff; } + .meal-item .food-source.photo { color: #fa8c16; background: #fff7e6; } + /* 底部双按钮:手动补录 / 拍照记录 */ + .record-actions-wrap { padding: 4px 16px 16px; background: #fff; } + .record-actions { display: flex; gap: 10px; } + .record-action-btn { + flex: 1; padding: 11px 0; border-radius: 12px; + font-size: 14px; font-weight: 600; cursor: pointer; + display: flex; align-items: center; justify-content: center; gap: 4px; + border: 1.5px dashed #1677ff; background: #f0f7ff; color: #1677ff; + } + .record-action-btn.photo { border-color: #fa8c16; background: #fff7e6; color: #fa8c16; } + .record-action-btn:active { opacity: 0.8; } + .record-action-btn .ra-icon { font-size: 16px; } @@ -134,11 +145,16 @@
晚餐
- -
- + +
+
+ + +
@@ -156,26 +172,27 @@ diff --git a/other-module/mini-program/nutrition/eat-photo-record.html b/other-module/mini-program/nutrition/eat-photo-record.html new file mode 100644 index 0000000..c38dda8 --- /dev/null +++ b/other-module/mini-program/nutrition/eat-photo-record.html @@ -0,0 +1,324 @@ + + + + + + 拍照记录 | 智能餐养小程序 + + + +
+ +
+ 09:41 +
+ 📶WiFi🔋 +
+
+ + + + + +
+ +
当前餐次:午餐
+ + +
+
餐品名称
+ + +
+ + + + + +
+
+ + +
+
已添加餐品(0
+
+
+
+ + +
+ +
+ + +
+
+ + + + diff --git a/web-admin/nutrition/din-dish-add.html b/web-admin/nutrition/din-dish-add.html index 023b4e3..1d268de 100644 --- a/web-admin/nutrition/din-dish-add.html +++ b/web-admin/nutrition/din-dish-add.html @@ -274,7 +274,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
-
+
- +
食材名称净菜类型用量(g/份)是否主料过敏原备注操作
食材名称净菜类型用量(g/份)食材类型过敏原备注操作
暂无食材,请点击"新增食材"添加
`, @@ -564,7 +564,7 @@ function resetIngredientForm(){ netTypeSelect.disabled=true; } document.getElementById('ingredientAmount').value=''; - document.getElementById('ingredientIsMain').selectedIndex=0; + document.getElementById('ingredientType').selectedIndex=0; document.getElementById('ingredientAllergen').value=''; document.getElementById('ingredientNote').value=''; } @@ -591,7 +591,7 @@ function confirmAddIngredient(){ if(!name){alert('请选择食材');return;} if(!netType){alert('请选择净菜类型');return;} if(!amount){alert('请填写用量');return;} - var isMain=document.getElementById('ingredientIsMain').value; + var ingredientType=document.getElementById('ingredientType').value; var allergen=document.getElementById('ingredientAllergen').value.trim()||'无'; var note=document.getElementById('ingredientNote').value.trim()||'—'; var tbody=document.querySelector('.ingredient-table tbody'); @@ -599,8 +599,9 @@ function confirmAddIngredient(){ var emptyRow=tbody.querySelector('td[colspan]'); if(emptyRow) emptyRow.parentElement.remove(); var tr=document.createElement('tr'); + var typeTagMap={'主材':'tag-blue','辅材':'tag-gray','调料':'tag-orange'}; tr.innerHTML=''+name+''+netType+''+amount+'' - +''+(isMain==='主料'?'主料':'辅料')+'' + +''+ingredientType+'' +''+allergen+'' +''+note+'' +'删除'; @@ -678,7 +679,7 @@ var EDIT_DATA = { allergen:'无', tag:'高蛋白', status:'上架', crowd:[{name:'成人',level:'推荐'},{name:'高血脂人群',level:'慎食'},{name:'高血压人群',level:'适量'}], specs:[{spec:'标准份',weight:200,price:12,isDefault:true},{spec:'小份',weight:120,price:8,isDefault:false},{spec:'大份',weight:300,price:18,isDefault:false}], - composition:[{name:'五花肉',netType:'红烧块',amount:150,pct:'60%',main:true,allergen:'无',note:'—'},{name:'冰糖',netType:'糖浆',amount:20,pct:'8%',main:false,allergen:'无',note:'上色'},{name:'酱油',netType:'调味汁',amount:15,pct:'6%',main:false,allergen:'含大豆',note:'调味'},{name:'料酒',netType:'料酒汁',amount:10,pct:'4%',main:false,allergen:'无',note:'去腥'}], + composition:[{name:'五花肉',netType:'红烧块',amount:150,pct:'60%',type:'主材',allergen:'无',note:'—'},{name:'冰糖',netType:'糖浆',amount:20,pct:'8%',type:'调料',allergen:'无',note:'上色'},{name:'酱油',netType:'调味汁',amount:15,pct:'6%',type:'调料',allergen:'含大豆',note:'调味'},{name:'料酒',netType:'料酒汁',amount:10,pct:'4%',type:'调料',allergen:'无',note:'去腥'}], cook:{mainMethod:'炖',subMethod:'煎',heat:'中火→小火',duration:45,oil:15,salt:3,temp:100,output:200,steps:6,desc:'1.五花肉切块焯水;2.锅中煎至金黄;3.加冰糖炒色;4.加酱油料酒;5.加水小火炖40分钟;6.大火收汁'}, nutri:{calorie:385,protein:18.2,carb:12.4,fat:28.6,vitC:2.1,mineral:45,fiber:1.8,sodium:486}, taste:{sour:1,sweet:3,bitter:1,spicy:1,salty:4,smell:4.2,flavorScore:3.8,flavorGrade:'good'}, @@ -773,8 +774,8 @@ function fillEditData(){ d.composition.forEach(function(c){ var tr = document.createElement('tr'); tr.innerHTML = (pageMode==='convert' - ? ''+c.name+''+(c.netType||'—')+''+c.amount+'g'+(c.main?'主料':'辅料')+''+c.allergen+''+c.note+'编辑 删除' - : ''+c.name+''+(c.netType||'—')+''+c.amount+'g'+(c.main?'主料':'辅料')+''+c.allergen+''+c.note+'编辑 删除'); + ? ''+c.name+''+(c.netType||'—')+''+c.amount+'g'+(c.type||'辅材')+''+c.allergen+''+c.note+'编辑 删除' + : ''+c.name+''+(c.netType||'—')+''+c.amount+'g'+(c.type||'辅材')+''+c.allergen+''+c.note+'编辑 删除'); tbody.appendChild(tr); }); } diff --git a/web-admin/nutrition/din-dish-all.html b/web-admin/nutrition/din-dish-all.html index c205a6a..90235c0 100644 --- a/web-admin/nutrition/din-dish-all.html +++ b/web-admin/nutrition/din-dish-all.html @@ -275,7 +275,7 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} // 餐品数据 const DISHES = [ {id:'DISH001',name:'红烧肉',icon:'🥩',category:'荤菜',tags:['高蛋白'],specs:[{name:'标准份',weight:200,price:12,isDefault:true},{name:'小份',weight:120,price:8},{name:'大份',weight:300,price:18}],method:'炖',meal:'午/晚',allergen:'无',status:'启用',source:'手动添加',weightBasePrice:'6.00',weightVipPrice:'5.40',crowd:[{name:'成人',level:'推荐'},{name:'高血脂人群',level:'慎食'},{name:'高血压人群',level:'适量'}],crowdNote:'高血脂人群控制摄入量', - composition:[{name:'猪五花肉',netType:'红烧块',amount:160,pct:'80%',state:'净菜',main:true,allergen:'无',note:'—'},{name:'生姜',netType:'姜片',amount:5,pct:'2.5%',state:'净菜',main:false,allergen:'无',note:'—'},{name:'生抽',netType:'调味汁',amount:15,pct:'7.5%',state:'原料',main:false,allergen:'含麸质',note:'酱油'},{name:'冰糖',netType:'糖浆',amount:10,pct:'5%',state:'原料',main:false,allergen:'无',note:'上色提味'},{name:'料酒',netType:'料酒汁',amount:10,pct:'5%',state:'原料',main:false,allergen:'无',note:'去腥'}], + composition:[{name:'猪五花肉',netType:'红烧块',amount:160,pct:'80%',state:'净菜',type:'主材',allergen:'无',note:'—'},{name:'生姜',netType:'姜片',amount:5,pct:'2.5%',state:'净菜',type:'辅材',allergen:'无',note:'—'},{name:'生抽',netType:'调味汁',amount:15,pct:'7.5%',state:'原料',type:'调料',allergen:'含麸质',note:'酱油'},{name:'冰糖',netType:'糖浆',amount:10,pct:'5%',state:'原料',type:'调料',allergen:'无',note:'上色提味'},{name:'料酒',netType:'料酒汁',amount:10,pct:'5%',state:'原料',type:'调料',allergen:'无',note:'去腥'}], nutri:{calorie:385,protein:18.2,carb:12.4,fat:28.6,vitC:0.8,mineral:42,fiber:0.3,sodium:486,nutriGrade:'偏差',note:'铁2.4mg、锌1.8mg'}, cook:{mainMethod:'炖',subMethod:'煎',heat:'中火→小火',duration:45,oil:15,salt:3,temp:'100→80',output:200,steps:6}, taste:{sour:1,sweet:3,bitter:1,spicy:1,salty:4,smell:4.2,flavorScore:3.8,flavorGrade:'良好'}, @@ -283,7 +283,7 @@ const DISHES = [ texture:{hardness:2,sticky:3,crispy:1,smooth:4,elastic:3,textureScore:3.6,textureGrade:'良好'} }, {id:'DISH002',name:'清炒时蔬',icon:'🥬',category:'素菜',tags:['低脂','素食'],specs:[{name:'标准份',weight:150,price:6,isDefault:true},{name:'小份',weight:100,price:4}],method:'炒',meal:'早/午/晚',allergen:'无',status:'启用',source:'系统内置',weightBasePrice:'3.00',weightVipPrice:'2.70',crowd:[{name:'全人群',level:'推荐'},{name:'糖尿病人群',level:'推荐'},{name:'肾结石人群',level:'慎食'}],crowdNote:'肾结石人群慎食(草酸含量高)', - composition:[{name:'时令青菜',netType:'青菜段',amount:120,pct:'80%',state:'净菜',main:true,allergen:'无',note:'—'},{name:'蒜末',netType:'蒜末',amount:5,pct:'3.3%',state:'净菜',main:false,allergen:'无',note:'—'},{name:'食用油',netType:'净油',amount:8,pct:'5.3%',state:'原料',main:false,allergen:'无',note:'—'},{name:'食盐',netType:'盐粒',amount:2,pct:'1.3%',state:'原料',main:false,allergen:'无',note:'—'}], + composition:[{name:'时令青菜',netType:'青菜段',amount:120,pct:'80%',state:'净菜',type:'主材',allergen:'无',note:'—'},{name:'蒜末',netType:'蒜末',amount:5,pct:'3.3%',state:'净菜',type:'调料',allergen:'无',note:'—'},{name:'食用油',netType:'净油',amount:8,pct:'5.3%',state:'原料',type:'调料',allergen:'无',note:'—'},{name:'食盐',netType:'盐粒',amount:2,pct:'1.3%',state:'原料',type:'调料',allergen:'无',note:'—'}], nutri:{calorie:68,protein:2.1,carb:8.6,fat:3.2,vitC:28.5,mineral:86,fiber:2.4,sodium:186,nutriGrade:'达标',note:'铁1.2mg、钙45mg'}, cook:{mainMethod:'炒',subMethod:'—',heat:'大火',duration:5,oil:8,salt:2,temp:'200',output:150,steps:4}, taste:{sour:1,sweet:2,bitter:1,spicy:1,salty:2,smell:3.5,flavorScore:3.2,flavorGrade:'一般'}, @@ -291,7 +291,7 @@ const DISHES = [ texture:{hardness:3,sticky:1,crispy:4,smooth:3,elastic:2,textureScore:3.4,textureGrade:'良好'} }, {id:'DISH003',name:'番茄鸡蛋汤',icon:'🍅',category:'汤品',tags:['低卡'],specs:[{name:'标准份',weight:300,price:5,isDefault:true}],method:'煮',meal:'午/晚',allergen:'含蛋类',status:'启用',source:'系统内置',weightBasePrice:'1.67',weightVipPrice:'1.50',crowd:[{name:'全人群',level:'推荐'},{name:'儿童',level:'推荐'},{name:'老年人',level:'推荐'}],crowdNote:'', - composition:[{name:'番茄',netType:'番茄块',amount:150,pct:'50%',state:'净菜',main:true,allergen:'无',note:'—'},{name:'鸡蛋',netType:'鸡蛋液',amount:60,pct:'20%',state:'原料',main:true,allergen:'含蛋类',note:'—'},{name:'食用油',netType:'净油',amount:5,pct:'1.7%',state:'原料',main:false,allergen:'无',note:'—'},{name:'食盐',netType:'盐粒',amount:2,pct:'0.7%',state:'原料',main:false,allergen:'无',note:'—'}], + composition:[{name:'番茄',netType:'番茄块',amount:150,pct:'50%',state:'净菜',type:'主材',allergen:'无',note:'—'},{name:'鸡蛋',netType:'鸡蛋液',amount:60,pct:'20%',state:'原料',type:'主材',allergen:'含蛋类',note:'—'},{name:'食用油',netType:'净油',amount:5,pct:'1.7%',state:'原料',type:'调料',allergen:'无',note:'—'},{name:'食盐',netType:'盐粒',amount:2,pct:'0.7%',state:'原料',type:'调料',allergen:'无',note:'—'}], nutri:{calorie:45,protein:3.8,carb:4.2,fat:2.1,vitC:18.2,mineral:32,fiber:1.1,sodium:280,nutriGrade:'达标',note:'铁0.8mg、钾210mg'}, cook:{mainMethod:'煮',subMethod:'炒',heat:'中火',duration:12,oil:5,salt:2,temp:'100',output:300,steps:5}, taste:{sour:3,sweet:2,bitter:1,spicy:1,salty:2,smell:3.8,flavorScore:3.5,flavorGrade:'良好'}, @@ -299,7 +299,7 @@ const DISHES = [ texture:{hardness:1,sticky:2,crispy:1,smooth:5,elastic:2,textureScore:3.8,textureGrade:'良好'} }, {id:'DISH004',name:'米饭',icon:'🍚',category:'主食',tags:['主食'],specs:[{name:'标准份',weight:200,price:3,isDefault:true},{name:'小份',weight:100,price:2},{name:'大份',weight:300,price:4}],method:'蒸',meal:'早/午/晚',allergen:'无',status:'启用',source:'系统内置',weightBasePrice:'1.50',weightVipPrice:'1.35',crowd:[{name:'全人群',level:'推荐'},{name:'糖尿病人群',level:'适量'}],crowdNote:'糖尿病人群注意控制量', - composition:[{name:'大米',netType:'熟米饭',amount:100,pct:'100%',state:'原料',main:true,allergen:'无',note:'—'}], + composition:[{name:'大米',netType:'熟米饭',amount:100,pct:'100%',state:'原料',type:'主材',allergen:'无',note:'—'}], nutri:{calorie:232,protein:4.8,carb:51.2,fat:0.6,vitC:0,mineral:12,fiber:0.4,sodium:3,nutriGrade:'达标',note:'—'}, cook:{mainMethod:'蒸',subMethod:'—',heat:'大火→中火',duration:30,oil:0,salt:0,temp:'100',output:200,steps:2}, taste:{sour:1,sweet:2,bitter:1,spicy:1,salty:1,smell:3.0,flavorScore:2.8,flavorGrade:'一般'}, @@ -307,7 +307,7 @@ const DISHES = [ texture:{hardness:2,sticky:3,crispy:1,smooth:3,elastic:2,textureScore:3.2,textureGrade:'一般'} }, {id:'DISH005',name:'糖醋里脊',icon:'🍖',category:'荤菜',tags:['高糖'],specs:[{name:'标准份',weight:180,price:14,isDefault:true},{name:'大份',weight:280,price:20}],method:'炸',meal:'午',allergen:'无',status:'停用',source:'味养创新',weightBasePrice:'7.78',weightVipPrice:'7.00',crowd:[{name:'成人',level:'推荐'},{name:'糖尿病人群',level:'慎食'},{name:'高血脂人群',level:'适量'}],crowdNote:'糖尿病人群慎食,含糖量高', - composition:[{name:'猪里脊肉',netType:'里脊丝',amount:120,pct:'66.7%',state:'净菜',main:true,allergen:'无',note:'—'},{name:'淀粉',netType:'淀粉糊',amount:20,pct:'11.1%',state:'原料',main:false,allergen:'无',note:'挂糊'},{name:'白糖',netType:'糖浆',amount:25,pct:'13.9%',state:'原料',main:false,allergen:'无',note:'糖醋汁'},{name:'食醋',netType:'调味汁',amount:15,pct:'8.3%',state:'原料',main:false,allergen:'无',note:'糖醋汁'}], + composition:[{name:'猪里脊肉',netType:'里脊丝',amount:120,pct:'66.7%',state:'净菜',type:'主材',allergen:'无',note:'—'},{name:'淀粉',netType:'淀粉糊',amount:20,pct:'11.1%',state:'原料',type:'辅材',allergen:'无',note:'挂糊'},{name:'白糖',netType:'糖浆',amount:25,pct:'13.9%',state:'原料',type:'调料',allergen:'无',note:'糖醋汁'},{name:'食醋',netType:'调味汁',amount:15,pct:'8.3%',state:'原料',type:'调料',allergen:'无',note:'糖醋汁'}], nutri:{calorie:420,protein:22.4,carb:38.2,fat:18.6,vitC:1.2,mineral:28,fiber:0.6,sodium:620,nutriGrade:'未达标',note:'铁1.8mg'}, cook:{mainMethod:'炸',subMethod:'炒',heat:'大火',duration:15,oil:50,salt:1,temp:'180',output:180,steps:7}, taste:{sour:4,sweet:4,bitter:1,spicy:1,salty:3,smell:4.0,flavorScore:4.2,flavorGrade:'良好'}, @@ -385,9 +385,9 @@ function renderBasic(d){ } function renderComposition(d){ - const rows = (d.composition||[]).map(c=>`${c.name}${c.netType}${c.amount}${c.pct}${c.main?'主料':'辅料'}${c.allergen}${c.note}`).join(''); + const rows = (d.composition||[]).map(c=>`${c.name}${c.netType}${c.amount}${c.pct}${c.type||'辅材'}${c.allergen}${c.note}`).join(''); return `
食材构成(共 ${(d.composition||[]).length} 项) 编辑
- ${rows}
食材名称净菜类型用量(g/份)占比(%)是否主料过敏原备注
`; + ${rows}
食材名称净菜类型用量(g/份)占比(%)食材类型过敏原备注
`; } function renderCook(d){ @@ -513,7 +513,7 @@ renderDetail();
-
+
diff --git a/web-admin/nutrition/din-recipe-mgmt.html b/web-admin/nutrition/din-recipe-mgmt.html index 67a6829..6a9bd81 100644 --- a/web-admin/nutrition/din-recipe-mgmt.html +++ b/web-admin/nutrition/din-recipe-mgmt.html @@ -97,6 +97,8 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} .btn-outline-danger:hover{background:#FFF1F0;} .btn-outline-primary{height:36px;padding:0 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);cursor:pointer;border:1px solid var(--primary);color:var(--primary);background:#fff;display:inline-flex;align-items:center;gap:6px;transition:all .2s;} .btn-outline-primary:hover{background:var(--primary-light);} +.sync-tag{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:var(--radius-sm);background:#F6FFED;border:1px solid #B7EB8F;color:var(--success);font-size:var(--font-sm);} +.sync-dot{width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px rgba(82,196,26,0.18);} .week-grid{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;border:1px solid var(--border);} .week-grid table{width:100%;border-collapse:collapse;table-layout:fixed;} @@ -319,6 +321,8 @@ tbody tr:hover td.td-actions{background:#F8FBFF;} + + @@ -810,6 +814,27 @@ function toggleSubgroup(header){header.parentElement.classList.toggle('open');} document.getElementById('btnResetWeek').addEventListener('click',resetWeek); })(); +/* ===== 同步至生产任务 ===== */ +(function(){ + var btn=document.getElementById('btnSyncProd'); + var tag=document.getElementById('syncTag'); + var synced=false; + btn.addEventListener('click',function(){ + synced=!synced; + if(synced){ + btn.className='btn-outline-danger'; + btn.innerHTML='↩ 撤销已同步的生产任务'; + tag.style.display='inline-flex'; + alert('已同步至生产任务'); + }else{ + btn.className='btn-outline-primary'; + btn.innerHTML='⇄ 同步至生产任务'; + tag.style.display='none'; + alert('已撤销同步的生产任务'); + } + }); +})(); + /* ===== 复用规划食谱弹窗逻辑 ===== */ (function(){ var RECIPES=[ diff --git a/web-admin/nutrition/prod-proc-combo.html b/web-admin/nutrition/prod-proc-combo.html index f47daa6..b7170e5 100644 --- a/web-admin/nutrition/prod-proc-combo.html +++ b/web-admin/nutrition/prod-proc-combo.html @@ -185,14 +185,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
净菜组配
- + - - - - - - + + + + + +
任务编号目标餐品餐品规格份数任务截止时间食材配方任务来源组配状态负责人操作类型完成时间操作
任务编号目标餐品餐品规格份数任务截止时间食材配方任务来源组配状态负责人操作类型终端设备完成时间操作
CMB-001宫保鸡丁标准份(300g)502026-05-20 11:00食材明细餐线已完成李组配设备自动2026-05-20 10:30:00食材溯源链路 查看视频 更多 ▾
CMB-002番茄炒蛋大份(500g)802026-05-20 11:00食材明细餐线已完成王组配设备自动2026-05-20 10:45:00食材溯源链路 查看视频 更多 ▾
CMB-003红烧肉标准份(300g)602026-05-20 11:30食材明细餐线组配中张组配人工录入食材溯源链路 查看视频 更多 ▾ 完成组配
CMB-004清蒸鱼标准份(500g)402026-05-20 12:00食材明细点餐待组配人工录入食材溯源链路 查看视频 更多 ▾ 开始组配
CMB-005炒时蔬小份(200g)202026-05-20 11:00食材明细录入已完成赵组配设备自动2026-05-20 10:50:00食材溯源链路 查看视频 更多 ▾
CMB-006豆腐小份(200g)352026-05-20 12:00食材明细点餐待组配人工录入食材溯源链路 查看视频 更多 ▾ 开始组配
CMB-001宫保鸡丁标准份(300g)502026-05-20 11:00食材明细餐线已完成李组配设备自动
智能组配秤
CMB-SCALE-001
2026-05-20 10:30:00食材溯源链路 查看视频 更多 ▾
CMB-002番茄炒蛋大份(500g)802026-05-20 11:00食材明细餐线已完成王组配设备自动
智能组配秤
CMB-SCALE-002
2026-05-20 10:45:00食材溯源链路 查看视频 更多 ▾
CMB-003红烧肉标准份(300g)602026-05-20 11:30食材明细餐线组配中张组配人工录入食材溯源链路 查看视频 更多 ▾ 完成组配
CMB-004清蒸鱼标准份(500g)402026-05-20 12:00食材明细点餐待组配人工录入食材溯源链路 查看视频 更多 ▾ 开始组配
CMB-005炒时蔬小份(200g)202026-05-20 11:00食材明细录入已完成赵组配设备自动
智能组配秤
CMB-SCALE-003
2026-05-20 10:50:00食材溯源链路 查看视频 更多 ▾
CMB-006豆腐小份(200g)352026-05-20 12:00食材明细点餐待组配人工录入食材溯源链路 查看视频 更多 ▾ 开始组配
diff --git a/web-admin/nutrition/sup-in-cleanin.html b/web-admin/nutrition/sup-in-cleanin.html index b30eb1a..7109055 100644 --- a/web-admin/nutrition/sup-in-cleanin.html +++ b/web-admin/nutrition/sup-in-cleanin.html @@ -200,23 +200,23 @@ tbody td.td-actions{white-space:nowrap;}
- + - + - + - + - + - +
入库单号操作类型溯源码食材名称净菜类型入库规格入库数量入库重量(kg)当前库存(kg)操作时间保质期至存储方式存放区域存放温度(℃)操作人操作入库单号操作类型终端设备溯源码食材名称净菜类型入库规格入库数量入库重量(kg)当前库存(kg)操作时间保质期至存储方式存放区域存放温度(℃)操作人操作
NC-IN-001设备自动NC-PROC-BOCA-20260415-01土豆土豆丝袋装/500g8643.031.02026-04-15 09:152026-04-17 09:15净菜柜8号柜-A01格口4.1李入库查看视频 出库明细 更多 ▾NC-IN-001设备自动
净菜入库秤
NC-IN-SCALE-001
NC-PROC-BOCA-20260415-01土豆土豆丝袋装/500g8643.031.02026-04-15 09:152026-04-17 09:15净菜柜8号柜-A01格口4.1李入库查看视频 出库明细 更多 ▾
NC-IN-002设备自动NC-PROC-HLUB-20260415-01土豆土豆片袋装/500g12060.047.52026-04-15 09:452026-04-18 09:45净菜柜8号柜-B03格口4.2王入库查看视频 出库明细 更多 ▾NC-IN-002设备自动
净菜入库秤
NC-IN-SCALE-002
NC-PROC-HLUB-20260415-01土豆土豆片袋装/500g12060.047.52026-04-15 09:452026-04-18 09:45净菜柜8号柜-B03格口4.2王入库查看视频 出库明细 更多 ▾
NC-IN-003人工录入NC-PROC-XGUO-20260415-01土豆土豆泥盒装/300g4814.49.02026-04-15 11:002026-04-17 11:00仓库A仓-蔬菜区-034.0李入库查看视频 出库明细 更多 ▾NC-IN-003人工录入NC-PROC-XGUO-20260415-01土豆土豆泥盒装/300g4814.49.02026-04-15 11:002026-04-17 11:00仓库A仓-蔬菜区-034.0李入库查看视频 出库明细 更多 ▾
NC-IN-004人工录入NC-PROC-BCAI-20260415-01白菜整棵散装/整棵7035.022.52026-04-15 11:302026-04-18 11:30仓库A仓-蔬菜区-043.8张入库查看视频 出库明细 更多 ▾NC-IN-004人工录入NC-PROC-BCAI-20260415-01白菜整棵散装/整棵7035.022.52026-04-15 11:302026-04-18 11:30仓库A仓-蔬菜区-043.8张入库查看视频 出库明细 更多 ▾
NC-IN-005设备自动NC-PROC-ZLRJ-20260415-01猪里脊丁(1.5cm)袋装/400g7630.418.82026-04-15 12:002026-04-16 12:00仓库B仓-肉类区-01-2.0王入库查看视频 出库明细 更多 ▾NC-IN-005设备自动
净菜入库秤
NC-IN-SCALE-003
NC-PROC-ZLRJ-20260415-01猪里脊丁(1.5cm)袋装/400g7630.418.82026-04-15 12:002026-04-16 12:00仓库B仓-肉类区-01-2.0王入库查看视频 出库明细 更多 ▾
diff --git a/web-admin/nutrition/sup-in-raw.html b/web-admin/nutrition/sup-in-raw.html index e3480fd..aedf27f 100644 --- a/web-admin/nutrition/sup-in-raw.html +++ b/web-admin/nutrition/sup-in-raw.html @@ -203,23 +203,23 @@ tbody tr:hover{background:#F8FBFF;}
- + - + - + - + - + - +
入库单号操作类型溯源码来源类型食材名称供应商入库规格入库数量入库重量(kg)入库时间存储方式存放区域操作人操作入库单号操作类型终端设备溯源码来源类型食材名称供应商入库规格入库数量入库重量(kg)入库时间存储方式存放区域操作人操作
IN-20260415-001设备自动ST-FH-FA01-VG-BOCA-286K-20260415-001自产菠菜A区蔬菜基地25kg/件12件2862026-04-15 10:30毛菜柜8号柜-A01格口张三丰查看视频 编辑 详情 删除IN-20260415-001设备自动
毛菜验收秤
RW-SCALE-001
ST-FH-FA01-VG-BOCA-286K-20260415-001自产菠菜A区蔬菜基地25kg/件12件2862026-04-15 10:30毛菜柜8号柜-A01格口张三丰查看视频 编辑 详情 删除
IN-20260415-002设备自动ST-EX-LY01-VG-BOCA-050K-20260415-002外采菠菜绿源蔬菜配送10kg/筐5筐502026-04-15 08:30毛菜柜8号柜-B03格口李三丰查看视频 编辑 详情 删除IN-20260415-002设备自动
毛菜验收秤
RW-SCALE-002
ST-EX-LY01-VG-BOCA-050K-20260415-002外采菠菜绿源蔬菜配送10kg/筐5筐502026-04-15 08:30毛菜柜8号柜-B03格口李三丰查看视频 编辑 详情 删除
IN-20260415-003人工录入ST-EX-XR01-MT-ZLRJ-080K-20260415-005外采猪里脊鲜肉直供公司20kg/箱4箱802026-04-15 09:15仓库B仓-肉类区-01王三丰查看视频 编辑 详情 删除IN-20260415-003人工录入ST-EX-XR01-MT-ZLRJ-080K-20260415-005外采猪里脊鲜肉直供公司20kg/箱4箱802026-04-15 09:15仓库B仓-肉类区-01王三丰查看视频 编辑 详情 删除
IN-20260415-004人工录入ST-EX-HS01-SF-CAYO-060K-20260414-001外采草鱼海鲜水产配送散装(kg)60kg602026-04-15 09:45仓库C仓-水产区-01李三丰查看视频 编辑 详情 删除IN-20260415-004人工录入ST-EX-HS01-SF-CAYO-060K-20260414-001外采草鱼海鲜水产配送散装(kg)60kg602026-04-15 09:45仓库C仓-水产区-01李三丰查看视频 编辑 详情 删除
IN-20260416-005设备自动ST-FH-FB01-VG-HLUB-420K-20260415-002自产胡萝卜B区根茎基地25kg/件17件4202026-04-16 11:00仓库A仓-蔬菜区-03张三丰查看视频 编辑 详情 删除IN-20260416-005设备自动
毛菜验收秤
RW-SCALE-003
ST-FH-FB01-VG-HLUB-420K-20260415-002自产胡萝卜B区根茎基地25kg/件17件4202026-04-16 11:00仓库A仓-蔬菜区-03张三丰查看视频 编辑 详情 删除
diff --git a/web-admin/nutrition/sup-pkg-label.html b/web-admin/nutrition/sup-pkg-label.html index efd06d9..75356d6 100644 --- a/web-admin/nutrition/sup-pkg-label.html +++ b/web-admin/nutrition/sup-pkg-label.html @@ -208,15 +208,15 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
- + - - - - - - + + + + + +
包装批次号溯源码净菜名称包装方式包装规格包装份数包装日期保质期至存放温度(℃)包装人终端设备操作包装批次号溯源码净菜名称包装方式包装规格包装份数包装日期保质期至存放温度(℃)包装人操作类型终端设备操作
BATCH-NC-20260415-01NC-PROC-BOCA-20260415-01土豆-土豆丝真空袋500202026-04-152026-04-174.1李包装PKG-T01查看视频 编辑 删除
BATCH-NC-20260415-01NC-PROC-BOCA-20260415-01土豆-土豆丝真空袋500202026-04-152026-04-174.1李包装PKG-T01查看视频 编辑 删除
BATCH-NC-20260415-02NC-PROC-HLUB-20260415-01土豆-土豆丝保鲜盒1000152026-04-152026-04-184.2王包装PKG-T01查看视频 编辑 删除
BATCH-NC-20260415-02NC-PROC-HLUB-20260415-01土豆-土豆丝保鲜盒1000152026-04-152026-04-184.2王包装PKG-T01查看视频 编辑 删除
BATCH-NC-20260415-03NC-PROC-XGUO-20260415-01土豆-土豆丝散装托盘200082026-04-152026-04-174.0张包装PKG-T02查看视频 编辑 删除
BATCH-NC-20260415-04NC-PROC-LAJP-20260415-01土豆-土豆丝真空袋1000122026-04-152026-04-174.3李包装PKG-T02查看视频 编辑 删除
BATCH-NC-20260415-01NC-PROC-BOCA-20260415-01土豆-土豆丝真空袋500202026-04-152026-04-174.1李包装设备自动
真空机-1号
PKG-T01
查看视频 编辑 删除
BATCH-NC-20260415-01NC-PROC-BOCA-20260415-01土豆-土豆丝真空袋500202026-04-152026-04-174.1李包装设备自动
真空机-1号
PKG-T01
查看视频 编辑 删除
BATCH-NC-20260415-02NC-PROC-HLUB-20260415-01土豆-土豆丝保鲜盒1000152026-04-152026-04-184.2王包装设备自动
真空机-1号
PKG-T01
查看视频 编辑 删除
BATCH-NC-20260415-02NC-PROC-HLUB-20260415-01土豆-土豆丝保鲜盒1000152026-04-152026-04-184.2王包装设备自动
真空机-1号
PKG-T01
查看视频 编辑 删除
BATCH-NC-20260415-03NC-PROC-XGUO-20260415-01土豆-土豆丝散装托盘200082026-04-152026-04-174.0张包装人工录入查看视频 编辑 删除
BATCH-NC-20260415-04NC-PROC-LAJP-20260415-01土豆-土豆丝真空袋1000122026-04-152026-04-174.3李包装设备自动
真空机-2号
PKG-T02
查看视频 编辑 删除
@@ -253,14 +253,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
- + - - - - - + + + + +
包装批次号包装餐品包装规格包装方式包装份数包含食材包装日期保质期至存放温度(℃)包装人终端设备操作类型操作包装批次号包装餐品包装规格包装方式包装份数包含食材包装日期保质期至存放温度(℃)包装人操作类型终端设备操作
BATCH-DH-20260415-01宫保鸡丁标准份(500g)冷鲜袋103种2026-04-152026-04-173.8赵配餐PKG-T03设备自动查看视频 编辑 删除
BATCH-DH-20260415-01宫保鸡丁标准份(500g)冷鲜袋103种2026-04-152026-04-173.8赵配餐PKG-T03设备自动查看视频 编辑 删除
BATCH-DH-20260415-02清蒸鱼标准份(500g)保鲜盒82种2026-04-152026-04-173.5陈配餐PKG-T03人工录入查看视频 编辑 删除
BATCH-DH-20260415-03蒜蓉菠菜标准份(500g)冷鲜袋122种2026-04-152026-04-174.0陈配餐PKG-T04人工录入查看视频 编辑 删除
BATCH-DH-20260415-04炒胡萝卜大份(800g)保鲜盒62种2026-04-152026-04-174.2赵配餐PKG-T04设备自动查看视频 编辑 删除
BATCH-DH-20260415-01宫保鸡丁标准份(500g)冷鲜袋103种2026-04-152026-04-173.8赵配餐设备自动
封口机-1号
PKG-T03
查看视频 编辑 删除
BATCH-DH-20260415-01宫保鸡丁标准份(500g)冷鲜袋103种2026-04-152026-04-173.8赵配餐设备自动
封口机-1号
PKG-T03
查看视频 编辑 删除
BATCH-DH-20260415-02清蒸鱼标准份(500g)保鲜盒82种2026-04-152026-04-173.5陈配餐人工录入查看视频 编辑 删除
BATCH-DH-20260415-03蒜蓉菠菜标准份(500g)冷鲜袋122种2026-04-152026-04-174.0陈配餐人工录入查看视频 编辑 删除
BATCH-DH-20260415-04炒胡萝卜大份(800g)保鲜盒62种2026-04-152026-04-174.2赵配餐设备自动
封口机-2号
PKG-T04
查看视频 编辑 删除