ui(malaysia): 입출고 3분할 레이아웃 — 좌(옵션)·중(낱개)·우(세트)
종류/날짜/메모+적용버튼을 좌측 카드로, 낱개·세트 그리드를 중/우로 배치 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -13,38 +13,45 @@
|
|||||||
{% set active_tab = 'move' %}
|
{% set active_tab = 'move' %}
|
||||||
{% include "malaysia/_nav.html" %}
|
{% include "malaysia/_nav.html" %}
|
||||||
|
|
||||||
<!-- 낱개 + 세트 한 화면 일괄 (버튼 하나) -->
|
<!-- 3분할: 좌(옵션) · 중(낱개) · 우(세트), 버튼 하나 -->
|
||||||
<form method="post" action="/malaysia/movements/apply">
|
<form method="post" action="/malaysia/movements/apply">
|
||||||
<input type="hidden" name="warehouse_code" value="{{ selected_wh }}" />
|
<input type="hidden" name="warehouse_code" value="{{ selected_wh }}" />
|
||||||
|
|
||||||
<div class="erp-card">
|
<div style="display:grid;grid-template-columns:280px 1fr 1fr;gap:16px;align-items:start;">
|
||||||
<div style="display:flex;gap:10px;flex-wrap:wrap;align-items:end;">
|
|
||||||
<label class="erp-field"><span>이동 종류 (낱개)</span>
|
|
||||||
<select class="erp-select" name="movement_type" required>
|
|
||||||
<option value="IN">IN (입고)</option>
|
|
||||||
<option value="OUT">OUT (출고)</option>
|
|
||||||
<option value="ADJUST">ADJUST (조정 ±)</option>
|
|
||||||
</select></label>
|
|
||||||
<label class="erp-field"><span>날짜</span>
|
|
||||||
<input class="erp-input" type="date" name="movement_date" value="{{ today }}" required /></label>
|
|
||||||
<label class="erp-field" style="flex:1 1 240px"><span>메모</span>
|
|
||||||
<input class="erp-input" type="text" name="memo" /></label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin-top:12px;">
|
<!-- 좌: 종류 / 날짜 / 메모 -->
|
||||||
<!-- 좌: 낱개 -->
|
<div class="erp-card">
|
||||||
|
<div class="cpg-card-head"><h2>등록 옵션</h2></div>
|
||||||
|
<div style="display:flex;flex-direction:column;gap:10px;margin-top:8px;">
|
||||||
|
<label class="erp-field"><span>이동 종류 (낱개)</span>
|
||||||
|
<select class="erp-select" name="movement_type" required>
|
||||||
|
<option value="IN">IN (입고)</option>
|
||||||
|
<option value="OUT">OUT (출고)</option>
|
||||||
|
<option value="ADJUST">ADJUST (조정 ±)</option>
|
||||||
|
</select></label>
|
||||||
|
<label class="erp-field"><span>날짜</span>
|
||||||
|
<input class="erp-input" type="date" name="movement_date" value="{{ today }}" required /></label>
|
||||||
|
<label class="erp-field"><span>메모</span>
|
||||||
|
<input class="erp-input" type="text" name="memo" /></label>
|
||||||
|
</div>
|
||||||
|
<p class="erp-muted" style="margin-top:10px;">세트는 항상 <b>출고(OUT)</b> · BOM 분해. 빈칸/0 제외.</p>
|
||||||
|
<div class="erp-page-actions" style="margin-top:12px;">
|
||||||
|
<button type="submit" class="erp-btn erp-btn-primary">일괄 적용</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 중: 낱개 -->
|
||||||
<div class="erp-card">
|
<div class="erp-card">
|
||||||
<div class="cpg-card-head"><h2>낱개 아이템</h2></div>
|
<div class="cpg-card-head"><h2>낱개 아이템</h2></div>
|
||||||
<div class="erp-table-wrap" style="margin-top:8px;">
|
<div class="erp-table-wrap" style="margin-top:8px;">
|
||||||
<table class="erp-table">
|
<table class="erp-table">
|
||||||
<thead><tr><th>Code</th><th>Name</th><th style="width:120px">Qty</th></tr></thead>
|
<thead><tr><th>Code</th><th>Name</th><th style="width:100px">Qty</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for it in individual_items %}
|
{% for it in individual_items %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ it.item_code }}</td>
|
<td>{{ it.item_code }}</td>
|
||||||
<td>{{ it.item_name }}</td>
|
<td>{{ it.item_name }}</td>
|
||||||
<td><input class="erp-input" type="number" name="qty_{{ it.item_code }}" placeholder="—" style="width:100px" /></td>
|
<td><input class="erp-input" type="number" name="qty_{{ it.item_code }}" placeholder="—" style="width:90px" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -52,18 +59,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 우: 세트 (출고 전용) -->
|
<!-- 우: 세트 -->
|
||||||
<div class="erp-card">
|
<div class="erp-card">
|
||||||
<div class="cpg-card-head"><h2>세트 아이템 — 출고(OUT) · BOM 분해</h2></div>
|
<div class="cpg-card-head"><h2>세트 아이템 — 출고(OUT)</h2></div>
|
||||||
<div class="erp-table-wrap" style="margin-top:8px;">
|
<div class="erp-table-wrap" style="margin-top:8px;">
|
||||||
<table class="erp-table">
|
<table class="erp-table">
|
||||||
<thead><tr><th>Set Code</th><th>Set Name</th><th style="width:120px">Qty (OUT)</th></tr></thead>
|
<thead><tr><th>Set Code</th><th>Set Name</th><th style="width:100px">Qty (OUT)</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for it in set_items %}
|
{% for it in set_items %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ it.item_code }}</td>
|
<td>{{ it.item_code }}</td>
|
||||||
<td>{{ it.item_name }}</td>
|
<td>{{ it.item_name }}</td>
|
||||||
<td><input class="erp-input" type="number" min="0" name="qty_{{ it.item_code }}" placeholder="—" style="width:100px" /></td>
|
<td><input class="erp-input" type="number" min="0" name="qty_{{ it.item_code }}" placeholder="—" style="width:90px" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -71,10 +78,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="erp-page-actions" style="margin-top:12px;">
|
|
||||||
<button type="submit" class="erp-btn erp-btn-primary">일괄 적용</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- 이동 이력 -->
|
<!-- 이동 이력 -->
|
||||||
|
|||||||
Reference in New Issue
Block a user