1) 两列改名:AccountBillColumns 里唯品会两个页签的「订单结算时间」→「账单期间」(金额式账期月份,如 2026-07),列类型从 date 改 text 避免被当日期格式化; 2) 筛选标签:DATE_FILTER_LABELS 里 vipshop / vipshop-jx 从「结算时间」改成「账单期间」; 3) 筛选真正生效:这两个页签的 start/end 不再过滤 occurred_at,改为按 payload.settle_period(YYYY-MM)与所选区间取月份交集,页面列表与导出同步生效。 同步更新 AccountBillsTableTest 的断言。
55 lines
3.3 KiB
PHP
55 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\View;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class AccountBillsTableTest extends TestCase
|
|
{
|
|
public function test_authoritative_bill_pages_use_stable_date_controls_and_existing_table_interactions(): void
|
|
{
|
|
$source = file_get_contents(__DIR__ . '/../../../resources/assets/js/components/business/AccountBills.vue');
|
|
|
|
$this->assertStringContainsString("isDouyin(){return this.billType==='douyin';}", $source);
|
|
$this->assertStringContainsString("usesStableDateControl(){return true;}", $source);
|
|
$this->assertStringContainsString("{ 'is-stable-date': usesStableDateControl }", $source);
|
|
$this->assertStringContainsString('.tw-date.is-stable-date .tw-date-control', $source);
|
|
$this->assertStringContainsString("['douyin','pinduoduo','dewu','taobao-wechat','jd-transactions','jingxi','jd-wallet','vipshop','vipshop-jx'].indexOf(this.billType)!==-1", $source);
|
|
$this->assertStringContainsString('v-if="usesMirrorOptions && !filterOptionsError"', $source);
|
|
$this->assertStringContainsString('page-key="store-receiving-bills"', $source);
|
|
$this->assertStringContainsString(':tab-key="billType"', $source);
|
|
$this->assertStringContainsString("value=\"page-visible\"", $source);
|
|
$this->assertStringContainsString("value=\"filtered-visible\"", $source);
|
|
$this->assertStringContainsString("value=\"filtered-all\"", $source);
|
|
$this->assertStringContainsString('position:sticky', $source);
|
|
$this->assertStringContainsString('overflow:auto', $source);
|
|
}
|
|
|
|
public function test_store_receiving_tabs_route_the_vipshop_jx_account(): void
|
|
{
|
|
$source = file_get_contents(__DIR__ . '/../../../resources/assets/js/views/business/pages.js');
|
|
|
|
$this->assertStringContainsString(
|
|
"const GENERIC_TABS = ['taobao-wechat', 'pinduoduo', 'jd-wallet', 'jd-transactions', 'jingxi', 'douyin', 'dewu', 'vipshop', 'vipshop-jx'];",
|
|
$source,
|
|
);
|
|
$this->assertStringContainsString(
|
|
"const STORE_RECEIVING_TABS = ['taobao-alipay', 'taobao-wechat', 'pinduoduo', 'jd-wallet', 'jd-transactions', 'jingxi', 'douyin', 'dewu', 'vipshop', 'vipshop-jx'];",
|
|
$source,
|
|
);
|
|
}
|
|
|
|
public function test_jd_and_jingxi_tabs_share_the_same_date_and_summary_behaviour(): void
|
|
{
|
|
$source = file_get_contents(__DIR__ . '/../../../resources/assets/js/components/business/AccountBills.vue');
|
|
|
|
$this->assertStringContainsString("const JD_BILL_TABS = ['jd-transactions','jingxi'];", $source);
|
|
$this->assertStringContainsString("isJdBillTab(){return JD_BILL_TABS.indexOf(this.billType)!==-1;}", $source);
|
|
// 唯品会两个页签的筛选标签是「账单期间」(后端也只按 payload.settle_period 过滤)。
|
|
$this->assertStringContainsString("const DATE_FILTER_LABELS = {'jd-transactions':'费用结算时间','jingxi':'费用结算时间','jd-wallet':'费用结算时间','douyin':'结算时间','vipshop':'账单期间','vipshop-jx':'账单期间'};", $source);
|
|
$this->assertStringContainsString('{{ dateFilterLabel }}', $source);
|
|
$this->assertStringContainsString('v-if="isJdBillTab && sync"', $source);
|
|
$this->assertStringContainsString("netLabel=JD_BILL_TABS.concat(['vipshop-jx']).indexOf(this.billType)!==-1", $source);
|
|
}
|
|
}
|