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..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 @@ -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,51 @@ + + diff --git a/tests/Feature/Business/OrderDataPagesUpstreamTest.php b/tests/Feature/Business/OrderDataPagesUpstreamTest.php index adbe7833..d2d03913 100644 --- a/tests/Feature/Business/OrderDataPagesUpstreamTest.php +++ b/tests/Feature/Business/OrderDataPagesUpstreamTest.php @@ -46,19 +46,31 @@ 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('window.setTimeout(() => {', false) + ->assertSee('URL.revokeObjectURL(url);', false) + ->assertSee('订单售后费用明细_2026-08-01_2026-08-09_第1页.csv', false); $this->get(route('business.pages.show', [ 'section' => 'order-data', @@ -92,6 +104,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']);