This commit is contained in:
Taric Xin
2022-03-10 16:13:53 +08:00
38 changed files with 1940 additions and 171 deletions

View File

@ -16,9 +16,9 @@
</ng-template>
</page-header-wrapper>
<nz-card>
<nz-card [nzLoading]="service.http.loading">
<nz-alert nzType="info" nzMessage="提现信息" class="mb-md"></nz-alert>
<div se-container [labelWidth]="100">
<div se-container [labelWidth]="130">
<se label="网络货运人">
{{formData?.ltdName}}
</se>
@ -41,16 +41,16 @@
{{formData?.refundStatusLabel}}
</se>
<se label="提现金额">
{{formData?.amount}}
{{formData?.amount | currency}}
</se>
<se label="银行流水号">
{{formData?.bankSerialNumber}}
</se>
<se label="提现至银行卡">
{{formData?.bankId}}
{{formData?.bankCardNumber}}
</se>
<se label="银行回单" col="1">
<img [src]="formData?.bankCardNumber" alt="" style="width: 200px;height: 160px;">
<a (click)="downBack()">{{formData?.refundStatus==='3'?'下载回单':'暂无回单'}}</a>
</se>
</div>

View File

@ -2,8 +2,9 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { FreightAccountService } from 'src/app/routes/financial-management/services/freight-account.service';
@Component({
selector: 'app-partner-account-management-withdrawals-detail',
selector: 'app-withdrawals-detail',
templateUrl: './withdrawals-detail.component.html',
styleUrls: ['./withdrawals-detail.component.less']
})
@ -67,6 +68,19 @@ export class PartnerAccountManagementWithdrawalsDetailComponent implements OnIni
});
}
downBack() {
if (this.formData?.refundStatus !== '3') {
return;
}
this.service.getReceiptUrl(this.formData.receiptUrl, {
bankType: this.formData.bankType,
rmYll: this.formData.userId,
snglFlgCd: this.formData.coreSerNo,
bussType: '06',
ltdId: this.formData.ltdId
});
}
goBack() {
history.go(-1);
}

View File

@ -1,85 +1,62 @@
<page-header-wrapper [title]="'提现记录'">
</page-header-wrapper>
<!-- <nz-card>
<nz-row [nzGutter]="16">
<nz-col [nzXl]="6" [nzLg]="6" [nzSm]="12">
<nz-statistic nzValue="100 笔" [nzTitle]="'待审核订单数'" [nzValueStyle]="{'font-size':'21px'}">
</nz-statistic>
</nz-col>
<nz-col [nzXl]="6" [nzLg]="6" [nzSm]="12">
<nz-statistic nzValue="80000.00 元" [nzTitle]="'待审核提现金额'" [nzValueStyle]="{'font-size':'21px'}">
</nz-statistic>
</nz-col>
<nz-col [nzXl]="6" [nzLg]="6" [nzSm]="12">
<nz-statistic nzValue="100 笔" [nzTitle]="'已提现订单数'" [nzValueStyle]="{'font-size':'21px'}">
</nz-statistic>
</nz-col>
<nz-col [nzXl]="6" [nzLg]="6" [nzSm]="12">
<nz-statistic nzValue="80000.00 元" [nzTitle]="'已提现金额'" [nzValueStyle]="{'font-size':'21px'}">
</nz-statistic>
</nz-col>
</nz-row>
</nz-card> -->
<nz-card class="search-box" nzBordered>
<div nz-row nzGutter="8">
<div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24">
<sf #sf [schema]="searchSchema"
[ui]="{ '*': { spanLabelFixed: 90,grid: { lg: 8, md: 12, sm: 12, xs: 24,gutter:15 } }}" [compact]="true"
[button]="'none'"></sf>
</div>
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand"
class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button>
<button nz-button (click)="resetSF()">重置</button>
<button nz-button> 导出</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
</button>
</div>
<div nz-row nzGutter="8">
<div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24">
<sf #sf [schema]="searchSchema"
[ui]="{ '*': { spanLabelFixed: 90,grid: { lg: 8, md: 12, sm: 12, xs: 24,gutter:15 } }}" [compact]="true"
[button]="'none'"></sf>
</div>
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand"
class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button>
<button nz-button (click)="resetSF()">重置</button>
<button nz-button> 导出</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
</button>
</div>
</div>
</nz-card>
<nz-card class="content-box" nzBordered>
<nz-tabset [nzTabBarExtraContent]="extraTemplate">
<nz-tab nzTitle="全部" (nzClick)="changeRefundStatus()"></nz-tab>
<nz-tab nzTitle="待审核" (nzClick)="changeRefundStatus('1')"></nz-tab>
<nz-tab nzTitle="处理中" (nzClick)="changeRefundStatus('2')"></nz-tab>
<nz-tab nzTitle="提现成功" (nzClick)="changeRefundStatus('3')"></nz-tab>
<nz-tab nzTitle="提现失败" (nzClick)="changeRefundStatus('5')"></nz-tab>
<nz-tab nzTitle="已拒绝" (nzClick)="changeRefundStatus('4')"></nz-tab>
</nz-tabset>
<nz-tabset [nzTabBarExtraContent]="extraTemplate">
<nz-tab nzTitle="全部" (nzClick)="changeRefundStatus()"></nz-tab>
<nz-tab nzTitle="待审核" (nzClick)="changeRefundStatus('1')"></nz-tab>
<nz-tab nzTitle="处理中" (nzClick)="changeRefundStatus('2')"></nz-tab>
<nz-tab nzTitle="提现成功" (nzClick)="changeRefundStatus('3')"></nz-tab>
<nz-tab nzTitle="提现失败" (nzClick)="changeRefundStatus('5')"></nz-tab>
<nz-tab nzTitle="已拒绝" (nzClick)="changeRefundStatus('4')"></nz-tab>
</nz-tabset>
<ng-template #extraTemplate>
<div class="d-flex align-items-center ">
<div class="mr-md">
已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 累计提现 <strong
class="text-red">{{
totalCallNo }}</strong>
<a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a>
</div>
<button nz-button (click)="this.auditAction(null)">审核</button>
</div>
<ng-template #extraTemplate>
<div class="d-flex align-items-center ">
<div class="mr-md">
已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 累计提现 <strong class="text-red">{{
totalCallNo }}</strong>
<!-- <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> -->
</div>
<button nz-button (click)="this.auditAction(null)">审核</button>
</div>
</ng-template>
<st #st [data]="service.$api_get_refund_page" [columns]="columns" [req]="{ process: beforeReq }"
[loading]="service.http.loading" [scroll]="{ x:'1200px' }" (change)="stChange($event)"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }"
[page]="{ show: true, pageSizes: [10, 20, 50, 100, 200, 500] }" [loading]="service.http.loading">
<ng-template st-row="bankCardNumber" let-item let-index="index" let-column="column">
{{ item.bankName }} <br> {{ item.bankCardNumber }}
</ng-template>
<st #st [data]="service.$api_get_refund_page" [columns]="columns" [req]="{ process: beforeReq }"
[loading]="service.http.loading" [scroll]="{ x:'1200px' }" (change)="stChange($event)">
<ng-template st-row="bankCardNumber" let-item let-index="index" let-column="column">
{{ item.bankName }} <br> {{ item.bankCardNumber }}
</ng-template>
</st>
</st>
</nz-card>
<ng-template #auditModal>
<div nz-row nzGutter="8">
<div nz-col nzSpan="24" se-container [labelWidth]="80">
<se [col]="1" label="备注">
<textarea nz-input rows="3" [(ngModel)]="msg" placeholder="同意可以不用填写原因 ,拒绝必须说明原因"
style="width: 325px;margin-left: 14px;"></textarea>
</se>
</div>
<div nz-row nzGutter="8">
<div nz-col nzSpan="24" se-container [labelWidth]="80">
<se [col]="1" label="备注">
<textarea nz-input rows="3" [(ngModel)]="msg" placeholder="同意可以不用填写原因 ,拒绝必须说明原因"
style="width: 325px;margin-left: 14px;"></textarea>
</se>
</div>
</div>
</ng-template>

