From 4dfafe085d1dfd4631a03aeba7303ad1ad8ba5f6 Mon Sep 17 00:00:00 2001 From: qiuxiang <394405259@qq.com> Date: Sat, 12 Sep 2026 10:29:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8A=96=E9=9F=B3?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E5=8F=91=E7=94=9F=E6=97=B6=E9=97=B4=E7=AD=9B?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/components/business/AccountBills.vue | 7 ++++--- tests/Feature/Business/PagesTest.php | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/resources/assets/js/components/business/AccountBills.vue b/resources/assets/js/components/business/AccountBills.vue index 48365b53..8b1481b6 100644 --- a/resources/assets/js/components/business/AccountBills.vue +++ b/resources/assets/js/components/business/AccountBills.vue @@ -18,7 +18,7 @@ - +
结束日期不能早于开始日期
@@ -71,6 +71,7 @@ export default { async fetch(){const requestId=++this.requestSerial;this.loading=true;this.loadError=false;try{const response=await window.axios.get(this.apiBase,{params:{...this.filters,sort:this.sort.key,dir:this.sort.dir,limit:this.perPage,page:this.currentPage}});if(requestId!==this.requestSerial)return;const body=response.data||{};this.rows=body.data||[];this.total=body.total||0;this.currentPage=body.current_page||1;this.lastPage=body.last_page||1;this.perPage=body.per_page||this.perPage;this.summary=body.summary||{income:0,expense:0,balance:0,count:0};if(body.columns){this.columnsTitle=body.columns.title||'';this.sourceGroups=body.columns.groups||[];this.sourceColumns=this.attachGroups(body.columns.columns||body.columns||[],this.sourceGroups);}}catch(error){if(requestId!==this.requestSerial)return;this.rows=[];this.total=0;this.summary={income:0,expense:0,balance:0,count:0};this.loadError=true;}finally{if(requestId===this.requestSerial)this.loading=false;}}, attachGroups(columns,groups){let index=0;return columns.map((column,columnIndex)=>{while(groups[index]&&columnIndex>=groups.slice(0,index+1).reduce((sum,group)=>sum+Number(group.span||0),0))index+=1;return{...column,key:column.field||`column-${columnIndex}`,group:groups[index]?groups[index].label:''};});}, applyFilters(){if(this.invalidDateRange)return;this.currentPage=1;this.fetch();},resetFilters(){this.filters={store_name:'',bill_item:'',start:'',end:'',keyword:''};this.applyFilters();},changePage(page){this.currentPage=page;this.fetch();this.$nextTick(()=>{if(this.$refs.scroll)this.$refs.scroll.scrollTop=0;});}, + openDatePicker(refName){const input=this.$refs[refName];if(!input)return;input.focus();if(typeof input.showPicker==='function'){try{input.showPicker();return;}catch(error){/* Fall through for embedded browsers without picker support. */}}input.click();}, maybeSort(column){if(!this.sortableField(column.field))return;this.sort.dir=this.sort.key===column.field&&this.sort.dir==='desc'?'asc':'desc';this.sort.key=column.field;this.applyFilters();},sortableField(field){return SORTABLE.indexOf(field)!==-1;},sortMark(field){return this.sort.key===field?(this.sort.dir==='asc'?'↑':'↓'):'↕';}, getValue(row,field){if(!field)return'';if(field.indexOf('payload.')===0){const payload=row.payload||{};const value=payload[field.slice(8)];return value===null||value===undefined?'':value;}const value=row[field];return value===null||value===undefined?'':value;},rawValue(row,column){return this.getValue(row,column.field);}, displayValue(row,column){const value=this.rawValue(row,column);if(value==='')return'—';if(column.kind==='money_in')return Number(value)>0?`+${this.money(value)}`:'—';if(column.kind==='money_out')return Number(value)>0?`-${this.money(value)}`:'—';if(['balance','money'].indexOf(column.kind)!==-1)return this.money(value);return value;},cellClass(column){return{'is-number':this.isNumber(column.kind),'is-id':column.kind==='num','is-income':column.kind==='money_in','is-expense':column.kind==='money_out'};},isNumber(kind){return['money','money_in','money_out','balance','num'].indexOf(kind)!==-1;},money(value){return`¥${Number(value||0).toLocaleString('zh-CN',{minimumFractionDigits:2,maximumFractionDigits:2})}`;}, @@ -81,8 +82,8 @@ export default { diff --git a/tests/Feature/Business/PagesTest.php b/tests/Feature/Business/PagesTest.php index 4c675e55..18d9cefd 100644 --- a/tests/Feature/Business/PagesTest.php +++ b/tests/Feature/Business/PagesTest.php @@ -217,14 +217,17 @@ class PagesTest extends FeatureTestCase ]); } - public function testDouyinAccountBillsExportUsesSelectedColumnOrder(): void + public function testDouyinAccountBillsExportUsesDateFiltersAndSelectedColumnOrder(): void { $this->user->attachPermission( Permission::where('name', 'read-admin-panel')->firstOrFail() ); $repository = Mockery::mock(StoreReceivingDouyinBillMirrorRepository::class); - $repository->shouldReceive('exportRows')->once()->with([], 'occurred_at', 'desc')->andReturn([[ + $repository->shouldReceive('exportRows')->once()->with([ + 'start' => '2026-09-09', + 'end' => '2026-09-09', + ], 'occurred_at', 'desc')->andReturn([[ 'record_code' => '9001', 'payload' => [ 'move_scene' => '头条放心购', @@ -235,6 +238,8 @@ class PagesTest extends FeatureTestCase $response = $this->loginAs()->get(route('ecommerce-finance.account-bills.export', [ 'bill_type' => 'douyin', + 'start' => '2026-09-09', + 'end' => '2026-09-09', 'columns' => 'payload.move_scene,record_code,payload.settle_account', ])); -- 2.47.2