diff --git a/app/modules/cupang/templates/cupang/box_calc.html b/app/modules/cupang/templates/cupang/box_calc.html index e1254f8..afb7564 100644 --- a/app/modules/cupang/templates/cupang/box_calc.html +++ b/app/modules/cupang/templates/cupang/box_calc.html @@ -1,6 +1,6 @@ {% extends "erp_base.html" %} -{% block head_extra %}{% endblock %} +{% block head_extra %}{% endblock %} {% block content %}
@@ -303,6 +303,11 @@ ""; } + // 배분이 끝난 카드에 찍는 도장. + function stampHtml() { + return '배분 완료'; + } + function kpi(label, value, hint) { return '
' + esc(label) + "" + '' + esc(value) + "" + @@ -347,7 +352,7 @@ ' data-key="' + esc(key) + '">' + '
' + '' + esc(r.product_name) + "" + - '' + esc(r.box_name) + "" + + (remain ? "" : stampHtml()) + "
" + '
' + "" + remain + "박스" + @@ -380,7 +385,7 @@ '
' + boxSvg(b.fill_percent, m.box_name) + "
" + '
' + '
' + esc(m.box_name) + " 혼합 #" + (i + 1) + - (remain ? "" : ' 배분됨') + "
" + + (remain ? "" : stampHtml()) + "
" + '
    ' + items + "