View File

@ -1,9 +1,10 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
import { STComponent, STColumn, STChange, STRequestOptions, STData } from '@delon/abc/st';
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { FreightAccountService } from 'src/app/routes/financial-management/services/freight-account.service';
import Big from 'src/app/shared/utils/deal-precision';
@Component({
@ -12,12 +13,10 @@ import { FreightAccountService } from 'src/app/routes/financial-management/servi
styleUrls: ['../../../../commom/less/box.less', '../../../../commom/less/expend-but.less']
})
export class PartnerAccountManagementWithdrawalsRecordComponent implements OnInit {
@ViewChild('st', { static: true })
st!: STComponent;
@ViewChild('sf', { static: false })
sf!: SFComponent;
@ViewChild('auditModal', { static: false })
auditModal!: any;
@ViewChild('st', { static: true }) st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
@ViewChild('auditModal', { static: false }) auditModal!: any;
@ViewChild('viewReasonModal', { static: false }) viewReasonModal!: any;
columns: STColumn[] = this.initST();
searchSchema: SFSchema = this.initSF();
@ -52,11 +51,47 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni
};
stChange(e: STChange): void {
switch (e.type) {
case 'checkbox':
this.selectedRows = e.checkbox!;
this.totalCallNo = this.selectedRows.reduce((total, cv) => total + cv.amount, 0).toFixed(2);
break;
if (e.type === 'checkbox') {
const checkRows = (e.checkbox as STData[]) || [];
//判断当前页是否有选中的行
if (checkRows.length === 0) {
// 当前页没有存在已勾选的行,移除之前所记录的当前页的行
const stList = this.st.list;
stList.forEach(item => {
this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id);
})
} else {
//添加新增的行
checkRows.forEach((item: any) => {
const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id);
if (newSelectedList.length === 0) {
this.selectedRows.push(item);
}
})
// 移除取消选中的行
const stList = this.st.list;
stList.forEach(item => {
if (!item.checked) {
const index = this.selectedRows.findIndex(_item => item.id === _item.id);
if (index !== -1) this.selectedRows.splice(index, 1);
}
})
}
let totalCallNo = 0;
this.selectedRows.forEach((item => {
totalCallNo = new Big(this.totalCallNo).plus(item?.amount).parse();
}));
this.totalCallNo = totalCallNo;
} else if (e.type === 'loaded') {
// 页面加载时勾选
(e?.loaded || []).forEach((r) => {
this.selectedRows.forEach((x) => {
if (x.id === r.id) {
r.checked = true;
}
});
});
}
}
@ -123,7 +158,7 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni
showReason(item: any) {
const modal = this.nzModalService.create({
nzTitle: '查看原因',
nzContent: '运单数据异常暂时无法开票请联系客服400-xxxx-xxxx',
nzContent: item?.rejectionCause || item?.failCause,
nzFooter: [
{
label: '关闭',
@ -240,27 +275,27 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni
private initST(): STColumn[] {
return [
{ title: '', index: 'key', type: 'checkbox' },
{ title: '提现时间', index: 'createTime', width: 180 },
{ title: '提现单号', index: 'refundApplyCode', width: 120 },
{ title: '网络货运人', index: 'ltdName', width: 140 },
{ title: '银行类型', index: 'bankTypeLabel', width: 100 },
{ title: '账户类型', index: 'bankTypeLabel', width: 100 },
{ title: '账户名称', index: 'bankAccountName', width: 140 },
{ title: '虚拟账户', index: 'virtualAccount', width: 100 },
{ title: '', index: 'key', type: 'checkbox', className: 'text-center' },
{ title: '提现时间', index: 'createTime', width: 180, className: 'text-center' },
{ title: '提现单号', index: 'refundApplyCode', width: 180, className: 'text-center' },
{ title: '网络货运人', index: 'ltdName', width: 220, className: 'text-center' },
{ title: '银行类型', index: 'bankTypeLabel', width: 100, className: 'text-center' },
{ title: '账户类型', index: 'bankTypeLabel', width: 100, className: 'text-center' },
{ title: '账户名称', index: 'bankAccountName', width: 220, className: 'text-center' },
{ title: '虚拟账户', index: 'virtualAccount', width: 180, className: 'text-center' },
{
title: '提现金额',
index: 'amount',
width: 120,
width: 150,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) }
},
{ title: '提现银行账户', render: 'bankCardNumber', width: 180 },
{ title: '提现状态', index: 'refundStatusLabel', width: 100 },
{ title: '银行流水号', index: 'bankSerialNumber', width: 120 },
{ title: '核心交易流水', index: 'coreSerNo', width: 120 },
{ title: '失败原因', index: 'rejectionCause', width: 150, format: item => item.failCause || item.rejectionCause },
{ title: '提现银行账户', render: 'bankCardNumber', width: 200, className: 'text-center' },
{ title: '提现状态', index: 'refundStatusLabel', width: 100, className: 'text-center' },
{ title: '银行流水号', index: 'bankSerialNumber', width: 160, className: 'text-center' },
{ title: '核心交易流水', index: 'coreSerNo', width: 180, className: 'text-center' },
{ title: '失败原因', index: 'rejectionCause', width: 200, format: item => item.failCause, className: 'text-center' },
{
title: '操作',
fixed: 'right',
@ -278,6 +313,11 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni
ltdId: item.ltdId
})
},
{
text: '查看原因',
iif: item => item.refundStatus === '4',
click: item => this.showReason(item)
},
{
text: '审核',
iif: item => item.refundStatus === '1',

View File

@ -15,7 +15,6 @@
<!-- 数据列表 -->
<st
#st
[bordered]="true"
[data]="data"
[columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"

View File

@ -0,0 +1,9 @@
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
</sf>
<div style="font-size: 8px;">
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
</div>
<div *nzModalFooter>
<button nz-button nzType="default" (click)="close()">取消</button>
<button nz-button nzType="primary" (click)="save()">确认</button>
</div>

View File

@ -0,0 +1,98 @@
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { map } from 'rxjs/operators';
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
import { ClaimAuditService } from '../../services/claim-audit.service';
@Component({
selector: 'app-parter-claim-audit-channel-approve',
templateUrl: './channel-approve.component.html'
})
export class ParterClaimAuditListChannelApproveComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema!: SFSchema;
ui!: SFUISchema;
i: any;
type: any;
constructor(
public http: _HttpClient,
private cdr: ChangeDetectorRef,
private route: ActivatedRoute,
private modalService: NzModalService,
public service: ClaimAuditService,
private modalRef: NzModalRef
) {}
ngOnInit(): void {
this.initSF();
}
initSF() {
this.schema = {
properties: {
id: {
type: 'string',
title: '',
ui: { hidden: true }
},
name1: {
title: '合伙人(认领人)',
type: 'string',
ui: {
widget: 'text',
} ,
},
name2: {
title: '认领客户名称',
type: 'string',
ui: {
widget: 'text',
} ,
},
data: {
title: '结算起算日期',
type: 'string',
format: 'date',
},
name3: {
type: 'string',
title: '备注',
maxLength: 50,
ui: {
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 },
placeholder:'请不要超过50个字'
} as SFTextareaWidgetSchema,
},
},
required: ['name3']
};
this.ui = {
'*': {
spanLabelFixed: 120,
grid: { span: 24 }
},
};
}
close() {
this.modalRef.destroy();
}
save() {
this.sf.validator({ emitError: true });
if(!this.sf.valid) return;
// this.service.request('', { ...this.sf.value }).subscribe(res => {
// if (res) {
// this.modalRef.destroy(true);
// } else {
// this.service.msgSrv.error(res.msg);
// }
// });
}
}

View File

@ -0,0 +1,62 @@
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<div nz-row class="head-box">
<div nz-col nzSpan="1">
<img src="./assets/images/usercenter/拉货车.png" alt="" />
</div>
<div nz-col nzSpan="11" class="pl-lg">
<div class="right-h">深圳市XXXXXXX有限公司</div>
<div class="right-s">91440300357887492H</div>
<sv-container col="2" >
<sv label="联系人"> </sv>
<sv label="注册时间"> </sv>
<sv label="合同有效期"> </sv>
<sv label="运营主体"> </sv>
</sv-container>
</div>
<div nz-col nzSpan="10">
<div class="left-rt">待审核</div>
<div class="left-rb">
<button nz-button (click) ="reject()">拒绝</button>
<button nz-button nzType="primary" (click) ="approve()">通过</button>
</div>
</div>
</div>
</ng-template>
</page-header-wrapper>
<nz-card nzTitle="运单进度">
<div nz-row>
<div nz-col nzSpan="12">
<sv-container col="1" labelWidth="120">
<sv-title>现渠道销售(提交人)</sv-title>
<sv label="姓名"> </sv>
<sv label="手机号"> </sv>
<sv label="绑定时间"> </sv>
<sv label="认领备注"> </sv>
<sv label="提交时间"> </sv>
</sv-container>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div nz-col nzSpan="12">
<sv-container col="1" labelWidth="120">
<sv-title>原渠道销售</sv-title>
<sv label="姓名"> </sv>
<sv label="手机号"> </sv>
<sv label="绑定时间"> </sv>
</sv-container>
</div>
</div>
</nz-card>
<nz-card nzTitle="操作日志">
<st #st [data]="data" [columns]="columns"></st>
</nz-card>

View File

@ -0,0 +1,27 @@
:host {
.head-box {
img {
width: 80px;
height: 80px;
padding: 8px;
}
.right-h{
font-size: 16px;
}
.right-s{
color: #7f7f7f;
}
.left-rt {
font-weight: bold;
font-size: 16px;
text-align: right;
}
.left-rb {
display: flex;
justify-content: end;
padding-top: 16px;
}
}
}

View File

@ -0,0 +1,82 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn } from '@delon/abc/st';
import { _HttpClient } from '@delon/theme';
import { NzCardComponent } from 'ng-zorro-antd/card';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import format from 'date-fns/format';
import { ClaimAuditService } from '../../services/claim-audit.service';
import { ParterClaimAuditListChannelApproveComponent } from '../channel-approve/channel-approve.component';
import { ParterClaimAuditListChannelRejectComponent } from '../channel-reject/channel-reject.component';
@Component({
selector: 'app-parter-claim-audit-channel-detail',
templateUrl: './channel-detail.component.html',
styleUrls: ['./channel-detail.component.less']
})
export class ParterClaimAuditListChannelDetailComponent implements OnInit {
id = this.route.snapshot.queryParams.id;
i: any;
imges: any;
isVisible = false;
columns: STColumn[] = [
{ title: '操作时间', index: 'id', width: 120 },
{ title: '操作人', type: 'img', width: 120, },
{ title: '操作人手机号', index: 'email', width: 120 },
{ title: '操作页面', index: 'phone' },
{ title: '操作内容', index: 'registered' }
];
data=[{id:11111}]
constructor(
private route: ActivatedRoute,
private msgSrv: NzMessageService,
private service: ClaimAuditService,
private modalService: NzModalService,
private router: Router
) {}
ngOnInit(): void {
this.initData();
}
initData() {
// this.service.request(this.service.$api_getBulkBillDetail, { id: this.id }).subscribe(res => {
// if (res) {
// this.i = res;
//
// }
// });
}
approve() {
const modalRef = this.modalService.create({
nzTitle: '同意',
nzWidth: 700,
nzContent: ParterClaimAuditListChannelApproveComponent,
nzComponentParams: {
i: this.i
},
nzFooter: null
});
}
reject() {
const modalRef = this.modalService.create({
nzTitle: '拒绝',
nzWidth: 700,
nzContent: ParterClaimAuditListChannelRejectComponent,
nzComponentParams: {
i: this.i
},
nzFooter: null
});
}
goBack() {
window.history.go(-1);
}
}

View File

@ -0,0 +1,9 @@
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
</sf>
<div style="font-size: 8px;">
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
</div>
<div *nzModalFooter>
<button nz-button nzType="default" (click)="close()">取消</button>
<button nz-button nzType="primary" (click)="save()">确认</button>
</div>

View File

@ -0,0 +1,98 @@
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { map } from 'rxjs/operators';
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
import { ClaimAuditService } from '../../services/claim-audit.service';
@Component({
selector: 'app-parter-claim-audit-channel-reject',
templateUrl: './channel-reject.component.html'
})
export class ParterClaimAuditListChannelRejectComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema!: SFSchema;
ui!: SFUISchema;
i: any;
type: any;
constructor(
public http: _HttpClient,
private cdr: ChangeDetectorRef,
private route: ActivatedRoute,
private modalService: NzModalService,
public service: ClaimAuditService,
private modalRef: NzModalRef
) {}
ngOnInit(): void {
this.initSF();
}
initSF() {
this.schema = {
properties: {
id: {
type: 'string',
title: '',
ui: { hidden: true }
},
name1: {
title: '合伙人(认领人)',
type: 'string',
ui: {
widget: 'text',
} ,
},
name2: {
title: '认领客户名称',
type: 'string',
ui: {
widget: 'text',
} ,
},
data: {
title: '结算起算日期',
type: 'string',
format: 'date',
},
name3: {
type: 'string',
title: '备注',
maxLength: 50,
ui: {
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 },
placeholder:'请不要超过50个字'
} as SFTextareaWidgetSchema,
},
},
required: ['name3']
};
this.ui = {
'*': {
spanLabelFixed: 120,
grid: { span: 24 }
},
};
}
close() {
this.modalRef.destroy();
}
save() {
this.sf.validator({ emitError: true });
if(!this.sf.valid) return;
// this.service.request('', { ...this.sf.value }).subscribe(res => {
// if (res) {
// this.modalRef.destroy(true);
// } else {
// this.service.msgSrv.error(res.msg);
// }
// });
}
}

