From ebcf75337fb87132f4073060dcda21a92ea1fa03 Mon Sep 17 00:00:00 2001 From: zhoushengchen <3057083327@qq.com> Date: Tue, 13 Oct 2026 10:58:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=84=E5=8A=A0=E8=B4=B9=E7=BB=93=E7=AE=97?= =?UTF-8?q?=EF=BC=9A=E7=AD=9B=E9=80=89=E5=AD=97=E6=AE=B5=E5=8F=AF=E8=87=AA?= =?UTF-8?q?=E9=80=89=E6=98=BE=E7=A4=BA=EF=BC=88=E7=AD=9B=E9=80=89=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=EF=BC=89=EF=BC=8C=E5=B0=91=E9=80=89=E6=97=B6=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E5=8C=BA=E8=87=AA=E5=8A=A8=E5=8F=98=E7=9F=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courier-surcharge-settlement.blade.php | 96 ++++++++++++++++--- .../CourierSurchargeSettlementPageTest.php | 4 + 2 files changed, 87 insertions(+), 13 deletions(-) diff --git a/resources/views/business/pages/courier-payables/courier-surcharge-settlement.blade.php b/resources/views/business/pages/courier-payables/courier-surcharge-settlement.blade.php index 12667448..5fef4a64 100644 --- a/resources/views/business/pages/courier-payables/courier-surcharge-settlement.blade.php +++ b/resources/views/business/pages/courier-payables/courier-surcharge-settlement.blade.php @@ -118,6 +118,7 @@ } .settlement-field { display: grid; gap: .2rem; min-width: 0; } + .settlement-field[hidden] { display: none; } .settlement-field label { color: var(--settlement-muted); font-size: .68rem; font-weight: 600; } .settlement-field input, .settlement-field select { @@ -219,19 +220,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
重置导出
+
+
+
+
+
+
+
+
+
+
+
+
+
重置导出
@@ -312,5 +313,74 @@ activate(row); } }); + +})(); + +(() => { + const filterBar = document.querySelector('.settlement-filter-bar'); + const filterPicker = document.querySelector('[data-settlement-filter-picker]'); + + if (filterBar && filterPicker) { + const toggle = filterPicker.querySelector('button[aria-expanded]'); + const panel = filterPicker.querySelector('.finance-table-field-picker__panel'); + const checks = [...panel.querySelectorAll('input[data-settlement-filter-check]')]; + const fields = [...filterBar.querySelectorAll('[data-settlement-filter-field]')]; + const storageKey = 'caiwu:courier-surcharge-settlement:filter-fields:' + (filterPicker.dataset.user || 'anonymous'); + const defaultKeys = checks.map((check) => check.value); + + const apply = (selected, save) => { + fields.forEach((field) => { + const visible = selected.has(field.dataset.settlementFilterField); + field.hidden = !visible; + field.querySelectorAll('input, select').forEach((control) => { + if (visible) { + control.removeAttribute('disabled'); + } else { + control.setAttribute('disabled', 'disabled'); + } + }); + }); + checks.forEach((check) => { check.checked = selected.has(check.value); }); + if (save) { + try { localStorage.setItem(storageKey, JSON.stringify([...selected])); } catch (_) {} + } + }; + + let stored = null; + try { + const parsed = JSON.parse(localStorage.getItem(storageKey) ?? 'null'); + if (Array.isArray(parsed)) { + stored = new Set(parsed.filter((key) => defaultKeys.includes(key))); + } + } catch (_) {} + + apply(stored ?? new Set(defaultKeys), false); + + toggle.addEventListener('click', () => { + const open = panel.hidden; + panel.hidden = !open; + toggle.setAttribute('aria-expanded', String(open)); + }); + + document.addEventListener('click', (event) => { + if (!panel.hidden && !filterPicker.contains(event.target)) { + panel.hidden = true; + toggle.setAttribute('aria-expanded', 'false'); + } + }); + + checks.forEach((check) => check.addEventListener('change', () => { + apply(new Set(checks.filter((item) => item.checked).map((item) => item.value)), true); + })); + + panel.querySelector('[data-settlement-filters-all]')?.addEventListener('click', () => { + apply(new Set(defaultKeys), true); + }); + + panel.querySelector('[data-settlement-filters-reset]')?.addEventListener('click', () => { + try { localStorage.removeItem(storageKey); } catch (_) {} + apply(new Set(defaultKeys), true); + }); + } })(); diff --git a/tests/Feature/Business/CourierSurchargeSettlementPageTest.php b/tests/Feature/Business/CourierSurchargeSettlementPageTest.php index 770f222c..dff9bbc6 100644 --- a/tests/Feature/Business/CourierSurchargeSettlementPageTest.php +++ b/tests/Feature/Business/CourierSurchargeSettlementPageTest.php @@ -55,6 +55,10 @@ class CourierSurchargeSettlementPageTest extends FeatureTestCase ->assertSee('value="测试店铺"', false) ->assertSee('value="SO-001"', false) ->assertSee('value="已计算" selected', false) + ->assertSee('data-settlement-filter-picker', false) + ->assertSee('data-settlement-filter-check', false) + ->assertSee('data-settlement-filter-field="waybill"', false) + ->assertSeeText('筛选设置') ->assertViewHas('content', fn (array $content) => $content['courierSurchargeSettlementFilters']['status'] === '已计算'); } -- 2.47.2