merge partner
This commit is contained in:
@ -20,7 +20,7 @@ module.exports = {
|
|||||||
// }
|
// }
|
||||||
'//api': {
|
'//api': {
|
||||||
target: {
|
target: {
|
||||||
host: 'tms-api-test.eascs.com',
|
host: 'tms-api-dev.eascs.com',
|
||||||
protocol: 'https:',
|
protocol: 'https:',
|
||||||
port: 443
|
port: 443
|
||||||
},
|
},
|
||||||
|
|||||||
@ -30,7 +30,7 @@ export class AuthGuard extends ACLGuard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
|
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
|
||||||
if (childRoute.routeConfig?.loadChildren) {
|
if (childRoute.routeConfig?.loadChildren || childRoute.routeConfig?.children) {
|
||||||
return super.canActivateChild(childRoute, state);
|
return super.canActivateChild(childRoute, state);
|
||||||
} else {
|
} else {
|
||||||
return this.handle(childRoute, state, 2, this.settingRoute(childRoute.params, state.url));
|
return this.handle(childRoute, state, 2, this.settingRoute(childRoute.params, state.url));
|
||||||
|
|||||||
@ -137,12 +137,12 @@ export class StartupService {
|
|||||||
const userData = this.httpClient.post(this.userSrv.$api_get_user_by_token, {}).pipe(map((res: any) => res.data));
|
const userData = this.httpClient.post(this.userSrv.$api_get_user_by_token, {}).pipe(map((res: any) => res.data));
|
||||||
|
|
||||||
// 菜单数据
|
// 菜单数据
|
||||||
const menuData = this.httpClient
|
// const menuData = this.httpClient
|
||||||
.post(this.coreSrv.$api_get_current_user_menus, {
|
// .post(this.coreSrv.$api_get_current_user_menus, {
|
||||||
appId: this.coreSrv.envSrv.getEnvironment().appId
|
// appId: this.coreSrv.envSrv.getEnvironment().appId
|
||||||
})
|
// })
|
||||||
.pipe(map((res: any) => res.data));
|
// .pipe(map((res: any) => res.data));
|
||||||
// const menuData = this.httpClient.get('assets/mocks/menu-data.json').pipe(map((res: any) => res.data.menu));
|
const menuData = this.httpClient.get('assets/mocks/menu-data.json').pipe(map((res: any) => res.data.menu));
|
||||||
|
|
||||||
return zip(appData, userData, menuData);
|
return zip(appData, userData, menuData);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,10 +17,17 @@ const alainConfig: AlainConfig = {
|
|||||||
page: { show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000], toTop: false },
|
page: { show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000], toTop: false },
|
||||||
modal: { size: 'lg' }
|
modal: { size: 'lg' }
|
||||||
},
|
},
|
||||||
sf: { button: { search: '查询' } },
|
sf: { button: { search: '查询' }, ui: { placeholder: '请输入' } },
|
||||||
pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true },
|
pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true },
|
||||||
auth: { login_url: '/passport/login' },
|
auth: { login_url: '/passport/login' },
|
||||||
acl: { guard_url: '/exception/403' }
|
acl: { guard_url: '/exception/403' },
|
||||||
|
chart: {
|
||||||
|
// 以下是默认配置,如果项目无法外网访问,可以根据 `angular.json` 配置将依赖包直接使用 `./assets***` 路径
|
||||||
|
libs: [
|
||||||
|
'https://gw.alipayobjects.com/os/lib/antv/g2/4.1.4/dist/g2.min.js',
|
||||||
|
'https://gw.alipayobjects.com/os/lib/antv/data-set/0.11.7/dist/data-set.js'
|
||||||
|
]
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const alainModules = [AlainThemeModule.forRoot(), DelonACLModule.forRoot()];
|
const alainModules = [AlainThemeModule.forRoot(), DelonACLModule.forRoot()];
|
||||||
|
|||||||
@ -28,17 +28,17 @@ export class ContractManagementContractListComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 查询参数
|
* 查询参数
|
||||||
*/
|
*/
|
||||||
get reqParams() {
|
get reqParams() {
|
||||||
const params = {
|
const params = {
|
||||||
...this.sf?.value,
|
...this.sf?.value,
|
||||||
}
|
}
|
||||||
delete params.signTime;
|
delete params.signTime;
|
||||||
delete params._$expand;
|
delete params._$expand;
|
||||||
if(this.datePipe.transform(this.sf?.value?.signTime?.[0], 'yyyy-MM-dd HH:mm:ss') && this.datePipe.transform(this.sf?.value?.signTime?.[1], 'yyyy-MM-dd HH:mm:ss')) {
|
if (this.datePipe.transform(this.sf?.value?.signTime?.[0], 'yyyy-MM-dd HH:mm:ss') && this.datePipe.transform(this.sf?.value?.signTime?.[1], 'yyyy-MM-dd HH:mm:ss')) {
|
||||||
params.signTime = {
|
params.signTime = {
|
||||||
start: this.datePipe.transform(this.sf?.value?.signTime?.[0], 'yyyy-MM-dd HH:mm:ss'),
|
start: this.datePipe.transform(this.sf?.value?.signTime?.[0], 'yyyy-MM-dd HH:mm:ss'),
|
||||||
end: this.datePipe.transform(this.sf?.value?.signTime?.[1], 'yyyy-MM-dd HH:mm:ss'),
|
end: this.datePipe.transform(this.sf?.value?.signTime?.[1], 'yyyy-MM-dd HH:mm:ss'),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
...params
|
...params
|
||||||
@ -51,7 +51,7 @@ export class ContractManagementContractListComponent implements OnInit {
|
|||||||
public shipperservice: ShipperBaseService,
|
public shipperservice: ShipperBaseService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private datePipe: DatePipe,
|
private datePipe: DatePipe,
|
||||||
) {}
|
) { }
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.initST()
|
this.initST()
|
||||||
@ -60,7 +60,7 @@ export class ContractManagementContractListComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 初始化数据列表
|
* 初始化数据列表
|
||||||
*/
|
*/
|
||||||
initST() {
|
initST() {
|
||||||
this.columns = [
|
this.columns = [
|
||||||
{
|
{
|
||||||
title: '合同编号',
|
title: '合同编号',
|
||||||
@ -72,27 +72,13 @@ export class ContractManagementContractListComponent implements OnInit {
|
|||||||
title: '签约对象',
|
title: '签约对象',
|
||||||
width: '100px',
|
width: '100px',
|
||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
index:'signingObject'
|
index: 'documentType'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '合同类型',
|
title: '合同类型',
|
||||||
width: '100px',
|
width: '100px',
|
||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
index:'contractType'
|
index: 'contractName'
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '货源类型',
|
|
||||||
width: '100px',
|
|
||||||
className: 'text-center',
|
|
||||||
index:'resourceType'
|
|
||||||
},
|
|
||||||
{ title: '合同名称', index: 'contractName', width: '120px', className: 'text-center' },
|
|
||||||
{ title: '网络货运人', index: 'enterpriseInfoName', width: '120px', className: 'text-center' },
|
|
||||||
{
|
|
||||||
title: '合同对象',
|
|
||||||
className: 'text-center',
|
|
||||||
width: '120px',
|
|
||||||
index: 'contractObjectName'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '业务单号',
|
title: '业务单号',
|
||||||
@ -122,119 +108,69 @@ export class ContractManagementContractListComponent implements OnInit {
|
|||||||
'7': { text: '已拒签', color: 'warning' },
|
'7': { text: '已拒签', color: 'warning' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 初始化查询表单
|
* 初始化查询表单
|
||||||
*/
|
*/
|
||||||
initSF() {
|
initSF() {
|
||||||
this.schema = {
|
this.schema = {
|
||||||
properties: {
|
properties: {
|
||||||
_$expand: { type: 'boolean', ui: { hidden: true } },
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
contractCode: {
|
contractCode: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '合同编号',
|
title: '合同编号',
|
||||||
},
|
|
||||||
businessCode: {
|
|
||||||
type: 'string',
|
|
||||||
title: '业务单号'
|
|
||||||
},
|
|
||||||
signingObject: {
|
|
||||||
type: 'string',
|
|
||||||
title: '签约对象',
|
|
||||||
enum: [
|
|
||||||
{ label: '全部', value: '' },
|
|
||||||
{ label: '货主', value: 1 },
|
|
||||||
{ label: '司机', value: 2 },
|
|
||||||
],
|
|
||||||
ui: {
|
|
||||||
widget: 'select',
|
|
||||||
placeholder: '请选择',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
contractType: {
|
|
||||||
title: '合同类型',
|
|
||||||
type: 'string',
|
|
||||||
default: '',
|
|
||||||
ui: {
|
|
||||||
widget: 'dict-select',
|
|
||||||
containsAllLable: true,
|
|
||||||
params: { dictKey: 'contract:type' },
|
|
||||||
containAllLable:true,
|
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFSelectWidgetSchema,
|
|
||||||
},
|
|
||||||
resourceType: {
|
|
||||||
title: '货源类型',
|
|
||||||
type: 'string',
|
|
||||||
default: '',
|
|
||||||
ui: {
|
|
||||||
widget: 'dict-select',
|
|
||||||
containsAllLable: true,
|
|
||||||
params: { dictKey: 'goodresource:type' },
|
|
||||||
containAllLable:true,
|
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFSelectWidgetSchema,
|
|
||||||
},
|
|
||||||
enterpriseInfoId: {
|
|
||||||
type: 'string',
|
|
||||||
title: '网络货运人',
|
|
||||||
ui: {
|
|
||||||
widget: 'select',
|
|
||||||
placeholder: '请选择',
|
|
||||||
allowClear: true,
|
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value
|
|
||||||
},
|
|
||||||
asyncData: () => this.shipperservice.getNetworkFreightForwarder()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
contractObjectName: {
|
|
||||||
type: 'string',
|
|
||||||
title: '合同对象',
|
|
||||||
ui: {
|
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
signTime: {
|
|
||||||
title: '签署日期',
|
|
||||||
type: 'string',
|
|
||||||
ui: {
|
|
||||||
widget: 'custom',
|
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
esignFlowStatus: {
|
|
||||||
title: '状态',
|
|
||||||
type: 'string',
|
|
||||||
default: '',
|
|
||||||
ui: {
|
|
||||||
widget: 'dict-select',
|
|
||||||
containsAllLable: true,
|
|
||||||
params: { dictKey: 'esign:flow:status' },
|
|
||||||
containAllLable:true,
|
|
||||||
visibleIf: {
|
|
||||||
_$expand: (value: boolean) => value,
|
|
||||||
},
|
|
||||||
} as SFSelectWidgetSchema,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
type: 'object',
|
businessCode: {
|
||||||
};
|
type: 'string',
|
||||||
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
title: '业务单号'
|
||||||
}
|
},
|
||||||
/**
|
shipperName: {
|
||||||
* 查询字段个数
|
type: 'string',
|
||||||
*/
|
title: '托运人'
|
||||||
|
},
|
||||||
|
carrierName: {
|
||||||
|
type: 'string',
|
||||||
|
title: '承运人',
|
||||||
|
ui: {
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
documentType: {
|
||||||
|
title: '单据类型',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
ui: {
|
||||||
|
widget: 'dict-select',
|
||||||
|
containsAllLabel: true,
|
||||||
|
params: { dictKey: 'contract:document:type' },
|
||||||
|
containAllLable: true,
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
signTime: {
|
||||||
|
title: '签署日期',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'custom',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type: 'object',
|
||||||
|
};
|
||||||
|
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 查询字段个数
|
||||||
|
*/
|
||||||
get queryFieldCount(): number {
|
get queryFieldCount(): number {
|
||||||
return Object.keys(this.schema?.properties || {}).length;
|
return Object.keys(this.schema?.properties || {}).length;
|
||||||
}
|
}
|
||||||
@ -303,7 +239,7 @@ export class ContractManagementContractListComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 伸缩查询条件
|
* 伸缩查询条件
|
||||||
*/
|
*/
|
||||||
expandToggle(): void {
|
expandToggle(): void {
|
||||||
this._$expand = !this._$expand;
|
this._$expand = !this._$expand;
|
||||||
this.sf?.setValue('/_$expand', this._$expand);
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,23 +26,23 @@ export class ContractManagementTemplateDetailComponent implements OnInit {
|
|||||||
columns: STColumn[] = [];
|
columns: STColumn[] = [];
|
||||||
datass: any = [
|
datass: any = [
|
||||||
{
|
{
|
||||||
one: '1',
|
one: '1',
|
||||||
two: '1',
|
two: '1',
|
||||||
three: '1',
|
three: '1',
|
||||||
id: 1
|
id: 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
one: '2',
|
one: '2',
|
||||||
two: '2',
|
two: '2',
|
||||||
three: '2',
|
three: '2',
|
||||||
id: 2
|
id: 2
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
constructor(
|
constructor(
|
||||||
public service: ContractManagementService,
|
public service: ContractManagementService,
|
||||||
private modal: NzModalService,
|
private modal: NzModalService,
|
||||||
private router: Router
|
private router: Router
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询参数
|
* 查询参数
|
||||||
|
|||||||
@ -23,26 +23,26 @@ export class PaymentOrderComponent implements OnInit {
|
|||||||
_$expand = false;
|
_$expand = false;
|
||||||
|
|
||||||
selectedRows: any[] = [];
|
selectedRows: any[] = [];
|
||||||
constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) {}
|
constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) { }
|
||||||
|
|
||||||
ngOnInit(): void {}
|
ngOnInit(): void { }
|
||||||
|
|
||||||
beforeReq = (requestOptions: STRequestOptions) => {
|
beforeReq = (requestOptions: STRequestOptions) => {
|
||||||
if (this.sf) {
|
if (this.sf) {
|
||||||
let params = {...this.sf.value};
|
let params = { ...this.sf.value };
|
||||||
if(params.payDate){
|
if (params.payDate) {
|
||||||
const payDate = {start:this.sf?.value?.payDate?.[0],end:this.sf?.value?.payDate?.[1]}
|
const payDate = { start: this.sf?.value?.payDate?.[0], end: this.sf?.value?.payDate?.[1] }
|
||||||
params.payDate = payDate;
|
params.payDate = payDate;
|
||||||
}
|
}
|
||||||
if(params.payDate2){
|
if (params.payDate2) {
|
||||||
const payDate2 = {start:this.sf?.value?.payDate2?.[0],end:this.sf?.value?.payDate2?.[1]}
|
const payDate2 = { start: this.sf?.value?.payDate2?.[0], end: this.sf?.value?.payDate2?.[1] }
|
||||||
params.payDate2 = payDate2;
|
params.payDate2 = payDate2;
|
||||||
}
|
}
|
||||||
if(params.createTime){
|
if (params.createTime) {
|
||||||
const createTime = {start:this.sf?.value?.createTime?.[0],end:this.sf?.value?.createTime?.[1]}
|
const createTime = { start: this.sf?.value?.createTime?.[0], end: this.sf?.value?.createTime?.[1] }
|
||||||
params.createTime = createTime;
|
params.createTime = createTime;
|
||||||
}
|
}
|
||||||
Object.assign(requestOptions.body,params );
|
Object.assign(requestOptions.body, params);
|
||||||
}
|
}
|
||||||
return requestOptions;
|
return requestOptions;
|
||||||
};
|
};
|
||||||
@ -123,7 +123,7 @@ export class PaymentOrderComponent implements OnInit {
|
|||||||
title: '付款类型',
|
title: '付款类型',
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
params: { dictKey: 'pay:type' },
|
params: { dictKey: 'pay:type' },
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
}
|
}
|
||||||
@ -133,7 +133,7 @@ export class PaymentOrderComponent implements OnInit {
|
|||||||
title: '付款方式',
|
title: '付款方式',
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
params: { dictKey: 'pay:mode' },
|
params: { dictKey: 'pay:mode' },
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
|
|||||||
@ -28,8 +28,9 @@ export class WithdrawalsRecordComponent {
|
|||||||
refundStatus: any = '';
|
refundStatus: any = '';
|
||||||
|
|
||||||
msg = '';
|
msg = '';
|
||||||
|
constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) { }
|
||||||
|
|
||||||
constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) {}
|
ngOnInit(): void { }
|
||||||
|
|
||||||
beforeReq = (requestOptions: STRequestOptions) => {
|
beforeReq = (requestOptions: STRequestOptions) => {
|
||||||
if (this.sf) {
|
if (this.sf) {
|
||||||
@ -42,6 +43,7 @@ export class WithdrawalsRecordComponent {
|
|||||||
refundStatus: this.refundStatus || null
|
refundStatus: this.refundStatus || null
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
delete requestOptions?.body?.expand;
|
||||||
return requestOptions;
|
return requestOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,7 +83,7 @@ export class WithdrawalsRecordComponent {
|
|||||||
disabled: () => this.service.http.loading,
|
disabled: () => this.service.http.loading,
|
||||||
type: 'default',
|
type: 'default',
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
if (!this.msg) {
|
if (!this.msg || this.msg.trim().length === 0) {
|
||||||
this.service.msgSrv.warning('请填写拒绝原因 ');
|
this.service.msgSrv.warning('请填写拒绝原因 ');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -128,8 +128,8 @@ export class FreightAccountService extends ShipperBaseService {
|
|||||||
// 根据预收款ID获取核销信息明细
|
// 根据预收款ID获取核销信息明细
|
||||||
$api_get_advance_collection_hrxiao = '/api/fcc/ficoAhxH/getAhxHByYskblaId';
|
$api_get_advance_collection_hrxiao = '/api/fcc/ficoAhxH/getAhxHByYskblaId';
|
||||||
|
|
||||||
constructor(public injector: Injector, public eaCacheSrv: EACacheService) {
|
constructor(public injector: Injector) {
|
||||||
super(injector, eaCacheSrv);
|
super(injector);
|
||||||
}
|
}
|
||||||
|
|
||||||
getReceiptUrl(url: string, params: any) {
|
getReceiptUrl(url: string, params: any) {
|
||||||
|
|||||||
@ -64,7 +64,7 @@ export class insuranceManagementListComponent implements OnInit {
|
|||||||
public shipperservice: ShipperBaseService,
|
public shipperservice: ShipperBaseService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private modale: ModalHelper,
|
private modale: ModalHelper,
|
||||||
) {}
|
) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询参数
|
* 查询参数
|
||||||
@ -176,7 +176,7 @@ export class insuranceManagementListComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'insure:type' },
|
params: { dictKey: 'insure:type' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -239,7 +239,7 @@ export class insuranceManagementListComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
} as SFSelectWidgetSchema
|
} as SFSelectWidgetSchema
|
||||||
},
|
},
|
||||||
|
|
||||||
driverName: {
|
driverName: {
|
||||||
title: '承运司机',
|
title: '承运司机',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
@ -264,7 +264,7 @@ export class insuranceManagementListComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'insure:status' },
|
params: { dictKey: 'insure:status' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -334,33 +334,33 @@ export class insuranceManagementListComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
} as SFDateWidgetSchema
|
} as SFDateWidgetSchema
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
type: 'object'
|
type: 'object'
|
||||||
};
|
};
|
||||||
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
||||||
}
|
}
|
||||||
// 获取城市列表
|
// 获取城市列表
|
||||||
getRegionCode(regionCode: any) {
|
getRegionCode(regionCode: any) {
|
||||||
console.log(regionCode);
|
console.log(regionCode);
|
||||||
return this.service
|
return this.service
|
||||||
.request(this.service.$api_get_enterprise_project, { id: regionCode })
|
.request(this.service.$api_get_enterprise_project, { id: regionCode })
|
||||||
.pipe(
|
.pipe(
|
||||||
map(res =>
|
map(res =>
|
||||||
res.map((item: any) => ({
|
res.map((item: any) => ({
|
||||||
label: item.projectName,
|
label: item.projectName,
|
||||||
value: item.id
|
value: item.id
|
||||||
}))
|
}))
|
||||||
)
|
|
||||||
)
|
)
|
||||||
.subscribe(res => {
|
)
|
||||||
this.sf.getProperty('/enterpriseProjectId')!.schema.enum = res;
|
.subscribe(res => {
|
||||||
this.sf.getProperty('/enterpriseProjectId')!.widget.reset(res);
|
this.sf.getProperty('/enterpriseProjectId')!.schema.enum = res;
|
||||||
// if (this.enterpriseProjectIds) {
|
this.sf.getProperty('/enterpriseProjectId')!.widget.reset(res);
|
||||||
// this.sf1.setValue('/enterpriseProjectId', this.enterpriseProjectIds);
|
// if (this.enterpriseProjectIds) {
|
||||||
// }
|
// this.sf1.setValue('/enterpriseProjectId', this.enterpriseProjectIds);
|
||||||
});
|
// }
|
||||||
}
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 初始化数据列表
|
* 初始化数据列表
|
||||||
*/
|
*/
|
||||||
@ -517,7 +517,7 @@ export class insuranceManagementListComponent implements OnInit {
|
|||||||
this._$expand = !this._$expand;
|
this._$expand = !this._$expand;
|
||||||
this.sf?.setValue('/_$expand', this._$expand);
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
}
|
}
|
||||||
tabChange(item: any) {}
|
tabChange(item: any) { }
|
||||||
/**
|
/**
|
||||||
* 重置表单
|
* 重置表单
|
||||||
*/
|
*/
|
||||||
@ -557,8 +557,8 @@ export class insuranceManagementListComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 保险配置
|
// 保险配置
|
||||||
changeOrder() {
|
changeOrder() {
|
||||||
this.router.navigate(['/insurance-management/list-set', 1]);
|
this.router.navigate(['/insurance-management/list-set', 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@ export class InsuranceManagementService extends ShipperBaseService {
|
|||||||
// 退保费
|
// 退保费
|
||||||
$api_get_addINPBillRefundApplication = `/billRefundApplication/addINPBillRefundApplication`;
|
$api_get_addINPBillRefundApplication = `/billRefundApplication/addINPBillRefundApplication`;
|
||||||
|
|
||||||
constructor(public injector: Injector, public eaCacheSrv: EACacheService) {
|
constructor(public injector: Injector) {
|
||||||
super(injector, eaCacheSrv);
|
super(injector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -277,7 +277,7 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'overall:payment:status' },
|
params: { dictKey: 'overall:payment:status' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -332,7 +332,7 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'service:type' },
|
params: { dictKey: 'service:type' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -343,7 +343,7 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
params: { dictKey: 'goodresource:settlement:type' },
|
params: { dictKey: 'goodresource:settlement:type' },
|
||||||
containAllLable: true,
|
containAllLable: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
@ -392,27 +392,27 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
};
|
};
|
||||||
this.uiView = { '*': { spanLabelFixed: 80, grid: { span: 12, gutter: 4 } } };
|
this.uiView = { '*': { spanLabelFixed: 80, grid: { span: 12, gutter: 4 } } };
|
||||||
}
|
}
|
||||||
// 获取城市列表
|
// 获取城市列表
|
||||||
getRegionCode(regionCode: any) {
|
getRegionCode(regionCode: any) {
|
||||||
console.log(regionCode);
|
console.log(regionCode);
|
||||||
return this.service
|
return this.service
|
||||||
.request(this.service.$api_get_enterprise_project, { id: regionCode })
|
.request(this.service.$api_get_enterprise_project, { id: regionCode })
|
||||||
.pipe(
|
.pipe(
|
||||||
map(res =>
|
map(res =>
|
||||||
res.map((item: any) => ({
|
res.map((item: any) => ({
|
||||||
label: item.projectName,
|
label: item.projectName,
|
||||||
value: item.id
|
value: item.id
|
||||||
}))
|
}))
|
||||||
)
|
|
||||||
)
|
)
|
||||||
.subscribe(res => {
|
)
|
||||||
this.sf.getProperty('/enterpriseProjectId')!.schema.enum = res;
|
.subscribe(res => {
|
||||||
this.sf.getProperty('/enterpriseProjectId')!.widget.reset(res);
|
this.sf.getProperty('/enterpriseProjectId')!.schema.enum = res;
|
||||||
// if (this.enterpriseProjectIds) {
|
this.sf.getProperty('/enterpriseProjectId')!.widget.reset(res);
|
||||||
// this.sf1.setValue('/enterpriseProjectId', this.enterpriseProjectIds);
|
// if (this.enterpriseProjectIds) {
|
||||||
// }
|
// this.sf1.setValue('/enterpriseProjectId', this.enterpriseProjectIds);
|
||||||
});
|
// }
|
||||||
}
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 初始化数据列表
|
* 初始化数据列表
|
||||||
*/
|
*/
|
||||||
@ -553,8 +553,9 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
{
|
{
|
||||||
text: '取消订单',
|
text: '取消订单',
|
||||||
click: _record => this.cancellation(_record),
|
click: _record => this.cancellation(_record),
|
||||||
iif: item => item.billStatus !== '1' && item.billStatus !== '6' && item.overallPaymentStatus != '2',
|
iif: item =>
|
||||||
acl: { ability: ['ORDER-BULK-signBulkOrder'] },
|
item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3' || item.billStatus == '1',
|
||||||
|
acl: { ability: ['ORDER-BULK-signBulkOrder'] },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: '申请退款',
|
text: '申请退款',
|
||||||
@ -649,7 +650,7 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
this._$expand = !this._$expand;
|
this._$expand = !this._$expand;
|
||||||
this.sf?.setValue('/_$expand', this._$expand);
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
}
|
}
|
||||||
tabChange(item: any) {}
|
tabChange(item: any) { }
|
||||||
/**
|
/**
|
||||||
* 重置表单
|
* 重置表单
|
||||||
*/
|
*/
|
||||||
@ -661,8 +662,8 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 导入货源
|
* 导入货源
|
||||||
*/
|
*/
|
||||||
importGoodsSource() {}
|
importGoodsSource() { }
|
||||||
audit(item: any) {}
|
audit(item: any) { }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 审核关闭弹窗
|
* 审核关闭弹窗
|
||||||
@ -683,7 +684,7 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 审核通过按钮
|
* 审核通过按钮
|
||||||
*/
|
*/
|
||||||
handleOK() {}
|
handleOK() { }
|
||||||
OpenPrice(item: any) {
|
OpenPrice(item: any) {
|
||||||
this.changeId = item.id;
|
this.changeId = item.id;
|
||||||
this.isVisible = true;
|
this.isVisible = true;
|
||||||
@ -736,10 +737,10 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
nzFooter: null
|
nzFooter: null
|
||||||
});
|
});
|
||||||
modal.afterClose.subscribe((res: any) => {
|
modal.afterClose.subscribe((res: any) => {
|
||||||
if(res) {
|
if (res) {
|
||||||
this.st.reload(1);
|
this.st.reload(1);
|
||||||
this.getGoodsSourceStatistical();
|
this.getGoodsSourceStatistical();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -816,10 +817,10 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
changeOrder(value: any) {
|
changeOrder(value: any) {
|
||||||
this.router.navigate(['order-management/bulk-detailChange', value.id]);
|
this.router.navigate(['order-management/bulk-detailChange', value.id]);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*申请退款
|
*申请退款
|
||||||
*/
|
*/
|
||||||
applyRefund(item: any) {
|
applyRefund(item: any) {
|
||||||
const modalRef = this.modal.create({
|
const modalRef = this.modal.create({
|
||||||
nzTitle: '申请退款',
|
nzTitle: '申请退款',
|
||||||
nzContent: OneCarOrderCancelConfirmComponent,
|
nzContent: OneCarOrderCancelConfirmComponent,
|
||||||
@ -830,7 +831,7 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
nzFooter: null
|
nzFooter: null
|
||||||
});
|
});
|
||||||
modalRef.afterClose.subscribe((res: boolean) => {
|
modalRef.afterClose.subscribe((res: boolean) => {
|
||||||
if(res) {
|
if (res) {
|
||||||
this.resetSF;
|
this.resetSF;
|
||||||
this.st.load();
|
this.st.load();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
private modal: NzModalService,
|
private modal: NzModalService,
|
||||||
public shipperservice: ShipperBaseService,
|
public shipperservice: ShipperBaseService,
|
||||||
private router: Router
|
private router: Router
|
||||||
) {}
|
) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询参数
|
* 查询参数
|
||||||
@ -236,7 +236,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'overall:payment:status' },
|
params: { dictKey: 'overall:payment:status' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -262,7 +262,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'service:type' },
|
params: { dictKey: 'service:type' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -286,27 +286,27 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
};
|
};
|
||||||
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
||||||
}
|
}
|
||||||
// 获取城市列表
|
// 获取城市列表
|
||||||
getRegionCode(regionCode: any) {
|
getRegionCode(regionCode: any) {
|
||||||
console.log(regionCode);
|
console.log(regionCode);
|
||||||
return this.service
|
return this.service
|
||||||
.request(this.service.$api_get_enterprise_project, { id: regionCode })
|
.request(this.service.$api_get_enterprise_project, { id: regionCode })
|
||||||
.pipe(
|
.pipe(
|
||||||
map(res =>
|
map(res =>
|
||||||
res.map((item: any) => ({
|
res.map((item: any) => ({
|
||||||
label: item.projectName,
|
label: item.projectName,
|
||||||
value: item.id
|
value: item.id
|
||||||
}))
|
}))
|
||||||
)
|
|
||||||
)
|
)
|
||||||
.subscribe(res => {
|
)
|
||||||
this.sf.getProperty('/enterpriseProjectId')!.schema.enum = res;
|
.subscribe(res => {
|
||||||
this.sf.getProperty('/enterpriseProjectId')!.widget.reset(res);
|
this.sf.getProperty('/enterpriseProjectId')!.schema.enum = res;
|
||||||
// if (this.enterpriseProjectIds) {
|
this.sf.getProperty('/enterpriseProjectId')!.widget.reset(res);
|
||||||
// this.sf1.setValue('/enterpriseProjectId', this.enterpriseProjectIds);
|
// if (this.enterpriseProjectIds) {
|
||||||
// }
|
// this.sf1.setValue('/enterpriseProjectId', this.enterpriseProjectIds);
|
||||||
});
|
// }
|
||||||
}
|
});
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 初始化数据列表
|
* 初始化数据列表
|
||||||
*/
|
*/
|
||||||
@ -432,7 +432,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
index: 'applyUserName'
|
index: 'applyUserName'
|
||||||
},
|
},
|
||||||
{ title: '状态', index: 'handleStatusLabel', className: 'text-center' },
|
{ title: '状态', index: 'handleStatusLabel', className: 'text-center' },
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
@ -445,7 +445,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
{
|
{
|
||||||
text: '撤销',
|
text: '撤销',
|
||||||
click: (_record) => this.revoke(_record),
|
click: (_record) => this.revoke(_record),
|
||||||
iif: item => item.handleStatus === '1' || item.handleStatus === 1,
|
iif: item => item.handleStatus === '1' || item.handleStatus === 1,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -466,16 +466,20 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
index: 'amountAfterChange',
|
index: 'amountAfterChange',
|
||||||
render: 'amountAfterChange'
|
render: 'amountAfterChange'
|
||||||
},
|
},
|
||||||
{ title: '变更值',
|
{
|
||||||
|
title: '变更值',
|
||||||
index: 'amountchangeValue',
|
index: 'amountchangeValue',
|
||||||
render: 'amountchangeValue',
|
render: 'amountchangeValue',
|
||||||
width: '120px',
|
width: '120px',
|
||||||
className: 'text-center' },
|
className: 'text-center'
|
||||||
{ title: '变更后',
|
},
|
||||||
|
{
|
||||||
|
title: '变更后',
|
||||||
index: 'amountBeforeChange',
|
index: 'amountBeforeChange',
|
||||||
render: 'amountBeforeChange',
|
render: 'amountBeforeChange',
|
||||||
width: '120px',
|
width: '120px',
|
||||||
className: 'text-center' }
|
className: 'text-center'
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -484,30 +488,30 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
get queryFieldCount(): number {
|
get queryFieldCount(): number {
|
||||||
return Object.keys(this.schema?.properties || {}).length;
|
return Object.keys(this.schema?.properties || {}).length;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 浮动费用查看
|
* 浮动费用查看
|
||||||
*/
|
*/
|
||||||
FloatView(item: any) {
|
FloatView(item: any) {
|
||||||
console.log(item)
|
console.log(item)
|
||||||
this.changeViewId = item.id;
|
this.changeViewId = item.id;
|
||||||
this.service.request(this.service.$api_getChangeRecordWholeDetail, {id: this.changeViewId}).subscribe((res) => {
|
this.service.request(this.service.$api_getChangeRecordWholeDetail, { id: this.changeViewId }).subscribe((res) => {
|
||||||
this.ViewCause = res;
|
this.ViewCause = res;
|
||||||
|
})
|
||||||
|
this.isVisibleView = true
|
||||||
|
}
|
||||||
|
revoke(item: any) {
|
||||||
|
this.modal.confirm({
|
||||||
|
nzTitle: '是否确定立即撤销费用变更!</i>',
|
||||||
|
nzOnOk: () =>
|
||||||
|
this.service.request(this.service.$api_get_revokeChangeRecord, { id: item.id }).subscribe((res) => {
|
||||||
|
console.log(res)
|
||||||
|
if (res) {
|
||||||
|
this.service.msgSrv.success('撤销成功!')
|
||||||
|
this.stFloat.reload()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
this.isVisibleView = true
|
});
|
||||||
}
|
}
|
||||||
revoke(item: any) {
|
|
||||||
this.modal.confirm({
|
|
||||||
nzTitle: '是否确定立即撤销费用变更!</i>',
|
|
||||||
nzOnOk: () =>
|
|
||||||
this.service.request(this.service.$api_get_revokeChangeRecord, { id: item.id}).subscribe((res) => {
|
|
||||||
console.log(res)
|
|
||||||
if(res) {
|
|
||||||
this.service.msgSrv.success('撤销成功!')
|
|
||||||
this.stFloat.reload()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 伸缩查询条件
|
* 伸缩查询条件
|
||||||
*/
|
*/
|
||||||
@ -515,7 +519,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
this._$expand = !this._$expand;
|
this._$expand = !this._$expand;
|
||||||
this.sf?.setValue('/_$expand', this._$expand);
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
}
|
}
|
||||||
tabChange(item: any) {}
|
tabChange(item: any) { }
|
||||||
/**
|
/**
|
||||||
* 重置表单
|
* 重置表单
|
||||||
*/
|
*/
|
||||||
@ -527,7 +531,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 导入货源
|
* 导入货源
|
||||||
*/
|
*/
|
||||||
importGoodsSource() {}
|
importGoodsSource() { }
|
||||||
OpenPrice(item: any) {
|
OpenPrice(item: any) {
|
||||||
this.changeId = item.id;
|
this.changeId = item.id;
|
||||||
this.isVisible = true;
|
this.isVisible = true;
|
||||||
@ -584,24 +588,24 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
|
|
||||||
this.uiView = { '*': { spanLabelFixed: 110, grid: { span: 24 } } };
|
this.uiView = { '*': { spanLabelFixed: 110, grid: { span: 24 } } };
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* 审核关闭弹窗
|
* 审核关闭弹窗
|
||||||
*/
|
*/
|
||||||
handleCancel(value?: string) {
|
handleCancel(value?: string) {
|
||||||
if(value === '0') {
|
if (value === '0') {
|
||||||
this.isVisible = false;
|
this.isVisible = false;
|
||||||
} else if(value === '1') {
|
} else if (value === '1') {
|
||||||
this.isVisibleRE = false;
|
this.isVisibleRE = false;
|
||||||
} else if(value === '2') {
|
} else if (value === '2') {
|
||||||
this.isVisibleView = false;
|
this.isVisibleView = false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/**
|
}
|
||||||
* 审核通过按钮
|
/**
|
||||||
*/
|
* 审核通过按钮
|
||||||
|
*/
|
||||||
handleOK() {
|
handleOK() {
|
||||||
let idList: any[] = [];
|
let idList: any[] = [];
|
||||||
if(this.selectedRows.length > 0) {
|
if (this.selectedRows.length > 0) {
|
||||||
this.selectedRows.forEach(item => {
|
this.selectedRows.forEach(item => {
|
||||||
idList.push(item.id);
|
idList.push(item.id);
|
||||||
});
|
});
|
||||||
@ -618,55 +622,55 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
|
|||||||
this.service.msgSrv.success('提交成功!');
|
this.service.msgSrv.success('提交成功!');
|
||||||
this.isVisibleRE = false;
|
this.isVisibleRE = false;
|
||||||
this.st?.load(1);
|
this.st?.load(1);
|
||||||
this.getGoodsSourceStatistical()
|
this.getGoodsSourceStatistical()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 审核拒绝按钮
|
* 审核拒绝按钮
|
||||||
*/
|
*/
|
||||||
reject() {
|
reject() {
|
||||||
if(!this.sfView.value.complianceRemark) {
|
if (!this.sfView.value.complianceRemark) {
|
||||||
this.service.msgSrv.error('备注不能为空!');
|
this.service.msgSrv.error('备注不能为空!');
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
let idList: any[] = [];
|
|
||||||
if(this.selectedRows.length > 0) {
|
|
||||||
this.selectedRows.forEach(item => {
|
|
||||||
idList.push(item.id);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
idList.push(this.sfView.value.billCode)
|
|
||||||
}
|
|
||||||
const parms = {
|
|
||||||
ids: idList,
|
|
||||||
complianceRemark: this.sfView.value.complianceRemark,
|
|
||||||
complianceStatus: 2,
|
|
||||||
};
|
|
||||||
this.service.request(this.service.$api_get_updateBillByCompliance, parms).subscribe(res => {
|
|
||||||
if (res) {
|
|
||||||
this.service.msgSrv.success('提交成功!');
|
|
||||||
this.isVisibleRE = false;
|
|
||||||
this.st?.load(1);
|
|
||||||
this.getGoodsSourceStatistical()
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
/**
|
let idList: any[] = [];
|
||||||
*合规抽查
|
if (this.selectedRows.length > 0) {
|
||||||
*/
|
this.selectedRows.forEach(item => {
|
||||||
|
idList.push(item.id);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
idList.push(this.sfView.value.billCode)
|
||||||
|
}
|
||||||
|
const parms = {
|
||||||
|
ids: idList,
|
||||||
|
complianceRemark: this.sfView.value.complianceRemark,
|
||||||
|
complianceStatus: 2,
|
||||||
|
};
|
||||||
|
this.service.request(this.service.$api_get_updateBillByCompliance, parms).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.service.msgSrv.success('提交成功!');
|
||||||
|
this.isVisibleRE = false;
|
||||||
|
this.st?.load(1);
|
||||||
|
this.getGoodsSourceStatistical()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*合规抽查
|
||||||
|
*/
|
||||||
audit(item?: any) {
|
audit(item?: any) {
|
||||||
if (item) {
|
if (item) {
|
||||||
this.isVisibleRE = true;
|
this.isVisibleRE = true;
|
||||||
this.auditId = item.id;
|
this.auditId = item.id;
|
||||||
this.initSTAudit(1);
|
this.initSTAudit(1);
|
||||||
} else {
|
} else {
|
||||||
if(this.selectedRows.length <= 0) {
|
if (this.selectedRows.length <= 0) {
|
||||||
this.service.msgSrv.error('请选择订单!')
|
this.service.msgSrv.error('请选择订单!')
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
this.isVisibleRE = true;
|
this.isVisibleRE = true;
|
||||||
this.initSTAudit(2);
|
this.initSTAudit(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,7 +41,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
private modal: NzModalService,
|
private modal: NzModalService,
|
||||||
public shipperservice: ShipperBaseService,
|
public shipperservice: ShipperBaseService,
|
||||||
private router: Router
|
private router: Router
|
||||||
) {}
|
) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询参数
|
* 查询参数
|
||||||
@ -211,7 +211,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'overall:payment:status' },
|
params: { dictKey: 'overall:payment:status' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -237,7 +237,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'service:type' },
|
params: { dictKey: 'service:type' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -248,7 +248,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
params: { dictKey: 'goodresource:settlement:type' },
|
params: { dictKey: 'goodresource:settlement:type' },
|
||||||
containAllLable: true,
|
containAllLable: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
@ -351,7 +351,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
{
|
{
|
||||||
text: '修改',
|
text: '修改',
|
||||||
click: _record => this.modification(_record),
|
click: _record => this.modification(_record),
|
||||||
iif: item => item.auditStatus == '1' ,
|
iif: item => item.auditStatus == '1',
|
||||||
acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] },
|
acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -377,7 +377,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
this._$expand = !this._$expand;
|
this._$expand = !this._$expand;
|
||||||
this.sf?.setValue('/_$expand', this._$expand);
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
}
|
}
|
||||||
tabChange(item: any) {}
|
tabChange(item: any) { }
|
||||||
/**
|
/**
|
||||||
* 重置表单
|
* 重置表单
|
||||||
*/
|
*/
|
||||||
@ -389,13 +389,13 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 导入货源
|
* 导入货源
|
||||||
*/
|
*/
|
||||||
importGoodsSource() {}
|
importGoodsSource() { }
|
||||||
audit(item: any) {}
|
audit(item: any) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审核通过按钮
|
* 审核通过按钮
|
||||||
*/
|
*/
|
||||||
handleOK() {}
|
handleOK() { }
|
||||||
OpenPrice(item: any) {
|
OpenPrice(item: any) {
|
||||||
this.isVisible = true;
|
this.isVisible = true;
|
||||||
}
|
}
|
||||||
@ -414,12 +414,12 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
modalRef.afterClose.subscribe((result: any) => {
|
modalRef.afterClose.subscribe((result: any) => {
|
||||||
this.st.load(1);
|
this.st.load(1);
|
||||||
this.getGoodsSourceStatistical()
|
this.getGoodsSourceStatistical()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 生成电子单据
|
// 生成电子单据
|
||||||
generate(item: any, sts?: number) {
|
generate(item: any, sts?: number) {
|
||||||
let text = '查看凭证';
|
let text = '查看凭证';
|
||||||
if(sts == 2) {
|
if (sts == 2) {
|
||||||
text = '生成电子单据';
|
text = '生成电子单据';
|
||||||
}
|
}
|
||||||
const modalRef = this.modal.create({
|
const modalRef = this.modal.create({
|
||||||
@ -435,23 +435,23 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
modalRef.afterClose.subscribe((result: any) => {
|
modalRef.afterClose.subscribe((result: any) => {
|
||||||
this.st.load(1);
|
this.st.load(1);
|
||||||
this.getGoodsSourceStatistical()
|
this.getGoodsSourceStatistical()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 通过
|
// 通过
|
||||||
sign(item?: any) {
|
sign(item?: any) {
|
||||||
let params: any = []
|
let params: any = []
|
||||||
let text = '';
|
let text = '';
|
||||||
if(item === '1') {
|
if (item === '1') {
|
||||||
if(this.selectedRows.length <= 0) {
|
if (this.selectedRows.length <= 0) {
|
||||||
this.service.msgSrv.error('请选择订单!')
|
this.service.msgSrv.error('请选择订单!')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.selectedRows.forEach(ite => {
|
this.selectedRows.forEach(ite => {
|
||||||
params.push(ite.id);
|
params.push(ite.id);
|
||||||
});
|
});
|
||||||
text = `<b>已选择${this.selectedRows.length}条订单,确认批量通过审核吗?</b>`
|
text = `<b>已选择${this.selectedRows.length}条订单,确认批量通过审核吗?</b>`
|
||||||
} else {
|
} else {
|
||||||
text = `<b>确认通过审核吗?</b>`
|
text = `<b>确认通过审核吗?</b>`
|
||||||
params.push(item.id);
|
params.push(item.id);
|
||||||
}
|
}
|
||||||
console.log(this.selectedRows)
|
console.log(this.selectedRows)
|
||||||
@ -474,7 +474,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
// 批量生成电子单据
|
// 批量生成电子单据
|
||||||
sign1(item?: any) {
|
sign1(item?: any) {
|
||||||
if(this.selectedRows.length <= 0) {
|
if (this.selectedRows.length <= 0) {
|
||||||
this.service.msgSrv.error('请选择订单!')
|
this.service.msgSrv.error('请选择订单!')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,34 +40,34 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
public shipperservice: ShipperBaseService,
|
public shipperservice: ShipperBaseService,
|
||||||
private modal: NzModalService,
|
private modal: NzModalService,
|
||||||
public router: Router
|
public router: Router
|
||||||
) {}
|
) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询参数
|
* 查询参数
|
||||||
*/
|
*/
|
||||||
get reqParams() {
|
get reqParams() {
|
||||||
// const a:any = {};
|
// const a:any = {};
|
||||||
// if(this.resourceStatus) {
|
// if(this.resourceStatus) {
|
||||||
// a.representationsStatus = this.resourceStatus
|
// a.representationsStatus = this.resourceStatus
|
||||||
// }
|
// }
|
||||||
// return {
|
// return {
|
||||||
// ...a,
|
// ...a,
|
||||||
// ...this.sf?.value,
|
// ...this.sf?.value,
|
||||||
// };
|
// };
|
||||||
const a:any = {};
|
const a: any = {};
|
||||||
if(this.resourceStatus) {
|
if (this.resourceStatus) {
|
||||||
a.representationsStatus = this.resourceStatus
|
a.representationsStatus = this.resourceStatus
|
||||||
}
|
}
|
||||||
const params: any = Object.assign({}, this.sf?.value || {});
|
const params: any = Object.assign({}, this.sf?.value || {});
|
||||||
delete params._$expand;
|
delete params._$expand;
|
||||||
return {
|
return {
|
||||||
...a,
|
...a,
|
||||||
...params,
|
...params,
|
||||||
createTime: {
|
createTime: {
|
||||||
start: this.sf?.value?.createTime?.[0] || '',
|
start: this.sf?.value?.createTime?.[0] || '',
|
||||||
end: this.sf?.value?.createTime?.[1] || '',
|
end: this.sf?.value?.createTime?.[1] || '',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
search() {
|
search() {
|
||||||
this.st?.load(1);
|
this.st?.load(1);
|
||||||
@ -173,7 +173,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'freight:type' },
|
params: { dictKey: 'freight:type' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -185,7 +185,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
ui: {
|
ui: {
|
||||||
widget: 'dict-select',
|
widget: 'dict-select',
|
||||||
params: { dictKey: 'BulkFreightUnitPriceType' },
|
params: { dictKey: 'BulkFreightUnitPriceType' },
|
||||||
containsAllLable: true,
|
containsAllLabel: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
}
|
}
|
||||||
@ -312,7 +312,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
{
|
{
|
||||||
text: '审核',
|
text: '审核',
|
||||||
click: _record => this.audit(_record),
|
click: _record => this.audit(_record),
|
||||||
iif: item => item.representationsStatus == '1' || item.representationsStatus == '2' ,
|
iif: item => item.representationsStatus == '1' || item.representationsStatus == '2',
|
||||||
acl: { ability: ['ORDER-RISK-audit'] },
|
acl: { ability: ['ORDER-RISK-audit'] },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -410,7 +410,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* 导入货源
|
* 导入货源
|
||||||
*/
|
*/
|
||||||
importGoodsSource() {}
|
importGoodsSource() { }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 审核关闭弹窗
|
* 审核关闭弹窗
|
||||||
@ -423,7 +423,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
handleOK() {
|
handleOK() {
|
||||||
let idList: any[] = [];
|
let idList: any[] = [];
|
||||||
if(this.selectedRows.length > 0) {
|
if (this.selectedRows.length > 0) {
|
||||||
this.selectedRows.forEach(item => {
|
this.selectedRows.forEach(item => {
|
||||||
idList.push(item.id);
|
idList.push(item.id);
|
||||||
});
|
});
|
||||||
@ -440,7 +440,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
this.service.msgSrv.success('审核通过成功!');
|
this.service.msgSrv.success('审核通过成功!');
|
||||||
this.isVisibleRE = false;
|
this.isVisibleRE = false;
|
||||||
this.st?.load(1);
|
this.st?.load(1);
|
||||||
this.getGoodsSourceStatistical()
|
this.getGoodsSourceStatistical()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -449,14 +449,14 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
reject() {
|
reject() {
|
||||||
let idList: any[] = [];
|
let idList: any[] = [];
|
||||||
if(this.selectedRows.length > 0) {
|
if (this.selectedRows.length > 0) {
|
||||||
this.selectedRows.forEach(item => {
|
this.selectedRows.forEach(item => {
|
||||||
idList.push(item.id);
|
idList.push(item.id);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
idList.push(this.sfView.value.billCode)
|
idList.push(this.sfView.value.billCode)
|
||||||
}
|
}
|
||||||
if(!this.sfView.value.representationsCause) {
|
if (!this.sfView.value.representationsCause) {
|
||||||
this.service.msgSrv.error('拒绝原因为空!');
|
this.service.msgSrv.error('拒绝原因为空!');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -481,14 +481,14 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
if (item) {
|
if (item) {
|
||||||
this.auditId = item.billCode;
|
this.auditId = item.billCode;
|
||||||
this.initSTAudit(1);
|
this.initSTAudit(1);
|
||||||
this.isVisibleRE = true;
|
this.isVisibleRE = true;
|
||||||
} else {
|
} else {
|
||||||
if(this.selectedRows.length <= 0) {
|
if (this.selectedRows.length <= 0) {
|
||||||
this.service.msgSrv.error('请选择订单!')
|
this.service.msgSrv.error('请选择订单!')
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
this.initSTAudit(2);
|
this.initSTAudit(2);
|
||||||
this.isVisibleRE = true;
|
this.isVisibleRE = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,7 +55,7 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
|
|||||||
two: '2',
|
two: '2',
|
||||||
three: '2',
|
three: '2',
|
||||||
id: 2
|
id: 2
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
tabs = {
|
tabs = {
|
||||||
cancelQuantity: 0,
|
cancelQuantity: 0,
|
||||||
@ -732,10 +732,6 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
|
|||||||
nzComponentParams: { data: { ids: params } },
|
nzComponentParams: { data: { ids: params } },
|
||||||
nzFooter: null
|
nzFooter: null
|
||||||
// nzOnOk: sin => {
|
// nzOnOk: sin => {
|
||||||
// this.service.request(this.service.$api_change_bulk, { billId: item.id, ...sin.sf.value }).subscribe(res => {
|
|
||||||
// if (res) {
|
|
||||||
// this.service.msgSrv.success('变更运费成功');
|
|
||||||
// modal.destroy();
|
|
||||||
// this.st.reload();
|
// this.st.reload();
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
|
|||||||
@ -211,7 +211,7 @@ export class OrderManagementService extends ShipperBaseService {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
constructor(public injector: Injector, public eaCacheSrv: EACacheService) {
|
constructor(public injector: Injector) {
|
||||||
super(injector, eaCacheSrv);
|
super(injector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,65 @@
|
|||||||
|
<page-header-wrapper [title]="'合伙人账户明细'" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<!-- <button nz-button (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button> -->
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<sv-container layout="vertical" [noColon]="true" col="4">
|
||||||
|
<sv [label]="labelTpl">
|
||||||
|
<b class="text-md ">{{headerTotalInfo?.ltdName}}</b>
|
||||||
|
</sv>
|
||||||
|
<sv label="可用余额">
|
||||||
|
{{headerTotalInfo?.allAmount |currency}}
|
||||||
|
</sv>
|
||||||
|
<sv label="收入金额">
|
||||||
|
{{headerTotalInfo?.incomeAmount |currency}}
|
||||||
|
</sv>
|
||||||
|
<sv label="支出金额">
|
||||||
|
{{headerTotalInfo?.payAmount |currency}}
|
||||||
|
</sv>
|
||||||
|
</sv-container>
|
||||||
|
<ng-template #labelTpl>
|
||||||
|
<b class="text-md" style="color: black;">{{headerTotalInfo?.name}} {{headerTotalInfo?.phone}}</b>
|
||||||
|
</ng-template>
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-content">
|
||||||
|
<st #st [data]="service.$api_get_account_detail_page " [columns]="columns"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: {pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [5,10, 20, 50, 100, 200, 500] }"
|
||||||
|
[loading]="service.http.loading" [scroll]="{x:'1200px'}">
|
||||||
|
<ng-template st-row="amount" let-item>
|
||||||
|
<div *ngIf="item.incomeType === '1'" class="text-right"> - {{item.amount | currency:' ' }}</div>
|
||||||
|
<div *ngIf="item.incomeType === '2'" class="text-right"> + {{item.amount | currency:' ' }}</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="accountBalance" let-item>
|
||||||
|
<div class="text-right">{{item?.accountBalance |currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
</st>
|
||||||
|
<div class="total-footer text-md" *ngIf="st?.list?.length !== 0 ">
|
||||||
|
合计 <label class="text-red-dark">{{ footerTotalInfo?.total }}</label> 项,收入 <label
|
||||||
|
class="text-red-dark font-weight-bold">{{
|
||||||
|
footerTotalInfo?.incomeAmount | currency
|
||||||
|
}}</label>,支出 <label class="text-red-dark font-weight-bold">{{
|
||||||
|
footerTotalInfo?.payAmount | currency }}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
:host {
|
||||||
|
::ng-deep {
|
||||||
|
.search-header {
|
||||||
|
nz-range-picker {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-content {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.total-footer {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
height: 32px;
|
||||||
|
margin: 16px 0;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerAccountManagementAccountDetailComponent } from './account-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerAccountManagementAccountDetailComponent', () => {
|
||||||
|
let component: PartnerAccountManagementAccountDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerAccountManagementAccountDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PartnerAccountManagementAccountDetailComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerAccountManagementAccountDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,204 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { AccountManagemantService } from '../../services/account-managemant.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-account-management-account-detail',
|
||||||
|
templateUrl: './account-detail.component.html',
|
||||||
|
styleUrls: ['./account-detail.component.less']
|
||||||
|
})
|
||||||
|
export class PartnerAccountManagementAccountDetailComponent implements OnInit {
|
||||||
|
headerTotalInfo: any = {
|
||||||
|
allAmount: 0,
|
||||||
|
incomeAmount: 0,
|
||||||
|
payAmount: 0,
|
||||||
|
name: '',
|
||||||
|
ltdName: '',
|
||||||
|
phone: ''
|
||||||
|
};
|
||||||
|
footerTotalInfo: any = {
|
||||||
|
incomeAmount: 0,
|
||||||
|
payAmount: 0,
|
||||||
|
total: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
url = `/user`;
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui!: SFUISchema;
|
||||||
|
_$expand = false;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
|
||||||
|
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
roleId = '';
|
||||||
|
bankType = '';
|
||||||
|
channelSource = '';
|
||||||
|
ltdId = '';
|
||||||
|
constructor(public service: AccountManagemantService, public ar: ActivatedRoute) {
|
||||||
|
|
||||||
|
this.roleId = this.ar.snapshot.params.id;
|
||||||
|
this.ar.queryParamMap.subscribe((res: any) => {
|
||||||
|
this.ltdId = res?.params?.ltdId;
|
||||||
|
this.channelSource = res?.params?.channelSource;
|
||||||
|
this.bankType = res?.params?.bankType;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value, roleId: this.roleId, ltdId: this.ltdId, channelSource: this.channelSource, bankType: this.bankType };
|
||||||
|
}
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.getHeaderSummary();
|
||||||
|
this.getFooterSummary();
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: {
|
||||||
|
type: 'boolean', ui: { hidden: true }
|
||||||
|
},
|
||||||
|
createTime: {
|
||||||
|
type: 'string',
|
||||||
|
title: '交易时间',
|
||||||
|
ui: {
|
||||||
|
widget: 'sl-from-to',
|
||||||
|
type: 'date',
|
||||||
|
autoComplete: 'off',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
} as SFDateWidgetSchema,
|
||||||
|
},
|
||||||
|
transactionNumber: {
|
||||||
|
title: '流水号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
businessNumber: {
|
||||||
|
title: '交易单号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tradeType: {
|
||||||
|
type: 'string',
|
||||||
|
title: '交易类型',
|
||||||
|
default: '',
|
||||||
|
ui: {
|
||||||
|
widget: 'dict-select',
|
||||||
|
params: {
|
||||||
|
dictKey: 'trade:type'
|
||||||
|
},
|
||||||
|
placeholder: '请选择',
|
||||||
|
allowClear: true,
|
||||||
|
containsAllLabel: true,
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
incomeType: {
|
||||||
|
type: 'string',
|
||||||
|
title: '收支类型',
|
||||||
|
default: '',
|
||||||
|
ui: {
|
||||||
|
widget: 'dict-select',
|
||||||
|
params: {
|
||||||
|
dictKey: 'income:type'
|
||||||
|
},
|
||||||
|
placeholder: '请选择',
|
||||||
|
allowClear: true,
|
||||||
|
containsAllLabel: true,
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = { '*': { spanLabelFixed: 100, grid: { span: 8, gutter: 4 } }, };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '交易时间', index: 'createTime', className: 'text-center', width: 200 },
|
||||||
|
{ title: '流水号', index: 'transactionNumber', className: 'text-center', width: 180 },
|
||||||
|
{ title: '交易类型', index: 'tradeTypeLabel', className: 'text-center', width: 150 },
|
||||||
|
{ title: '交易单号', index: 'businessNumber', className: 'text-center', width: 180 },
|
||||||
|
{ title: '备注', index: 'tradeContent', className: 'text-center', width: 180 },
|
||||||
|
{ title: '收支类型', index: 'incomeTypeLabel', className: 'text-center', width: 180 },
|
||||||
|
{ title: '交易金额', render: 'amount', className: 'text-center', width: 150 },
|
||||||
|
{ title: '账户余额', render: 'accountBalance', className: 'text-center', width: 150 },
|
||||||
|
{ title: '付款方', index: 'payName', className: 'text-center', width: 200 },
|
||||||
|
{ title: '收款方', index: 'payeeName', className: 'text-center', width: 200 },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
resetSF() {
|
||||||
|
this._$expand = false;
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle() {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 头部汇总
|
||||||
|
*/
|
||||||
|
getHeaderSummary() {
|
||||||
|
const params = {
|
||||||
|
roleId: this.roleId,
|
||||||
|
ltdId: this.ltdId,
|
||||||
|
channelSource: this.channelSource,
|
||||||
|
bankType: this.bankType
|
||||||
|
};
|
||||||
|
this.service.request(this.service.$api_get_account_detail_header_summary, { ...params }).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.headerTotalInfo = res;
|
||||||
|
console.log(res);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 脚部汇总
|
||||||
|
*/
|
||||||
|
getFooterSummary() {
|
||||||
|
this.service.request(this.service.$api_get_account_detail_footer_summary, this.reqParams).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.footerTotalInfo = res;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
search() {
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
export() { }
|
||||||
|
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
<page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<!-- <div nz-row>
|
||||||
|
<div [nzSpan]="" nz-col>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
<sf [schema]="schema" [mode]="'search'" [ui]="ui" [button]="'none'" #sf>
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<st #st [data]="service.$api_get_account_management_page" [columns]="columns" [scroll]="{ x: '1200px' }"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loading]="service.http.loading" multiSort>
|
||||||
|
<ng-template st-row="allBalance" let-item>
|
||||||
|
<div class="text-right">{{item.allBalance | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="unEntryAmount" let-item>
|
||||||
|
<a class="text-right text-blue-dark"
|
||||||
|
[routerLink]="'/partner/account-management/am/recorded/detail/'+item?.roleId">{{item.unEntryAmount | currency:'
|
||||||
|
'}}</a>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="availableBalance" let-item>
|
||||||
|
<div class="text-right">{{item.availableBalance | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerAccountManagementListComponent } from './list.component';
|
||||||
|
|
||||||
|
describe('PartnerAccountManagementListComponent', () => {
|
||||||
|
let component: PartnerAccountManagementListComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerAccountManagementListComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PartnerAccountManagementListComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerAccountManagementListComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,119 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { BussinessStatisticsService } from '../../../business-statistics/services/bussiness-statistics.service';
|
||||||
|
import { AccountManagemantService } from '../../services/account-managemant.service';
|
||||||
|
import { PartnerAccountManagementVirtualAccountDetailComponent } from '../virtual-account-detail/virtual-account-detail.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-account-management-list',
|
||||||
|
templateUrl: './list.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerAccountManagementListComponent implements OnInit {
|
||||||
|
url = `/user`;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
|
||||||
|
constructor(public service: AccountManagemantService, public modal: NzModalService) { }
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
const params = { ...this.sf?.value };
|
||||||
|
return params
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
userName: {
|
||||||
|
title: '合伙人名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
title: '手机号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = { '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 12 } }, };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '合伙人名称', index: 'userName', className: 'text-center', width: 250 },
|
||||||
|
{ title: '手机号', index: 'phone', className: 'text-center', width: 200 },
|
||||||
|
{
|
||||||
|
title: '账户总额(元)', index: 'allBalance', className: 'text-right', sort: true, width: 150, type: 'currency',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '待入账余额(元)', render: 'unEntryAmount', className: 'text-right', width: 150,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '可用余额(元)', index: 'availableBalance', className: 'text-right', sort: true, width: 150, type: 'currency'
|
||||||
|
},
|
||||||
|
{ title: '虚拟账户', index: 'virtualAccount', className: 'text-center', width: 220 },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: 150,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '虚拟账户明细',
|
||||||
|
click: (_record) => this.viewVirtual(_record)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param _record 当前行信息
|
||||||
|
*/
|
||||||
|
viewVirtual(_record: any) {
|
||||||
|
const modalRef = this.modal.create({
|
||||||
|
nzTitle: '虚拟账户明细',
|
||||||
|
nzContent: PartnerAccountManagementVirtualAccountDetailComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
roleId: _record?.roleId,
|
||||||
|
},
|
||||||
|
nzWidth: '85%',
|
||||||
|
nzFooter: null
|
||||||
|
});
|
||||||
|
// modalRef.afterClose.subscribe(result => {
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
<page-header-wrapper [title]="'待入账明细'" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<sv-container layout="vertical" [noColon]="true" col="5">
|
||||||
|
<sv [label]="labelTpl">
|
||||||
|
<b class="text-md ">{{summaryObj?.company}}</b>
|
||||||
|
</sv>
|
||||||
|
<sv label="返佣总额">
|
||||||
|
{{summaryObj?.totalRebate |currency}}
|
||||||
|
</sv>
|
||||||
|
<sv label="已入账金额">
|
||||||
|
{{summaryObj?.totalRebate |currency}}
|
||||||
|
</sv>
|
||||||
|
<sv label="代缴个税">
|
||||||
|
{{summaryObj?.taxPersonalSum |currency}}
|
||||||
|
</sv>
|
||||||
|
<sv label="待入账金额">
|
||||||
|
{{summaryObj?.waitRecordedAmount |currency}}
|
||||||
|
</sv>
|
||||||
|
</sv-container>
|
||||||
|
<ng-template #labelTpl>
|
||||||
|
<b class="text-md" style="color: black;">{{summaryObj?.name}}</b>
|
||||||
|
</ng-template>
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<div>
|
||||||
|
<sf mode="search" #sf [schema]="schema" [ui]="ui" (formSubmit)="search()" (formReset)="resetSF()"></sf>
|
||||||
|
</div>
|
||||||
|
<div class="table-content">
|
||||||
|
<st #st [data]="service.$api_get_invoice_detail_page " [columns]="columns"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: {pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [5,10, 20, 50, 100, 200, 500] }"
|
||||||
|
[loading]="service.http.loading" [scroll]="{x:'1200px'}">
|
||||||
|
<ng-template st-row="amount" let-item>
|
||||||
|
<div *ngIf="item.incomeType === '1'"> - {{item.amount | currency }}</div>
|
||||||
|
<div *ngIf="item.incomeType === '2'"> + {{item.amount | currency }}</div>
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
<div class="total-footer text-md" *ngIf="st?.list?.length !== 0 ">
|
||||||
|
合计 <label class="text-red-dark">{{ summaryObj?.total }}</label> 项,收入 <label
|
||||||
|
class="text-red-dark font-weight-bold">{{
|
||||||
|
summaryObj?.income | currency
|
||||||
|
}}</label>,支出 <label class="text-red-dark font-weight-bold">{{
|
||||||
|
summaryObj?.spending | currency }}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="showBillDetail" nzTitle="账户明细" [nzFooter]="null" (nzOnCancel)="handleCancel()" nzWidth="700px">
|
||||||
|
<div *nzModalContent>
|
||||||
|
<div class="mb-sm">
|
||||||
|
<span class="mr-xxl text-md font-weight-bold"><label>网络货运人:</label>{{detailRecord?.ltdName}}</span>
|
||||||
|
<span class="text-md font-weight-bold"><label>返佣总额(元):</label>{{detailRecord?.totalRebate |currency: ' '}}</span>
|
||||||
|
</div>
|
||||||
|
<st #st [data]="billDetailList " [columns]="billDetailColumns" [res]="{ reName: { list: 'data' } }"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, params:billDetailReqParams}" [page]="{show:false}">
|
||||||
|
<ng-template st-row="month" let-item>
|
||||||
|
<div>
|
||||||
|
<span>{{item?.year }}年</span>
|
||||||
|
<span>{{item?.month }}月</span>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="profitAmountSum" let-item>
|
||||||
|
<div>{{item?.profitAmountSum |currency :' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
</st>
|
||||||
|
</div>
|
||||||
|
</nz-modal>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerAccountManagementRecordedDetailComponent } from './recorded-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerAccountManagementRecordedDetailComponent', () => {
|
||||||
|
let component: PartnerAccountManagementRecordedDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerAccountManagementRecordedDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PartnerAccountManagementRecordedDetailComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerAccountManagementRecordedDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,179 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema, Widget } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { AccountManagemantService } from '../../services/account-managemant.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-account-management-recorded-detail',
|
||||||
|
templateUrl: './recorded-detail.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerAccountManagementRecordedDetailComponent implements OnInit {
|
||||||
|
summaryObj: any = {
|
||||||
|
waitRecordedAmount: 0,
|
||||||
|
totalRebate: 0,
|
||||||
|
taxPersonalSum: 0,
|
||||||
|
recordedAmount: 0,
|
||||||
|
ltdName: '',
|
||||||
|
taxno: ''
|
||||||
|
};
|
||||||
|
|
||||||
|
detailRecord: any = {};
|
||||||
|
|
||||||
|
url = `/user`;
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
|
||||||
|
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
billDetailColumns: STColumn[] = [];
|
||||||
|
showBillDetail = false;
|
||||||
|
billDetailList = [];
|
||||||
|
roleId = '';
|
||||||
|
|
||||||
|
constructor(public service: AccountManagemantService, public router: Router, public ar: ActivatedRoute) {
|
||||||
|
this.roleId = this.ar.snapshot.params.id;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value, partnerId: this.roleId };
|
||||||
|
}
|
||||||
|
|
||||||
|
get billDetailReqParams() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
this.getInvoiceSummary();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
|
||||||
|
abnormalCause: {
|
||||||
|
title: '网络货运人',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = { '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 } }, };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '网络货运人', index: 'ltdName', className: 'text-center', width: 200 },
|
||||||
|
{ title: '银行类型', render: 'bankTypeLabel', className: 'text-center', width: 150 },
|
||||||
|
{ title: '虚拟账户', render: 'fictitiousAccount', className: 'text-center', width: 200 },
|
||||||
|
{ title: '返佣总额(元)', index: 'totalRebate', className: 'text-center', width: 120, type: 'currency' },
|
||||||
|
{ title: '已入账金额(元)', index: 'recordedAmount', className: 'text-center', width: 180, type: 'currency' },
|
||||||
|
{ title: '代缴个税(元)', index: 'taxPersonalSum', className: 'text-center', width: 180, type: 'currency' },
|
||||||
|
{ title: '待入账金额(元)', index: 'waitRecordedAmount', className: 'text-right', width: 180, type: 'currency' },
|
||||||
|
{
|
||||||
|
title: '操作', className: 'text-center', width: 300,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '查看入账记录',
|
||||||
|
click: (_record) => this.viewBookedRecord(_record)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '查看账单明细',
|
||||||
|
click: (_record) => this.viewAccountDetail(_record)
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
initBillDetailST() {
|
||||||
|
this.billDetailColumns = [
|
||||||
|
{ title: '账单月份', render: 'month', className: 'text-center', width: '40%' },
|
||||||
|
{ title: '返佣金额(元)', render: 'profitAmountSum', className: 'text-center', width: '40%' },
|
||||||
|
{
|
||||||
|
title: '操作', className: 'text-center', width: '20%', buttons: [
|
||||||
|
{
|
||||||
|
text: '订单明细',
|
||||||
|
click: (_record) => window.open(location.origin + `#/partner/rebate/record?ltdId=${_record?.ltdId}`)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
search() {
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取账单明细
|
||||||
|
*/
|
||||||
|
getBillDetail(ltdId: string) {
|
||||||
|
this.service.request(this.service.$api_get_bill_detail, { ltdId }).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.billDetailList = res;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看入账记录
|
||||||
|
* @param record 当前行
|
||||||
|
*/
|
||||||
|
viewBookedRecord(record: any) {
|
||||||
|
window.open(location.origin + `#/partner/recorded/record?ltdId=${record?.ltdId}&userId=${record?.userId}&userIdLabel=${record?.banktypeLabel}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看账单明细
|
||||||
|
* @param record 当前行
|
||||||
|
*/
|
||||||
|
viewAccountDetail(record: any) {
|
||||||
|
this.billDetailColumns = [];
|
||||||
|
this.showBillDetail = true;
|
||||||
|
this.initBillDetailST();
|
||||||
|
this.getBillDetail(record?.ltdId);
|
||||||
|
}
|
||||||
|
|
||||||
|
getInvoiceSummary() {
|
||||||
|
this.service.request(this.service.$api_get_invoice_summary, { partnerId: this.roleId }).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.summaryObj = res;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
handleCancel() {
|
||||||
|
this.showBillDetail = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
<nz-card>
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-sm">
|
||||||
|
<st #st [data]="service. $api_get_virtual_detail_page" [columns]="columns" [columns]="columns"
|
||||||
|
[scroll]="{ x: '1200px' }"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loading]="service.http.loading">
|
||||||
|
<ng-template st-row="allBalance" let-item>
|
||||||
|
<div class="text-right">
|
||||||
|
{{item.allBalance}}
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="availableBalance" let-item>
|
||||||
|
<div class="text-right">
|
||||||
|
{{item.availableBalance}}
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<div class="modal-footer text-center">
|
||||||
|
<button nz-button type="button" nzType="primary" (click)="close()">确 定</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerAccountManagementVirtualAccountDetailComponent } from './virtual-account-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerAccountManagementVirtualAccountDetailComponent', () => {
|
||||||
|
let component: PartnerAccountManagementVirtualAccountDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerAccountManagementVirtualAccountDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PartnerAccountManagementVirtualAccountDetailComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerAccountManagementVirtualAccountDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,184 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalRef } from 'ng-zorro-antd/modal';
|
||||||
|
import { ShipperBaseService } from 'src/app/shared/services/business/shipper-base.service';
|
||||||
|
import { AccountManagemantService } from '../../services/account-managemant.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-account-management-virtual-account-detail',
|
||||||
|
templateUrl: './virtual-account-detail.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerAccountManagementVirtualAccountDetailComponent implements OnInit {
|
||||||
|
url = `/user`;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
roleId = '';
|
||||||
|
_$expand = false;
|
||||||
|
record = {};
|
||||||
|
|
||||||
|
constructor(public shipperservice: ShipperBaseService, public service: AccountManagemantService,
|
||||||
|
private modalRef: NzModalRef, public router: Router) {
|
||||||
|
}
|
||||||
|
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value, roleId: this.roleId };
|
||||||
|
}
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: {
|
||||||
|
type: 'boolean', ui: { hidden: true }
|
||||||
|
},
|
||||||
|
userName: {
|
||||||
|
title: '合伙人名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
title: '手机号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ltdId: {
|
||||||
|
title: '网络货运人',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder: '请选择',
|
||||||
|
allowClear: true,
|
||||||
|
asyncData: () => this.shipperservice.getNetworkFreightForwarder({}, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
bankType: {
|
||||||
|
type: 'string',
|
||||||
|
title: '银行类型',
|
||||||
|
default: '',
|
||||||
|
ui: {
|
||||||
|
widget: 'dict-select',
|
||||||
|
params: {
|
||||||
|
dictKey: 'bankname:type'
|
||||||
|
},
|
||||||
|
placeholder: '请选择',
|
||||||
|
allowClear: true,
|
||||||
|
containsAllLabel: true,
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
virtualAccount: {
|
||||||
|
title: '虚拟账户',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
createTime: {
|
||||||
|
type: 'string',
|
||||||
|
title: '创建时间',
|
||||||
|
ui: {
|
||||||
|
widget: 'sl-from-to',
|
||||||
|
type: 'date',
|
||||||
|
autoComplete: 'off',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value
|
||||||
|
},
|
||||||
|
} as SFDateWidgetSchema,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = { '*': { spanLabelFixed: 100, grid: { span: 8, gutter: 4 } }, };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '合伙人', index: 'name', className: 'text-center', width: 200 },
|
||||||
|
{ title: '手机号', index: 'phone', className: 'text-center', width: 150 },
|
||||||
|
{ title: '网络货运人', index: 'ltdName', className: 'text-center', width: 200 },
|
||||||
|
{ title: '银行类型', index: 'bankTypeLabel', className: 'text-center', width: 120 },
|
||||||
|
{ title: '虚拟账户', index: 'virtualAccount', className: 'text-center', width: 180 },
|
||||||
|
{ title: '可用余额', render: 'availableBalance', className: 'text-center', width: 180 },
|
||||||
|
{ title: '账户总余额', render: 'allBalance', className: 'text-center', width: 180 },
|
||||||
|
{ title: '创建时间', index: 'createTime', className: 'text-center', width: 200 },
|
||||||
|
{ title: '状态', index: 'stateDeletedLabel', className: 'text-center', width: 120 },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: 120,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '查看明细',
|
||||||
|
click: (_record) => this.viewDetail(_record)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
resetSF() {
|
||||||
|
this._$expand = false;
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle() {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
search() {
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
export() { }
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param _record 当前行信息
|
||||||
|
*/
|
||||||
|
viewDetail(_record: any) {
|
||||||
|
// this.router.navigate([`/partner/account-management/am/detail/${_record?.roleId}`], {
|
||||||
|
// queryParams: {
|
||||||
|
// channelSource: _record?.accountType,
|
||||||
|
// bankType: _record?.bankType,
|
||||||
|
// ltdId: _record?.ltdId
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
window.open(location.origin + `/#/partner/account-management/am/detail/${_record?.roleId}?ltdId=${_record?.ltdId}&channelSource=${_record?.accountType}&bankType=${_record?.bankType}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,64 @@
|
|||||||
|
<!--
|
||||||
|
* @Description :
|
||||||
|
* @Version : 1.0
|
||||||
|
* @Author : Shiming
|
||||||
|
* @Date : 2022-01-05 20:15:41
|
||||||
|
* @LastEditors : Shiming
|
||||||
|
* @LastEditTime : 2022-01-18 17:17:19
|
||||||
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\financial-management\\components\\withdrawals-record\\withdrawals-detail\\withdrawals-detail.component.html
|
||||||
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
|
-->
|
||||||
|
<page-header-wrapper [title]="'提现详情'" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
|
||||||
|
|
||||||
|
<nz-card [nzLoading]="service.http.loading">
|
||||||
|
<nz-alert nzType="info" nzMessage="提现信息" class="mb-md"></nz-alert>
|
||||||
|
<div se-container [labelWidth]="130">
|
||||||
|
<se label="网络货运人">
|
||||||
|
{{formData?.ltdName}}
|
||||||
|
</se>
|
||||||
|
<se label="银行类型">
|
||||||
|
{{formData?.bankType==='1'?'平安银行':'浦发银行'}}
|
||||||
|
</se>
|
||||||
|
<se label="提现单号">
|
||||||
|
{{formData?.refundApplyCode}}
|
||||||
|
</se>
|
||||||
|
<se label="账户名称">
|
||||||
|
{{formData?.bankAccountName}}
|
||||||
|
</se>
|
||||||
|
<se label="提现时间">
|
||||||
|
{{formData?.createTime}}
|
||||||
|
</se>
|
||||||
|
<se label="虚拟账户">
|
||||||
|
{{formData?.virtualAccount}}
|
||||||
|
</se>
|
||||||
|
<se label="提现状态">
|
||||||
|
{{formData?.refundStatusLabel}}
|
||||||
|
</se>
|
||||||
|
<se label="提现金额">
|
||||||
|
{{formData?.amount | currency}}
|
||||||
|
</se>
|
||||||
|
<se label="银行流水号">
|
||||||
|
{{formData?.bankSerialNumber}}
|
||||||
|
</se>
|
||||||
|
<se label="提现至银行卡">
|
||||||
|
{{formData?.bankCardNumber}}
|
||||||
|
</se>
|
||||||
|
<se label="银行回单" col="1">
|
||||||
|
<a (click)="downBack()">{{formData?.refundStatus==='3'?'下载回单':'暂无回单'}}</a>
|
||||||
|
</se>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nz-alert nzType="info" nzMessage="提现进度" class="mb-md mt-md"></nz-alert>
|
||||||
|
<div nz-row class="mt-xl">
|
||||||
|
<div nz-col nzSpan="12" nzOffset="1">
|
||||||
|
<app-logistics-time-line [data]="timeLineData"></app-logistics-time-line>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
:host::ng-deep {
|
||||||
|
|
||||||
|
.ant-alert-info {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
border : 1px solid #dbdbdb;
|
||||||
|
|
||||||
|
.ant-alert-message {
|
||||||
|
color: rgba(0, 0, 0, 0.85);
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-form-item {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,87 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { FreightAccountService } from 'src/app/routes/financial-management/services/freight-account.service';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-account-management-withdrawals-detail',
|
||||||
|
templateUrl: './withdrawals-detail.component.html',
|
||||||
|
styleUrls: ['./withdrawals-detail.component.less']
|
||||||
|
})
|
||||||
|
export class PartnerAccountManagementWithdralDetailComponent implements OnInit {
|
||||||
|
formData: any = {};
|
||||||
|
|
||||||
|
timeLineData: any = [];
|
||||||
|
|
||||||
|
constructor(public service: FreightAccountService, private route: ActivatedRoute) {
|
||||||
|
const id = route.snapshot.params.id;
|
||||||
|
this.loadRefundDetail(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void { }
|
||||||
|
|
||||||
|
loadRefundDetail(id: string) {
|
||||||
|
this.service.request(this.service.$api_get_refund_detail, { id }).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.formData = res;
|
||||||
|
// 处理流程节点数据
|
||||||
|
// 流程是否结束
|
||||||
|
let isEnd = false;
|
||||||
|
if (res.successTime) {
|
||||||
|
isEnd = true;
|
||||||
|
if (res.refundStatus === '3') {
|
||||||
|
this.timeLineData.push({ time: res.successTime, value: `到账成功`, color: 'green' });
|
||||||
|
} else {
|
||||||
|
this.timeLineData.push({ time: res.successTime, value: `提现失败`, color: 'red' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (res.agreeTime && res.refundStatus !== '4') {
|
||||||
|
this.timeLineData.push({ time: res.agreeTime, value: `银行处理中`, color: 'gray' });
|
||||||
|
}
|
||||||
|
if (res.agreeTime) {
|
||||||
|
if (res.refundStatus === '4') {
|
||||||
|
isEnd = true;
|
||||||
|
this.timeLineData.push({
|
||||||
|
time: res.agreeTime,
|
||||||
|
value: `拒绝提现<br/>操作人员:${res.handlerUserIdLabel}`,
|
||||||
|
color: 'red'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.timeLineData.push({
|
||||||
|
time: res.agreeTime,
|
||||||
|
value: `审核通过<br/>操作人员:${res.handlerUserIdLabel}`,
|
||||||
|
color: 'gray'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (res.createTime) {
|
||||||
|
this.timeLineData.push({
|
||||||
|
time: res.createTime,
|
||||||
|
value: `提交提现申请<br/>提现${res.amount}元至${res.bankName}(${res.bankCardNumber})<br/>操作人员:${res.userIdLabel}`,
|
||||||
|
color: 'gray'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (this.timeLineData?.length > 0 && !isEnd) {
|
||||||
|
this.timeLineData[0].color = 'green';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
downBack() {
|
||||||
|
if (this.formData?.refundStatus !== '3') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.service.getReceiptUrl(this.formData.receiptUrl, {
|
||||||
|
bankType: this.formData.bankType,
|
||||||
|
rmYll: this.formData.userId,
|
||||||
|
snglFlgCd: this.formData.coreSerNo,
|
||||||
|
bussType: '06',
|
||||||
|
ltdId: this.formData.ltdId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
goBack() {
|
||||||
|
history.go(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
<page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
|
<nz-card class="search-box" nzBordered>
|
||||||
|
<div nz-row nzGutter="8">
|
||||||
|
<div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24">
|
||||||
|
<sf #sf [schema]="searchSchema"
|
||||||
|
[ui]="{ '*': { spanLabelFixed: 90,grid: { lg: 8, md: 12, sm: 12, xs: 24,gutter:15 } }}" [compact]="true"
|
||||||
|
[button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand"
|
||||||
|
class="text-right">
|
||||||
|
<button nz-button nzType="primary" (click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button> 导出</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card class="content-box" nzBordered>
|
||||||
|
<nz-tabset [nzTabBarExtraContent]="extraTemplate">
|
||||||
|
<nz-tab nzTitle="全部" (nzClick)="changeRefundStatus()"></nz-tab>
|
||||||
|
<nz-tab nzTitle="待审核" (nzClick)="changeRefundStatus('1')"></nz-tab>
|
||||||
|
<nz-tab nzTitle="处理中" (nzClick)="changeRefundStatus('2')"></nz-tab>
|
||||||
|
<nz-tab nzTitle="提现成功" (nzClick)="changeRefundStatus('3')"></nz-tab>
|
||||||
|
<nz-tab nzTitle="提现失败" (nzClick)="changeRefundStatus('5')"></nz-tab>
|
||||||
|
<nz-tab nzTitle="已拒绝" (nzClick)="changeRefundStatus('4')"></nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
|
||||||
|
<ng-template #extraTemplate>
|
||||||
|
<div class="d-flex align-items-center ">
|
||||||
|
<div class="mr-md">
|
||||||
|
已选择
|
||||||
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 累计提现 <strong class="text-red">{{
|
||||||
|
totalCallNo }}</strong>
|
||||||
|
<!-- <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> -->
|
||||||
|
</div>
|
||||||
|
<button nz-button (click)="this.auditAction(null)">审核</button>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
<st #st [data]="amService.$api_get_withdraw_record_page" [columns]="columns" [req]="{ process: beforeReq }"
|
||||||
|
[loading]="service.http.loading" [scroll]="{ x:'1200px' }" (change)="stChange($event)"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
|
||||||
|
[page]="{ show: true, pageSizes: [10, 20, 50, 100, 200, 500] }">
|
||||||
|
<ng-template st-row="bankCardNumber" let-item let-index="index" let-column="column">
|
||||||
|
{{ item.bankName }} <br> {{ item.bankCardNumber }}
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<ng-template #auditModal>
|
||||||
|
<div nz-row nzGutter="8">
|
||||||
|
<div nz-col nzSpan="24" se-container [labelWidth]="80">
|
||||||
|
<se [col]="1" label="备注">
|
||||||
|
<textarea nz-input rows="3" [(ngModel)]="msg" placeholder="同意可以不用填写原因 ,拒绝必须说明原因"
|
||||||
|
style="width: 325px;margin-left: 14px;"></textarea>
|
||||||
|
</se>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
@ -0,0 +1,335 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STComponent, STColumn, STChange, STRequestOptions, STData } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { FreightAccountService } from 'src/app/routes/financial-management/services/freight-account.service';
|
||||||
|
import Big from 'src/app/shared/utils/deal-precision';
|
||||||
|
import { AccountManagemantService } from '../../services/account-managemant.service';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-account-management-withdrawals-record',
|
||||||
|
templateUrl: './withdrawals-record.component.html',
|
||||||
|
styleUrls: ['../../../../commom/less/box.less', '../../../../commom/less/expend-but.less']
|
||||||
|
})
|
||||||
|
export class PartnerAccountManagementWithdrawalsRecordComponent implements OnInit {
|
||||||
|
@ViewChild('st', { static: true }) st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
@ViewChild('auditModal', { static: false }) auditModal!: any;
|
||||||
|
@ViewChild('viewReasonModal', { static: false }) viewReasonModal!: any;
|
||||||
|
columns: STColumn[] = this.initST();
|
||||||
|
searchSchema: SFSchema = this.initSF();
|
||||||
|
|
||||||
|
_$expand = false;
|
||||||
|
|
||||||
|
selectedRows: any[] = [];
|
||||||
|
totalCallNo = 0;
|
||||||
|
refundStatus: any = '';
|
||||||
|
|
||||||
|
msg = '';
|
||||||
|
constructor(public service: FreightAccountService, public amService: AccountManagemantService, private nzModalService: NzModalService, private router: Router, public ar: ActivatedRoute) { }
|
||||||
|
|
||||||
|
ngOnInit(): void { }
|
||||||
|
|
||||||
|
beforeReq = (requestOptions: STRequestOptions) => {
|
||||||
|
if (this.sf) {
|
||||||
|
Object.assign(requestOptions.body, {
|
||||||
|
...this.sf.value,
|
||||||
|
createTime: {
|
||||||
|
start: this.sf.value.createTime?.[0] || '',
|
||||||
|
end: this.sf.value.createTime?.[1] || ''
|
||||||
|
},
|
||||||
|
refundStatus: this.refundStatus || null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return requestOptions;
|
||||||
|
};
|
||||||
|
|
||||||
|
afterRes = (data: any[], rawData?: any) => {
|
||||||
|
data = data.map(node => ({ ...node, disabled: node.refundStatus !== '1' }));
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
stChange(e: STChange): void {
|
||||||
|
if (e.type === 'checkbox') {
|
||||||
|
const checkRows = (e.checkbox as STData[]) || [];
|
||||||
|
//判断当前页是否有选中的行
|
||||||
|
if (checkRows.length === 0) {
|
||||||
|
// 当前页没有存在已勾选的行,移除之前所记录的当前页的行
|
||||||
|
const stList = this.st.list;
|
||||||
|
stList.forEach(item => {
|
||||||
|
this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id);
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
//添加新增的行
|
||||||
|
checkRows.forEach((item: any) => {
|
||||||
|
const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id);
|
||||||
|
if (newSelectedList.length === 0) {
|
||||||
|
this.selectedRows.push(item);
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// 移除取消选中的行
|
||||||
|
const stList = this.st.list;
|
||||||
|
stList.forEach(item => {
|
||||||
|
if (!item.checked) {
|
||||||
|
const index = this.selectedRows.findIndex(_item => item.id === _item.id);
|
||||||
|
if (index !== -1) this.selectedRows.splice(index, 1);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
let totalCallNo = 0;
|
||||||
|
this.selectedRows.forEach((item => {
|
||||||
|
totalCallNo = new Big(this.totalCallNo).plus(item?.amount).parse();
|
||||||
|
}));
|
||||||
|
this.totalCallNo = totalCallNo;
|
||||||
|
} else if (e.type === 'loaded') {
|
||||||
|
// 页面加载时勾选
|
||||||
|
(e?.loaded || []).forEach((r) => {
|
||||||
|
this.selectedRows.forEach((x) => {
|
||||||
|
if (x.id === r.id) {
|
||||||
|
r.checked = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
changeRefundStatus(status?: string) {
|
||||||
|
this.refundStatus = status || null;
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
auditAction(item?: any) {
|
||||||
|
this.msg = '';
|
||||||
|
let params: Array<string> = [];
|
||||||
|
if (item) {
|
||||||
|
params = [item.id];
|
||||||
|
} else {
|
||||||
|
params = this.selectedRows.map(node => node.id);
|
||||||
|
}
|
||||||
|
const modal = this.nzModalService.create({
|
||||||
|
nzTitle: '审核',
|
||||||
|
nzContent: this.auditModal,
|
||||||
|
nzFooter: [
|
||||||
|
{
|
||||||
|
label: '拒绝',
|
||||||
|
type: 'default',
|
||||||
|
onClick: () => {
|
||||||
|
this.service
|
||||||
|
.request(this.service.$api_disagree_refund, {
|
||||||
|
refundApplicationId: params,
|
||||||
|
msg: this.msg
|
||||||
|
})
|
||||||
|
.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.service.msgSrv.success('审核拒绝成功');
|
||||||
|
modal.destroy();
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '通过',
|
||||||
|
type: 'primary',
|
||||||
|
onClick: () => {
|
||||||
|
this.service
|
||||||
|
.request(this.service.$api_agree_refund, {
|
||||||
|
refundApplicationId: params,
|
||||||
|
msg: this.msg
|
||||||
|
})
|
||||||
|
.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.service.msgSrv.success('审核通过成功');
|
||||||
|
modal.destroy();
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
modal.afterClose.subscribe(res => {
|
||||||
|
this.st.load();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
showReason(item: any) {
|
||||||
|
const modal = this.nzModalService.create({
|
||||||
|
nzTitle: '查看原因',
|
||||||
|
nzContent: item?.rejectionCause || item?.failCause,
|
||||||
|
nzFooter: [
|
||||||
|
{
|
||||||
|
label: '关闭',
|
||||||
|
type: 'primary',
|
||||||
|
onClick: () => {
|
||||||
|
modal.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
this._$expand = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle() {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
private initSF(): SFSchema {
|
||||||
|
return {
|
||||||
|
properties: {
|
||||||
|
expand: {
|
||||||
|
type: 'boolean',
|
||||||
|
ui: {
|
||||||
|
hidden: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
refundApplyCode: {
|
||||||
|
type: 'string',
|
||||||
|
title: '提现单号',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
refundStatus: {
|
||||||
|
type: 'string',
|
||||||
|
title: '提现状态',
|
||||||
|
ui: {
|
||||||
|
widget: 'dict-select',
|
||||||
|
params: { dictKey: 'refund:apply:status' },
|
||||||
|
placeholder: '请选择'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
createTime: {
|
||||||
|
title: '提现时间',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'sl-from-to-search',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
placeholder: '请选择',
|
||||||
|
nzShowTime: true
|
||||||
|
} as SFDateWidgetSchema
|
||||||
|
},
|
||||||
|
bankAccountName: {
|
||||||
|
type: 'string',
|
||||||
|
title: '账户名称',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
visibleIf: {
|
||||||
|
expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
accountType: {
|
||||||
|
type: 'string',
|
||||||
|
title: '账户类型',
|
||||||
|
ui: {
|
||||||
|
widget: 'dict-select',
|
||||||
|
params: { dictKey: 'bank:type' },
|
||||||
|
placeholder: '请选择',
|
||||||
|
visibleIf: {
|
||||||
|
expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ltdId: {
|
||||||
|
type: 'string',
|
||||||
|
title: '网络货运人',
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder: '请选择',
|
||||||
|
allowClear: true,
|
||||||
|
asyncData: () => this.service.getNetworkFreightForwarder(),
|
||||||
|
visibleIf: {
|
||||||
|
expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
bankType: {
|
||||||
|
type: 'string',
|
||||||
|
title: '银行类型',
|
||||||
|
ui: {
|
||||||
|
widget: 'dict-select',
|
||||||
|
params: { dictKey: 'bankname:type' },
|
||||||
|
placeholder: '请输入',
|
||||||
|
visibleIf: {
|
||||||
|
expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private initST(): STColumn[] {
|
||||||
|
return [
|
||||||
|
{ title: '', index: 'key', type: 'checkbox', className: 'text-center' },
|
||||||
|
{ title: '提现时间', index: 'createTime', width: 180, className: 'text-center' },
|
||||||
|
{ title: '提现单号', index: 'refundApplyCode', width: 180, className: 'text-center' },
|
||||||
|
{ title: '网络货运人', index: 'ltdName', width: 220, className: 'text-center' },
|
||||||
|
{ title: '银行类型', index: 'bankTypeLabel', width: 100, className: 'text-center' },
|
||||||
|
{ title: '账户类型', index: 'accountTypeLabel', width: 100, className: 'text-center' },
|
||||||
|
{ title: '账户名称', index: 'bankAccountName', width: 220, className: 'text-center' },
|
||||||
|
{ title: '虚拟账户', index: 'virtualAccount', width: 180, className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '提现金额',
|
||||||
|
index: 'amount',
|
||||||
|
width: 200,
|
||||||
|
type: 'widget',
|
||||||
|
className: 'text-right',
|
||||||
|
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) }
|
||||||
|
},
|
||||||
|
{ title: '提现银行账户', render: 'bankCardNumber', width: 200, className: 'text-center' },
|
||||||
|
{ title: '提现状态', index: 'refundStatusLabel', width: 100, className: 'text-center' },
|
||||||
|
{ title: '银行流水号', index: 'bankSerialNumber', width: 160, className: 'text-center' },
|
||||||
|
{ title: '核心交易流水', index: 'coreSerNo', width: 180, className: 'text-center' },
|
||||||
|
{ title: '失败原因', index: 'rejectionCause', width: 200, format: item => item.failCause, className: 'text-center' },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
fixed: 'right',
|
||||||
|
width: '110px',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '查看回单',
|
||||||
|
iif: item => item.refundStatus === '3',
|
||||||
|
click: item =>
|
||||||
|
this.service.getReceiptUrl(item.receiptUrl, {
|
||||||
|
bankType: item.bankType,
|
||||||
|
rmYll: item.userId,
|
||||||
|
snglFlgCd: item.coreSerNo,
|
||||||
|
bussType: '06',
|
||||||
|
ltdId: item.ltdId
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '查看原因',
|
||||||
|
iif: item => item.refundStatus === '4',
|
||||||
|
click: item => this.showReason(item)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '审核',
|
||||||
|
iif: item => item.refundStatus === '1',
|
||||||
|
click: item => this.auditAction(item)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '详情',
|
||||||
|
click: item => this.router.navigate(['./../detail/' + item.id], { relativeTo: this.ar })
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class AccountManagemantService extends BaseService {
|
||||||
|
|
||||||
|
$api_get_account_management_page = `/api/bpc/accountBalancePartner/getPartnerAccountBalanceByOperator`; // 账户管理
|
||||||
|
$api_get_virtual_detail_page = `/api/bpc/accountBalancePartner/getPartnerAccountBalanceInfoByOperator`;//虚拟账户明细
|
||||||
|
$api_get_withdraw_record_page = `/api/fcc/refundApplicationOBC/list/partnerPage`;// 提现记录
|
||||||
|
$api_get_account_detail_page = `/api/bpc/accountBalancePartner/getAccountBalancePartnerByOperatorPage`;// 账户明细
|
||||||
|
$api_get_account_detail_footer_summary = `/api/bpc/accountBalancePartner/getAccountBalancePartnerIncomeDetailByOperator`;// 账户明细脚部汇总
|
||||||
|
$api_get_account_detail_header_summary = `/api/bpc/accountBalancePartner/getAccountBalancePartnerAmountByOperator`;// 账户明细头部汇总
|
||||||
|
$api_get_bill_detail = `/api/bpc/partnerIncomeDetail/findPartnerWaitIncomeByOperator`; // 查看账单明细
|
||||||
|
$api_get_invoice_summary = `/api/bpc/partnerInvoiceEntry/oprationEntrySummary`; // 入账明细汇总
|
||||||
|
$api_get_invoice_detail_page = `/api/bpc/partnerInvoiceEntry/oprationEntryDetail`; // 待入账明细列表
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #headerContent>
|
||||||
|
<div nz-row class="head-box">
|
||||||
|
<div nz-col nzSpan="1">
|
||||||
|
<img src="./assets/images/usercenter/拉货车.png" alt="" />
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="11" class="pl-lg">
|
||||||
|
<div class="right-h">深圳市XXXXXXX有限公司</div>
|
||||||
|
<div class="right-s">91440300357887492H</div>
|
||||||
|
<sv-container col="2" >
|
||||||
|
<sv label="联系人"> </sv>
|
||||||
|
<sv label="注册时间"> </sv>
|
||||||
|
<sv label="合同有效期"> </sv>
|
||||||
|
<sv label="运营主体"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="10">
|
||||||
|
<div class="left-rt">待审核</div>
|
||||||
|
<div class="left-rb">
|
||||||
|
<button nz-button (click) ="reject()">拒绝</button>
|
||||||
|
<button nz-button nzType="primary" (click) ="approve()">通过</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card nzTitle="建议反馈">
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col nzSpan="12">
|
||||||
|
<sv-container col="1" labelWidth="120">
|
||||||
|
<sv label="问题类型"> </sv>
|
||||||
|
<sv label="描述或内容建议"> </sv>
|
||||||
|
<sv label="图片"> </sv>
|
||||||
|
<sv label="提交时间"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
:host {
|
||||||
|
.head-box {
|
||||||
|
img {
|
||||||
|
width : 80px;
|
||||||
|
height : 80px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-h {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-s {
|
||||||
|
color: #7f7f7f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-rt {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size : 16px;
|
||||||
|
text-align : right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-rb {
|
||||||
|
display : flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding-top : 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn } from '@delon/abc/st';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { ParterClaimAuditListChannelApproveComponent } from '../../../claim-audit/components/channel-approve/channel-approve.component';
|
||||||
|
import { ParterClaimAuditListChannelRejectComponent } from '../../../claim-audit/components/channel-reject/channel-reject.component';
|
||||||
|
import { AdviceFeedbackService } from '../../services/advice-feedback.service';
|
||||||
|
|
||||||
|
// import { ParterClaimAuditListChannelApproveComponent } from '../channel-approve/channel-approve.component';
|
||||||
|
// import { ParterClaimAuditListChannelRejectComponent } from '../channel-reject/channel-reject.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-feedback-detail-detail',
|
||||||
|
templateUrl: './feedback-detail.component.html',
|
||||||
|
styleUrls: ['./feedback-detail.component.less']
|
||||||
|
})
|
||||||
|
export class ParterAdviceFeedbackDetailComponent implements OnInit {
|
||||||
|
id = this.route.snapshot.queryParams.id;
|
||||||
|
i: any;
|
||||||
|
imges: any;
|
||||||
|
isVisible = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
public service: AdviceFeedbackService,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
private router: Router
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initData();
|
||||||
|
}
|
||||||
|
|
||||||
|
initData() {
|
||||||
|
// this.service.request(this.service.$api_getBulkBillDetail, { id: this.id }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.i = res;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
approve() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '同意',
|
||||||
|
nzWidth: 700,
|
||||||
|
nzContent: ParterClaimAuditListChannelApproveComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: this.i
|
||||||
|
},
|
||||||
|
nzFooter: null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
reject() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '拒绝',
|
||||||
|
nzWidth: 700,
|
||||||
|
nzContent: ParterClaimAuditListChannelRejectComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: this.i
|
||||||
|
},
|
||||||
|
nzFooter: null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
<page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
|
<!-- 搜索表单 -->
|
||||||
|
<nz-card>
|
||||||
|
<div nz-row nzGutter="8">
|
||||||
|
<!-- 查询字段小于或等于3个时,不显示伸缩按钮 -->
|
||||||
|
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
|
||||||
|
<sf
|
||||||
|
#sf
|
||||||
|
[schema]="schema"
|
||||||
|
[ui]="ui"
|
||||||
|
[mode]="'search'"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
(formSubmit)="search()"
|
||||||
|
(formReset)="resetSF()"
|
||||||
|
></sf>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 查询字段大于3个时,根据展开状态调整布局 -->
|
||||||
|
<ng-container *ngIf="queryFieldCount > 4">
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="search()" >查询</button>
|
||||||
|
<button nz-button (click)="resetSF()" >重置</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<st
|
||||||
|
#st1
|
||||||
|
[data]="data"
|
||||||
|
[columns]="columns1"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,228 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { processSingleSort } from '@shared';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { AdviceFeedbackService } from '../../services/advice-feedback.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-advice-feedback',
|
||||||
|
templateUrl: './list.component.html'
|
||||||
|
})
|
||||||
|
export class ParterAdviceFeedbackListComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
columns1!: STColumn[];
|
||||||
|
columns2!: STColumn[];
|
||||||
|
@ViewChild('st1', { static: false })
|
||||||
|
st1!: STComponent;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('sf', { static: false })
|
||||||
|
sf!: SFComponent;
|
||||||
|
_$expand = false;
|
||||||
|
selectedIndex = 0;
|
||||||
|
|
||||||
|
data=[{name1:1111}]
|
||||||
|
constructor(
|
||||||
|
public router: Router,
|
||||||
|
public ar: ActivatedRoute,
|
||||||
|
public service: AdviceFeedbackService,
|
||||||
|
private modalService: NzModalService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 查询字段个数
|
||||||
|
*/
|
||||||
|
get queryFieldCount(): number {
|
||||||
|
return Object.keys(this.schema?.properties || {}).length;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle(): void {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.initSF();
|
||||||
|
this.initST1();
|
||||||
|
this.initST2();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
title: '提交人'
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '企业管理员'
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '角色'
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '问题类型',
|
||||||
|
ui: {
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
name4: {
|
||||||
|
type: 'string',
|
||||||
|
title: '状态',
|
||||||
|
ui: {
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
grid: { span: 8, gutter: 4 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
initST1() {
|
||||||
|
this.columns1 = [
|
||||||
|
{
|
||||||
|
title: '提交人',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '企业管理员',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '角色',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '问题类型',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '描述或建议',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '提交时间',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '详情',
|
||||||
|
click: (_record, _modal, _instance) => this.partnerView(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '处理',
|
||||||
|
click: (_record, _modal, _instance) => this.partnerView(_record),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
initST2() {
|
||||||
|
this.columns2 = [
|
||||||
|
{
|
||||||
|
title: '提交人',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '客户名称',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '认领备注',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CRM状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '平台审核状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '提交时间',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '详情',
|
||||||
|
click: (_record, _modal, _instance) => this.channelView(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '审核',
|
||||||
|
click: (_record, _modal, _instance) => this.channelView(_record),
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
partnerView(record: STData) {
|
||||||
|
this.router.navigate(['/partner/advice-feedback/detail'], { queryParams: {} });
|
||||||
|
}
|
||||||
|
|
||||||
|
channelView(record: STData) {
|
||||||
|
this.router.navigate(['/partner/advice-feedback/detail'], { queryParams: {} });
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
}
|
||||||
|
search() {
|
||||||
|
// this.st1?.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
tabChange(index:any){
|
||||||
|
console.log(index)
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
this.initST1();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
this.initST2();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class AdviceFeedbackService extends BaseService {
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
<page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'">
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<div class="align-center" style="display: flex; justify-content: center;">
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()" style="margin-left: 48px">确认</button>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
@ -0,0 +1,189 @@
|
|||||||
|
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { apiConf } from '@conf/api.conf';
|
||||||
|
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema, SFUploadWidgetSchema } from '@delon/form';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { Observable, Observer } from 'rxjs';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
|
||||||
|
import { ChannelSalesService } from '../../services/channel-sales.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-article-management-edit',
|
||||||
|
templateUrl: './edit.component.html'
|
||||||
|
})
|
||||||
|
export class ParterArticleManagementEditComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '文章标题',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请输入50字符'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '文章简介',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请输入50字符'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '封面图',
|
||||||
|
ui: {
|
||||||
|
action: apiConf.fileUpload,
|
||||||
|
accept: 'image/png,image/jpeg,image/jpg',
|
||||||
|
limit: 1,
|
||||||
|
limitFileCount: 1,
|
||||||
|
resReName: 'data.fullFilePath',
|
||||||
|
urlReName: 'data.fullFilePath',
|
||||||
|
widget: 'upload',
|
||||||
|
descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸 280px * 180 px)',
|
||||||
|
name: 'multipartFile',
|
||||||
|
multiple: false,
|
||||||
|
listType: 'picture-card',
|
||||||
|
beforeUpload: (file: any, _fileList: any) => {
|
||||||
|
return new Observable((observer: Observer<boolean>) => {
|
||||||
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||||
|
if (!isLt2M) {
|
||||||
|
this.service.msgSrv.warning('图片大小超过2M!');
|
||||||
|
observer.complete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
observer.next(isLt2M);
|
||||||
|
observer.complete();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} as SFUploadWidgetSchema
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: '分类',
|
||||||
|
type: 'string',
|
||||||
|
enum: [
|
||||||
|
{ label: '管理员', value: '1'},
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
name4: {
|
||||||
|
type: 'number',
|
||||||
|
title: '排序',
|
||||||
|
minimum: 0,
|
||||||
|
maximum: 99,
|
||||||
|
ui: {
|
||||||
|
widgetWidth: 300 ,
|
||||||
|
placeholder:'请输入0~99,数字越大,排序越靠前'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
name5: {
|
||||||
|
type: 'string',
|
||||||
|
title: '跳转路径',
|
||||||
|
enum: [
|
||||||
|
{ label: '图文', value: '1'},
|
||||||
|
{ label: '视频', value: '2'},
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'radio',
|
||||||
|
} as SFRadioWidgetSchema,
|
||||||
|
default: '1',
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
type: 'string',
|
||||||
|
title: '正文',
|
||||||
|
ui: {
|
||||||
|
widget: 'tinymce',
|
||||||
|
loadingTip: 'loading...',
|
||||||
|
config: {
|
||||||
|
height: 450
|
||||||
|
},
|
||||||
|
visibleIf: { name5: (value: string) => value === '1' }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
name6: {
|
||||||
|
type: 'string',
|
||||||
|
title: '视频',
|
||||||
|
ui: {
|
||||||
|
action: apiConf.fileUpload,
|
||||||
|
accept: 'video/mp4,video/avi,video/mkv,video/vob',
|
||||||
|
limit: 1,
|
||||||
|
limitFileCount: 1,
|
||||||
|
resReName: 'data.fullFilePath',
|
||||||
|
urlReName: 'data.fullFilePath',
|
||||||
|
widget: 'upload',
|
||||||
|
descriptionI18n: '支持MP4、AVI、DAT、MKV、FLV、VOB格式,文件小于20M。',
|
||||||
|
name: 'multipartFile',
|
||||||
|
multiple: false,
|
||||||
|
listType: 'picture-card',
|
||||||
|
beforeUpload: (file: any, _fileList: any) => {
|
||||||
|
return new Observable((observer: Observer<boolean>) => {
|
||||||
|
const isLt2M = file.size / 1024 / 1024 < 20;
|
||||||
|
if (!isLt2M) {
|
||||||
|
this.service.msgSrv.warning('视频大小超过20M!');
|
||||||
|
observer.complete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
observer.next(isLt2M);
|
||||||
|
observer.complete();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
visibleIf: { name5: (value: string) => value === '2' }
|
||||||
|
} as SFUploadWidgetSchema
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name1', 'name2']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 150,
|
||||||
|
grid: { span: 20 }
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
// this.service.request('', { ...this.sf.value }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.modalRef.destroy(true);
|
||||||
|
// } else {
|
||||||
|
// this.service.msgSrv.error(res.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
<page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
|
<!-- 搜索表单 -->
|
||||||
|
<nz-card>
|
||||||
|
<div nz-row nzGutter="8">
|
||||||
|
<!-- 查询字段小于或等于3个时,不显示伸缩按钮 -->
|
||||||
|
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
|
||||||
|
<sf
|
||||||
|
#sf
|
||||||
|
[schema]="schema"
|
||||||
|
[ui]="ui"
|
||||||
|
[mode]="'search'"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
(formSubmit)="search()"
|
||||||
|
(formReset)="resetSF()"
|
||||||
|
></sf>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 查询字段大于3个时,根据展开状态调整布局 -->
|
||||||
|
<ng-container *ngIf="queryFieldCount > 4">
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="search()" >查询</button>
|
||||||
|
<button nz-button (click)="resetSF()" >重置</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<button nz-button nzType="primary" style="margin-bottom: 24px" (click)="add()">新增文章</button>
|
||||||
|
<!-- 数据列表 -->
|
||||||
|
<st
|
||||||
|
#st
|
||||||
|
[data]="data"
|
||||||
|
[columns]="columns"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,200 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { processSingleSort } from '@shared';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { ChannelSalesService } from '../../services/channel-sales.service';
|
||||||
|
import { ParterArticleManagementEditComponent } from '../edit/edit.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-article-management-list',
|
||||||
|
templateUrl: './list.component.html'
|
||||||
|
})
|
||||||
|
export class ParterArticleManagementListComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
columns!: STColumn[];
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st', { static: false })
|
||||||
|
st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false })
|
||||||
|
sf!: SFComponent;
|
||||||
|
spuStatus = '1';
|
||||||
|
_$expand = false;
|
||||||
|
|
||||||
|
data=[{name1:1111}]
|
||||||
|
constructor(
|
||||||
|
public router: Router,
|
||||||
|
public ar: ActivatedRoute,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
private modalService: NzModalService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
search() {
|
||||||
|
// this.st1?.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询字段个数
|
||||||
|
*/
|
||||||
|
get queryFieldCount(): number {
|
||||||
|
return Object.keys(this.schema?.properties || {}).length;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle(): void {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
ngOnInit() {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
title: '文章标题'
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
type: 'string',
|
||||||
|
title: '分类'
|
||||||
|
},
|
||||||
|
phone1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '状态'
|
||||||
|
},
|
||||||
|
phone2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '推荐到首页',
|
||||||
|
ui: {
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
grid: { span: 8, gutter: 4 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{
|
||||||
|
title: '销售渠道姓名',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所属组织',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '职级',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '等级',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '省市',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邀请码',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '修改',
|
||||||
|
click: (_record, _modal, _instance) => this.edit(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '禁用',
|
||||||
|
click: (_record, _modal, _instance) => this.stop(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '启用',
|
||||||
|
click: (_record, _modal, _instance) => this.start(_record.id),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '推荐到首页',
|
||||||
|
click: (_record, _modal, _instance) => this.recommend(_record.id),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
// 新增
|
||||||
|
add() {
|
||||||
|
this.router.navigate(['/partner/knowledge/article-management-add'], { queryParams: {} });
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
edit(record: STData) {
|
||||||
|
this.router.navigate(['/partner/knowledge/article-management-edit'], { queryParams: {} });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
stop(record: STData) {
|
||||||
|
this.modalService.confirm({
|
||||||
|
nzTitle: '<i>禁用确认</i>',
|
||||||
|
nzContent: `<b>确定禁用此文章吗?</br>`,
|
||||||
|
// nzOnOk: () =>
|
||||||
|
// this.service.request('', '').subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.service.msgSrv.success('冻结成功!');
|
||||||
|
// this.st.reload();
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
start(record: STData) {
|
||||||
|
this.modalService.confirm({
|
||||||
|
nzTitle: '<i>启用确认</i>',
|
||||||
|
nzContent: `<b>确定启用此文章吗?</br>`,
|
||||||
|
// nzOnOk: () =>
|
||||||
|
// this.service.request('', '').subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.service.msgSrv.success('冻结成功!');
|
||||||
|
// this.st.reload();
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
recommend(record: STData) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class ChannelSalesService extends BaseService {
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
<page-header-wrapper [title]="''" [tab]="tpTab">
|
||||||
|
|
||||||
|
</page-header-wrapper>
|
||||||
|
<ng-template #tpTab>
|
||||||
|
<nz-tabset [(nzSelectedIndex)]="selectedIndex">
|
||||||
|
<nz-tab [nzTitle]="item.name" *ngFor="let item of tabs">
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
</ng-template>
|
||||||
|
<app-partner-partner-statistics *ngIf="selectedIndex === 0"></app-partner-partner-statistics>
|
||||||
|
<app-partner-sale-statistics *ngIf="selectedIndex === 1"></app-partner-sale-statistics>
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFSchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-business-statistics-index',
|
||||||
|
templateUrl: './index.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerBusinessStatisticsIndexComponent implements OnInit {
|
||||||
|
url = `/user`;
|
||||||
|
schema!: SFSchema;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
selectedIndex = 0;
|
||||||
|
tabs = [
|
||||||
|
{
|
||||||
|
name: '合伙人统计',
|
||||||
|
value: '0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '渠道销售统计',
|
||||||
|
value: '1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
constructor() { }
|
||||||
|
|
||||||
|
|
||||||
|
ngOnInit(): void { }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
add(): void {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
<page-header-wrapper [title]="'客户明细'" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<div class="user-info border-1" nz-row>
|
||||||
|
<div nz-col nzSpan="24" class="d-flex p-md">
|
||||||
|
<img class="user-logo" [src]="detailInfo?.logo" />
|
||||||
|
<div style="flex: 1;">
|
||||||
|
<div>
|
||||||
|
<h3>{{detailInfo?.company}}</h3>
|
||||||
|
<div class="mb-sm">
|
||||||
|
<span class="letf-box text-grey-dark">{{detailInfo?.code}}</span>
|
||||||
|
<span class="mr-xs">{{detailInfo?.proxy}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="letf-box">添加时间:{{detailInfo?.createTime}}</span>
|
||||||
|
<span>所属城市:{{detailInfo?.belongCity}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-md" nz-row>
|
||||||
|
<div nz-col [nzSpan]="12">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"> </sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="8">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="search()">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
|
||||||
|
<st #st [data]="service.$api_get_partner_statistics_page" [columns]="columns" [scroll]="{x:'1500px'}"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500] }"></st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
:host {
|
||||||
|
.user-logo {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.letf-box {
|
||||||
|
display: inline-block;
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerPartnerCustomDetailComponent } from './partner-custom-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerPartnerCustomDetailComponent', () => {
|
||||||
|
let component: PartnerPartnerCustomDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerPartnerCustomDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ PartnerPartnerCustomDetailComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerPartnerCustomDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,163 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { BussinessStatisticsService } from '../../services/bussiness-statistics.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-partner-custom-detail',
|
||||||
|
templateUrl: './partner-custom-detail.component.html',
|
||||||
|
styleUrls: ['./partner-custom-detail.component.less']
|
||||||
|
})
|
||||||
|
export class PartnerPartnerCustomDetailComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui!: SFUISchema;
|
||||||
|
detailInfo: any = {
|
||||||
|
logo: './assets/images/user/logo.svg',
|
||||||
|
company: '张三',
|
||||||
|
code: '91440300357887492H',
|
||||||
|
proxy: '企业合伙人',
|
||||||
|
belongCity: '深圳、上海、北京',
|
||||||
|
createTime: '2021-09-23 14:43:31'
|
||||||
|
}
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
columns: STColumn[] = [
|
||||||
|
{ title: '编号', index: 'no' },
|
||||||
|
{ title: '调用次数', type: 'number', index: 'callNo' },
|
||||||
|
{ title: '头像', type: 'img', width: '50px', index: 'avatar' },
|
||||||
|
{ title: '时间', type: 'date', index: 'updatedAt' },
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
buttons: [
|
||||||
|
// { text: '查看', click: (item: any) => `/form/${item.id}` },
|
||||||
|
// { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
_$expand = false;
|
||||||
|
|
||||||
|
constructor(public service: BussinessStatisticsService, public router: Router) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initST();
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
|
||||||
|
resetSF() {
|
||||||
|
this._$expand = false;
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle() {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
search() {
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
export() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
abnormalCause: {
|
||||||
|
title: '客户名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause1: {
|
||||||
|
title: '客户状态',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
enum: [
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '个人',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '企业',
|
||||||
|
value: '2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = {
|
||||||
|
'*': { spanLabelFixed: 100, grid: { span: 11, gutter: 4 } },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '客户名称', index: 'carNo', className: 'text-center', width: 150 },
|
||||||
|
{ title: '客户状态', render: 'carModelLabel', className: 'text-center', width: 120 },
|
||||||
|
{ title: '结算时间段', index: 'carNo', className: 'text-center', width: 200 },
|
||||||
|
{ title: '本月交易数', render: 'approvalStatus0', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '客户总数', render: 'approvalStatus', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '累计交易数', render: 'approvalStatus1', className: 'text-center', sort: true, width: 120 },
|
||||||
|
{ title: '本月已结算订单', render: 'approvalStatus2', className: 'text-center', sort: true, width: 180 },
|
||||||
|
{ title: '累计已结算订单', render: 'approvalStatus3', className: 'text-center', sort: true, width: 180 },
|
||||||
|
{ title: '本月交易金额(元)', index: 'approvalStatus5', className: 'text-right', sort: true, type: 'currency', width: 180 },
|
||||||
|
{ title: '累计交易金额(元)', index: 'approvalStatus6', className: 'text-right', sort: true, type: 'currency', width: 180 },
|
||||||
|
{ title: '本月已结算金额(元)', index: 'approvalStatus7', className: 'text-right', sort: true, type: 'currency', width: 200 },
|
||||||
|
{ title: '累计已结算金额(元)', index: 'approvalStatus8', className: 'text-right', sort: true, type: 'currency', width: 200 },
|
||||||
|
{ title: '本月已开票金额(元)', index: 'approvalStatus9', className: 'text-right', sort: true, type: 'currency', width: 200 },
|
||||||
|
{ title: '累计已开票金额(元)', index: 'approvalStatus10', className: 'text-right', sort: true, type: 'currency', width: 200 },
|
||||||
|
{ title: '本月申请开票金额(元)', index: 'approvalStatus11', className: 'text-right', sort: true, type: 'currency', width: 200 },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: 150,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '查看订单明细',
|
||||||
|
click: (_record) => this.viewOrderDetail(_record)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看订单明细
|
||||||
|
* @param record 当前对象
|
||||||
|
*/
|
||||||
|
viewOrderDetail(record: any) {
|
||||||
|
this.router.navigate([`/partner/business-statistics/partner/custom-order-detail/${record?.id}`])
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
<page-header-wrapper [title]="'客户明细'" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<div class="user-info border-1" nz-row>
|
||||||
|
<div nz-col nzSpan="24" class="d-flex p-md">
|
||||||
|
<img class="user-logo" [src]="detailInfo?.logo" />
|
||||||
|
<div style="flex: 1;">
|
||||||
|
<div>
|
||||||
|
<h3>{{detailInfo?.company}}</h3>
|
||||||
|
<div class="mb-sm">
|
||||||
|
<span class="letf-box text-grey-dark">{{detailInfo?.code}}</span>
|
||||||
|
<span class="mr-xs">{{detailInfo?.proxy}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="letf-box">添加时间:{{detailInfo?.createTime}}</span>
|
||||||
|
<span c>所属城市:{{detailInfo?.belongCity}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-md" nz-row>
|
||||||
|
<div nz-col [nzSpan]="18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"> </sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="6">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="search()">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
|
||||||
|
<st #st [data]="service.$api_get_partner_statistics_page" [columns]="columns" [scroll]="{x:'1500px'}"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500] }"></st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
:host {
|
||||||
|
.user-logo {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.letf-box {
|
||||||
|
display: inline-block;
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerPartnerCustomOrderDetailComponent } from './partner-custom-order-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerPartnerCustomOrderDetailComponent', () => {
|
||||||
|
let component: PartnerPartnerCustomOrderDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerPartnerCustomOrderDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ PartnerPartnerCustomOrderDetailComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerPartnerCustomOrderDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,162 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { BussinessStatisticsService } from '../../services/bussiness-statistics.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-partner-custom-order-detail',
|
||||||
|
templateUrl: './partner-custom-order-detail.component.html',
|
||||||
|
styleUrls: ['./partner-custom-order-detail.component.less']
|
||||||
|
})
|
||||||
|
export class PartnerPartnerCustomOrderDetailComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui!: SFUISchema;
|
||||||
|
detailInfo: any = {
|
||||||
|
logo: './assets/images/user/logo.svg',
|
||||||
|
company: '张三',
|
||||||
|
code: '91440300357887492H',
|
||||||
|
proxy: '企业合伙人',
|
||||||
|
belongCity: '深圳、上海、北京',
|
||||||
|
createTime: '2021-09-23 14:43:31'
|
||||||
|
}
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
_$expand = false;
|
||||||
|
|
||||||
|
constructor(public service: BussinessStatisticsService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initST();
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
|
||||||
|
resetSF() {
|
||||||
|
this._$expand = false;
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle() {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
search() {
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
export() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
abnormalCause: {
|
||||||
|
title: '订单号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause1: {
|
||||||
|
title: '订单状态',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
enum: [
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '个人',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '企业',
|
||||||
|
value: '2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause2: {
|
||||||
|
title: '开票状态',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
enum: [
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '个人',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '企业',
|
||||||
|
value: '2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = {
|
||||||
|
'*': { spanLabelFixed: 100, grid: { span: 7, gutter: 4 } },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '订单号', index: 'carNo', className: 'text-center', width: 150 },
|
||||||
|
{ title: '订单状态', render: 'carModelLabel', className: 'text-center', width: 120 },
|
||||||
|
{ title: '订单金额(元)', index: 'carNo', className: 'text-center', width: 200 },
|
||||||
|
{ title: '实际付款金额(元)', render: 'approvalStatus0', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '客户附加费率', render: 'approvalStatus', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '预估收益(元)', render: 'approvalStatus1', className: 'text-center', sort: true, width: 120 },
|
||||||
|
{ title: '开票状态', render: 'approvalStatus2', className: 'text-center', sort: true, width: 180 },
|
||||||
|
{ title: '开票金额(元)', render: 'approvalStatus3', className: 'text-center', sort: true, width: 180 },
|
||||||
|
{ title: '下单时间', index: 'approvalStatus5', className: 'text-right', sort: true, type: 'currency', width: 180 },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: 150,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '查看订单详情',
|
||||||
|
click: (_record) => this.viewOrderDetail(_record)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
viewOrderDetail(record: any) {
|
||||||
|
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
<page-header-wrapper [title]="'客户明细'" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<div class="user-info border-1" nz-row>
|
||||||
|
<div nz-col nzSpan="24" class="d-flex p-md">
|
||||||
|
<img class="user-logo" [src]="detailInfo?.logo" />
|
||||||
|
<div style="flex: 1;">
|
||||||
|
<div>
|
||||||
|
<h3>{{detailInfo?.company}}</h3>
|
||||||
|
<div class="mb-sm">
|
||||||
|
<span class="letf-box text-grey-dark">{{detailInfo?.code}}</span>
|
||||||
|
<span class="mr-xs">{{detailInfo?.proxy}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="letf-box">添加时间:{{detailInfo?.createTime}}</span>
|
||||||
|
<span c>所属城市:{{detailInfo?.belongCity}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-md" nzGutter="8" nz-row>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="service.http.loading"
|
||||||
|
(click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
|
||||||
|
<st #st [data]="service.$api_get_partner_statistics_page" [columns]="columns" [scroll]="{x:'1500px'}"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500] }"></st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
:host {
|
||||||
|
.user-logo {
|
||||||
|
width: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.letf-box {
|
||||||
|
display: inline-block;
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerPartnerOrderDetailComponent } from './partner-order-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerPartnerOrderDetailComponent', () => {
|
||||||
|
let component: PartnerPartnerOrderDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerPartnerOrderDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ PartnerPartnerOrderDetailComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerPartnerOrderDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,174 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { BussinessStatisticsService } from '../../services/bussiness-statistics.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-partner-order-detail',
|
||||||
|
templateUrl: './partner-order-detail.component.html',
|
||||||
|
styleUrls: ['./partner-order-detail.component.less']
|
||||||
|
})
|
||||||
|
export class PartnerPartnerOrderDetailComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
ui!: SFUISchema;
|
||||||
|
detailInfo: any = {
|
||||||
|
logo: './assets/images/user/logo.svg',
|
||||||
|
company: '张三',
|
||||||
|
code: '91440300357887492H',
|
||||||
|
proxy: '企业合伙人',
|
||||||
|
belongCity: '深圳、上海、北京',
|
||||||
|
createTime: '2021-09-23 14:43:31'
|
||||||
|
}
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
_$expand = false;
|
||||||
|
|
||||||
|
constructor(public service: BussinessStatisticsService) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initST();
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
|
||||||
|
resetSF() {
|
||||||
|
this._$expand = false;
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle() {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
search() {
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
export() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
|
abnormalCause: {
|
||||||
|
title: '订单号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause1: {
|
||||||
|
title: '订单状态',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
enum: [
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '个人',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '企业',
|
||||||
|
value: '2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause2: {
|
||||||
|
title: '开票状态',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
enum: [
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '个人',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '企业',
|
||||||
|
value: '2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause3: {
|
||||||
|
title: '客户名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = {
|
||||||
|
'*': { spanLabelFixed: 100, grid: { span: 8, gutter: 4 } },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '订单号', index: 'carNo', className: 'text-center', width: 150 },
|
||||||
|
{ title: '订单状态', render: 'carModelLabel', className: 'text-center', width: 120 },
|
||||||
|
{ title: '订单金额(元)', index: 'carNo', className: 'text-center', width: 200 },
|
||||||
|
{ title: '实际付款金额(元)', render: 'approvalStatus0', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '客户附加费率', render: 'approvalStatus', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '预估收益(元)', render: 'approvalStatus1', className: 'text-center', sort: true, width: 120 },
|
||||||
|
{ title: '开票状态', render: 'approvalStatus2', className: 'text-center', sort: true, width: 180 },
|
||||||
|
{ title: '开票金额(元)', render: 'approvalStatus3', className: 'text-center', sort: true, width: 180 },
|
||||||
|
{ title: '下单时间', index: 'approvalStatus5', className: 'text-right', sort: true, type: 'currency', width: 180 },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
width: 150,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '查看订单详情',
|
||||||
|
click: (_record) => this.viewOrderDetail(_record)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
viewOrderDetail(record: any) {
|
||||||
|
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
<nz-card>
|
||||||
|
<sf mode="search" [schema]="schema" [ui]="ui" [button]="'none'" (formSubmit)="st.load(1)" (formReset)="resetSF()" #sf>
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="service.http.loading"
|
||||||
|
(click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<st #st [data]="service.$api_get_partner_statistics_page" [columns]="columns" [scroll]="{ x: '1200px' }"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loading]="service.http.loading">
|
||||||
|
<ng-template st-row="approvalStatus" let-item>
|
||||||
|
<a [routerLink]="'/partner/business-statistics/partner/custom-detail/'+item?.id">{{item.yskmoney}}</a>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="approvalStatus1" let-item>
|
||||||
|
<div class="text-right">{{item.approvalStatus1 | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="approvalStatus2" let-item>
|
||||||
|
<a class="text-right text-blue-dark"
|
||||||
|
[routerLink]="'/partner/business-statistics/partner/order-detail/'+item?.id">{{item.yskmoney | currency:'
|
||||||
|
'}}</a>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
<ng-template st-row="approvalStatus3" let-item>
|
||||||
|
<div class="text-right">{{item.yskmoney | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="approvalStatus4" let-item>
|
||||||
|
<div class="text-right">{{item.armoney | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerPartnerStatisticsComponent } from './partner-statistics.component';
|
||||||
|
|
||||||
|
describe('PartnerPartnerStatisticsComponent', () => {
|
||||||
|
let component: PartnerPartnerStatisticsComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerPartnerStatisticsComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ PartnerPartnerStatisticsComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerPartnerStatisticsComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,99 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { BussinessStatisticsService } from '../../services/bussiness-statistics.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-partner-statistics',
|
||||||
|
templateUrl: './partner-statistics.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerPartnerStatisticsComponent implements OnInit {
|
||||||
|
url = `/user`;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
|
||||||
|
constructor(public service: BussinessStatisticsService) { }
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
const params = { ...this.sf?.value };
|
||||||
|
return params
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
abnormalCause: {
|
||||||
|
title: '合伙人名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause1: {
|
||||||
|
title: '类型',
|
||||||
|
type: 'string',
|
||||||
|
default: '',
|
||||||
|
enum: [
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '个人',
|
||||||
|
value: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '企业',
|
||||||
|
value: '2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ui = { '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 } } };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '合伙人名称', index: 'carNo', className: 'text-center', width: 150 },
|
||||||
|
{ title: '类型', render: 'carModelLabel', className: 'text-center', width: 150 },
|
||||||
|
{ title: '注册时间', index: 'carNo', className: 'text-center', width: 150 },
|
||||||
|
{ title: '本月新增客户', render: 'approvalStatus0', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '客户总数', render: 'approvalStatus', className: 'text-center', sort: true, width: 150 },
|
||||||
|
{ title: '本月已结算金额(元)', render: 'approvalStatus1', className: 'text-right', sort: true, width: 180 },
|
||||||
|
{ title: '累计已结算金额(元)', render: 'approvalStatus2', className: 'text-right', sort: true, width: 180 },
|
||||||
|
{ title: '本月预估收益(元)', render: 'approvalStatus3', className: 'text-right', sort: true, width: 180 },
|
||||||
|
{ title: '累计收益(元)', render: 'approvalStatus4', className: 'text-right', sort: true, width: 180 },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
<page-header-wrapper [title]="''" [content]="content">
|
||||||
|
<ng-template #content>
|
||||||
|
<div class="user-info border-1" nz-row>
|
||||||
|
<div nz-col nzSpan="24" class="d-flex p-md">
|
||||||
|
<img class="user-logo" [src]="detailInfo?.logo" />
|
||||||
|
<div style="flex: 1;">
|
||||||
|
<div>
|
||||||
|
<h3>{{detailInfo?.name}}</h3>
|
||||||
|
<div>
|
||||||
|
<span class="mr-md">{{detailInfo?.phone}}</span>
|
||||||
|
<span class="mr-xs">{{detailInfo?.proxy}}</span>
|
||||||
|
<span>{{detailInfo?.level}}</span>
|
||||||
|
</div>
|
||||||
|
<p>添加时间:{{detailInfo?.createTime}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf>
|
||||||
|
<st #st [data]="url" [columns]="columns"></st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerSaleCustomDetailComponent } from './sale-custom-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerSaleCustomDetailComponent', () => {
|
||||||
|
let component: PartnerSaleCustomDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerSaleCustomDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ PartnerSaleCustomDetailComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerSaleCustomDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFSchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-sale-custom-detail',
|
||||||
|
templateUrl: './sale-custom-detail.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerSaleCustomDetailComponent implements OnInit {
|
||||||
|
url = `/user`;
|
||||||
|
searchSchema: SFSchema = {
|
||||||
|
properties: {
|
||||||
|
no: {
|
||||||
|
type: 'string',
|
||||||
|
title: '编号'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
detailInfo: any = {
|
||||||
|
logo: './assets/images/user/logo.svg',
|
||||||
|
name: '张三',
|
||||||
|
phone: '1399999999',
|
||||||
|
proxy: '城市代理',
|
||||||
|
level: '二级',
|
||||||
|
createTime: '添加时间'
|
||||||
|
}
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
columns: STColumn[] = [
|
||||||
|
{ title: '编号', index: 'no' },
|
||||||
|
{ title: '调用次数', type: 'number', index: 'callNo' },
|
||||||
|
{ title: '头像', type: 'img', width: '50px', index: 'avatar' },
|
||||||
|
{ title: '时间', type: 'date', index: 'updatedAt' },
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
buttons: [
|
||||||
|
// { text: '查看', click: (item: any) => `/form/${item.id}` },
|
||||||
|
// { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
constructor(private http: _HttpClient, private modal: ModalHelper) { }
|
||||||
|
|
||||||
|
ngOnInit(): void { }
|
||||||
|
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
<page-header [action]="phActionTpl">
|
||||||
|
<ng-template #phActionTpl>
|
||||||
|
<button (click)="add()" nz-button nzType="primary">新建</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header>
|
||||||
|
<nz-card>
|
||||||
|
<sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf>
|
||||||
|
<st #st [data]="url" [columns]="columns"></st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerSalePartnerDetailComponent } from './sale-partner-detail.component';
|
||||||
|
|
||||||
|
describe('PartnerSalePartnerDetailComponent', () => {
|
||||||
|
let component: PartnerSalePartnerDetailComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerSalePartnerDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ PartnerSalePartnerDetailComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerSalePartnerDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFSchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-sale-partner-detail',
|
||||||
|
templateUrl: './sale-partner-detail.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerSalePartnerDetailComponent implements OnInit {
|
||||||
|
url = `/user`;
|
||||||
|
searchSchema: SFSchema = {
|
||||||
|
properties: {
|
||||||
|
no: {
|
||||||
|
type: 'string',
|
||||||
|
title: '编号'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
columns: STColumn[] = [
|
||||||
|
{ title: '编号', index: 'no' },
|
||||||
|
{ title: '调用次数', type: 'number', index: 'callNo' },
|
||||||
|
{ title: '头像', type: 'img', width: '50px', index: 'avatar' },
|
||||||
|
{ title: '时间', type: 'date', index: 'updatedAt' },
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
buttons: [
|
||||||
|
// { text: '查看', click: (item: any) => `/form/${item.id}` },
|
||||||
|
// { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
constructor(private http: _HttpClient, private modal: ModalHelper) { }
|
||||||
|
|
||||||
|
ngOnInit(): void { }
|
||||||
|
|
||||||
|
add(): void {
|
||||||
|
// this.modal
|
||||||
|
// .createStatic(FormEditComponent, { i: { id: 0 } })
|
||||||
|
// .subscribe(() => this.st.reload());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
<nz-card>
|
||||||
|
<sf mode="search" [schema]="schema" [button]="'none'" #sf>
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="service.http.loading"
|
||||||
|
(click)="st?.load(1)">查询</button>
|
||||||
|
<button nz-button (click)="resetSF()">重置</button>
|
||||||
|
<button nz-button (click)="export()" nzType="primary" nzGhost>导出</button>
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
</nz-card>
|
||||||
|
<nz-card>
|
||||||
|
<st #st [data]="service.$api_get_partner_statistics_page" [columns]="columns" [scroll]="{ x: '1200px' }"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loading]="service.http.loading">
|
||||||
|
<ng-template st-row="approvalStatus" let-item>
|
||||||
|
<a [routerLink]="'/'">{{item.yskmoney | currency:' ':false:'1.0-2'}}</a>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="approvalStatus1" let-item>
|
||||||
|
<div>{{item.approvalStatus1 | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template st-row="approvalStatus2" let-item>
|
||||||
|
<div class="text-right">{{item.approvalStatus1 | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
|
<ng-template st-row="approvalStatus3" let-item>
|
||||||
|
<div class="text-right">{{item.yskmoney | currency:' '}}</div>
|
||||||
|
</ng-template>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { PartnerSaleStatisticsComponent } from './sale-statistics.component';
|
||||||
|
|
||||||
|
describe('PartnerSaleStatisticsComponent', () => {
|
||||||
|
let component: PartnerSaleStatisticsComponent;
|
||||||
|
let fixture: ComponentFixture<PartnerSaleStatisticsComponent>;
|
||||||
|
|
||||||
|
beforeEach(waitForAsync(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ PartnerSaleStatisticsComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PartnerSaleStatisticsComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { STColumn, STComponent } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { BussinessStatisticsService } from '../../services/bussiness-statistics.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-partner-sale-statistics',
|
||||||
|
templateUrl: './sale-statistics.component.html',
|
||||||
|
})
|
||||||
|
export class PartnerSaleStatisticsComponent implements OnInit {
|
||||||
|
url = `/user`;
|
||||||
|
schema!: SFSchema;
|
||||||
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
|
@ViewChild('sf') private readonly sf!: SFComponent;
|
||||||
|
columns: STColumn[] = [];
|
||||||
|
ui!: SFUISchema;
|
||||||
|
|
||||||
|
constructor(public service: BussinessStatisticsService) { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
const params = { ...this.sf?.value };
|
||||||
|
return params
|
||||||
|
}
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
abnormalCause: {
|
||||||
|
title: '渠道销售姓名',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
abnormalCause1: {
|
||||||
|
title: '手机号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
placeholder: '请输入'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = { '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 8 } } };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 初始化数据列表
|
||||||
|
*/
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{ title: '联系人', index: 'carNo', className: 'text-center' },
|
||||||
|
{ title: '手机号', render: 'carModelLabel', className: 'text-center' },
|
||||||
|
{ title: '添加时间', index: 'carNo', className: 'text-center' },
|
||||||
|
{ title: '本月新增客户', render: 'approvalStatus', className: 'text-center', sort: true },
|
||||||
|
{ title: '客户总数', render: 'approvalStatus', className: 'text-center', sort: true },
|
||||||
|
{ title: '本月新增合伙人', render: 'approvalStatus1', className: 'text-center', sort: true },
|
||||||
|
{ title: '合伙人总数', render: 'approvalStatus1', className: 'text-center', sort: true },
|
||||||
|
{ title: '本月已结算金额(元)', render: 'approvalStatus2', className: 'text-right', sort: true },
|
||||||
|
{ title: '累计已结算金额(元)', render: 'approvalStatus3', className: 'text-right', sort: true },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
export() {
|
||||||
|
|
||||||
|
}
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.st.reset();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class BussinessStatisticsService extends BaseService {
|
||||||
|
|
||||||
|
$api_get_partner_statistics_page = `/api/fcc/ficoBrmH/list/page`;
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,145 @@
|
|||||||
|
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { SFAutoCompleteWidgetSchema, SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
|
||||||
|
import { ChannelSalesService } from '../../services/channel-sales.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-channel-sales-edit',
|
||||||
|
templateUrl: './edit.component.html'
|
||||||
|
})
|
||||||
|
export class ParterChannelSalesEditComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
private modalRef: NzModalRef
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: '渠道销售姓名',
|
||||||
|
type: 'string',
|
||||||
|
maxLength: 12,
|
||||||
|
ui: {
|
||||||
|
placeholder:'请输入'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
phoneNumber: {
|
||||||
|
title: '手机号',
|
||||||
|
type: 'string',
|
||||||
|
maxLength: 11,
|
||||||
|
ui: {
|
||||||
|
placeholder:'请输入'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
employeeVO: {
|
||||||
|
title: '关联OA员工',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'autocomplete',
|
||||||
|
placeholder:'请选择',
|
||||||
|
asyncData: (input:string) => this.service.request(this.service.$api_fuzzyQuery,{name:input}).pipe(
|
||||||
|
map((res: any) => {
|
||||||
|
console.log('111',res)
|
||||||
|
return [];
|
||||||
|
})
|
||||||
|
)
|
||||||
|
} as SFAutoCompleteWidgetSchema,
|
||||||
|
},
|
||||||
|
isAuthorization: {
|
||||||
|
type: 'string',
|
||||||
|
title: '授权登录运营后台',
|
||||||
|
enum: [
|
||||||
|
{ label: '否', value: '0' },
|
||||||
|
{ label: '是', value: '1' }
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'radio',
|
||||||
|
} as SFRadioWidgetSchema,
|
||||||
|
default: '0',
|
||||||
|
},
|
||||||
|
roleIds: {
|
||||||
|
title: '',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder: '授权角色',
|
||||||
|
mode: 'multiple',
|
||||||
|
maxMultipleCount: 5,
|
||||||
|
asyncData: () => {
|
||||||
|
|
||||||
|
return this.service.request(this.service.$api_getAppRoleList).pipe(
|
||||||
|
map((res: any) => {
|
||||||
|
return res
|
||||||
|
.filter((role: any) => role.roleCode !== 'Administrator')
|
||||||
|
.map((item: any) => {
|
||||||
|
return { label: item.roleName, value: item.id };
|
||||||
|
});
|
||||||
|
})
|
||||||
|
);
|
||||||
|
},
|
||||||
|
visibleIf: { isAuthorization: (value: string) => value === '1' }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
remark: {
|
||||||
|
type: 'string',
|
||||||
|
title: '备注',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请输入50字符'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name', 'phoneNumber', 'employeeVO', 'roleIds', 'remark']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 150,
|
||||||
|
grid: { span: 24 }
|
||||||
|
},
|
||||||
|
$isAuthorization:{ grid: { span: 12 }},
|
||||||
|
$roleIds:{ spanLabelFixed: 10, grid: { span: 12 }},
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
this.service.request(this.service.$api_save, { ...this.sf.value }).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.modalRef.destroy(true);
|
||||||
|
} else {
|
||||||
|
this.service.msgSrv.error(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
<nz-card>
|
||||||
|
<!-- 搜索区 -->
|
||||||
|
<sf
|
||||||
|
#sf
|
||||||
|
[ui]="ui"
|
||||||
|
[schema]="schema"
|
||||||
|
[mode]="'search'"
|
||||||
|
(formSubmit)="st?.load(1)"
|
||||||
|
(formReset)="resetSF()"
|
||||||
|
></sf>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<button nz-button nzType="primary" style="margin-bottom: 24px" (click)="add()"><i nz-icon nzType="plus"></i>新增</button>
|
||||||
|
<!-- 数据列表 -->
|
||||||
|
<st
|
||||||
|
#st
|
||||||
|
[data]="service.$api_getPage"
|
||||||
|
[columns]="columns"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,175 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { processSingleSort } from '@shared';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { ChannelSalesService } from '../../services/channel-sales.service';
|
||||||
|
import { ParterChannelSalesEditComponent } from '../edit/edit.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-channel-sales-list',
|
||||||
|
templateUrl: './list.component.html'
|
||||||
|
})
|
||||||
|
export class ParterChannelSalesListComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
columns!: STColumn[];
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st', { static: false })
|
||||||
|
st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false })
|
||||||
|
sf!: SFComponent;
|
||||||
|
spuStatus = '1';
|
||||||
|
|
||||||
|
data=[{name1:1111}]
|
||||||
|
constructor(
|
||||||
|
public router: Router,
|
||||||
|
public ar: ActivatedRoute,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
private modalService: NzModalService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
ngOnInit() {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
title: '销售渠道姓名'
|
||||||
|
},
|
||||||
|
telephone: {
|
||||||
|
type: 'string',
|
||||||
|
title: '手机号'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
grid: { span: 8, gutter: 4 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{
|
||||||
|
title: '销售渠道姓名',
|
||||||
|
index: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号',
|
||||||
|
index: 'telephone'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所属组织',
|
||||||
|
index: 'organLable'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '职级',
|
||||||
|
index: 'station'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '等级',
|
||||||
|
index: 'postLevel'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '省市',
|
||||||
|
index: 'residencePlace'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邀请码',
|
||||||
|
index: 'inviteCode'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '编辑',
|
||||||
|
click: (_record, _modal, _instance) => this.edit(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '查看',
|
||||||
|
click: (_record, _modal, _instance) => this.view(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '冻结',
|
||||||
|
click: (_record, _modal, _instance) => this.stop(_record.id),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
add() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzWidth:600,
|
||||||
|
nzTitle: '新增',
|
||||||
|
nzContent: ParterChannelSalesEditComponent,
|
||||||
|
nzComponentParams: { type: this.spuStatus }
|
||||||
|
});
|
||||||
|
modalRef.afterClose.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.st.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
edit(record: STData) {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzWidth:600,
|
||||||
|
nzTitle: '编辑',
|
||||||
|
nzContent: ParterChannelSalesEditComponent,
|
||||||
|
nzComponentParams: { i: record, type: this.spuStatus }
|
||||||
|
});
|
||||||
|
modalRef.afterClose.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.st.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
view(record: STData) {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '查看',
|
||||||
|
nzContent: ParterChannelSalesEditComponent,
|
||||||
|
nzComponentParams: { i: record }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
stop(id: any) {
|
||||||
|
this.modalService.confirm({
|
||||||
|
nzTitle: '<i>冻结确认</i>',
|
||||||
|
nzContent: `<b>确定冻结该账号吗?</br>`,
|
||||||
|
// nzOnOk: () =>
|
||||||
|
// this.service.request('', '').subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.service.msgSrv.success('冻结成功!');
|
||||||
|
// this.st.reload();
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class ChannelSalesService extends BaseService {
|
||||||
|
|
||||||
|
// 保存渠道销售管理
|
||||||
|
$api_save = '/api/mdc/channelSalesManagement/save';
|
||||||
|
|
||||||
|
// 查询渠道销售管理表
|
||||||
|
$api_getPage = '/api/mdc/channelSalesManagement/list/page';
|
||||||
|
// OA员工模糊查询
|
||||||
|
$api_fuzzyQuery = '/api/mdc/channelSalesManagement/fuzzyQuery';
|
||||||
|
// 获取角色列表
|
||||||
|
$api_getAppRoleList = '/api/mdc/cuc/roleInfo/getRoleList';
|
||||||
|
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
|
||||||
|
</sf>
|
||||||
|
<div style="font-size: 8px;">
|
||||||
|
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
|
||||||
|
</div>
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,98 @@
|
|||||||
|
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
|
||||||
|
import { ClaimAuditService } from '../../services/claim-audit.service';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-claim-audit-channel-approve',
|
||||||
|
templateUrl: './channel-approve.component.html'
|
||||||
|
})
|
||||||
|
export class ParterClaimAuditListChannelApproveComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public service: ClaimAuditService,
|
||||||
|
private modalRef: NzModalRef
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
title: '合伙人(认领人)',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
title: '认领客户名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
title: '结算起算日期',
|
||||||
|
type: 'string',
|
||||||
|
format: 'date',
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '备注',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请不要超过50个字'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name3']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 120,
|
||||||
|
grid: { span: 24 }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
// this.service.request('', { ...this.sf.value }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.modalRef.destroy(true);
|
||||||
|
// } else {
|
||||||
|
// this.service.msgSrv.error(res.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,62 @@
|
|||||||
|
|
||||||
|
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #headerContent>
|
||||||
|
<div nz-row class="head-box">
|
||||||
|
<div nz-col nzSpan="1">
|
||||||
|
<img src="./assets/images/usercenter/拉货车.png" alt="" />
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="11" class="pl-lg">
|
||||||
|
<div class="right-h">深圳市XXXXXXX有限公司</div>
|
||||||
|
<div class="right-s">91440300357887492H</div>
|
||||||
|
<sv-container col="2" >
|
||||||
|
<sv label="联系人"> </sv>
|
||||||
|
<sv label="注册时间"> </sv>
|
||||||
|
<sv label="合同有效期"> </sv>
|
||||||
|
<sv label="运营主体"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="10">
|
||||||
|
<div class="left-rt">待审核</div>
|
||||||
|
<div class="left-rb">
|
||||||
|
<button nz-button (click) ="reject()">拒绝</button>
|
||||||
|
<button nz-button nzType="primary" (click) ="approve()">通过</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card nzTitle="运单进度">
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col nzSpan="12">
|
||||||
|
<sv-container col="1" labelWidth="120">
|
||||||
|
<sv-title>现渠道销售(提交人)</sv-title>
|
||||||
|
<sv label="姓名"> </sv>
|
||||||
|
<sv label="手机号"> </sv>
|
||||||
|
<sv label="绑定时间"> </sv>
|
||||||
|
<sv label="认领备注"> </sv>
|
||||||
|
<sv label="提交时间"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<nz-divider></nz-divider>
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col nzSpan="12">
|
||||||
|
<sv-container col="1" labelWidth="120">
|
||||||
|
<sv-title>原渠道销售</sv-title>
|
||||||
|
<sv label="姓名"> </sv>
|
||||||
|
<sv label="手机号"> </sv>
|
||||||
|
<sv label="绑定时间"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card nzTitle="操作日志">
|
||||||
|
<st #st [data]="data" [columns]="columns"></st>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
:host {
|
||||||
|
.head-box {
|
||||||
|
img {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
.right-h{
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.right-s{
|
||||||
|
color: #7f7f7f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-rt {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-rb {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding-top: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn } from '@delon/abc/st';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzCardComponent } from 'ng-zorro-antd/card';
|
||||||
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import format from 'date-fns/format';
|
||||||
|
|
||||||
|
import { ClaimAuditService } from '../../services/claim-audit.service';
|
||||||
|
import { ParterClaimAuditListChannelApproveComponent } from '../channel-approve/channel-approve.component';
|
||||||
|
import { ParterClaimAuditListChannelRejectComponent } from '../channel-reject/channel-reject.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-claim-audit-channel-detail',
|
||||||
|
templateUrl: './channel-detail.component.html',
|
||||||
|
styleUrls: ['./channel-detail.component.less']
|
||||||
|
})
|
||||||
|
export class ParterClaimAuditListChannelDetailComponent implements OnInit {
|
||||||
|
id = this.route.snapshot.queryParams.id;
|
||||||
|
i: any;
|
||||||
|
imges: any;
|
||||||
|
isVisible = false;
|
||||||
|
columns: STColumn[] = [
|
||||||
|
{ title: '操作时间', index: 'id', width: 120 },
|
||||||
|
{ title: '操作人', type: 'img', width: 120, },
|
||||||
|
{ title: '操作人手机号', index: 'email', width: 120 },
|
||||||
|
{ title: '操作页面', index: 'phone' },
|
||||||
|
{ title: '操作内容', index: 'registered' }
|
||||||
|
];
|
||||||
|
|
||||||
|
data=[{id:11111}]
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
private service: ClaimAuditService,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
private router: Router
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initData();
|
||||||
|
}
|
||||||
|
|
||||||
|
initData() {
|
||||||
|
// this.service.request(this.service.$api_getBulkBillDetail, { id: this.id }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.i = res;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
approve() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '同意',
|
||||||
|
nzWidth: 700,
|
||||||
|
nzContent: ParterClaimAuditListChannelApproveComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: this.i
|
||||||
|
},
|
||||||
|
nzFooter: null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
reject() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '拒绝',
|
||||||
|
nzWidth: 700,
|
||||||
|
nzContent: ParterClaimAuditListChannelRejectComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: this.i
|
||||||
|
},
|
||||||
|
nzFooter: null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
|
||||||
|
</sf>
|
||||||
|
<div style="font-size: 8px;">
|
||||||
|
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
|
||||||
|
</div>
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,98 @@
|
|||||||
|
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
|
||||||
|
import { ClaimAuditService } from '../../services/claim-audit.service';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-claim-audit-channel-reject',
|
||||||
|
templateUrl: './channel-reject.component.html'
|
||||||
|
})
|
||||||
|
export class ParterClaimAuditListChannelRejectComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public service: ClaimAuditService,
|
||||||
|
private modalRef: NzModalRef
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
title: '合伙人(认领人)',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
title: '认领客户名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
title: '结算起算日期',
|
||||||
|
type: 'string',
|
||||||
|
format: 'date',
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '备注',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请不要超过50个字'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name3']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 120,
|
||||||
|
grid: { span: 24 }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
// this.service.request('', { ...this.sf.value }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.modalRef.destroy(true);
|
||||||
|
// } else {
|
||||||
|
// this.service.msgSrv.error(res.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,66 @@
|
|||||||
|
<page-header-wrapper [title]="''"></page-header-wrapper>
|
||||||
|
<!-- 搜索表单 -->
|
||||||
|
<nz-card>
|
||||||
|
<div nz-row nzGutter="8">
|
||||||
|
<!-- 查询字段小于或等于3个时,不显示伸缩按钮 -->
|
||||||
|
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
|
||||||
|
<sf
|
||||||
|
#sf
|
||||||
|
[schema]="schema"
|
||||||
|
[ui]="ui"
|
||||||
|
[mode]="'search'"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
(formSubmit)="search()"
|
||||||
|
(formReset)="resetSF()"
|
||||||
|
></sf>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 查询字段大于3个时,根据展开状态调整布局 -->
|
||||||
|
<ng-container *ngIf="queryFieldCount > 4">
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
|
||||||
|
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="search()" >查询</button>
|
||||||
|
<button nz-button (click)="resetSF()" >重置</button>
|
||||||
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
|
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<nz-tabset [nzSelectedIndex]="selectedIndex" (nzSelectChange) = "tabChange($event)">
|
||||||
|
<nz-tab nzTitle="合伙人认领">
|
||||||
|
<st
|
||||||
|
#st1
|
||||||
|
[data]="data"
|
||||||
|
[columns]="columns1"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-tab>
|
||||||
|
<nz-tab nzTitle="渠道销售认领">
|
||||||
|
<st
|
||||||
|
#st2
|
||||||
|
[data]="data"
|
||||||
|
[columns]="columns2"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-tab>
|
||||||
|
</nz-tabset>
|
||||||
|
|
||||||
|
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,230 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { processSingleSort } from '@shared';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { ClaimAuditService } from '../../services/claim-audit.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-claim-audit-list',
|
||||||
|
templateUrl: './list.component.html'
|
||||||
|
})
|
||||||
|
export class ParterClaimAuditListComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
columns1!: STColumn[];
|
||||||
|
columns2!: STColumn[];
|
||||||
|
@ViewChild('st1', { static: false })
|
||||||
|
st1!: STComponent;
|
||||||
|
@ViewChild('st2', { static: false })
|
||||||
|
st2!: STComponent;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('sf', { static: false })
|
||||||
|
sf!: SFComponent;
|
||||||
|
_$expand = false;
|
||||||
|
selectedIndex = 0;
|
||||||
|
|
||||||
|
data=[{name1:1111}]
|
||||||
|
constructor(
|
||||||
|
public router: Router,
|
||||||
|
public ar: ActivatedRoute,
|
||||||
|
public service: ClaimAuditService,
|
||||||
|
private modalService: NzModalService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 查询字段个数
|
||||||
|
*/
|
||||||
|
get queryFieldCount(): number {
|
||||||
|
return Object.keys(this.schema?.properties || {}).length;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 伸缩查询条件
|
||||||
|
*/
|
||||||
|
expandToggle(): void {
|
||||||
|
this._$expand = !this._$expand;
|
||||||
|
this.sf?.setValue('/_$expand', this._$expand);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.initSF();
|
||||||
|
this.initST1();
|
||||||
|
this.initST2();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
title: '认领人'
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
type: 'string',
|
||||||
|
title: '客户名称'
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '平台审核状态'
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '渠道销售状态',
|
||||||
|
ui: {
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
name4: {
|
||||||
|
type: 'string',
|
||||||
|
title: 'CRM状态',
|
||||||
|
ui: {
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
grid: { span: 8, gutter: 4 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
initST1() {
|
||||||
|
this.columns1 = [
|
||||||
|
{
|
||||||
|
title: '提交人',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '客户名称',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '认领备注',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '渠道销售审核状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CRM状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '平台审核状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CRM状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '提交时间',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '详情',
|
||||||
|
click: (_record, _modal, _instance) => this.partnerView(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '审核',
|
||||||
|
click: (_record, _modal, _instance) => this.partnerView(_record),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
initST2() {
|
||||||
|
this.columns2 = [
|
||||||
|
{
|
||||||
|
title: '提交人',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '客户名称',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '认领备注',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'CRM状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '平台审核状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '提交时间',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '详情',
|
||||||
|
click: (_record, _modal, _instance) => this.channelView(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '审核',
|
||||||
|
click: (_record, _modal, _instance) => this.channelView(_record),
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
partnerView(record: STData) {
|
||||||
|
this.router.navigate(['/partner/claim-audit/partner-detail'], { queryParams: {} });
|
||||||
|
}
|
||||||
|
|
||||||
|
channelView(record: STData) {
|
||||||
|
this.router.navigate(['/partner/claim-audit/channel-detail'], { queryParams: {} });
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
}
|
||||||
|
search() {
|
||||||
|
// this.st1?.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
tabChange(index:any){
|
||||||
|
console.log(index)
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
this.initST1();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
this.initST2();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
|
||||||
|
</sf>
|
||||||
|
<div style="font-size: 8px;">
|
||||||
|
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
|
||||||
|
</div>
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,98 @@
|
|||||||
|
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
|
||||||
|
import { ClaimAuditService } from '../../services/claim-audit.service';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-claim-audit-partner-approve',
|
||||||
|
templateUrl: './partner-approve.component.html'
|
||||||
|
})
|
||||||
|
export class ParterClaimAuditListPartnerApproveComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public service: ClaimAuditService,
|
||||||
|
private modalRef: NzModalRef
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
title: '合伙人(认领人)',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
title: '认领客户名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
title: '结算起算日期',
|
||||||
|
type: 'string',
|
||||||
|
format: 'date',
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '备注',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请不要超过50个字'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name3']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 120,
|
||||||
|
grid: { span: 24 }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
// this.service.request('', { ...this.sf.value }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.modalRef.destroy(true);
|
||||||
|
// } else {
|
||||||
|
// this.service.msgSrv.error(res.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #headerContent>
|
||||||
|
<div nz-row class="head-box">
|
||||||
|
<div nz-col nzSpan="1">
|
||||||
|
<img src="./assets/images/usercenter/拉货车.png" alt="" />
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="11" class="pl-lg">
|
||||||
|
<div class="right-h">深圳市XXXXXXX有限公司</div>
|
||||||
|
<div class="right-s">91440300357887492H</div>
|
||||||
|
<sv-container col="2">
|
||||||
|
<sv label="管理员"> </sv>
|
||||||
|
<sv label="注册时间"> </sv>
|
||||||
|
<sv label="合同有效期"> </sv>
|
||||||
|
<sv label="运营主体"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="10">
|
||||||
|
<div class="left-rt">待审核</div>
|
||||||
|
<div class="left-rb">
|
||||||
|
<button nz-button (click) ="reject()">拒绝</button>
|
||||||
|
<button nz-button nzType="primary" (click) ="approve()">通过</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card nzTitle="运单进度">
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col nzSpan="12">
|
||||||
|
<sv-container col="1" labelWidth="120">
|
||||||
|
<sv-title>现合伙人(提交人)</sv-title>
|
||||||
|
<sv label="合伙人名称"> </sv>
|
||||||
|
<sv label="手机号"> </sv>
|
||||||
|
<sv label="绑定时间"> </sv>
|
||||||
|
<sv label="结算时间段"> </sv>
|
||||||
|
<sv label="认领备注"> </sv>
|
||||||
|
<sv label="提交时间"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="12">
|
||||||
|
<sv-container col="1" labelWidth="120">
|
||||||
|
<sv-title>现渠道销售</sv-title>
|
||||||
|
<sv label="姓名"> </sv>
|
||||||
|
<sv label="手机号"> </sv>
|
||||||
|
<sv label="绑定时间"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<nz-divider></nz-divider>
|
||||||
|
<div nz-row>
|
||||||
|
<div nz-col nzSpan="12">
|
||||||
|
<sv-container col="1" labelWidth="120">
|
||||||
|
<sv-title>原合伙人</sv-title>
|
||||||
|
<sv label="合伙人名称"> </sv>
|
||||||
|
<sv label="管理员"> </sv>
|
||||||
|
<sv label="绑定时间"> </sv>
|
||||||
|
<sv label="结算时间段"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
<div nz-col nzSpan="12">
|
||||||
|
<sv-container col="1" labelWidth="120">
|
||||||
|
<sv-title>原渠道销售</sv-title>
|
||||||
|
<sv label="姓名"> </sv>
|
||||||
|
<sv label="手机号"> </sv>
|
||||||
|
<sv label="绑定时间"> </sv>
|
||||||
|
</sv-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card nzTitle="操作日志">
|
||||||
|
<st #st [data]="data" [columns]="columns"></st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
:host {
|
||||||
|
.head-box {
|
||||||
|
img {
|
||||||
|
width : 80px;
|
||||||
|
height : 80px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-h {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-s {
|
||||||
|
color: #7f7f7f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-rt {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size : 16px;
|
||||||
|
text-align : right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-rb {
|
||||||
|
display : flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding-top : 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn } from '@delon/abc/st';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzCardComponent } from 'ng-zorro-antd/card';
|
||||||
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import format from 'date-fns/format';
|
||||||
|
import { ClaimAuditService } from '../../services/claim-audit.service';
|
||||||
|
import { ParterClaimAuditListPartnerRejectComponent } from '../partner-reject/partner-reject.component';
|
||||||
|
import { ParterClaimAuditListPartnerApproveComponent } from '../partner-approve/partner-approve.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-claim-audit-partner-detail',
|
||||||
|
templateUrl: './partner-detail.component.html',
|
||||||
|
styleUrls: ['./partner-detail.component.less']
|
||||||
|
})
|
||||||
|
export class ParterClaimAuditListPartnerDetailComponent implements OnInit {
|
||||||
|
id = this.route.snapshot.queryParams.id;
|
||||||
|
i: any;
|
||||||
|
imges: any;
|
||||||
|
isVisible = false;
|
||||||
|
columns: STColumn[] = [
|
||||||
|
{ title: '操作时间', index: 'id', width: 120 },
|
||||||
|
{ title: '操作人', type: 'img', width: 120, },
|
||||||
|
{ title: '操作人手机号', index: 'email', width: 120 },
|
||||||
|
{ title: '操作页面', index: 'phone' },
|
||||||
|
{ title: '操作内容', index: 'registered' }
|
||||||
|
];
|
||||||
|
|
||||||
|
data=[{id:11111}]
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private msgSrv: NzMessageService,
|
||||||
|
private service: ClaimAuditService,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
private router: Router
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initData();
|
||||||
|
}
|
||||||
|
|
||||||
|
initData() {
|
||||||
|
// this.service.request(this.service.$api_getBulkBillDetail, { id: this.id }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.i = res;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
approve() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '同意',
|
||||||
|
nzWidth: 700,
|
||||||
|
nzContent: ParterClaimAuditListPartnerApproveComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: this.i
|
||||||
|
},
|
||||||
|
nzFooter: null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
reject() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '拒绝',
|
||||||
|
nzWidth: 700,
|
||||||
|
nzContent: ParterClaimAuditListPartnerRejectComponent,
|
||||||
|
nzComponentParams: {
|
||||||
|
i: this.i
|
||||||
|
},
|
||||||
|
nzFooter: null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
|
||||||
|
</sf>
|
||||||
|
<div style="font-size: 8px;">
|
||||||
|
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
|
||||||
|
</div>
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,98 @@
|
|||||||
|
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { _HttpClient } from '@delon/theme';
|
||||||
|
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
|
||||||
|
import { ClaimAuditService } from '../../services/claim-audit.service';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-claim-audit-partner-reject',
|
||||||
|
templateUrl: './partner-reject.component.html'
|
||||||
|
})
|
||||||
|
export class ParterClaimAuditListPartnerRejectComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public service: ClaimAuditService,
|
||||||
|
private modalRef: NzModalRef
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
title: '合伙人(认领人)',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
title: '认领客户名称',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
} ,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
title: '结算起算日期',
|
||||||
|
type: 'string',
|
||||||
|
format: 'date',
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '备注',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请不要超过50个字'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name3']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 120,
|
||||||
|
grid: { span: 24 }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
// this.service.request('', { ...this.sf.value }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.modalRef.destroy(true);
|
||||||
|
// } else {
|
||||||
|
// this.service.msgSrv.error(res.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class ClaimAuditService extends BaseService {
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
<!-- 页头 -->
|
||||||
|
<page-header-wrapper [title]="''" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<div class="modal-header">
|
||||||
|
<div class="modal-title" *ngIf="queryParams.type === 'add'">新增banner</div>
|
||||||
|
<div class="modal-title" *ngIf="queryParams.type === 'edit'">编辑banner</div>
|
||||||
|
<div class="modal-title" *ngIf="queryParams.type === 'view'">查看banner</div>
|
||||||
|
</div>
|
||||||
|
<sf #sf [schema]="schema" [ui]="ui" [button]="'none'" [formData]="detailData">
|
||||||
|
</sf>
|
||||||
|
<div class="modal-footer" *ngIf="queryParams.type !== 'view'">
|
||||||
|
<button nz-button type="button" (click)="checkSort()" nzType="primary" [disabled]="validFalg">保存</button>
|
||||||
|
<button nz-button type="button" (click)="goBack()">取消</button>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
<!-- <nz-modal [(nzVisible)]="isVisible" nzTitle="The first Modal" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()">
|
||||||
|
<baidu-map [inputAddress]="detailData.companyAddress" [inputPoint]="inputPoint" (outputPointAddress)="outputPointAddress($event)"></baidu-map>
|
||||||
|
</nz-modal> -->
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { BannerComponentsAddComponent } from './add.component';
|
||||||
|
|
||||||
|
describe('BannerComponentsAddComponent', () => {
|
||||||
|
let component: BannerComponentsAddComponent;
|
||||||
|
let fixture: ComponentFixture<BannerComponentsAddComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ BannerComponentsAddComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(BannerComponentsAddComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,241 @@
|
|||||||
|
import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
|
import { EAEnvironmentService } from '@shared';
|
||||||
|
import differenceInCalendarDays from 'date-fns/differenceInCalendarDays';
|
||||||
|
import format from 'date-fns/format';
|
||||||
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { NzUploadFile } from 'ng-zorro-antd/upload';
|
||||||
|
import { Observable, Observer, of } from 'rxjs';
|
||||||
|
import { BannerService } from '../../services/banner.service';
|
||||||
|
import { apiConf } from '@conf/api.conf';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-ad-components-add',
|
||||||
|
templateUrl: './add.component.html',
|
||||||
|
styleUrls: ['./add.less']
|
||||||
|
})
|
||||||
|
export class BannerComponentsAddComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
record: any = {};
|
||||||
|
i: any;
|
||||||
|
schema: SFSchema = {};
|
||||||
|
contentListData = [];
|
||||||
|
queryParams: any = {};
|
||||||
|
oldTakeEffectTime = '';
|
||||||
|
maxSort = 0;
|
||||||
|
isVisible = false;
|
||||||
|
validFalg = true;
|
||||||
|
detailData: any = {
|
||||||
|
advertisementContentDTOList: []
|
||||||
|
};
|
||||||
|
changeTimeFlag = false;
|
||||||
|
currentIndex = 0;
|
||||||
|
addFlag = true;
|
||||||
|
addId = 1;
|
||||||
|
inputPoint: any = {
|
||||||
|
lng: 0,
|
||||||
|
lat: 0
|
||||||
|
};
|
||||||
|
today = new Date();
|
||||||
|
navData: any = [];
|
||||||
|
navigationName = '';
|
||||||
|
ui: SFUISchema = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 200,
|
||||||
|
grid: { span: 24 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
constructor(
|
||||||
|
public msgSrv: NzMessageService,
|
||||||
|
public http: _HttpClient,
|
||||||
|
public service: BannerService,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private router: Router,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private envSrv: EAEnvironmentService,
|
||||||
|
) { }
|
||||||
|
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.queryParams = this.route.snapshot.queryParams;
|
||||||
|
if (this.queryParams.type !== 'add') {
|
||||||
|
this.initDetailData();
|
||||||
|
}
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initDetailData() {
|
||||||
|
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
title: 'banner名称',
|
||||||
|
maxLength: 10,
|
||||||
|
ui: {
|
||||||
|
showRequired: true,
|
||||||
|
placeholder: '请不要超过10个字',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
licensePhotoWatermark: {
|
||||||
|
type: 'string',
|
||||||
|
title: 'banner图',
|
||||||
|
ui: {
|
||||||
|
action: apiConf.fileUpload,
|
||||||
|
accept: 'image/png,image/jpeg,image/jpg,image/gif',
|
||||||
|
limit: 1,
|
||||||
|
limitFileCount: 1,
|
||||||
|
resReName: 'data.fullFileWatermarkPath',
|
||||||
|
urlReName: 'data.fullFileWatermarkPath',
|
||||||
|
widget: 'upload',
|
||||||
|
descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸 700px * 286px)。',
|
||||||
|
data: {
|
||||||
|
appId: this.envSrv.env.appId,
|
||||||
|
},
|
||||||
|
name: 'multipartFile',
|
||||||
|
multiple: false,
|
||||||
|
listType: 'picture-card',
|
||||||
|
change: (args: any) => {
|
||||||
|
if (args.type === 'success') {
|
||||||
|
this.detailData.enterpriseBaseDTO.licensePhoto = args.file.response.data.fullFilePath
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeUpload: (file: any, _fileList: any) => {
|
||||||
|
return new Observable((observer: Observer<boolean>) => {
|
||||||
|
const isLt4M = file.size / 1024 / 1024 < 2;
|
||||||
|
if (!isLt4M) {
|
||||||
|
this.service.msgSrv.warning('图片大小超过2M!');
|
||||||
|
observer.complete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
observer.next(isLt4M);
|
||||||
|
observer.complete();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
previewFile: (file: NzUploadFile) => of(file.url),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sortId: {
|
||||||
|
type: 'string',
|
||||||
|
title: '顺序',
|
||||||
|
ui: {
|
||||||
|
showRequired: true,
|
||||||
|
widget: '=',
|
||||||
|
placeholder: '请输入0~99,数字越大,排序越靠前',
|
||||||
|
serverSearch: true,
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
linkType: {
|
||||||
|
type: 'string',
|
||||||
|
title: '跳转路径',
|
||||||
|
ui: {
|
||||||
|
widget: 'radio',
|
||||||
|
showRequired: true,
|
||||||
|
} as SFRadioWidgetSchema,
|
||||||
|
enum: [
|
||||||
|
{ label: '文章ID', value: 1 },
|
||||||
|
{ label: '分类ID', value: 2 },
|
||||||
|
{ label: '自编辑', value: 3 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
type: 'string',
|
||||||
|
title: '内容',
|
||||||
|
ui: {
|
||||||
|
widget: 'tinymce',
|
||||||
|
loadingTip: 'loading...',
|
||||||
|
config: {
|
||||||
|
height: 450
|
||||||
|
},
|
||||||
|
visibleIf: { name5: (value: string) => value === '1' }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: [],
|
||||||
|
};
|
||||||
|
if (this.queryParams.type === 'add'){
|
||||||
|
setTimeout(() => {
|
||||||
|
this.sf.setValue('/takeEffectType', 1);
|
||||||
|
this.sf.setValue('/style', 1);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get reqParams() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
disabledDate = (current: Date): boolean => {
|
||||||
|
// Can not select days before today and today
|
||||||
|
return differenceInCalendarDays(current, this.today) < 0;
|
||||||
|
}
|
||||||
|
changeTime(){
|
||||||
|
this.changeTimeFlag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
checkSort(){
|
||||||
|
const params: any = {
|
||||||
|
navigationId: this.sf?.value.navigationId,
|
||||||
|
sortId: this.sf?.value.sortId,
|
||||||
|
takeEffectType: this.sf?.value.takeEffectType,
|
||||||
|
};
|
||||||
|
if (this.queryParams.id !== '0'){
|
||||||
|
params.advertisementId = this.queryParams.id;
|
||||||
|
}
|
||||||
|
if (this.sf.value.takeEffectType === 2){
|
||||||
|
if (this.changeTimeFlag) {
|
||||||
|
params.takeEffectTime = format(this.detailData.takeEffectTime, 'yyyy-MM-dd HH:mm');
|
||||||
|
} else {
|
||||||
|
params.takeEffectTime = this.detailData.takeEffectTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
const params: any = {
|
||||||
|
...this.sf?.value,
|
||||||
|
latitude: this.inputPoint.lat,
|
||||||
|
longitude: this.inputPoint.lng,
|
||||||
|
id: this.queryParams.id
|
||||||
|
};
|
||||||
|
this.detailData.advertisementContentDTOList.forEach((item: any) => {
|
||||||
|
delete item.addId;
|
||||||
|
});
|
||||||
|
if (this.queryParams.type === 'add') {
|
||||||
|
delete params.id;
|
||||||
|
}
|
||||||
|
if (this.sf.value.takeEffectType === 2){
|
||||||
|
if (this.changeTimeFlag) {
|
||||||
|
params.takeEffectTime = format(this.detailData.takeEffectTime, 'yyyy-MM-dd HH:mm');
|
||||||
|
} else {
|
||||||
|
params.takeEffectTime = this.detailData.takeEffectTime;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
delete params.takeEffectTime;
|
||||||
|
}
|
||||||
|
this.service.request(this.service.$api_add_one, params).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.service.msgSrv.success('保存成功');
|
||||||
|
this.router.navigate(['../list'], {relativeTo: this.route});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
gotoMap() {
|
||||||
|
this.isVisible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleOk(): void {
|
||||||
|
this.isVisible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleCancel(): void {
|
||||||
|
this.isVisible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
119
src/app/routes/partner/knowledge/banner/components/add/add.less
Normal file
119
src/app/routes/partner/knowledge/banner/components/add/add.less
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
:host {
|
||||||
|
.styleBox {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
margin: 10px 0 0 0;
|
||||||
|
}
|
||||||
|
.imgBox {
|
||||||
|
position: relative;
|
||||||
|
width: 200px;
|
||||||
|
padding: 6px 0;
|
||||||
|
text-align: center;
|
||||||
|
border: solid 1px #eee;
|
||||||
|
.leftBox,
|
||||||
|
.rightBox {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
width: 170px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
.leftBox {
|
||||||
|
left: 3px;
|
||||||
|
}
|
||||||
|
.rightBox {
|
||||||
|
right: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.imgBox_two {
|
||||||
|
width: 200px;
|
||||||
|
padding: 6px;
|
||||||
|
text-align: center;
|
||||||
|
border: solid 1px #eee;
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.imgBox_three {
|
||||||
|
width: 200px;
|
||||||
|
padding: 6px 0;
|
||||||
|
text-align: center;
|
||||||
|
border: solid 1px #eee;
|
||||||
|
img {
|
||||||
|
width: 25%;
|
||||||
|
height: 40px;
|
||||||
|
margin: 0 6% 0 0;
|
||||||
|
&:first-child {
|
||||||
|
margin: 0 6%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.imgBox_four {
|
||||||
|
width: 200px;
|
||||||
|
padding: 6px 0;
|
||||||
|
text-align: center;
|
||||||
|
border: solid 1px #eee;
|
||||||
|
img {
|
||||||
|
width: 22%;
|
||||||
|
height: 40px;
|
||||||
|
margin: 0 2% 0 0;
|
||||||
|
&:first-child {
|
||||||
|
margin: 0 2%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.imgBox_one {
|
||||||
|
width: 60px;
|
||||||
|
padding: 6px;
|
||||||
|
text-align: center;
|
||||||
|
border: solid 1px #eee;
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.imgBox_info {
|
||||||
|
width: 200px;
|
||||||
|
padding: 6px;
|
||||||
|
overflow: hidden;
|
||||||
|
border: solid 1px #eee;
|
||||||
|
.title {
|
||||||
|
width: 100%;
|
||||||
|
line-height: 30px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.infoBox {
|
||||||
|
.name {
|
||||||
|
line-height: 28px;
|
||||||
|
}
|
||||||
|
.map {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
img {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.hint {
|
||||||
|
margin: 0 0 0 10px;
|
||||||
|
color: #f00;
|
||||||
|
}
|
||||||
|
.addBtn {
|
||||||
|
margin: 0 0 10px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.overflowText {
|
||||||
|
display: -webkit-box;
|
||||||
|
max-width: 200px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: left;
|
||||||
|
text-overflow: -o-ellipsis-lastline;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-webkit-line-clamp: 1;
|
||||||
|
line-clamp: 1;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user