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

This commit is contained in:
潘晓云
2022-05-11 15:15:28 +08:00
23 changed files with 568 additions and 339 deletions

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-11 10:12:55 * @LastEditTime : 2022-05-11 13:29:32
* @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

@ -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

@ -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

@ -1,8 +1,7 @@
import { Component, Input, OnInit, ViewChild } from '@angular/core'; import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { SFComponent, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFValue } from '@delon/form'; import { SFComponent, SFSchema, SFValue } from '@delon/form';
import { ModalHelper } from '@delon/theme'; import { ModalHelper } from '@delon/theme';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { of } from 'rxjs';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { PartnerListService } from '../../services/partner-list.service'; import { PartnerListService } from '../../services/partner-list.service';
@ -25,6 +24,7 @@ export class PartnerAuditModalComponent implements OnInit {
console.log(this.info); console.log(this.info);
this.initSF(this.info); this.initSF(this.info);
// asyncData: () => this.service.getChannel(), // asyncData: () => this.service.getChannel(),
if(this.info.channelId) { if(this.info.channelId) {
const value = [{ const value = [{
label: this.info.channelIdLabel, label: this.info.channelIdLabel,
@ -38,26 +38,20 @@ export class PartnerAuditModalComponent implements OnInit {
} }
}) })
} else {
this.service.getChannel().subscribe((res) => {
console.log(res);
const value :any= res;
setTimeout(() => {
if(this.sf) {
this.sf.getProperty('/channelId')!.schema.enum = value;
this.sf.getProperty('/channelId')!.widget.reset(value);
this.sf.setValue('/channelId', value);
} }
// else { })
// console.log() })
// this.service.getChannel().pipe(map(data => {
// console.log(data);
// })) }
// this.service.getChannel().subscribe((res) => {
// console.log(res);
// const value :any= res;
// setTimeout(() => {
// if(this.sf) {
// this.sf.getProperty('/channelId2')!.schema.enum = value;
// this.sf.getProperty('/channelId2')!.widget.reset(value);
// this.sf.setValue('/channelId2', value);
// }
// })
// })
// }
} }
initSF(user: any) { initSF(user: any) {
@ -91,36 +85,21 @@ export class PartnerAuditModalComponent implements OnInit {
default: this.info.isPass !== undefined ? this.info.isPass : true default: this.info.isPass !== undefined ? this.info.isPass : true
}, },
channelId: { channelId: {
type: 'string',
title: '渠道销售', title: '渠道销售',
type: 'string',
ui: { ui: {
widget: 'select', widget: 'select',
hidden: this.info.isPass === false, placeholder: '请选择',
serverSearch: true,
searchDebounceTime: 300,
searchLoadingText: '搜索中...',
allowClear: true, allowClear: true,
onSearch: (q: any) => { hidden: this.info.isPass === false,
let str = q.replace(/^\s+|\s+$/g, ''); visibleIf: {
let params :any= {} status: value => value
if (str) { },
console.log(+str); errors: {
if(+str) { required: ' '
console.log('数字');
params.phoneNumber = str
} else {
console.log('中文');
params.name = str
}
return this.service
.request(this.service.$api_get_channel, params)
.pipe(map((res: any) => (res as any[]).map(i => ({ label: `${i.name}/${i.telephone}`, value: i.id } as SFSchemaEnum))))
.toPromise();
} else {
return of([]);
} }
}, },
} as SFSelectWidgetSchema default: user.channelId
}, },
approvalOpinion: { approvalOpinion: {
title: '备注', title: '备注',
@ -140,8 +119,10 @@ export class PartnerAuditModalComponent implements OnInit {
} }
} }
}, },
required: [ 'approvalOpinion','channelId'] required: ['channelId', 'approvalOpinion']
}; };
console.log('666');
} }
sure() { sure() {

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,8 +106,14 @@
<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"
@ -92,12 +121,19 @@
{{ 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,25 +201,25 @@
<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>
@ -177,27 +234,48 @@
{{ 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

@ -244,11 +244,12 @@
</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=""> </sv-container>
<st <st
#st #st
[scroll]="{x: '1200px'}"
[data]="service.$api_get_personal_channel_list" [data]="service.$api_get_personal_channel_list"
[columns]="columns" [columns]="columns"
[req]="{ params: { partnerId: route.snapshot.params.id } }" [req]="{ params: { partnerId: route.snapshot.params.id } }"
@ -256,11 +257,8 @@
bordered bordered
size="small" size="small"
[page]="{ show: false }" [page]="{ show: false }"
[scroll]="{ x: '1200px' }"
> >
</st> </st>
</sv>
</sv-container>
</nz-card> </nz-card>
<ng-template #PopconfirmTempalte let-title="title" let-content="content"> <ng-template #PopconfirmTempalte let-title="title" let-content="content">

View File

@ -94,7 +94,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit {
}, },
{ {
title: '创建时间', title: '创建时间',
index: 'enableTime', index: 'createTime',
width: '200px' width: '200px'
}, },
{ {

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

@ -29,44 +29,44 @@ export class PartnerRecordedDetailComponent implements OnInit {
this.formData = res; this.formData = res;
// 处理流程节点数据 // 处理流程节点数据
// 流程是否结束 // 流程是否结束
// let isEnd = false; let isEnd = false;
// if (res.successTime) { if (res.successTime) {
// isEnd = true; isEnd = true;
// if (res.refundStatus === '3') { if (res.refundStatus === '3') {
// this.timeLineData.push({ time: res.successTime, value: `到账成功`, color: 'green' }); this.timeLineData.push({ time: res.successTime, value: `到账成功`, color: 'green' });
// } else { } else {
// this.timeLineData.push({ time: res.successTime, value: `提现失败`, color: 'red' }); this.timeLineData.push({ time: res.successTime, value: `提现失败`, color: 'red' });
// } }
// } }
// if (res.agreeTime && res.refundStatus !== '4') { if (res.agreeTime && res.refundStatus !== '4') {
// this.timeLineData.push({ time: res.agreeTime, value: `银行处理中`, color: 'gray' }); this.timeLineData.push({ time: res.agreeTime, value: `银行处理中`, color: 'gray' });
// } }
// if (res.agreeTime) { if (res.agreeTime) {
// if (res.refundStatus === '4') { if (res.refundStatus === '4') {
// isEnd = true; isEnd = true;
// this.timeLineData.push({ this.timeLineData.push({
// time: res.agreeTime, time: res.agreeTime,
// value: `拒绝提现<br/>操作人员:${res.handlerUserIdLabel}`, value: `拒绝提现<br/>操作人员:${res.handlerUserIdLabel}`,
// color: 'red' color: 'red'
// }); });
// } else { } else {
// this.timeLineData.push({ this.timeLineData.push({
// time: res.agreeTime, time: res.agreeTime,
// value: `审核通过<br/>操作人员:${res.handlerUserIdLabel}`, value: `审核通过<br/>操作人员:${res.handlerUserIdLabel}`,
// color: 'gray' color: 'gray'
// }); });
// } }
// } }
// if (res.createTime) { if (res.createTime) {
// this.timeLineData.push({ this.timeLineData.push({
// time: res.createTime, time: res.createTime,
// value: `提交提现申请<br/>提现${res.amount}元至${res.bankName}(${res.bankCardNumber})<br/>操作人员:${res.userIdLabel}`, value: `提交提现申请<br/>提现${res.amount}元至${res.bankName}(${res.bankCardNumber})<br/>操作人员:${res.userIdLabel}`,
// color: 'gray' color: 'gray'
// }); });
// } }
// if (this.timeLineData?.length > 0 && !isEnd) { if (this.timeLineData?.length > 0 && !isEnd) {
// this.timeLineData[0].color = 'green'; this.timeLineData[0].color = 'green';
// } }
} }
}); });
} }

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-11 10:11:53 * @LastEditTime : 2022-05-11 14:25:14
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\recorded\\components\\record\\record.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\recorded\\components\\record\\record.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
@ -34,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>
@ -68,16 +68,22 @@
{{ item.bankName }} <br /> {{ item.bankName }} <br />
{{ item.bankCardNumber }} {{ item.bankCardNumber }}
</ng-template> </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>
</st> </st>
<div class="text-md" *ngIf="st?.list?.length !== 0"> <div class="text-md" *ngIf="st?.list?.length !== 0">
<span class="mr-md" <span class="mr-md"
>合伙人数:<label 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" <span class="mr-md"
>入账笔数:<label class="text-red-dark font-weight-bold">{{ totalInfo?.count }}</label></span >入账笔数:<label class="text-red-dark font-weight-bold">{{ totalInfo?.invoiceEntryNum }}</label></span
> >
<span class="mr-md" <span class="mr-md"
>开票金额:<label class="text-red-dark font-weight-bold">{{ totalInfo?.invoiceEntryNum }}</label></span >开票金额:<label class="text-red-dark font-weight-bold">{{ totalInfo?.invoiceAmountSum }}</label></span
> >
<span class="mr-md" <span class="mr-md"
>代缴个税:<label class="text-red-dark font-weight-bold">{{ totalInfo?.taxPersonalSum }}</label></span >代缴个税:<label class="text-red-dark font-weight-bold">{{ totalInfo?.taxPersonalSum }}</label></span

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(
{ ids: params, rejectReason: this.msg, sts: '3' },
() => {
modal.destroy(); modal.destroy();
this.st.load(1); 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(
{ ids: params, rejectReason: this.msg, sts: '1' },
() => {
modal.destroy(); modal.destroy();
this.st.load(1); 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',
@ -339,9 +368,7 @@ 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 })
.subscribe(res => {
if (res) { if (res) {
this.service.msgSrv.success(msg); this.service.msgSrv.success(msg);
callback(); callback();
@ -361,6 +388,6 @@ export class PartnerRecordedRecordComponent implements OnInit {
if (res) { if (res) {
this.totalInfo = res; this.totalInfo = res;
} }
}) });
} }
} }

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

