Merge branch 'feature/partner' of https://gitlab.eascs.com/tms-ui/tms-obc-web into feature/partner
This commit is contained in:
@ -0,0 +1,7 @@
|
|||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,114 @@
|
|||||||
|
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 { ChannelSalesService } from '../../services/channel-sales.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-channel-sales-edit',
|
||||||
|
templateUrl: './edit.component.html'
|
||||||
|
})
|
||||||
|
export class ParterChannelSalesEditComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
private modalRef: NzModalRef
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name1: {
|
||||||
|
title: '业务员选择',
|
||||||
|
type: 'string',
|
||||||
|
enum: [
|
||||||
|
{ label: '王武', value: '1'},
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder:'请选择'
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
name2: {
|
||||||
|
type: 'string',
|
||||||
|
title: '授权登录运营后台',
|
||||||
|
enum: [
|
||||||
|
{ label: '否', value: '0' },
|
||||||
|
{ label: '是', value: '1' }
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'radio',
|
||||||
|
} as SFRadioWidgetSchema,
|
||||||
|
default: 'A',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: '',
|
||||||
|
type: 'string',
|
||||||
|
enum: [
|
||||||
|
{ label: '管理员', value: '1'},
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder:'授权角色',
|
||||||
|
visibleIf: { name2: (value: string) => value === '1' }
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '备注',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请输入50字符'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name1', 'name2']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 150,
|
||||||
|
grid: { span: 24 }
|
||||||
|
},
|
||||||
|
$name:{ spanLabelFixed: 10, grid: { span: 12 }},
|
||||||
|
$name2:{ grid: { span: 12 }},
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
// this.service.request('', { ...this.sf.value }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.modalRef.destroy(true);
|
||||||
|
// } else {
|
||||||
|
// this.service.msgSrv.error(res.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
<nz-card>
|
||||||
|
<!-- 搜索区 -->
|
||||||
|
<sf
|
||||||
|
#sf
|
||||||
|
[ui]="ui"
|
||||||
|
[schema]="schema"
|
||||||
|
[mode]="'search'"
|
||||||
|
(formSubmit)="st?.load(1)"
|
||||||
|
(formReset)="resetSF()"
|
||||||
|
></sf>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<button nz-button nzType="primary" style="margin-bottom: 24px" (click)="add()"><i nz-icon nzType="plus"></i>新增</button>
|
||||||
|
<!-- 数据列表 -->
|
||||||
|
<st
|
||||||
|
#st
|
||||||
|
[bordered]="true"
|
||||||
|
[data]="data"
|
||||||
|
[columns]="columns"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,175 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { processSingleSort } from '@shared';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { ChannelSalesService } from '../../services/channel-sales.service';
|
||||||
|
import { ParterChannelSalesEditComponent } from '../edit/edit.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-channel-sales-list',
|
||||||
|
templateUrl: './list.component.html'
|
||||||
|
})
|
||||||
|
export class ParterChannelSalesListComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
columns!: STColumn[];
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st', { static: false })
|
||||||
|
st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false })
|
||||||
|
sf!: SFComponent;
|
||||||
|
spuStatus = '1';
|
||||||
|
|
||||||
|
data=[{name1:1111}]
|
||||||
|
constructor(
|
||||||
|
public router: Router,
|
||||||
|
public ar: ActivatedRoute,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
private modalService: NzModalService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
ngOnInit() {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
title: '销售渠道姓名'
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
type: 'string',
|
||||||
|
title: '手机号'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
grid: { span: 8, gutter: 4 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{
|
||||||
|
title: '销售渠道姓名',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '手机号',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所属组织',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '职级',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '等级',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '省市',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '邀请码',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '编辑',
|
||||||
|
click: (_record, _modal, _instance) => this.edit(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '查看',
|
||||||
|
click: (_record, _modal, _instance) => this.view(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '冻结',
|
||||||
|
click: (_record, _modal, _instance) => this.stop(_record.id),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
add() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzWidth:600,
|
||||||
|
nzTitle: '新增',
|
||||||
|
nzContent: ParterChannelSalesEditComponent,
|
||||||
|
nzComponentParams: { type: this.spuStatus }
|
||||||
|
});
|
||||||
|
modalRef.afterClose.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.st.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
edit(record: STData) {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzWidth:600,
|
||||||
|
nzTitle: '编辑',
|
||||||
|
nzContent: ParterChannelSalesEditComponent,
|
||||||
|
nzComponentParams: { i: record, type: this.spuStatus }
|
||||||
|
});
|
||||||
|
modalRef.afterClose.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.st.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
view(record: STData) {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '查看',
|
||||||
|
nzContent: ParterChannelSalesEditComponent,
|
||||||
|
nzComponentParams: { i: record }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
stop(id: any) {
|
||||||
|
this.modalService.confirm({
|
||||||
|
nzTitle: '<i>冻结确认</i>',
|
||||||
|
nzContent: `<b>确定冻结该账号吗?</br>`,
|
||||||
|
// nzOnOk: () =>
|
||||||
|
// this.service.request('', '').subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.service.msgSrv.success('冻结成功!');
|
||||||
|
// this.st.reload();
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class ChannelSalesService extends BaseService {
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
<sf #sf [ui]="ui" [schema]="schema" [button]="'none'" [formData]="i">
|
||||||
|
</sf>
|
||||||
|
|
||||||
|
<div *nzModalFooter>
|
||||||
|
<button nz-button nzType="default" (click)="close()">取消</button>
|
||||||
|
<button nz-button nzType="primary" (click)="save()">确认</button>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,88 @@
|
|||||||
|
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 { ChannelSalesService } from '../../services/level-config.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-LevelConfig-edit',
|
||||||
|
templateUrl: './edit.component.html'
|
||||||
|
})
|
||||||
|
export class ParterLevelConfigEditComponent implements OnInit {
|
||||||
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||||
|
schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
i: any;
|
||||||
|
type: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public http: _HttpClient,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
private modalRef: NzModalRef
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
id: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: { hidden: true }
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: '合伙人等级',
|
||||||
|
type: 'string',
|
||||||
|
enum: [
|
||||||
|
{ label: '管理员', value: '1'},
|
||||||
|
],
|
||||||
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
|
placeholder:'请选择',
|
||||||
|
visibleIf: { name2: (value: string) => value === '1' }
|
||||||
|
} as SFSelectWidgetSchema,
|
||||||
|
},
|
||||||
|
name3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '备注',
|
||||||
|
maxLength: 50,
|
||||||
|
ui: {
|
||||||
|
widget: 'textarea',
|
||||||
|
autosize: { minRows: 3, maxRows: 6 },
|
||||||
|
placeholder:'请输入50字符'
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['name1', 'name2']
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
spanLabelFixed: 120,
|
||||||
|
grid: { span: 24 }
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
close() {
|
||||||
|
this.modalRef.destroy();
|
||||||
|
}
|
||||||
|
save() {
|
||||||
|
this.sf.validator({ emitError: true });
|
||||||
|
if(!this.sf.valid) return;
|
||||||
|
// this.service.request('', { ...this.sf.value }).subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.modalRef.destroy(true);
|
||||||
|
// } else {
|
||||||
|
// this.service.msgSrv.error(res.msg);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
<nz-card>
|
||||||
|
<!-- 搜索区 -->
|
||||||
|
<sf
|
||||||
|
#sf
|
||||||
|
[ui]="ui"
|
||||||
|
[schema]="schema"
|
||||||
|
[mode]="'search'"
|
||||||
|
(formSubmit)="st?.load(1)"
|
||||||
|
(formReset)="resetSF()"
|
||||||
|
></sf>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<button nz-button nzType="primary" style="margin-bottom: 24px" (click)="add()"><i nz-icon nzType="plus"></i>新增</button>
|
||||||
|
<!-- 数据列表 -->
|
||||||
|
<st
|
||||||
|
#st
|
||||||
|
[bordered]="true"
|
||||||
|
[data]="data"
|
||||||
|
[columns]="columns"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,180 @@
|
|||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st';
|
||||||
|
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { processSingleSort } from '@shared';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
|
import { ChannelSalesService } from '../../services/level-config.service';
|
||||||
|
import { ParterLevelConfigEditComponent } from '../edit/edit.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-LevelConfig-list',
|
||||||
|
templateUrl: './list.component.html'
|
||||||
|
})
|
||||||
|
export class ParterLevelConfigListComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
columns!: STColumn[];
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st', { static: false })
|
||||||
|
st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false })
|
||||||
|
sf!: SFComponent;
|
||||||
|
spuStatus = '1';
|
||||||
|
|
||||||
|
data=[{name1:1111}]
|
||||||
|
constructor(
|
||||||
|
public router: Router,
|
||||||
|
public ar: ActivatedRoute,
|
||||||
|
public service: ChannelSalesService,
|
||||||
|
private modalService: NzModalService
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
ngOnInit() {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
name: {
|
||||||
|
type: 'string',
|
||||||
|
title: '等级姓名'
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
type: 'string',
|
||||||
|
title: '状态'
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
grid: { span: 8, gutter: 4 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{
|
||||||
|
title: '等级姓名',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '备注',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '启用时间',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '状态',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
className: 'text-center',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
text: '编辑',
|
||||||
|
click: (_record, _modal, _instance) => this.edit(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '禁用',
|
||||||
|
click: (_record, _modal, _instance) => this.stop(_record),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '启用',
|
||||||
|
click: (_record, _modal, _instance) => this.restart(_record),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
add() {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzWidth:500,
|
||||||
|
nzTitle: '新增',
|
||||||
|
nzContent: ParterLevelConfigEditComponent,
|
||||||
|
nzComponentParams: { type: this.spuStatus }
|
||||||
|
});
|
||||||
|
modalRef.afterClose.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.st.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
edit(record: STData) {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzWidth:500,
|
||||||
|
nzTitle: '编辑',
|
||||||
|
nzContent: ParterLevelConfigEditComponent,
|
||||||
|
nzComponentParams: { i: record, type: this.spuStatus }
|
||||||
|
});
|
||||||
|
modalRef.afterClose.subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.st.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑
|
||||||
|
view(record: STData) {
|
||||||
|
const modalRef = this.modalService.create({
|
||||||
|
nzTitle: '查看',
|
||||||
|
nzContent: ParterLevelConfigEditComponent,
|
||||||
|
nzComponentParams: { i: record }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
restart(id: any) {
|
||||||
|
this.modalService.confirm({
|
||||||
|
nzTitle: '<i>冻结确认</i>',
|
||||||
|
nzContent: `<b>确定启用该账号吗?</br>`,
|
||||||
|
// nzOnOk: () =>
|
||||||
|
// this.service.request('', '').subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.service.msgSrv.success('冻结成功!');
|
||||||
|
// this.st.reload();
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
stop(id: any) {
|
||||||
|
this.modalService.confirm({
|
||||||
|
nzTitle: '<i>冻结确认</i>',
|
||||||
|
nzContent: `<b>确定禁用该账号吗?</br>`,
|
||||||
|
// nzOnOk: () =>
|
||||||
|
// this.service.request('', '').subscribe(res => {
|
||||||
|
// if (res) {
|
||||||
|
// this.service.msgSrv.success('冻结成功!');
|
||||||
|
// this.st.reload();
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class ChannelSalesService extends BaseService {
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,15 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* @Description :
|
||||||
|
* @Version : 1.0
|
||||||
|
* @Author : Shiming
|
||||||
|
* @Date : 2022-02-24 15:07:57
|
||||||
|
* @LastEditors : Shiming
|
||||||
|
* @LastEditTime : 2022-02-24 15:23:48
|
||||||
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-routing.module.ts
|
||||||
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
|
*/
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { RouterModule, Routes } from '@angular/router';
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
import { PartnerBusinessStatisticsIndexComponent } from './business-statistics/components/index/index.component';
|
import { PartnerBusinessStatisticsIndexComponent } from './business-statistics/components/index/index.component';
|
||||||
import { PartnerPartnerCustomDetailComponent } from './business-statistics/components/partner-custom-detail/partner-custom-detail.component';
|
import { PartnerPartnerCustomDetailComponent } from './business-statistics/components/partner-custom-detail/partner-custom-detail.component';
|
||||||
import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component';
|
import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component';
|
||||||
|
import { ParterChannelSalesEditComponent } from './channel-sales/components/edit/edit.component';
|
||||||
|
import { ParterChannelSalesListComponent } from './channel-sales/components/list/list.component';
|
||||||
|
import { ParterLevelConfigEditComponent } from './level-config/components/edit/edit.component';
|
||||||
|
import { ParterLevelConfigListComponent } from './level-config/components/list/list.component';
|
||||||
|
import { ParterRebateManageMentParticularsComponent } from './rebate-management/components/list/particulars.component';
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{ path: 'business-statistics/index', component: PartnerBusinessStatisticsIndexComponent },
|
{
|
||||||
|
path: 'business-statistics', children: [
|
||||||
|
{ path: '', redirectTo: 'index' },
|
||||||
|
{ path: 'index', component: PartnerBusinessStatisticsIndexComponent },
|
||||||
{ path: 'sale-custom/detail/:id', component: PartnerSaleCustomDetailComponent },
|
{ path: 'sale-custom/detail/:id', component: PartnerSaleCustomDetailComponent },
|
||||||
{ path: 'partner-custom/detail/:id', component: PartnerPartnerCustomDetailComponent },
|
{ path: 'partner-custom/detail/:id', component: PartnerPartnerCustomDetailComponent },
|
||||||
];
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'channel-sales',
|
||||||
|
children: [
|
||||||
|
{ path: '', component: ParterChannelSalesListComponent },
|
||||||
|
{ path: 'list', component: ParterChannelSalesListComponent },
|
||||||
|
{ path: 'edit', component: ParterChannelSalesEditComponent },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'level-config',
|
||||||
|
children: [
|
||||||
|
{ path: '', component: ParterLevelConfigListComponent },
|
||||||
|
{ path: 'list', component: ParterLevelConfigListComponent },
|
||||||
|
{ path: 'edit', component: ParterLevelConfigEditComponent },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'rebate',
|
||||||
|
children: [
|
||||||
|
{ path: 'particulars', component: ParterRebateManageMentParticularsComponent },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [RouterModule.forChild(routes)],
|
imports: [RouterModule.forChild(routes)],
|
||||||
exports: [RouterModule]
|
exports: [RouterModule]
|
||||||
|
|||||||
@ -3,18 +3,30 @@ import { CommonModule } from '@angular/common';
|
|||||||
import { SharedModule } from '@shared';
|
import { SharedModule } from '@shared';
|
||||||
import { PartnerRoutingModule } from './partner-routing.module';
|
import { PartnerRoutingModule } from './partner-routing.module';
|
||||||
import { PartnerBusinessStatisticsIndexComponent } from './business-statistics/components/index/index.component';
|
import { PartnerBusinessStatisticsIndexComponent } from './business-statistics/components/index/index.component';
|
||||||
|
import { ParterChannelSalesListComponent } from './channel-sales/components/list/list.component';
|
||||||
|
import { ParterChannelSalesEditComponent } from './channel-sales/components/edit/edit.component';
|
||||||
|
import { ParterLevelConfigEditComponent } from './level-config/components/edit/edit.component';
|
||||||
|
import { ParterLevelConfigListComponent } from './level-config/components/list/list.component';
|
||||||
import { PartnerPartnerStatisticsComponent } from './business-statistics/components/partner-statistics/partner-statistics.component';
|
import { PartnerPartnerStatisticsComponent } from './business-statistics/components/partner-statistics/partner-statistics.component';
|
||||||
import { PartnerSaleStatisticsComponent } from './business-statistics/components/sale-statistics/sale-statistics.component';
|
import { PartnerSaleStatisticsComponent } from './business-statistics/components/sale-statistics/sale-statistics.component';
|
||||||
import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component';
|
import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component';
|
||||||
import { PartnerPartnerCustomDetailComponent } from './business-statistics/components/partner-custom-detail/partner-custom-detail.component';
|
import { PartnerPartnerCustomDetailComponent } from './business-statistics/components/partner-custom-detail/partner-custom-detail.component';
|
||||||
|
import { ParterRebateManageMentParticularsComponent } from './rebate-management/components/list/particulars.component';
|
||||||
|
|
||||||
const COMPONENTS: any[] = [
|
const COMPONENTS: any[] = [
|
||||||
PartnerBusinessStatisticsIndexComponent,
|
PartnerBusinessStatisticsIndexComponent,
|
||||||
|
ParterChannelSalesListComponent,
|
||||||
|
ParterChannelSalesEditComponent,
|
||||||
|
ParterLevelConfigListComponent,
|
||||||
|
ParterLevelConfigEditComponent,
|
||||||
PartnerPartnerStatisticsComponent,
|
PartnerPartnerStatisticsComponent,
|
||||||
PartnerSaleStatisticsComponent,
|
PartnerSaleStatisticsComponent,
|
||||||
PartnerPartnerCustomDetailComponent,
|
PartnerPartnerCustomDetailComponent,
|
||||||
PartnerPartnerCustomDetailComponent,
|
PartnerPartnerCustomDetailComponent,
|
||||||
PartnerSaleCustomDetailComponent];
|
PartnerSaleCustomDetailComponent,
|
||||||
|
ParterRebateManageMentParticularsComponent
|
||||||
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [...COMPONENTS],
|
declarations: [...COMPONENTS],
|
||||||
imports: [CommonModule, PartnerRoutingModule, SharedModule]
|
imports: [CommonModule, PartnerRoutingModule, SharedModule]
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
<nz-card>
|
||||||
|
<!-- 搜索区 -->
|
||||||
|
<sf
|
||||||
|
#sf
|
||||||
|
[ui]="ui"
|
||||||
|
[schema]="schema"
|
||||||
|
[mode]="'search'"
|
||||||
|
(formSubmit)="st?.load(1)"
|
||||||
|
(formReset)="resetSF()"
|
||||||
|
></sf>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<nz-card>
|
||||||
|
<!-- 数据列表 -->
|
||||||
|
<st
|
||||||
|
#st
|
||||||
|
[bordered]="true"
|
||||||
|
[data]="data"
|
||||||
|
[columns]="columns"
|
||||||
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
|
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
|
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||||
|
[loadingDelay]="500"
|
||||||
|
[loading]="service.http.loading"
|
||||||
|
>
|
||||||
|
</st>
|
||||||
|
</nz-card>
|
||||||
@ -0,0 +1,165 @@
|
|||||||
|
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';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-parter-channel-rebate-management-particulars',
|
||||||
|
templateUrl: './particulars.component.html'
|
||||||
|
})
|
||||||
|
export class ParterRebateManageMentParticularsComponent implements OnInit {
|
||||||
|
schema: SFSchema = {};
|
||||||
|
columns!: STColumn[];
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('st', { static: false })
|
||||||
|
st!: STComponent;
|
||||||
|
@ViewChild('sf', { static: false })
|
||||||
|
sf!: SFComponent;
|
||||||
|
spuStatus = '1';
|
||||||
|
|
||||||
|
data=[{name1:1111}]
|
||||||
|
constructor(
|
||||||
|
public router: Router,
|
||||||
|
public ar: ActivatedRoute,
|
||||||
|
public service: RebateManagementService,
|
||||||
|
private modalService: NzModalService,
|
||||||
|
public shipperservice: ShipperBaseService
|
||||||
|
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询参数
|
||||||
|
*/
|
||||||
|
get reqParams() {
|
||||||
|
return { ...this.sf?.value };
|
||||||
|
}
|
||||||
|
ngOnInit() {
|
||||||
|
this.initSF();
|
||||||
|
this.initST();
|
||||||
|
}
|
||||||
|
|
||||||
|
initSF() {
|
||||||
|
this.schema = {
|
||||||
|
properties: {
|
||||||
|
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(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
phone3: {
|
||||||
|
type: 'string',
|
||||||
|
title: '合伙人名称'
|
||||||
|
},
|
||||||
|
deadlineTime: {
|
||||||
|
title: '时间范围',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'date',
|
||||||
|
mode: 'range',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
visibleIf: {
|
||||||
|
_$expand: (value: boolean) => value,
|
||||||
|
},
|
||||||
|
allowClear: true,
|
||||||
|
} as SFDateWidgetSchema,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.ui = {
|
||||||
|
'*': {
|
||||||
|
grid: { span: 8, gutter: 4 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
initST() {
|
||||||
|
this.columns = [
|
||||||
|
{
|
||||||
|
title: '订单号',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单金额(元)',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '付款金额(元)',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '返佣金额(元)',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '附加费率',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '下单客户',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '网络货运人',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '合伙人名称',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '网络货运人',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '合伙人等级',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '管理费比例',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '固定结算费率',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '返佣时间',
|
||||||
|
index: 'name1'
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置表单
|
||||||
|
*/
|
||||||
|
resetSF() {
|
||||||
|
this.sf.reset();
|
||||||
|
this.st.load(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
import { Injectable, Injector } from '@angular/core';
|
||||||
|
import { BaseService } from '@shared';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
})
|
||||||
|
export class RebateManagementService extends BaseService {
|
||||||
|
|
||||||
|
constructor(public injector: Injector) {
|
||||||
|
super(injector);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -508,10 +508,38 @@
|
|||||||
{
|
{
|
||||||
"text": "合伙人管理",
|
"text": "合伙人管理",
|
||||||
"icon": "anticon anticon-dashboard",
|
"icon": "anticon anticon-dashboard",
|
||||||
"children": [{
|
"children": [
|
||||||
|
{
|
||||||
"text": "业务统计",
|
"text": "业务统计",
|
||||||
"link": "/partner/business-statistics/index"
|
"link": "/partner/business-statistics/index"
|
||||||
}]
|
},
|
||||||
|
{
|
||||||
|
"text": "返佣管理",
|
||||||
|
"group": true,
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"text": "返佣配置",
|
||||||
|
"link": "/partner/rebate/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "返佣明细",
|
||||||
|
"link": "/partner/rebate/particulars"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "返佣记录",
|
||||||
|
"link": "/partner/rebate/"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "销售渠道管理",
|
||||||
|
"link": "/partner/channel-sales/list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "等级配置",
|
||||||
|
"link": "/partner/level-config/list"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}]
|
}]
|
||||||
|
|||||||
Reference in New Issue
Block a user