fix: 隐藏未选采购规格行 (#113)
This commit is contained in:
@@ -36,6 +36,35 @@ func TestPaginationCSS_桌面右对齐且窄窗口不遮挡内容(t *testing.T)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPurchaseModal_未选规格行保持隐藏且不提交(t *testing.T) {
|
||||||
|
files := map[string][]string{
|
||||||
|
"static/css/app.css": {
|
||||||
|
".purchase-confirm-row[hidden] { display: none; }",
|
||||||
|
},
|
||||||
|
"templates/syb/list.html": {
|
||||||
|
`class="purchase-confirm-row" data-purchase-row="{{.SybID}}" hidden`,
|
||||||
|
`name="mapping_option_key" value="{{.MappingOptionKey}}" disabled`,
|
||||||
|
`name="context_version" value="{{.ContextVersion}}" disabled`,
|
||||||
|
`name="max_price_yuan" min="0.01" step="0.01" value="{{.DefaultMaxPrice}}" required disabled`,
|
||||||
|
},
|
||||||
|
"static/js/app.js": {
|
||||||
|
"row.hidden = !enabled;",
|
||||||
|
"input.disabled = !enabled;",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for path, wants := range files {
|
||||||
|
content, err := os.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
for _, want := range wants {
|
||||||
|
if !strings.Contains(string(content), want) {
|
||||||
|
t.Errorf("%s 缺少采购弹窗回归约束 %q", path, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestTemplatesAndRoutesCanBeBuiltWithoutDatabaseConnection(t *testing.T) {
|
func TestTemplatesAndRoutesCanBeBuiltWithoutDatabaseConnection(t *testing.T) {
|
||||||
if _, err := newRouter(nil); err != nil {
|
if _, err := newRouter(nil); err != nil {
|
||||||
t.Fatalf("模板或路由组装失败: %v", err)
|
t.Fatalf("模板或路由组装失败: %v", err)
|
||||||
|
|||||||
@@ -308,6 +308,7 @@ tr.empty small { color: #aaa; }
|
|||||||
border: 1px solid #d9dde3;
|
border: 1px solid #d9dde3;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
.purchase-confirm-row[hidden] { display: none; }
|
||||||
.purchase-confirm-row label { display: grid; gap: 6px; }
|
.purchase-confirm-row label { display: grid; gap: 6px; }
|
||||||
.execution-mode-fieldset {
|
.execution-mode-fieldset {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|||||||
@@ -563,7 +563,8 @@ HTML 片段,只替换弹窗内部的表格、总数和分页。主货运单表
|
|||||||
每条确认行同时显示顺运宝规格原文和当前映射的唯一 PDD 规格组合。价格输入只对应该
|
每条确认行同时显示顺运宝规格原文和当前映射的唯一 PDD 规格组合。价格输入只对应该
|
||||||
组合中的选定颜色,不显示同一 PDD 商品的其他颜色或价格。批量创建时每条顺运宝明细
|
组合中的选定颜色,不显示同一 PDD 商品的其他颜色或价格。批量创建时每条顺运宝明细
|
||||||
各自显示一个选定组合和一个价格输入;映射或商品上下文在弹窗打开后变化时,服务端拒绝
|
各自显示一个选定组合和一个价格输入;映射或商品上下文在弹窗打开后变化时,服务端拒绝
|
||||||
旧提交并要求刷新。
|
旧提交并要求刷新。未勾选的确认行必须同时保持 `hidden` 和 input `disabled`;采购行的
|
||||||
|
grid 样式不得覆盖 `hidden`,关闭后改变勾选再打开也不得残留上一次的确认行。
|
||||||
|
|
||||||
`[必须]` 校验不过的**不要静默跳过**,要列出来告诉操作员缺什么:
|
`[必须]` 校验不过的**不要静默跳过**,要列出来告诉操作员缺什么:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user