From d8cbd51ef6236910ee57fea74fddf0565cb57412 Mon Sep 17 00:00:00 2001 From: renshen <1005457301@qq.com> Date: Mon, 17 Aug 2026 16:19:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E8=B4=B9=E7=94=A8=E5=BD=93=E5=89=8D=E9=A1=B5?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order-data/after-sales-expenses.blade.php | 68 ++++++++++++++++++- .../Business/OrderDataPagesUpstreamTest.php | 39 ++++++++++- 2 files changed, 102 insertions(+), 5 deletions(-) diff --git a/resources/views/business/pages/order-data/after-sales-expenses.blade.php b/resources/views/business/pages/order-data/after-sales-expenses.blade.php index 79706d7f..c3197bd3 100644 --- a/resources/views/business/pages/order-data/after-sales-expenses.blade.php +++ b/resources/views/business/pages/order-data/after-sales-expenses.blade.php @@ -167,6 +167,20 @@ 重置 + @@ -179,7 +193,7 @@
- +
@foreach ($columns as $field => $header) @@ -192,7 +206,11 @@ @foreach ($columns as $field => $header) @php $value = data_get($row, $field); @endphp -
isset($numberFields[$field])])> + isset($numberFields[$field])]) + > @if ($field === 'product_link' && $value) @@ -236,3 +254,49 @@ + + diff --git a/tests/Feature/Business/OrderDataPagesUpstreamTest.php b/tests/Feature/Business/OrderDataPagesUpstreamTest.php index adbe7833..47060ad0 100644 --- a/tests/Feature/Business/OrderDataPagesUpstreamTest.php +++ b/tests/Feature/Business/OrderDataPagesUpstreamTest.php @@ -46,19 +46,29 @@ class OrderDataPagesUpstreamTest extends FeatureTestCase $factory->shouldReceive('forSource')->twice()->with('operations_replica')->andReturn($cache); $this->app->instance(UpstreamQueryCacheFactory::class, $factory); - $this->loginAs() + $afterSalesResponse = $this->loginAs() ->get(route('business.pages.show', [ 'section' => 'order-data', 'page' => 'after-sales-expenses', 'order_no' => 'ORDER-1', 'from' => '2026-08-01', 'to' => '2026-08-09', - ])) + ])); + + $afterSalesResponse ->assertOk() ->assertSeeText('ORDER-1') ->assertSeeText('测试店铺') ->assertSeeText('123.45') - ->assertSeeText('DIRECT'); + ->assertSeeText('DIRECT') + ->assertSeeText('导出当前页') + ->assertSee('id="order-data-after-sales-export-button"', false) + ->assertSee('data-export-contract="order-data.after-sales.current-page-export"', false) + ->assertSee('data-export-table="order-data-after-sales-table"', false) + ->assertSee('data-export-value="ORDER-1"', false) + ->assertSee('data-export-value="123.45"', false) + ->assertSee('data-export-number="true"', false) + ->assertSee('订单售后费用明细_2026-08-01_2026-08-09_第1页.csv', false); $this->get(route('business.pages.show', [ 'section' => 'order-data', @@ -92,6 +102,29 @@ class OrderDataPagesUpstreamTest extends FeatureTestCase ->assertSeeText('暂无数据'); } + public function test_after_sales_export_is_disabled_when_the_current_page_has_no_rows(): void + { + $this->allowOrderDataPages(); + $cache = Mockery::mock(UpstreamQueryCache::class); + $cache->shouldReceive('remember')->once()->andReturn(['rows' => []]); + $cache->shouldReceive('responseHeaders')->once()->andReturn([ + 'X-Caiwu-Data-Status' => 'direct', + ]); + $factory = Mockery::mock(UpstreamQueryCacheFactory::class); + $factory->shouldReceive('forSource')->once()->with('operations_replica')->andReturn($cache); + $this->app->instance(UpstreamQueryCacheFactory::class, $factory); + + $this->loginAs() + ->get(route('business.pages.show', [ + 'section' => 'order-data', + 'page' => 'after-sales-expenses', + ])) + ->assertOk() + ->assertSeeText('导出当前页') + ->assertSee('id="order-data-after-sales-export-button"', false) + ->assertSee('disabled="disabled"', false); + } + private function allowOrderDataPages(): void { $this->user->update(['locale' => 'zh-CN']); -- 2.47.2 From 8ce6a76ee4571c3dece8073c9b7ae16d6a757c57 Mon Sep 17 00:00:00 2001 From: renshen <1005457301@qq.com> Date: Mon, 17 Aug 2026 16:42:07 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E6=8F=90=E9=AB=98=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E5=AF=BC=E5=87=BA=E5=85=BC=E5=AE=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/order-data/after-sales-expenses.blade.php | 6 ++++-- tests/Feature/Business/OrderDataPagesUpstreamTest.php | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/views/business/pages/order-data/after-sales-expenses.blade.php b/resources/views/business/pages/order-data/after-sales-expenses.blade.php index c3197bd3..623275c9 100644 --- a/resources/views/business/pages/order-data/after-sales-expenses.blade.php +++ b/resources/views/business/pages/order-data/after-sales-expenses.blade.php @@ -295,8 +295,10 @@ link.download = button.dataset.exportFilename || '订单售后费用明细.csv'; document.body.appendChild(link); link.click(); - link.remove(); - URL.revokeObjectURL(url); + window.setTimeout(() => { + link.remove(); + URL.revokeObjectURL(url); + }, 1000); }); })(); diff --git a/tests/Feature/Business/OrderDataPagesUpstreamTest.php b/tests/Feature/Business/OrderDataPagesUpstreamTest.php index 47060ad0..d2d03913 100644 --- a/tests/Feature/Business/OrderDataPagesUpstreamTest.php +++ b/tests/Feature/Business/OrderDataPagesUpstreamTest.php @@ -68,6 +68,8 @@ class OrderDataPagesUpstreamTest extends FeatureTestCase ->assertSee('data-export-value="ORDER-1"', false) ->assertSee('data-export-value="123.45"', false) ->assertSee('data-export-number="true"', false) + ->assertSee('window.setTimeout(() => {', false) + ->assertSee('URL.revokeObjectURL(url);', false) ->assertSee('订单售后费用明细_2026-08-01_2026-08-09_第1页.csv', false); $this->get(route('business.pages.show', [ -- 2.47.2