This commit is contained in:
1107302052
2022-03-21 00:57:42 +08:00
parent 54e8ff1660
commit 504078a7ec
10 changed files with 455 additions and 42 deletions

41
package-lock.json generated
View File

@ -2879,35 +2879,6 @@
"integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
"dev": true "dev": true
}, },
"@types/quill": {
"version": "2.0.9",
"resolved": "https://registry.npmmirror.com/@types/quill/-/quill-2.0.9.tgz",
"integrity": "sha512-/n40Ypp+jF3GDLqB/5z1P+Odq1K98txXbBgRDkG6Z90LGC1AwQPtZWNeOdDg0yUlgBSUASmpeDn3eBPUuPXtuw==",
"dev": true,
"requires": {
"parchment": "^1.1.2",
"quill-delta": "^4.0.1"
},
"dependencies": {
"fast-diff": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz",
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
"dev": true
},
"quill-delta": {
"version": "4.2.2",
"resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-4.2.2.tgz",
"integrity": "sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==",
"dev": true,
"requires": {
"fast-diff": "1.2.0",
"lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0"
}
}
}
},
"@types/selenium-webdriver": { "@types/selenium-webdriver": {
"version": "3.0.19", "version": "3.0.19",
"resolved": "https://registry.npmmirror.com/@types/selenium-webdriver/download/@types/selenium-webdriver-3.0.19.tgz", "resolved": "https://registry.npmmirror.com/@types/selenium-webdriver/download/@types/selenium-webdriver-3.0.19.tgz",
@ -10165,24 +10136,12 @@
"resolved": "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz", "resolved": "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz",
"integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=" "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw="
}, },
"lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
"dev": true
},
"lodash.debounce": { "lodash.debounce": {
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz", "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true "dev": true
}, },
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
"dev": true
},
"lodash.memoize": { "lodash.memoize": {
"version": "4.1.2", "version": "4.1.2",
"resolved": "https://registry.nlark.com/lodash.memoize/download/lodash.memoize-4.1.2.tgz", "resolved": "https://registry.nlark.com/lodash.memoize/download/lodash.memoize-4.1.2.tgz",

View File

@ -0,0 +1,46 @@
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<div nz-row class="head-box">
<div nz-col nzSpan="1">
<img src="./assets/images/usercenter/拉货车.png" alt="" />
</div>
<div nz-col nzSpan="11" class="pl-lg">
<div class="right-h">深圳市XXXXXXX有限公司</div>
<div class="right-s">91440300357887492H</div>
<sv-container col="2" >
<sv label="联系人"> </sv>
<sv label="注册时间"> </sv>
<sv label="合同有效期"> </sv>
<sv label="运营主体"> </sv>
</sv-container>
</div>
<div nz-col nzSpan="10">
<div class="left-rt">待审核</div>
<div class="left-rb">
<button nz-button (click) ="reject()">拒绝</button>
<button nz-button nzType="primary" (click) ="approve()">通过</button>
</div>
</div>
</div>
</ng-template>
</page-header-wrapper>
<nz-card nzTitle="建议反馈">
<div nz-row>
<div nz-col nzSpan="12">
<sv-container col="1" labelWidth="120">
<sv label="问题类型"> </sv>
<sv label="描述或内容建议"> </sv>
<sv label="图片"> </sv>
<sv label="提交时间"> </sv>
</sv-container>
</div>
</div>
</nz-card>

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,71 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn } from '@delon/abc/st';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { ParterClaimAuditListChannelApproveComponent } from '../../../claim-audit/components/channel-approve/channel-approve.component';
import { ParterClaimAuditListChannelRejectComponent } from '../../../claim-audit/components/channel-reject/channel-reject.component';
import { AdviceFeedbackService } from '../../services/advice-feedback.service';
// import { ParterClaimAuditListChannelApproveComponent } from '../channel-approve/channel-approve.component';
// import { ParterClaimAuditListChannelRejectComponent } from '../channel-reject/channel-reject.component';
@Component({
selector: 'app-parter-feedback-detail-detail',
templateUrl: './feedback-detail.component.html',
styleUrls: ['./feedback-detail.component.less']
})
export class ParterAdviceFeedbackDetailComponent implements OnInit {
id = this.route.snapshot.queryParams.id;
i: any;
imges: any;
isVisible = false;
constructor(
private route: ActivatedRoute,
private msgSrv: NzMessageService,
public service: AdviceFeedbackService,
private modalService: NzModalService,
private router: Router
) {}
ngOnInit(): void {
this.initData();
}
initData() {
// this.service.request(this.service.$api_getBulkBillDetail, { id: this.id }).subscribe(res => {
// if (res) {
// this.i = res;
//
// }
// });
}
approve() {
const modalRef = this.modalService.create({
nzTitle: '同意',
nzWidth: 700,
nzContent: ParterClaimAuditListChannelApproveComponent,
nzComponentParams: {
i: this.i
},
nzFooter: null
});
}
reject() {
const modalRef = this.modalService.create({
nzTitle: '拒绝',
nzWidth: 700,
nzContent: ParterClaimAuditListChannelRejectComponent,
nzComponentParams: {
i: this.i
},
nzFooter: null
});
}
goBack() {
window.history.go(-1);
}
}

View File

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

View File

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

View File

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

View File

@ -47,6 +47,8 @@ import { ScrollImgComponentsListComponent } from './scrollimg/components/list/li
import { BannerComponentsListComponent } from './knowledge/banner/components/list/list.component'; import { BannerComponentsListComponent } from './knowledge/banner/components/list/list.component';
import { BannerComponentsAddComponent } from './knowledge/banner/components/add/add.component'; import { BannerComponentsAddComponent } from './knowledge/banner/components/add/add.component';
import { PersonalPartnerDetailComponent } from './partner-list/components/personal-partner-detail/personal-partner-detail.component'; import { PersonalPartnerDetailComponent } from './partner-list/components/personal-partner-detail/personal-partner-detail.component';
import { ParterAdviceFeedbackListComponent } from './advice-feedback/components/list/list.component';
import { ParterAdviceFeedbackDetailComponent } from './advice-feedback/components/feedback-detail/feedback-detail.component';
const routes: Routes = [ const routes: Routes = [
{ {
@ -135,6 +137,14 @@ const routes: Routes = [
{ path: 'detail', component: ScrollimgComponentsAddComponent } { path: 'detail', component: ScrollimgComponentsAddComponent }
] ]
}, },
{
path: 'advice-feedback',
children: [
{ path: '', component: ParterAdviceFeedbackListComponent },
{ path: 'list', component: ParterAdviceFeedbackListComponent },
{ path: 'detail', component: ParterAdviceFeedbackDetailComponent }
]
},
{ {
path: 'recorded', path: 'recorded',
children: [ children: [

View File

@ -59,6 +59,8 @@ import { ScrollImgComponentsListComponent } from './scrollimg/components/list/li
import { BannerComponentsListComponent } from './knowledge/banner/components/list/list.component'; import { BannerComponentsListComponent } from './knowledge/banner/components/list/list.component';
import { BannerComponentsAddComponent } from './knowledge/banner/components/add/add.component'; import { BannerComponentsAddComponent } from './knowledge/banner/components/add/add.component';
import { PersonalPartnerDetailComponent } from './partner-list/components/personal-partner-detail/personal-partner-detail.component'; import { PersonalPartnerDetailComponent } from './partner-list/components/personal-partner-detail/personal-partner-detail.component';
import { ParterAdviceFeedbackListComponent } from './advice-feedback/components/list/list.component';
import { ParterAdviceFeedbackDetailComponent } from './advice-feedback/components/feedback-detail/feedback-detail.component';
const COMPONENTS: any[] = [ const COMPONENTS: any[] = [
PartnerBusinessStatisticsIndexComponent, PartnerBusinessStatisticsIndexComponent,
@ -107,7 +109,9 @@ const COMPONENTS: any[] = [
PartnerEditComponent, PartnerEditComponent,
BannerComponentsListComponent, BannerComponentsListComponent,
BannerComponentsAddComponent, BannerComponentsAddComponent,
PersonalPartnerDetailComponent PersonalPartnerDetailComponent,
ParterAdviceFeedbackListComponent,
ParterAdviceFeedbackDetailComponent
]; ];
@NgModule({ @NgModule({

View File

@ -596,6 +596,15 @@
"text": "轮播图管理", "text": "轮播图管理",
"link": "/partner/scroll-img/list" "link": "/partner/scroll-img/list"
}, },
{
"text": "建议反馈管理",
"link": "/partner/advice-feedback/list"
},
{
"text": "建议反馈管理详情",
"link": "/partner/advice-feedback/detail",
"hide": true
},
{ {
"text": "知识库管理", "text": "知识库管理",
"icon": "iconfont icon-yundan-copy", "icon": "iconfont icon-yundan-copy",