feat: 更新卫生供应存储方式联动
This commit is contained in:
@@ -1,5 +1,23 @@
|
||||
# 营养用餐管理端 CHANGELOG
|
||||
|
||||
## [2026-06-15] feat: 卫生供应仓储入库页面新增存储方式与区域联动
|
||||
|
||||
- **`sup-warehouse.html`**:
|
||||
- 在库库存列表新增「存储方式」列,支持毛菜柜 / 净菜柜 / 仓库三类展示。
|
||||
- 柜类数据的「所在区域」按明细格式展示为「柜号-格口」,仓库类保持仓区格式。
|
||||
- 搜索区新增「存储方式」筛选,「所在区域」根据存储方式联动到柜子/仓区级别。
|
||||
- 库存详情抽屉同步增加「存储方式」字段,修正字段取值索引。
|
||||
- **`sup-in-raw.html`**:
|
||||
- 毛菜入库列表新增「存储方式」列,支持毛菜柜 / 仓库两种类型。
|
||||
- 柜类存放区域按「柜号-格口」格式展示,仓库类保持仓区格式。
|
||||
- 搜索区新增「存储方式」「所在区域」筛选,区域下拉按存储方式联动到柜子/仓区级别。
|
||||
- 手动入库弹窗新增「存储方式」字段,柜类场景下所在区域下钻到格口级别,仓库场景下选择仓区。
|
||||
- **`sup-in-cleanin.html`**:
|
||||
- 净菜入库列表新增「存储方式」列,支持净菜柜 / 仓库两种类型。
|
||||
- 柜类存放区域按「柜号-格口」格式展示,仓库类保持仓区格式。
|
||||
- 搜索区新增「存储方式」「所在区域」筛选,区域下拉按存储方式联动到柜子/仓区级别。
|
||||
- 新增净菜入库弹窗新增「存储方式」字段,柜类场景下所在区域下钻到格口级别,仓库场景下选择仓区。
|
||||
|
||||
## [2026-06-10] feat: 溯源总览菜单重构——食材溯源 / 餐品溯源 双菜单分离
|
||||
|
||||
- **侧边栏菜单**:原"溯源查询 / 链路可视化"重构为"食材溯源 / 餐品溯源"两个一级菜单。
|
||||
|
||||
@@ -180,6 +180,12 @@ tbody td.td-actions{white-space:nowrap;}
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item"><label>食材名称</label><input class="filter-input" type="text" placeholder="请输入食材名称"></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" id="cleanStorageTypeFilter" onchange="updateCleanAreaFilterOptions()"><option>全部</option><option>净菜柜</option><option>仓库</option></select>
|
||||
</div>
|
||||
<div class="filter-item"><label>所在区域</label>
|
||||
<select class="filter-select" id="cleanAreaFilter"></select>
|
||||
</div>
|
||||
<div class="filter-item"><label>日期范围</label><input class="filter-input" type="date"></div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
@@ -194,23 +200,23 @@ tbody td.td-actions{white-space:nowrap;}
|
||||
<div class="table-card__content">
|
||||
<table>
|
||||
<thead><tr>
|
||||
<th>入库单号</th><th>操作类型</th><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><th>操作类型</th><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>NC-IN-001</td><td><span class="tag tag-blue">设备自动</span></td><td>NC-PROC-BOCA-20260415-01</td><td>土豆</td><td>土豆丝</td><td>袋装/500g</td><td>86</td><td>43.0</td><td>31.0</td><td>2026-04-15 09:15</td><td>2026-04-17 09:15</td><td>A仓-蔬菜区-01</td><td>4.1</td><td>李入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-001')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
<td>NC-IN-001</td><td><span class="tag tag-blue">设备自动</span></td><td>NC-PROC-BOCA-20260415-01</td><td>土豆</td><td>土豆丝</td><td>袋装/500g</td><td>86</td><td>43.0</td><td>31.0</td><td>2026-04-15 09:15</td><td>2026-04-17 09:15</td><td><span class="tag tag-blue">净菜柜</span></td><td>8号柜-A01格口</td><td>4.1</td><td>李入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-001')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>NC-IN-002</td><td><span class="tag tag-blue">设备自动</span></td><td>NC-PROC-HLUB-20260415-01</td><td>土豆</td><td>土豆片</td><td>袋装/500g</td><td>120</td><td>60.0</td><td>47.5</td><td>2026-04-15 09:45</td><td>2026-04-18 09:45</td><td>A仓-蔬菜区-02</td><td>4.2</td><td>王入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-002')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
<td>NC-IN-002</td><td><span class="tag tag-blue">设备自动</span></td><td>NC-PROC-HLUB-20260415-01</td><td>土豆</td><td>土豆片</td><td>袋装/500g</td><td>120</td><td>60.0</td><td>47.5</td><td>2026-04-15 09:45</td><td>2026-04-18 09:45</td><td><span class="tag tag-blue">净菜柜</span></td><td>8号柜-B03格口</td><td>4.2</td><td>王入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-002')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>NC-IN-003</td><td><span class="tag tag-green">人工录入</span></td><td>NC-PROC-XGUO-20260415-01</td><td>土豆</td><td>土豆泥</td><td>盒装/300g</td><td>48</td><td>14.4</td><td>9.0</td><td>2026-04-15 11:00</td><td>2026-04-17 11:00</td><td>A仓-蔬菜区-03</td><td>4.0</td><td>李入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-003')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
<td>NC-IN-003</td><td><span class="tag tag-green">人工录入</span></td><td>NC-PROC-XGUO-20260415-01</td><td>土豆</td><td>土豆泥</td><td>盒装/300g</td><td>48</td><td>14.4</td><td>9.0</td><td>2026-04-15 11:00</td><td>2026-04-17 11:00</td><td><span class="tag tag-gray">仓库</span></td><td>A仓-蔬菜区-03</td><td>4.0</td><td>李入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-003')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>NC-IN-004</td><td><span class="tag tag-green">人工录入</span></td><td>NC-PROC-BCAI-20260415-01</td><td>白菜</td><td>整棵</td><td>散装/整棵</td><td>70</td><td>35.0</td><td>22.5</td><td>2026-04-15 11:30</td><td>2026-04-18 11:30</td><td>A仓-蔬菜区-04</td><td>3.8</td><td>张入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-004')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
<td>NC-IN-004</td><td><span class="tag tag-green">人工录入</span></td><td>NC-PROC-BCAI-20260415-01</td><td>白菜</td><td>整棵</td><td>散装/整棵</td><td>70</td><td>35.0</td><td>22.5</td><td>2026-04-15 11:30</td><td>2026-04-18 11:30</td><td><span class="tag tag-gray">仓库</span></td><td>A仓-蔬菜区-04</td><td>3.8</td><td>张入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-004')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>NC-IN-005</td><td><span class="tag tag-blue">设备自动</span></td><td>NC-PROC-ZLRJ-20260415-01</td><td>猪里脊</td><td>丁(1.5cm)</td><td>袋装/400g</td><td>76</td><td>30.4</td><td>18.8</td><td>2026-04-15 12:00</td><td>2026-04-16 12:00</td><td>B仓-肉类区-01</td><td>-2.0</td><td>王入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-005')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
<td>NC-IN-005</td><td><span class="tag tag-blue">设备自动</span></td><td>NC-PROC-ZLRJ-20260415-01</td><td>猪里脊</td><td>丁(1.5cm)</td><td>袋装/400g</td><td>76</td><td>30.4</td><td>18.8</td><td>2026-04-15 12:00</td><td>2026-04-16 12:00</td><td><span class="tag tag-gray">仓库</span></td><td>B仓-肉类区-01</td><td>-2.0</td><td>王入库</td><td class="td-actions"><span class="link" onclick="openVideoModal()">查看视频</span> <span class="link" onclick="openOutModal('NC-IN-005')">出库明细</span> <span class="action-more"><span class="more-btn">更多 ▾</span><div class="dropdown"><a href="javascript:;" onclick="showDetail(this)">详情</a><a href="javascript:;" onclick="openModal()">编辑</a><a href="javascript:;" class="danger" onclick="if(confirm('确认删除该记录?')){}">删除</a></div></span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -244,7 +250,8 @@ tbody td.td-actions{white-space:nowrap;}
|
||||
<div class="form-item"><label>入库重量(kg)<span class="required">*</span></label><input id="f-weight" type="number" step="0.1" placeholder="请输入入库重量"></div>
|
||||
<div class="form-item"><label>操作时间<span class="required">*</span></label><input type="datetime-local"></div>
|
||||
<div class="form-item"><label>保质期至</label><input type="datetime-local"></div>
|
||||
<div class="form-item"><label>存放区域<span class="required">*</span></label><input type="text" placeholder="请输入存放区域"></div>
|
||||
<div class="form-item"><label>存储方式<span class="required">*</span></label><select id="cleanStorageTypeModal" onchange="updateCleanAreaModalOptions()"><option>请选择</option><option>净菜柜</option><option>仓库</option></select></div>
|
||||
<div class="form-item"><label>所在区域<span class="required">*</span></label><select id="cleanAreaModal"><option>请选择存储方式</option></select></div>
|
||||
<div class="form-item"><label>存放温度(℃)</label><input type="number" step="0.1" placeholder="请输入温度"></div>
|
||||
<div class="form-item"><label>操作人<span class="required">*</span></label><input type="text" placeholder="请输入操作人"></div>
|
||||
</div>
|
||||
@@ -280,6 +287,30 @@ tbody td.td-actions{white-space:nowrap;}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var cleanAreaFilterOptions={
|
||||
'净菜柜':['8号柜','9号柜','10号柜'],
|
||||
'仓库':['A仓-蔬菜区-01','A仓-蔬菜区-02','A仓-蔬菜区-03','A仓-蔬菜区-04','B仓-肉类区-01','B仓-肉类区-02','B仓-肉类区-03','C仓-水产区-01','C仓-水产区-02']
|
||||
};
|
||||
var cleanAreaModalOptions={
|
||||
'净菜柜':['8号柜-A01格口','8号柜-B03格口','9号柜-A02格口','10号柜-C01格口'],
|
||||
'仓库':['A仓-蔬菜区-01','A仓-蔬菜区-02','A仓-蔬菜区-03','A仓-蔬菜区-04','B仓-肉类区-01','B仓-肉类区-02','B仓-肉类区-03','C仓-水产区-01','C仓-水产区-02']
|
||||
};
|
||||
function renderSelectOptions(selectEl,placeholder,options){
|
||||
if(!selectEl)return;
|
||||
selectEl.innerHTML='<option>'+placeholder+'</option>'+options.map(function(item){return '<option>'+item+'</option>';}).join('');
|
||||
}
|
||||
function updateCleanAreaFilterOptions(){
|
||||
var storageType=document.getElementById('cleanStorageTypeFilter').value;
|
||||
var options=storageType==='全部'
|
||||
? cleanAreaFilterOptions['净菜柜'].concat(cleanAreaFilterOptions['仓库'])
|
||||
: (cleanAreaFilterOptions[storageType]||[]);
|
||||
renderSelectOptions(document.getElementById('cleanAreaFilter'),'全部',options);
|
||||
}
|
||||
function updateCleanAreaModalOptions(){
|
||||
var storageType=document.getElementById('cleanStorageTypeModal').value;
|
||||
var options=cleanAreaModalOptions[storageType]||[];
|
||||
renderSelectOptions(document.getElementById('cleanAreaModal'),'请选择',options);
|
||||
}
|
||||
/* 右侧抽屉组件 */
|
||||
var Drawer={
|
||||
open:function(title,bodyHtml){
|
||||
@@ -319,6 +350,7 @@ function openOutModal(id){document.getElementById('outModalOverlay').style.displ
|
||||
function closeOutModal(){document.getElementById('outModalOverlay').style.display='none';}
|
||||
document.getElementById('modalOverlay').addEventListener('click',function(e){if(e.target===this)closeModal();});
|
||||
document.getElementById('outModalOverlay').addEventListener('click',function(e){if(e.target===this)closeOutModal();});
|
||||
updateCleanAreaFilterOptions();
|
||||
|
||||
/* 从净菜加工页跳转过来时,自动打开新增弹窗并填充数据 */
|
||||
(function(){
|
||||
|
||||
@@ -174,6 +174,12 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item"><label>溯源码</label><input class="filter-input" type="text" placeholder="请输入溯源码"></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" id="rawStorageTypeFilter" onchange="updateRawAreaFilterOptions()"><option>全部</option><option>毛菜柜</option><option>仓库</option></select>
|
||||
</div>
|
||||
<div class="filter-item"><label>所在区域</label>
|
||||
<select class="filter-select" id="rawAreaFilter"></select>
|
||||
</div>
|
||||
<div class="filter-item"><label>操作类型</label>
|
||||
<select class="filter-select"><option>全部</option><option>设备自动</option><option>人工录入</option></select>
|
||||
</div>
|
||||
@@ -197,23 +203,23 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
<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>入库重量(kg)</th><th>入库时间</th><th>存放区域</th><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><th>存放区域</th><th>操作人</th><th>操作</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>IN-20260415-001</td><td><span class="tag tag-green">设备自动</span></td><td>ST-FH-FA01-VG-BOCA-286K-20260415-001</td><td><span class="tag tag-blue">自产</span></td><td>菠菜</td><td>A区蔬菜基地</td><td>25kg/件</td><td>12件</td><td>286</td><td>2026-04-15 10:30</td><td>A仓-蔬菜区-01</td><td>张三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
<td>IN-20260415-001</td><td><span class="tag tag-green">设备自动</span></td><td>ST-FH-FA01-VG-BOCA-286K-20260415-001</td><td><span class="tag tag-blue">自产</span></td><td>菠菜</td><td>A区蔬菜基地</td><td>25kg/件</td><td>12件</td><td>286</td><td>2026-04-15 10:30</td><td><span class="tag tag-green">毛菜柜</span></td><td>8号柜-A01格口</td><td>张三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IN-20260415-002</td><td><span class="tag tag-green">设备自动</span></td><td>ST-EX-LY01-VG-BOCA-050K-20260415-002</td><td><span class="tag tag-gray">外采</span></td><td>菠菜</td><td>绿源蔬菜配送</td><td>10kg/筐</td><td>5筐</td><td>50</td><td>2026-04-15 08:30</td><td>A仓-蔬菜区-02</td><td>李三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
<td>IN-20260415-002</td><td><span class="tag tag-green">设备自动</span></td><td>ST-EX-LY01-VG-BOCA-050K-20260415-002</td><td><span class="tag tag-gray">外采</span></td><td>菠菜</td><td>绿源蔬菜配送</td><td>10kg/筐</td><td>5筐</td><td>50</td><td>2026-04-15 08:30</td><td><span class="tag tag-green">毛菜柜</span></td><td>8号柜-B03格口</td><td>李三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IN-20260415-003</td><td><span class="tag tag-orange">人工录入</span></td><td>ST-EX-XR01-MT-ZLRJ-080K-20260415-005</td><td><span class="tag tag-gray">外采</span></td><td>猪里脊</td><td>鲜肉直供公司</td><td>20kg/箱</td><td>4箱</td><td>80</td><td>2026-04-15 09:15</td><td>B仓-肉类区-01</td><td>王三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
<td>IN-20260415-003</td><td><span class="tag tag-orange">人工录入</span></td><td>ST-EX-XR01-MT-ZLRJ-080K-20260415-005</td><td><span class="tag tag-gray">外采</span></td><td>猪里脊</td><td>鲜肉直供公司</td><td>20kg/箱</td><td>4箱</td><td>80</td><td>2026-04-15 09:15</td><td><span class="tag tag-gray">仓库</span></td><td>B仓-肉类区-01</td><td>王三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IN-20260415-004</td><td><span class="tag tag-orange">人工录入</span></td><td>ST-EX-HS01-SF-CAYO-060K-20260414-001</td><td><span class="tag tag-gray">外采</span></td><td>草鱼</td><td>海鲜水产配送</td><td>散装(kg)</td><td>60kg</td><td>60</td><td>2026-04-15 09:45</td><td>C仓-水产区-01</td><td>李三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
<td>IN-20260415-004</td><td><span class="tag tag-orange">人工录入</span></td><td>ST-EX-HS01-SF-CAYO-060K-20260414-001</td><td><span class="tag tag-gray">外采</span></td><td>草鱼</td><td>海鲜水产配送</td><td>散装(kg)</td><td>60kg</td><td>60</td><td>2026-04-15 09:45</td><td><span class="tag tag-gray">仓库</span></td><td>C仓-水产区-01</td><td>李三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IN-20260416-005</td><td><span class="tag tag-green">设备自动</span></td><td>ST-FH-FB01-VG-HLUB-420K-20260415-002</td><td><span class="tag tag-blue">自产</span></td><td>胡萝卜</td><td>B区根茎基地</td><td>25kg/件</td><td>17件</td><td>420</td><td>2026-04-16 11:00</td><td>A仓-蔬菜区-03</td><td>张三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
<td>IN-20260416-005</td><td><span class="tag tag-green">设备自动</span></td><td>ST-FH-FB01-VG-HLUB-420K-20260415-002</td><td><span class="tag tag-blue">自产</span></td><td>胡萝卜</td><td>B区根茎基地</td><td>25kg/件</td><td>17件</td><td>420</td><td>2026-04-16 11:00</td><td><span class="tag tag-gray">仓库</span></td><td>A仓-蔬菜区-03</td><td>张三丰</td><td class="td-actions"><span class="link" onclick="openVideo()">查看视频</span> <span class="link">编辑</span> <span class="link" onclick="showDetail(this)">详情</span> <span class="link" style="color:var(--danger)">删除</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -246,7 +252,8 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
<div class="form-item"><label>入库数量<span class="required">*</span></label><input type="text" placeholder="请输入入库数量"></div>
|
||||
<div class="form-item"><label>入库重量(kg)<span class="required">*</span></label><input type="number" placeholder="请输入入库重量"></div>
|
||||
<div class="form-item"><label>入库时间</label><input type="date"></div>
|
||||
<div class="form-item"><label>存放区域<span class="required">*</span></label><select><option>请选择</option><option>A仓-蔬菜区-01</option><option>A仓-蔬菜区-02</option><option>A仓-蔬菜区-03</option><option>A仓-蔬菜区-04</option><option>B仓-肉类区-01</option><option>B仓-肉类区-02</option><option>B仓-肉类区-03</option><option>C仓-水产区-01</option><option>C仓-水产区-02</option></select></div>
|
||||
<div class="form-item"><label>存储方式<span class="required">*</span></label><select id="rawStorageTypeModal" onchange="updateRawAreaModalOptions()"><option>请选择</option><option>毛菜柜</option><option>仓库</option></select></div>
|
||||
<div class="form-item"><label>所在区域<span class="required">*</span></label><select id="rawAreaModal"><option>请选择存储方式</option></select></div>
|
||||
<div class="form-item"><label>操作人<span class="required">*</span></label><input type="text" placeholder="请输入操作人"></div>
|
||||
<div class="form-item full"><label>备注</label><textarea placeholder="请输入备注信息"></textarea></div>
|
||||
</div>
|
||||
@@ -296,6 +303,30 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var rawAreaFilterOptions={
|
||||
'毛菜柜':['8号柜','9号柜','10号柜'],
|
||||
'仓库':['A仓-蔬菜区-01','A仓-蔬菜区-02','A仓-蔬菜区-03','A仓-蔬菜区-04','B仓-肉类区-01','B仓-肉类区-02','B仓-肉类区-03','C仓-水产区-01','C仓-水产区-02']
|
||||
};
|
||||
var rawAreaModalOptions={
|
||||
'毛菜柜':['8号柜-A01格口','8号柜-B03格口','9号柜-A02格口','10号柜-C01格口'],
|
||||
'仓库':['A仓-蔬菜区-01','A仓-蔬菜区-02','A仓-蔬菜区-03','A仓-蔬菜区-04','B仓-肉类区-01','B仓-肉类区-02','B仓-肉类区-03','C仓-水产区-01','C仓-水产区-02']
|
||||
};
|
||||
function renderSelectOptions(selectEl,placeholder,options){
|
||||
if(!selectEl)return;
|
||||
selectEl.innerHTML='<option>'+placeholder+'</option>'+options.map(function(item){return '<option>'+item+'</option>';}).join('');
|
||||
}
|
||||
function updateRawAreaFilterOptions(){
|
||||
var storageType=document.getElementById('rawStorageTypeFilter').value;
|
||||
var options=storageType==='全部'
|
||||
? rawAreaFilterOptions['毛菜柜'].concat(rawAreaFilterOptions['仓库'])
|
||||
: (rawAreaFilterOptions[storageType]||[]);
|
||||
renderSelectOptions(document.getElementById('rawAreaFilter'),'全部',options);
|
||||
}
|
||||
function updateRawAreaModalOptions(){
|
||||
var storageType=document.getElementById('rawStorageTypeModal').value;
|
||||
var options=rawAreaModalOptions[storageType]||[];
|
||||
renderSelectOptions(document.getElementById('rawAreaModal'),'请选择',options);
|
||||
}
|
||||
function openModal(){document.getElementById('modalOverlay').style.display='flex';}
|
||||
function closeModal(){document.getElementById('modalOverlay').style.display='none';}
|
||||
document.getElementById('modalOverlay').addEventListener('click',function(e){if(e.target===this)closeModal();});
|
||||
@@ -334,6 +365,7 @@ function showDetail(el){
|
||||
var title='入库详情 — '+tds[0].textContent;
|
||||
Drawer.open(title,html);
|
||||
}
|
||||
updateRawAreaFilterOptions();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -196,8 +196,11 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
<div class="filter-item"><label>物品类型</label>
|
||||
<select class="filter-select"><option>全部</option><option>毛菜</option><option>净菜</option></select>
|
||||
</div>
|
||||
<div class="filter-item"><label>存储方式</label>
|
||||
<select class="filter-select" id="storageTypeFilter" onchange="updateAreaOptions()"><option>全部</option><option>毛菜柜</option><option>净菜柜</option><option>仓库</option></select>
|
||||
</div>
|
||||
<div class="filter-item"><label>所在区域</label>
|
||||
<select class="filter-select"><option>全部</option><option>A仓-蔬菜区-01</option><option>A仓-蔬菜区-02</option><option>A仓-蔬菜区-03</option><option>A仓-蔬菜区-04</option><option>B仓-肉类区-01</option><option>B仓-肉类区-02</option><option>B仓-肉类区-03</option><option>C仓-水产区-01</option><option>C仓-水产区-02</option></select>
|
||||
<select class="filter-select" id="areaFilter"></select>
|
||||
</div>
|
||||
<div class="filter-item"><label>库存状态</label>
|
||||
<select class="filter-select"><option>全部</option><option>充足</option><option>不足</option></select>
|
||||
@@ -217,14 +220,14 @@ tbody tr:hover td.td-actions{background:#F8FBFF;}
|
||||
<div class="table-card__content">
|
||||
<table>
|
||||
<thead><tr>
|
||||
<th>食材名称</th><th>物品类型</th><th>入库单号</th><th>所在区域</th><th>入库量(kg)</th><th>已出量(kg)</th><th>在库量(kg)</th><th>入库时间</th><th>保质期至</th><th>临期预警</th><th>库存状态</th><th>操作</th>
|
||||
<th>食材名称</th><th>物品类型</th><th>入库单号</th><th>存储方式</th><th>所在区域</th><th>入库量(kg)</th><th>已出量(kg)</th><th>在库量(kg)</th><th>入库时间</th><th>保质期至</th><th>临期预警</th><th>库存状态</th><th>操作</th>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr><td>菠菜</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260415-001</td><td>A仓-蔬菜区-01</td><td>286</td><td>61</td><td>225</td><td>2026-04-15 10:30</td><td>2026-04-18</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-green">充足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>菠菜</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260415-002</td><td>A仓-蔬菜区-02</td><td>50</td><td>20</td><td>30</td><td>2026-04-15 08:30</td><td>2026-04-18</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-green">充足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>猪里脊</td><td><span class="tag tag-blue">净菜</span></td><td>IN-20260415-003</td><td>B仓-肉类区-01</td><td>80</td><td>40</td><td>40</td><td>2026-04-15 09:15</td><td>2026-04-19</td><td><span class="tag tag-orange">临期</span></td><td><span class="tag tag-orange">不足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>草鱼</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260415-004</td><td>C仓-水产区-01</td><td>60</td><td>0</td><td>60</td><td>2026-04-15 09:45</td><td>2026-04-15</td><td><span class="tag tag-red">已过期</span></td><td><span class="tag tag-orange">不足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>胡萝卜</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260416-005</td><td>A仓-蔬菜区-03</td><td>420</td><td>0</td><td>420</td><td>2026-04-16 11:00</td><td>2026-04-23</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-green">充足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>菠菜</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260415-001</td><td><span class="tag tag-green">毛菜柜</span></td><td>8号柜-A01格口</td><td>286</td><td>61</td><td>225</td><td>2026-04-15 10:30</td><td>2026-04-18</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-green">充足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>菠菜</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260415-002</td><td><span class="tag tag-green">毛菜柜</span></td><td>8号柜-B03格口</td><td>50</td><td>20</td><td>30</td><td>2026-04-15 08:30</td><td>2026-04-18</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-green">充足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>猪里脊</td><td><span class="tag tag-blue">净菜</span></td><td>IN-20260415-003</td><td><span class="tag tag-blue">净菜柜</span></td><td>3号净菜柜-C02格口</td><td>80</td><td>40</td><td>40</td><td>2026-04-15 09:15</td><td>2026-04-19</td><td><span class="tag tag-orange">临期</span></td><td><span class="tag tag-orange">不足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>草鱼</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260415-004</td><td><span class="tag tag-gray">仓库</span></td><td>C仓-水产区-01</td><td>60</td><td>0</td><td>60</td><td>2026-04-15 09:45</td><td>2026-04-15</td><td><span class="tag tag-red">已过期</span></td><td><span class="tag tag-orange">不足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
<tr><td>胡萝卜</td><td><span class="tag tag-green">毛菜</span></td><td>IN-20260416-005</td><td><span class="tag tag-gray">仓库</span></td><td>A仓-蔬菜区-03</td><td>420</td><td>0</td><td>420</td><td>2026-04-16 11:00</td><td>2026-04-23</td><td><span class="tag tag-green">正常</span></td><td><span class="tag tag-green">充足</span></td><td class="td-actions"><span class="link">编辑</span> <span class="link" onclick="showStockDetail(this)">详情</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -391,6 +394,24 @@ 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));
|
||||
}
|
||||
|
||||
/* 在库库存筛选联动:所在区域筛选只到柜子或仓区级别 */
|
||||
var storageAreaOptions={
|
||||
'毛菜柜':['8号柜','9号柜','10号柜'],
|
||||
'净菜柜':['3号净菜柜','5号净菜柜','6号净菜柜'],
|
||||
'仓库':['A仓-蔬菜区-01','A仓-蔬菜区-02','A仓-蔬菜区-03','A仓-蔬菜区-04','B仓-肉类区-01','B仓-肉类区-02','B仓-肉类区-03','C仓-水产区-01','C仓-水产区-02']
|
||||
};
|
||||
function updateAreaOptions(){
|
||||
var storageSelect=document.getElementById('storageTypeFilter');
|
||||
var areaSelect=document.getElementById('areaFilter');
|
||||
if(!storageSelect||!areaSelect)return;
|
||||
var storageType=storageSelect.value;
|
||||
var options=storageType==='全部'
|
||||
? storageAreaOptions['毛菜柜'].concat(storageAreaOptions['净菜柜'],storageAreaOptions['仓库'])
|
||||
: storageAreaOptions[storageType]||[];
|
||||
areaSelect.innerHTML='<option>全部</option>'+options.map(function(item){return '<option>'+item+'</option>';}).join('');
|
||||
}
|
||||
updateAreaOptions();
|
||||
// 仓库档案弹窗
|
||||
function openWhModal(){document.getElementById('whModal').style.display='flex';}
|
||||
function closeWhModal(){document.getElementById('whModal').style.display='none';}
|
||||
@@ -428,14 +449,15 @@ function showStockDetail(el){
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">食材名称</span><span class="drawer-field__value">'+g(0)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">物品类型</span><span class="drawer-field__value">'+h(1)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">入库单号</span><span class="drawer-field__value">'+g(2)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">所在区域</span><span class="drawer-field__value">'+g(3)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">入库量(kg)</span><span class="drawer-field__value">'+g(4)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">已出量(kg)</span><span class="drawer-field__value">'+g(5)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">在库量(kg)</span><span class="drawer-field__value">'+g(6)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">入库时间</span><span class="drawer-field__value">'+g(7)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">保质期至</span><span class="drawer-field__value">'+g(8)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">临期预警</span><span class="drawer-field__value">'+h(9)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">库存状态</span><span class="drawer-field__value">'+h(10)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">存储方式</span><span class="drawer-field__value">'+h(3)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">所在区域</span><span class="drawer-field__value">'+g(4)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">入库量(kg)</span><span class="drawer-field__value">'+g(5)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">已出量(kg)</span><span class="drawer-field__value">'+g(6)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">在库量(kg)</span><span class="drawer-field__value">'+g(7)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">入库时间</span><span class="drawer-field__value">'+g(8)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">保质期至</span><span class="drawer-field__value">'+g(9)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">临期预警</span><span class="drawer-field__value">'+h(10)+'</span></div>'
|
||||
+'<div class="drawer-field"><span class="drawer-field__label">库存状态</span><span class="drawer-field__value">'+h(11)+'</span></div>'
|
||||
+'</div></div>';
|
||||
Drawer.open('库存详情 — '+g(0)+' ('+g(2)+')',html);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user