View File

@ -0,0 +1,66 @@
<page-header-wrapper [title]="''"></page-header-wrapper>
<!-- 搜索表单 -->
<nz-card>
<div nz-row nzGutter="8">
<!-- 查询字段小于或等于3个时不显示伸缩按钮 -->
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
<sf
#sf
[schema]="schema"
[ui]="ui"
[mode]="'search'"
[loading]="service.http.loading"
(formSubmit)="search()"
(formReset)="resetSF()"
></sf>
</div>
<!-- 查询字段大于3个时根据展开状态调整布局 -->
<ng-container *ngIf="queryFieldCount > 4">
<div nz-col [nzSpan]="_$expand ? 24 : 18">
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
</div>
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
<button nz-button nzType="primary" [disabled]="!sf.valid" (click)="search()" >查询</button>
<button nz-button (click)="resetSF()" >重置</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
</button>
</div>
</ng-container>
</div>
</nz-card>
<nz-card>
<nz-tabset [nzSelectedIndex]="selectedIndex" (nzSelectChange) = "tabChange($event)">
<nz-tab nzTitle="合伙人认领">
<st
#st1
[data]="data"
[columns]="columns1"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loadingDelay]="500"
[loading]="service.http.loading"
>
</st>
</nz-tab>
<nz-tab nzTitle="渠道销售认领">
<st
#st2
[data]="data"
[columns]="columns2"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loadingDelay]="500"
[loading]="service.http.loading"
>
</st>
</nz-tab>
</nz-tabset>
</nz-card>

