Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop

This commit is contained in:
weiyu
2022-05-13 10:21:14 +08:00
140 changed files with 2826 additions and 6654 deletions

View File

@ -34,7 +34,6 @@
], ],
"styles": [ "styles": [
"node_modules/perfect-scrollbar/css/perfect-scrollbar.css", "node_modules/perfect-scrollbar/css/perfect-scrollbar.css",
"node_modules/quill/dist/quill.snow.css",
"src/styles.less", "src/styles.less",
{ {
"input": "src/styles/default.less", "input": "src/styles/default.less",
@ -49,7 +48,6 @@
], ],
"scripts": [ "scripts": [
"node_modules/quill/dist/quill.min.js",
"node_modules/perfect-scrollbar/dist/perfect-scrollbar.js", "node_modules/perfect-scrollbar/dist/perfect-scrollbar.js",
"node_modules/qrious/dist/qrious.min.js" "node_modules/qrious/dist/qrious.min.js"
], ],
@ -139,7 +137,6 @@
"karmaConfig": "karma.conf.js", "karmaConfig": "karma.conf.js",
"tsConfig": "tsconfig.spec.json", "tsConfig": "tsconfig.spec.json",
"scripts": [ "scripts": [
"node_modules/quill/dist/quill.min.js",
"node_modules/perfect-scrollbar/dist/perfect-scrollbar.js" "node_modules/perfect-scrollbar/dist/perfect-scrollbar.js"
], ],
"styles": [], "styles": [],

4624
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -67,8 +67,6 @@
"ngx-trend": "^7.0.0", "ngx-trend": "^7.0.0",
"perfect-scrollbar": "^1.5.2", "perfect-scrollbar": "^1.5.2",
"qrious": "^4.0.2", "qrious": "^4.0.2",
"quill": "^1.3.7",
"quill-image-resize-module": "^3.0.0",
"rxjs": "~6.6.0", "rxjs": "~6.6.0",
"screenfull": "^5.1.0", "screenfull": "^5.1.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-01-18 09:51:21 * @Date : 2022-01-18 09:51:21
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-09 11:25:41 * @LastEditTime : 2022-05-13 09:36:19
* @FilePath : \\tms-obc-web\\proxy.conf.js * @FilePath : \\tms-obc-web\\proxy.conf.js
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */

View File

@ -1,23 +1,19 @@
/* eslint-disable import/order */ /* eslint-disable import/order */
/* eslint-disable import/no-duplicates */ /* eslint-disable import/no-duplicates */
import { HttpClientModule } from '@angular/common/http'; import { APP_INITIALIZER, DEFAULT_CURRENCY_CODE, NgModule, Type } from '@angular/core';
import { default as ngLang } from '@angular/common/locales/zh';
import { APP_INITIALIZER, DEFAULT_CURRENCY_CODE, LOCALE_ID, NgModule, Type } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { SimpleInterceptor } from '@delon/auth'; import { SimpleInterceptor } from '@delon/auth';
import { NzNotificationModule } from 'ng-zorro-antd/notification';
import zh from '@angular/common/locales/zh'; import zh from '@angular/common/locales/zh';
registerLocaleData(zh); registerLocaleData(zh);
// #region global third module // #region global third module
import { BidiModule } from '@angular/cdk/bidi'; const GLOBAL_THIRD_MODULES: Array<Type<any>> = [];
const GLOBAL_THIRD_MODULES: Array<Type<any>> = [BidiModule];
// #endregion // #endregion
// #region Http Interceptors // #region Http Interceptors
import { HTTP_INTERCEPTORS } from '@angular/common/http'; import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { BusinessInterceptor, DefaultInterceptor } from '@core'; import { BusinessInterceptor, DefaultInterceptor } from '@core';
@ -42,38 +38,20 @@ const APPINIT_PROVIDES = [
multi: true multi: true
}, },
{ provide: DEFAULT_CURRENCY_CODE, useValue: '¥' }, { provide: DEFAULT_CURRENCY_CODE, useValue: '¥' },
{ provide: RouteReuseStrategy, useClass: ReuseTabStrategy, deps: [ReuseTabService] }, { provide: RouteReuseStrategy, useClass: ReuseTabStrategy, deps: [ReuseTabService] }
AuthGuard
]; ];
// #endregion // #endregion
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { CoreModule } from './core/core.module'; import { CoreModule } from './core/core.module';
import { GlobalConfigModule } from './global-config.module';
import { LayoutModule } from './layout/layout.module';
import { RoutesModule } from './routes/routes.module'; import { RoutesModule } from './routes/routes.module';
import { SharedModule } from './shared/shared.module';
import { STWidgetModule } from './shared/widget/st-widget.module';
import { registerLocaleData } from '@angular/common'; import { registerLocaleData } from '@angular/common';
import { AuthGuard } from './core/guards/auth.guard'; import { RouteReuseStrategy, RouterModule } from '@angular/router';
import { RouteReuseStrategy } from '@angular/router';
import { ReuseTabService, ReuseTabStrategy } from '@delon/abc/reuse-tab'; import { ReuseTabService, ReuseTabStrategy } from '@delon/abc/reuse-tab';
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
imports: [ imports: [BrowserModule, BrowserAnimationsModule, HttpClientModule, CoreModule, RoutesModule, RouterModule, ...GLOBAL_THIRD_MODULES],
BrowserModule,
BrowserAnimationsModule,
HttpClientModule,
GlobalConfigModule.forRoot(),
CoreModule,
SharedModule,
LayoutModule,
RoutesModule,
STWidgetModule,
NzNotificationModule,
...GLOBAL_THIRD_MODULES
],
providers: [...INTERCEPTOR_PROVIDES, ...APPINIT_PROVIDES], providers: [...INTERCEPTOR_PROVIDES, ...APPINIT_PROVIDES],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })

View File

@ -1,10 +1,11 @@
import { NgModule, Optional, SkipSelf } from '@angular/core'; import { NgModule, Optional, SkipSelf } from '@angular/core';
import { AuthGuard } from './guards/auth.guard';
import { EATokenGuard } from './guards/token.guard'; import { EATokenGuard } from './guards/token.guard';
import { throwIfAlreadyLoaded } from './module-import-guard'; import { throwIfAlreadyLoaded } from './module-import-guard';
@NgModule({ @NgModule({
providers: [EATokenGuard] providers: [AuthGuard, EATokenGuard]
}) })
export class CoreModule { export class CoreModule {
constructor(@Optional() @SkipSelf() parentModule: CoreModule) { constructor(@Optional() @SkipSelf() parentModule: CoreModule) {

View File

@ -3,6 +3,7 @@ import { NavigationEnd, Router } from '@angular/router';
import { ReuseTabService } from '@delon/abc/reuse-tab'; import { ReuseTabService } from '@delon/abc/reuse-tab';
import { MenuService } from '@delon/theme'; import { MenuService } from '@delon/theme';
import { InputBoolean } from '@delon/util'; import { InputBoolean } from '@delon/util';
import { SearchDrawerService } from '@shared';
import { NzMenuModeType } from 'ng-zorro-antd/menu'; import { NzMenuModeType } from 'ng-zorro-antd/menu';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { filter, takeUntil } from 'rxjs/operators'; import { filter, takeUntil } from 'rxjs/operators';
@ -31,7 +32,8 @@ export class LayoutProMenuComponent implements OnInit, OnDestroy {
private router: Router, private router: Router,
public pro: BrandService, public pro: BrandService,
private cdr: ChangeDetectorRef, private cdr: ChangeDetectorRef,
private reuseService: ReuseTabService private reuseService: ReuseTabService,
private searchDrawerService: SearchDrawerService
) {} ) {}
private cd(): void { private cd(): void {
@ -132,6 +134,7 @@ export class LayoutProMenuComponent implements OnInit, OnDestroy {
routeTo(link: string | undefined) { routeTo(link: string | undefined) {
if (link) { if (link) {
this.reuseService.clear(); this.reuseService.clear();
this.searchDrawerService.unsubscribe();
this.router.navigate([link]); this.router.navigate([link]);
} }
} }

View File

@ -1,5 +1,5 @@
import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core'; import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';
import { OnReuseDestroy } from '@delon/abc/reuse-tab'; import { OnReuseDestroy, OnReuseInit, ReuseHookOnReuseInitType } from '@delon/abc/reuse-tab';
import { SFComponent, SFSchema } from '@delon/form'; import { SFComponent, SFSchema } from '@delon/form';
import { SearchDrawerService } from '@shared'; import { SearchDrawerService } from '@shared';
import { fromEvent, Subscription } from 'rxjs'; import { fromEvent, Subscription } from 'rxjs';
@ -25,19 +25,18 @@ import { debounceTime } from 'rxjs/operators';
@Component({ @Component({
template: '' template: ''
}) })
export class BasicTableComponent implements AfterViewInit, OnDestroy, OnReuseDestroy { export class BasicTableComponent implements AfterViewInit, OnDestroy, OnReuseDestroy, OnReuseInit {
scrollY = '400px'; scrollY = '400px';
sf!: SFComponent; sf!: SFComponent;
sfValue: Record<string, any> = {}; sfValue: Record<string, any> = {};
drawer: Subscription[] = [];
schema: SFSchema = {}; schema: SFSchema = {};
deviationHeight = 0; deviationHeight = 0;
constructor(public searchDrawerService: SearchDrawerService) {} constructor(public searchDrawerService: SearchDrawerService) {}
_onReuseDestroy(): void { _onReuseInit(type?: ReuseHookOnReuseInitType): void {
this.drawer.forEach(sub => sub.unsubscribe()); this.search();
} }
ngAfterViewInit(): void { ngAfterViewInit(): void {
@ -51,23 +50,29 @@ export class BasicTableComponent implements AfterViewInit, OnDestroy, OnReuseDes
}); });
} }
_onReuseDestroy(): void {
// this.drawer.forEach(sub => sub.unsubscribe());
}
ngOnDestroy(): void { ngOnDestroy(): void {
this.drawer.forEach(sub => sub.unsubscribe()); this.searchDrawerService.unsubscribe();
} }
openDrawer() { openDrawer() {
if (this.drawer?.length > 0) { console.log(this.sfValue);
if (this.searchDrawerService.drawer?.length > 0) {
this.searchDrawerService.create(this.sfValue, this.schema); this.searchDrawerService.create(this.sfValue, this.schema);
} else { } else {
const drawer = this.searchDrawerService.create(this.sfValue, this.schema); const drawer = this.searchDrawerService.create(this.sfValue, this.schema);
this.drawer.push( this.searchDrawerService.drawer.push(
drawer.initEvent.subscribe((sf: SFComponent) => { drawer.initEvent.subscribe((sf: SFComponent) => {
if (sf) { if (sf) {
this.sf = sf; this.sf = sf;
} }
}) })
); );
this.drawer.push( this.searchDrawerService.drawer.push(
drawer.closeEvent.subscribe((res: Record<string, any>) => { drawer.closeEvent.subscribe((res: Record<string, any>) => {
this.sfValue = res; this.sfValue = res;
if (res) { if (res) {

View File

@ -22,11 +22,8 @@ import { ContractManagementService } from '../../services/contract-management.se
}) })
export class ContractManagementDetailComponent implements OnInit { export class ContractManagementDetailComponent implements OnInit {
constructor( constructor(
private nzModalService: NzModalService,
public service: ContractManagementService, public service: ContractManagementService,
public route: ActivatedRoute, public route: ActivatedRoute
private datePipe: DatePipe,
private router: Router
) {} ) {}
textStatus = '合同详情'; textStatus = '合同详情';
name: any; name: any;

View File

@ -2,7 +2,6 @@ import { Component } from '@angular/core';
@Component({ @Component({
selector: 'app-dashboard', selector: 'app-dashboard',
templateUrl: './dashboard.component.html', template: ''
styleUrls: ['./dashboard.component.less']
}) })
export class DashboardComponent {} export class DashboardComponent {}

View File

@ -19,7 +19,7 @@
</p> </p>
</ng-template> </ng-template>
<ng-template #AdvanceDepositFooter> <ng-template #AdvanceDepositFooter>
<g2-custom #AdvanceDeposit delay="100"></g2-custom> <g2-custom #AdvanceDeposit></g2-custom>
<!-- <g2-mini-area line color="#cceafe" height="45" [data]="totalAdvanceDeposit?.list || []" <!-- <g2-mini-area line color="#cceafe" height="45" [data]="totalAdvanceDeposit?.list || []"
(clickItem)="handleClick($event)"> (clickItem)="handleClick($event)">
</g2-mini-area> --> </g2-mini-area> -->
@ -75,12 +75,12 @@
</div> </div>
<div nz-row [nzGutter]="16"> <div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="6"> <div nz-col class="gutter-row" [nzSpan]="6">
<nz-card acl [acl-ability]="['dataindex-getBillTypeProportion']"><label class="chart_title">订单类型比例</label> <nz-card acl [acl-ability]="['dataindex-getBillTypeProportion']"><label class="chart_title">订单类型比例</label>
<g2-custom #g2custom delay="100"></g2-custom> <g2-custom #g2custom delay="100"></g2-custom>
</nz-card> </nz-card>
</div> </div>
<div nz-col class="gutter-row" [nzSpan]="18"> <div nz-col class="gutter-row" [nzSpan]="18">
<nz-card acl [acl-ability]="['dataindex-getBillAmount']"><label class="chart_title">大区业绩完成情况</label> <nz-card acl [acl-ability]="['dataindex-getBillAmount']"><label class="chart_title">大区业绩完成情况</label>
<!-- <g2-timeline [data]="chartData" [titleMap]="{ y1: '订单金额(元)', y2: '' }" [height]="200" mask="MM月DD日" <!-- <g2-timeline [data]="chartData" [titleMap]="{ y1: '订单金额(元)', y2: '' }" [height]="200" mask="MM月DD日"
[slider]="false"></g2-timeline> --> [slider]="false"></g2-timeline> -->
<g2-custom #RegionalPerforman delay="100"></g2-custom> <g2-custom #RegionalPerforman delay="100"></g2-custom>
@ -89,7 +89,7 @@
</div> </div>
<div nz-row [nzGutter]="16"> <div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="6"> <div nz-col class="gutter-row" [nzSpan]="6">
<nz-card acl [acl-ability]="['dataindex-getWayBillDirectProportion']"> <label class="chart_title">运单直付比例</label> <nz-card acl [acl-ability]="['dataindex-getWayBillDirectProportion']"> <label class="chart_title">运单直付比例</label>
<!-- <g2-pie #pie title="销售额" subTitle="销售额" [total]="total" [valueFormat]="format" [data]="salesPieData" height="294" <!-- <g2-pie #pie title="销售额" subTitle="销售额" [total]="total" [valueFormat]="format" [data]="salesPieData" height="294"
(clickItem)="handleClick($event)" [lineWidth]="10"> (clickItem)="handleClick($event)" [lineWidth]="10">
</g2-pie> --> </g2-pie> -->
@ -97,7 +97,7 @@
</nz-card> </nz-card>
</div> </div>
<div nz-col class="gutter-row" [nzSpan]="18"> <div nz-col class="gutter-row" [nzSpan]="18">
<nz-card acl [acl-ability]="['dataindex-getBillPaymentAmount']"> <nz-card acl [acl-ability]="['dataindex-getBillPaymentAmount']">
<label class="chart_title">业绩完成情况</label> <label class="chart_title">业绩完成情况</label>
<!-- <g2-bar [data]="salesData" (clickItem)="handleClick($event)" height="400"></g2-bar> --> <!-- <g2-bar [data]="salesData" (clickItem)="handleClick($event)" height="400"></g2-bar> -->
<g2-custom #SaleProportion delay="100"></g2-custom> <g2-custom #SaleProportion delay="100"></g2-custom>

View File

@ -1,4 +1,4 @@
import { ChangeDetectorRef, Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core'; import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core';
import { ModalHelper, _HttpClient } from '@delon/theme'; import { ModalHelper, _HttpClient } from '@delon/theme';
import { G2MiniAreaClickItem, G2MiniAreaData } from '@delon/chart/mini-area'; import { G2MiniAreaClickItem, G2MiniAreaData } from '@delon/chart/mini-area';
import { G2PieClickItem, G2PieComponent, G2PieData } from '@delon/chart/pie'; import { G2PieClickItem, G2PieComponent, G2PieData } from '@delon/chart/pie';
@ -18,7 +18,7 @@ import { GeometryLabelCfg } from '@antv/g2/lib/interface';
styleUrls: ['./dataindex.component.less'], styleUrls: ['./dataindex.component.less'],
providers: [CurrencyPipe] providers: [CurrencyPipe]
}) })
export class DatatableDataindexComponent implements OnInit { export class DatatableDataindexComponent implements OnInit, AfterViewInit {
@ViewChild('AdvanceDeposit', { static: false }) AdvanceDeposit!: G2CustomComponent; @ViewChild('AdvanceDeposit', { static: false }) AdvanceDeposit!: G2CustomComponent;
@ViewChild('g2custom', { static: false }) g2custom!: G2CustomComponent; @ViewChild('g2custom', { static: false }) g2custom!: G2CustomComponent;
@ViewChild('RegionalPerforman', { static: false }) RegionalPerforman!: G2CustomComponent; @ViewChild('RegionalPerforman', { static: false }) RegionalPerforman!: G2CustomComponent;
@ -38,19 +38,24 @@ export class DatatableDataindexComponent implements OnInit {
regionalPerformanceCompletion: DataPerformanceTrendVO[] = []; regionalPerformanceCompletion: DataPerformanceTrendVO[] = [];
constructor(private service: DataService, private currency: CurrencyPipe) {} constructor(private service: DataService, private currency: CurrencyPipe) { }
ngAfterViewInit(): void {
ngOnInit(): void {
this.initMiniAreaData(); this.initMiniAreaData();
this.initOthersData(); this.initOthersData();
} }
ngOnInit(): void {
}
private initMiniAreaData() { private initMiniAreaData() {
// 客户预存款总额 // 客户预存款总额
this.service.request(this.service.$api_total_advance_deposit).subscribe((res: DataTotalVO) => { this.service.request(this.service.$api_total_advance_deposit).subscribe((res: DataTotalVO) => {
if (res) { if (res) {
this.totalAdvanceDeposit = this.formatMiniAreaData(res); this.totalAdvanceDeposit = this.formatMiniAreaData(res);
this.initAreaMap(this.AdvanceDeposit['el'].nativeElement as any, []); setTimeout(() => {
this.initAreaMap(this.AdvanceDeposit['el'].nativeElement as any, []);
}, 400);
} }
}); });
// 业绩量总额 // 业绩量总额
@ -79,8 +84,9 @@ export class DatatableDataindexComponent implements OnInit {
if (res) { if (res) {
const billTypeDatas2 = this.formatCoordinateData(res); const billTypeDatas2 = this.formatCoordinateData(res);
console.log(billTypeDatas2); console.log(billTypeDatas2);
setTimeout(() => {
this.initBillChart(this.g2custom['el'].nativeElement as any,billTypeDatas2); this.initBillChart(this.g2custom['el'].nativeElement as any, billTypeDatas2);
}, 100);
} }
}); });
// 大区业绩完成情况 // 大区业绩完成情况
@ -89,31 +95,35 @@ export class DatatableDataindexComponent implements OnInit {
// this.regionalPerformanceCompletion = res.map(item => ({ ...item, time: new Date(item.time)?.getTime() })); // this.regionalPerformanceCompletion = res.map(item => ({ ...item, time: new Date(item.time)?.getTime() }));
// this.initRegionalPerformanceChart(this.RegionalPerforman['el'].nativeElement as any, this.regionalPerformanceCompletion); // this.initRegionalPerformanceChart(this.RegionalPerforman['el'].nativeElement as any, this.regionalPerformanceCompletion);
this.regionalPerformanceCompletion = this.formatBarData(res); this.regionalPerformanceCompletion = this.formatBarData(res);
this.initBiaxialChart(this.RegionalPerforman['el'].nativeElement as any, this.regionalPerformanceCompletion, { setTimeout(() => {
y1Title: '业绩量(万)', this.initBiaxialChart(this.RegionalPerforman['el'].nativeElement as any, this.regionalPerformanceCompletion, {
y2Title: '业绩完成率', y1Title: '业绩量(万)',
y3Title: '同期业绩完成率' y2Title: '业绩完成率',
}); y3Title: '同期业绩完成率'
});
}, 100);
} }
}); });
// 订单类型比例 // 订单类型比例
this.service.request(this.service.$api_getWayBillDirectProportion).subscribe(res => { this.service.request(this.service.$api_getWayBillDirectProportion).subscribe(res => {
if (res) { if (res) {
const billTypeDatas = this.formatCoordinateData(res.map((item: any) => ({ ...item, billType: item.wayBillType }))); const billTypeDatas = this.formatCoordinateData(res.map((item: any) => ({ ...item, billType: item.wayBillType })));
console.log(billTypeDatas); setTimeout(() => {
this.initBillChart(this.BillDirectProportion['el'].nativeElement as any, billTypeDatas);
this.initBillChart(this.BillDirectProportion['el'].nativeElement as any, billTypeDatas); }, 100);
} }
}); });
// 统计订单结算金额-趋势 // 统计订单结算金额-趋势
this.service.request(this.service.$api_get_bill_payment_amount).subscribe(res => { this.service.request(this.service.$api_get_bill_payment_amount).subscribe(res => {
if (res) { if (res) {
this.salesData = this.formatBarData(res); this.salesData = this.formatBarData(res);
this.initBiaxialChart(this.SaleProportion['el'].nativeElement as any, this.salesData, { setTimeout(() => {
y1Title: '业绩量(万)', this.initBiaxialChart(this.SaleProportion['el'].nativeElement as any, this.salesData, {
y2Title: '业绩完成率', y1Title: '业绩量(万)',
y3Title: '同期业绩完成率' y2Title: '业绩完成率',
}); y3Title: '同期业绩完成率'
});
}, 100);
} }
}); });
} }
@ -145,7 +155,7 @@ export class DatatableDataindexComponent implements OnInit {
chart.scale('percent', { chart.scale('percent', {
formatter: val => { formatter: val => {
val = (val * 100 ).toFixed(0)+ '%'; val = (val * 100).toFixed(0) + '%';
return val; return val;
} }
}); });
@ -202,7 +212,7 @@ export class DatatableDataindexComponent implements OnInit {
.label('percent', percent => { .label('percent', percent => {
return { return {
content: data => { content: data => {
return (percent * 100).toFixed(0)+`%`; return (percent * 100).toFixed(0) + `%`;
}, },
style: { fontSize: 14 } style: { fontSize: 14 }
}; };
@ -351,6 +361,8 @@ export class DatatableDataindexComponent implements OnInit {
} }
return {}; return {};
}); });
console.log(chart);
chart.render(); chart.render();
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-04-06 10:57:56 * @Date : 2022-04-06 10:57:56
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-07 09:43:16 * @LastEditTime : 2022-05-09 13:59:19
* @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\datascreen\\datascreen.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\datascreen\\datascreen.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -48,31 +48,6 @@
<nz-card nzTitle="本年交易趋势"> <nz-card nzTitle="本年交易趋势">
<app-financetable-curve-min #curve [chartData]="chartData2"></app-financetable-curve-min> <app-financetable-curve-min #curve [chartData]="chartData2"></app-financetable-curve-min>
</nz-card> </nz-card>
<nz-card nzTitle="实时货源" style="height: 400px">
<st
#st
multiSort
[columns]="columns"
[scroll]="{ y: '280px' }"
[data]="service.$api_getRealTimeSupply"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data' } }"
[page]="{ show: false, showSize: false, pageSizes: [5, 50, 100] }"
[loading]="service.http.loading"
>
<ng-template st-row="index" let-item let-index="index">
{{ index + 1 }}
</ng-template>
<ng-template st-row="weight" let-item let-index="index">
{{ item.weight ? item.weight + '吨' : '' }}
{{ item.volume ? item.volume + '方' : '' }}
</ng-template>
<ng-template st-row="weight" let-item let-index="index">
{{ item.weight ? item.weight + '吨' : '' }}
{{ item.volume ? item.volume + '方' : '' }}
</ng-template>
</st>
</nz-card>
</div> </div>
<div nz-col class="gutter-row" nzXs="12" nzSm="12" nzMd="12" nzLg="12" nzXl="8" nzXXl="8"> <div nz-col class="gutter-row" nzXs="12" nzSm="12" nzMd="12" nzLg="12" nzXl="8" nzXXl="8">
<nz-card> <nz-card>
@ -91,11 +66,6 @@
<div style="min-height: 550px"> <div style="min-height: 550px">
<app-datatable-customindex-map style="max-height: 680px" #map [chartData]="chartData"></app-datatable-customindex-map> <app-datatable-customindex-map style="max-height: 680px" #map [chartData]="chartData"></app-datatable-customindex-map>
</div> </div>
<nz-card>
<nz-row [nzGutter]="24">
<g2-bar #bar height="350" [delay]="300" repaint="true" [title]="'本月发货量排名'" [data]="salesData2" (ready)="genData()"></g2-bar>
</nz-row>
</nz-card>
</div> </div>
<div nz-col class="gutter-row" nzXs="12" nzSm="12" nzMd="12" nzLg="12" nzXl="8" nzXXl="8"> <div nz-col class="gutter-row" nzXs="12" nzSm="12" nzMd="12" nzLg="12" nzXl="8" nzXXl="8">
<nz-card> <nz-card>
@ -156,11 +126,48 @@
</nz-col> </nz-col>
</nz-row> </nz-row>
</nz-card> </nz-card>
</div>
</div>
<div nz-row [nzGutter]="24">
<div nz-col class="gutter-row" nzXs="12" nzSm="12" nzMd="12" nzLg="12" nzXl="8" nzXXl="8">
<nz-card nzTitle="实时货源" style="height: 400px">
<st
#st
multiSort
[columns]="columns"
[scroll]="{ y: '280px' }"
[data]="service.$api_getRealTimeSupply"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data' } }"
[page]="{ show: false, showSize: false, pageSizes: [5, 50, 100] }"
[loading]="service.http.loading"
>
<ng-template st-row="index" let-item let-index="index">
{{ index + 1 }}
</ng-template>
<ng-template st-row="weight" let-item let-index="index">
{{ item.weight ? item.weight + '吨' : '' }}
{{ item.volume ? item.volume + '方' : '' }}
</ng-template>
<ng-template st-row="weight" let-item let-index="index">
{{ item.weight ? item.weight + '吨' : '' }}
{{ item.volume ? item.volume + '方' : '' }}
</ng-template>
</st>
</nz-card>
</div>
<div nz-col class="gutter-row" nzXs="12" nzSm="12" nzMd="12" nzLg="12" nzXl="8" nzXXl="8">
<nz-card style="height: 400px">
<g2-bar #bar height="350" [delay]="300" repaint="true" [title]="'本月发货量排名'" [data]="salesData2" (ready)="genData()"></g2-bar>
</nz-card>
</div>
<div nz-col class="gutter-row" nzXs="12" nzSm="12" nzMd="12" nzLg="12" nzXl="8" nzXXl="8">
<nz-card nzTitle="实时运单风控" style="height: 400px"> <nz-card nzTitle="实时运单风控" style="height: 400px">
<st <st
#st #st
multiSort multiSort
[scroll]="{ y: '280px' }" [scroll]="{ y: '300px' }"
[columns]="orderColumns" [columns]="orderColumns"
[data]="service.$api_getRealTimeWaybillRiskControl" [data]="service.$api_getRealTimeWaybillRiskControl"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqOrderParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqOrderParams }"

View File

@ -8,7 +8,7 @@
font-size: 14px; font-size: 14px;
} }
.ant-table-thead > tr > th, .ant-table-tbody > tr > td, .ant-table tfoot > tr > th, .ant-table tfoot > tr > td { .ant-table-thead > tr > th, .ant-table-tbody > tr > td, .ant-table tfoot > tr > th, .ant-table tfoot > tr > td {
padding: 0; padding: 5px;
font-size: 12px; font-size: 12px;
} }
} }

View File

@ -86,7 +86,7 @@ const COMPONENTS: Type<void>[] = [
imports: [ imports: [
SharedModule, SharedModule,
DatatableRoutingModule, DatatableRoutingModule,
SHARED_G2_MODULES ...SHARED_G2_MODULES
], ],
declarations: COMPONENTS, declarations: COMPONENTS,
}) })

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2021-12-30 19:36:30 * @Date : 2021-12-30 19:36:30
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-07 17:33:01 * @LastEditTime : 2022-05-11 11:23:52
* @FilePath : \\tms-obc-web\\src\\app\\routes\\financial-management\\components\\cost-management\\cost-management.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\financial-management\\components\\cost-management\\cost-management.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -36,7 +36,8 @@
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl
[acl-ability]="['FINANCIAL-COST-list']">筛选</button> [acl-ability]="['FINANCIAL-COST-list']">筛选</button>
<button nz-button nzDanger (click)="exportList()"> 导出</button> <button nz-button nzDanger (click)="exportList()" acl
[acl-ability]="['FINANCIAL-COST-export']"> 导出</button>
</div> </div>
</div> </div>
<!-- <div nz-row class="mb-sm"> <!-- <div nz-row class="mb-sm">

View File