@ -257,10 +257,8 @@ export class TaxManagementIndividualCollectComponent extends BasicTableComponent
this.st.load(1); this.st.load(1);
} }
/** // 导出
* 异步导出 exprot() {
*/ this.service.exportStart({ ...this.sfValue, 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,15 @@
</div> </div>
<!-- 数据列表 --> <!-- 数据列表 -->
<st #st [scroll]="{ x: '1200px',y:scrollY }" [data]="service.$api_get_taxDeclaration" [columns]="columns" <st
[req]="{ params: reqParams }" [page]="{ }" [loading]="false"> #st
[scroll]="{ x: '1200px', y: scrollY }"
[data]="service.$api_get_taxDeclaration"
[columns]="columns"
[req]="{ params: reqParams }"
[page]="{}"
[loading]="false"
>
<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>
@ -49,33 +56,25 @@
已选择 已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 <strong class="text-red">{{ selectedRows.length }}</strong> 条数据
</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()"
(click)="openDrawer()">筛选</button> >筛选</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>
<nz-modal [(nzVisible)]="isVisible" [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate" (nzOnOk)="handleOK()" <nz-modal [(nzVisible)]="isVisible" [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
(nzOnCancel)="handleCancel()">
<ng-container *nzModalContent> <ng-container *nzModalContent>
<div> 司机姓名:张三/13812345678 </div> <div> 司机姓名:张三/13812345678 </div>
<div> 是否确认要将该司机的起征点同步调整为超过15万 </div> <div> 是否确认要将该司机的起征点同步调整为超过15万 </div>

View File

@ -428,11 +428,9 @@ export class TaxManagementIndividualDeclareComponent extends BasicTableComponent
this.st.load(1); this.st.load(1);
} }
/** // 导出
* 异步导出 exprot() {
*/ this.service.exportStart({ ...this.sfValue, 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 = '提示') {

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 14:54:00
* @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">

View File

@ -338,11 +338,9 @@ export class TaxManagementIndividualIncomeComponent extends BasicTableComponent
this.st.load(1); this.st.load(1);
} }
/** // 导出
* 异步导出 exprot() {
*/ this.service.exportStart({ ...this.sfValue, pageSize: -1 }, this.service.$api_taxIncome_export);
export() {
this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
} }
handleOK() {} handleOK() {}