View File

@ -0,0 +1,230 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
import { processSingleSort } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { ClaimAuditService } from '../../services/claim-audit.service';
@Component({
selector: 'app-parter-claim-audit-list',
templateUrl: './list.component.html'
})
export class ParterClaimAuditListComponent implements OnInit {
schema: SFSchema = {};
columns1!: STColumn[];
columns2!: STColumn[];
@ViewChild('st1', { static: false })
st1!: STComponent;
@ViewChild('st2', { static: false })
st2!: STComponent;
ui!: SFUISchema;
@ViewChild('sf', { static: false })
sf!: SFComponent;
_$expand = false;
selectedIndex = 0;
data=[{name1:1111}]
constructor(
public router: Router,
public ar: ActivatedRoute,
public service: ClaimAuditService,
private modalService: NzModalService
) {}
/**
* 查询参数
*/
get reqParams() {
return { ...this.sf?.value };
}
/**
* 查询字段个数
*/
get queryFieldCount(): number {
return Object.keys(this.schema?.properties || {}).length;
}
/**
* 伸缩查询条件
*/
expandToggle(): void {
this._$expand = !this._$expand;
this.sf?.setValue('/_$expand', this._$expand);
}
ngOnInit() {
this.initSF();
this.initST1();
this.initST2();
}
initSF() {
this.schema = {
properties: {
_$expand: { type: 'boolean', ui: { hidden: true } },
name: {
type: 'string',
title: '认领人'
},
name1: {
type: 'string',
title: '客户名称'
},
name2: {
type: 'string',
title: '平台审核状态'
},
name3: {
type: 'string',
title: '渠道销售状态',
ui: {
visibleIf: {
_$expand: (value: boolean) => value
}
}
},
name4: {
type: 'string',
title: 'CRM状态',
ui: {
visibleIf: {
_$expand: (value: boolean) => value
}
}
},
}
};
this.ui = {
'*': {
grid: { span: 8, gutter: 4 }
}
};
}
initST1() {
this.columns1 = [
{
title: '提交人',
index: 'name1'
},
{
title: '客户名称',
index: 'name1'
},
{
title: '认领备注',
index: 'name1'
},
{
title: '渠道销售审核状态',
index: 'name1'
},
{
title: 'CRM状态',
index: 'name1'
},
{
title: '平台审核状态',
index: 'name1'
},
{
title: 'CRM状态',
index: 'name1'
},
{
title: '提交时间',
index: 'name1'
},
{
title: '操作',
className: 'text-center',
buttons: [
{
text: '详情',
click: (_record, _modal, _instance) => this.partnerView(_record),
},
{
text: '审核',
click: (_record, _modal, _instance) => this.partnerView(_record),
},
]
}
];
}
initST2() {
this.columns2 = [
{
title: '提交人',
index: 'name1'
},
{
title: '客户名称',
index: 'name1'
},
{
title: '认领备注',
index: 'name1'
},
{
title: 'CRM状态',
index: 'name1'
},
{
title: '平台审核状态',
index: 'name1'
},
{
title: '提交时间',
index: 'name1'
},
{
title: '操作',
className: 'text-center',
buttons: [
{
text: '详情',
click: (_record, _modal, _instance) => this.channelView(_record),
},
{
text: '审核',
click: (_record, _modal, _instance) => this.channelView(_record),
},
]
}
];
}
partnerView(record: STData) {
this.router.navigate(['/partner/claim-audit/partner-detail'], { queryParams: {} });
}
channelView(record: STData) {
this.router.navigate(['/partner/claim-audit/channel-detail'], { queryParams: {} });
}
/**
* 重置表单
*/
resetSF() {
this.sf.reset();
}
search() {
// this.st1?.load(1);
}
tabChange(index:any){
console.log(index)
switch (index) {
case 0:
this.initST1();
break;
case 1:
this.initST2();
break;
default:
break;
}
}
}

View File

@ -0,0 +1,9 @@
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
</sf>
<div style="font-size: 8px;">
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
</div>
<div *nzModalFooter>
<button nz-button nzType="default" (click)="close()">取消</button>
<button nz-button nzType="primary" (click)="save()">确认</button>
</div>

View File

@ -0,0 +1,98 @@
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { map } from 'rxjs/operators';
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
import { ClaimAuditService } from '../../services/claim-audit.service';
@Component({
selector: 'app-parter-claim-audit-partner-approve',
templateUrl: './partner-approve.component.html'
})
export class ParterClaimAuditListPartnerApproveComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema!: SFSchema;
ui!: SFUISchema;
i: any;
type: any;
constructor(
public http: _HttpClient,
private cdr: ChangeDetectorRef,
private route: ActivatedRoute,
private modalService: NzModalService,
public service: ClaimAuditService,
private modalRef: NzModalRef
) {}
ngOnInit(): void {
this.initSF();
}
initSF() {
this.schema = {
properties: {
id: {
type: 'string',
title: '',
ui: { hidden: true }
},
name1: {
title: '合伙人(认领人)',
type: 'string',
ui: {
widget: 'text',
} ,
},
name2: {
title: '认领客户名称',
type: 'string',
ui: {
widget: 'text',
} ,
},
data: {
title: '结算起算日期',
type: 'string',
format: 'date',
},
name3: {
type: 'string',
title: '备注',
maxLength: 50,
ui: {
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 },
placeholder:'请不要超过50个字'
} as SFTextareaWidgetSchema,
},
},
required: ['name3']
};
this.ui = {
'*': {
spanLabelFixed: 120,
grid: { span: 24 }
},
};
}
close() {
this.modalRef.destroy();
}
save() {
this.sf.validator({ emitError: true });
if(!this.sf.valid) return;
// this.service.request('', { ...this.sf.value }).subscribe(res => {
// if (res) {
// this.modalRef.destroy(true);
// } else {
// this.service.msgSrv.error(res.msg);
// }
// });
}
}

View File

@ -0,0 +1,79 @@
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<div nz-row class="head-box">
<div nz-col nzSpan="1">
<img src="./assets/images/usercenter/拉货车.png" alt="" />
</div>
<div nz-col nzSpan="11" class="pl-lg">
<div class="right-h">深圳市XXXXXXX有限公司</div>
<div class="right-s">91440300357887492H</div>
<sv-container col="2">
<sv label="管理员"> </sv>
<sv label="注册时间"> </sv>
<sv label="合同有效期"> </sv>
<sv label="运营主体"> </sv>
</sv-container>
</div>
<div nz-col nzSpan="10">
<div class="left-rt">待审核</div>
<div class="left-rb">
<button nz-button (click) ="reject()">拒绝</button>
<button nz-button nzType="primary" (click) ="approve()">通过</button>
</div>
</div>
</div>
</ng-template>
</page-header-wrapper>
<nz-card nzTitle="运单进度">
<div nz-row>
<div nz-col nzSpan="12">
<sv-container col="1" labelWidth="120">
<sv-title>现合伙人(提交人)</sv-title>
<sv label="合伙人名称"> </sv>
<sv label="手机号"> </sv>
<sv label="绑定时间"> </sv>
<sv label="结算时间段"> </sv>
<sv label="认领备注"> </sv>
<sv label="提交时间"> </sv>
</sv-container>
</div>
<div nz-col nzSpan="12">
<sv-container col="1" labelWidth="120">
<sv-title>现渠道销售</sv-title>
<sv label="姓名"> </sv>
<sv label="手机号"> </sv>
<sv label="绑定时间"> </sv>
</sv-container>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div nz-col nzSpan="12">
<sv-container col="1" labelWidth="120">
<sv-title>原合伙人</sv-title>
<sv label="合伙人名称"> </sv>
<sv label="管理员"> </sv>
<sv label="绑定时间"> </sv>
<sv label="结算时间段"> </sv>
</sv-container>
</div>
<div nz-col nzSpan="12">
<sv-container col="1" labelWidth="120">
<sv-title>原渠道销售</sv-title>
<sv label="姓名"> </sv>
<sv label="手机号"> </sv>
<sv label="绑定时间"> </sv>
</sv-container>
</div>
</div>
</nz-card>
<nz-card nzTitle="操作日志">
<st #st [data]="data" [columns]="columns"></st>
</nz-card>