@ -84,7 +84,7 @@ export class CostManagementComponent extends BasicTableComponent implements OnIn
exportList() { exportList() {
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_get_exportPlatformAccountBalanceByOperator); this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_get_reportFeehList);
} }
routeTo(url: string, params?: any, status?: any) { routeTo(url: string, params?: any, status?: any) {

View File

@ -168,7 +168,7 @@ export class DriverAccountComponent extends BasicTableComponent implements OnIni
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.freezeBalance }) } widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.freezeBalance }) }
}, },
{ {
title: '本月累计提现金额', title: '累计提现金额',
index: 'withdrawBalance', index: 'withdrawBalance',
width: 160, width: 160,
type: 'widget', type: 'widget',

View File

@ -30,7 +30,7 @@ export class PayableOrderDetailComponent implements OnInit {
this.loadHeadInfo(); this.loadHeadInfo();
} }
ngOnInit(): void {} ngOnInit(): void { }
loadHeadInfo() { loadHeadInfo() {
this.service.request(this.service.$api_get_fico_ph_header, { id: this.id }).subscribe(res => { this.service.request(this.service.$api_get_fico_ph_header, { id: this.id }).subscribe(res => {
@ -46,27 +46,27 @@ export class PayableOrderDetailComponent implements OnInit {
Object.assign(requestOptions.body, { Object.assign(requestOptions.body, {
...this.sf?.value, ...this.sf?.value,
billTime: { billTime: {
start: this.sf?.value.billTime?.[0] || null, start: this.sf?.value.billTime?.[0] || '',
end: this.sf?.value.billTime?.[1] || null end: this.sf?.value.billTime?.[1] || ''
}, },
feedate: { feedate: {
start: this.sf?.value.feedate?.[0] || null, start: this.sf?.value.feedate?.[0] || '',
end: this.sf?.value.feedate?.[1] || null end: this.sf?.value.feedate?.[1] || ''
} }
}); });
if (this.sf?.value.billTime) { if (this.sf?.value.billTime) {
Object.assign(requestOptions.body, { Object.assign(requestOptions.body, {
billTime: { billTime: {
start: this.sf?.value.billTime?.[0] || null, start: this.sf?.value.billTime?.[0] || '',
end: this.sf?.value.billTime?.[1] || null end: this.sf?.value.billTime?.[1] || ''
} }
}); });
} }
if (this.sf?.value.feedate) { if (this.sf?.value.feedate) {
Object.assign(requestOptions.body, { Object.assign(requestOptions.body, {
feedate: { feedate: {
start: this.sf?.value.feedate?.[0] || null, start: this.sf?.value.feedate?.[0] || '',
end: this.sf?.value.feedate?.[1] || null end: this.sf?.value.feedate?.[1] || ''
} }
}); });
} }
@ -117,26 +117,23 @@ export class PayableOrderDetailComponent implements OnInit {
placeholder: '请输入' placeholder: '请输入'
} }
}, },
cno: { // cno: {
type: 'string', // type: 'string',
title: '结算客户', // title: '结算客户',
ui: { // ui: {
widget: 'select', // widget: 'select',
placeholder: '请选择', // placeholder: '请选择',
allowClear: true, // allowClear: true,
asyncData: () => this.service.getCloseAccount() // asyncData: () => this.service.getCloseAccount()
}, // },
default: '' // default: ''
}, // },
feedate: { feedate: {
title: '费用日期', title: '费用日期',
type: 'string', type: 'string',
ui: { ui: {
widget: 'sl-from-to-search', widget: 'sl-from-to-search',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd',
visibleIf: {
expand: (value: boolean) => value
}
} as SFDateWidgetSchema } as SFDateWidgetSchema
}, },
billTime: { billTime: {

View File

@ -48,6 +48,9 @@
<div></div> <div></div>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button> <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button>
<button nz-button nzDanger [disabled]="service.http.loading" acl
[acl-ability]="['FINANCIAL-PAYABLE-export']" (click)='exportList()'>
导出</button>
</div> </div>
</div> </div>
<st #st [data]="service.$api_get_fico_ph_page" [columns]="columns" [req]="{ process: beforeReq }" [page]="{}" <st #st [data]="service.$api_get_fico_ph_page" [columns]="columns" [req]="{ process: beforeReq }" [page]="{}"

View File

@ -21,11 +21,7 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
selectedRows: any[] = []; selectedRows: any[] = [];
info: any = {}; info: any = {};
constructor( constructor(public service: FreightAccountService, private router: Router, public searchDrawerService: SearchDrawerService) {
public service: FreightAccountService,
private router: Router,
public searchDrawerService: SearchDrawerService
) {
super(searchDrawerService); super(searchDrawerService);
} }
@ -77,6 +73,9 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
} }
} }
exportList() {
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_get_fico_ph_page_export);
}
private initSF(): SFSchema { private initSF(): SFSchema {
return { return {
@ -94,6 +93,20 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
placeholder: '请输入' placeholder: '请输入'
} }
}, },
billHCode: {
type: 'string',
title: '订单号',
ui: {
placeholder: '请输入'
}
},
waybillHCode: {
type: 'string',
title: '运单号',
ui: {
placeholder: '请输入'
}
},
ltdId: { ltdId: {
type: 'string', type: 'string',
title: '网络货运人', title: '网络货运人',
@ -118,7 +131,7 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
enum: [{ value: '1', label: '费用款项' }], enum: [{ value: '1', label: '费用款项' }],
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择'
} }
}, },
cno: { cno: {
@ -128,7 +141,7 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
allowClear: true, allowClear: true,
asyncData: () => this.service.getCloseAccount(), asyncData: () => this.service.getCloseAccount()
} }
}, },
driver2IdName: { driver2IdName: {
@ -136,19 +149,18 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
title: '收款人', title: '收款人',
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择'
} }
}, },
sts: { sts: {
type: 'string', type: 'string',
title: '核销状态', title: '核销状态',
enum: [ default: '',
{ value: 1, label: '已核销' },
{ value: 0, label: '待核销' }
],
ui: { ui: {
widget: 'select', widget: 'dict-select',
placeholder: '请选择', containsAllLable: true,
params: { dictKey: 'write:off:status' },
containAllLable: true
} }
}, },
phxdate: { phxdate: {
@ -156,7 +168,7 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
type: 'string', type: 'string',
ui: { ui: {
widget: 'sl-from-to-search', widget: 'sl-from-to-search',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd'
} as SFDateWidgetSchema } as SFDateWidgetSchema
}, },
createTime: { createTime: {
@ -164,21 +176,14 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
type: 'string', type: 'string',
ui: { ui: {
widget: 'sl-from-to-search', widget: 'sl-from-to-search',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd'
} as SFDateWidgetSchema } as SFDateWidgetSchema
}, },
billHCode: {
type: 'string',
title: '订单号',
ui: {
placeholder: '请输入',
}
},
feeHCode: { feeHCode: {
type: 'string', type: 'string',
title: '费用号', title: '费用号',
ui: { ui: {
placeholder: '请输入', placeholder: '请输入'
} }
}, },
remarks: { remarks: {
@ -186,7 +191,7 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
title: '核销备注', title: '核销备注',
ui: { ui: {
autocomplete: 'off', autocomplete: 'off',
placeholder: '请选择', placeholder: '请选择'
} }
} }
} }
@ -196,7 +201,9 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
private initST(): STColumn[] { private initST(): STColumn[] {
return [ return [
{ title: '', index: 'key', type: 'checkbox' }, { title: '', index: 'key', type: 'checkbox' },
{ title: '核销单号', index: 'phxcode', type: 'link', width: 140 }, { title: '核销单号', index: 'phxcode', type: 'link', width: 160 },
{ title: '订单号', index: 'billHCode', width: 160 },
{ title: '运单号', index: 'waybillHCode', width: 160 },
{ title: '网络货运人', index: 'ltdName', width: 220 }, { title: '网络货运人', index: 'ltdName', width: 220 },
{ title: '核销日期', index: 'phxdate', type: 'date', width: 160 }, { title: '核销日期', index: 'phxdate', type: 'date', width: 160 },
{ title: '付款账户', index: 'shipperaccount', width: 170 }, { title: '付款账户', index: 'shipperaccount', width: 170 },
@ -224,7 +231,7 @@ export class PayableOrderComponent extends BasicTableComponent implements OnInit
{ title: '银行水单', index: 'bankreceipt', width: 190 }, { title: '银行水单', index: 'bankreceipt', width: 190 },
{ title: '创建时间', index: 'createTime', width: 180 }, { title: '创建时间', index: 'createTime', width: 180 },
// { title: '创建人', index: 'createUserIdLabel', width: 120 }, // { title: '创建人', index: 'createUserIdLabel', width: 120 },
{ title: '核销状态', index: 'sts', type: 'enum', enum: { 0: '待核销', 1: '已核销' }, width: 120 }, { title: '核销状态', index: 'stsLabel', width: 120 },
{ title: '核销备注', index: 'remarks', width: 120 }, { title: '核销备注', index: 'remarks', width: 120 },
{ {
title: '操作', title: '操作',

View File

@ -34,6 +34,9 @@
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl
[acl-ability]="['FINANCIAL-PAYMENT-ORDER-list']">筛选</button> [acl-ability]="['FINANCIAL-PAYMENT-ORDER-list']">筛选</button>
<button nz-button nzDanger [disabled]="service.http.loading" acl
[acl-ability]="['FINANCIAL-PAYMENT-ORDER-export']" (click)='exportList()'>
导出</button>
</div> </div>
</div> </div>

View File

@ -77,6 +77,10 @@ export class PaymentOrderComponent extends BasicTableComponent implements OnInit
}); });
} }
exportList() {
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_get_payment_page_export);
}
private initSF(): SFSchema { private initSF(): SFSchema {
return { return {
properties: { properties: {

View File

@ -21,17 +21,20 @@
<nz-card class="table-box"> <nz-card class="table-box">
<div class="header_box"> <div class="header_box">
<div> <div>
<label class="page_title"> <label class="driver">|</label> 收款单</label> <label class="page_title"> <label class="driver">|</label> 收款单</label>
<label class="ml-md"> <label class="ml-md">
已选择 已选择
<strong class="text-primary">{{ selectedRows.length }}</strong> 张单 <strong class="text-primary">{{ selectedRows.length }}</strong> 张单
<a *ngIf="selectedRows.length > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> <a *ngIf="selectedRows.length > 0" (click)="st.clearCheck()" class="ml-lg">清空</a>
</label> </label>
</div> </div>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button> <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button>
</div> <button nz-button nzDanger [disabled]="service.http.loading" acl [acl-ability]="['FINANCIAL-RECEIPT-export']"
(click)='exportList()'>
导出</button>
</div>
</div> </div>
<!-- <div class="d-flex align-items-center mb-md mt-md"> <!-- <div class="d-flex align-items-center mb-md mt-md">
<button nz-button (click)="this.addInvoice()" nzType="primary">添加收款</button> <button nz-button (click)="this.addInvoice()" nzType="primary">添加收款</button>

View File

@ -81,6 +81,10 @@ export class ReceiptOrderComponent extends BasicTableComponent implements OnInit
// }); // });
} }
exportList() {
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_get_receipt_page_export);
}
private initSF(): SFSchema { private initSF(): SFSchema {
return { return {
properties: { properties: {

View File

@ -48,7 +48,9 @@
<div></div> <div></div>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button> <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button>
<button nz-button nzDanger> 导出</button> <button nz-button nzDanger [disabled]="service.http.loading" acl [acl-ability]="['FINANCIAL-RECEIVABLE-export']"
(click)='exportList()'>
导出</button>
</div> </div>
</div> </div>

View File

@ -12,7 +12,7 @@ import { FreightAccountService } from '../../services/freight-account.service';
@Component({ @Component({
selector: 'app-receivable-order', selector: 'app-receivable-order',
templateUrl: './receivable-order.component.html', templateUrl: './receivable-order.component.html',
styleUrls: ['../../../commom/less/commom-table.less','../../../commom/less/common-table-bar.less'] styleUrls: ['../../../commom/less/commom-table.less', '../../../commom/less/common-table-bar.less']
}) })
export class ReceivableOrderComponent extends BasicTableComponent implements OnInit { export class ReceivableOrderComponent extends BasicTableComponent implements OnInit {
@ViewChild('st', { static: true }) @ViewChild('st', { static: true })
@ -80,6 +80,9 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
} }
} }
exportList() {
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_get_fico_page_export);
}
private initSF(): SFSchema { private initSF(): SFSchema {
return { return {
@ -121,7 +124,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
ui: { ui: {
widget: 'dict-select', widget: 'dict-select',
params: { dictKey: 'driverrecord:receive:type' }, params: { dictKey: 'driverrecord:receive:type' },
placeholder: '请选择', placeholder: '请选择'
} }
}, },
arvattype: { arvattype: {
@ -130,7 +133,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
ui: { ui: {
widget: 'dict-select', widget: 'dict-select',
params: { dictKey: 'pay:type' }, params: { dictKey: 'pay:type' },
placeholder: '请选择', placeholder: '请选择'
} }
}, },
cno: { cno: {
@ -140,7 +143,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
allowClear: true, allowClear: true,
asyncData: () => this.service.getCloseAccount(), asyncData: () => this.service.getCloseAccount()
} }
}, },
arto: { arto: {
@ -152,7 +155,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
searchDebounceTime: 300, searchDebounceTime: 300,
searchLoadingText: '搜索中...', searchLoadingText: '搜索中...',
allowClear: true, allowClear: true,
onSearch: (q: any) => this.service.getEnterpriceList({ enterpriseName: q }), onSearch: (q: any) => this.service.getEnterpriceList({ enterpriseName: q })
} }
}, },
sts: { sts: {
@ -164,8 +167,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
], ],
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择'
} }
}, },
banktype: { banktype: {
@ -178,8 +180,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
], ],
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择'
}, },
default: '' default: ''
}, },
@ -188,8 +189,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
type: 'string', type: 'string',
ui: { ui: {
widget: 'sl-from-to-search', widget: 'sl-from-to-search',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd'
} as SFDateWidgetSchema } as SFDateWidgetSchema
}, },
createTime: { createTime: {
@ -197,14 +197,21 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
type: 'string', type: 'string',
ui: { ui: {
widget: 'sl-from-to-search', widget: 'sl-from-to-search',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd'
} as SFDateWidgetSchema } as SFDateWidgetSchema
}, },
billHCode: { billHCode: {
type: 'string', type: 'string',
title: '订单号', title: '订单号',
ui: { ui: {
placeholder: '请输入', placeholder: '请输入'
}
},
waybillHCode: {
type: 'string',
title: '运单号',
ui: {
placeholder: '请输入'
} }
}, },
// orderS3: { // orderS3: {
@ -222,7 +229,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
title: '核销备注', title: '核销备注',
ui: { ui: {
autocomplete: 'off', autocomplete: 'off',
placeholder: '请选择', placeholder: '请选择'
} }
} }
} }
@ -234,6 +241,7 @@ export class ReceivableOrderComponent extends BasicTableComponent implements OnI
{ title: '', index: 'key', type: 'checkbox' }, { title: '', index: 'key', type: 'checkbox' },
{ title: '核销单号', index: 'ahxcode', type: 'link', width: 210 }, { title: '核销单号', index: 'ahxcode', type: 'link', width: 210 },
{ title: '订单号', index: 'billHCode', type: 'link', width: 180 }, { title: '订单号', index: 'billHCode', type: 'link', width: 180 },
{ title: '运单号', index: 'waybillHCode', width: 180 },
{ title: '网络货运人', index: 'ltdName', width: 220 }, { title: '网络货运人', index: 'ltdName', width: 220 },
{ title: '核销日期', index: 'ahxdate', type: 'date', width: 160 }, { title: '核销日期', index: 'ahxdate', type: 'date', width: 160 },
{ title: '收款账户', index: 'ltdaccountId', width: 200 }, { title: '收款账户', index: 'ltdaccountId', width: 200 },

View File

@ -41,9 +41,10 @@
{{ item.orderRefundCode }} <br> {{ item.refundStatusLabel }} {{ item.orderRefundCode }} <br> {{ item.refundStatusLabel }}
</ng-template> </ng-template>
<ng-template st-row="refundAmount" let-item let-index="index" let-column="column"> <ng-template st-row="refundAmount" let-item let-index="index" let-column="column">
<ng-container *ngFor="let cost of item.billRefundDetailVOS"> <p *ngFor="let cost of item.billRefundDetailVOS"
{{cost.costName}}{{ cost.refundAmount |currency }}<br> style="display: flex;align-items: center;justify-content: space-between;margin: 0;">
</ng-container> <label> {{cost.costName}}</label><label>{{ cost.refundAmount |currency }}</label>
</p>
</ng-template> </ng-template>
<ng-template st-row="billRefundPaymentVOS" let-item let-index="index" let-column="column"> <ng-template st-row="billRefundPaymentVOS" let-item let-index="index" let-column="column">
<ng-container *ngFor="let bill of item.billRefundPaymentVOS"> <ng-container *ngFor="let bill of item.billRefundPaymentVOS">

View File

@ -233,6 +233,14 @@ export class RefundRecordComponent extends BasicTableComponent implements OnInit
{ title: '退款单号', render: 'orderRefundCode', width: 190 }, { title: '退款单号', render: 'orderRefundCode', width: 190 },
{ title: '退款类型', index: 'refundTypeLabel', width: 140 }, { title: '退款类型', index: 'refundTypeLabel', width: 140 },
{ title: '退款金额', render: 'refundAmount', className: 'text-right', width: 180 }, { title: '退款金额', render: 'refundAmount', className: 'text-right', width: 180 },
{
title: '合计金额',
index: 'refundAmount',
width: 150,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.refundAmount }) }
},
{ title: '退款时间', index: 'refundExecuteTime', width: 170 }, { title: '退款时间', index: 'refundExecuteTime', width: 170 },
{ title: '货主', index: 'enterpriseInfoName', width: 150 }, { title: '货主', index: 'enterpriseInfoName', width: 150 },
{ title: '所属项目', index: 'enterpriseProjectName', width: 140 }, { title: '所属项目', index: 'enterpriseProjectName', width: 140 },

View File

@ -27,6 +27,8 @@
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl
[acl-ability]="['FINANCIAL-VOUCHER-list']">筛选</button> [acl-ability]="['FINANCIAL-VOUCHER-list']">筛选</button>
<button nz-button nzDanger [disabled]="service.http.loading" (click)="exprot()" acl
[acl-ability]="['FINANCIAL-VOUCHER-export']">导出</button>
</div> </div>
</div> </div>

View File