View File

@ -226,7 +226,7 @@ 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' },

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,6 +60,12 @@ 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';
constructor(public injector: Injector) { constructor(public injector: Injector) {

View File

@ -105,7 +105,7 @@ export class InputInvoiceDetailComponent implements OnInit {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择',
allowClear: true, allowClear: true,
asyncData: () => this.service.getCloseAccount(), asyncData: () => this.service.getCloseAccount()
}, },
default: '' default: ''
}, },
@ -137,15 +137,15 @@ export class InputInvoiceDetailComponent implements OnInit {
private initST(): STColumn[] { private initST(): STColumn[] {
return [ return [
{ title: '序号', render: 'billHCode', width: 80 }, { title: '序号', render: 'billHCode', width: 40, className: 'text-center' },
{ title: '费用号', index: 'feecode', width: 100 }, { title: '费用号', index: 'feecode', width: 140 },
{ title: '费用日期', index: 'feedate', type: 'date', width: 150 }, { title: '费用日期', index: 'feedate', width: 150, className: 'text-center' },
{ title: '订单号', index: 'billHCode', width: 100 }, { title: '订单号', index: 'billHCode', width: 100 },
{ title: '订单日期', index: 'billTime', width: 150 }, { title: '订单日期', index: 'billTime', width: 150, className: 'text-center' },
{ title: '结算客户', index: 'cnoName', width: 90 }, { title: '结算客户', index: 'cnoName', width: 90 },
{ title: '费用科目', index: 'feesubname', width: 100 }, { title: '费用科目', index: 'feesubname', width: 100 },
{ title: '收票金额', render: 'invmoney', width: 140 }, { title: '收票金额', render: 'invmoney', width: 120, className: 'text-right' },
{ title: '收票税额', render: 'invtax', width: 100 } { title: '收票税额', render: 'invtax', width: 100, className: 'text-right' }
]; ];
} }
} }

View File

@ -90,10 +90,10 @@ export class EditPartnerComponentsAddComponent implements OnInit {
remark: { remark: {
type: 'string', type: 'string',
title: '备注', title: '备注',
maxLength: 50,
ui: { ui: {
widget: 'textarea', widget: 'textarea',
placeholder: '请不要超过50个字', placeholder: '请不要超过50个字',
maxLength: 50,
autosize: { minRows: 2, maxRows: 6 } autosize: { minRows: 2, maxRows: 6 }
} }
}, },
@ -110,7 +110,7 @@ export class EditPartnerComponentsAddComponent implements OnInit {
], ],
}, },
}, },
required: ['channelId', 'remark', 'effectiveNode'] required: ['partnerId','settStartTime', 'remark', 'effectiveNode']
}; };
this.ui = { this.ui = {
'*': { '*': {