View File

@ -0,0 +1,26 @@
:host {
.head-box {
img {
width: 80px;
height: 80px;
padding: 8px;
}
.right-h{
font-size: 16px;
}
.right-s{
color: #7f7f7f;
}
.left-rt {
font-weight: bold;
font-size: 16px;
text-align: right;
}
.left-rb {
display: flex;
justify-content: end;
padding-top: 16px;
}
}
}

View File

@ -0,0 +1,82 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn } from '@delon/abc/st';
import { _HttpClient } from '@delon/theme';
import { NzCardComponent } from 'ng-zorro-antd/card';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import format from 'date-fns/format';
import { ClaimAuditService } from '../../services/claim-audit.service';
import { ParterClaimAuditListPartnerRejectComponent } from '../partner-reject/partner-reject.component';
import { ParterClaimAuditListPartnerApproveComponent } from '../partner-approve/partner-approve.component';
@Component({
selector: 'app-parter-claim-audit-partner-detail',
templateUrl: './partner-detail.component.html',
styleUrls: ['./partner-detail.component.less']
})
export class ParterClaimAuditListPartnerDetailComponent implements OnInit {
id = this.route.snapshot.queryParams.id;
i: any;
imges: any;
isVisible = false;
columns: STColumn[] = [
{ title: '操作时间', index: 'id', width: 120 },
{ title: '操作人', type: 'img', width: 120, },
{ title: '操作人手机号', index: 'email', width: 120 },
{ title: '操作页面', index: 'phone' },
{ title: '操作内容', index: 'registered' }
];
data=[{id:11111}]
constructor(
private route: ActivatedRoute,
private msgSrv: NzMessageService,
private service: ClaimAuditService,
private modalService: NzModalService,
private router: Router
) {}
ngOnInit(): void {
this.initData();
}
initData() {
// this.service.request(this.service.$api_getBulkBillDetail, { id: this.id }).subscribe(res => {
// if (res) {
// this.i = res;
//
// }
// });
}
approve() {
const modalRef = this.modalService.create({
nzTitle: '同意',
nzWidth: 700,
nzContent: ParterClaimAuditListPartnerApproveComponent,
nzComponentParams: {
i: this.i
},
nzFooter: null
});
}
reject() {
const modalRef = this.modalService.create({
nzTitle: '拒绝',
nzWidth: 700,
nzContent: ParterClaimAuditListPartnerRejectComponent,
nzComponentParams: {
i: this.i
},
nzFooter: null
});
}
goBack() {
window.history.go(-1);
}
}

View File

@ -0,0 +1,9 @@
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
</sf>
<div style="font-size: 8px;">
结算起算日:指给合伙人结算佣金的起算时间,更换合伙人,该日期是当前合伙人的结算起算日,原合伙人的结算结束时间则为此日期的前一天
</div>
<div *nzModalFooter>
<button nz-button nzType="default" (click)="close()">取消</button>
<button nz-button nzType="primary" (click)="save()">确认</button>
</div>

View File

@ -0,0 +1,98 @@
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { map } from 'rxjs/operators';
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
import { ClaimAuditService } from '../../services/claim-audit.service';
@Component({
selector: 'app-parter-claim-audit-partner-reject',
templateUrl: './partner-reject.component.html'
})
export class ParterClaimAuditListPartnerRejectComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema!: SFSchema;
ui!: SFUISchema;
i: any;
type: any;
constructor(
public http: _HttpClient,
private cdr: ChangeDetectorRef,
private route: ActivatedRoute,
private modalService: NzModalService,
public service: ClaimAuditService,
private modalRef: NzModalRef
) {}
ngOnInit(): void {
this.initSF();
}
initSF() {
this.schema = {
properties: {
id: {
type: 'string',
title: '',
ui: { hidden: true }
},
name1: {
title: '合伙人(认领人)',
type: 'string',
ui: {
widget: 'text',
} ,
},
name2: {
title: '认领客户名称',
type: 'string',
ui: {
widget: 'text',
} ,
},
data: {
title: '结算起算日期',
type: 'string',
format: 'date',
},
name3: {
type: 'string',
title: '备注',
maxLength: 50,
ui: {
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 },
placeholder:'请不要超过50个字'
} as SFTextareaWidgetSchema,
},
},
required: ['name3']
};
this.ui = {
'*': {
spanLabelFixed: 120,
grid: { span: 24 }
},
};
}
close() {
this.modalRef.destroy();
}
save() {
this.sf.validator({ emitError: true });
if(!this.sf.valid) return;
// this.service.request('', { ...this.sf.value }).subscribe(res => {
// if (res) {
// this.modalRef.destroy(true);
// } else {
// this.service.msgSrv.error(res.msg);
// }
// });
}
}

View File

@ -0,0 +1,12 @@
import { Injectable, Injector } from '@angular/core';
import { BaseService } from '@shared';
@Injectable({
providedIn: 'root',
})
export class ClaimAuditService extends BaseService {
constructor(public injector: Injector) {
super(injector);
}
}

View File