@ -61,6 +61,11 @@ export class VoucherManagementComponent extends BasicTableComponent {
} }
} }
// 导出
exprot() {
this.service.exportStart({ ...this.sf?.value, pageSize: -1 }, this.service.$api_get_fico_vch_export);
}
private initSF(): SFSchema { private initSF(): SFSchema {
return { return {
properties: { properties: {
@ -147,9 +152,15 @@ export class VoucherManagementComponent extends BasicTableComponent {
vctype: { vctype: {
type: 'string', type: 'string',
title: '凭证类型', title: '凭证类型',
enum: [
{label: '全部', value:''},
{label: 'WLW', value:'WLW'},
{label: 'YH', value:'YH'},
{label: 'KP', value:'KP'},
{label: 'ZZ', value:'ZZ'},
],
ui: { ui: {
widget: 'dict-select', widget: 'select',
params: { dictKey: 'credential:type' },
placeholder: '请选择' placeholder: '请选择'
}, },
default: '' default: ''

View File

@ -83,6 +83,10 @@ export class FreightAccountService extends ShipperBaseService {
// 查询费用单抬头 // 查询费用单抬头
$api_get_cost_page = '/api/fcc/ficoFeeH/list/page'; $api_get_cost_page = '/api/fcc/ficoFeeH/list/page';
// 导出费用单列表数据
$api_get_cost_page_export = '/api/fcc/ficoFeeH/asyncExport';
// 导出费用管理列表数据
$api_get_reportFeehList = '/api/fcc/ficoFeeH/reportFeehList';
// 根据费用头ID查询费用单及开票明细 // 根据费用头ID查询费用单及开票明细
$api_get_cost_detail = '/api/fcc/ficoFeeL/detail'; $api_get_cost_detail = '/api/fcc/ficoFeeL/detail';
// 费用关联的应收核销明细 // 费用关联的应收核销明细
@ -90,6 +94,8 @@ export class FreightAccountService extends ShipperBaseService {
// 查询应收核销抬头 // 查询应收核销抬头
$api_get_fico_page = '/api/fcc/ficoAhxH/list/page'; $api_get_fico_page = '/api/fcc/ficoAhxH/list/page';
// 应收核销列表数据导出
$api_get_fico_page_export = '/api/fcc/ficoAhxH/asyncExport';
// 应收核销汇总 // 应收核销汇总
$api_get_fico_sum = '/api/fcc/ficoAhxH/getSum'; $api_get_fico_sum = '/api/fcc/ficoAhxH/getSum';
// 获取应收核销抬头 // 获取应收核销抬头
@ -99,6 +105,8 @@ export class FreightAccountService extends ShipperBaseService {
// 查询应付核销抬头 // 查询应付核销抬头
$api_get_fico_ph_page = '/api/fcc/ficoPhxH/list/page'; $api_get_fico_ph_page = '/api/fcc/ficoPhxH/list/page';
// 应付核销列表数据导出
$api_get_fico_ph_page_export = '/api/fcc/ficoPhxH/asyncExport';
// 应付核销汇总 // 应付核销汇总
$api_get_fico_ph_sum = '/api/fcc/ficoPhxH/getSum'; $api_get_fico_ph_sum = '/api/fcc/ficoPhxH/getSum';
// 获取应付核销抬头 // 获取应付核销抬头
@ -108,6 +116,8 @@ export class FreightAccountService extends ShipperBaseService {
// 查询总账凭证表 // 查询总账凭证表
$api_get_fico_vch_page = '/api/fcc/ficoVcH/list/page'; $api_get_fico_vch_page = '/api/fcc/ficoVcH/list/page';
// 导出总账凭证列表数据
$api_get_fico_vch_export = '/api/fcc/ficoVcH/asyncExport';
// 导出总账凭证表 // 导出总账凭证表
$api_export_fico_vch_page = '/api/fcc/ficoVcH/reportVchListPage'; $api_export_fico_vch_page = '/api/fcc/ficoVcH/reportVchListPage';
// 获取总账凭证表详情信息 // 获取总账凭证表详情信息
@ -115,6 +125,8 @@ export class FreightAccountService extends ShipperBaseService {
// 查询付款单抬头 // 查询付款单抬头
$api_get_payment_page = '/api/fcc/ficoPayH/listFicoPayHPage'; $api_get_payment_page = '/api/fcc/ficoPayH/listFicoPayHPage';
// 付款单列表数据导出
$api_get_payment_page_export = '/api/fcc/ficoPayH/asyncExport';
// 查询付款单明细 // 查询付款单明细
$api_get_payment_detail = '/api/fcc/ficoPayL/list/page'; $api_get_payment_detail = '/api/fcc/ficoPayL/list/page';
// 付款单抬头信息 // 付款单抬头信息
@ -122,6 +134,8 @@ export class FreightAccountService extends ShipperBaseService {
// 查询收款单抬头 // 查询收款单抬头
$api_get_receipt_page = '/api/fcc/ficoBrmH/list/page'; $api_get_receipt_page = '/api/fcc/ficoBrmH/list/page';
// 收款单列表数据导出
$api_get_receipt_page_export = '/api/fcc/ficoBrmH/asyncExport';
// 收款单抬头信息 // 收款单抬头信息
$api_get_receipt_header = '/api/fcc/ficoBrmH/get'; $api_get_receipt_header = '/api/fcc/ficoBrmH/get';
// 获取收款单抬头 // 获取收款单抬头

View File

@ -104,10 +104,9 @@
</span> </span>
</div> </div>
<div nz-row [nzGutter]="24"> <div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12"> <div class="handling-col" nz-col [nzSpan]="12">
<div class="handling-info p-md"> <div class="handling-info p-md">
<ng-container *ngFor="let item of i?.unLoadingPlaceList"> <ng-container *ngFor="let item of i?.unLoadingPlaceList">
<div class="flex" *ngIf="item.type === '1'"> <div class="flex" *ngIf="item.type === '1'">
<div class="loading-row"> <div class="loading-row">
<div class="handling-info-icon loading-bg"></div> <div class="handling-info-icon loading-bg"></div>
@ -121,7 +120,7 @@
</ng-container> </ng-container>
</div> </div>
</div> </div>
<div nz-col [nzSpan]="12"> <div class="handling-col" nz-col [nzSpan]="12">
<div class="handling-info p-md"> <div class="handling-info p-md">
<ng-container *ngFor="let item of i?.unLoadingPlaceList"> <ng-container *ngFor="let item of i?.unLoadingPlaceList">
<div class="flex" *ngIf="item.type === '2'"> <div class="flex" *ngIf="item.type === '2'">
@ -176,9 +175,7 @@
结算依据为2时装货时间不为空显示运费信息否则隐藏 结算依据为2时装货时间不为空显示运费信息否则隐藏
[hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)" [hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)"
--> -->
<nz-card #distannce3 <nz-card #distannce3 [nzBorderless]="true" class="mb0">
[nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title"> <div class="font-weight-blod text-md detail-title">
<a class="sign"></a> <a class="sign"></a>
<span>运费信息</span> <span>运费信息</span>

View File

@ -31,7 +31,8 @@
<div class="tab_header"> <div class="tab_header">
<label class="page_title"> <label class="page_title">
<label class="driver">|</label> <label class="driver">|</label>
大宗订单</label> 大宗订单</label
>
<nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate"> <nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate">
<nz-tab [nzTitle]="'全部(' + tabs?.totalCount + ')'"></nz-tab> <nz-tab [nzTitle]="'全部(' + tabs?.totalCount + ')'"></nz-tab>
<nz-tab [nzTitle]="'待接单(' + tabs?.receivedQuantity + ')'"></nz-tab> <nz-tab [nzTitle]="'待接单(' + tabs?.receivedQuantity + ')'"></nz-tab>
@ -44,10 +45,17 @@
</div> </div>
<div> <div>
<st #st [bordered]="true" [scroll]="{ x: '2000px',y:scrollY }" [data]="service.$api_get_listBulkPage" <st
[columns]="columns" [req]="{ process: beforeReq }" #st
[res]="{ reName: { list: 'data.records', total: 'data.total' } , process: afterRes}" [bordered]="true"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loading]="false"> [scroll]="{ x: '2000px', y: scrollY }"
[data]="service.$api_get_listBulkPage"
[columns]="columns"
[req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loading]="false"
>
<ng-template st-row="freightPrice" let-item let-index="index"> <ng-template st-row="freightPrice" let-item let-index="index">
{{ item.freightPrice | currency }} {{ item.freightPrice | currency }}
</ng-template> </ng-template>
@ -56,19 +64,19 @@
<div *ngIf="item?.unloadTime">卸 | {{ item?.unloadTime }}</div> <div *ngIf="item?.unloadTime">卸 | {{ item?.unloadTime }}</div>
</ng-template> </ng-template>
<ng-template st-row="driverName" let-item let-index="index"> <ng-template st-row="driverName" let-item let-index="index">
<div> {{ item?.driverName }}{{ item?.driverPhone ? "/" + item?.driverPhone : '' }}{{ item?.carNo ? "/" + <div> {{ item?.driverName }}{{ item?.driverPhone ? '/' + item?.driverPhone : '' }}{{ item?.carNo ? '/' + item?.carNo : '' }} </div>
item?.carNo : ''}} </div>
</ng-template> </ng-template>
<ng-template st-row="settlementWeight" let-item let-index="index"> <ng-template st-row="settlementWeight" let-item let-index="index">
<div> {{ item.settlementWeight ? item.settlementWeight + '吨/ ': ''}} {{ item.settlementVolume ? <div>
item.settlementVolume + ' ': ''}}</div> {{ item.settlementWeight ? item.settlementWeight + '吨/ ' : '' }}
{{ item.settlementVolume ? item.settlementVolume + '方 ' : '' }}</div
>
</ng-template> </ng-template>
<ng-template st-row="payeeName" let-item let-index="index"> <ng-template st-row="payeeName" let-item let-index="index">
<div *ngIf="item.payeeName !== item.driverName"> {{ item?.payeeName }}{{ item?.payeePhone ? "/" + <div *ngIf="item.payeeName !== item.driverName"> {{ item?.payeeName }}{{ item?.payeePhone ? '/' + item?.payeePhone : '' }} </div>
item?.payeePhone : '' }} </div>
</ng-template> </ng-template>
<ng-template st-row="createUserName" let-item let-index="index"> <ng-template st-row="createUserName" let-item let-index="index">
<div> {{ item?.createUserName }}{{ item?.createUserPhone ? "/" + item?.createUserPhone : '' }} </div> <div> {{ item?.createUserName }}{{ item?.createUserPhone ? '/' + item?.createUserPhone : '' }} </div>
</ng-template> </ng-template>
<ng-template st-row="billCode" let-item let-index="index"> <ng-template st-row="billCode" let-item let-index="index">
<a [routerLink]="'bulk-detail/' + item.id">{{ item.billCode }}</a> <a [routerLink]="'bulk-detail/' + item.id">{{ item.billCode }}</a>
@ -91,8 +99,7 @@
<div *ngIf="item.mybidDetailInfo.length > 0"> <div *ngIf="item.mybidDetailInfo.length > 0">
<p *ngFor="let data of item.mybidDetailInfo"> <p *ngFor="let data of item.mybidDetailInfo">
<span *ngIf="data.expenseCode !== 'FL'">{{ data.expenseName }}{{ data.price | currency }}</span> <span *ngIf="data.expenseCode !== 'FL'">{{ data.expenseName }}{{ data.price | currency }}</span>
<span *ngIf="data.expenseCode === 'FL'">{{ data.expenseName }}{{ (data.price * 100).toFixed(2) + '%' <span *ngIf="data.expenseCode === 'FL'">{{ data.expenseName }}{{ (data.price * 100).toFixed(2) + '%' }}</span>
}}</span>
<span *ngIf="data.paymentStatusLabel" style="color: #f59a63">{{ data.paymentStatusLabel }}</span> <span *ngIf="data.paymentStatusLabel" style="color: #f59a63">{{ data.paymentStatusLabel }}</span>
</p> </p>
</div> </div>
@ -101,13 +108,25 @@
</div> </div>
</nz-card> </nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzWidth]="600" [nzFooter]="nzModalFooter" nzTitle="运费变更记录" (nzOnOk)="handleOK()" <nz-modal
(nzOnCancel)="handleCancel('0')"> [(nzVisible)]="isVisible"
[nzWidth]="600"
[nzFooter]="nzModalFooter"
nzTitle="运费变更记录"
(nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('0')"
>
<ng-container *nzModalContent> <ng-container *nzModalContent>
<st #stFloat size="small" [bordered]="true" [data]="service.$api_get_listChangeApply" [columns]="columnsFloat" <st
[req]="{ process: beforeReq }" #stFloat
[res]="{ reName: { list: 'data.records', total: 'data.total' } , process: afterRes}" size="small"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"> [bordered]="true"
[data]="service.$api_get_listChangeApply"
[columns]="columnsFloat"
[req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
>
<ng-template st-row="order" let-item let-index="index"> <ng-template st-row="order" let-item let-index="index">
{{ index + 1 }} {{ index + 1 }}
</ng-template> </ng-template>
@ -127,8 +146,14 @@
</ng-template> </ng-template>
</nz-modal> </nz-modal>
<nz-modal [(nzVisible)]="isVisibleView" [nzWidth]="600" [nzFooter]="nzModalFooterview" nzTitle="查看" <nz-modal
(nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('1')"> [(nzVisible)]="isVisibleView"
[nzWidth]="600"
[nzFooter]="nzModalFooterview"
nzTitle="查看"
(nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('1')"
>
<ng-container *nzModalContent> <ng-container *nzModalContent>
<sf #sfView [schema]="schemaView" [ui]="uiView" [formData]="ViewCause" [compact]="true" [button]="'none'"> <sf #sfView [schema]="schemaView" [ui]="uiView" [formData]="ViewCause" [compact]="true" [button]="'none'">
<ng-template sf-template="no" let-me let-ui="uiView" let-schema="schemaView"> <ng-template sf-template="no" let-me let-ui="uiView" let-schema="schemaView">
@ -138,21 +163,30 @@
</div> </div>
</ng-template> </ng-template>
</sf> </sf>
<st #stFloatView multiSort size="small" [bordered]="true" [data]="service.$api_getChangeRecordBulkDetail" <st
#stFloatView
multiSort
size="small"
[bordered]="true"
[data]="service.$api_getChangeRecordBulkDetail"
[columns]="columnsFloatView" [columns]="columnsFloatView"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: changeViewParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: changeViewParams }"
[res]="{ reName: { list: 'data.list', total: 'data.total' } }"> [res]="{ reName: { list: 'data.list', total: 'data.total' } }"
>
<ng-template st-row="amountBeforeChange" let-item let-index="index"> <ng-template st-row="amountBeforeChange" let-item let-index="index">
{{ item.amountBeforeChange | currency }} {{ item.amountBeforeChange | currency }}
</ng-template> </ng-template>
<ng-template st-row="amountchangeValue" let-item let-index="index"> ¥{{ item.amountchangeValue | number: '0.2-2' <ng-template st-row="amountchangeValue" let-item let-index="index"> ¥{{ item.amountchangeValue | number: '0.2-2' }} </ng-template>
}} </ng-template>
<ng-template st-row="amountAfterChange" let-item let-index="index"> <ng-template st-row="amountAfterChange" let-item let-index="index">
{{ item.amountAfterChange | currency }} {{ item.amountAfterChange | currency }}
</ng-template> </ng-template>
</st> </st>
<div><span>变更原因:{{ ViewCause?.changeCause }}</span></div> <div
<div><span>拒绝原因:{{ ViewCause?.refuseCause }}</span></div> ><span>变更原因:{{ ViewCause?.changeCause }}</span></div
>
<div
><span>拒绝原因:{{ ViewCause?.refuseCause }}</span></div
>
<div><span>注:附加费依据调整后的运输费用重新计算</span></div> <div><span>注:附加费依据调整后的运输费用重新计算</span></div>
</ng-container> </ng-container>
<ng-template #nzModalFooterview> <ng-template #nzModalFooterview>
@ -161,8 +195,13 @@
</ng-template> </ng-template>
</nz-modal> </nz-modal>
<nz-modal [(nzVisible)]="isVisibleEvaluate" [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate" (nzOnOk)="handleOK()" <nz-modal
(nzOnCancel)="handleCancel('2')"> [(nzVisible)]="isVisibleEvaluate"
[nzWidth]="600"
[nzFooter]="nzModalFooterEvaluate"
(nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('2')"
>
<ng-container *nzModalContent> <ng-container *nzModalContent>
<nz-tabset> <nz-tabset>
<nz-tab nzTitle="货主评价"> <nz-tab nzTitle="货主评价">
@ -191,20 +230,28 @@
<ng-template #enable> <ng-template #enable>
<div class="ant-popover-message"> <div class="ant-popover-message">
<i nz-icon nzType="info-circle" nzTheme="fill"></i> <i nz-icon nzType="info-circle" nzTheme="fill"></i>
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">已选择{{ <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px"
selectedRows?.length || 0 }}条订单,确认批量签收吗? >已选择{{ selectedRows?.length || 0 }}条订单,确认批量签收吗?
</div> </div>
<div class="ant-popover-message-title ng-star-inserted"> 签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。 </div> <div class="ant-popover-message-title ng-star-inserted"> 签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。 </div>
</div> </div>
</ng-template> </ng-template>
<ng-template #extraTemplate> <ng-template #extraTemplate>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="loading" (click)="openDrawer()" acl <button nz-button nzDanger [nzLoading]="loading" (click)="openDrawer()" acl [acl-ability]="['ORDER-BULK-search']">筛选</button>
[acl-ability]="['ORDER-BULK-search']">筛选</button>
<button nz-button nzDanger [disabled]="loading" (click)="exprot()">导出</button> <button nz-button nzDanger [disabled]="loading" (click)="exprot()">导出</button>
<button *ngIf="resourceStatus == 4" nz-button nzType="primary" nzGhost nz-popconfirm [nzPopconfirmTitle]="enable" <button
(nzOnConfirm)="userAction()" nzPopconfirmPlacement="bottomRight" acl *ngIf="resourceStatus == 4"
[acl-ability]="['ORDER-BULK-batchSignBulkOrder']"> nz-button
nzType="primary"
nzGhost
nz-popconfirm
[nzPopconfirmTitle]="enable"
(nzOnConfirm)="userAction()"
nzPopconfirmPlacement="bottomRight"
acl
[acl-ability]="['ORDER-BULK-batchSignBulkOrder']"
>
批量签收 批量签收
</button> </button>
</div> </div>

View File

@ -824,4 +824,5 @@ export class OrderManagementBulkComponent extends BasicTableComponent implements
exprot() { exprot() {
this.service.exportStart({ ...this.reqParams, pageSize: -1 }, this.service.$api_get_asyncExportBulkList); this.service.exportStart({ ...this.reqParams, pageSize: -1 }, this.service.$api_get_asyncExportBulkList);
} }
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-01-12 10:52:50 * @Date : 2022-01-12 10:52:50
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-04-29 10:29:12 * @LastEditTime : 2022-05-10 13:55:39
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -39,10 +39,17 @@
</div> </div>
<div> <div>
<st #st [bordered]="true" [scroll]="{ x: '2000px',y:scrollY }" [data]="service.$api_get_billExamine_page" <st
[columns]="columns" [req]="{ process: beforeReq }" #st
[res]="{ reName: { list: 'data.records', total: 'data.total' } , process: afterRes}" [bordered]="true"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loading]="false"> [scroll]="{ x: '2000px', y: scrollY }"
[data]="service.$api_get_billExamine_page"
[columns]="columns"
[req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loading]="false"
>
<ng-template st-row="freightPrice" let-item let-index="index"> <ng-template st-row="freightPrice" let-item let-index="index">
{{ item.freightPrice | currency }} {{ item.freightPrice | currency }}
</ng-template> </ng-template>
@ -62,8 +69,7 @@
<app-imagelist style="width: 40px" [imgList]="[item.unloadingLadingBillFilePath]"> </app-imagelist> <app-imagelist style="width: 40px" [imgList]="[item.unloadingLadingBillFilePath]"> </app-imagelist>
</div> </div>
<div *ngIf="item.unloadingPeopleVehiclesGoodsFilePath"> <div *ngIf="item.unloadingPeopleVehiclesGoodsFilePath">
<app-imagelist style="width: 40px" [imgList]="[item.unloadingPeopleVehiclesGoodsFilePath]"> <app-imagelist style="width: 40px" [imgList]="[item.unloadingPeopleVehiclesGoodsFilePath]"> </app-imagelist>
</app-imagelist>
</div> </div>
</div> </div>
</ng-template> </ng-template>
@ -72,26 +78,21 @@
<div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div> <div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div>
</ng-template> </ng-template>
<ng-template st-row="driverName" let-item let-index="index"> <ng-template st-row="driverName" let-item let-index="index">
<div> {{ item?.driverName }}{{ item?.driverPhone ? "/" + item?.driverPhone : ''}}{{ item?.carNo ? "/" + <div> {{ item?.driverName }}{{ item?.driverPhone ? '/' + item?.driverPhone : '' }}{{ item?.carNo ? '/' + item?.carNo : '' }} </div>
item?.carNo : '' }} </div>
</ng-template> </ng-template>
<ng-template st-row="payeeName" let-item let-index="index"> <ng-template st-row="payeeName" let-item let-index="index">
<div> {{ item?.payeeName }}{{item?.payeePhone ? "/" + item?.payeePhone : '' }} </div> <div *ngIf="item.payeeName !== item.driverName"> {{ item?.payeeName }}{{ item?.payeePhone ? '/' + item?.payeePhone : '' }} </div>
</ng-template> </ng-template>
<ng-template st-row="billCode" let-item let-index="index"> <ng-template st-row="billCode" let-item let-index="index">
<!-- <div>{{ item.billCode }}</div> --> <!-- <div>{{ item.billCode }}</div> -->
<a *ngIf="item.resourceType == '1'" [routerLink]="'/order-management/vehicle/vehicle-detail/' + item.id">{{ <a *ngIf="item.resourceType == '1'" [routerLink]="'/order-management/vehicle/vehicle-detail/' + item.id">{{ item.billCode }}</a>
item.billCode }}</a> <a *ngIf="item.resourceType == '2'" [routerLink]="'/order-management/bulk/bulk-detail/' + item.id">{{ item.billCode }}</a>
<a *ngIf="item.resourceType == '2'" [routerLink]="'/order-management/bulk/bulk-detail/' + item.id">{{ <a *ngIf="item.resourceType == '3'" [routerLink]="'/order-management/vehicle/vehicle-detail/' + item.id">{{ item.billCode }}</a>
item.billCode }}</a>
<a *ngIf="item.resourceType == '3'" [routerLink]="'/order-management/vehicle/vehicle-detail/' + item.id">{{
item.billCode }}</a>
<div> <div>
<span>{{item?.billStatusLabel}}</span> <span>{{ item?.billStatusLabel }}</span>
</div> </div>
<div> <div>
<span>{{item?.resourceTypeLabel}}{{item?.serviceTypeLabel === item?.resourceTypeLabel ? <span>{{ item?.resourceTypeLabel }}{{ item?.serviceTypeLabel === item?.resourceTypeLabel ? '' : item?.serviceTypeLabel }}</span>
'':item?.serviceTypeLabel}}</span>
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="goodsName" let-item let-index="index"> <ng-template st-row="goodsName" let-item let-index="index">
@ -116,19 +117,17 @@
<ng-template #extraTemplate> <ng-template #extraTemplate>
<div> <div>
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl [acl-ability]="['ORDER-RECEIPTS-search']"
[acl-ability]="['ORDER-RECEIPTS-search']">筛选</button> >筛选</button
>
<button nz-button nzDanger [disabled]="false" (click)="exprot()" acl [acl-ability]="['ORDER-RECEIPTS-export']">导出</button> <button nz-button nzDanger [disabled]="false" (click)="exprot()" acl [acl-ability]="['ORDER-RECEIPTS-export']">导出</button>
<button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft"> <button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft">
更多<i nz-icon nzType="down" nzTheme="outline"></i></button> 更多<i nz-icon nzType="down" nzTheme="outline"></i
></button>
<nz-dropdown-menu #menu="nzDropdownMenu"> <nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu> <ul nz-menu>
<li nz-menu-item (click)="sign('1')" acl [acl-ability]="['ORDER-RECEIPTS-billAuditPassBatch']"> <li nz-menu-item (click)="sign('1')" acl [acl-ability]="['ORDER-RECEIPTS-billAuditPassBatch']"> 批量通过 </li>
批量通过 <li nz-menu-item (click)="sign1('1')" acl [acl-ability]="['ORDER-RECEIPTS- electronicBilling']"> 批量生成电子单据 </li>
</li>
<li nz-menu-item (click)="sign1('1')" acl [acl-ability]="['ORDER-RECEIPTS- electronicBilling']">
批量生成电子单据
</li>
</ul> </ul>
</nz-dropdown-menu> </nz-dropdown-menu>
</div> </div>

View File

@ -127,7 +127,6 @@ export class OrderManagementReceiptsAuditComponent extends BasicTableComponent i
this.initST(); this.initST();
setTimeout(() => { setTimeout(() => {
this.st.load(); this.st.load();
this.getGoodsSourceStatistical();
}, 500); }, 500);
} }
ngOnInit(): void { ngOnInit(): void {
@ -341,7 +340,6 @@ export class OrderManagementReceiptsAuditComponent extends BasicTableComponent i
title: '车队长', title: '车队长',
className: 'text-left', className: 'text-left',
width: '180px', width: '180px',
index: 'payeeName',
render: 'payeeName' render: 'payeeName'
}, },
{ {

View File

@ -134,8 +134,8 @@
<div class="handling-col" nz-col [nzSpan]="12"> <div class="handling-col" nz-col [nzSpan]="12">
<div class="handling-info p-md"> <div class="handling-info p-md">
<ng-container *ngFor="let item of i?.unLoadingPlaceList"> <ng-container *ngFor="let item of i?.unLoadingPlaceList">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceList"> <div class="flex" *ngIf="item.type === '2'">
<div *ngIf="item.type === '2'" class="loading-row"> <div class="loading-row">
<div class="handling-info-icon unloaing-bg"></div> <div class="handling-info-icon unloaing-bg"></div>
<div class="info"> <div class="info">
<h4>卸货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4> <h4>卸货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4>
@ -290,7 +290,7 @@
<div nz-col [nzSpan]="24"> <div nz-col [nzSpan]="24">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois"> <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois">
</amap-path-simplifier> </amap-path-simplifier>
<st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [noResult]='fuck' [ps]="0" <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [noResult]='fuck' [ps]="0"
[page]="{ show: false, showSize: false }" size="small" class="map_st"> [page]="{ show: false, showSize: false }" size="small" class="map_st">
<ng-template #fuck> <ng-template #fuck>
<div> <div>

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-01-12 10:52:50 * @Date : 2022-01-12 10:52:50
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-04-22 16:53:07 * @LastEditTime : 2022-05-11 09:49:01
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle\\vehicle.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle\\vehicle.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -95,10 +95,10 @@
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="driverName" let-item let-index="index"> <ng-template st-row="driverName" let-item let-index="index">
<div> {{ item?.driverName }}{{ item?.driverPhone ? '/' + item?.driverPhone : '' }}{{ item?.carNo ? '/' + <div> {{ item?.driverName }}{{ item?.driverPhone ? '/' + item?.driverPhone : '' }}{{ item?.carNo ? '/' + item?.carNo : '' }} </div>
item?.carNo : '' }} </div><br /> </ng-template>
<div *ngIf="item.payeeName !== item.driverName">车队长: {{ item?.payeeName ? item?.payeeName + '/' : ''}}{{ <ng-template st-row="payeeName" let-item let-index="index">
item?.payeePhone }} </div> <div *ngIf="item.payeeName !== item.driverName"> {{ item?.payeeName }}{{ item?.payeePhone ? '/' + item?.payeePhone : '' }} </div>
</ng-template> </ng-template>
<ng-template st-row="loadingTime" let-item let-index="index"> <ng-template st-row="loadingTime" let-item let-index="index">

View File

@ -379,8 +379,15 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
title: '承运司机', title: '承运司机',
className: 'text-left', className: 'text-left',
width: '250px', width: '250px',
index: 'driverName',
render: 'driverName' render: 'driverName'
}, },
{
title: '车队长',
className: 'text-left',
width: '180px',
render: 'payeeName'
},
{ title: '网络货运人', index: 'enterpriseInfoName', width: '250px', className: 'text-left' }, { title: '网络货运人', index: 'enterpriseInfoName', width: '250px', className: 'text-left' },
{ title: '关联运单号', index: 'wayBillCode', width: '170px', className: 'text-left' }, { title: '关联运单号', index: 'wayBillCode', width: '170px', className: 'text-left' },
{ title: '关联货源编号', index: 'resourceCode', width: '170px', className: 'text-left' }, { title: '关联货源编号', index: 'resourceCode', width: '170px', className: 'text-left' },

View File

@ -1,3 +1,13 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-04-28 20:27:07
* @LastEditors : Shiming
* @LastEditTime : 2022-05-12 14:57:21
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\account-management\\components\\recorded-detail\\recorded-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<page-header-wrapper [title]="'待入账明细'" [logo]="logo"> <page-header-wrapper [title]="'待入账明细'" [logo]="logo">
<ng-template #logo> <ng-template #logo>
<button nz-button (click)="goBack()"> <button nz-button (click)="goBack()">
@ -6,29 +16,44 @@
</ng-template> </ng-template>
</page-header-wrapper> </page-header-wrapper>
<nz-card> <nz-card>
<sv-container layout="vertical" [noColon]="true" col="5"> <sv-container layout="vertical" [noColon]="true" col="6">
<sv [label]="labelTpl"> <sv label="合伙人信息">
<b class="text-md ">{{summaryObj?.taxno}}</b> <div
><b>{{ summaryObj?.partnerName }}</b></div
>
<div
><b>{{ summaryObj?.partnerInfo }}</b></div
>
</sv> </sv>
<sv label="返佣总额"> <sv label="返佣总额">
<span class="text-error-dark font-weight-bold">{{(summaryObj?.totalRebate?summaryObj?.totalRebate: 0 )|currency :' <span class="text-error-dark font-weight-bold">{{ (summaryObj?.totalRebate ? summaryObj?.totalRebate : 0) | currency }}</span>
'}}</span>
</sv> </sv>
<sv label="已入账金额"> <sv label="已入账金额">
<span class="text-error-dark font-weight-bold">{{(summaryObj?.recordedAmount?summaryObj?.recordedAmount:0 <span class="text-error-dark font-weight-bold">{{ (summaryObj?.recordedAmount ? summaryObj?.recordedAmount : 0) | currency }}</span>
)|currency:' '}}</span>
</sv> </sv>
<sv label="代缴个税"> <sv label="代缴个税">
<span class="text-error-dark font-weight-bold">{{(summaryObj?.taxPersonalSum?summaryObj?.taxPersonalSum:0 <span class="text-error-dark font-weight-bold">{{
)|currency:' '}}</span> (summaryObj?.recordedTaxPersonal ? summaryObj?.recordedTaxPersonal : 0) | currency
}}</span>
</sv>
<sv label="入账中金额">
<span class="text-error-dark font-weight-bold">{{
(summaryObj?.ongoingRecordedAmount ? summaryObj?.ongoingRecordedAmount : 0) | currency
}}</span>
</sv>
<sv label="代缴中个税">
<span class="text-error-dark font-weight-bold">{{
(summaryObj?.waitRecordedTaxPersonal ? summaryObj?.waitRecordedTaxPersonal : 0) | currency
}}</span>
</sv> </sv>
<sv label="待入账金额"> <sv label="待入账金额">
<span class="text-error-dark font-weight-bold">{{(summaryObj?.waitRecordedAmount?summaryObj?.waitRecordedAmount:0) <span class="text-error-dark font-weight-bold">{{
|currency:' '}}</span> (summaryObj?.waitRecordedAmount ? summaryObj?.waitRecordedAmount : 0) | currency
}}</span>
</sv> </sv>
</sv-container> </sv-container>
<ng-template #labelTpl> <ng-template #labelTpl>
<b class="text-md" style="color: black;">{{summaryObj?.ltdName}}</b> <b class="text-md" style="color: black">{{ summaryObj?.ltdName }}</b>
</ng-template> </ng-template>
</nz-card> </nz-card>
<nz-card> <nz-card>
@ -36,44 +61,109 @@
<sf mode="search" #sf [schema]="schema" [ui]="ui" (formSubmit)="search()" (formReset)="resetSF()"></sf> <sf mode="search" #sf [schema]="schema" [ui]="ui" (formSubmit)="search()" (formReset)="resetSF()"></sf>
</div> </div>
<div class="table-content"> <div class="table-content">
<st #st [data]="service.$api_get_invoice_detail_page " [columns]="columns" <st
[req]="{ method: 'POST', allInBody: true, reName: {pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" #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' } }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
[page]="{ show: true, showSize: true, pageSizes: [5,10, 20, 50, 100, 200, 500] }" [page]="{ show: true, showSize: true, pageSizes: [5, 10, 20, 50, 100, 200, 500] }"
[loading]="service.http.loading" [scroll]="{x:'1200px'}"> [scroll]="{ x: '1200px' }"
<ng-template st-row="amount" let-item> >
<div *ngIf="item.incomeType === '1'"> - {{item.amount | currency }}</div> <!-- [loading]="service.http.loading" -->
<div *ngIf="item.incomeType === '2'"> + {{item.amount | currency }}</div>
<ng-template st-row="recordedAmount" let-item>
<div>{{ item.recordedAmount | currency }}</div>
</ng-template>
<ng-template st-row="recordedTaxPersonal" let-item>
<div>{{ item.recordedTaxPersonal | currency }}</div>
</ng-template>
<ng-template st-row="ongoingRecordedAmount" let-item>
<div>{{ item.ongoingRecordedAmount | currency }}</div>
</ng-template>
<ng-template st-row="waitRecordedTaxPersonal" let-item>
<div>{{ item.waitRecordedTaxPersonal | currency }}</div>
</ng-template>
<ng-template st-row="changeAmount" let-item>
<div (click)="changeB(item)" style="color: #1890ff;">{{ item.changeAmount | currency }}</div>
</ng-template>
<ng-template st-row="waitRecordedAmount" let-item>
<div>{{ item.waitRecordedAmount | currency }}</div>
</ng-template>
<ng-template st-row="totalRebate" let-item>
<div>{{ item.totalRebate | currency }}</div>
</ng-template> </ng-template>
</st> </st>
<div class="total-footer text-md" *ngIf="st?.list?.length !== 0 ">
合计 <label class="text-red-dark">{{ footerSummary?.total }}</label> 项,收入 <label
class="text-red-dark font-weight-bold">{{
footerSummary?.income | currency
}}</label>,支出 <label class="text-red-dark font-weight-bold">{{
footerSummary?.spending | currency }}</label>
</div>
</div> </div>
</nz-card> </nz-card>
<nz-modal [(nzVisible)]="showBillDetail" nzTitle="账户明细" [nzFooter]="null" (nzOnCancel)="handleCancel()" nzWidth="700px"> <nz-modal [(nzVisible)]="showBillDetail" nzTitle="账户明细" [nzFooter]="null" (nzOnCancel)="handleCancel()" nzWidth="700px">
<div *nzModalContent> <div *nzModalContent>
<div class="mb-sm"> <div class="mb-sm">
<span class="mr-xxl text-sm font-weight-bold"><label>网络货运人:</label>{{detailRecord?.ltdName}}</span> <span class="mr-xxl text-sm font-weight-bold"><label>网络货运人:</label>{{ detailRecord?.ltdName }}</span>
<span class="text-sm font-weight-bold"><label>返佣总额(元):</label>{{detailRecord?.totalRebate |currency: ' '}}</span> <span class="text-sm font-weight-bold"><label>返佣总额(元):</label>{{ detailRecord?.totalRebate | currency: ' ' }}</span>
</div> </div>
<st #st [data]="billDetailList " [columns]="billDetailColumns" [res]="{ reName: { list: 'data' } }" <st
[req]="{ method: 'POST', allInBody: true, params:billDetailReqParams}" [page]="{show:false}"> #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> <ng-template st-row="month" let-item>
<div> <div>
<span>{{item?.year }}年</span> <span>{{ item?.year }}年</span>
<span>{{item?.month }}月</span> <span>{{ item?.month }}月</span>
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="profitAmountSum" let-item> <ng-template st-row="profitAmountSum" let-item>
<div>{{item?.profitAmountSum |currency :' '}}</div> <div>{{ item?.profitAmountSum | currency: ' ' }}</div>
</ng-template> </ng-template>
</st> </st>
</div> </div>
</nz-modal> </nz-modal>
<nz-modal [(nzVisible)]="showBillDetailB" nzTitle="调整待入账金额记录" [nzFooter]="null" (nzOnCancel)="handleCancelB()" nzWidth="900px">
<div *nzModalContent>
<div class="mb-sm">
<span class="mr-xxl text-sm font-weight-bold"><label>网络货运人:</label>{{ changeRecordB?.ltdName }}</span>
<span class="text-sm font-weight-bold"><label>调整金额(元):</label>{{ changeRecordB?.changeAmount | currency: ' ' }}</span>
</div>
<st
#stB
[scroll]="{x: '700px'}"
[data]="billDetailListB"
[columns]="billDetailColumnsB"
[res]="{ reName: { list: 'data' } }"
[req]="{ method: 'POST', allInBody: true, params: billDetailReqParams }"
[page]="{ show: false }"
>
<ng-template st-row="changeAmount" let-item>
<div> {{item.changeAmount | currency}}</div>
</ng-template>
<ng-template st-row="createUserName" let-item>
<div>{{ item?.createUserName ? item?.createUserName : '--'}}/{{item?.createUserPhone ? item?.createUserPhone : '--'}}</div>
</ng-template>
</st>
</div>
</nz-modal>
<nz-modal [(nzVisible)]="changeAccount" nzTitle="账户明细" [nzFooter]="nzModalFooter" (nzOnCancel)="handleCancelA()" nzWidth="600px">
<div *nzModalContent>
<div style="display: flex; justify-content: center; align-items: center;font-weight: 700; font-size: 16px; padding: 10px 0;"><label>网络货运人:</label>{{ changeRecord?.ltdName }}</div>
<div style="display: flex; justify-content: center; align-items: center;font-weight: 700; font-size: 16px; padding: 10px 0;"><label>待入账金额(元):</label>{{ changeRecord?.waitRecordedAmount | currency }}</div>
<sf #sfView [schema]="schemaView" [ui]="uiView" [compact]="true" [button]="'none'">
<ng-template sf-template="smsVerifyCode" let-me let-ui="uiView" let-schema="schemaView">
<div style="display: flex;">
<div [style.background-color]="addd ? '#ff4d4f' : '#ccc'" style="display: flex; justify-content: center; align-items: center;width: 30px; height: 30px; background-color: #ccc;margin: 0 10px;font-size: 14px;" (click)="add(changeAmount)">+</div>
<div style="display: flex; justify-content: center; align-items: center;width: 30px; height: 30px; background-color: #ccc;margin: 0 10px;font-size: 14px;" [style.background-color]="!addd ? '#ff4d4f' : '#ccc'" (click)="deletes(changeAmount)">-</div>
<nz-input-number style="width: 50%;height: 32px; border-radius: 4px 0 0 4px;" nzPlaceHolder="请输入金额" [(ngModel)]="changeAmount" [nzMin]="1" [nzMax]="99999999" [nzStep]="1"></nz-input-number>
<span style="margin: 10px ;"></span>
</div>
</ng-template>
</sf>
</div>
<ng-template #nzModalFooter>
<button nz-button nzType="primary" (click)="handleCancel()">取消</button>
<button nz-button nzType="default" (click)="handleOK()">确定</button>
</ng-template>
</nz-modal>

View File

@ -0,0 +1,6 @@
:host::ng-deep {
.file-col {
background-color: red;
}
}

View File

@ -3,11 +3,13 @@ import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent } from '@delon/abc/st'; import { STColumn, STComponent } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema, Widget } from '@delon/form'; import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema, Widget } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme'; import { ModalHelper, _HttpClient } from '@delon/theme';
import { NzModalService } from 'ng-zorro-antd/modal';
import { AccountManagemantService } from '../../services/account-managemant.service'; import { AccountManagemantService } from '../../services/account-managemant.service';
@Component({ @Component({
selector: 'app-partner-account-management-recorded-detail', selector: 'app-partner-account-management-recorded-detail',
templateUrl: './recorded-detail.component.html', styleUrls: ['./recorded-detail.component.less'],
templateUrl: './recorded-detail.component.html'
}) })
export class PartnerAccountManagementRecordedDetailComponent implements OnInit { export class PartnerAccountManagementRecordedDetailComponent implements OnInit {
summaryObj: any = { summaryObj: any = {
@ -18,34 +20,42 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit {
ltdName: '', ltdName: '',
taxno: '' taxno: ''
}; };
@ViewChild('sfView', { static: false }) sfView!: SFComponent;
schemaView!: SFSchema;
uiView: SFUISchema = {};
footerSummary = { footerSummary = {
total: 0, total: 0,
income: 0, income: 0,
spending: 0 spending: 0
} };
detailRecord: any = {}; detailRecord: any = {};
changeRecord: any = {};
changeRecordB: any = {};
url = `/user`; url = `/user`;
schema: SFSchema = {}; schema: SFSchema = {};
ui!: SFUISchema; ui!: SFUISchema;
@ViewChild('st') private readonly st!: STComponent; @ViewChild('st') private readonly st!: STComponent;
@ViewChild('stB') private readonly stB!: STComponent;
@ViewChild('sf') private readonly sf!: SFComponent; @ViewChild('sf') private readonly sf!: SFComponent;
columns: STColumn[] = []; columns: STColumn[] = [];
billDetailColumns: STColumn[] = []; billDetailColumns: STColumn[] = [];
billDetailColumnsB: STColumn[] = [];
showBillDetail = false; showBillDetail = false;
changeAccount = false;
showBillDetailB = false;
addd = false;
billDetailList = []; billDetailList = [];
billDetailListB = [];
roleId = ''; roleId = '';
changeAmount: number = 0;
constructor(public service: AccountManagemantService, public router: Router, public ar: ActivatedRoute) { constructor(public service: AccountManagemantService, public router: Router, public ar: ActivatedRoute, private nzModalService: NzModalService,) {
this.roleId = this.ar.snapshot.params.id; this.roleId = this.ar.snapshot.params.id;
} }
get reqParams() { get reqParams() {
return { ...this.sf?.value, partnerId: this.roleId }; return { ...this.sf?.value, partnerId: this.roleId };
} }
@ -63,45 +73,60 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit {
this.schema = { this.schema = {
properties: { properties: {
ltdName: { ltdName: {
title: '网络货运人',
type: 'string', type: 'string',
title: '网络货运人',
ui: { ui: {
placeholder: '请输入', placeholder: '请输入',
}, // allowClear: true,
}, // asyncData: () => this.service.getNetworkFreightForwarder(),
// visibleIf: {
// expand: (value: boolean) => value
// }
}
}
} }
} };
this.ui = { '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 } }, }; this.ui = { '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 } } };
} }
/** /**
* 初始化数据列表 * 初始化数据列表
*/ */
initST() { initST() {
this.columns = [ this.columns = [
{ title: '网络货运人', index: 'ltdName', className: 'text-center', width: 200 }, { title: '网络货运人', index: 'ltdName', className: 'text-center', width: 200 },
{ title: '银行类型', render: 'bankTypeLabel', className: 'text-center', width: 150 }, { title: '银行类型', index: 'bankTypeName', className: 'text-center', width: 150 },
{ title: '虚拟账户', render: 'fictitiousAccount', className: 'text-center', width: 200 }, { title: '虚拟账户', index: 'virtualAccount', className: 'text-center', width: 200 },
{ title: '返佣总额(元)', index: 'totalRebate', className: 'text-center', width: 180, type: 'currency' }, { title: '返佣总额(元)', render: 'totalRebate', className: 'text-center', width: 180 },
{ title: '已入账金额(元)', index: 'recordedAmount', className: 'text-center', width: 180, type: 'currency' }, { title: '已入账金额(元)', render: 'recordedAmount', className: 'text-center', width: 180 },
{ title: '代缴个税(元)', index: 'taxPersonalSum', className: 'text-center', width: 180, type: 'currency' }, { title: '代缴个税(元)', render: 'recordedTaxPersonal', className: 'text-center', width: 180 },
{ title: '入账金额(元)', index: 'waitRecordedAmount', className: 'text-right', width: 180, type: 'currency' }, { title: '入账金额(元)', render: 'ongoingRecordedAmount', className: 'text-center', width: 180 },
{ title: '代缴中个税(元)', render: 'waitRecordedTaxPersonal', className: 'text-center', width: 180 },
{ title: '调整金额(元)', render: 'changeAmount', className: 'text-center', width: 180 },
{ title: '待入账金额(元)', render: 'waitRecordedAmount', className: 'text-right', width: 180 },
{ {
title: '操作', className: 'text-center', width: 300, title: '操作',
className: 'text-center',
width: 150,
fixed: 'right',
buttons: [ buttons: [
{ {
text: '查看入账记录', text: '查看入账记录',
acl: { ability: ['AN-RECORDED-DETAIL-viewRecord'] }, acl: { ability: ['AN-RECORDED-DETAIL-viewRecord'] },
click: (_record) => this.viewBookedRecord(_record) click: _record => this.viewBookedRecord(_record)
}, },
{ {
text: '查看账单明细', text: '查看账单明细',
acl: { ability: ['AN-RECORDED-DETAIL-viewBill'] }, acl: { ability: ['AN-RECORDED-DETAIL-viewBill'] },
click: (_record) => this.viewAccountDetail(_record) click: _record => this.viewAccountDetail(_record)
}, },
{
text: '调整待入账金额',
acl: { ability: [''] },
click: _record => this.changeStalyAccount(_record)
}
] ]
}, }
]; ];
} }
@ -110,26 +135,69 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit {
{ title: '账单月份', render: 'month', className: 'text-center', width: '40%' }, { title: '账单月份', render: 'month', className: 'text-center', width: '40%' },
{ title: '返佣金额(元)', render: 'profitAmountSum', className: 'text-center', width: '40%' }, { title: '返佣金额(元)', render: 'profitAmountSum', className: 'text-center', width: '40%' },
{ {
title: '操作', className: 'text-center', width: '20%', buttons: [ title: '操作',
className: 'text-center',
width: '20%',
buttons: [
{ {
text: '订单明细', text: '订单明细',
click: (_record) => window.open(location.origin + `#/partner/rebate/record?ltdId=${_record?.ltdId}`) click: _record => window.open(location.origin + `#/partner/rebate/record?ltdId=${_record?.ltdId}`)
} }
] ]
}, }
] ];
} }
initBillDetailSTB() {
this.billDetailColumnsB = [
{ title: '调整金额(元)', render: 'changeAmount', className: 'text-center', width: '150px' },
{ title: '备注', index: 'remark', className: 'text-center', width: '200px' },
{ title: '操作时间', index: 'modifyTime', className: 'text-center', width: '200px' },
{ title: '操作人', index: 'createUserName', className: 'text-center', width: '150px' },
];
}
initSFNew() {
this.schemaView = {
properties: {
smsVerifyCode: {
title: '调整金额',
type: 'string',
description: '(“+”表示增加待入账金额,“-”表示减少待入账金额 ',
ui: {
widget: 'custom',
placeholder: '请输入金额',
errors: {
},
},
},
remark: {
title: '备注',
type: 'string',
maxLength: 50,
ui: {
placeholder: '请输入备注',
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 }
}
}
},
required: ['smsVerifyCode', 'remark'],
};
this.uiView = {
'*': {
spanLabelFixed: 100,
grid: { span: 24 },
},
};
}
resetSF() { resetSF() {
this.sf.reset(); this.sf.reset();
setTimeout(() => { setTimeout(() => {
this.st.reset(); this.st.reset();
}) });
} }
search() { search() {
this.st.load(1); this.st.load(1);
} }
@ -142,16 +210,30 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit {
if (res) { if (res) {
this.billDetailList = res; this.billDetailList = res;
} }
}) });
} }
/**
* 获取入账金额记录
*/
getBillDetailB(ltdId: string) {
let params = {
ltdId: ltdId,
partnerId: this.roleId ,
}
this.service.request(this.service.$api_get_getIncomeChangePage, params).subscribe(res => {
if (res) {
this.billDetailListB = res.records;
}
});
}
export() { } export() {}
/** /**
* 查看入账记录 * 查看入账记录
* @param record 当前行 * @param record 当前行
*/ */
viewBookedRecord(record: any) { viewBookedRecord(record: any) {
window.open(location.origin + `#/partner/recorded/record?ltdId=${record?.ltdId}`); window.open(location.origin + `#/partner/recorded/record?ltdId=${record?.ltdId}`);
} }
@ -167,22 +249,106 @@ export class PartnerAccountManagementRecordedDetailComponent implements OnInit {
this.detailRecord = record; this.detailRecord = record;
this.getBillDetail(record?.ltdId); this.getBillDetail(record?.ltdId);
} }
/**
* 查看调整金额
* @param record 当前行
*/
changeB(record: any) {
// this.billDetailColumns = [];
this.showBillDetailB = true;
this.initBillDetailSTB();
this.changeRecordB = record;
this.getBillDetailB(record?.ltdId);
}
/**
* 调整待入账金额
* @param record 当前行
*/
changeStalyAccount(record: any) {
this.changeRecord = record;
let params:any = {
partnerId: this.roleId ,
ltdId: record.ltdId,
ltdName: record.ltdName,
}
this.service.request(this.service.$api_get_getPartnerLitAmountSummary, params).subscribe(res => {
if (res) {
this.changeAmount = Math.abs(res.waitRecordedAmount)
if(res.waitRecordedAmount > 0) {
this.addd = true;
} else {
this.addd = false;
}
this.changeAccount = true;
this.initSFNew();
}
});
// this.getBillDetail(record?.ltdId);
}
getInvoiceSummary() { getInvoiceSummary() {
this.service.request(this.service.$api_get_invoice_summary, { partnerId: this.roleId }).subscribe(res => { this.service.request(this.service.$api_get_invoice_summary, { partnerId: this.roleId }).subscribe(res => {
if (res) { if (res) {
this.summaryObj = res; this.summaryObj = res;
} }
}) });
} }
handleCancel() { handleCancel() {
this.showBillDetail = false; this.showBillDetail = false;
this.detailRecord = {}; this.detailRecord = {};
}
handleCancelA() {
this.changeAccount = false;
this.changeRecord = {};
}
handleCancelB() {
this.showBillDetailB = false;
this.changeRecordB = {};
} }
goBack() { goBack() {
window.history.go(-1); window.history.go(-1);
} }
deletes(value: number) {
this.addd = false
}
add(value: number) {
this.addd = true
}
handleOK() {
console.log(this.sfView.value);
if(!this.sfView.value?.remark || !this.changeAmount) {
this.service.msgSrv.error('请填写必填项!')
return
}
console.log(this.addd);
let params:any = {
remark: this.sfView.value?.remark,
partnerId: this.roleId ,
ltdId: this.changeRecord.ltdId
}
if(!this.addd) {
params.changeAmount = -this.changeAmount
} else {
params.changeAmount = this.changeAmount
}
console.log(params);
this.nzModalService.warning({
nzTitle: `确定调整“${params.changeAmount > 0 ? '+' + params.changeAmount : params.changeAmount}元”的待入账金额吗?`,
nzOnOk: () => {
this.service.request(this.service.$api_get_saveIncomeChange, params).subscribe((res) => {
if(res) {
console.log(res);
this.service.msgSrv.success('修改成功!')
this.changeAccount = false;
this.st.load()
}
})
}
});
}
} }

View File

@ -1,10 +1,20 @@
/*
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-04-21 13:49:22
* @LastEditors : Shiming
* @LastEditTime : 2022-05-12 14:44:17
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\account-management\\services\\account-managemant.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { Injectable, Injector } from '@angular/core'; import { Injectable, Injector } from '@angular/core';
import { BaseService } from '@shared'; import { BaseService, ShipperBaseService } from '@shared';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
export class AccountManagemantService extends BaseService { export class AccountManagemantService extends ShipperBaseService {
$api_get_account_management_page = `/api/bpc/accountBalancePartner/getPartnerAccountBalanceByOperator`; // 账户管理 $api_get_account_management_page = `/api/bpc/accountBalancePartner/getPartnerAccountBalanceByOperator`; // 账户管理
$api_get_virtual_detail_page = `/api/bpc/accountBalancePartner/getPartnerAccountBalanceInfoByOperator`;//虚拟账户明细 $api_get_virtual_detail_page = `/api/bpc/accountBalancePartner/getPartnerAccountBalanceInfoByOperator`;//虚拟账户明细
@ -15,6 +25,9 @@ export class AccountManagemantService extends BaseService {
$api_get_bill_detail = `/api/bpc/partnerIncomeDetail/findPartnerWaitIncomeByOperator`; // 查看账单明细 $api_get_bill_detail = `/api/bpc/partnerIncomeDetail/findPartnerWaitIncomeByOperator`; // 查看账单明细
$api_get_invoice_summary = `/api/bpc/partnerInvoiceEntry/oprationEntrySummary`; // 入账明细汇总 $api_get_invoice_summary = `/api/bpc/partnerInvoiceEntry/oprationEntrySummary`; // 入账明细汇总
$api_get_invoice_detail_page = `/api/bpc/partnerInvoiceEntry/oprationEntryDetail`; // 待入账明细列表 $api_get_invoice_detail_page = `/api/bpc/partnerInvoiceEntry/oprationEntryDetail`; // 待入账明细列表
$api_get_getPartnerLitAmountSummary = `/api/bpc/partnerInvoiceEntry/getPartnerLitAmountSummary`; // 查询合伙货运人相关金额
$api_get_saveIncomeChange = `/api/bpc/partnerIncomeChange/saveIncomeChange`; // 调整金额
$api_get_getIncomeChangePage = `/api/bpc/partnerIncomeChange/getIncomeChangePage`; // 调整金额
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector) super(injector)

View File

@ -42,27 +42,34 @@ export class ParterChannelSalesEditComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
this.initSF(); this.initSF();
console.log(this.sts);
if (!this.sts) { if (!this.sts) {
this.service.request(this.service.$api_getChannelSalesInfo, { id: this.i?.id }).subscribe(res => { this.service.request(this.service.$api_getChannelSalesInfo, { id: this.i?.id }).subscribe(res => {
const List: any = []; const List: any = [];
const List3: any = [];
if (res) { if (res) {
let value1 = Object.assign({}, res); let value1 = Object.assign({}, res);
delete value1.employeeVO; delete value1.employeeVO;
let value = res.employeeVO; let value = res.employeeVO;
List.push({ label: value.empName + '/' + value.empNo, value: value.empNo }); List.push({ label: value.empName + '/' + value.empNo, value: value.empNo });
setTimeout(() => { res.roleInfoVOList.forEach((element: any) => {
if (this.sf) { List3.push(element.id);
console.log(this.sf.getProperty('/employeeVO')!.schema); });
setTimeout(() => {
if (this.sf) {
this.sf.getProperty('/employeeVO')!.schema.enum = List;
this.sf.getProperty('/employeeVO')!.widget.reset(List);
}
if (value.empNo) {
this.sf.setValue('/employeeVO', value.empNo);
console.log(List3);
this.sf.getProperty('/employeeVO')!.schema.enum = List; this.sf.setValue('/roleIds', List3);
this.sf.getProperty('/employeeVO')!.widget.reset(List); this.currentOAItem = value;
} this.sf.setValue('/phoneNumber', res.telephone);
if (value.empNo) { }
this.sf.setValue('/employeeVO', value.empNo); });
this.currentOAItem = value;
this.sf.setValue('/phoneNumber', res.telephone);
}
})
this.record = value1; this.record = value1;
} }
}); });
@ -88,6 +95,7 @@ export class ParterChannelSalesEditComponent implements OnInit {
title: '手机号', title: '手机号',
type: 'string', type: 'string',
maxLength: 11, maxLength: 11,
readOnly: !this.sts,
ui: { ui: {
placeholder: '请输入' placeholder: '请输入'
} }
@ -114,6 +122,7 @@ export class ParterChannelSalesEditComponent implements OnInit {
title: '关联OA员工', title: '关联OA员工',
type: 'string', type: 'string',
maxLength: 30, maxLength: 30,
readOnly: !this.sts,
ui: { ui: {
widget: 'select', widget: 'select',
// serverSearch: true, // serverSearch: true,
@ -207,10 +216,10 @@ export class ParterChannelSalesEditComponent implements OnInit {
this.sf.validator({ emitError: true }); this.sf.validator({ emitError: true });
if (!this.sf.valid) return; if (!this.sf.valid) return;
let params: any= { let params: any = {
...this.sf?.value, ...this.sf?.value
} };
delete params.telephone delete params.telephone;
this.service.request(this.service.$api_save, { ...params, employeeVO: this.currentOAItem }).subscribe(res => { this.service.request(this.service.$api_save, { ...params, employeeVO: this.currentOAItem }).subscribe(res => {
if (res) { if (res) {
this.service.msgSrv.success(res.msg); this.service.msgSrv.success(res.msg);

View File

@ -133,7 +133,13 @@ export class ParterChannelSalesListComponent implements OnInit {
acl: { ability: ['channelSales-frozen'] }, acl: { ability: ['channelSales-frozen'] },
iif: (item) => {return item.stateLocked == false}, iif: (item) => {return item.stateLocked == false},
click: (_record, _modal, _instance) => this.stop(_record), click: (_record, _modal, _instance) => this.stop(_record),
} },
{
text: '启用',
acl: { ability: ['channelSales-open'] },
iif: (item) => {return item.stateLocked == true},
click: (_record, _modal, _instance) => this.open(_record),
},
] ]
} }
]; ];
@ -185,6 +191,24 @@ export class ParterChannelSalesListComponent implements OnInit {
}); });
} }
} }
open(record: STData) {
if (record.stateLocked) {
const params = {
id: record.id
}
this.modalService.confirm({
nzTitle: '<i>启用确认</i>',
nzContent: `<b>确定启用该账号吗?</br>`,
nzOnOk: () =>
this.service.request(this.service.$api_activeChannelSales, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('启用成功!');
this.st.reload();
}
})
});
}
}
/** /**
* 重置表单 * 重置表单

View File

@ -21,6 +21,8 @@ export class ChannelSalesService extends BaseService {
$api_getChannelSalesInfo = '/api/mdc/channelSalesManagement/getChannelSalesInfo'; $api_getChannelSalesInfo = '/api/mdc/channelSalesManagement/getChannelSalesInfo';
// 冻结渠道销售 // 冻结渠道销售
$api_frozenChannelSales = '/api/mdc/channelSalesManagement/frozenChannelSales'; $api_frozenChannelSales = '/api/mdc/channelSalesManagement/frozenChannelSales';
// 激活渠道销售
$api_activeChannelSales = '/api/mdc/channelSalesManagement/activeChannelSales';
constructor(public injector: Injector) { constructor(public injector: Injector) {

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-04-28 20:27:22 * @Date : 2022-04-28 20:27:22
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-07 18:04:15 * @LastEditTime : 2022-05-11 16:04:16
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\level-config\\components\\edit\\edit.component.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\level-config\\components\\edit\\edit.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */
@ -49,6 +49,7 @@ export class ParterLevelConfigEditComponent implements OnInit {
sortId: { sortId: {
title: '排序', title: '排序',
minimum: 0, minimum: 0,
maximum: 999999,
type:"number", type:"number",
ui: { ui: {
change: (item: any) => { change: (item: any) => {

View File

@ -1,3 +1,14 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-04-29 17:28:23
* @LastEditors : Shiming
* @LastEditTime : 2022-05-12 16:55:43
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\level-config\\components\\list\\list.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<page-header-wrapper [title]="'等级配置'"> </page-header-wrapper>
<nz-card> <nz-card>
<!-- 搜索区 --> <!-- 搜索区 -->
<sf <sf
@ -16,6 +27,7 @@
<st <st
#st #st
[data]="service.$api_getList" [data]="service.$api_getList"
[scroll]="{x: '1200px'}"
[columns]="columns" [columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"

View File

@ -69,28 +69,34 @@ export class ParterLevelConfigListComponent implements OnInit {
this.columns = [ this.columns = [
{ {
title: '等级姓名', title: '等级姓名',
index: 'gradeName' index: 'gradeName',
width: 200
}, },
{ {
title: '备注', title: '备注',
index: 'remark' index: 'remark',
width: 200
}, },
{ {
title: '创建时间', title: '创建时间',
index: 'createTime' index: 'createTime',
width: 200
}, },
{ {
title: '启用时间', title: '启用时间',
index: 'enableTime' index: 'enableTime',
width: 200
}, },
{ {
title: '排序', title: '排序',
index: 'sortId' index: 'sortId',
width: 200
}, },
{ {
title: '状态', title: '状态',
index: 'stateLocked', index: 'stateLocked',
width: 200,
format: (item: any) => { format: (item: any) => {
return item.stateLocked ? '禁用' : '启用'; return item.stateLocked ? '禁用' : '启用';
} }
@ -98,6 +104,8 @@ export class ParterLevelConfigListComponent implements OnInit {
{ {
title: '操作', title: '操作',
className: 'text-center', className: 'text-center',
width: 120,
fixed: 'right',
buttons: [ buttons: [
{ {
text: '编辑', text: '编辑',
@ -162,7 +170,7 @@ export class ParterLevelConfigListComponent implements OnInit {
restart(item: any) { restart(item: any) {
this.modalService.confirm({ this.modalService.confirm({
nzTitle: '<i>启用确认</i>', nzTitle: '<i>启用确认</i>',
nzContent: `<b>确定启用该账号吗?</br>`, nzContent: `<b>确定启用该等级吗?</br>`,
nzOnOk: () => nzOnOk: () =>
this.service.request(this.service.$api_updatePartnerGradeConfig, { id: item.id }).subscribe(res => { this.service.request(this.service.$api_updatePartnerGradeConfig, { id: item.id }).subscribe(res => {
if (res) { if (res) {
@ -175,7 +183,7 @@ export class ParterLevelConfigListComponent implements OnInit {
stop(item: any) { stop(item: any) {
this.modalService.confirm({ this.modalService.confirm({
nzTitle: '<i>禁用确认</i>', nzTitle: '<i>禁用确认</i>',
nzContent: `<b>确定禁用该账号吗?</br>`, nzContent: `<b>确定禁用该等级吗?</br>`,
nzOnOk: () => nzOnOk: () =>
this.service.request(this.service.$api_updatePartnerGradeConfig, { id: item.id }).subscribe(res => { this.service.request(this.service.$api_updatePartnerGradeConfig, { id: item.id }).subscribe(res => {
if (res) { if (res) {

View File

@ -569,12 +569,14 @@ export class AddEtpPartnerComponent {
cityCodesList: { cityCodesList: {
type: 'string', type: 'string',
title: '所属城市', title: '所属城市',
maxMultipleCount: 3,
ui: { ui: {
widget: 'tree-select', widget: 'tree-select',
grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请选择城市(最多3个)', placeholder: '请选择城市(最多3个)',
checkable: true, checkable: true,
class: 'city-tree-select', class: 'city-tree-select',
maxMultipleCount: 3,
asyncData: () => asyncData: () =>
this.getRegionDetailByCode('').pipe( this.getRegionDetailByCode('').pipe(
map((res: any) => map((res: any) =>

View File

@ -299,9 +299,12 @@ export class AddPersonalPartnerComponent {
_addressTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, _addressTitle: { title: '', type: 'string', ui: { widget: 'custom' } },
cityCodesList: { cityCodesList: {
type: 'string', type: 'string',
title: '所属城市', title: '所属城市7',
maxMultipleCount: 3,
ui: { ui: {
widget: 'tree-select', widget: 'tree-select',
maxMultipleCount: 3,
maxTagCount: 3,
grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请选择城市(最多3个)', placeholder: '请选择城市(最多3个)',
checkable: true, checkable: true,
@ -314,9 +317,9 @@ export class AddPersonalPartnerComponent {
) )
), ),
expandChange: ({ node }: { node: NzTreeNode }) => expandChange: ({ node }: { node: NzTreeNode }) =>
this.getRegionDetailByCode(node.key).pipe( this.getRegionDetailByCode(node.key).pipe(
map((res: any) => res.map((item: any) => ({ ...item, title: item.name, key: item.regionCode, isLeaf: true }))) map((res: any) => res.map((item: any) => ({ ...item, title: item.name, key: item.regionCode, isLeaf: true })))
) )
} as SFTreeSelectWidgetSchema } as SFTreeSelectWidgetSchema
}, },
// 渠道销售 // 渠道销售
@ -340,30 +343,30 @@ export class AddPersonalPartnerComponent {
} }
private setInfo(info: any) { private setInfo(info: any) {
this.sf.setValue('/adminUserInfo/name', info?.name); this.sf.setValue('/adminUserInfo/name', info?.name);
this.sf.setValue('/adminUserInfo/certificatePhotoFront', info?.certificatePhotoFront); this.sf.setValue('/adminUserInfo/certificatePhotoFront', info?.certificatePhotoFront);
this.sf.setValue('/adminUserInfo/certificatePhotoFrontWatermark', [ this.sf.setValue('/adminUserInfo/certificatePhotoFrontWatermark', [
{ {
uid: -1, uid: -1,
name: '文件', name: '文件',
status: 'done', status: 'done',
url: info?.certificatePhotoFrontWatermark, url: info?.certificatePhotoFrontWatermark,
response: info?.certificatePhotoFrontWatermark response: info?.certificatePhotoFrontWatermark
} }
]); ]);
this.sf.setValue('/adminUserInfo/certificatePhotoBack', info?.certificatePhotoBack); this.sf.setValue('/adminUserInfo/certificatePhotoBack', info?.certificatePhotoBack);
this.sf.setValue('/adminUserInfo/certificatePhotoBackWatermark', [ this.sf.setValue('/adminUserInfo/certificatePhotoBackWatermark', [
{ {
uid: -1, uid: -1,
name: '文件', name: '文件',
status: 'done', status: 'done',
url: info?.certificatePhotoBackWatermark, url: info?.certificatePhotoBackWatermark,
response: info?.certificatePhotoBackWatermark response: info?.certificatePhotoBackWatermark
} }
]); ]);
this.sf.setValue('/adminUserInfo/certificateNumber', info?.certificateNumber); this.sf.setValue('/adminUserInfo/certificateNumber', info?.certificateNumber);
this.sf.setValue('/adminUserInfo/validStartTime', info?.validStartTime); this.sf.setValue('/adminUserInfo/validStartTime', info?.validStartTime);
this.sf.setValue('/adminUserInfo/validEndTime', info?.validEndTime ? info?.validEndTime: null); this.sf.setValue('/adminUserInfo/validEndTime', info?.validEndTime ? info?.validEndTime : null);
this.sf.setValue('/adminUserInfo/_isLoingDate', info?.validEndTime ? false: true); this.sf.setValue('/adminUserInfo/_isLoingDate', info?.validEndTime ? false : true);
} }
} }

View File

@ -1,13 +1,49 @@
<h2>转移客户数:{{changeST?.total}}</h2> <!--
<st #changeST [data]="service.$api_get_partner_change_list" [columns]="columns.changeColumn" * @Description :
[req]="{params:{id:id ,type:1}}" [loading]="service.http.loading" bordered size="small" * @Version : 1.0
[page]="{ show: false }" [scroll]="{ x: '750px' }"> * @Author : Shiming
* @Date : 2022-04-28 20:27:08
* @LastEditors : Shiming
* @LastEditTime : 2022-05-11 14:44:15
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-list\\components\\channel-log-modal\\channel-log-modal.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<div class="bbod">
<h2>转移客户数:{{ changeST?.list?.length }}</h2>
<st
#changeST
[data]="service.$api_get_partner_change_list"
[columns]="columns.changeColumn"
[req]="{ params: { id: id, type: 1 } }"
[res]="{ reName: { list: 'data' } }"
[loading]="service.http.loading"
bordered
size="small"
[page]="{ show: false }"
[scroll]="{ x: '750px' }"
>
<ng-template st-row="crmStatus" let-item let-index="index" let-column="column">
<div *ngIf="item.crmStatus == '0'">未发起</div>
<div *ngIf="item.crmStatus == '10'">待审核</div>
<div *ngIf="item.crmStatus == '20'">审核通过</div>
<div *ngIf="item.crmStatus == '30'">驳回</div>
</ng-template>
</st> </st>
<h2>不转移客户数:{{noChangeST?.total}}</h2> <h2>不转移客户数:{{ noChangeST?.list?.length }}</h2>
<st #noChangeST [data]="service.$api_get_partner_change_list" [columns]="columns.beChangeColumn" <st
[req]="{params:{id:id ,type:2}}" [res]="{reName: { list: 'data' }}" #noChangeST
[loading]="service.http.loading" bordered size="small" [page]="{ show: false }" [scroll]="{ x: '750px' }"> [data]="service.$api_get_partner_change_list"
[columns]="columns.beChangeColumn"
[req]="{ params: { id: id, type: 2 } }"
[res]="{ reName: { list: 'data' } }"
[loading]="service.http.loading"
bordered
size="small"
[page]="{ show: false }"
[scroll]="{ x: '750px' }"
>
</st> </st>
<p> <p>
客户转移客户跟着上级合伙人转移一并到新渠道销售下会同步发起CRM《客户转移》流程不转移的客户会与上级合伙人解绑修改成功后修改时间也是合伙人与客户的结算结束时间成为原来渠道销售的直客。 客户转移客户跟着上级合伙人转移一并到新渠道销售下会同步发起CRM《客户转移》流程不转移的客户会与上级合伙人解绑修改成功后修改时间也是合伙人与客户的结算结束时间成为原来渠道销售的直客。
</p> </p>
</div>

View File

@ -0,0 +1,10 @@
/* stylelint-disable-next-line CssSyntaxError */
:host {
::ng-deep {
.bbod{
height: 600px;
overflow-y: hidden;
}
}
}

View File

@ -1,32 +1,48 @@
import { Component, OnInit } from '@angular/core'; /*
import { STColumn } from '@delon/abc/st'; * @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-05-09 10:49:35
* @LastEditors : Shiming
* @LastEditTime : 2022-05-11 14:47:57
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-list\\components\\channel-log-modal\\channel-log-modal.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { STColumn, STComponent } from '@delon/abc/st';
import { PartnerListService } from '../../services/partner-list.service'; import { PartnerListService } from '../../services/partner-list.service';
@Component({ @Component({
selector: 'app-channel-log-modal', selector: 'app-channel-log-modal',
styleUrls: ['./channel-log-modal.component.less'],
templateUrl: './channel-log-modal.component.html' templateUrl: './channel-log-modal.component.html'
}) })
export class ChannelLogModalComponent implements OnInit { export class ChannelLogModalComponent implements OnInit {
@ViewChild('changeST', { static: true }) changeST!: STComponent;
@ViewChild('noChangeST', { static: true }) noChangeST!: STComponent;
columns: { changeColumn: STColumn[]; beChangeColumn: STColumn[] } = this.initST(); columns: { changeColumn: STColumn[]; beChangeColumn: STColumn[] } = this.initST();
id = ''; id = '';
constructor(public service: PartnerListService) {} constructor(public service: PartnerListService) {}
ngOnInit(): void {} ngOnInit(): void {
console.log(this.changeST);
}
private initST(): { changeColumn: STColumn[]; beChangeColumn: STColumn[] } { private initST(): { changeColumn: STColumn[]; beChangeColumn: STColumn[] } {
return { return {
changeColumn: [ changeColumn: [
{ title: '客户名称', index: 'payCode', width: 180 }, { title: '客户名称', index: 'enterpriseName', width: 180 },
{ title: '合伙人', index: 'ltdName', width: 160 }, { title: '合伙人', index: 'newPartnerName', width: 160 },
{ title: '渠道销售', index: 'payDate', className: 'text-center', width: 130 }, { title: '渠道销售', index: 'newChannelName', className: 'text-center', width: 130 },
{ title: 'CRM审核状态', index: 'payDate', width: 150 }, { title: 'CRM审核状态', render: 'crmStatus', width: 150 },
{ title: '生效时间', index: 'payDate', className: 'text-center', width: 130 } { title: '生效时间', index: 'effectiveTime', className: 'text-center', width: 130 }
], ],
beChangeColumn: [ beChangeColumn: [
{ title: '客户名称', index: 'payCode', width: 180 }, { title: '客户名称', index: 'enterpriseName', width: 180 },
{ title: '合伙人', index: 'ltdName', width: 160 }, { title: '合伙人', index: 'newPartnerName', width: 160 },
{ title: '渠道销售', index: 'payDate', className: 'text-center', width: 130 }, { title: '渠道销售', index: 'newChannelName', className: 'text-center', width: 130 },
{ title: '生效时间', index: 'payDate', className: 'text-center', width: 130 } { title: '生效时间', index: 'effectiveTime', className: 'text-center', width: 130 }
] ]
}; };
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-04-29 17:28:23 * @Date : 2022-04-29 17:28:23
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-09 11:33:34 * @LastEditTime : 2022-05-10 15:33:15
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-list\\components\\index\\partner-list.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-list\\components\\index\\partner-list.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -61,6 +61,14 @@
[scroll]="{ x: '1200px' }" [scroll]="{ x: '1200px' }"
[page]="{}" [page]="{}"
> >
<ng-template st-row="enterpriseName" let-item let-index="index">
<div>
{{item.partnerType ? item.enterpriseName || item.contactName : ''}}
</div>
<div *ngIf="item.partnerType == 1">
管理员: {{item.contactName }}
</div>
</ng-template>
</st> </st>
</nz-card> </nz-card>
@ -84,9 +92,18 @@
<se label="合伙人名称"> {{ selectItem?.enterpriseName || selectItem?.contactName }} </se> <se label="合伙人名称"> {{ selectItem?.enterpriseName || selectItem?.contactName }} </se>
<se label="当前渠道销售"> {{ selectItem?.channelIdLabel }} </se> <se label="当前渠道销售"> {{ selectItem?.channelIdLabel }} </se>
<se label="渠道销售修改为" required> <se label="渠道销售修改为" required>
<nz-select [(ngModel)]="cannelItem.channelId" style="width: 100%"> <nz-select
<nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of cannels"></nz-option> nzPlaceHolder="请搜索"
</nz-select> nzShowSearch
nzServerSearch
[(ngModel)]="cannelItem.channelId"
[nzShowArrow]="false"
(nzOnSearch)="onSearch($event)"
>
<ng-container *ngFor="let item of cannels">
<nz-option [nzValue]="item.value" [nzLabel]="item.label"></nz-option>
</ng-container>
</nz-select>
</se> </se>
<se label="备注" required> <se label="备注" required>
<textarea rows="3" nz-input [(ngModel)]="cannelItem.remark"></textarea> <textarea rows="3" nz-input [(ngModel)]="cannelItem.remark"></textarea>
@ -104,7 +121,6 @@
[req]="{ process: beforeReq, params: { effectiveStatus: 2, newPartnerId: selectItem.id } }" [req]="{ process: beforeReq, params: { effectiveStatus: 2, newPartnerId: selectItem.id } }"
[loading]="service.http.loading" [loading]="service.http.loading"
[page]="{ show: false }" [page]="{ show: false }"
(change)="stChange($event)" (change)="stChange($event)"
> >
</st> </st>

View File

@ -4,13 +4,12 @@ import { Router } from '@angular/router';
import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st'; import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st';
import { SFComponent, SFSchema, SFDateWidgetSchema, SFAutoCompleteWidgetSchema, SFSelectWidgetSchema } from '@delon/form'; import { SFComponent, SFSchema, SFDateWidgetSchema, SFAutoCompleteWidgetSchema, SFSelectWidgetSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal'; import { NzModalService } from 'ng-zorro-antd/modal';
import { of } from 'rxjs'; import { BehaviorSubject, Observable, of } from 'rxjs';
import { AddCollectionInvoiceModalComponent } from 'src/app/routes/ticket-management/components/input-invoice/add-collection-invoice-modal/add-collection-invoice-modal.component'; import { AddCollectionInvoiceModalComponent } from 'src/app/routes/ticket-management/components/input-invoice/add-collection-invoice-modal/add-collection-invoice-modal.component';
import { PartnerListService } from '../../services/partner-list.service'; import { PartnerListService } from '../../services/partner-list.service';
import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit-modal.component'; import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit-modal.component';
import { map } from 'rxjs/operators'; import { catchError, debounceTime, map, switchMap } from 'rxjs/operators';
@Component({ @Component({
selector: 'app-partner-list', selector: 'app-partner-list',
templateUrl: './partner-list.component.html', templateUrl: './partner-list.component.html',
@ -24,7 +23,7 @@ export class PartnerListComponent {
columns: STColumn[] = this.initST(); columns: STColumn[] = this.initST();
searchSchema: SFSchema = this.initSF(); searchSchema: SFSchema = this.initSF();
_$expand = false; _$expand = false;
isLoading: boolean = false;
@ViewChild('editTemplate', { static: true }) @ViewChild('editTemplate', { static: true })
editTemplate: any; editTemplate: any;
templateId: any; templateId: any;
@ -36,13 +35,14 @@ export class PartnerListComponent {
cannels: any[] = []; cannels: any[] = [];
selectedRows: any[] = []; selectedRows: any[] = [];
cannelItem: any = { channelId: null, effectiveNode: 1, enterpriseIdList: [], remark: '' }; cannelItem: any = { channelId: null, effectiveNode: 1, enterpriseIdList: [], remark: '' };
searchChange$ = new BehaviorSubject('');
selectItem: any = {}; selectItem: any = {};
constructor(public service: PartnerListService, private nzModalService: NzModalService, private router: Router) { constructor(public service: PartnerListService, private nzModalService: NzModalService, private router: Router) {
this.loadSelectOptions(); this.loadSelectOptions();
} }
ngOnInit(): void {
}
beforeReq = (requestOptions: STRequestOptions) => { beforeReq = (requestOptions: STRequestOptions) => {
if (this.sf) { if (this.sf) {
let params = { ...this.sf?.value }; let params = { ...this.sf?.value };
@ -55,18 +55,13 @@ export class PartnerListComponent {
}; };
loadSelectOptions() { loadSelectOptions() {
this.service.getRebateConfig({stateLocked: 1}).subscribe(res => { this.service.getRebateConfig({ stateLocked: 1 }).subscribe(res => {
if (res) { if (res) {
console.log(res); console.log(res);
this.customers = res; this.customers = res;
} }
}); });
this.service.getChannel().subscribe(res => {
if (res) {
this.cannels = res;
}
});
} }
auditPartner(item: any) { auditPartner(item: any) {
@ -236,10 +231,6 @@ export class PartnerListComponent {
type: 'string', type: 'string',
title: '合伙人名称' title: '合伙人名称'
}, },
contactName: {
type: 'string',
title: '企业管理员'
},
contactMobile: { contactMobile: {
type: 'string', type: 'string',
title: '手机号' title: '手机号'
@ -252,9 +243,6 @@ export class PartnerListComponent {
searchDebounceTime: 300, searchDebounceTime: 300,
searchLoadingText: '搜索中...', searchLoadingText: '搜索中...',
allowClear: true, allowClear: true,
visibleIf: {
expand: (value: boolean) => value
},
onSearch: (q: any) => { onSearch: (q: any) => {
let str = q.replace(/^\s+|\s+$/g, ''); let str = q.replace(/^\s+|\s+$/g, '');
if (str) { if (str) {
@ -326,7 +314,7 @@ export class PartnerListComponent {
{ value: '', label: '全部' }, { value: '', label: '全部' },
{ value: '0', label: '未同步' }, { value: '0', label: '未同步' },
{ value: 10, label: '同步失败' }, { value: 10, label: '同步失败' },
{ value: 20, label: '同步成功' }, { value: 20, label: '同步成功' }
], ],
ui: { ui: {
widget: 'select', widget: 'select',
@ -360,21 +348,21 @@ export class PartnerListComponent {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
asyncData: () => asyncData: () =>
this.service.request(this.service.$api_get_rebate_config, {}, 'POST').pipe( this.service.request(this.service.$api_get_rebate_config, {}, 'POST').pipe(
map(data => { map(data => {
if(data) { if (data) {
return data.map((m: any) => { return data.map((m: any) => {
return { label: m.configName, value: m.id }; return { label: m.configName, value: m.id };
}); });
} else { } else {
return []; return [];
}
} })
}) ),
),
visibleIf: { visibleIf: {
expand: (value: boolean) => value expand: (value: boolean) => value
} } as SFDateWidgetSchema }
} as SFDateWidgetSchema
}, },
lockedStatus: { lockedStatus: {
type: 'string', type: 'string',
@ -412,13 +400,11 @@ export class PartnerListComponent {
return [ return [
{ {
title: '合伙人名称', title: '合伙人名称',
index: 'enterpriseName', render: 'enterpriseName',
width: 180, width: 180
format: item => (item.partnerType ? `${item.enterpriseName || item.contactName}` : '')
}, },
{ title: '付款编码', index: 'payCode', width: 160 }, { title: '付款编码', index: 'payCode', width: 160 },
{ title: '邀请码', index: 'invitationCode', className: 'text-center', width: 130 }, { title: '邀请码', index: 'invitationCode', className: 'text-center', width: 130 },
{ title: '企业管理员', index: 'contactName', width: 150, format: item => (item.partnerType ? `${item.contactName}` : '') },
{ title: '手机号', index: 'contactMobile', className: 'text-center', width: 150 }, { title: '手机号', index: 'contactMobile', className: 'text-center', width: 150 },
{ title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } }, { title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } },
{ title: '注册渠道', index: 'source', type: 'enum', enum: { 1: '合伙人注册', 2: '平台添加' }, width: 130 }, { title: '注册渠道', index: 'source', type: 'enum', enum: { 1: '合伙人注册', 2: '平台添加' }, width: 130 },
@ -518,4 +504,34 @@ export class PartnerListComponent {
} }
]; ];
} }
onSearch(value: string): void {
this.isLoading = true;
let params: any = {};
if (value) {
console.log(+value);
// 数字
if (+value) {
params.phoneNumber = value;
} else {
// 中文
params.name = value;
}
this.service.request(this.service.$api_get_channel, params).subscribe(res => {
let NewList: { label: string; value: any; }[] = [];
let List = res.filter((i: any) => {
NewList.push({ label: `${i.name}/${i.telephone}`, value: i.id }) ;
});
this.cannels = NewList
});
this.searchChange$.next(value);
} else if(value === '') {
this.service.request(this.service.$api_get_channel, {name: '清空数X'}).subscribe(res => {
let NewList: { label: string; value: any; }[] = [];
let List = res.filter((i: any) => {
NewList.push({ label: `${i.name}/${i.telephone}`, value: i.id }) ;
});
this.cannels = NewList
});
}
}
} }

View File

@ -28,22 +28,17 @@ export class PartnerAuditModalComponent implements OnInit {
if(this.info.channelId) { if(this.info.channelId) {
const value = [{ const value = [{
label: this.info.channelIdLabel, label: this.info.channelIdLabel,
value: this.info.channelId, value: this.info.channelSaleslId,
}] }]
setTimeout(() => { setTimeout(() => {
if(this.sf) { if(this.sf) {
this.sf.getProperty('/channelId')!.schema.enum = value; this.sf.getProperty('/channelId')!.schema.enum = value;
this.sf.getProperty('/channelId')!.widget.reset(value); this.sf.getProperty('/channelId')!.widget.reset(value);
this.sf.setValue('/channelId', this.info.channelId); this.sf.setValue('/channelId', this.info.channelSaleslId);
} }
}) })
} else { } else {
console.log()
this.service.getChannel().pipe(map(data => {
console.log(data);
}))
this.service.getChannel().subscribe((res) => { this.service.getChannel().subscribe((res) => {
console.log(res); console.log(res);
const value :any= res; const value :any= res;

View File

@ -28,9 +28,7 @@
</div> </div>
<div nz-row> <div nz-row>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 注册时间:{{ detailData?.createTime }} </div> <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 注册时间:{{ detailData?.createTime }} </div>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 所属城市:{{ enterpriseDefaultCityName }} </div>
所属城市:{{enterpriseDefaultCityName}}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -45,14 +43,32 @@
<button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(false)"> 驳回 </button> <button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(false)"> 驳回 </button>
</ng-container> </ng-container>
<ng-container *ngIf="detailData?.approvalStatus != 10"> <ng-container *ngIf="detailData?.approvalStatus != 10">
<button [disabled]="service.http.loading" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="enable" <button
(nzOnConfirm)="freezeOrResume(0)" nzPopconfirmPlacement="bottomRight" *ngIf="detailData?.lockedStatus" [disabled]="service.http.loading"
acl [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"> nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="enable"
(nzOnConfirm)="freezeOrResume(0)"
nzPopconfirmPlacement="bottomRight"
*ngIf="detailData?.lockedStatus"
acl
[acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"
>
启用 启用
</button> </button>
<button [disabled]="service.http.loading" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="frozen" <button
(nzOnConfirm)="freezeOrResume(1)" nzPopconfirmPlacement="bottomRight" *ngIf="!detailData?.lockedStatus" [disabled]="service.http.loading"
acl [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"> nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="frozen"
(nzOnConfirm)="freezeOrResume(1)"
nzPopconfirmPlacement="bottomRight"
*ngIf="!detailData?.lockedStatus"
acl
[acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"
>
冻结 冻结
</button> </button>
</ng-container> </ng-container>
@ -64,17 +80,24 @@
</ng-template> </ng-template>
<ng-template #frozen> <ng-template #frozen>
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
PopconfirmTempalte; PopconfirmTempalte;
context: { title: '确定冻结该合伙人吗?', content: '停用后,该合伙人将被限制使用,不限于访问受限、邀请客户、佣金收益等,请谨慎操作' } context: {
"> title: '确定冻结该合伙人吗?',
content: '停用后,该合伙人将被限制使用,不限于访问受限、邀请客户、佣金收益等,请谨慎操作'
}
"
>
</ng-container> </ng-container>
</ng-template> </ng-template>
<ng-template #enable> <ng-template #enable>
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
PopconfirmTempalte; PopconfirmTempalte;
context: { title: '确定启用该合伙人吗?', content: '启用后,该该合伙人将恢复正常使用功能,请再次确认' } context: { title: '确定启用该合伙人吗?', content: '启用后,该该合伙人将恢复正常使用功能,请再次确认' }
"> "
>
</ng-container> </ng-container>
</ng-template> </ng-template>
</page-header-wrapper> </page-header-wrapper>
@ -83,21 +106,34 @@
<sv-container col="3"> <sv-container col="3">
<sv-title>企业管理员信息</sv-title> <sv-title>企业管理员信息</sv-title>
<sv label="姓名"> <sv label="姓名">
<input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.name" [readonly]="!isEdit" <input
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> nz-input
type="text"
[(ngModel)]="detailData.adminUserInfo.name"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv> </sv>
<sv label="手机号"> <sv label="手机号">
<!-- <input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.mobile" [readonly]="!isEdit" <!-- <input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.mobile" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> --> [nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> -->
{{detailData.adminUserInfo.mobile}} {{ detailData.adminUserInfo.mobile }}
</sv> </sv>
<sv label="身份证号"> <sv label="身份证号">
<input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.certificateNumber" [readonly]="!isEdit" <input
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> nz-input
type="text"
[(ngModel)]="detailData.adminUserInfo.certificateNumber"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv> </sv>
<sv label="身份证照" col="2"> <sv label="身份证照" col="2">
<div class="d-flex"> <div class="d-flex">
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
uploadTemplate; uploadTemplate;
context: { context: {
data: detailData?.adminUserInfo, data: detailData?.adminUserInfo,
@ -106,9 +142,11 @@
key2: 'certificatePhotoFront', key2: 'certificatePhotoFront',
hover: 'certificateBackFront' hover: 'certificateBackFront'
} }
"> "
>
</ng-container> </ng-container>
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
uploadTemplate; uploadTemplate;
context: { context: {
data: detailData?.adminUserInfo, data: detailData?.adminUserInfo,
@ -117,25 +155,44 @@
key2: 'certificatePhotoBack', key2: 'certificatePhotoBack',
hover: 'certificateBack' hover: 'certificateBack'
} }
"> "
>
</ng-container> </ng-container>
</div> </div>
</sv> </sv>
<sv label="身份证有效期" col="1"> <sv label="身份证有效期" col="1">
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validStartTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " <nz-date-picker
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar"> [(ngModel)]="detailData.adminUserInfo.validStartTime"
[nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 140px"
class="calendar"
>
</nz-date-picker> </nz-date-picker>
- -
<ng-container <ng-container *ngIf="!isEdit && !detailData?.adminUserInfo.validEndTime && detailData?.adminUserInfo.validStartTime">
*ngIf="!isEdit && !detailData?.adminUserInfo.validEndTime && detailData?.adminUserInfo.validStartTime">
<label style="padding-left: 11px">长期</label> <label style="padding-left: 11px">长期</label>
</ng-container> </ng-container>
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " <nz-date-picker
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar"> [(ngModel)]="detailData.adminUserInfo.validEndTime"
[nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 140px"
class="calendar"
>
</nz-date-picker> </nz-date-picker>
<ng-container *ngIf="isEdit"> <ng-container *ngIf="isEdit">
<label nz-checkbox [ngModel]="!!!detailData.adminUserInfo.validEndTime" <label
(ngModelChange)="$event ? (detailData.adminUserInfo.validEndTime = '') : ''" class="ml-sm">长期</label> nz-checkbox
[ngModel]="!!!detailData.adminUserInfo.validEndTime"
(ngModelChange)="$event ? (detailData.adminUserInfo.validEndTime = '') : ''"
class="ml-sm"
>长期</label
>
</ng-container> </ng-container>
</sv> </sv>
</sv-container> </sv-container>
@ -144,60 +201,81 @@
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title> <sv-title>
<label class="mr-md">企业基本信息</label> <label class="mr-md">企业基本信息</label>
<label *ngIf="detailData?.approvalStatus === 10" style="color: #1890ff"><i nz-icon nzType="info-circle" <label *ngIf="detailData?.approvalStatus === 10" style="color: #1890ff"
nzTheme="fill" class="mr-xs"></i>待审核 ><i nz-icon nzType="info-circle" nzTheme="fill" class="mr-xs"></i>待审核
</label> </label>
<label *ngIf="detailData?.approvalStatus === 20" style="color: #52c41a"><i nz-icon nzType="check-circle" <label *ngIf="detailData?.approvalStatus === 20" style="color: #52c41a"
nzTheme="fill" class="mr-xs"></i>审核通过 ><i nz-icon nzType="check-circle" nzTheme="fill" class="mr-xs"></i>审核通过
</label> </label>
<label *ngIf="detailData?.approvalStatus === 30" style="color: #ff4d4f"><i nz-icon nzType="close-circle" <label *ngIf="detailData?.approvalStatus === 30" style="color: #ff4d4f"
nzTheme="fill" class="mr-xs"></i>驳回&nbsp;驳回原因:{{ detailData?.approvalOpinion }} ><i nz-icon nzType="close-circle" nzTheme="fill" class="mr-xs"></i>驳回&nbsp;驳回原因:{{ detailData?.approvalOpinion }}
</label> </label>
<p style="margin-bottom: 0"> <p style="margin-bottom: 0">
四要素验证: 四要素验证:
<label *ngIf="detailData?.esignCheckStatus === 0" style="color: #ff4d4f"><i nz-icon nzType="info-circle" <label *ngIf="detailData?.esignCheckStatus === 0" style="color: #ff4d4f"
nzTheme="fill" class="mr-xs"></i>不通过&nbsp;&nbsp;驳回原因:{{ detailData?.esignCheckMsg }} ><i nz-icon nzType="info-circle" nzTheme="fill" class="mr-xs"></i>不通过&nbsp;&nbsp;驳回原因:{{ detailData?.esignCheckMsg }}
</label> </label>
<label *ngIf="detailData?.esignCheckStatus === 1" style="color: #52c41a"><i nz-icon nzType="check-circle" <label *ngIf="detailData?.esignCheckStatus === 1" style="color: #52c41a"
nzTheme="fill" class="mr-xs"></i>通过 ><i nz-icon nzType="check-circle" nzTheme="fill" class="mr-xs"></i>通过
</label> </label>
<label *ngIf="detailData?.esignCheckStatus === 2" style="color: #1890ff"><i nz-icon nzType="close-circle" <label *ngIf="detailData?.esignCheckStatus === 2" style="color: #1890ff"
nzTheme="fill" class="mr-xs"></i>未认证:&nbsp;&nbsp;{{detailData?.esignCheckMsg}} ><i nz-icon nzType="close-circle" nzTheme="fill" class="mr-xs"></i>未认证:&nbsp;&nbsp;{{ detailData?.esignCheckMsg }}
</label> </label>
</p> </p>
</sv-title> </sv-title>
<sv label="公司名称"> <sv label="公司名称">
<!-- <input nz-input type="text" [(ngModel)]="" [readonly]="!isEdit" [nzBorderless]="!isEdit" <!-- <input nz-input type="text" [(ngModel)]="" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'" /> --> [placeholder]="isEdit ? '' : '-'" /> -->
{{detailData.enterpriseName}} {{ detailData.enterpriseName }}
</sv> </sv>
<sv label="统一社会信用代码"> <sv label="统一社会信用代码">
<!-- <input nz-input type="text" [(ngModel)]="detailData.unifiedSocialCreditCode" [readonly]="!isEdit" <!-- <input nz-input type="text" [(ngModel)]="detailData.unifiedSocialCreditCode" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> --> [nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> -->
{{detailData.unifiedSocialCreditCode}} {{ detailData.unifiedSocialCreditCode }}
</sv> </sv>
<sv label="营业执照" col="2"> <sv label="营业执照" col="2">
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
uploadTemplate; uploadTemplate;
context: { data: detailData, status: isEdit, key: 'licensePhotoWatermark', key2: 'licensePhoto', hover: 'detailPhoto' } context: { data: detailData, status: isEdit, key: 'licensePhotoWatermark', key2: 'licensePhoto', hover: 'detailPhoto' }
"> "
>
</ng-container> </ng-container>
</sv> </sv>
<sv label="营业期限" col="1"> <sv label="营业期限" col="1">
<nz-date-picker [(ngModel)]="detailData.operatingStartTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " <nz-date-picker
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px" class="calendar"> [(ngModel)]="detailData.operatingStartTime"
[nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 100px"
class="calendar"
>
</nz-date-picker> </nz-date-picker>
- -
<ng-container *ngIf="!isEdit && !detailData?.operatingEndTime && detailData?.operatingStartTime"> <ng-container *ngIf="!isEdit && !detailData?.operatingEndTime && detailData?.operatingStartTime">
<label style="padding-left: 11px">长期</label> <label style="padding-left: 11px">长期</label>
</ng-container> </ng-container>
<nz-date-picker [(ngModel)]="detailData.operatingEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " <nz-date-picker
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px" class="calendar"> [(ngModel)]="detailData.operatingEndTime"
[nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 100px"
class="calendar"
>
</nz-date-picker> </nz-date-picker>
<ng-container *ngIf="isEdit"> <ng-container *ngIf="isEdit">
<label nz-checkbox [ngModel]="!!!detailData.operatingEndTime" <label
(ngModelChange)="$event ? (detailData.operatingEndTime = '') : ''" class="ml-sm">长期</label> nz-checkbox
[ngModel]="!!!detailData.operatingEndTime"
(ngModelChange)="$event ? (detailData.operatingEndTime = '') : ''"
class="ml-sm"
>长期</label
>
</ng-container> </ng-container>
</sv> </sv>
</sv-container> </sv-container>
@ -205,33 +283,63 @@
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title>企业法人信息</sv-title> <sv-title>企业法人信息</sv-title>
<sv label="法定代表人"> <sv label="法定代表人">
<input nz-input type="text" [(ngModel)]="detailData.legalPersonIdentity.name" [readonly]="!isEdit" <input
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> nz-input
type="text"
[(ngModel)]="detailData.legalPersonIdentity.name"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv> </sv>
<sv label="身份证号码"> <sv label="身份证号码">
<input nz-input type="text" [(ngModel)]="detailData.legalPersonIdentity.certificateNumber" [readonly]="!isEdit" <input
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> nz-input
type="text"
[(ngModel)]="detailData.legalPersonIdentity.certificateNumber"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv> </sv>
<sv label="身份证有效期" col="1"> <sv label="身份证有效期" col="1">
<nz-date-picker [(ngModel)]="detailData.legalPersonIdentity.validStartTime" [nzDisabled]="!isEdit" <nz-date-picker
nzPlaceHolder=" " [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" [(ngModel)]="detailData.legalPersonIdentity.validStartTime"
class="calendar"></nz-date-picker> [nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 140px"
class="calendar"
></nz-date-picker>
- -
<ng-container <ng-container *ngIf="!isEdit && !detailData?.legalPersonIdentity?.validEndTime && detailData.legalPersonIdentity.validStartTime">
*ngIf="!isEdit && !detailData?.legalPersonIdentity?.validEndTime && detailData.legalPersonIdentity.validStartTime">
<label style="padding-left: 11px">长期</label> <label style="padding-left: 11px">长期</label>
</ng-container> </ng-container>
<nz-date-picker [(ngModel)]="detailData.legalPersonIdentity.validEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " <nz-date-picker
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar"> [(ngModel)]="detailData.legalPersonIdentity.validEndTime"
[nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 140px"
class="calendar"
>
</nz-date-picker> </nz-date-picker>
<ng-container *ngIf="isEdit"> <ng-container *ngIf="isEdit">
<label nz-checkbox [ngModel]="!!!detailData.legalPersonIdentity.validEndTime" <label
(ngModelChange)="$event ? (detailData.legalPersonIdentity.validEndTime = '') : ''" class="ml-sm">长期</label> nz-checkbox
[ngModel]="!!!detailData.legalPersonIdentity.validEndTime"
(ngModelChange)="$event ? (detailData.legalPersonIdentity.validEndTime = '') : ''"
class="ml-sm"
>长期</label
>
</ng-container> </ng-container>
</sv> </sv>
<sv label="身份证照" col="1"> <sv label="身份证照" col="1">
<div class="d-flex"> <div class="d-flex">
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
uploadTemplate; uploadTemplate;
context: { context: {
data: detailData?.legalPersonIdentity, data: detailData?.legalPersonIdentity,
@ -240,9 +348,11 @@
key2: 'certificatePhotoFront', key2: 'certificatePhotoFront',
hover: 'legalFront' hover: 'legalFront'
} }
"> "
>
</ng-container> </ng-container>
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
uploadTemplate; uploadTemplate;
context: { context: {
data: detailData?.legalPersonIdentity, data: detailData?.legalPersonIdentity,
@ -251,16 +361,26 @@
key2: 'certificatePhotoBack', key2: 'certificatePhotoBack',
hover: 'legalBack' hover: 'legalBack'
} }
"> "
>
</ng-container> </ng-container>
</div> </div>
</sv> </sv>
<sv label="所属城市"> <sv label="所属城市">
<ng-container *ngIf="isEdit; else cascaderelseTemplate"> <ng-container *ngIf="isEdit; else cascaderelseTemplate">
<nz-tree-select #areaTreeSelect style="width: 350px" [(ngModel)]="enterpriseAddressCode" <nz-tree-select
[nzDropdownStyle]="{ 'max-height': '300px' }" [nzExpandedKeys]="enterpriseDefaultAddressCode" #areaTreeSelect
[nzNodes]="areaList" [nzAsyncData]="true" [nzCheckStrictly]="true" nzCheckable style="width: 350px"
(nzExpandChange)="onExpandChange($event.node)" nzDropdownClassName="area-tree-select"> [(ngModel)]="enterpriseAddressCode"
[nzDropdownStyle]="{ 'max-height': '300px' }"
[nzExpandedKeys]="enterpriseDefaultAddressCode"
[nzNodes]="areaList"
[nzAsyncData]="true"
[nzCheckStrictly]="true"
nzCheckable
(nzExpandChange)="onExpandChange($event.node)"
nzDropdownClassName="area-tree-select"
>
</nz-tree-select> </nz-tree-select>
</ng-container> </ng-container>
<ng-template #cascaderelseTemplate> <ng-template #cascaderelseTemplate>
@ -280,20 +400,25 @@
<nz-card> <nz-card>
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title>修改渠道销售记录</sv-title> <sv-title>修改渠道销售记录</sv-title>
<sv label="">
<st #st [data]="service.$api_get_personal_channel_list" [columns]="columns"
[req]="{params:{partnerId:route.snapshot.params.id}}" [loading]="service.http.loading" bordered size="small"
[page]="{ show: false }" [scroll]="{ x: '1200px' }">
</st>
</sv>
</sv-container> </sv-container>
<st
#st
[data]="service.$api_get_personal_channel_list"
[columns]="columns"
[req]="{ params: { partnerId: route.snapshot.params.id } }"
[loading]="service.http.loading"
bordered
size="small"
[page]="{ show: false }"
[scroll]="{ x: '1200px' }"
>
</st>
</nz-card> </nz-card>
<ng-template #PopconfirmTempalte let-title="title" let-content="content"> <ng-template #PopconfirmTempalte let-title="title" let-content="content">
<div class="ant-popover-message"> <div class="ant-popover-message">
<i nz-icon nzType="info-circle" nzTheme="fill"></i> <i nz-icon nzType="info-circle" nzTheme="fill"></i>
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">{{ title }} <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">{{ title }} </div>
</div>
<div class="ant-popover-message-title ng-star-inserted"> <div class="ant-popover-message-title ng-star-inserted">
{{ content }} {{ content }}
</div> </div>
@ -301,18 +426,36 @@
</ng-template> </ng-template>
<ng-template #uploadTemplate let-data="data" let-status="status" let-key="key" let-key2="key2" let-hover="hover"> <ng-template #uploadTemplate let-data="data" let-status="status" let-key="key" let-key2="key2" let-hover="hover">
<nz-upload class="avatar-uploader" [nzAction]="uploadURl" nzName="multipartFile" nzListType="picture-card" <nz-upload
[nzShowUploadList]="false" nzFileType="image/png,image/jpeg,image/jpg,image/gif" class="avatar-uploader"
[nzDisabled]="!isEdit || disabledUpload" (nzChange)="changeUpload($event, data, key, key2, hover)"> [nzAction]="uploadURl"
nzName="multipartFile"
nzListType="picture-card"
[nzShowUploadList]="false"
nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload"
(nzChange)="changeUpload($event, data, key, key2, hover)"
>
<ng-container *ngIf="!data[key] && isEdit"> <ng-container *ngIf="!data[key] && isEdit">
<i class="upload-icon" nz-icon [nzType]="service.http.loading ? 'loading' : 'plus'"></i> <i class="upload-icon" nz-icon [nzType]="service.http.loading ? 'loading' : 'plus'"></i>
<div class="ant-upload-text">上传</div> <div class="ant-upload-text">上传</div>
</ng-container> </ng-container>
<div *ngIf="data[key]" (mouseover)="detailData[hover] = true" (mouseleave)="detailData[hover] = false" <div
(click)="$event.cancelBubble = true" class="image-hover"> *ngIf="data[key]"
(mouseover)="detailData[hover] = true"
(mouseleave)="detailData[hover] = false"
(click)="$event.cancelBubble = true"
class="image-hover"
>
<img nz-image [nzSrc]="data[key]" style="width: 200px; height: 160px" /> <img nz-image [nzSrc]="data[key]" style="width: 200px; height: 160px" />
<i nz-icon *ngIf="detailData[hover] && isEdit" nzType="close-circle" nzTheme="fill" class="delete-icon" <i
(click)="deleteImg(data, key, key2)"></i> nz-icon
*ngIf="detailData[hover] && isEdit"
nzType="close-circle"
nzTheme="fill"
class="delete-icon"
(click)="deleteImg(data, key, key2)"
></i>
</div> </div>
</nz-upload> </nz-upload>
</ng-template> </ng-template>

View File

@ -9,7 +9,7 @@
<nz-skeleton [nzLoading]="service.http.loading"> <nz-skeleton [nzLoading]="service.http.loading">
<div class="user-info" nz-row> <div class="user-info" nz-row>
<div nz-col [nzXl]="18" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="d-flex"> <div nz-col [nzXl]="18" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="d-flex">
<img [src]="detailData?.enterpriseLogo" /> <img [src]="detailData?.avatar" />
<div style="flex: 1"> <div style="flex: 1">
<div nz-row> <div nz-row>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24">
@ -21,16 +21,14 @@
</div> </div>
</div> </div>
<div nz-row> <div nz-row>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> <!-- <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24">
<p>{{ detailData?.adminUserInfo?.certificateNumber }}</p> <p>{{ detailData?.adminUserInfo?.certificateNumber }}</p>
</div> </div> -->
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 个人合伙人 </div> <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 个人合伙人 </div>
</div> </div>
<div nz-row> <div nz-row>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 注册时间:{{ detailData?.createTime }} </div> <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 注册时间:{{ detailData?.createTime }} </div>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> <div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24"> 所属城市:{{ enterpriseDefaultCityName }} </div>
所属城市:{{enterpriseDefaultCityName}}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -40,19 +38,33 @@
<button [disabled]="service.http.loading" nz-button nzDanger (click)="save()"> 保存 </button> <button [disabled]="service.http.loading" nz-button nzDanger (click)="save()"> 保存 </button>
</ng-container> </ng-container>
<ng-template #editButton> <ng-template #editButton>
<ng-container *ngIf="detailData?.approvalStatus === 10">
<button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(true)"> 通过 </button>
<button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(false)"> 驳回 </button>
</ng-container>
<ng-container *ngIf="detailData?.approvalStatus != 10"> <ng-container *ngIf="detailData?.approvalStatus != 10">
<button [disabled]="service.http.loading" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="enable" <button
(nzOnConfirm)="freezeOrResume(0)" nzPopconfirmPlacement="bottomRight" *ngIf="detailData?.lockedStatus" [disabled]="service.http.loading"
acl [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"> nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="enable"
(nzOnConfirm)="freezeOrResume(0)"
nzPopconfirmPlacement="bottomRight"
*ngIf="detailData?.lockedStatus"
acl
[acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"
>
启用 启用
</button> </button>
<button [disabled]="service.http.loading" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="frozen" <button
(nzOnConfirm)="freezeOrResume(1)" nzPopconfirmPlacement="bottomRight" *ngIf="!detailData?.lockedStatus" [disabled]="service.http.loading"
acl [acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"> nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="frozen"
(nzOnConfirm)="freezeOrResume(1)"
nzPopconfirmPlacement="bottomRight"
*ngIf="!detailData?.lockedStatus"
acl
[acl-ability]="['USERCENTER-FREIGHT-ENTERPRISE-D-lock']"
>
冻结 冻结
</button> </button>
</ng-container> </ng-container>
@ -64,57 +76,116 @@
</ng-template> </ng-template>
<ng-template #frozen> <ng-template #frozen>
<ng-container *ngTemplateOutlet=" <ng-container
PopconfirmTempalte; *ngTemplateOutlet="
context: { title: '确定冻结该合伙人吗?', content: '停用后,该合伙人将被限制使用,不限于访问受限、邀请客户、佣金收益等,请谨慎操作' } PopconfirmTempalte;
"> context: {
title: '确定冻结该合伙人吗?',
content: '停用后,该合伙人将被限制使用,不限于访问受限、邀请客户、佣金收益等,请谨慎操作'
}
"
>
</ng-container> </ng-container>
</ng-template> </ng-template>
<ng-template #enable> <ng-template #enable>
<ng-container *ngTemplateOutlet=" <ng-container
PopconfirmTempalte; *ngTemplateOutlet="
context: { title: '确定启用该合伙人吗?', content: '启用后,该该合伙人将恢复正常使用功能,请再次确认' } PopconfirmTempalte;
"> context: { title: '确定启用该合伙人吗?', content: '启用后,该该合伙人将恢复正常使用功能,请再次确认' }
"
>
</ng-container> </ng-container>
</ng-template> </ng-template>
</page-header-wrapper> </page-header-wrapper>
<nz-card [class]="isEdit ? 'edit-box' : 'readOnly-box'"> <nz-card [class]="isEdit ? 'edit-box' : 'readOnly-box'">
<div class="font-weight-blod text-md detail-title" style="justify-content: space-between;">
<div style="display: flex; justify-content: center;align-items: center;">
<a class="sign"></a>
<p style="margin-bottom: 0">
合伙人信息
<label *ngIf="!detailData?.adminUserInfo?.isExpired" style="color: #ff4d4f"><i nz-icon nzType="info-circle"
nzTheme="fill" class="mr-xs"></i>{{detailData?.adminUserInfo?.esignCheckMsg}}
</label>
<label *ngIf="detailData?.adminUserInfo?.isExpired" style="color: #52c41a"><i nz-icon nzType="check-circle"
nzTheme="fill" class="mr-xs"></i>验证通过
</label>
</p>
</div>
<div>
<ng-container *ngIf="detailData?.approvalStatus === 10">
<button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(true)"> 通过 </button>
<button [disabled]="service.http.loading" nz-button nzDanger (click)="auditPartner(false)"> 驳回 </button>
</ng-container>
</div>
</div>
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title>合伙人信息</sv-title> <!-- <sv-title>合伙人信息</sv-title> -->
<sv label="姓名"> <sv label="姓名">
<input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.name" [readonly]="!isEdit" <input
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> nz-input
type="text"
[(ngModel)]="detailData.adminUserInfo.name"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv> </sv>
<sv label="手机号"> <sv label="手机号">
<!-- <input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.certificateNumber" [readonly]="!isEdit" <!-- <input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.certificateNumber" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> --> [nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> -->
{{detailData.adminUserInfo.mobile}} {{ detailData.adminUserInfo.mobile }}
</sv> </sv>
<sv label="身份证号"> <sv label="身份证号">
<input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.certificateNumber" [readonly]="!isEdit" <input
[nzBorderless]="!isEdit" [placeholder]="isEdit ? '' : '-'" /> nz-input
type="text"
[(ngModel)]="detailData.adminUserInfo.certificateNumber"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv> </sv>
<sv label="身份证有效期" col="1"> <sv label="身份证有效期" col="1">
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validStartTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " <nz-date-picker
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar"> [(ngModel)]="detailData.adminUserInfo.validStartTime"
[nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 140px"
class="calendar"
>
</nz-date-picker> </nz-date-picker>
- -
<ng-container <ng-container *ngIf="!isEdit && !detailData?.adminUserInfo?.validEndTime && detailData.adminUserInfo.validStartTime">
*ngIf="!isEdit && !detailData?.adminUserInfo?.validEndTime && detailData.adminUserInfo.validStartTime">
<label style="padding-left: 11px">长期</label> <label style="padding-left: 11px">长期</label>
</ng-container> </ng-container>
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" " <nz-date-picker
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar"> [(ngModel)]="detailData.adminUserInfo.validEndTime"
[nzDisabled]="!isEdit"
nzPlaceHolder=" "
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
style="width: 140px"
class="calendar"
>
</nz-date-picker> </nz-date-picker>
<ng-container *ngIf="isEdit"> <ng-container *ngIf="isEdit">
<label nz-checkbox [ngModel]="!!!detailData.adminUserInfo.validEndTime" <label
(ngModelChange)="$event ? (detailData.adminUserInfo.validEndTime = '') : ''" class="ml-sm">长期</label> nz-checkbox
[ngModel]="!!!detailData.adminUserInfo.validEndTime"
(ngModelChange)="$event ? (detailData.adminUserInfo.validEndTime = '') : ''"
class="ml-sm"
>长期</label
>
</ng-container> </ng-container>
</sv> </sv>
<sv label="身份证照" col="1"> <sv label="身份证照" col="1">
<div class="d-flex"> <div class="d-flex">
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
uploadTemplate; uploadTemplate;
context: { context: {
data: detailData?.adminUserInfo, data: detailData?.adminUserInfo,
@ -123,9 +194,11 @@
key2: 'certificatePhotoFront', key2: 'certificatePhotoFront',
hover: 'legalFront' hover: 'legalFront'
} }
"> "
>
</ng-container> </ng-container>
<ng-container *ngTemplateOutlet=" <ng-container
*ngTemplateOutlet="
uploadTemplate; uploadTemplate;
context: { context: {
data: detailData?.adminUserInfo, data: detailData?.adminUserInfo,
@ -134,16 +207,26 @@
key2: 'certificatePhotoBack', key2: 'certificatePhotoBack',
hover: 'legalBack' hover: 'legalBack'
} }
"> "
>
</ng-container> </ng-container>
</div> </div>
</sv> </sv>
<sv label="所属城市"> <sv label="所属城市">
<ng-container *ngIf="isEdit; else cascaderelseTemplate"> <ng-container *ngIf="isEdit; else cascaderelseTemplate">
<nz-tree-select #areaTreeSelect style="width: 350px" [(ngModel)]="enterpriseAddressCode" <nz-tree-select
[nzDropdownStyle]="{ 'max-height': '300px' }" [nzExpandedKeys]="enterpriseDefaultAddressCode" #areaTreeSelect
[nzNodes]="areaList" [nzAsyncData]="true" [nzCheckStrictly]="true" nzCheckable style="width: 350px"
(nzExpandChange)="onExpandChange($event.node)" nzDropdownClassName="area-tree-select"> [(ngModel)]="enterpriseAddressCode"
[nzDropdownStyle]="{ 'max-height': '300px' }"
[nzExpandedKeys]="enterpriseDefaultAddressCode"
[nzNodes]="areaList"
[nzAsyncData]="true"
[nzCheckStrictly]="true"
nzCheckable
(nzExpandChange)="onExpandChange($event.node)"
nzDropdownClassName="area-tree-select"
>
</nz-tree-select> </nz-tree-select>
</ng-container> </ng-container>
<ng-template #cascaderelseTemplate> <ng-template #cascaderelseTemplate>
@ -161,22 +244,27 @@
</nz-card> </nz-card>
<nz-card> <nz-card>
<sv-container col="3" class="mt16"> <sv-container >
<sv-title>修改渠道销售记录</sv-title> <sv-title>修改渠道销售记录</sv-title>
<sv label="">
<st #st [data]="service.$api_get_personal_channel_list" [columns]="columns"
[req]="{params:{partnerId:route.snapshot.params.id}}" [loading]="service.http.loading" bordered size="small"
[page]="{ show: false }" [scroll]="{ x: '1200px' }">
</st>
</sv>
</sv-container> </sv-container>
<st
#st
[scroll]="{x: '1200px'}"
[data]="service.$api_get_personal_channel_list"
[columns]="columns"
[req]="{ params: { partnerId: route.snapshot.params.id } }"
[loading]="service.http.loading"
bordered
size="small"
[page]="{ show: false }"
>
</st>
</nz-card> </nz-card>
<ng-template #PopconfirmTempalte let-title="title" let-content="content"> <ng-template #PopconfirmTempalte let-title="title" let-content="content">
<div class="ant-popover-message"> <div class="ant-popover-message">
<i nz-icon nzType="info-circle" nzTheme="fill"></i> <i nz-icon nzType="info-circle" nzTheme="fill"></i>
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">{{ title }} <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">{{ title }} </div>
</div>
<div class="ant-popover-message-title ng-star-inserted"> <div class="ant-popover-message-title ng-star-inserted">
{{ content }} {{ content }}
</div> </div>
@ -184,18 +272,36 @@
</ng-template> </ng-template>
<ng-template #uploadTemplate let-data="data" let-status="status" let-key="key" let-key2="key2" let-hover="hover"> <ng-template #uploadTemplate let-data="data" let-status="status" let-key="key" let-key2="key2" let-hover="hover">
<nz-upload class="avatar-uploader" [nzAction]="uploadURl" nzName="multipartFile" nzListType="picture-card" <nz-upload
[nzShowUploadList]="false" nzFileType="image/png,image/jpeg,image/jpg,image/gif" class="avatar-uploader"
[nzDisabled]="!isEdit || disabledUpload" (nzChange)="changeUpload($event, data, key, key2, hover)"> [nzAction]="uploadURl"
nzName="multipartFile"
nzListType="picture-card"
[nzShowUploadList]="false"
nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload"
(nzChange)="changeUpload($event, data, key, key2, hover)"
>
<ng-container *ngIf="!data[key] && isEdit"> <ng-container *ngIf="!data[key] && isEdit">
<i class="upload-icon" nz-icon [nzType]="service.http.loading ? 'loading' : 'plus'"></i> <i class="upload-icon" nz-icon [nzType]="service.http.loading ? 'loading' : 'plus'"></i>
<div class="ant-upload-text">上传</div> <div class="ant-upload-text">上传</div>
</ng-container> </ng-container>
<div *ngIf="data[key]" (mouseover)="detailData[hover] = true" (mouseleave)="detailData[hover] = false" <div
(click)="$event.cancelBubble = true" class="image-hover"> *ngIf="data[key]"
(mouseover)="detailData[hover] = true"
(mouseleave)="detailData[hover] = false"
(click)="$event.cancelBubble = true"
class="image-hover"
>
<img nz-image [nzSrc]="data[key]" style="width: 200px; height: 160px" /> <img nz-image [nzSrc]="data[key]" style="width: 200px; height: 160px" />
<i nz-icon *ngIf="detailData[hover] && isEdit" nzType="close-circle" nzTheme="fill" class="delete-icon" <i
(click)="deleteImg(data, key, key2)"></i> nz-icon
*ngIf="detailData[hover] && isEdit"
nzType="close-circle"
nzTheme="fill"
class="delete-icon"
(click)="deleteImg(data, key, key2)"
></i>
</div> </div>
</nz-upload> </nz-upload>
</ng-template> </ng-template>

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-02-24 20:09:49 * @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-03-29 13:40:16 * @LastEditTime : 2022-05-12 16:43:10
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -23,7 +23,7 @@
></sf> ></sf>
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right"> <div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1);">查询</button> <button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1);">查询</button>
<button nz-button nzType="primary" [disabled]="service.http.loading" acl [acl-ability]="['REBATE-RECORD-export']">导出</button> <button nz-button nzType="primary" (click)="exprot()" [disabled]="service.http.loading" acl [acl-ability]="['REBATE-RECORD-export']">导出</button>
<button nz-button [disabled]="service.http.loading" (click)="resetSF()">重置</button> <button nz-button [disabled]="service.http.loading" (click)="resetSF()">重置</button>
</div> </div>
</div> </div>
@ -33,7 +33,7 @@
<!-- 数据列表 --> <!-- 数据列表 -->
<st <st
#st #st
[data]="service.$api_get_getIncomeByBillpage" [data]="service.$api_get_partnerIncomeHead"
[columns]="columns" [columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
@ -42,7 +42,10 @@
[loading]="service.http.loading" [loading]="service.http.loading"
> >
<ng-template st-row='abnormalFeedback' let-item let-index='index'> <ng-template st-row='abnormalFeedback' let-item let-index='index'>
<div style="color: #f59a23;" (click)="feedback()">123212{{item?.abnormalFeedback}}</div> <div style="color: #f59a23;" (click)="feedback(item)">123212{{item?.abnormalFeedback}}</div>
</ng-template>
<ng-template st-row='profitAmountSum' let-item let-index='index'>
<div >{{item?.profitAmountSum | currency}}</div>
</ng-template> </ng-template>
</st> </st>
</nz-card> </nz-card>

View File

@ -68,11 +68,11 @@ export class ParterRebateManageMentRecordComponent implements OnInit {
{ {
title: '月份', title: '月份',
index: 'month', index: 'month',
format: (item: any) => {return item?.month ? item?.month + '月' : ''} format: (item: any) => {return ((item?.year ? item?.year + '-' : '') + (item?.month ? item.month : ''))}
}, },
{ {
title: '返佣金额(元)', title: '返佣金额(元)',
index: 'name1' render: 'profitAmountSum'
}, },
{ {
title: '合伙人名称', title: '合伙人名称',
@ -80,15 +80,16 @@ export class ParterRebateManageMentRecordComponent implements OnInit {
}, },
{ {
title: '实际等级', title: '实际等级',
index: 'name1' index: 'partnerGrade'
}, },
{ {
title: '管理费比例', title: '管理费比例',
index: 'rebateRatio' index: 'manageFeeRatio',
format: (item) => {return item.manageFeeRatio + '%' }
}, },
{ {
title: '返佣时间', title: '返佣时间',
index: 'name1' index: 'returnCommissionTime'
}, },
{ {
title: '异常反馈', title: '异常反馈',
@ -117,7 +118,7 @@ export class ParterRebateManageMentRecordComponent implements OnInit {
nzTitle: '明细', nzTitle: '明细',
nzWidth: 1200, nzWidth: 1200,
nzContent: ParterRebateManageMenRecordDetailComponent, nzContent: ParterRebateManageMenRecordDetailComponent,
nzComponentParams: { }, nzComponentParams: { record: item },
nzFooter: null nzFooter: null
}); });
modal.afterClose.subscribe((res: any) => { modal.afterClose.subscribe((res: any) => {
@ -148,4 +149,10 @@ export class ParterRebateManageMentRecordComponent implements OnInit {
this.sf.reset(); this.sf.reset();
this.st.load(1); this.st.load(1);
} }
// 导出
exprot() {
// this.service.exportStart({ ...this.reqParams, pageSize: -1 }, this.service.$api_get_partnerIncomeHead_export);
this.service.downloadFile(this.service.$api_get_partnerIncomeHead_export, { ...this.reqParams, pageSize: -1 });
}
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-02-24 20:09:49 * @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-07 15:42:10 * @LastEditTime : 2022-05-11 17:04:39
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -23,7 +23,14 @@
<sv-title> 固定结算费率配置</sv-title> <sv-title> 固定结算费率配置</sv-title>
<sv label="固定结算费率"> <sv label="固定结算费率">
<nz-input-number [disabled]="hiden" [nzMin]="0" [nzMax]="100" [(ngModel)]="accountingRate" [nzPrecision]="precision" nzPlaceHolder="请输入"></nz-input-number <nz-input-number
[disabled]="hiden"
[nzMin]="0"
[nzMax]="100"
[(ngModel)]="accountingRate"
[nzPrecision]="precision"
nzPlaceHolder="请输入"
></nz-input-number
>&nbsp;%</sv >&nbsp;%</sv
> >
@ -74,15 +81,26 @@
</sv> </sv>
<sv label="优先级" col="1"> <sv label="优先级" col="1">
<!-- <nz-select [(ngModel)]="priority" [disabled]="hiden" style="max-width: 400px; min-width: 200px; margin-left: 28px"> <nz-input-number
<nz-option nzValue="1" nzLabel="1">1</nz-option> style="max-width: 400px; min-width: 200px; margin-left: 28px"
<nz-option nzValue="2" nzLabel="2">2</nz-option> [(ngModel)]="priority"
<nz-option nzValue="3" nzLabel="3">3</nz-option> [nzMin]="0"
<nz-option nzValue="4" nzLabel="4">4</nz-option> [nzMax]="9999"
<nz-option nzValue="5" nzLabel="5">5</nz-option> [nzStep]="1"
</nz-select> --> ></nz-input-number>
<nz-input-number style="max-width: 400px; min-width: 200px; margin-left: 28px" [(ngModel)]="priority" [nzMin]="0" [nzMax]="9999" [nzStep]="1"></nz-input-number> <div style="color: #7F7F7F;margin-left: 28px">
1、指全部合伙人、新注册合伙人、自定义合伙人三种范围优先执行的顺序等级数字越大优先执行该返佣模板<br />
2、同一合伙人范围的按创建时间最新的执行返佣模板
</div>
</sv> </sv>
<!-- <sv label="生效时间" col="1">
<nz-date-picker
nzShowTime
nzFormat="yyyy-MM-dd HH:mm:ss"
[(ngModel)]="enableTime"
nzPlaceHolder="请选择,精确到秒"
></nz-date-picker>
</sv> -->
<sv label="规则说明" col="1"> <sv label="规则说明" col="1">
<sf <sf
@ -99,7 +117,9 @@
<sv label="备注" col="1" style="margin-top: 16px"> <sv label="备注" col="1" style="margin-top: 16px">
<textarea <textarea
[disabled]="hiden" maxlength="20"
placeholder="请输入20个字符"
[readonly]='hiden'
style="max-width: 400px; min-width: 200px; margin-left: 40px" style="max-width: 400px; min-width: 200px; margin-left: 40px"
rows="4" rows="4"
nz-input nz-input

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-03-21 09:26:45 * @Date : 2022-03-21 09:26:45
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-07 15:38:49 * @LastEditTime : 2022-05-11 16:49:20
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */
@ -12,6 +12,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent } from '@delon/abc/st'; import { STColumn, STComponent } from '@delon/abc/st';
import { SFComponent, SFSchema } from '@delon/form'; import { SFComponent, SFSchema } from '@delon/form';
import { DatePipe } from '@delon/theme';
import { ShipperBaseService } from '@shared'; import { ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal'; import { NzModalService } from 'ng-zorro-antd/modal';
import { RebateManagementService } from '../../../services/rebate-management.service'; import { RebateManagementService } from '../../../services/rebate-management.service';
@ -19,7 +20,8 @@ import { ParterRebateManageMentAddPartnerListComponent } from '../add-partnerlis
@Component({ @Component({
selector: 'app-parter-channel-rebate-management-add', selector: 'app-parter-channel-rebate-management-add',
styleUrls: ['./add.component.less'], styleUrls: ['./add.component.less'],
templateUrl: './add.component.html' templateUrl: './add.component.html',
providers: [DatePipe]
}) })
export class ParterRebateManageMentAddComponent implements OnInit { export class ParterRebateManageMentAddComponent implements OnInit {
@ViewChild('table') table!: any; @ViewChild('table') table!: any;
@ -27,6 +29,7 @@ export class ParterRebateManageMentAddComponent implements OnInit {
tabelData: any; tabelData: any;
tabelType: any; tabelType: any;
formData: any; formData: any;
enableTime: any;
addStatus: boolean = false; addStatus: boolean = false;
hiden: boolean = false; hiden: boolean = false;
configName: string = ''; configName: string = '';
@ -48,7 +51,8 @@ export class ParterRebateManageMentAddComponent implements OnInit {
public ar: ActivatedRoute, public ar: ActivatedRoute,
public service: RebateManagementService, public service: RebateManagementService,
private modal: NzModalService, private modal: NzModalService,
public shipperservice: ShipperBaseService public shipperservice: ShipperBaseService,
private datePipe: DatePipe
) {} ) {}
columns: STColumn[] = []; columns: STColumn[] = [];
initSF(data?: any) { initSF(data?: any) {
@ -200,6 +204,7 @@ export class ParterRebateManageMentAddComponent implements OnInit {
accountingRate: this.accountingRate, accountingRate: this.accountingRate,
configName: this.configName, configName: this.configName,
configType: this.configType, configType: this.configType,
// enableTime:this.datePipe.transform(this.enableTime,'yyyy-MM-dd HH:mm:ss'),
rebateConfigLineDTO: this.table.data, rebateConfigLineDTO: this.table.data,
priority: this.priority, // 优先级 priority: this.priority, // 优先级
partnerIds: this.partnerId, partnerIds: this.partnerId,
@ -229,6 +234,8 @@ export class ParterRebateManageMentAddComponent implements OnInit {
this.priority = res?.priority + ''; this.priority = res?.priority + '';
this.formData = { ruleDescription: res?.ruleDescription }; this.formData = { ruleDescription: res?.ruleDescription };
this.remark = res.remark; this.remark = res.remark;
// this.enableTime = res.enableTime;
// this.enableTime = new Date(Date.parse(res?.enableTime?.replace(/-/g, '/')))
} }
}); });
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-02-24 20:09:49 * @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-05-06 16:37:06 * @LastEditTime : 2022-05-11 17:07:17
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\rebate-setting.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\rebate-setting.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -58,7 +58,7 @@
<div *ngIf="item.partnerType == 3">自定义合伙人</div> <div *ngIf="item.partnerType == 3">自定义合伙人</div>
</ng-template> </ng-template>
<ng-template st-row='stateLocked' let-item let-index='index'> <ng-template st-row='stateLocked' let-item let-index='index'>
<div >{{item?.stateLocked ? '生效中' : '失效'}}</div> <div >{{item?.stateLocked ? '失效' : '生效中'}}</div>
</ng-template> </ng-template>
</st> </st>
</nz-card> </nz-card>

View File

@ -53,8 +53,8 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
title: '状态', title: '状态',
enum: [ enum: [
{ label: '全部', value: '' }, { label: '全部', value: '' },
{ label: '生效中', value: 1 }, { label: '生效中', value: 0 },
{ label: '失效', value: 0 } { label: '失效', value: 1 }
], ],
ui: { ui: {
widget: 'select' widget: 'select'
@ -94,7 +94,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
}, },
{ {
title: '创建时间', title: '创建时间',
index: 'enableTime', index: 'createTime',
width: '200px' width: '200px'
}, },
{ {
@ -127,7 +127,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
text: '禁用', text: '禁用',
acl: { ability: ['REBATE-SETTING-forbidden'] }, acl: { ability: ['REBATE-SETTING-forbidden'] },
iif: _record => { iif: _record => {
return _record.stateLocked == true && (_record.partnerType == 3 || _record.partnerType == 2); return _record.stateLocked == false && (_record.partnerType == 3 || _record.partnerType == 2);
}, },
click: _record => this.viewEvaluate(_record) click: _record => this.viewEvaluate(_record)
}, },
@ -135,7 +135,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
text: '启用', text: '启用',
acl: { ability: ['REBATE-SETTING-startUseing'] }, acl: { ability: ['REBATE-SETTING-startUseing'] },
iif: _record => { iif: _record => {
return _record.stateLocked == false; return _record.stateLocked == true;
}, },
click: _record => this.viewEvaluate(_record) click: _record => this.viewEvaluate(_record)
} }

View File

@ -4,23 +4,22 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-02-24 20:09:49 * @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-03-10 15:10:47 * @LastEditTime : 2022-05-12 17:43:46
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
<sv-container col="1"> <sv-container col="1">
<sv label="异常反馈"> <sv *ngFor="let item of mybidDetailInfo" label="异常反馈" >
<div>有订单有异常请查看 </div> <div>{{item.feedbackInfo}} </div>
<div>2022-09-08 00:00:00 </div> <div>{{item.createTime}} </div>
<sv label="回复" *ngIf="item.replyVOList">
<div>{{item.replyVOList}} </div>
<div>{{item.feedbackInfo}} </div>
</sv>
</sv>
<sv *ngIf="mybidDetailInfo.length == 0"label="异常反馈" >
<div>暂无反馈信息 </div>
</sv> </sv>
<!-- <sv label="异常反馈">
<p *ngFor="let data of i?.mybidDetailInfo; let index = index">
<label *ngIf="data?.paymentStatusLabel == '已支付'">
<span>{{data?.expenseName}}</span>
<span>{{ data.price | number: '0.2-2' }}</span>
</label>
</p>
</sv> -->
</sv-container> </sv-container>
<div> <div>
<sf <sf

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-03-10 14:50:45 * @Date : 2022-03-10 14:50:45
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-03-10 15:09:51 * @LastEditTime : 2022-05-12 17:54:15
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */
@ -24,17 +24,30 @@ export class ParterRebateManageMenAbnormalFeedbackComponent implements OnInit {
@ViewChild('sf', { static: false }) @ViewChild('sf', { static: false })
sf!: SFComponent; sf!: SFComponent;
i!: any; i!: any;
mybidDetailInfo: any = [];
data = [{ name1: 1111 }]; data = [{ name1: 1111 }];
constructor(public service: RebateManagementService, public shipperservice: ShipperBaseService, public modalRef: NzModalRef) {} constructor(public service: RebateManagementService, public shipperservice: ShipperBaseService, public modalRef: NzModalRef) {}
ngOnInit() { ngOnInit() {
this.initSF(); this.initSF();
this.initData();
} }
initData() {
if (this.i) {
console.log(this.i);
this.service
.request(this.service.$api_get_getExceptionMessage, { partnerId: this.i?.partnerId, month: this.i.month, year: this.i.year })
.subscribe(res => {
console.log(res);
this.mybidDetailInfo = res;
});
}
}
initSF() { initSF() {
this.schema = { this.schema = {
properties: { properties: {
name3: { feedbackInfo: {
type: 'string', type: 'string',
title: '回复', title: '回复',
maxLength: 50, maxLength: 50,
@ -54,6 +67,21 @@ export class ParterRebateManageMenAbnormalFeedbackComponent implements OnInit {
}; };
} }
close() { close() {
this.modalRef.destroy(); if (!this.sf.valid) {
this.service.msgSrv.error('请填写必填项!');
return;
}
let params = {
partnerId: this.i?.partnerId,
month: this.i.month,
year: this.i.year,
...this.sf.value
};
this.service.request(this.service.$api_get_partnerIncomeExceptionAdd,params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('保存成功!');
this.modalRef.destroy();
}
})
} }
} }

View File

@ -23,7 +23,7 @@
<st <st
#st #st
[bordered]="true" [bordered]="true"
[data]="service.$api_get_listCompliancePage" [data]="service.$api_get_partnerIncomeDetail"
[columns]="columns" [columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"

View File

@ -21,6 +21,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
spuStatus = '1'; spuStatus = '1';
size: NzButtonSize = 'large'; size: NzButtonSize = 'large';
_$expand = false; _$expand = false;
record: any;
data = [{ name1: 1111 }]; data = [{ name1: 1111 }];
constructor(public service: RebateManagementService, public shipperservice: ShipperBaseService, public modalRef: NzModalRef) {} constructor(public service: RebateManagementService, public shipperservice: ShipperBaseService, public modalRef: NzModalRef) {}
/** /**
@ -43,10 +44,13 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
const params: any = Object.assign({}, this.sf?.value || {}); const params: any = Object.assign({}, this.sf?.value || {});
delete params._$expand; delete params._$expand;
return { return {
partnerId: this.record.partnerId,
...params ...params
}; };
} }
ngOnInit() { ngOnInit() {
console.log(this.record);
this.initSF(); this.initSF();
this.initST(); this.initST();
} }
@ -54,7 +58,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
initSF() { initSF() {
this.schema = { this.schema = {
properties: { properties: {
enterpriseInfoId: { ltdId: {
type: 'string', type: 'string',
title: '网络货运人', title: '网络货运人',
ui: { ui: {
@ -68,18 +72,27 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
} }
} }
}, },
paymentStatus: { bankType: {
title: '银行类型', title: '银行类型',
type: 'string', type: 'string',
ui: { enum: [
widget: 'dict-select', {
params: { dictKey: 'overall:payment:status' }, label: '全部',
containsAllLabel: true, value: ''
change: (value: any) => { },
console.log(value); {
this.st.reload(); label: '平安银行',
value: '1'
},
{
label: '浦发银行',
value: '2'
} }
} as SFSelectWidgetSchema ],
ui: {
widget: 'select',
containsAllLabel: true
}
} }
} }
}; };
@ -93,6 +106,10 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
initST() { initST() {
this.columns = [ this.columns = [
{
title: '网络货运人',
index: 'billCode'
},
{ {
title: '订单号', title: '订单号',
index: 'billCode' index: 'billCode'
@ -106,7 +123,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
index: 'name1' index: 'name1'
}, },
{ {
title: '预估返佣金额(元)', title: '返佣金额(元)',
index: 'name1' index: 'name1'
}, },
{ {
@ -118,27 +135,11 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
index: 'name1' index: 'name1'
}, },
{ {
title: '网络货运人', title: '银行类型',
index: 'name1' index: 'name1'
}, },
{ {
title: '销售渠道', title: '虚拟账户',
index: 'name1'
},
{
title: '合伙人名称',
index: 'name1'
},
{
title: '合伙人等级',
index: 'name1'
},
{
title: '管理费比例',
index: 'name1'
},
{
title: '固定结算费率',
index: 'name1' index: 'name1'
}, },
{ {

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-03-10 11:19:00 * @Date : 2022-03-10 11:19:00
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-04-25 19:23:25 * @LastEditTime : 2022-05-12 15:36:23
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\services\\rebate-management.service.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\services\\rebate-management.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */
@ -12,7 +12,7 @@ import { Injectable, Injector } from '@angular/core';
import { BaseService } from '@shared'; import { BaseService } from '@shared';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root'
}) })
export class RebateManagementService extends BaseService { export class RebateManagementService extends BaseService {
// 查询规则抽查列表 // 查询规则抽查列表
@ -24,17 +24,26 @@ export class RebateManagementService extends BaseService {
// 启用/禁用返佣配置 // 启用/禁用返佣配置
public $api_set_updateRebateConfig = '/api/mdc/rebateConfig/updateRebateConfig'; public $api_set_updateRebateConfig = '/api/mdc/rebateConfig/updateRebateConfig';
// 运营端查询合伙人返佣 // 运营端查询合伙人返佣
public $api_get_getIncomeByBillpage = '/api/bpc/partnerIncomeHead/getIncomeByBillpage'; public $api_get_getIncomeByBillpage = '/api/bpc/partnerIncomeHead/getIncomeByBillpage';
// 获取返佣模板信息 // 获取返佣模板信息
public $api_get_getPartnerRebateConfigInfo = '/api/mdc/rebateConfig/getPartnerRebateConfigInfo'; public $api_get_getPartnerRebateConfigInfo = '/api/mdc/rebateConfig/getPartnerRebateConfigInfo';
// 合伙人管理/返佣管理/返佣明细 // 合伙人管理/返佣管理/返佣明细
public $api_get_searchPageList= '/api/fcc/billPaymentApplicationOBC/list/searchPageList'; public $api_get_searchPageList = '/api/fcc/billPaymentApplicationOBC/list/searchPageList';
// 合伙人管理/返佣管理/退款返佣明细 // 合伙人管理/返佣管理/退款返佣明细
public $api_get_searchRefundPageList= '/api/fcc/billPaymentApplicationOBC/list/searchRefundPageList'; public $api_get_searchRefundPageList = '/api/fcc/billPaymentApplicationOBC/list/searchRefundPageList'; // 查询合伙人信息-分页
  // 查询合伙人信息-分页 public $api_get_partner_page = '/api/mdc/partner/list/page';
public $api_get_partner_page = '/api/mdc/partner/list/page';
// 查询查询返佣记录列表-分页
public $api_get_partnerIncomeHead = '/api/fcc/partnerIncomeHead/list/rebate';
// 查询返佣记录明细
public $api_get_partnerIncomeDetail = '/api/fcc/partnerIncomeDetail/rebate/detail';
// 导出返佣记录明细
public $api_get_partnerIncomeHead_export = '/api/fcc/partnerIncomeDetail/rebate/detail/export';
// 根据合伙人id、年、月 查询异常反馈信息(反馈异常查下)
public $api_get_getExceptionMessage = '/api/fcc/partnerIncomeDetailException/getExceptionMessage';
// 保存合伙人收益账单详情-异常反馈表(反馈异常提交)
public $api_get_partnerIncomeExceptionAdd = '/api/fcc/partnerIncomeDetailException/partnerIncomeExceptionAdd';
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector); super(injector);
} }

View File

@ -4,8 +4,8 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-01-05 20:15:41 * @Date : 2022-01-05 20:15:41
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-01-18 17:17:19 * @LastEditTime : 2022-05-11 15:06:17
* @FilePath : \\tms-obc-web\\src\\app\\routes\\financial-management\\components\\withdrawals-record\\withdrawals-detail\\withdrawals-detail.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\recorded\\components\\detail\\detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
<page-header-wrapper [title]="'入账详情'" [logo]="logo" [action]="action"> <page-header-wrapper [title]="'入账详情'" [logo]="logo" [action]="action">
@ -40,7 +40,7 @@
{{formData?.entryNumber}} {{formData?.entryNumber}}
</se> </se>
<se label="银行类型"> <se label="银行类型">
{{formData?.bankName}} {{formData?.bankType}}
</se> </se>
<se label="虚拟账户"> <se label="虚拟账户">
{{formData?.fictitiousAccount}} {{formData?.fictitiousAccount}}
@ -58,7 +58,10 @@
{{formData?.recordedAmount | currency}} {{formData?.recordedAmount | currency}}
</se> </se>
<se label="入账状态"> <se label="入账状态">
{{formData?.stsLabel}} <span *ngIf="formData?.sts == '1'">待审核</span>
<span *ngIf="formData?.sts == '2'">待复核</span>
<span *ngIf="formData?.sts == '3'">已入账</span>
<span *ngIf="formData?.sts == '4'">已驳回</span>
</se> </se>
<se label="发票图片"> <se label="发票图片">
<img *ngIf="formData?.invoiceUrl" nz-image width="100px" height="100px" [nzSrc]="formData?.invoiceUrl" alt="" /> <img *ngIf="formData?.invoiceUrl" nz-image width="100px" height="100px" [nzSrc]="formData?.invoiceUrl" alt="" />

View File

@ -3,7 +3,6 @@ import { ActivatedRoute } from '@angular/router';
import { NzModalService } from 'ng-zorro-antd/modal'; import { NzModalService } from 'ng-zorro-antd/modal';
import { RecordedService } from '../../services/recorded.service'; import { RecordedService } from '../../services/recorded.service';
@Component({ @Component({
selector: 'app-partner-recored-detail', selector: 'app-partner-recored-detail',
templateUrl: './detail.component.html', templateUrl: './detail.component.html',
@ -21,52 +20,75 @@ export class PartnerRecordedDetailComponent implements OnInit {
this.getRecordedDetail(this.id); this.getRecordedDetail(this.id);
} }
ngOnInit(): void { } ngOnInit(): void {}
getRecordedDetail(id: string) { getRecordedDetail(id: string) {
this.service.request(this.service.$api_get_recorded_record_detail, { id }).subscribe(res => { this.service.request(this.service.$api_get_recorded_record_detail, { id }).subscribe(res => {
if (res) { if (res) {
this.formData = res; this.formData = res;
}
});
this.service.request(this.service.$api_get_getPartnerInvoiceEntryDetail, { id }).subscribe(res => {
if (res) {
// 处理流程节点数据 // 处理流程节点数据
// 流程是否结束 // 流程是否结束
// let isEnd = false; console.log(res);
// if (res.successTime) { // submitTime creattime
// isEnd = true; let isEnd = false;
// if (res.refundStatus === '3') { if (res.reAuditTime) {
// this.timeLineData.push({ time: res.successTime, value: `到账成功`, color: 'green' }); isEnd = true;
// } else { if (res.sts === '3') {
// this.timeLineData.push({ time: res.successTime, value: `提现失败`, color: 'red' }); 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 && res.refundStatus !== '4') {
// if (res.agreeTime) { this.timeLineData.push({ time: res.agreeTime, value: `银行处理中`, color: 'gray' });
// if (res.refundStatus === '4') { }
// isEnd = true; if (res.reAuditTime) {
// this.timeLineData.push({ if (res.refundStatus === '4') {
// time: res.agreeTime, isEnd = true;
// value: `拒绝提现<br/>操作人员:${res.handlerUserIdLabel}`, this.timeLineData.push({
// color: 'red' time: res.reAuditTime,
// }); value: `拒绝提现<br/>操作人员:${res.handlerUserIdLabel}`,
// } else { color: 'red'
// this.timeLineData.push({ });
// time: res.agreeTime, } else {
// value: `审核通过<br/>操作人员:${res.handlerUserIdLabel}`, this.timeLineData.push({
// color: 'gray' time: res.reAuditTime,
// }); value: `审核通过<br/>操作人员:${res.handlerUserIdLabel}`,
// } color: 'gray'
// } });
// if (res.createTime) { }
// this.timeLineData.push({ }
// time: res.createTime, if (res.agreeTime) {
// value: `提交提现申请<br/>提现${res.amount}元至${res.bankName}(${res.bankCardNumber})<br/>操作人员:${res.userIdLabel}`, if (res.refundStatus === '4') {
// color: 'gray' isEnd = true;
// }); this.timeLineData.push({
// } time: res.agreeTime,
// if (this.timeLineData?.length > 0 && !isEnd) { value: `拒绝提现<br/>操作人员:${res.handlerUserIdLabel}`,
// this.timeLineData[0].color = 'green'; 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';
}
} }
}); });
} }
@ -87,18 +109,28 @@ export class PartnerRecordedDetailComponent implements OnInit {
this.service.msgSrv.warning('请填写拒绝原因 '); this.service.msgSrv.warning('请填写拒绝原因 ');
return; return;
} }
this.audit({ ids: params, rejectReason: this.msg, sts: '3' }, () => { this.audit(
modal.destroy(true); { ids: params, rejectReason: this.msg, sts: '3' },
}, '审核拒绝成功'); () => {
modal.destroy(true);
},
'审核拒绝成功'
);
} }
}, },
{ {
label: '通过', label: '通过',
type: 'primary', type: 'primary',
onClick: () => { onClick: () => {
this.audit({ ids: params, rejectReason: this.msg, sts: this.formData?.sts === '0' ? 1 : 2 }, () => { console.log(this.formData?.sts);
modal.destroy(true);
}, `${this.formData?.sts === '1' ? '审核' : '复审'}通过成功`); this.audit(
{ ids: params, rejectReason: this.msg, sts: this.formData?.sts === '0' ? 1 : 2 },
() => {
modal.destroy(true);
},
`${this.formData?.sts === '1' ? '审核' : '复审'}通过成功`
);
} }
} }
] ]
@ -117,13 +149,11 @@ export class PartnerRecordedDetailComponent implements OnInit {
* 审核 * 审核
*/ */
audit(params: any, callback: Function, msg = '成功') { audit(params: any, callback: Function, msg = '成功') {
this.service this.service.request(this.service.$api_audit_recored, {...params}).subscribe(res => {
.request(this.service.$api_audit_recored, ...params) if (res) {
.subscribe(res => { this.service.msgSrv.success(msg);
if (res) { callback();
this.service.msgSrv.success(msg); }
callback(); });
}
});
} }
} }

View File

@ -1,16 +1,29 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-04-29 17:28:23
* @LastEditors : Shiming
* @LastEditTime : 2022-05-11 14:25:14
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\recorded\\components\\record\\record.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<page-header-wrapper [title]="''"></page-header-wrapper> <page-header-wrapper [title]="''"></page-header-wrapper>
<nz-card class="search-box" nzBordered> <nz-card class="search-box" nzBordered>
<div nz-row nzGutter="8"> <div nz-row nzGutter="8">
<div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> <div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24">
<sf #sf [schema]="searchSchema" <sf
[ui]="{ '*': { spanLabelFixed: 90,grid: { lg: 8, md: 12, sm: 12, xs: 24,gutter:15 } }}" [compact]="true" #sf
[button]="'none'"></sf> [schema]="searchSchema"
[ui]="{ '*': { spanLabelFixed: 90, grid: { lg: 8, md: 12, sm: 12, xs: 24, gutter: 15 } } }"
[compact]="true"
[button]="'none'"
></sf>
</div> </div>
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand" <div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand" class="text-right">
class="text-right">
<button nz-button nzType="primary" (click)="search()">查询</button> <button nz-button nzType="primary" (click)="search()">查询</button>
<button nz-button (click)="resetSF()">重置</button> <button nz-button (click)="resetSF()">重置</button>
<button nz-button acl [acl-ability]="['RECORDED-LIST-export']"> 导出</button> <button nz-button acl [acl-ability]="['RECORDED-LIST-export']"> 导出</button>
<button nz-button nzType="link" (click)="expandToggle()"> <button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }} {{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
@ -21,7 +34,7 @@
<nz-card class="content-box" nzBordered> <nz-card class="content-box" nzBordered>
<nz-tabset [nzTabBarExtraContent]="extraTemplate"> <nz-tabset [nzTabBarExtraContent]="extraTemplate">
<nz-tab nzTitle="全部" (nzClick)="changeRefundStatus()"></nz-tab> <nz-tab nzTitle="全部" (nzClick)="changeRefundStatus('0')"></nz-tab>
<nz-tab nzTitle="待初审" (nzClick)="changeRefundStatus('1')"></nz-tab> <nz-tab nzTitle="待初审" (nzClick)="changeRefundStatus('1')"></nz-tab>
<nz-tab nzTitle="待复核" (nzClick)="changeRefundStatus('2')"></nz-tab> <nz-tab nzTitle="待复核" (nzClick)="changeRefundStatus('2')"></nz-tab>
<nz-tab nzTitle="已入账" (nzClick)="changeRefundStatus('3')"></nz-tab> <nz-tab nzTitle="已入账" (nzClick)="changeRefundStatus('3')"></nz-tab>
@ -29,37 +42,55 @@
</nz-tabset> </nz-tabset>
<ng-template #extraTemplate> <ng-template #extraTemplate>
<div class="d-flex align-items-center "> <div class="d-flex align-items-center">
<div class="mr-md"> <div class="mr-md">
已选择 已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据,累计入账 <strong class="text-red">{{ <strong class="text-red">{{ selectedRows.length }}</strong> 条数据,累计入账 <strong class="text-red">{{ totalCallNo }}</strong>
totalCallNo }}</strong>
<!-- <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> --> <!-- <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> -->
</div> </div>
<button nz-button (click)="this.auditAction(null)" acl [acl-ability]="['RECORDED-LIST-audit']">审核</button> <button nz-button (click)="this.auditAction(null)" acl [acl-ability]="['RECORDED-LIST-audit']">审核</button>
</div> </div>
</ng-template> </ng-template>
<div class="table-content"> <div class="table-content">
<st #st [data]="service.$api_get_recorded_page" [columns]="columns" <st
[req]="{ method: 'POST', allInBody: true,process: beforeReq}" [loading]="service.http.loading" #st
[scroll]="{ x:'1200px' }" (change)="stChange($event)" [data]="service.$api_get_recorded_page"
[columns]="columns"
[req]="{ method: 'POST', allInBody: true, process: beforeReq }"
[loading]="service.http.loading"
[scroll]="{ x: '1200px' }"
(change)="stChange($event)"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }" [res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{ show: true, pageSizes: [10, 20, 50, 100, 200, 500] }"> [page]="{ show: true, pageSizes: [10, 20, 50, 100, 200, 500] }"
>
<ng-template st-row="bankCardNumber" let-item let-index="index" let-column="column"> <ng-template st-row="bankCardNumber" let-item let-index="index" let-column="column">
{{ item.bankName }} <br> {{ item.bankCardNumber }} {{ item.bankName }} <br />
{{ item.bankCardNumber }}
</ng-template>
<ng-template st-row="sts" let-item let-index="index" let-column="column">
<div *ngIf="item.sts == '0'">待初审</div>
<div *ngIf="item.sts == '1'">待复核</div>
<div *ngIf="item.sts == '2'">已入账</div>
<div *ngIf="item.sts == '3'">已拒绝</div>
</ng-template> </ng-template>
</st> </st>
<div class=" text-md" *ngIf="st?.list?.length !== 0 "> <div class="text-md" *ngIf="st?.list?.length !== 0">
<span class="mr-md">合伙人数:<label <span class="mr-md"
class="text-red-dark font-weight-bold">{{totalInfo?.invoiceAmountSum}}</label></span> >合伙人数:<label class="text-red-dark font-weight-bold">{{ totalInfo?.partnerNum }}</label></span
<span class="mr-md">入账笔数:<label class="text-red-dark font-weight-bold">{{totalInfo?.count}}</label></span> >
<span class="mr-md">开票金额:<label <span class="mr-md"
class="text-red-dark font-weight-bold">{{totalInfo?.invoiceEntryNum}}</label></span> >入账笔数:<label class="text-red-dark font-weight-bold">{{ totalInfo?.invoiceEntryNum }}</label></span
<span class="mr-md">代缴个税:<label >
class="text-red-dark font-weight-bold">{{totalInfo?.taxPersonalSum}}</label></span> <span class="mr-md"
<span class="mr-md">入账金额:<label >开票金额:<label class="text-red-dark font-weight-bold">{{ totalInfo?.invoiceAmountSum }}</label></span
class="text-red-dark font-weight-bold">{{totalInfo?.recordedAmountSum}}</label></span> >
<span class="mr-md"
>代缴个税:<label class="text-red-dark font-weight-bold">{{ totalInfo?.taxPersonalSum }}</label></span
>
<span class="mr-md"
>入账金额:<label class="text-red-dark font-weight-bold">{{ totalInfo?.recordedAmountSum }}</label></span
>
</div> </div>
</div> </div>
</nz-card> </nz-card>
@ -68,8 +99,13 @@
<div nz-row nzGutter="8"> <div nz-row nzGutter="8">
<div nz-col nzSpan="24" se-container [labelWidth]="80"> <div nz-col nzSpan="24" se-container [labelWidth]="80">
<se [col]="1" label="备注"> <se [col]="1" label="备注">
<textarea nz-input rows="3" [(ngModel)]="msg" placeholder="同意可以不用填写原因 ,拒绝必须说明原因" <textarea
style="width: 325px;margin-left: 14px;"></textarea> nz-input
rows="3"
[(ngModel)]="msg"
placeholder="同意可以不用填写原因 ,拒绝必须说明原因"
style="width: 325px; margin-left: 14px"
></textarea>
</se> </se>
</div> </div>
</div> </div>

View File

@ -8,7 +8,6 @@ import { FreightAccountService } from 'src/app/routes/financial-management/servi
import Big from 'src/app/shared/utils/deal-precision'; import Big from 'src/app/shared/utils/deal-precision';
import { RecordedService } from '../../services/recorded.service'; import { RecordedService } from '../../services/recorded.service';
@Component({ @Component({
selector: 'app-partner-recorded-record', selector: 'app-partner-recorded-record',
templateUrl: './record.component.html', templateUrl: './record.component.html',
@ -22,12 +21,12 @@ export class PartnerRecordedRecordComponent implements OnInit {
columns!: STColumn[]; columns!: STColumn[];
searchSchema!: SFSchema; searchSchema!: SFSchema;
totalInfo: any = { totalInfo: any = {
invoiceAmountSum: 0,
invoiceEntryNum: 0,
partnerNum: 0, partnerNum: 0,
recordedAmountSum: 0, invoiceEntryNum: 0,
taxPersonalSum: 0 invoiceAmountSum: 0,
} taxPersonalSum: 0,
recordedAmountSum: 0
};
_$expand = false; _$expand = false;
@ -40,16 +39,20 @@ export class PartnerRecordedRecordComponent implements OnInit {
ltdId = ''; // 网络货运人 ltdId = ''; // 网络货运人
accountName = ''; // 账户名称 accountName = ''; // 账户名称
constructor(
constructor(public service: RecordedService, private nzModalService: NzModalService, public service: RecordedService,
private router: Router, public ar: ActivatedRoute, public shipperSrv: ShipperBaseService) { private nzModalService: NzModalService,
private router: Router,
public ar: ActivatedRoute,
public shipperSrv: ShipperBaseService
) {
this.ltdId = this.ar.snapshot.queryParams?.ltdId || ''; this.ltdId = this.ar.snapshot.queryParams?.ltdId || '';
} }
ngOnInit(): void { ngOnInit(): void {
this.searchSchema = this.initSF(); this.searchSchema = this.initSF();
this.columns = this.initST(); this.columns = this.initST();
this.getSummary()
} }
beforeReq = (requestOptions: STRequestOptions) => { beforeReq = (requestOptions: STRequestOptions) => {
@ -60,7 +63,7 @@ export class PartnerRecordedRecordComponent implements OnInit {
start: this.sf?.value.createTime?.[0] || '', start: this.sf?.value.createTime?.[0] || '',
end: this.sf?.value.createTime?.[1] || '' end: this.sf?.value.createTime?.[1] || ''
}, },
refundStatus: this.refundStatus || null sts: this.refundStatus || ''
}); });
} }
delete requestOptions?.body?.expand; delete requestOptions?.body?.expand;
@ -68,7 +71,7 @@ export class PartnerRecordedRecordComponent implements OnInit {
}; };
afterRes = (data: any[], rawData?: any) => { afterRes = (data: any[], rawData?: any) => {
// data = data.map(node => ({ ...node, disabled: node.sts !== '0' })); data = data.map(node => ({ ...node, disabled: node.sts !== '0' }));
return data; return data;
}; };
@ -81,16 +84,15 @@ export class PartnerRecordedRecordComponent implements OnInit {
const stList = this.st.list; const stList = this.st.list;
stList.forEach(item => { stList.forEach(item => {
this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id); this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id);
}) });
} else { } else {
//添加新增的行 //添加新增的行
checkRows.forEach((item: any) => { checkRows.forEach((item: any) => {
const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id); const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id);
if (newSelectedList.length === 0) { if (newSelectedList.length === 0) {
this.selectedRows.push(item); this.selectedRows.push(item);
} }
}) });
// 移除取消选中的行 // 移除取消选中的行
const stList = this.st.list; const stList = this.st.list;
stList.forEach(item => { stList.forEach(item => {
@ -98,17 +100,17 @@ export class PartnerRecordedRecordComponent implements OnInit {
const index = this.selectedRows.findIndex(_item => item.id === _item.id); const index = this.selectedRows.findIndex(_item => item.id === _item.id);
if (index !== -1) this.selectedRows.splice(index, 1); if (index !== -1) this.selectedRows.splice(index, 1);
} }
}) });
} }
let totalCallNo = 0; let totalCallNo = 0;
this.selectedRows.forEach((item => { this.selectedRows.forEach(item => {
totalCallNo = new Big(this.totalCallNo).plus(item?.entryAmount).parse(); totalCallNo = new Big(this.totalCallNo).plus(item?.entryAmount).parse();
})); });
this.totalCallNo = totalCallNo; this.totalCallNo = totalCallNo;
} else if (e.type === 'loaded') { } else if (e.type === 'loaded') {
// 页面加载时勾选 // 页面加载时勾选
(e?.loaded || []).forEach((r) => { (e?.loaded || []).forEach(r => {
this.selectedRows.forEach((x) => { this.selectedRows.forEach(x => {
if (x.id === r.id) { if (x.id === r.id) {
r.checked = true; r.checked = true;
} }
@ -117,8 +119,27 @@ export class PartnerRecordedRecordComponent implements OnInit {
} }
} }
changeRefundStatus(status?: string) { changeRefundStatus(status: any) {
this.refundStatus = status || null; let value = '';
switch (status) {
case '0':
value = '';
break;
case '1':
value = '0';
break;
case '2':
value = '1';
break;
case '3':
value = '2';
break;
case '4':
value = '3';
break;
}
this.refundStatus = value || null;
this.st.load(1); this.st.load(1);
} }
@ -146,10 +167,14 @@ export class PartnerRecordedRecordComponent implements OnInit {
this.service.msgSrv.warning('请填写拒绝原因 '); this.service.msgSrv.warning('请填写拒绝原因 ');
return; return;
} }
this.audit({ ids: params, rejectReason: this.msg, sts: '3' }, () => { this.audit(
modal.destroy(); { ids: params, rejectReason: this.msg, sts: '3' },
this.st.load(1); () => {
}, '审核拒绝成功'); modal.destroy();
this.st.load(1);
},
'审核拒绝成功'
);
// this.service // this.service
// .request(this.service.$api_disagree_recorded, { // .request(this.service.$api_disagree_recorded, {
// id: params, // id: params,
@ -168,10 +193,14 @@ export class PartnerRecordedRecordComponent implements OnInit {
label: '通过', label: '通过',
type: 'primary', type: 'primary',
onClick: () => { onClick: () => {
this.audit({ ids: params, rejectReason: this.msg, sts: '1' }, () => { this.audit(
modal.destroy(); { ids: params, rejectReason: this.msg, sts: '1' },
this.st.load(1); () => {
}, '审核通过成功'); modal.destroy();
this.st.load(1);
},
'审核通过成功'
);
} }
} }
] ]
@ -230,22 +259,22 @@ export class PartnerRecordedRecordComponent implements OnInit {
placeholder: '请输入' placeholder: '请输入'
} }
}, },
sts: { // sts: {
type: 'string', // type: 'string',
title: '入账状态', // title: '入账状态',
default: '', // default: '',
enum: [ // enum: [
{ label: '全部', value: '' }, // { label: '全部', value: '' },
{ label: '待初审', value: '0' }, // { label: '待初审', value: '0' },
{ label: '待复核', value: '1' }, // { label: '待复核', value: '1' },
{ label: '已入账', value: '2' }, // { label: '已入账', value: '2' },
{ label: '已拒绝', value: '3' }, // { label: '已拒绝', value: '3' },
], // ],
ui: { // ui: {
widget: 'select', // widget: 'select',
placeholder: '请选择' // placeholder: '请选择'
} // }
}, // },
ltdId: { ltdId: {
type: 'string', type: 'string',
title: '网络货运人', title: '网络货运人',
@ -254,7 +283,7 @@ export class PartnerRecordedRecordComponent implements OnInit {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
allowClear: true, allowClear: true,
asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, true), asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, true)
} }
}, },
submitTime: { submitTime: {
@ -269,7 +298,7 @@ export class PartnerRecordedRecordComponent implements OnInit {
expand: (value: boolean) => value expand: (value: boolean) => value
} }
} as SFDateWidgetSchema } as SFDateWidgetSchema
}, }
} }
}; };
} }
@ -283,11 +312,11 @@ export class PartnerRecordedRecordComponent implements OnInit {
{ title: '网络货运人', index: 'ltdName', width: 220, className: 'text-center' }, { title: '网络货运人', index: 'ltdName', width: 220, className: 'text-center' },
{ {
title: '开票金额', title: '开票金额',
index: 'amount', index: 'invoiceAmount',
width: 150, width: 150,
type: 'widget', type: 'widget',
className: 'text-right', className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.invoiceAmount }) }
}, },
{ {
title: '代缴个税', title: '代缴个税',
@ -295,7 +324,7 @@ export class PartnerRecordedRecordComponent implements OnInit {
width: 150, width: 150,
type: 'widget', type: 'widget',
className: 'text-right', className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.taxPersonal }) }
}, },
{ {
title: '入账金额', title: '入账金额',
@ -303,11 +332,11 @@ export class PartnerRecordedRecordComponent implements OnInit {
width: 150, width: 150,
type: 'widget', type: 'widget',
className: 'text-right', className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.entryAmount }) }
}, },
{ title: '提交时间', index: 'submitTime', width: 180, className: 'text-center' }, { title: '提交时间', index: 'submitTime', width: 180, className: 'text-center' },
{ title: '入账状态', index: 'stsLabel', width: 120, className: 'text-center' }, { title: '入账状态', render: 'sts', width: 120, className: 'text-center' },
{ {
title: '操作', title: '操作',
fixed: 'right', fixed: 'right',
@ -336,17 +365,15 @@ export class PartnerRecordedRecordComponent implements OnInit {
} }
/** /**
* 审核 * 审核
*/ */
audit(params: any, callback: Function, msg = '成功') { audit(params: any, callback: Function, msg = '成功') {
this.service this.service.request(this.service.$api_audit_recored, { ...params }).subscribe(res => {
.request(this.service.$api_audit_recored, { ...params }) if (res) {
.subscribe(res => { this.service.msgSrv.success(msg);
if (res) { callback();
this.service.msgSrv.success(msg); }
callback(); });
}
});
} }
search() { search() {
@ -361,6 +388,6 @@ export class PartnerRecordedRecordComponent implements OnInit {
if (res) { if (res) {
this.totalInfo = res; this.totalInfo = res;
} }
}) });
} }
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2022-04-21 13:49:22 * @Date : 2022-04-21 13:49:22
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-04-25 11:11:58 * @LastEditTime : 2022-05-12 15:02:19
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\recorded\\services\\recorded.service.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\recorded\\services\\recorded.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */
@ -22,6 +22,7 @@ export class RecordedService extends BaseService {
$api_agree_recorded = ``; // 同意审核 $api_agree_recorded = ``; // 同意审核
$api_audit_recored = `/api/bpc/partnerInvoiceEntry/oprationAudit`; // 审核单据 $api_audit_recored = `/api/bpc/partnerInvoiceEntry/oprationAudit`; // 审核单据
$api_get_list_summary = `/api/bpc/partnerInvoiceEntry/invoiceEntrySummary`; // 每页统计 $api_get_list_summary = `/api/bpc/partnerInvoiceEntry/invoiceEntrySummary`; // 每页统计
$api_get_getPartnerInvoiceEntryDetail = `/api/bpc/partnerInvoiceEntry/getPartnerInvoiceEntryDetail`; // 获取合伙人发票入账明细
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector); super(injector);
} }

View File

@ -9,6 +9,6 @@ const COMPONENTS: any = [DashboardComponent];
const NOTROUTECOMPONENTS: any = []; const NOTROUTECOMPONENTS: any = [];
@NgModule({ @NgModule({
declarations: [...COMPONENTS, ...NOTROUTECOMPONENTS], declarations: [...COMPONENTS, ...NOTROUTECOMPONENTS],
imports: [CommonModule, RegulatoryDataRoutingModule, SharedModule, SHARED_G2_MODULES] imports: [CommonModule, RegulatoryDataRoutingModule, SharedModule, ...SHARED_G2_MODULES]
}) })
export class RegulatoryDataModule {} export class RegulatoryDataModule {}

View File

@ -83,11 +83,6 @@ const routes: Routes = [
] ]
}, },
// passport // passport
{
path: 'agreement',
component: OrderAgreementComponent,
data: { title: '协议', titleI18n: 'app.login.agreement' }
},
{ path: '', loadChildren: () => import('./passport/passport.module').then(m => m.PassportModule) }, { path: '', loadChildren: () => import('./passport/passport.module').then(m => m.PassportModule) },
{ path: 'exception', loadChildren: () => import('./exception/exception.module').then(m => m.ExceptionModule) }, { path: 'exception', loadChildren: () => import('./exception/exception.module').then(m => m.ExceptionModule) },
// 单页不包裹Layout // 单页不包裹Layout

View File

@ -1,16 +1,23 @@
import { NgModule, Type } from '@angular/core'; import { NgModule, Type } from '@angular/core';
import { SharedModule } from '@shared'; import { BasicModuleModule, SharedModule, STWidgetModule } from '@shared';
// dashboard pages // dashboard pages
import { DashboardComponent } from './dashboard/dashboard.component'; import { DashboardComponent } from './dashboard/dashboard.component';
import { RouteRoutingModule } from './routes-routing.module'; import { RouteRoutingModule } from './routes-routing.module';
import { BasicTableComponent } from './commom/components/basic-table/basic-table.component'; import { BasicTableComponent } from './commom/components/basic-table/basic-table.component';
import { LayoutModule } from '../layout/layout.module';
import { GlobalConfigModule } from '../global-config.module';
const COMPONENTS = [DashboardComponent, BasicTableComponent]; const COMPONENTS = [DashboardComponent, BasicTableComponent];
const COMPONENTS_NOROUNT: Array<Type<void>> = []; const COMPONENTS_NOROUNT: Array<Type<void>> = [];
@NgModule({ @NgModule({
imports: [SharedModule, RouteRoutingModule], imports: [
LayoutModule,
BasicModuleModule,
GlobalConfigModule.forRoot(),
RouteRoutingModule
],
declarations: [...COMPONENTS, ...COMPONENTS_NOROUNT], declarations: [...COMPONENTS, ...COMPONENTS_NOROUNT],
entryComponents: COMPONENTS_NOROUNT entryComponents: COMPONENTS_NOROUNT
}) })

View File

@ -98,7 +98,7 @@
</ng-template> </ng-template>
<ng-template #tpl> <ng-template #tpl>
<span style="font-size: 14px;"> 国家法规及行政命令禁限运货物不能托运 <span style="font-size: 14px;"> 国家法规及行政命令禁限运货物不能托运
<a target="_blank" [queryParams]="{ type: 15 }" [routerLink]="['/agreement']">《禁运物品说明》</a> <a target="_blank" [queryParams]="{ type: 15 }" [routerLink]="['/passport/agreement']">《禁运物品说明》</a>
</span> </span>
</ng-template> </ng-template>
</sf> </sf>

View File

@ -219,13 +219,23 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
// } // }
} }
}, },
goodsName: {
type: 'string',
title: '货物名称',
ui: {
// hidden: true,
// visibleIf: {
// goodsTypeName: (value: any) => value && value !== '其它'
// }
}
},
goodsTypeId: { goodsTypeId: {
type: 'string', type: 'string',
title: '货物类型', title: '',
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
errors: { required: '请选择货物类型' }, errors: { required: '请选择货物名称' },
asyncData: () => asyncData: () =>
this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe( this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe(
map((data: any) => { map((data: any) => {
@ -247,47 +257,38 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
hidden: true hidden: true
} }
}, },
goodsNameId: {
type: 'string', // goodsName1: {
title: '', // type: 'string',
ui: { // title: '',
widget: 'select', // maxLength: 20,
placeholder: '请选择', // ui: {
errors: { required: '请填写货物类型' }, // errors: { required: '请填写货物名称' },
change: (value: any, data: any) => { // visibleIf: {
this.sf3.setValue('/goodsName', data.label); // goodsTypeName: (value: any) => value && value === '其它'
}, // },
visibleIf: { // blur: (value: any) => {
goodsTypeName: (value: any) => value && value !== '其它' // this.checkGoodsName();
} // }
} // }
}, // },
goodsName: { // goodsNameId: {
type: 'string', // type: 'string',
title: '', // title: '',
ui: { // ui: {
hidden: true, // widget: 'select',
visibleIf: { // placeholder: '请选择',
goodsTypeName: (value: any) => value && value !== '其它' // errors: { required: '请填写货物名称' },
} // change: (value: any, data: any) => {
} // // this.sf3.setValue('/goodsName', data.label);
}, // },
goodsName1: { // visibleIf: {
type: 'string', // goodsTypeName: (value: any) => value && value !== '其它'
title: '', // }
maxLength: 20, // }
ui: { // },
errors: { required: '请填写货物类型' },
visibleIf: {
goodsTypeName: (value: any) => value && value === '其它'
},
blur: (value: any) => {
this.checkGoodsName();
}
}
}
}, },
required: ['goodsTypeId', 'goodsName', 'goodsNameId', 'goodsName1'] required: ['goodsTypeId', 'goodsName', ]
}; };
this.ui3 = { this.ui3 = {
'*': { '*': {
@ -708,10 +709,6 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
const LoadingList = this.startInfo.concat(this.endInfo); const LoadingList = this.startInfo.concat(this.endInfo);
// 货物信息 // 货物信息
const sf3Values = { ...this.sf3.value }; const sf3Values = { ...this.sf3.value };
if (sf3Values.goodsTypeName === '其它') {
sf3Values.goodsName = sf3Values.goodsName1;
delete sf3Values.goodsName1;
}
if (this.sf4.value.carModel.includes('999')) { if (this.sf4.value.carModel.includes('999')) {
this.sf4.value.carModel = ['999']; this.sf4.value.carModel = ['999'];
} }

View File

@ -235,13 +235,34 @@ export class SupplyManagementBulkReleasePublishComponent implements OnInit {
initSF3() { initSF3() {
this.schema3 = { this.schema3 = {
properties: { properties: {
goodsTypeId: { goodsTips: {
type: 'string',
title: '',
ui: {
widget: 'custom',
class: 'goods_Tips_item',
// visibleIf: {
// goodsTypeName: (value: any) => value && value === '其它'
// }
}
},
goodsName: {
type: 'string', type: 'string',
title: '货物名称', title: '货物名称',
ui: {
// hidden: true,
// visibleIf: {
// goodsTypeName: (value: any) => value && value !== '其它'
// }
}
},
goodsTypeId: {
type: 'string',
title: '',
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
errors: { required: '请选择货物类型' }, errors: { required: '请选择货物名称' },
asyncData: () => asyncData: () =>
this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe( this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe(
map((data: any) => { map((data: any) => {
@ -263,44 +284,8 @@ export class SupplyManagementBulkReleasePublishComponent implements OnInit {
hidden: true hidden: true
} }
}, },
goodsNameId: {
type: 'string',
title: '',
ui: {
widget: 'select',
placeholder: '请选择',
errors: { required: '请填写货物名称' },
change: (value: any, data: any) => {
this.sf3.setValue('/goodsName', data.label);
},
visibleIf: {
goodsTypeName: (value: any) => value && value !== '其它'
}
}
},
goodsName: {
type: 'string',
title: '',
ui: {
hidden: true,
visibleIf: {
goodsTypeName: (value: any) => value && value !== '其它'
}
}
},
goodsName1: {
type: 'string',
title: '',
maxLength: 20,
ui: {
errors: { required: '请填写货物名称' },
visibleIf: {
goodsTypeName: (value: any) => value && value === '其它'
}
}
}
}, },
required: ['goodsTypeId', 'goodsName', 'goodsNameId','goodsName1'] required: ['goodsTypeId', 'goodsName', ]
}; };
this.ui3 = { this.ui3 = {
'*': { '*': {
@ -624,10 +609,6 @@ export class SupplyManagementBulkReleasePublishComponent implements OnInit {
// 货物信息 // 货物信息
const sf3Values = { ...this.sf3.value }; const sf3Values = { ...this.sf3.value };
if (sf3Values.goodsTypeName === '其它') {
sf3Values.goodsName = sf3Values.goodsName1;
delete sf3Values.goodsName1;
}
if (this.sf4.value.carModel.includes('999')) { if (this.sf4.value.carModel.includes('999')) {
this.sf4.value.carModel = ['999'] this.sf4.value.carModel = ['999']
} }

View File

@ -146,7 +146,7 @@
</ng-template> </ng-template>
<ng-template #tpl> <ng-template #tpl>
<span style="font-size: 14px;"> 国家法规及行政命令禁限运货物不能托运 <span style="font-size: 14px;"> 国家法规及行政命令禁限运货物不能托运
<a target="_blank" [queryParams]="{ type: 15 }" [routerLink]="['/agreement']">《禁运物品说明》</a> <a target="_blank" [queryParams]="{ type: 15 }" [routerLink]="['/passport/agreement']">《禁运物品说明》</a>
</span> </span>
</ng-template> </ng-template>
</sf> </sf>
@ -201,7 +201,7 @@
<nz-alert nzType="warning" [nzMessage]="template1" nzShowIcon></nz-alert> <nz-alert nzType="warning" [nzMessage]="template1" nzShowIcon></nz-alert>
</ng-template> </ng-template>
<ng-template #template1>①香港、澳门、台湾、西藏、新疆不予承保②单次运输保额仅限200万元以内③保险详细内容及注意事项请见<a target="_blank" <ng-template #template1>①香港、澳门、台湾、西藏、新疆不予承保②单次运输保额仅限200万元以内③保险详细内容及注意事项请见<a target="_blank"
[queryParams]="{ type: 10 }" [routerLink]="['/agreement']">《保险告知函》</a></ng-template> [queryParams]="{ type: 10 }" [routerLink]="['/passport/agreement']">《保险告知函》</a></ng-template>
</sf> </sf>
</div> </div>
</div> </div>

View File

@ -264,13 +264,23 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
// } // }
} }
}, },
goodsName: {
type: 'string',
title: '货物名称',
ui: {
// hidden: true,
// visibleIf: {
// goodsTypeName: (value: any) => value && value !== '其它'
// }
}
},
goodsTypeId: { goodsTypeId: {
type: 'string', type: 'string',
title: '货物类型', title: '',
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
errors: { required: '请选择货物类型' }, errors: { required: '请选择货物名称' },
asyncData: () => asyncData: () =>
this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe( this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe(
map((data: any) => { map((data: any) => {
@ -292,47 +302,38 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
hidden: true hidden: true
} }
}, },
goodsNameId: {
type: 'string', // goodsName1: {
title: '', // type: 'string',
ui: { // title: '',
widget: 'select', // maxLength: 20,
placeholder: '请选择', // ui: {
errors: { required: '请填写货物类型' }, // errors: { required: '请填写货物名称' },
change: (_value: any, data: any) => { // visibleIf: {
this.sf3.setValue('/goodsName', data.label); // goodsTypeName: (value: any) => value && value === '其它'
}, // },
visibleIf: { // blur: (value: any) => {
goodsTypeName: (value: any) => value && value !== '其它' // this.checkGoodsName();
} // }
} // }
}, // },
goodsName: { // goodsNameId: {
type: 'string', // type: 'string',
title: '', // title: '',
ui: { // ui: {
hidden: true, // widget: 'select',
visibleIf: { // placeholder: '请选择',
goodsTypeName: (value: any) => value && value !== '其它' // errors: { required: '请填写货物名称' },
} // change: (value: any, data: any) => {
} // // this.sf3.setValue('/goodsName', data.label);
}, // },
goodsName1: { // visibleIf: {
type: 'string', // goodsTypeName: (value: any) => value && value !== '其它'
title: '', // }
maxLength: 20, // }
ui: { // },
errors: { required: '请填写货物类型' },
visibleIf: {
goodsTypeName: (value: any) => value && value === '其它'
},
blur: (value: any) => {
this.checkGoodsName();
}
}
}
}, },
required: ['goodsTypeId', 'goodsName', 'goodsNameId', 'goodsName1'] required: ['goodsTypeId', 'goodsName', ]
}; };
this.ui3 = { this.ui3 = {
'*': { '*': {
@ -1013,10 +1014,8 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
// 货物信息 // 货物信息
const sf3Values = { ...this.sf3.value }; const sf3Values = { ...this.sf3.value };
if (sf3Values.goodsTypeName === '其它') { console.log(sf3Values);
sf3Values.goodsName = sf3Values.goodsName1;
delete sf3Values.goodsName1;
}
if (this.sf4.value.carModel.includes('999')) { if (this.sf4.value.carModel.includes('999')) {
this.sf4.value.carModel = ['999']; this.sf4.value.carModel = ['999'];
} }

View File

@ -145,7 +145,7 @@
</ng-template> </ng-template>
<ng-template #tpl> <ng-template #tpl>
<span style="font-size: 14px;"> 国家法规及行政命令禁限运货物不能托运 <span style="font-size: 14px;"> 国家法规及行政命令禁限运货物不能托运
<a target="_blank" [queryParams]="{ type: 15 }" [routerLink]="['/agreement']">《禁运物品说明》</a> <a target="_blank" [queryParams]="{ type: 15 }" [routerLink]="['/passport/agreement']">《禁运物品说明》</a>
</span> </span>
</ng-template> </ng-template>
</sf> </sf>
@ -200,7 +200,7 @@
<nz-alert nzType="warning" [nzMessage]="template1" nzShowIcon></nz-alert> <nz-alert nzType="warning" [nzMessage]="template1" nzShowIcon></nz-alert>
</ng-template> </ng-template>
<ng-template #template1>①香港、澳门、台湾、西藏、新疆不予承保②单次运输保额仅限200万元以内③保险详细内容及注意事项请见<a target="_blank" <ng-template #template1>①香港、澳门、台湾、西藏、新疆不予承保②单次运输保额仅限200万元以内③保险详细内容及注意事项请见<a target="_blank"
[queryParams]="{ type: 10 }" [routerLink]="['/agreement']">《保险告知函》</a></ng-template> [queryParams]="{ type: 10 }" [routerLink]="['/passport/agreement']">《保险告知函》</a></ng-template>
</sf> </sf>
</div> </div>
</div> </div>

View File

@ -251,13 +251,23 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
// } // }
} }
}, },
goodsName: {
type: 'string',
title: '货物名称',
ui: {
// hidden: true,
// visibleIf: {
// goodsTypeName: (value: any) => value && value !== '其它'
// }
}
},
goodsTypeId: { goodsTypeId: {
type: 'string', type: 'string',
title: '货物类型', title: '',
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
errors: { required: '请选择货物类型' }, errors: { required: '请选择货物名称' },
asyncData: () => asyncData: () =>
this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe( this.shipperSrv.loadConfigByKey('goods.name.config.type').pipe(
map((data: any) => { map((data: any) => {
@ -279,47 +289,38 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
hidden: true hidden: true
} }
}, },
goodsNameId: {
type: 'string', // goodsName1: {
title: '', // type: 'string',
ui: { // title: '',
widget: 'select', // maxLength: 20,
placeholder: '请选择', // ui: {
errors: { required: '请填写货物类型' }, // errors: { required: '请填写货物名称' },
change: (value: any, data: any) => { // visibleIf: {
this.sf3.setValue('/goodsName', data.label); // goodsTypeName: (value: any) => value && value === '其它'
}, // },
visibleIf: { // blur: (value: any) => {
goodsTypeName: (value: any) => value && value !== '其它' // this.checkGoodsName();
} // }
} // }
}, // },
goodsName: { // goodsNameId: {
type: 'string', // type: 'string',
title: '', // title: '',
ui: { // ui: {
hidden: true, // widget: 'select',
visibleIf: { // placeholder: '请选择',
goodsTypeName: (value: any) => value && value !== '其它' // errors: { required: '请填写货物名称' },
} // change: (value: any, data: any) => {
} // // this.sf3.setValue('/goodsName', data.label);
}, // },
goodsName1: { // visibleIf: {
type: 'string', // goodsTypeName: (value: any) => value && value !== '其它'
title: '', // }
maxLength: 20, // }
ui: { // },
errors: { required: '请填写货物类型' },
visibleIf: {
goodsTypeName: (value: any) => value && value === '其它'
},
blur: (value: any) => {
this.checkGoodsName();
}
}
}
}, },
required: ['goodsTypeId', 'goodsName', 'goodsNameId', 'goodsName1'] required: ['goodsTypeId', 'goodsName', ]
}; };
this.ui3 = { this.ui3 = {
'*': { '*': {
@ -978,10 +979,6 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
// 货物信息 // 货物信息
const sf3Values = { ...this.sf3.value }; const sf3Values = { ...this.sf3.value };
if (sf3Values.goodsTypeName === '其它') {
sf3Values.goodsName = sf3Values.goodsName1;
delete sf3Values.goodsName1;
}
if (this.sf4.value.carModel.includes('999')) { if (this.sf4.value.carModel.includes('999')) {
this.sf4.value.carModel = ['999']; this.sf4.value.carModel = ['999'];
} }
@ -1020,19 +1017,18 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
insurancePackagedGoods: this.sf4.value.insurancePackagedGoods, insurancePackagedGoods: this.sf4.value.insurancePackagedGoods,
goodsValue: this.sf4.value.goodsValue goodsValue: this.sf4.value.goodsValue
}; };
console.log(params); const modalRef = this.modalService.create({
// const modalRef = this.modalService.create({ nzTitle: '运输协议',
// nzTitle: '运输协议', nzContent: TranAgreementComponent,
// nzContent: TranAgreementComponent, nzWidth: 900,
// nzWidth: 900, nzFooter: null,
// nzFooter: null, nzComponentParams: { object: params, shipperName: this.shipperName, type: 'onecar' }
// nzComponentParams: { object: params, shipperName: this.shipperName, type: 'onecar' } });
// }); modalRef.afterClose.subscribe(result => {
// modalRef.afterClose.subscribe(result => { if (result) {
// if (result) { this.submit(submitType, params);
// this.submit(submitType, params); }
// } });
// });
} }
// 提交 // 提交
submit(submitType?: string, params?: any): void { submit(submitType?: string, params?: any): void {
@ -1287,7 +1283,7 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
this.service.request(this.service.$api_checkGoodsName, name).subscribe(res => { this.service.request(this.service.$api_checkGoodsName, name).subscribe(res => {
if (res === false) { if (res === false) {
const modalRef = this.modalService.error({ const modalRef = this.modalService.error({
nzTitle: '货物类型含有违禁词,请重新输入!', nzTitle: '货物名称含有违禁词,请重新输入!',
}); });
modalRef.afterClose.subscribe(result => { modalRef.afterClose.subscribe(result => {
// this.sf3.setValue('/goodsName1', null); // this.sf3.setValue('/goodsName1', null);

View File

@ -19,10 +19,10 @@
<div class="box"> <div class="box">
<se-container se-container="1"> <se-container se-container="1">
<se label="角色权限" required [labelWidth]="120"> <se label="角色权限" required [labelWidth]="120">
<app-cuc-menu #menu (changeData)="getData($event)" [type]="params.id === 0 ? 'add' : 'edit'" [roleId]="params.id" [appId]="params.appId" <app-menu-tree #menu (changeData)="getData($event)" [type]="params.id === 0 ? 'add' : 'edit'" [roleId]="params.id"
[isAuthorityIdDTOList]="roleInfoData.authority || []" [appId]="params.appId" [isAuthorityIdDTOList]="roleInfoData.authority || []"
[authorityAssistId]="roleInfoData.authorityAssistId || []" (changeIF)="changeIF($event)"> [authorityAssistId]="roleInfoData.authorityAssistId || []" (changeIF)="changeIF($event)">
</app-cuc-menu> </app-menu-tree>
</se> </se>
</se-container> </se-container>
</div> </div>

View File

@ -39,7 +39,7 @@
</div> </div>
<button nz-button nzDanger [nzLoading]="service.http.loading" acl [acl-ability]="['TAX-COLLECT-search']" <button nz-button nzDanger [nzLoading]="service.http.loading" acl [acl-ability]="['TAX-COLLECT-search']"
(click)="openDrawer()">筛选</button> (click)="openDrawer()">筛选</button>
<button nz-button nzDanger acl [acl-ability]="['TAX-COLLECT-export']"> 导出</button> <button nz-button nzDanger (click)="exprot()" acl [acl-ability]="['TAX-COLLECT-export']"> 导出</button>
<button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft"> <button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft">
更多<i nz-icon nzType="down" nzTheme="outline"></i></button> 更多<i nz-icon nzType="down" nzTheme="outline"></i></button>
<nz-dropdown-menu #menu="nzDropdownMenu"> <nz-dropdown-menu #menu="nzDropdownMenu">

View File

@ -245,7 +245,16 @@ export class TaxManagementIndividualCollectComponent extends BasicTableComponent
* @param params 更新数据 * @param params 更新数据
*/ */
uploadSetting() { uploadSetting() {
this.service.request(this.service.$api_get_updateData).subscribe((res: any) => { let params: any;
if (this.selectedRows.length === 0) {
params =[]
} else{
params =[]
this.selectedRows.forEach(item => {
params.push(item.id);
});
}
this.service.request(this.service.$api_get_updateData,params).subscribe((res: any) => {
if (res) { if (res) {
this.service.msgSrv.success('更新成功'); this.service.msgSrv.success('更新成功');
this.search(); this.search();
@ -257,10 +266,8 @@ export class TaxManagementIndividualCollectComponent extends BasicTableComponent
this.st.load(1); this.st.load(1);
} }
/** // 导出
* 异步导出 exprot() {
*/ this.service.exportStart({ ...this.reqParams, pageSize: -1 }, this.service.$api_taxSummary_export);
export() { }
this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
}
} }

View File

@ -26,8 +26,8 @@
</div> </div>
<!-- 数据列表 --> <!-- 数据列表 -->
<st #st [scroll]="{ x: '1200px',y:scrollY }" [data]="service.$api_get_taxDeclaration" [columns]="columns" <st #st [scroll]="{ x: '1200px', y: scrollY }" [data]="service.$api_get_taxDeclaration" [columns]="columns"
[req]="{ params: reqParams }" [page]="{ }" [loading]="false"> [req]="{ params: reqParams }" [page]="{}" [loading]="false" (change)="changeST($event)">
<ng-template st-row="orderStatus" let-item let-index="index"> <ng-template st-row="orderStatus" let-item let-index="index">
<a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{ item?.billStatusLabel }}</a> <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{ item?.billStatusLabel }}</a>
<span *ngIf="item?.billStatus !== '2'">{{ item?.billStatusLabel }}</span> <span *ngIf="item?.billStatus !== '2'">{{ item?.billStatusLabel }}</span>
@ -51,26 +51,17 @@
</div> </div>
<button nz-button nzDanger [nzLoading]="service.http.loading" acl [acl-ability]="['TAX-DECLARE-search']" <button nz-button nzDanger [nzLoading]="service.http.loading" acl [acl-ability]="['TAX-DECLARE-search']"
(click)="openDrawer()">筛选</button> (click)="openDrawer()">筛选</button>
<button nz-button nzDanger acl [acl-ability]="['TAX-DECLARE-export']"> 导出</button> <button nz-button nzDanger (click)="exprot()" acl [acl-ability]="['TAX-DECLARE-export']"> 导出</button>
<button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft"> <button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft">
更多<i nz-icon nzType="down" nzTheme="outline"></i></button> 更多<i nz-icon nzType="down" nzTheme="outline"></i></button>
<nz-dropdown-menu #menu="nzDropdownMenu"> <nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu> <ul nz-menu>
<li nz-menu-item (click)="upload()" acl [acl-ability]="['TAX-DECLARE-declare']"> <li nz-menu-item (click)="upload()" acl [acl-ability]="['TAX-DECLARE-declare']"> 申报 </li>
申报 <li nz-menu-item (click)="recall()" acl [acl-ability]="['TAX-DECLARE-change']"> 更正 </li>
</li> <li nz-menu-item (click)="uploadSetting()" acl [acl-ability]="['TAX-DECLARE-threshold']"> 修改起征点 </li>
<li nz-menu-item (click)="recall()" acl [acl-ability]="['TAX-DECLARE-change']"> <li nz-menu-item (click)="resetData()" acl [acl-ability]="['TAX-DECLARE-resetData']"> 更新数据 </li>
更正
</li>
<li nz-menu-item (click)="uploadSetting()" acl [acl-ability]="['TAX-DECLARE-threshold']">
修改起征点
</li>
<li nz-menu-item (click)="resetData()" acl [acl-ability]="['TAX-DECLARE-resetData']">
更新数据
</li>
</ul> </ul>
</nz-dropdown-menu> </nz-dropdown-menu>
</div> </div>
</ng-template> </ng-template>

View File

@ -1,6 +1,6 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent, STData } from '@delon/abc/st'; import { STChange, STColumn, STComponent, STData } from '@delon/abc/st';
import { SFDateWidgetSchema } from '@delon/form'; import { SFDateWidgetSchema } from '@delon/form';
import { SearchDrawerService } from '@shared'; import { SearchDrawerService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal'; import { NzModalService } from 'ng-zorro-antd/modal';
@ -26,6 +26,9 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
selectedIndex = ''; //选择的项目 selectedIndex = ''; //选择的项目
serviceTel = ''; serviceTel = '';
isVisible: boolean = false; isVisible: boolean = false;
checkedList: any[] = [];
// selectedRows:any[] =[];
constructor( constructor(
public service: TaxManagementService, public service: TaxManagementService,
private router: Router, private router: Router,
@ -63,18 +66,6 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
ngOnInit() { ngOnInit() {
this.initSF(); this.initSF();
this.initST(); this.initST();
const object1: any = {};
const object2: any = {};
Object.defineProperty(object1, 'name', { writable: false, value: 'wang' });
Object.defineProperty(object2, 'xxoo', { writable: false, value: 'wang' });
console.log(object1);
console.log(object1.name);
console.log(object2);
console.log(object2.xxoo);
object1.name = 'ming';
object2.xxoo = 'ming';
console.log(object1);
console.log(object2);
} }
/** /**
@ -110,13 +101,13 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
} }
}, },
isOvertime: { overtime: {
title: '是否逾期', title: '是否逾期',
type: 'string', type: 'string',
enum: [ enum: [
{ value: '', label: '全部' }, { value: '', label: '全部' },
{ value: false, label: '否' }, { value: '0', label: '否' },
{ value: true, label: '是' } { value: '1', label: '是' }
], ],
ui: { ui: {
placeholder: '请选择', placeholder: '请选择',
@ -178,11 +169,11 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
}, },
{ {
title: '是否逾期', title: '是否逾期',
index: 'overdueStatus', index: 'overtime',
className: 'text-center', className: 'text-center',
width: '120px', width: '120px',
type: 'enum', type: 'enum',
enum: { false: '否', true: '是' } enum: { '0': '否', '1': '是' }
}, },
{ {
title: '税款所属期起', title: '税款所属期起',
@ -202,7 +193,7 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
{ title: '证件类型', index: 'sfzjlx', className: 'text-center', width: '200px' }, { title: '证件类型', index: 'sfzjlx', className: 'text-center', width: '200px' },
{ title: '证件号码', index: 'sfzjhm', className: 'text-center', width: '200px' }, { title: '证件号码', index: 'sfzjhm', className: 'text-center', width: '200px' },
{ title: '联系电话', index: 'lxdh', className: 'text-center', width: '200px' }, { title: '联系电话', index: 'lxdh', className: 'text-center', width: '200px' },
{ title: '国家(地区)', index: ' gjdq', className: 'text-center', width: '200px' }, { title: '国家(地区)', index: 'gjdq', className: 'text-center', width: '200px' },
{ title: '所属行业', index: 'hy', className: 'text-center', width: '200px' }, { title: '所属行业', index: 'hy', className: 'text-center', width: '200px' },
{ title: '征收项目', index: 'zsxm', className: 'text-center', width: '200px' }, { title: '征收项目', index: 'zsxm', className: 'text-center', width: '200px' },
{ title: '征收品目', index: 'zsmp', className: 'text-center', width: '200px' }, { title: '征收品目', index: 'zsmp', className: 'text-center', width: '200px' },
@ -368,12 +359,13 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
this.openWainingModal('请选择需要申报的数据'); this.openWainingModal('请选择需要申报的数据');
return; return;
} }
// this.service.request(this.service.$api_recall_reporting, { rows: this.selectedRows }).subscribe((res: any) => { const ids = this.selectedRows.map(item => item?.id);
// if (res) { this.service.request(this.service.$api_declare_tax, ids).subscribe((res: any) => {
// this.service.msgSrv.success('申报成功'); if (res) {
// this.search(); this.service.msgSrv.success('申报成功');
// } this.search();
// }) }
})
} }
/** /**
@ -381,14 +373,15 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
* @param params 更新数据 * @param params 更新数据
*/ */
resetData() { resetData() {
let params: any;
if (this.selectedRows.length === 0) { if (this.selectedRows.length === 0) {
this.openWainingModal('请选择需要更新的数据'); params = []
return; } else {
params = []
this.selectedRows.forEach(item => {
params.push(item.id);
});
} }
let params: any[] = [];
this.selectedRows.forEach(item => {
params.push(item.id);
});
this.service.request(this.service.$api_get_taxDeclaration_updateAll, params).subscribe((res: any) => { this.service.request(this.service.$api_get_taxDeclaration_updateAll, params).subscribe((res: any) => {
if (res) { if (res) {
this.service.msgSrv.success('更新成功'); this.service.msgSrv.success('更新成功');
@ -428,11 +421,9 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
this.st.load(1); this.st.load(1);
} }
/** // 导出
* 异步导出 exprot() {
*/ this.service.exportStart({ ...this.reqParams, pageSize: -1 }, this.service.$api_taxDeclaration_export);
export() {
this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
} }
openWainingModal(content: string, title = '提示') { openWainingModal(content: string, title = '提示') {
@ -442,8 +433,60 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
nzContent: content nzContent: content
}); });
} }
handleOK() {} handleOK() { }
handleCancel() { handleCancel() {
this.isVisible = false; this.isVisible = false;
} }
/**
*
* @param e
*/
changeST(e: STChange): void {
if (e?.type === 'checkbox') {
if (e?.checkbox!.length === 0) {
// 全选取消
this.st.list.forEach((item, index) => {
this.st.setRow(index, { checked: false });
})
this.checkedList = [];
} else {
// 取消选择
if (this.checkedList.length > e?.checkbox!.length) {
const item = this.checkedList.find(item => !item?.checked);
this.st.list?.forEach(((row, index) => {
if (row?.driverId === item?.driverId && row?.ltdId === item?.ltdId && row?.taxMonth === item?.taxMonth) {
this.st.setRow(index, { checked: false });
this.checkedList = this.checkedList.filter(_item => _item?.id !== row?.id);
}
}))
} else {
// 全选
const allChecked = this.st?.list.every(item => item.checked);
if (allChecked) {
this.st.list?.forEach((row, index) => {
const flag = this.checkedList.find(_item => _item.id === row?.id);
if (!flag) {
this.checkedList.push(row);
}
})
return;
}
// 单个新增选择
const list = e?.checkbox?.filter(item => !this.checkedList.some(_item => _item?.id === item.id));
list?.forEach(item => {
this.st.list?.forEach((row, index) => {
if (row?.driverId === item?.driverId && row?.ltdId === item?.ltdId && row?.taxMonth === item?.taxMonth) {
this.st.setRow(index, { checked: true });
const flag = this.checkedList.find(_item => _item.id === row?.id);
if (!flag) {
this.checkedList.push(row);
}
}
})
})
}
}
}
}
} }

View File

@ -1,3 +1,13 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-05-06 15:31:19
* @LastEditors : Shiming
* @LastEditTime : 2022-05-11 21:04:42
* @FilePath : \\tms-obc-web\\src\\app\\routes\\tax-management\\components\\individual-income\\individual-income.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<!-- <page-header-wrapper [title]="''"></page-header-wrapper> <!-- <page-header-wrapper [title]="''"></page-header-wrapper>
<nz-card class="search-box"> <nz-card class="search-box">
<div nz-row nzGutter="8"> <div nz-row nzGutter="8">
@ -39,7 +49,7 @@
</div> </div>
<button nz-button nzDanger [nzLoading]="isLoading && st.loading" acl [acl-ability]="['TAX-INCOME-search']" <button nz-button nzDanger [nzLoading]="isLoading && st.loading" acl [acl-ability]="['TAX-INCOME-search']"
(click)="openDrawer()">筛选</button> (click)="openDrawer()">筛选</button>
<button nz-button nzDanger acl [acl-ability]="['TAX-INCOME-export']"> 导出</button> <button nz-button nzDanger (click)="exprot()" acl [acl-ability]="['TAX-INCOME-export']"> 导出</button>
<button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft"> <button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft">
更多<i nz-icon nzType="down" nzTheme="outline"></i></button> 更多<i nz-icon nzType="down" nzTheme="outline"></i></button>
<nz-dropdown-menu #menu="nzDropdownMenu"> <nz-dropdown-menu #menu="nzDropdownMenu">
@ -63,11 +73,17 @@
</div> </div>
</ng-template> </ng-template>
<nz-modal [(nzVisible)]="isVisible" [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate" (nzOnOk)="handleOK()" <nz-modal [(nzVisible)]="isVisible" [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate"
(nzOnCancel)="handleCancel()"> (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent> <ng-container *nzModalContent>
<div> 司机姓名:张三/13812345678 </div> <div *ngIf="oneStatus">
<div> 司机姓名:{{driverRecord?.xm}}/{{driverRecord.lxdh}} </div>
<div> 是否确认要将该司机的起征点同步调整为超过15万 </div> <div> 是否确认要将该司机的起征点同步调整为超过15万 </div>
</div>
<div *ngIf="!oneStatus">
<div> 已选择{{selectedRows.length}}个司机 </div>
<div> 是否确认要将该司机的起征点同步调整为超过15万 </div>
</div>
</ng-container> </ng-container>
<ng-template #nzModalFooterEvaluate> <ng-template #nzModalFooterEvaluate>
<button nz-button nzType="default" (click)="handleCancel()">取消</button> <button nz-button nzType="default" (click)="handleCancel()">取消</button>

View File

@ -23,8 +23,10 @@ export class TaxManagementIndividualIncomeComponent extends BasicTableComponent
]; ];
selectedIndex = '0'; //选择的项目 selectedIndex = '0'; //选择的项目
isVisible: boolean = false; isVisible: boolean = false;
oneStatus: boolean = false;
selectedRows: any[] = []; selectedRows: any[] = [];
driverRecord!: any;
constructor(public service: TaxManagementService, public searchDrawerService: SearchDrawerService) { constructor(public service: TaxManagementService, public searchDrawerService: SearchDrawerService) {
super(searchDrawerService); super(searchDrawerService);
@ -287,11 +289,20 @@ export class TaxManagementIndividualIncomeComponent extends BasicTableComponent
* @param record 记录实例 * @param record 记录实例
*/ */
resetData() { resetData() {
// if (this.selectedRows.length === 0) { if (this.selectedRows.length === 0) {
// this.openWainingModal('请选择需要更新的数据!'); this.service.msgSrv.error('请选择明细!');
// return; return;
// } }
// this.isVisible = true; if(this.selectedRows.length === 1) {
console.log(this.selectedRows);
this.oneStatus = true
this.driverRecord = this.selectedRows[0]
} else {
this.oneStatus = false
}
this.isVisible = true;
} }
selectChange(item: any) { selectChange(item: any) {
@ -326,7 +337,16 @@ export class TaxManagementIndividualIncomeComponent extends BasicTableComponent
* @param params 更新数据 * @param params 更新数据
*/ */
uploadSetting() { uploadSetting() {
this.service.request(this.service.$api_update_individual_income_page).subscribe((res: any) => { let params: any;
if (this.selectedRows.length === 0) {
params =[]
} else{
params =[]
this.selectedRows.forEach(item => {
params.push(item.id);
});
}
this.service.request(this.service.$api_update_individual_income_page, params).subscribe((res: any) => {
if (res) { if (res) {
this.service.msgSrv.success('更新成功'); this.service.msgSrv.success('更新成功');
this.search(); this.search();
@ -338,14 +358,23 @@ export class TaxManagementIndividualIncomeComponent extends BasicTableComponent
this.st.load(1); this.st.load(1);
} }
/** // 导出
* 异步导出 exprot() {
*/ this.service.exportStart({ ...this.sfValue,declareStatus: this.selectedIndex, pageSize: -1 }, this.service.$api_taxIncome_export);
export() { }
this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
}
handleOK() {} handleOK() {
let params: any = [];
if (this.selectedRows.length !== 0) {
this.selectedRows.forEach(item => {
params.push(item.id);
});
}
this.service.request(this.service.$api_fixThreshold, params).subscribe((res) => {
console.log(res);
})
}
handleCancel() { handleCancel() {
this.isVisible = false; this.isVisible = false;
} }

View File

@ -312,7 +312,7 @@ export class TaxManagementInvoiceReportingComponent extends BasicTableComponent
* 异步导出 * 异步导出
*/ */
export() { export() {
this.service.exportStart(this.reqParams, this.service.$api_invoiceUpload_export); this.service.exportStart({...this.reqParams, pageSize: -1 }, this.service.$api_invoiceUpload_export);
} }
openWainingModal(content: string, title = '提示') { openWainingModal(content: string, title = '提示') {

View File

@ -20,33 +20,37 @@
<nz-card class="table-box"> <nz-card class="table-box">
<div class="tab_header"> <div class="tab_header">
<label class="page_title"> <label class="driver">|</label> 订单上报</label> <label class="page_title"> <label class="driver">|</label> 订单上报</label>
<nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0"> <nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length > 0">
<nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)"> <nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)"> </nz-tab>
</nz-tab>
</nz-tabset> </nz-tabset>
</div> </div>
<!-- 数据列表 --> <!-- 数据列表 -->
<st #st [scroll]="{x:'1200px',y:scrollY}" [data]="service.$api_getTaxOrderPage_page" [columns]="columns" <st
[req]="{ params: reqParams }" [page]="{ }" [loading]="service.http.loading"> #st
[scroll]="{ x: '1200px', y: scrollY }"
[data]="service.$api_getTaxOrderPage_page"
[columns]="columns"
[req]="{ params: reqParams }"
[page]="{}"
[loading]="service.http.loading"
>
<ng-template st-row="putStatus" let-item let-index="index"> <ng-template st-row="putStatus" let-item let-index="index">
<!-- <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> --> <!-- <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> -->
<span *ngIf="item?.putStatus == '0'">待上传</span> <span *ngIf="item?.putStatus == '0'">待上传</span>
<span *ngIf="item?.putStatus == '1'">已上传</span> <span *ngIf="item?.putStatus == '1'">已上传</span>
<span *ngIf="item?.putStatus == '3'">上传中</span> <span *ngIf="item?.putStatus == '3'">上传中</span>
<span *ngIf="item?.putStatus == '2'" style="color: red;" (click)="unnormal(item)">上传异常</span> <span *ngIf="item?.putStatus == '2'" style="color: red" (click)="unnormal(item)">上传异常</span>
</ng-template> </ng-template>
<ng-template st-row="checkStatus" let-item let-index="index"> <ng-template st-row="checkStatus" let-item let-index="index">
<!-- <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> --> <!-- <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> -->
<span *ngIf="item?.checkStatus == '0'">校验中</span> <span *ngIf="item?.checkStatus == '0'">校验中</span>
<span *ngIf="item?.checkStatus == '1'">通过</span> <span *ngIf="item?.checkStatus == '1'">通过</span>
<!-- <span *ngIf="item?.checkStatus == '2'" style="color: red;" (click)="unnormal(item)">不通过</span> --> <!-- <span *ngIf="item?.checkStatus == '2'" style="color: red;" (click)="unnormal(item)">不通过</span> -->
<a *ngIf="item?.checkStatus == '2'" style="color: red;" (click)="viewResult(item)">不通过</a> <a *ngIf="item?.checkStatus == '2'" style="color: red" (click)="viewResult(item)">不通过</a>
</ng-template> </ng-template>
<ng-template st-row="driverName" let-item let-index="index"> <ng-template st-row="driverName" let-item let-index="index">
<div> {{ item?.driverName }}{{ item?.driverPhone ? "/" + item?.driverPhone : '' }} </div> <div> {{ item?.driverName }}{{ item?.driverPhone ? '/' + item?.driverPhone : '' }} </div>
</ng-template> </ng-template>
<!-- <ng-template st-row="localValid" let-item let-index="index"> <!-- <ng-template st-row="localValid" let-item let-index="index">
<a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a>
@ -55,33 +59,44 @@
<ng-template st-row="loadingPicture" let-item let-index="index"> <ng-template st-row="loadingPicture" let-item let-index="index">
<div class="imgBox"> <div class="imgBox">
<div *ngIf="item.loadingPicture"> <div *ngIf="item.loadingPicture">
<app-imagelist style="width: 60px" [imgList]="[item.loadingPicture]"> </app-imagelist> <a (click)="viewPhoto([item.loadingPicture])" class="text-blue-dark" nzType="text" nz-button>查看</a>
<!-- <app-imagelist style="width: 60px" [imgList]="[item.loadingPicture]"> </app-imagelist> -->
</div> </div>
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="unloadPicture" let-item let-index="index"> <ng-template st-row="unloadPicture" let-item let-index="index">
<div class="imgBox"> <div class="imgBox">
<div *ngIf="item.unloadPicture"> <div *ngIf="item.unloadPicture">
<app-imagelist style="width: 40px" [imgList]="[item.unloadPicture]"> </app-imagelist> <a (click)="viewPhoto([item.unloadPicture])" class="text-blue-dark" nzType="text" nz-button>查看</a>
<!-- <app-imagelist style="width: 40px" [imgList]="[item.unloadPicture]"> </app-imagelist> -->
</div> </div>
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="loadingLadingBill" let-item let-index="index"> <ng-template st-row="loadingLadingBill" let-item let-index="index">
<div class="imgBox"> <div class="imgBox">
<div *ngIf="item.loadingLadingBill"> <div *ngIf="item.loadingLadingBill">
<app-imagelist style="width: 40px" [imgList]="[item.loadingLadingBill]"> </app-imagelist> <a (click)="viewPhoto([item.loadingLadingBill])" class="text-blue-dark" nzType="text" nz-button>查看</a>
<!-- <app-imagelist style="width: 40px" [imgList]="[item.loadingLadingBill]"> </app-imagelist> -->
</div> </div>
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="goodsName" let-item let-index="index">
<div>{{ item.goodsName ? item.goodsName : '--' }} </div>
<div> {{ item.loadWeight ? item.loadWeight : '--' }}吨/{{ item.loadVolume ?item.loadVolume: '--' }}方 </div>
</ng-template>
<ng-template st-row="signatureForm" let-item let-index="index"> <ng-template st-row="signatureForm" let-item let-index="index">
<div class="imgBox"> <div class="imgBox">
<div *ngIf="item.signatureForm"> <div *ngIf="item.signatureForm">
<app-imagelist style="width: 40px" [imgList]="[item.signatureForm]"> </app-imagelist> <a (click)="viewPhoto([item.signatureForm])" class="text-blue-dark" nzType="text" nz-button>查看</a>
<!-- <app-imagelist style="width: 40px" [imgList]="[item.signatureForm]"> </app-imagelist> -->
</div> </div>
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="orderAmount" let-item let-index="index"> <ng-template st-row="orderAmount" let-item let-index="index">
<div class="text-right">{{item?.orderAmount | currency }}</div> <div class="text-right">{{ item?.orderAmount | currency }}</div>
</ng-template>
<ng-template st-row="wayAmount" let-item let-index="index">
<div class="text-right">{{ item?.wayAmount | currency }}</div>
</ng-template> </ng-template>
</st> </st>
</nz-card> </nz-card>
@ -91,25 +106,19 @@
已选择 已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 <strong class="text-red">{{ selectedRows.length }}</strong> 条数据
</div> </div>
<button nz-button nzDanger [nzLoading]="isLoading && st.loading" acl [acl-ability]="['TAX-ORDERREPORT-search']" <button nz-button nzDanger [nzLoading]="isLoading && st.loading" acl [acl-ability]="['TAX-ORDERREPORT-search']" (click)="openDrawer()"
(click)="openDrawer()">筛选</button> >筛选</button
>
<button nz-button nzDanger acl [acl-ability]="['TAX-ORDERREPORT-export']"> 导出</button> <button nz-button nzDanger acl [acl-ability]="['TAX-ORDERREPORT-export']"> 导出</button>
<button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft"> <button nz-button nz-dropdown [nzDropdownMenu]="menu" nzPlacement="bottomLeft">
更多<i nz-icon nzType="down" nzTheme="outline"></i></button> 更多<i nz-icon nzType="down" nzTheme="outline"></i
></button>
<nz-dropdown-menu #menu="nzDropdownMenu"> <nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu> <ul nz-menu>
<li nz-menu-item (click)="upload()" acl [acl-ability]="['TAX-ORDERREPORT-upload']"> <li nz-menu-item (click)="upload()" acl [acl-ability]="['TAX-ORDERREPORT-upload']"> 上传 </li>
上传 <li nz-menu-item (click)="recall()" acl [acl-ability]="['TAX-ORDERREPORT-recall']"> 撤回 </li>
</li> <li nz-menu-item (click)="resetData()" acl [acl-ability]="['TAX-ORDERREPORT-resetData']"> 更新数据 </li>
<li nz-menu-item (click)="recall() " acl [acl-ability]="['TAX-ORDERREPORT-recall']"> <li nz-menu-item (click)="uploadSetting()" acl [acl-ability]="['TAX-ORDERREPORT-uploadSetting']"> 税务设置 </li>
撤回
</li>
<li nz-menu-item (click)="resetData()" acl [acl-ability]="['TAX-ORDERREPORT-resetData']">
更新数据
</li>
<li nz-menu-item (click)="uploadSetting()" acl [acl-ability]="['TAX-ORDERREPORT-uploadSetting']">
税务设置
</li>
</ul> </ul>
</nz-dropdown-menu> </nz-dropdown-menu>
</div> </div>

View File

@ -10,6 +10,8 @@ import { BasicTableComponent } from 'src/app/routes/commom';
import { TaxManagementService } from '../../services/tax-management.service'; import { TaxManagementService } from '../../services/tax-management.service';
import { TaxManagementUploadSettingComponent } from './upload-setting/upload-setting.component'; import { TaxManagementUploadSettingComponent } from './upload-setting/upload-setting.component';
import { TaxManagementOrderVerifyResultComponent } from './verify-result/verify-result.component'; import { TaxManagementOrderVerifyResultComponent } from './verify-result/verify-result.component';
import { NzImageService } from 'ng-zorro-antd/image';
import { image } from 'html2canvas/dist/types/css/types/image';
@Component({ @Component({
selector: 'app-tax-management-order-reporting', selector: 'app-tax-management-order-reporting',
@ -35,7 +37,8 @@ export class TaxManagementOrderReportingComponent extends BasicTableComponent im
private router: Router, private router: Router,
private ar: ActivatedRoute, private ar: ActivatedRoute,
private modal: NzModalService, private modal: NzModalService,
public searchDrawerService: SearchDrawerService public searchDrawerService: SearchDrawerService,
public imageService: NzImageService
) { ) {
super(searchDrawerService); super(searchDrawerService);
} }
@ -226,17 +229,17 @@ export class TaxManagementOrderReportingComponent extends BasicTableComponent im
{ title: '卸货地详细地址', index: 'unloadDetailedAddress', className: 'text-center', width: '180px' }, { title: '卸货地详细地址', index: 'unloadDetailedAddress', className: 'text-center', width: '180px' },
{ title: '货主名称', index: 'shipperName', className: 'text-center', width: '180px' }, { title: '货主名称', index: 'shipperName', className: 'text-center', width: '180px' },
{ title: '货主纳税人识别号', index: 'shipperProvinceCode', className: 'text-center', width: '180px' }, { title: '货主纳税人识别号', index: 'shipperProvinceCode', className: 'text-center', width: '180px' },
{ title: '录单时间', index: 'recordTime', className: 'text-center', width: '250px' }, { title: '录单时间', index: 'billCreateTime', className: 'text-center', width: '250px' },
{ title: '接单时间', index: 'wayBillCreateTime', className: 'text-center', width: '200px' }, { title: '接单时间', index: 'wayBillCreateTime', className: 'text-center', width: '200px' },
{ title: '发车时间', index: 'loadTime', className: 'text-center', width: '200px' }, { title: '发车时间', index: 'loadTime', className: 'text-center', width: '200px' },
{ title: '到车时间', index: 'unloadTime', className: 'text-center', width: '150px' }, { title: '到车时间', index: 'unloadTime', className: 'text-center', width: '150px' },
{ title: '结束时间', index: 'payeeName', className: 'text-center', width: '150px' }, { title: '结束时间', index: 'orderPayTime', className: 'text-center', width: '150px' },
{ title: '订单金额', render: 'orderAmount', className: 'text-center', width: '120px' }, { title: '订单金额', render: 'orderAmount', className: 'text-center', width: '120px' },
{ title: '司机姓名', render: 'driverName', className: 'text-center', width: '150px' }, { title: '司机姓名', render: 'driverName', className: 'text-center', width: '150px' },
{ title: '司机身份证号', index: 'transpdriverCertificateNumberortInfo', className: 'text-center', width: '180px' }, { title: '司机身份证号', index: 'driverCertificateNumber', className: 'text-center', width: '180px' },
{ title: '车牌号', index: 'carNo', className: 'text-center', width: '100px' }, { title: '车牌号', index: 'carNo', className: 'text-center', width: '100px' },
{ title: '货物信息', render: 'transportInfo', className: 'text-center', width: '200px' }, { title: '货物信息', render: 'goodsName', className: 'text-center', width: '200px' },
{ title: '运费金额', render: 'payeeName', className: 'text-center', width: '100px' }, { title: '运费金额', render: 'wayAmount', className: 'text-center', width: '100px' },
{ title: '装卸方式', index: 'loadingUnloadWay', className: 'text-center', width: '180px' }, { title: '装卸方式', index: 'loadingUnloadWay', className: 'text-center', width: '180px' },
{ title: '支付方式', index: 'payMent', className: 'text-center', width: '150px' }, { title: '支付方式', index: 'payMent', className: 'text-center', width: '150px' },
{ title: '支付账号', index: 'paymentAccount', className: 'text-center', width: '200px' }, { title: '支付账号', index: 'paymentAccount', className: 'text-center', width: '200px' },
@ -285,14 +288,16 @@ export class TaxManagementOrderReportingComponent extends BasicTableComponent im
* @param record 记录实例 * @param record 记录实例
*/ */
resetData() { resetData() {
let params: any = {};
if (this.selectedRows.length === 0) { if (this.selectedRows.length === 0) {
this.openWainingModal('请选择需要更新的数据!'); params ={}
return; } else{
params =[]
this.selectedRows.forEach(item => {
params.push(item.billId);
});
} }
let params: any[] = [];
this.selectedRows.forEach(item => {
params.push(item.billId);
});
this.service.request(this.service.$api_get_renewalOrderById, params).subscribe((res: any) => { this.service.request(this.service.$api_get_renewalOrderById, params).subscribe((res: any) => {
if (res) { if (res) {
this.service.msgSrv.success('更新成功'); this.service.msgSrv.success('更新成功');
@ -462,7 +467,7 @@ export class TaxManagementOrderReportingComponent extends BasicTableComponent im
* 异步导出 * 异步导出
*/ */
export() { export() {
this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list); this.service.exportStart({...this.reqParams, pageSize: -1} ,this.service.$api_async_export_order_reporting_list);
} }
openWainingModal(content: string, title = '提示') { openWainingModal(content: string, title = '提示') {
@ -472,4 +477,12 @@ export class TaxManagementOrderReportingComponent extends BasicTableComponent im
nzContent: content nzContent: content
}); });
} }
viewPhoto(images: any[]) {
if (images.length > 0) {
const imgs = images.map(item => ({ src: item }));
this.imageService.preview(imgs);
}
}
} }

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2021-12-27 10:30:56 * @Date : 2021-12-27 10:30:56
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-04-19 14:19:44 * @LastEditTime : 2022-05-11 14:53:31
* @FilePath : \\tms-obc-web\\src\\app\\routes\\tax-management\\services\\tax-management.service.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\tax-management\\services\\tax-management.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */
@ -60,8 +60,18 @@ export class TaxManagementService extends ShipperBaseService {
$api_getInvoiceReport_page = '/api/sdc/invoiceUploadInfo/list/page'; $api_getInvoiceReport_page = '/api/sdc/invoiceUploadInfo/list/page';
// 发票上传列表导出 // 发票上传列表导出
$api_invoiceUpload_export = '/api/sdc/invoiceUploadInfo/reportList'; $api_invoiceUpload_export = '/api/sdc/invoiceUploadInfo/reportList';
// 个税明细导出接口
$api_taxIncome_export = '/api/sdc/taxIncome/asyncExport';
// 个税汇总导出接口
$api_taxSummary_export = '/api/sdc/taxSummary/asyncExport';
// 税务申报导出接口
$api_taxDeclaration_export = '/api/sdc/taxDeclaration/asyncExport';
// 发票上传撤回 // 发票上传撤回
$api_invoiceUpload_withdraw = '/api/sdc/invoiceUploadInfo/withdraw'; $api_invoiceUpload_withdraw = '/api/sdc/invoiceUploadInfo/withdraw';
// 修改起征点
$api_fixThreshold = '/api/sdc/taxIncome/fixThreshold';
//申报
$api_declare_tax = `/api/sdc/taxDeclaration/declare`;
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector); super(injector);
} }

View File

@ -35,7 +35,7 @@ const COMPONENTS: Type<void>[] = [
imports: [ imports: [
SharedModule, SharedModule,
TaxManagementModuleRoutingModule, TaxManagementModuleRoutingModule,
SHARED_G2_MODULES ...SHARED_G2_MODULES
], ],
declarations: COMPONENTS, declarations: COMPONENTS,
}) })

Some files were not shown because too many files have changed in this diff Show More