user->attachPermission( Permission::where('name', 'read-admin-panel')->firstOrFail() ); } public function testReconciliationPageProvidesPlatformTabsForCurrentPageRows(): void { foreach ([ ['platform' => '京东商城', 'order' => 'JD-TEST-001'], ['platform' => '抖音小店', 'order' => 'DY-TEST-001'], ['platform' => '天猫旗舰店', 'order' => 'TM-TEST-001'], ['platform' => '拼多多店铺', 'order' => 'PDD-TEST-001'], ['platform' => '淘宝店铺', 'order' => 'TB-TEST-001'], ['platform' => '唯品会店铺', 'order' => 'VIP-TEST-001'], ['platform' => '京喜店铺', 'order' => 'JX-TEST-001'], ] as $row) { StoreZhongcaiReconciliation::create([ 'company_id' => $this->company->id, 'bill_date' => '2026-08-01', 'planting_order_no' => $row['order'], 'responsible_platform' => $row['platform'], ]); } $response = $this->loginAs()->get(route('business.pages.show', [ 'section' => 'store-receivables', 'page' => 'zhongcai-reconciliation', ])); $response ->assertOk() ->assertSee('平台筛选', false) ->assertSee('>京东<', false) ->assertSee('>抖音<', false) ->assertSee('>天猫<', false) ->assertSee('>拼多多<', false) ->assertSee('>淘宝<', false) ->assertSee('>唯品会<', false) ->assertSee('>京喜<', false) ->assertDontSee('>全部<', false) ->assertSee('data-platform="jd"', false) ->assertSee('data-platform="douyin"', false) ->assertSee('data-platform="tmall"', false) ->assertSee('data-platform="pdd"', false) ->assertSee('data-platform="taobao"', false) ->assertSee('data-platform="vipshop"', false) ->assertSee('data-platform="jingxi"', false) ->assertSee('data-platform-header="jd"', false) ->assertSeeInOrder([ 'data-platform-header="jd"', '日期', '订单编号', '财务售价', '财务运费', '财务佣金', '财务空包费', '财务打款金额', '笔数', '备注', '正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心', '负责平台', 'ID', '实收', '运费', '差异', '是否退款', '备注', '问题件', ], false) ->assertSee('data-platform-header="douyin"', false) ->assertSeeInOrder([ '日期', '订单编号', '财务售价', '财务运费', '财务佣金', '财务空包费', '财务打款金额', '笔数', '备注', '正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心', '负责平台', 'ID', '实收', '差异', '退款', ], false) ->assertSee('data-platform-header="tmall"', false) ->assertSeeInOrder([ 'data-platform-header="tmall"', '日期', '订单编号', '财务售价', '财务运费', '财务佣金', '财务空包费', '财务打款金额', '笔数', '备注', '正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心', '负责平台', 'ID', '实收', '差异', '是否退款', '备注', '问题件', ], false) ->assertSee('data-platform-header="pdd"', false) ->assertSeeInOrder([ 'data-platform-header="pdd"', '日期', '订单编号', '财务售价', '财务运费', '财务佣金', '财务空包费', '财务打款金额', '笔数', '备注', '正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心', '负责平台', 'ID', '实收', '差异', '退款', '小额打款', ], false) ->assertSee('data-platform-header="taobao"', false) ->assertSeeInOrder([ 'data-platform-header="taobao"', '日期', '订单编号', '财务售价', '财务运费', '财务佣金', '财务空包费', '财务打款金额', '笔数', '备注', '正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心', '负责平台', 'ID', '实收', '差异', '是否退款', '备注', '问题件', ], false) ->assertSeeInOrder([ 'data-platform-header="vipshop"', '日期', '订单编号', '财务售价', '财务运费', '财务佣金', '财务空包费', '财务打款金额', '笔数', '备注', '正确店铺', '负责人', '账户', '类型', '创建人', '标签', '所属利润中心', '负责平台', 'ID', '实收', '差异', '是否退款', '备注', '问题件', ], false) ->assertSee('JD-TEST-001') ->assertSee('DY-TEST-001') ->assertSee('TM-TEST-001') ->assertSee('PDD-TEST-001') ->assertSee('TB-TEST-001') ->assertSee('VIP-TEST-001') ->assertSee('JX-TEST-001'); } public function testReconciliationPageShowsPlatformSpecificEmptyState(): void { StoreZhongcaiReconciliation::create([ 'company_id' => $this->company->id, 'bill_date' => '2026-08-01', 'planting_order_no' => 'JD-TEST-002', 'responsible_platform' => '京东', ]); $response = $this->loginAs()->get(route('business.pages.show', [ 'section' => 'store-receivables', 'page' => 'zhongcai-reconciliation', ])); $response ->assertOk() ->assertSee('当前页暂无抖音平台数据', false) ->assertSee('当前页暂无天猫平台数据', false) ->assertSee('当前页暂无唯品会平台数据', false); } }