@ -15,7 +15,6 @@
<!-- 数据列表 -->
<st
#st
[bordered]="true"
[data]="data"
[columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"

View File

@ -22,6 +22,9 @@ import { PartnerSalePartnerDetailComponent } from './business-statistics/compone
import { PartnerPartnerCustomOrderDetailComponent } from './business-statistics/components/partner-custom-order-detail/partner-custom-order-detail.component';
import { PartnerPartnerOrderDetailComponent } from './business-statistics/components/partner-order-detail/partner-order-detail.component';
import { PartnerAccountManagementListComponent } from './account-management/components/list/list.component';
import { ParterClaimAuditListComponent } from './claim-audit/components/list/list.component';
import { ParterClaimAuditListChannelDetailComponent } from './claim-audit/components/channel-detail/channel-detail.component';
import { ParterClaimAuditListPartnerDetailComponent } from './claim-audit/components/partner-detail/partner-detail.component';
import { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component';
import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component';
import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component';
@ -29,6 +32,7 @@ import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-ma
import { PartnerAccountManagementWithdrawalsDetailComponent } from './account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component';
import { PartnerListComponent } from './partner-list/components/index/partner-list.component';
import { PartnerDetailComponent } from './partner-list/components/partner-detail/partner-detail.component';
import { ParterRebateManageMentSettingComponent } from './rebate-management/components/rebate-setting/rebate-setting.component';
const routes: Routes = [
{
@ -63,7 +67,8 @@ const routes: Routes = [
path: 'rebate',
children: [
{ path: 'particulars', component: ParterRebateManageMentParticularsComponent },
{ path: 'record', component: ParterRebateManageMentRecordComponent }
{ path: 'record', component: ParterRebateManageMentRecordComponent },
{ path: 'setting', component: ParterRebateManageMentSettingComponent }
]
},
{
@ -82,6 +87,15 @@ const routes: Routes = [
{ path: '', component: PartnerListComponent },
{ path: 'detail/:id', component: PartnerDetailComponent }
]
},
{
path: 'claim-audit',
children: [
{ path: '', component: ParterClaimAuditListComponent },
{ path: 'list', component: ParterClaimAuditListComponent },
{ path: 'channel-detail', component: ParterClaimAuditListChannelDetailComponent },
{ path: 'partner-detail', component: ParterClaimAuditListPartnerDetailComponent }
]
}
];
@NgModule({

View File

@ -26,8 +26,15 @@ import { PartnerSalePartnerDetailComponent } from './business-statistics/compone
import { PartnerPartnerCustomOrderDetailComponent } from './business-statistics/components/partner-custom-order-detail/partner-custom-order-detail.component';
import { PartnerPartnerOrderDetailComponent } from './business-statistics/components/partner-order-detail/partner-order-detail.component';
import { PartnerAccountManagementListComponent } from './account-management/components/list/list.component';
import { ParterClaimAuditListComponent } from './claim-audit/components/list/list.component';
import { ParterClaimAuditListChannelDetailComponent } from './claim-audit/components/channel-detail/channel-detail.component';
import { ParterClaimAuditListPartnerDetailComponent } from './claim-audit/components/partner-detail/partner-detail.component';
import { ParterClaimAuditListChannelApproveComponent } from './claim-audit/components/channel-approve/channel-approve.component';
import { ParterClaimAuditListPartnerApproveComponent } from './claim-audit/components/partner-approve/partner-approve.component';
import { ParterClaimAuditListPartnerRejectComponent } from './claim-audit/components/partner-reject/partner-reject.component';
import { ParterClaimAuditListChannelRejectComponent } from './claim-audit/components/channel-reject/channel-reject.component';
import { PartnerAccountManagementVirtualAccountDetailComponent } from './account-management/components/virtual-account-detail/virtual-account-detail.component';
import { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component';
import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component';
import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component';
import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component';
@ -36,6 +43,9 @@ import { PartnerDetailComponent } from './partner-list/components/partner-detail
import { PartnerListComponent } from './partner-list/components/index/partner-list.component';
import { PartnerAuditModalComponent } from './partner-list/components/partner-audit-modal/partner-audit-modal.component';
import { PartnerListService } from './partner-list/services/partner-list.service';
import { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component';
import { ParterRebateManageMenAbnormalFeedbackComponent } from './rebate-management/model/abnormal-feedback/abnormal-feedback.component';
import { ParterRebateManageMentSettingComponent } from './rebate-management/components/rebate-setting/rebate-setting.component';
const COMPONENTS: any[] = [
PartnerBusinessStatisticsIndexComponent,
@ -54,13 +64,22 @@ const COMPONENTS: any[] = [
PartnerPartnerCustomOrderDetailComponent,
PartnerPartnerOrderDetailComponent,
PartnerAccountManagementListComponent,
ParterClaimAuditListComponent,
ParterClaimAuditListChannelDetailComponent,
ParterClaimAuditListPartnerDetailComponent,
ParterClaimAuditListPartnerApproveComponent,
ParterClaimAuditListPartnerRejectComponent,
ParterClaimAuditListChannelApproveComponent,
ParterClaimAuditListChannelRejectComponent,
PartnerAccountManagementVirtualAccountDetailComponent,
PartnerAccountManagementAccountDetailComponent,
PartnerAccountManagementRecordedDetailComponent,
PartnerAccountManagementWithdrawalsRecordComponent,
PartnerAccountManagementWithdrawalsDetailComponent,
PartnerListComponent,
PartnerDetailComponent
PartnerDetailComponent,
ParterRebateManageMenAbnormalFeedbackComponent,
ParterRebateManageMentSettingComponent
];
@NgModule({

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming
* @LastEditTime : 2022-03-09 15:04:50
* @LastEditTime : 2022-03-10 15:12:03
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -41,5 +41,8 @@
[loadingDelay]="500"
[loading]="service.http.loading"
>
<ng-template st-row='name44' let-item let-index='index'>
<div style="color: #f59a23;" (click)="feedback()">1223</div>
</ng-template>
</st>
</nz-card>

View File

@ -7,6 +7,7 @@ import { processSingleSort, ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { RebateManagementService } from '../../services/rebate-management.service';
import { ParterRebateManageMenRecordDetailComponent } from '../../model/record-detail/record-detail.component';
import { ParterRebateManageMenAbnormalFeedbackComponent } from '../../model/abnormal-feedback/abnormal-feedback.component';
@Component({
selector: 'app-parter-channel-rebate-management-record',
@ -27,9 +28,8 @@ export class ParterRebateManageMentRecordComponent implements OnInit {
public router: Router,
public ar: ActivatedRoute,
public service: RebateManagementService,
private modalService: NzModalService,
private modal: NzModalService,
public shipperservice: ShipperBaseService,
private modal: ModalHelper
) {}
/**
* 查询字段个数
@ -114,7 +114,7 @@ export class ParterRebateManageMentRecordComponent implements OnInit {
},
{
title: '异常反馈',
index: 'name1'
render: 'name44'
},
{
title: '操作',
@ -131,15 +131,36 @@ export class ParterRebateManageMentRecordComponent implements OnInit {
];
}
/**
*查看详情
*查看明细
*/
viewEvaluate(item: any) {
// this.modalService
this.modal.createStatic(ParterRebateManageMenRecordDetailComponent, {i:item}).subscribe((res: boolean)=> {
if(res) {
const modal = this.modal.create({
nzTitle: '明细',
nzWidth: 1200,
nzContent: ParterRebateManageMenRecordDetailComponent,
nzComponentParams: { },
nzFooter: null
});
modal.afterClose.subscribe((res: any) => {
if (res) {
}
})
});
}
/**
*异常反馈
*/
feedback(item?: any) {
const modal = this.modal.create({
nzTitle: '异常反馈',
nzWidth: 580,
nzContent: ParterRebateManageMenAbnormalFeedbackComponent,
nzComponentParams: { i: item },
nzFooter: null
});
modal.afterClose.subscribe((res: any) => {
if (res) {
}
});
}
/**
* 重置表单

View File

@ -0,0 +1,48 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming
* @LastEditTime : 2022-03-10 15:12:03
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<page-header-wrapper [title]="''"> </page-header-wrapper>
<nz-card>
<div nz-row nzGutter="8">
<!-- 查询字段小于或等于3个时不显示伸缩按钮 -->
<sf
#sf
[schema]="schema"
[ui]="ui"
[mode]="'search'"
[disabled]="!sf?.valid"
[loading]="service.http.loading"
[button]="'none'"
></sf>
<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" [disabled]="service.http.loading" >导出</button>
<button nz-button [disabled]="service.http.loading" (click)="resetSF()">重置</button>
</div>
</div>
</nz-card>
<nz-card>
<!-- 数据列表 -->
<st
#st
[data]="data"
[columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loadingDelay]="500"
[loading]="service.http.loading"
>
<ng-template st-row='name44' let-item let-index='index'>
<div style="color: #f59a23;" (click)="feedback()">1223</div>
</ng-template>
</st>
</nz-card>

View File

@ -0,0 +1,172 @@
import { ModalHelper } from '@delon/theme';
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
import { processSingleSort, ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { RebateManagementService } from '../../services/rebate-management.service';
import { ParterRebateManageMenRecordDetailComponent } from '../../model/record-detail/record-detail.component';
import { ParterRebateManageMenAbnormalFeedbackComponent } from '../../model/abnormal-feedback/abnormal-feedback.component';
@Component({
selector: 'app-parter-channel-rebate-management-setting',
templateUrl: './rebate-setting.component.html'
})
export class ParterRebateManageMentSettingComponent implements OnInit {
schema: SFSchema = {};
columns!: STColumn[];
ui!: SFUISchema;
@ViewChild('st', { static: false })
st!: STComponent;
@ViewChild('sf', { static: false })
sf!: SFComponent;
spuStatus = '1';
_$expand = false;
data = [{ name1: 1111 }];
constructor(
public router: Router,
public ar: ActivatedRoute,
public service: RebateManagementService,
private modal: NzModalService,
public shipperservice: ShipperBaseService,
) {}
/**
* 查询字段个数
*/
get queryFieldCount(): number {
return Object.keys(this.schema?.properties || {}).length;
}
/**
* 伸缩查询条件
*/
expandToggle(): void {
this._$expand = !this._$expand;
this.sf?.setValue('/_$expand', this._$expand);
}
/**
* 查询参数
*/
get reqParams() {
const params: any = Object.assign({}, this.sf?.value || {});
delete params._$expand;
return {
...params,
deadlineTime: {
start: this.sf?.value?.deadlineTime?.[0] || '',
end: this.sf?.value?.deadlineTime?.[1] || '',
},
};
}
ngOnInit() {
this.initSF();
this.initST();
}
initSF() {
this.schema = {
properties: {
_$expand: { type: 'boolean', ui: { hidden: true } },
month: {
type: 'string',
title: '时间月份',
format: 'month',
},
phone: {
type: 'string',
title: '合伙人名称'
},
}
};
this.ui = {
'*': {
spanLabelFixed: 140,
grid: { span: 8, gutter: 4 }
}
};
}
initST() {
this.columns = [
{
title: '月份',
index: 'name1'
},
{
title: '返佣金额(元)',
index: 'name1'
},
{
title: '合伙人名称',
index: 'name1'
},
{
title: '实际等级',
index: 'name1'
},
{
title: '管理费比例',
index: 'name1'
},
{
title: '返佣时间',
index: 'name1'
},
{
title: '异常反馈',
render: 'name44'
},
{
title: '操作',
fixed: 'right',
width: '90px',
className: 'text-left',
buttons: [
{
text: '明细',
click: _record => this.viewEvaluate(_record),
}
]
}
];
}
/**
*查看明细
*/
viewEvaluate(item: any) {
const modal = this.modal.create({
nzTitle: '明细',
nzWidth: 1200,
nzContent: ParterRebateManageMenRecordDetailComponent,
nzComponentParams: { },
nzFooter: null
});
modal.afterClose.subscribe((res: any) => {
if (res) {
}
});
}
/**
*异常反馈
*/
feedback(item?: any) {
const modal = this.modal.create({
nzTitle: '异常反馈',
nzWidth: 580,
nzContent: ParterRebateManageMenAbnormalFeedbackComponent,
nzComponentParams: { i: item },
nzFooter: null
});
modal.afterClose.subscribe((res: any) => {
if (res) {
}
});
}
/**
* 重置表单
*/
resetSF() {
this.sf.reset();
this.st.load(1);
}
}

View File

@ -0,0 +1,38 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming
* @LastEditTime : 2022-03-10 15:10:47
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<sv-container col="1">
<sv label="异常反馈">
<div>有订单有异常请查看 </div>
<div>2022-09-08 00:00:00 </div>
</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>
<div>
<sf
style="margin-left: 20px;"
#sf
[schema]="schema"
[ui]="ui"
[mode]="'edit'"
[button]="'none'"
></sf>
</div>
<div nz-col class="text-center">
<button nz-button nzType="primary" (click)="close()">确定</button>
</div>

View File

@ -0,0 +1,6 @@
:host {
[nz-button] {
margin-right: 8px;
margin-bottom: 12px;
}
}

View File

@ -0,0 +1,72 @@
/*
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-03-10 14:50:45
* @LastEditors : Shiming
* @LastEditTime : 2022-03-10 15:09:51
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { ModalHelper } from '@delon/theme';
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
import { processSingleSort, ShipperBaseService } from '@shared';
import { NzModalService, NzModalRef } from 'ng-zorro-antd/modal';
import { RebateManagementService } from '../../services/rebate-management.service';
import { NzButtonSize } from 'ng-zorro-antd/button';
@Component({
selector: 'app-parter-channel-rebate-management-abnormal-feedback',
templateUrl: './abnormal-feedback.component.html'
})
export class ParterRebateManageMenAbnormalFeedbackComponent implements OnInit {
schema: SFSchema = {};
ui!: SFUISchema;
@ViewChild('sf', { static: false })
sf!: SFComponent;
i!: any;
data = [{ name1: 1111 }];
constructor(
public router: Router,
public ar: ActivatedRoute,
public service: RebateManagementService,
private modalService: NzModalService,
public shipperservice: ShipperBaseService,
public modalRef: NzModalRef,
) {}
ngOnInit() {
this.initSF();
}
initSF() {
this.schema = {
properties: {
name3: {
type: 'string',
title: '回复',
maxLength: 50,
ui: {
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 },
placeholder:'请不要超过50个字'
} as SFTextareaWidgetSchema,
},
}
};
this.ui = {
'*': {
spanLabelFixed: 60,
grid: { span: 16 },
}
};
}
close() {
this.modalRef.destroy()
}
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming
* @LastEditTime : 2022-03-09 15:14:50
* @LastEditTime : 2022-03-10 14:34:30
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\record-detail\\record-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -23,7 +23,7 @@
<st
#st
[bordered]="true"
[data]="data"
[data]="service.$api_get_listCompliancePage"
[columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
@ -32,3 +32,7 @@
[loading]="service.http.loading"
>
</st>
<div>合计2999.00元</div>
<div nz-col class="text-center">
<button nz-button nzType="primary" style="width: 150px;" (click)="close()">确定</button>
</div>

View File

@ -0,0 +1,6 @@
:host {
[nz-button] {
margin-right: 8px;
margin-bottom: 12px;
}
}

View File

@ -2,10 +2,11 @@ import { ModalHelper } from '@delon/theme';
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
import { processSingleSort, ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { NzModalService, NzModalRef } from 'ng-zorro-antd/modal';
import { RebateManagementService } from '../../services/rebate-management.service';
import { NzButtonSize } from 'ng-zorro-antd/button';
@Component({
selector: 'app-parter-channel-rebate-management-record-detail',
@ -20,6 +21,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
@ViewChild('sf', { static: false })
sf!: SFComponent;
spuStatus = '1';
size: NzButtonSize = 'large';
_$expand = false;
data = [{ name1: 1111 }];
constructor(
@ -28,6 +30,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
public service: RebateManagementService,
private modalService: NzModalService,
public shipperservice: ShipperBaseService,
public modalRef: NzModalRef,
) {}
/**
* 查询字段个数
@ -50,10 +53,6 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
delete params._$expand;
return {
...params,
deadlineTime: {
start: this.sf?.value?.deadlineTime?.[0] || '',
end: this.sf?.value?.deadlineTime?.[1] || '',
},
};
}
ngOnInit() {
@ -64,54 +63,33 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
initSF() {
this.schema = {
properties: {
_$expand: { type: 'boolean', ui: { hidden: true } },
name: {
type: 'string',
title: '订单号'
},
phone: {
type: 'string',
title: '付款单号'
},
phone2: {
type: 'string',
title: '下单客户'
},
enterpriseInfoId: {
type: 'string',
title: '网络货运人',
ui: {
widget: 'select',
placeholder: '请选择',
visibleIf: {
_$expand: (value: boolean) => value
},
allowClear: true,
asyncData: () => this.shipperservice.getNetworkFreightForwarder()
asyncData: () => this.shipperservice.getNetworkFreightForwarder(),
change: (value: any) => {
console.log(value)
this.st.reload()
}
}
},
phone3: {
paymentStatus: {
title: '银行类型',
type: 'string',
title: '合伙人名称',
ui: {
visibleIf: {
_$expand: (value: boolean) => value
},
}
widget: 'dict-select',
params: { dictKey: 'overall:payment:status' },
containsAllLabel: true,
change: (value: any) => {
console.log(value)
this.st.reload()
}
} as SFSelectWidgetSchema
},
deadlineTime: {
title: '时间范围',
type: 'string',
ui: {
widget: 'date',
mode: 'range',
format: 'yyyy-MM-dd',
visibleIf: {
_$expand: (value: boolean) => value
},
allowClear: true
} as SFDateWidgetSchema
}
}
};
this.ui = {
@ -126,7 +104,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
this.columns = [
{
title: '订单号',
index: 'name1'
index: 'billCode'
},
{
title: '订单金额(元)',
@ -186,4 +164,8 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit {
this.sf.reset();
this.st.load(1);
}
close() {
this.modalRef.destroy()
}
}

View File

@ -1,3 +1,13 @@
/*
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-03-10 11:19:00
* @LastEditors : Shiming
* @LastEditTime : 2022-03-10 13:51:05
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\services\\rebate-management.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { Injectable, Injector } from '@angular/core';
import { BaseService } from '@shared';
@ -5,7 +15,8 @@ import { BaseService } from '@shared';
providedIn: 'root',
})
export class RebateManagementService extends BaseService {
// 查询规则抽查列表
public $api_get_listCompliancePage = '/api/sdc/billRiskOperate/listRiskPage';
constructor(public injector: Injector) {
super(injector);
}

View File

@ -0,0 +1,236 @@
/**
* 操作符类型运算符
* +:加法运算
* -:减法运算
* *:乘法运算
* /:除法运算
*/
type OperationType = '+' | '-' | '*' | '/';
class Big {
/**
* Big值
*/
private v: number;
/**
* 构造函数
* @param v 初始值
*/
constructor(v: number) {
this.v = v;
}
/**
* 转换整数,返回倍数及整数值,比如
* 100 >>> { times: 1, num: 100 } ===> 100
* 3.14 >>> { times: 100, num: 3.14} ===> 314
* @param n number
*/
private toInteger(n: number) {
const ret = { times: 1, num: 0 };
if (Number.isInteger(n)) {
ret.num = n;
return ret;
}
ret.times = Math.pow(10, n.toString().split('.')[1].length);
ret.num = parseInt((n * ret.times + 0.5).toString(), 10);
return ret;
}
/**
* 执行运算
* @param m 数值m
* @param n 数值n
* @param key 运算符
*/
private operation(m: number = 0, n: number = 0, key: OperationType) {
const o1 = this.toInteger(m);
const o2 = this.toInteger(n);
const n1 = o1.num;
const n2 = o2.num;
const t1 = o1.times;
const t2 = o2.times;
const max = Math.max(t1, t2);
let result = 0;
switch (key) {
case '+':
if (t1 === t2) {
// 两个小数位数相同
result = n1 + n2;
} else if (t1 > t2) {
// o1 小数位 大于 o2
result = n1 + n2 * (t1 / t2);
} else {
// o1 小数位 小于 o2
result = n1 * (t2 / t1) + n2;
}
result /= max;
break;
case '-':
if (t1 === t2) {
result = n1 - n2;
} else if (t1 > t2) {
result = n1 - n2 * (t1 / t2);
} else {
result = n1 * (t2 / t1) - n2;
}
result /= max;
break;
case '*':
result = (n1 * n2) / (t1 * t2);
break;
case '/':
result = (n1 * t2) / (t1 * n2);
break;
default:
result = 0;
}
return new Big(result);
}
/**
* 数值化
* @param n
*/
private numeric(n: number | Big) {
return n instanceof Big ? n.v : n;
}
/**
* 加法运算
* @param n
*/
public plus(n: number | Big) {
return this.operation(this.v, this.numeric(n), '+');
}
/**
* 减法运算
* @param n
*/
public minus(n: number | Big) {
return this.operation(this.v, this.numeric(n), '-');
}
/**
* 乘法运算
* @param n
*/
public multipliedBy(n: number | Big) {
return this.operation(this.v, this.numeric(n), '*');
}
/**
* 除法运算
* @param n
*/
public dividedBy(n: number | Big) {
return this.operation(this.v, this.numeric(n), '/');
}
/**
* 解析结果
*/
public parse() {
return this.v;
}
/**
* 小数点后固定指定位数比如固定小数点后5位数字则有
* 30 ==> 30.00000
* 3.14 ===> 3.14000
* @param n
*/
public static digits(v: number | Big, len: number = 2) {
if (Number.isInteger(v)) {
return `${v}.${Array(len).fill(0).join('')}`;
} else {
const [prefix, suffix] = v.toString().split('.');
const sLen = suffix.length;
if (sLen > len) {
return `${prefix}.${suffix.slice(0, len)}`;
} else if (sLen < len) {
return `${prefix}.${suffix}${Array(len - sLen)
.fill(0)
.join('')}`;
} else {
return `${prefix}.${suffix}`;
}
}
}
public digits(len: number) {
return Big.digits(this.v, len);
}
/**
* 人民币格式处理
* - 非数字返回0
* - 整数:直接返回
* - 小数:保留小数点后两位,超出两位则截取
* @param v
*/
public static rmb(v: string | number) {
if (isNaN(Number(v))) {
return '0';
} else {
const foo = v.toString();
if (/^[0-9]+$/.test(foo)) {
return foo;
} else {
const [prefix, suffix] = foo.split('.');
const sLen = suffix.length;
if (sLen > 2) {
return `${prefix}.${suffix.slice(0, 2)}`;
} else if (sLen < 2) {
return `${foo}0`;
} else {
return foo;
}
}
}
}
public rmb() {
return Big.rmb(this.v);
}
/**
* 切割数字
* @param v
*/
public static split(v: string | number) {
if (isNaN(Number(v))) {
return [];
} else {
return v
.toString()
.split('.')
.map((item, i) => {
if (i === 1) {
return item && item.length < 2 ? `${item}0` : item;
}
return item;
});
}
}
public split() {
return Big.split(this.v);
}
/**
* 省略 --> 如果超过1万则返回万制转换后小数点后保留两位
* 比如12345 返回 1.23万
* @param v
*/
public static ellipsis(v: string | number) {
// 如果不是数值类型并且转换之后不为数字,则直接返回传入值
if (isNaN(Number(v))) {
return v.toString();
}
// 如果传入数值小于1万则没必要转换直接返回
if (+v < 10000) {
return v.toString();
}
// 超过1万处理之后再返回
return Big.rmb(+v / 10000) + '万';
}
public ellipsis(v: string | number) {
return Big.ellipsis(this.v);
}
}
export default Big;

View File

@ -522,7 +522,7 @@
"group": true,
"children": [{
"text": "返佣配置",
"link": "/partner/rebate/"
"link": "/partner/rebate/setting"
},
{
"text": "返佣明细",
@ -556,8 +556,7 @@
},
{
"text": "提现记录",
"link": "/partner/account-management/withdraw-record",
"hide": true
"link": "/partner/account-management/withdraw-record"
},
{
"text": "提现详情",
@ -565,6 +564,21 @@
"hide": true
}
]
},
{
"text": "客户认领审核",
"link": "/partner/claim-audit/list",
"children": [{
"text": "合伙人客户认领详情",
"link": "/partner/claim-audit/partner-detail",
"hide": true
},
{
"text": "渠道销售客户认领详情",
"link": "/partner/claim-audit/channel-detail",
"hide": true
}
]
}
]
}