" + '
' + '
' + b.fill_percent + "% 채움 · " + units[key] + "개
" + diff --git a/app/modules/cupang/templates/cupang/box_rules.html b/app/modules/cupang/templates/cupang/box_rules.html index 10a19d4..4311e53 100644 --- a/app/modules/cupang/templates/cupang/box_rules.html +++ b/app/modules/cupang/templates/cupang/box_rules.html @@ -1,6 +1,6 @@ {% extends "erp_base.html" %} -{% block head_extra %}{% endblock %} +{% block head_extra %}{% endblock %} {% block content %}
diff --git a/app/modules/cupang/templates/cupang/centers.html b/app/modules/cupang/templates/cupang/centers.html index 9adb085..a33ec2a 100644 --- a/app/modules/cupang/templates/cupang/centers.html +++ b/app/modules/cupang/templates/cupang/centers.html @@ -1,6 +1,6 @@ {% extends "erp_base.html" %} -{% block head_extra %}{% endblock %} +{% block head_extra %}{% endblock %} {% block content %}
diff --git a/app/modules/cupang/templates/cupang/detail.html b/app/modules/cupang/templates/cupang/detail.html index 4c15487..2a41160 100644 --- a/app/modules/cupang/templates/cupang/detail.html +++ b/app/modules/cupang/templates/cupang/detail.html @@ -1,6 +1,6 @@ {% extends "erp_base.html" %} -{% block head_extra %}{% endblock %} +{% block head_extra %}{% endblock %} {% block content %}
diff --git a/app/modules/cupang/templates/cupang/form.html b/app/modules/cupang/templates/cupang/form.html index 350ce19..16066ef 100644 --- a/app/modules/cupang/templates/cupang/form.html +++ b/app/modules/cupang/templates/cupang/form.html @@ -1,6 +1,6 @@ {% extends "erp_base.html" %} -{% block head_extra %}{% endblock %} +{% block head_extra %}{% endblock %} {% block content %}
diff --git a/app/modules/cupang/templates/cupang/index.html b/app/modules/cupang/templates/cupang/index.html index 2f001a6..e456974 100644 --- a/app/modules/cupang/templates/cupang/index.html +++ b/app/modules/cupang/templates/cupang/index.html @@ -1,6 +1,6 @@ {% extends "erp_base.html" %} -{% block head_extra %}{% endblock %} +{% block head_extra %}{% endblock %} {% block content %}
diff --git a/app/modules/cupang/templates/cupang/products.html b/app/modules/cupang/templates/cupang/products.html index 18ba2e3..c5cd319 100644 --- a/app/modules/cupang/templates/cupang/products.html +++ b/app/modules/cupang/templates/cupang/products.html @@ -1,6 +1,6 @@ {% extends "erp_base.html" %} -{% block head_extra %}{% endblock %} +{% block head_extra %}{% endblock %} {% block content %}
diff --git a/app/static/cupang.css b/app/static/cupang.css index e08bdc4..4189f23 100644 --- a/app/static/cupang.css +++ b/app/static/cupang.css @@ -730,3 +730,40 @@ body.cpg-dragging { cursor: grabbing; user-select: none; } .cpg-tree-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .cpg-tree-qty { font-weight: 600; color: var(--color-rich-black); } .cpg-tree-per { font-size: 11px; } + +/* 배분 완료 도장 */ +.cpg-stamp { + --stamp: #1d5fd0; + flex: 0 0 auto; + display: inline-block; + padding: 2px 8px; + border: 2px solid var(--stamp); + border-radius: 6px; + color: var(--stamp); + font-size: 11px; + font-weight: 800; + letter-spacing: 1px; + line-height: 1.4; + white-space: nowrap; + opacity: .85; + transform: rotate(-7deg); + box-shadow: inset 0 0 0 1px rgba(29, 95, 208, .25); + animation: cpg-stamp-in .22s ease-out; +} +@keyframes cpg-stamp-in { + from { opacity: 0; transform: rotate(-7deg) scale(1.6); } + to { opacity: .85; transform: rotate(-7deg) scale(1); } +} + +/* 배분이 끝난 카드는 흐리게 — 글자·상자 아이콘 모두 */ +.cpg-sum-prod.is-done, .cpg-box-card.is-done { opacity: 1; } +.cpg-sum-prod.is-done .cpg-sum-prod-name, +.cpg-sum-prod.is-done .cpg-sum-prod-nums, +.cpg-box-card.is-done .cpg-box-title, +.cpg-box-card.is-done .cpg-box-items, +.cpg-box-card.is-done .cpg-box-fillnum { color: var(--color-midtone-gray); opacity: .6; } +.cpg-sum-prod.is-done .cpg-sum-prod-nums strong, +.cpg-box-card.is-done .cpg-box-items b { color: var(--color-midtone-gray); } +.cpg-box-card.is-done .cpg-box-svg { filter: grayscale(1); opacity: .45; } +.cpg-box-card.is-done .cpg-box-bar { opacity: .4; } +.cpg-sum-prod.is-done .cpg-stamp, .cpg-box-card.is-done .cpg-stamp { opacity: .85; } diff --git a/tests/js/box_calc_ui.test.js b/tests/js/box_calc_ui.test.js index 569d426..1dc7f80 100644 --- a/tests/js/box_calc_ui.test.js +++ b/tests/js/box_calc_ui.test.js @@ -122,6 +122,8 @@ function dragCardTo(card, target) { check("전량 담기 후 잔여 0", text(".cpg-sum-prod .cpg-sum-prod-nums").startsWith("0박스0개"), text(".cpg-sum-prod .cpg-sum-prod-nums")); check("잔여 0 카드는 드래그 불가", $$(".cpg-sum-prod")[0].classList.contains("is-done")); + check("배분 완료 도장 표시", !!$$(".cpg-sum-prod")[0].querySelector(".cpg-stamp")); + check("제품 카드에 박스명 배지 없음", !$$(".cpg-sum-prod")[0].querySelector(".erp-badge")); check("센터 합계 2박스/16개", text(".cpg-dist-sum").replace(/\s/g, "").startsWith("2박스16개"), text(".cpg-dist-sum")); @@ -143,6 +145,7 @@ function dragCardTo(card, target) { $("#cpg-dlg-ok").click(); check("혼합 박스가 센터에 담긴다", $$(".cpg-dist-item").length === 2); check("혼합 담은 뒤 배분됨 표시", $(".cpg-box-card").className.includes("is-done")); + check("혼합 박스에도 도장", !!$(".cpg-box-card .cpg-stamp")); check("혼합 박스 아래 내용물 트리", $$(".cpg-dist-tree li").length === 2, String($$(".cpg-dist-tree li").length)); check("트리에 제품명·개수", text(".cpg-dist-tree li").includes("미라네 4호 세트") &&