UI
This commit is contained in:
@ -1,7 +1,5 @@
|
|||||||
<page-header-wrapper [title]="''"></page-header-wrapper>
|
<!-- <page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
|
|
||||||
<nz-card>
|
<nz-card>
|
||||||
<!-- 搜索表单 -->
|
|
||||||
<div nz-row nzGutter="8">
|
<div nz-row nzGutter="8">
|
||||||
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
@ -17,18 +15,19 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card> -->
|
||||||
<nz-card>
|
<nz-card class="table-box">
|
||||||
<nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0">
|
<div class="tab_header">
|
||||||
|
<label class="page_title"> <label class="driver">|</label> 资金上报</label>
|
||||||
|
<nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0">
|
||||||
|
<nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)">
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
</div>
|
||||||
|
|
||||||
<nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)">
|
|
||||||
</nz-tab>
|
|
||||||
</nz-tabset>
|
|
||||||
<!-- 数据列表 -->
|
<!-- 数据列表 -->
|
||||||
<st #st [scroll]="{x:'1200px'}" [data]="service.$api_get_fund_reporting_page" [columns]="columns"
|
<st #st [scroll]="{x:'1200px',y:scrollY}" [data]="service.$api_get_fund_reporting_page" [columns]="columns"
|
||||||
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
[req]="{ params: reqParams }" [page]="{ }" (change)="changeSt($event)">
|
||||||
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
|
||||||
[page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" (change)="changeSt($event)">
|
|
||||||
<ng-template st-row="uploadStatus" let-item>
|
<ng-template st-row="uploadStatus" let-item>
|
||||||
<span [ngClass]="{'text-red-dark':item?.uploadStatus === '4'}">{{item?.uploadStatusLabel}}</span>
|
<span [ngClass]="{'text-red-dark':item?.uploadStatus === '4'}">{{item?.uploadStatusLabel}}</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
@ -52,14 +51,28 @@
|
|||||||
</st>
|
</st>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
<ng-template #extraTemplate>
|
<ng-template #extraTemplate>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center mr-sm">
|
||||||
<div class="mr-md">
|
<div class="mr-md">
|
||||||
已选择
|
已选择
|
||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
||||||
</div>
|
</div>
|
||||||
<button nz-button nzType="primary" (click)="upload()" acl [acl-ability]="['FUND-REPORTING-upload']">上传</button>
|
<button nz-button nzDanger [nzLoading]="isLoading && st.loading" acl [acl-ability]="['FUND-REPORTING-search']"
|
||||||
<button nz-button nzType="primary" (click)="recall()" acl [acl-ability]="['FUND-REPORTING-recall']">撤回</button>
|
(click)="openDrawer()">筛选</button>
|
||||||
<button nz-button nzType="primary" (click)="updateData()" acl
|
<button nz-button nzDanger (click)="export()" acl [acl-ability]="['FUND-REPORTING-export']"> 导出</button>
|
||||||
[acl-ability]="['FUND-REPORTING-upload-data']">更新数据</button>
|
<button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft">
|
||||||
|
更多<i nz-icon nzType="down" nzTheme="outline"></i></button>
|
||||||
|
<nz-dropdown-menu #menu="nzDropdownMenu">
|
||||||
|
<ul nz-menu>
|
||||||
|
<li nz-menu-item (click)="upload()" acl [acl-ability]="['FUND-REPORTING-upload']">
|
||||||
|
上传
|
||||||
|
</li>
|
||||||
|
<li nz-menu-item (click)="recall()" acl [acl-ability]="['FUND-REPORTING-recall']">
|
||||||
|
撤回
|
||||||
|
</li>
|
||||||
|
<li nz-menu-item (click)="updateData()" acl [acl-ability]="['FUND-REPORTING-upload-data']">
|
||||||
|
更新数据
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nz-dropdown-menu>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
@ -1,24 +1,21 @@
|
|||||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { STChange, STColumn, STComponent, STData } from '@delon/abc/st';
|
import { STChange, STColumn, STComponent, STData } from '@delon/abc/st';
|
||||||
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
|
import { SFDateWidgetSchema } from '@delon/form';
|
||||||
import { ShipperBaseService } from '@shared';
|
import { SearchDrawerService } from '@shared';
|
||||||
import { NzModalService } from 'ng-zorro-antd/modal';
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { BasicTableComponent } from 'src/app/routes/commom';
|
||||||
import { ReportingService } from '../../services/reporting.service';
|
import { ReportingService } from '../../services/reporting.service';
|
||||||
import { DatatableReportingFundInfoComponent } from '../fund-info/fund-info.component';
|
import { DatatableReportingFundInfoComponent } from '../fund-info/fund-info.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-datatable-fund-reporting',
|
selector: 'app-datatable-fund-reporting',
|
||||||
templateUrl: './fund-reporting.component.html',
|
templateUrl: './fund-reporting.component.html',
|
||||||
styleUrls: ['./fund-reporting.component.less']
|
styleUrls: ['../../../../commom/less/commom-table.less']
|
||||||
})
|
})
|
||||||
export class DatatableFundReportingComponent implements OnInit {
|
export class DatatableFundReportingComponent extends BasicTableComponent implements OnInit {
|
||||||
_$expand = false;
|
|
||||||
ui!: SFUISchema;
|
|
||||||
schema!: SFSchema;
|
|
||||||
columns!: STColumn[];
|
columns!: STColumn[];
|
||||||
@ViewChild('st', { static: false }) st!: STComponent;
|
@ViewChild('st', { static: false }) st!: STComponent;
|
||||||
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
|
||||||
tabType!: string;
|
tabType!: string;
|
||||||
tabs: any[] = [
|
tabs: any[] = [
|
||||||
{ name: '待上传', value: '1' },
|
{ name: '待上传', value: '1' },
|
||||||
@ -36,15 +33,9 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
private router: Router,
|
private router: Router,
|
||||||
private ar: ActivatedRoute,
|
private ar: ActivatedRoute,
|
||||||
private modal: NzModalService,
|
private modal: NzModalService,
|
||||||
public shipperSrv: ShipperBaseService
|
public searchDrawerService: SearchDrawerService
|
||||||
) {
|
) {
|
||||||
}
|
super(searchDrawerService);
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询字段个数
|
|
||||||
*/
|
|
||||||
get queryFieldCount(): number {
|
|
||||||
return Object.keys(this.schema?.properties || {}).length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,22 +56,6 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
// return this.st?.list.filter((item: any) => item.checked) || [];
|
// return this.st?.list.filter((item: any) => item.checked) || [];
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
|
||||||
* 伸缩查询条件
|
|
||||||
*/
|
|
||||||
expandToggle() {
|
|
||||||
this._$expand = !this._$expand;
|
|
||||||
this.sf?.setValue('/_$expand', this._$expand);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 重置表单
|
|
||||||
*/
|
|
||||||
resetSF() {
|
|
||||||
this.sf.reset();
|
|
||||||
this._$expand = false;
|
|
||||||
this.isLoading = true
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 程序初始化入口
|
* 程序初始化入口
|
||||||
*/
|
*/
|
||||||
@ -95,29 +70,26 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
initSF() {
|
initSF() {
|
||||||
this.schema = {
|
this.schema = {
|
||||||
properties: {
|
properties: {
|
||||||
_$expand: { type: 'boolean', ui: { hidden: true } },
|
|
||||||
orderCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } },
|
orderCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } },
|
||||||
wayBillCode: {
|
wayBillCode: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '运单号',
|
title: '运单号',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入'
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
serialNumberCode: {
|
serialNumberCode: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '流水单号',
|
title: '流水单号',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入'
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
carrier: {
|
carrier: {
|
||||||
title: '承运司机',
|
title: '承运司机',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入司机姓名', visibleIf: {
|
placeholder: '请输入司机姓名'
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
carNumber: {
|
carNumber: {
|
||||||
@ -125,10 +97,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
maxLength: 9,
|
maxLength: 9,
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入'
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
payee: {
|
payee: {
|
||||||
@ -136,10 +105,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
maxLength: 9,
|
maxLength: 9,
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入'
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// uploadStatus: {
|
// uploadStatus: {
|
||||||
@ -170,10 +136,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
widget: 'select',
|
widget: 'select'
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ltdId: {
|
ltdId: {
|
||||||
@ -182,10 +145,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
widget: 'select',
|
widget: 'select',
|
||||||
asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false),
|
asyncData: () => this.service.getNetworkFreightForwarder({}, false),
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
allowClear: true
|
allowClear: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -195,11 +155,8 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'sl-from-to',
|
widget: 'sl-from-to',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd'
|
||||||
visibleIf: {
|
} as SFDateWidgetSchema
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFDateWidgetSchema,
|
|
||||||
},
|
},
|
||||||
uploadTime: {
|
uploadTime: {
|
||||||
title: '上传时间',
|
title: '上传时间',
|
||||||
@ -207,17 +164,10 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'sl-from-to',
|
widget: 'sl-from-to',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd'
|
||||||
visibleIf: {
|
} as SFDateWidgetSchema
|
||||||
_$expand: (value: boolean) => value,
|
}
|
||||||
},
|
}
|
||||||
} as SFDateWidgetSchema,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
this.ui = {
|
|
||||||
'*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 }, enter: () => this.search() },
|
|
||||||
$time: { grid: { span: 24 } },
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,22 +176,22 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
initST() {
|
initST() {
|
||||||
this.columns = [
|
this.columns = [
|
||||||
{ title: '', type: 'checkbox', className: 'text-center', width: '60px', },
|
{ title: '', type: 'checkbox', className: 'text-center', width: '60px' },
|
||||||
{ title: '上传状态', render: 'uploadStatus', className: 'text-center', width: '120px', },
|
{ title: '上传状态', render: 'uploadStatus', className: 'text-center', width: '120px' },
|
||||||
{ title: '本地校验', render: 'verifyStatus', className: 'text-center', width: '120px', },
|
{ title: '本地校验', render: 'verifyStatus', className: 'text-center', width: '120px' },
|
||||||
{ title: '流水单号', index: 'serialNumberCode', className: 'text-center', width: '190px', },
|
{ title: '流水单号', index: 'serialNumberCode', className: 'text-center', width: '190px' },
|
||||||
{
|
{
|
||||||
title: '订单号',
|
title: '订单号',
|
||||||
render: 'orderCode',
|
render: 'orderCode',
|
||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
width: '180px',
|
width: '180px'
|
||||||
},
|
},
|
||||||
{ title: '运单号', render: 'wayBillCode', className: 'text-center', width: '180px', },
|
{ title: '运单号', render: 'wayBillCode', className: 'text-center', width: '180px' },
|
||||||
{
|
{
|
||||||
title: '网络货运人',
|
title: '网络货运人',
|
||||||
index: 'ltdName',
|
index: 'ltdName',
|
||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
width: '180px',
|
width: '180px'
|
||||||
},
|
},
|
||||||
{ title: '实际承运人名称', index: 'carrier', className: 'text-center', width: '150px' },
|
{ title: '实际承运人名称', index: 'carrier', className: 'text-center', width: '150px' },
|
||||||
{ title: '实际承运人证件号码', index: 'cardId', className: 'text-center', width: '200px' },
|
{ title: '实际承运人证件号码', index: 'cardId', className: 'text-center', width: '200px' },
|
||||||
@ -259,12 +209,10 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
{ title: '实际支付金额', render: 'payAmount', className: 'text-center', width: '150px' },
|
{ title: '实际支付金额', render: 'payAmount', className: 'text-center', width: '150px' },
|
||||||
{ title: '交易时间', index: 'transactionTime', className: 'text-center', width: '180px' },
|
{ title: '交易时间', index: 'transactionTime', className: 'text-center', width: '180px' },
|
||||||
{ title: '上传次数', index: 'uploadFrequency', className: 'text-center', width: '120px' },
|
{ title: '上传次数', index: 'uploadFrequency', className: 'text-center', width: '120px' },
|
||||||
{ title: '上传时间', index: 'uploadTime', className: 'text-center', width: '180px' },
|
{ title: '上传时间', index: 'uploadTime', className: 'text-center', width: '180px' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*撤销
|
*撤销
|
||||||
* @param record 记录实例
|
* @param record 记录实例
|
||||||
@ -287,11 +235,9 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
|
|
||||||
this.search();
|
this.search();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
selectChange(item: any) {
|
selectChange(item: any) {
|
||||||
@ -300,7 +246,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.selectedRows = [];
|
this.selectedRows = [];
|
||||||
this.st.load(1);
|
this.st.load(1);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -310,7 +256,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
// this.router.navigate(['../view', record.uuid], { relativeTo: this.ar });
|
// this.router.navigate(['../view', record.uuid], { relativeTo: this.ar });
|
||||||
this.router.navigate(['../detail'], {
|
this.router.navigate(['../detail'], {
|
||||||
queryParams: {
|
queryParams: {
|
||||||
id: record.id,
|
id: record.id
|
||||||
},
|
},
|
||||||
relativeTo: this.ar
|
relativeTo: this.ar
|
||||||
});
|
});
|
||||||
@ -348,12 +294,9 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
this.service.msgSrv.success('上传成功');
|
this.service.msgSrv.success('上传成功');
|
||||||
this.search();
|
this.search();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看校验结果
|
* 查看校验结果
|
||||||
*/
|
*/
|
||||||
@ -368,12 +311,9 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
nzFooter: null
|
nzFooter: null
|
||||||
});
|
});
|
||||||
modalRef.afterClose.subscribe(res => {
|
modalRef.afterClose.subscribe(res => {});
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看监管审核结果
|
* 查看监管审核结果
|
||||||
*/
|
*/
|
||||||
@ -381,7 +321,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
if (record?.verifyStatus !== '2') {
|
if (record?.verifyStatus !== '2') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.openWainingModal('监管审核结果', record?.uploadResult)
|
this.openWainingModal('监管审核结果', record?.uploadResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -398,20 +338,18 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
this.service.msgSrv.success('更新成功');
|
this.service.msgSrv.success('更新成功');
|
||||||
this.selectedRows = [];
|
this.selectedRows = [];
|
||||||
this.st.reload();
|
this.st.reload();
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
search() {
|
search() {
|
||||||
this.selectedRows = [];
|
this.selectedRows = [];
|
||||||
this.st.load(1);
|
this.st.load(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异步导出
|
* 异步导出
|
||||||
*/
|
*/
|
||||||
export() {
|
export() {
|
||||||
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_export_fund_reporting);
|
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_export_fund_reporting);
|
||||||
}
|
}
|
||||||
@ -420,12 +358,11 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
this.modal.warning({
|
this.modal.warning({
|
||||||
nzMask: false,
|
nzMask: false,
|
||||||
nzTitle: title,
|
nzTitle: title,
|
||||||
nzContent: content,
|
nzContent: content
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
changeSt(e: STChange): void {
|
changeSt(e: STChange): void {
|
||||||
|
|
||||||
if (e.type === 'checkbox') {
|
if (e.type === 'checkbox') {
|
||||||
const checkRows = (e.checkbox as STData[]) || [];
|
const checkRows = (e.checkbox as STData[]) || [];
|
||||||
//判断当前页是否有选中的行
|
//判断当前页是否有选中的行
|
||||||
@ -434,16 +371,15 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
const stList = this.st.list;
|
const stList = this.st.list;
|
||||||
stList.forEach(item => {
|
stList.forEach(item => {
|
||||||
this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id);
|
this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
//添加新增的行
|
//添加新增的行
|
||||||
checkRows.forEach((item: any) => {
|
checkRows.forEach((item: any) => {
|
||||||
const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id);
|
const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id);
|
||||||
if (newSelectedList.length === 0) {
|
if (newSelectedList.length === 0) {
|
||||||
this.selectedRows.push(item);
|
this.selectedRows.push(item);
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
// 移除取消选中的行
|
// 移除取消选中的行
|
||||||
const stList = this.st.list;
|
const stList = this.st.list;
|
||||||
stList.forEach(item => {
|
stList.forEach(item => {
|
||||||
@ -451,12 +387,12 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
const index = this.selectedRows.findIndex(_item => item.id === _item.id);
|
const index = this.selectedRows.findIndex(_item => item.id === _item.id);
|
||||||
if (index !== -1) this.selectedRows.splice(index, 1);
|
if (index !== -1) this.selectedRows.splice(index, 1);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
} else if (e.type === 'loaded') {
|
} else if (e.type === 'loaded') {
|
||||||
// 页面加载时勾选
|
// 页面加载时勾选
|
||||||
(e?.loaded || []).forEach((r: any) => {
|
(e?.loaded || []).forEach((r: any) => {
|
||||||
this.selectedRows.forEach((x) => {
|
this.selectedRows.forEach(x => {
|
||||||
if (x.id === r.id) {
|
if (x.id === r.id) {
|
||||||
r.checked = true;
|
r.checked = true;
|
||||||
}
|
}
|
||||||
@ -470,7 +406,7 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
window.open(location.origin + `/#/order-management/vehicle/vehicle-detail/${item.orderId}`);
|
window.open(location.origin + `/#/order-management/vehicle/vehicle-detail/${item.orderId}`);
|
||||||
} else if (item.orderType === '2') {
|
} else if (item.orderType === '2') {
|
||||||
window.open(location.origin + `/#/order-management/bulk/bulk-detail/${item.orderId}`);
|
window.open(location.origin + `/#/order-management/bulk/bulk-detail/${item.orderId}`);
|
||||||
} else if (item.orderType === '3'){
|
} else if (item.orderType === '3') {
|
||||||
this.router.navigate(['/order-management/vehicle/vehicle-detail/' + item.orderId]);
|
this.router.navigate(['/order-management/vehicle/vehicle-detail/' + item.orderId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -478,14 +414,10 @@ export class DatatableFundReportingComponent implements OnInit {
|
|||||||
routeTowaybill(item: any) {
|
routeTowaybill(item: any) {
|
||||||
if (item.orderType === '1') {
|
if (item.orderType === '1') {
|
||||||
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.wayBillId}`);
|
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.wayBillId}`);
|
||||||
|
|
||||||
} else if (item.orderType === '2') {
|
} else if (item.orderType === '2') {
|
||||||
window.open(location.origin + `/#/waybill-management/bulk/bulk-detail/${item.wayBillId}`);
|
window.open(location.origin + `/#/waybill-management/bulk/bulk-detail/${item.wayBillId}`);
|
||||||
|
|
||||||
} else if (item.orderType === '3') {
|
} else if (item.orderType === '3') {
|
||||||
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.wayBillId}`);
|
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.wayBillId}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,5 @@
|
|||||||
<!--
|
<!-- <page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
* @Description :
|
|
||||||
* @Version : 1.0
|
|
||||||
* @Author : Shiming
|
|
||||||
* @Date : 2022-04-28 20:27:07
|
|
||||||
* @LastEditors : Shiming
|
|
||||||
* @LastEditTime : 2022-04-28 21:15:20
|
|
||||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\reporting\\components\\order-reporting\\order-reporting.component.html
|
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
|
||||||
-->
|
|
||||||
<page-header-wrapper [title]="''"></page-header-wrapper>
|
|
||||||
|
|
||||||
<nz-card>
|
<nz-card>
|
||||||
<!-- 搜索表单 -->
|
|
||||||
<div nz-row nzGutter="8">
|
<div nz-row nzGutter="8">
|
||||||
<div nz-col [nzSpan]=" 24 ">
|
<div nz-col [nzSpan]=" 24 ">
|
||||||
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
@ -27,19 +15,19 @@
|
|||||||
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card> -->
|
||||||
<nz-card>
|
<nz-card class="table-box">
|
||||||
<nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0">
|
<div class="tab_header">
|
||||||
|
<label class="page_title"> <label class="driver">|</label> 订单上报</label>
|
||||||
|
<nz-tabset [nzTabBarExtraContent]="extraTemplate">
|
||||||
|
<nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)">
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
</div>
|
||||||
|
|
||||||
<nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)">
|
|
||||||
</nz-tab>
|
|
||||||
</nz-tabset>
|
|
||||||
<!-- 数据列表 -->
|
<!-- 数据列表 -->
|
||||||
<st #st [scroll]="{x:'1200px'}" [data]="service.$api_get_order_reporting_page" [columns]="columns"
|
<st #st [scroll]="{x:'1200px',y:scrollY}" [data]="service.$api_get_order_reporting_page" [columns]="columns"
|
||||||
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
[req]="{ params: reqParams }" [page]="{ }" [loading]="service.http.loading" (change)="changeSt($event)">
|
||||||
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
|
||||||
[page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="service.http.loading"
|
|
||||||
(change)="changeSt($event)">
|
|
||||||
<ng-template st-row="billPutStatus" let-item let-index="index">
|
<ng-template st-row="billPutStatus" let-item let-index="index">
|
||||||
<a *ngIf="item?.billPutStatus === '2'" (click)="viewAuditResult(item)">{{filterStatus(item?.billPutStatus)}}</a>
|
<a *ngIf="item?.billPutStatus === '2'" (click)="viewAuditResult(item)">{{filterStatus(item?.billPutStatus)}}</a>
|
||||||
<span *ngIf="item?.billPutStatus !== '2'">{{filterStatus(item?.billPutStatus)}}</span>
|
<span *ngIf="item?.billPutStatus !== '2'">{{filterStatus(item?.billPutStatus)}}</span>
|
||||||
@ -85,16 +73,32 @@
|
|||||||
</st>
|
</st>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
<ng-template #extraTemplate>
|
<ng-template #extraTemplate>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center mr-sm">
|
||||||
<div class="mr-md">
|
<div class="mr-md">
|
||||||
已选择
|
已选择
|
||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
||||||
</div>
|
</div>
|
||||||
<button nz-button nzType="primary" (click)="upload()" acl [acl-ability]="['ORDER-REPORTING-upload']">上传</button>
|
<button nz-button nzDanger [nzLoading]="isLoading && st.loading" acl [acl-ability]="['ORDER-REPORTING-search']"
|
||||||
<button nz-button nzType="primary" (click)="recall()" acl [acl-ability]="['ORDER-REPORTING-recall']">撤回</button>
|
(click)="openDrawer()">筛选</button>
|
||||||
<button nz-button nzType="primary" (click)="updateData()" acl
|
<button nz-button nzDanger (click)="export()" acl [acl-ability]="['ORDER-REPORTING-export']"> 导出</button>
|
||||||
[acl-ability]="['ORDER-REPORTING-update-data']">更新数据</button>
|
<button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft">
|
||||||
<button nz-button nzType="primary" (click)="uploadSetting()" acl
|
更多<i nz-icon nzType="down" nzTheme="outline"></i></button>
|
||||||
[acl-ability]="['ORDER-REPORTING-search-updata']">上传设置</button>
|
<nz-dropdown-menu #menu="nzDropdownMenu">
|
||||||
|
<ul nz-menu>
|
||||||
|
<li nz-menu-item (click)="upload()" acl [acl-ability]="['ORDER-REPORTING-upload']">
|
||||||
|
上传
|
||||||
|
</li>
|
||||||
|
<li nz-menu-item (click)="recall()" acl [acl-ability]="['ORDER-REPORTING-recall']">
|
||||||
|
撤回
|
||||||
|
</li>
|
||||||
|
<li nz-menu-item (click)="updateData()" acl [acl-ability]="['ORDER-REPORTING-update-data']">
|
||||||
|
更新数据
|
||||||
|
</li>
|
||||||
|
<li nz-menu-item (click)="uploadSetting()" acl [acl-ability]="['ORDER-REPORTING-search-updata']">
|
||||||
|
上传设置
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nz-dropdown-menu>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
@ -1,5 +0,0 @@
|
|||||||
:host {
|
|
||||||
.text-black {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
import { DatatableOrderReportingComponent } from './order-reporting.component';
|
|
||||||
|
|
||||||
describe('DatatableOrderReportingComponent', () => {
|
|
||||||
let component: DatatableOrderReportingComponent;
|
|
||||||
let fixture: ComponentFixture<DatatableOrderReportingComponent>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DatatableOrderReportingComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(DatatableOrderReportingComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -2,8 +2,9 @@ import { Component, OnInit, ViewChild } from '@angular/core';
|
|||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { STChange, STColumn, STComponent, STData } from '@delon/abc/st';
|
import { STChange, STColumn, STComponent, STData } from '@delon/abc/st';
|
||||||
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
|
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
|
||||||
import { ShipperBaseService } from '@shared';
|
import { SearchDrawerService, ShipperBaseService } from '@shared';
|
||||||
import { NzModalService } from 'ng-zorro-antd/modal';
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { BasicTableComponent } from 'src/app/routes/commom';
|
||||||
import { ReportingService } from '../../services/reporting.service';
|
import { ReportingService } from '../../services/reporting.service';
|
||||||
import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component';
|
import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component';
|
||||||
import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component';
|
import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component';
|
||||||
@ -12,15 +13,11 @@ import { DatatableReportingvViewTrackComponent } from '../view-track/view-track.
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'app-datatable-order-reporting',
|
selector: 'app-datatable-order-reporting',
|
||||||
templateUrl: './order-reporting.component.html',
|
templateUrl: './order-reporting.component.html',
|
||||||
styleUrls: ['./order-reporting.component.less']
|
styleUrls: ['../../../../commom/less/commom-table.less']
|
||||||
})
|
})
|
||||||
export class DatatableOrderReportingComponent implements OnInit {
|
export class DatatableOrderReportingComponent extends BasicTableComponent implements OnInit {
|
||||||
_$expand = false;
|
|
||||||
ui!: SFUISchema;
|
|
||||||
schema!: SFSchema;
|
|
||||||
columns!: STColumn[];
|
columns!: STColumn[];
|
||||||
@ViewChild('st', { static: false }) st!: STComponent;
|
@ViewChild('st', { static: false }) st!: STComponent;
|
||||||
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
|
||||||
tabType!: string;
|
tabType!: string;
|
||||||
tabs: any[] = [
|
tabs: any[] = [
|
||||||
{ name: '待上传', value: '0' },
|
{ name: '待上传', value: '0' },
|
||||||
@ -37,15 +34,9 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
private router: Router,
|
private router: Router,
|
||||||
private ar: ActivatedRoute,
|
private ar: ActivatedRoute,
|
||||||
private modal: NzModalService,
|
private modal: NzModalService,
|
||||||
public shipperSrv: ShipperBaseService
|
public searchDrawerService: SearchDrawerService
|
||||||
) {
|
) {
|
||||||
}
|
super(searchDrawerService);
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询字段个数
|
|
||||||
*/
|
|
||||||
get queryFieldCount(): number {
|
|
||||||
return Object.keys(this.schema?.properties || {}).length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,7 +44,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
get reqParams() {
|
get reqParams() {
|
||||||
const params = Object.assign({}, this.sf?.value || {}, {
|
const params = Object.assign({}, this.sf?.value || {}, {
|
||||||
billPutStatus: this.selectedIndex,
|
billPutStatus: this.selectedIndex
|
||||||
});
|
});
|
||||||
delete params._$expand;
|
delete params._$expand;
|
||||||
return { ...params };
|
return { ...params };
|
||||||
@ -66,22 +57,6 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
// return this.st?.list.filter((item: any) => item.checked) || [];
|
// return this.st?.list.filter((item: any) => item.checked) || [];
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
|
||||||
* 伸缩查询条件
|
|
||||||
*/
|
|
||||||
expandToggle() {
|
|
||||||
this._$expand = !this._$expand;
|
|
||||||
this.sf?.setValue('/_$expand', this._$expand);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 重置表单
|
|
||||||
*/
|
|
||||||
resetSF() {
|
|
||||||
this.sf.reset();
|
|
||||||
this._$expand = false;
|
|
||||||
this.isLoading = true
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 程序初始化入口
|
* 程序初始化入口
|
||||||
*/
|
*/
|
||||||
@ -102,8 +77,8 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
title: '运单号',
|
title: '运单号',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入'
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
networkTransporter: {
|
networkTransporter: {
|
||||||
title: '网络货运人',
|
title: '网络货运人',
|
||||||
@ -111,7 +86,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
widget: 'select',
|
widget: 'select',
|
||||||
asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false),
|
asyncData: () => this.service.getNetworkFreightForwarder({}, false),
|
||||||
allowClear: true
|
allowClear: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -119,19 +94,14 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
title: '货主',
|
title: '货主',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入'
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
driverName: {
|
driverName: {
|
||||||
title: '承运司机',
|
title: '承运司机',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入司机姓名/手机号', visibleIf: {
|
placeholder: '请输入司机姓名/手机号'
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
carNo: {
|
carNo: {
|
||||||
@ -139,10 +109,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
maxLength: 9,
|
maxLength: 9,
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入'
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// putStatus: {
|
// putStatus: {
|
||||||
@ -175,10 +142,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
widget: 'select',
|
widget: 'select',
|
||||||
allowClear: true,
|
allowClear: true
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
recentlyPutTime: {
|
recentlyPutTime: {
|
||||||
@ -187,11 +151,8 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'sl-from-to',
|
widget: 'sl-from-to',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd'
|
||||||
visibleIf: {
|
} as SFDateWidgetSchema
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFDateWidgetSchema,
|
|
||||||
},
|
},
|
||||||
orderReceivingTime: {
|
orderReceivingTime: {
|
||||||
title: '运单生成时间',
|
title: '运单生成时间',
|
||||||
@ -199,11 +160,8 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'sl-from-to',
|
widget: 'sl-from-to',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd'
|
||||||
visibleIf: {
|
} as SFDateWidgetSchema
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFDateWidgetSchema,
|
|
||||||
},
|
},
|
||||||
dispatchedDate: {
|
dispatchedDate: {
|
||||||
title: '发货时间',
|
title: '发货时间',
|
||||||
@ -211,11 +169,8 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'sl-from-to',
|
widget: 'sl-from-to',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd'
|
||||||
visibleIf: {
|
} as SFDateWidgetSchema
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFDateWidgetSchema,
|
|
||||||
},
|
},
|
||||||
receivingDate: {
|
receivingDate: {
|
||||||
title: '收货时间',
|
title: '收货时间',
|
||||||
@ -223,11 +178,8 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'sl-from-to',
|
widget: 'sl-from-to',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
format: 'yyyy-MM-dd',
|
format: 'yyyy-MM-dd'
|
||||||
visibleIf: {
|
} as SFDateWidgetSchema
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFDateWidgetSchema,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
trajectoryDataAppStatus: {
|
trajectoryDataAppStatus: {
|
||||||
@ -240,10 +192,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
],
|
],
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
widget: 'select',
|
widget: 'select'
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trajectoryDataStatus: {
|
trajectoryDataStatus: {
|
||||||
@ -256,22 +205,10 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
],
|
],
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
widget: 'select',
|
widget: 'select'
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
};
|
|
||||||
this.ui = {
|
|
||||||
'*': {
|
|
||||||
spanLabelFixed: 120,
|
|
||||||
grid: {
|
|
||||||
lg: 12,
|
|
||||||
xl: 8
|
|
||||||
}, enter: () => this.search()
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,24 +217,24 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
initST() {
|
initST() {
|
||||||
this.columns = [
|
this.columns = [
|
||||||
{ title: '', type: 'checkbox', className: 'text-center', width: '60px', },
|
{ title: '', type: 'checkbox', className: 'text-center', width: '60px' },
|
||||||
{ title: '订单状态', index: 'billPutStatusLabel', className: 'text-center', width: '120px', },
|
{ title: '订单状态', index: 'billPutStatusLabel', className: 'text-center', width: '120px' },
|
||||||
{ title: '司机状态', index: 'driverPutStatusLabel', className: 'text-center', width: '120px', },
|
{ title: '司机状态', index: 'driverPutStatusLabel', className: 'text-center', width: '120px' },
|
||||||
{ title: '车辆状态', index: 'carPutStatusLabel', className: 'text-center', width: '120px', },
|
{ title: '车辆状态', index: 'carPutStatusLabel', className: 'text-center', width: '120px' },
|
||||||
{ title: '本地校验', render: 'checkStatus', className: 'text-center', width: '120px', },
|
{ title: '本地校验', render: 'checkStatus', className: 'text-center', width: '120px' },
|
||||||
{
|
{
|
||||||
title: '订单号',
|
title: '订单号',
|
||||||
render: 'billCode',
|
render: 'billCode',
|
||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
width: '180px',
|
width: '180px'
|
||||||
},
|
},
|
||||||
{ title: '运单号', render: 'wayBillCode', className: 'text-center', width: '180px', },
|
{ title: '运单号', render: 'wayBillCode', className: 'text-center', width: '180px' },
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '网络货运人',
|
title: '网络货运人',
|
||||||
index: 'enterpriseInfoName',
|
index: 'enterpriseInfoName',
|
||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
width: '180px',
|
width: '180px'
|
||||||
},
|
},
|
||||||
{ title: '统一社会信用代码', index: 'unifiedSocialCreditCode', className: 'text-center', width: '200px' },
|
{ title: '统一社会信用代码', index: 'unifiedSocialCreditCode', className: 'text-center', width: '200px' },
|
||||||
{ title: '运单生成时间', index: 'wayBillCreateTime', className: 'text-center', width: '180px' },
|
{ title: '运单生成时间', index: 'wayBillCreateTime', className: 'text-center', width: '180px' },
|
||||||
@ -317,12 +254,11 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
width: '250px',
|
width: '250px',
|
||||||
type: 'enum',
|
type: 'enum',
|
||||||
enum: {
|
enum: {
|
||||||
"4": "绿色",
|
'4': '绿色',
|
||||||
"3": "黄绿色",
|
'3': '黄绿色',
|
||||||
"2": "黄色",
|
'2': '黄色',
|
||||||
"1": "蓝色"
|
'1': '蓝色'
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
{ title: '司机姓名', index: 'driverName', className: 'text-center', width: '150px' },
|
{ title: '司机姓名', index: 'driverName', className: 'text-center', width: '150px' },
|
||||||
{ title: '司机手机号码', index: 'driverPhone', className: 'text-center', width: '200px' },
|
{ title: '司机手机号码', index: 'driverPhone', className: 'text-center', width: '200px' },
|
||||||
@ -330,18 +266,14 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
{ title: '货物信息', index: 'goodsName', className: 'text-center', width: '180px' },
|
{ title: '货物信息', index: 'goodsName', className: 'text-center', width: '180px' },
|
||||||
{ title: '实际承运人名称', index: 'carrierName', className: 'text-center', width: '150px' },
|
{ title: '实际承运人名称', index: 'carrierName', className: 'text-center', width: '150px' },
|
||||||
{ title: '实际承运人证件号码', index: 'carrierIdentityNo', className: 'text-center', width: '200px' },
|
{ title: '实际承运人证件号码', index: 'carrierIdentityNo', className: 'text-center', width: '200px' },
|
||||||
|
{ title: '实际承运人道路运输许可证号', index: 'roadTransportNo', className: 'text-center', width: '230px' },
|
||||||
{ title: '实际承运人道路运输许可证号', index: 'roadTransportNo', className: 'text-center', width: '150px' },
|
|
||||||
|
|
||||||
{ title: '车辆轨迹', render: 'car', className: 'text-center', width: '250px' },
|
{ title: '车辆轨迹', render: 'car', className: 'text-center', width: '250px' },
|
||||||
{ title: '司机轨迹', render: 'driver', className: 'text-center', width: '150px' },
|
{ title: '司机轨迹', render: 'driver', className: 'text-center', width: '150px' },
|
||||||
{ title: '上传次数', index: 'putNumber', className: 'text-center', width: '150px' },
|
{ title: '上传次数', index: 'putNumber', className: 'text-center', width: '150px' },
|
||||||
{ title: '上传时间', index: 'recentlyPutTime', className: 'text-center', width: '180px' },
|
{ title: '上传时间', index: 'recentlyPutTime', className: 'text-center', width: '180px' }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*撤销
|
*撤销
|
||||||
* @param record 记录实例
|
* @param record 记录实例
|
||||||
@ -363,14 +295,12 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
this.service.msgSrv.success('撤销成功');
|
this.service.msgSrv.success('撤销成功');
|
||||||
this.search();
|
this.search();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
changeSt(e: STChange): void {
|
changeSt(e: STChange): void {
|
||||||
|
|
||||||
if (e.type === 'checkbox') {
|
if (e.type === 'checkbox') {
|
||||||
const checkRows = (e.checkbox as STData[]) || [];
|
const checkRows = (e.checkbox as STData[]) || [];
|
||||||
//判断当前页是否有选中的行
|
//判断当前页是否有选中的行
|
||||||
@ -379,16 +309,15 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
const stList = this.st.list;
|
const stList = this.st.list;
|
||||||
stList.forEach(item => {
|
stList.forEach(item => {
|
||||||
this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id);
|
this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
//添加新增的行
|
//添加新增的行
|
||||||
checkRows.forEach((item: any) => {
|
checkRows.forEach((item: any) => {
|
||||||
const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id);
|
const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id);
|
||||||
if (newSelectedList.length === 0) {
|
if (newSelectedList.length === 0) {
|
||||||
this.selectedRows.push(item);
|
this.selectedRows.push(item);
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
// 移除取消选中的行
|
// 移除取消选中的行
|
||||||
const stList = this.st.list;
|
const stList = this.st.list;
|
||||||
stList.forEach(item => {
|
stList.forEach(item => {
|
||||||
@ -396,12 +325,12 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
const index = this.selectedRows.findIndex(_item => item.id === _item.id);
|
const index = this.selectedRows.findIndex(_item => item.id === _item.id);
|
||||||
if (index !== -1) this.selectedRows.splice(index, 1);
|
if (index !== -1) this.selectedRows.splice(index, 1);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
} else if (e.type === 'loaded') {
|
} else if (e.type === 'loaded') {
|
||||||
// 页面加载时勾选
|
// 页面加载时勾选
|
||||||
(e?.loaded || []).forEach((r: any) => {
|
(e?.loaded || []).forEach((r: any) => {
|
||||||
this.selectedRows.forEach((x) => {
|
this.selectedRows.forEach(x => {
|
||||||
if (x.id === r.id) {
|
if (x.id === r.id) {
|
||||||
r.checked = true;
|
r.checked = true;
|
||||||
}
|
}
|
||||||
@ -415,7 +344,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.selectedRows = [];
|
this.selectedRows = [];
|
||||||
this.st.load(1);
|
this.st.load(1);
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -425,7 +354,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
// this.router.navigate(['../view', record.uuid], { relativeTo: this.ar });
|
// this.router.navigate(['../view', record.uuid], { relativeTo: this.ar });
|
||||||
this.router.navigate(['../detail'], {
|
this.router.navigate(['../detail'], {
|
||||||
queryParams: {
|
queryParams: {
|
||||||
id: record.id,
|
id: record.id
|
||||||
},
|
},
|
||||||
relativeTo: this.ar
|
relativeTo: this.ar
|
||||||
});
|
});
|
||||||
@ -463,10 +392,9 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
this.service.msgSrv.success('上传成功');
|
this.service.msgSrv.success('上传成功');
|
||||||
this.search();
|
this.search();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param params 上传设置
|
* @param params 上传设置
|
||||||
@ -479,8 +407,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
nzComponentParams: {},
|
nzComponentParams: {},
|
||||||
nzFooter: null
|
nzFooter: null
|
||||||
});
|
});
|
||||||
modalRef.afterClose.subscribe(res => {
|
modalRef.afterClose.subscribe(res => {});
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -496,8 +423,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
nzFooter: null
|
nzFooter: null
|
||||||
});
|
});
|
||||||
modalRef.afterClose.subscribe(res => {
|
modalRef.afterClose.subscribe(res => {});
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -507,18 +433,17 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
if (record?.billStatus !== '2') {
|
if (record?.billStatus !== '2') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.openWainingModal('监管审核结果', record?.result)
|
this.openWainingModal('监管审核结果', record?.result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
search() {
|
search() {
|
||||||
this.selectedRows = [];
|
this.selectedRows = [];
|
||||||
this.st.load(1);
|
this.st.load(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异步导出
|
* 异步导出
|
||||||
*/
|
*/
|
||||||
export() {
|
export() {
|
||||||
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_export_reporting_order);
|
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_export_reporting_order);
|
||||||
}
|
}
|
||||||
@ -527,15 +452,15 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
this.modal.warning({
|
this.modal.warning({
|
||||||
nzMask: false,
|
nzMask: false,
|
||||||
nzTitle: title,
|
nzTitle: title,
|
||||||
nzContent: content,
|
nzContent: content
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看轨迹
|
* 查看轨迹
|
||||||
*/
|
*/
|
||||||
viewTrack(_record: any, trajectory: string) {
|
viewTrack(_record: any, trajectory: string) {
|
||||||
const title = trajectory === 'car' ? '车辆' : '司机'
|
const title = trajectory === 'car' ? '车辆' : '司机';
|
||||||
const modalRef = this.modal.create({
|
const modalRef = this.modal.create({
|
||||||
nzTitle: `查看${title}轨迹`,
|
nzTitle: `查看${title}轨迹`,
|
||||||
nzWidth: 1000,
|
nzWidth: 1000,
|
||||||
@ -546,13 +471,12 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
nzFooter: null
|
nzFooter: null
|
||||||
});
|
});
|
||||||
modalRef.afterClose.subscribe(res => {
|
modalRef.afterClose.subscribe(res => {});
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新数据
|
* 更新数据
|
||||||
*/
|
*/
|
||||||
updateData() {
|
updateData() {
|
||||||
if (this.selectedRows.length === 0) {
|
if (this.selectedRows.length === 0) {
|
||||||
this.openWainingModal('请选择需要更新的数据');
|
this.openWainingModal('请选择需要更新的数据');
|
||||||
@ -565,7 +489,7 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
this.selectedRows = [];
|
this.selectedRows = [];
|
||||||
this.st.reload();
|
this.st.reload();
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
filterStatus(status: number) {
|
filterStatus(status: number) {
|
||||||
@ -578,7 +502,6 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
return '上传异常';
|
return '上传异常';
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -592,16 +515,15 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
return '不通过';
|
return '不通过';
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
routeToOrder(item: any) {
|
routeToOrder(item: any) {
|
||||||
if (item.billType === '1') {
|
if (item.billType === '1') {
|
||||||
window.open(location.origin + `/#/order-management/vehicle/vehicle-detail/${item.orderId}`);
|
window.open(location.origin + `/#/order-management/vehicle/vehicle-detail/${item.orderId}`);
|
||||||
} else if (item.billType === '2') {
|
} else if (item.billType === '2') {
|
||||||
window.open(location.origin + `/#/order-management/bulk/bulk-detail/${item.orderId}`);
|
window.open(location.origin + `/#/order-management/bulk/bulk-detail/${item.orderId}`);
|
||||||
} else if (item.billType === '3') {
|
} else if (item.billType === '3') {
|
||||||
window.open(location.origin + `/#/order-management/vehicle/vehicle-detail/${item.orderId}`);
|
window.open(location.origin + `/#/order-management/vehicle/vehicle-detail/${item.orderId}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -609,13 +531,10 @@ export class DatatableOrderReportingComponent implements OnInit {
|
|||||||
routeTowaybill(item: any) {
|
routeTowaybill(item: any) {
|
||||||
if (item.billType === '1') {
|
if (item.billType === '1') {
|
||||||
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.waybillId}`);
|
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.waybillId}`);
|
||||||
|
|
||||||
} else if (item.billType === '2') {
|
} else if (item.billType === '2') {
|
||||||
window.open(location.origin + `/#/waybill-management/bulk/bulk-detail/${item.waybillId}`);
|
window.open(location.origin + `/#/waybill-management/bulk/bulk-detail/${item.waybillId}`);
|
||||||
} else if (item.billType === '3') {
|
} else if (item.billType === '3') {
|
||||||
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.waybillId}`);
|
window.open(location.origin + `/#/waybill-management/vehicle/vehicle-detail/${item.waybillId}`);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
import { Injectable, Injector } from '@angular/core';
|
import { Injectable, Injector } from '@angular/core';
|
||||||
import { BaseService } from '@shared';
|
import { BaseService, ShipperBaseService } from '@shared';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class ReportingService extends BaseService {
|
export class ReportingService extends ShipperBaseService {
|
||||||
|
|
||||||
$api_get_order_reporting_page = `/api/sdc/regulation/list/queryPage`; // 订单上报-列表
|
$api_get_order_reporting_page = `/api/sdc/regulation/list/queryPage`; // 订单上报-列表
|
||||||
$api_upload_order_reporting = `/api/sdc/regulation/push`; // 上传订单上报
|
$api_upload_order_reporting = `/api/sdc/regulation/push`; // 上传订单上报
|
||||||
|
|||||||
@ -11,15 +11,13 @@
|
|||||||
|
|
||||||
import { Injectable, Injector } from '@angular/core';
|
import { Injectable, Injector } from '@angular/core';
|
||||||
import { _HttpClient } from '@delon/theme';
|
import { _HttpClient } from '@delon/theme';
|
||||||
import { NzMessageService } from 'ng-zorro-antd/message';
|
import { ShipperBaseService } from '@shared';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { BaseService } from 'src/app/shared/services/core/base.service';
|
|
||||||
import { EAFileUtil } from 'src/app/shared/utils/file.util';
|
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class DataService extends BaseService {
|
export class DataService extends ShipperBaseService {
|
||||||
|
|
||||||
// 查询运营报表
|
// 查询运营报表
|
||||||
$api_listOperationalReportPage = `/api/sdc/report/listOperationalReportPage`;
|
$api_listOperationalReportPage = `/api/sdc/report/listOperationalReportPage`;
|
||||||
|
|||||||
@ -32,7 +32,7 @@
|
|||||||
</st>
|
</st>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
<ng-template #extraTemplate>
|
<ng-template #extraTemplate>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center mr-sm">
|
||||||
<div class="mr-md">
|
<div class="mr-md">
|
||||||
已选择
|
已选择
|
||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
||||||
|
|||||||
@ -1,22 +0,0 @@
|
|||||||
:host {
|
|
||||||
.text-black {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
.icon {
|
|
||||||
display: inline-block;
|
|
||||||
width: 1em;
|
|
||||||
height: 1em;
|
|
||||||
stroke-width: 0;
|
|
||||||
stroke: currentColor;
|
|
||||||
/* stylelint-disable-next-line order/properties-order */
|
|
||||||
fill: currentColor;
|
|
||||||
}
|
|
||||||
::ng-deep {
|
|
||||||
.imgBox {
|
|
||||||
display: flex;
|
|
||||||
img {
|
|
||||||
width: 60px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -2,7 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
|
|||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { STColumn, STComponent, STData } from '@delon/abc/st';
|
import { STColumn, STComponent, STData } from '@delon/abc/st';
|
||||||
import { SFDateWidgetSchema, SFSchemaEnum, SFSelectWidgetSchema } from '@delon/form';
|
import { SFDateWidgetSchema, SFSchemaEnum, SFSelectWidgetSchema } from '@delon/form';
|
||||||
import { SearchDrawerService, ShipperBaseService } from '@shared';
|
import { SearchDrawerService } from '@shared';
|
||||||
import { NzModalService } from 'ng-zorro-antd/modal';
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
@ -34,7 +34,6 @@ export class TaxManagementOrderReportingComponent extends BasicTableComponent im
|
|||||||
public service: TaxManagementService,
|
public service: TaxManagementService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private ar: ActivatedRoute,
|
private ar: ActivatedRoute,
|
||||||
public shipperservice: ShipperBaseService,
|
|
||||||
private modal: NzModalService,
|
private modal: NzModalService,
|
||||||
public searchDrawerService: SearchDrawerService
|
public searchDrawerService: SearchDrawerService
|
||||||
) {
|
) {
|
||||||
@ -163,7 +162,7 @@ export class TaxManagementOrderReportingComponent extends BasicTableComponent im
|
|||||||
widget: 'select',
|
widget: 'select',
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
asyncData: () => this.shipperservice.getNetworkFreightForwarder()
|
asyncData: () => this.service.getNetworkFreightForwarder()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
recentlyPutTime: {
|
recentlyPutTime: {
|
||||||
|
|||||||
Reference in New Issue
Block a user