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

This commit is contained in:
Taric Xin
2022-03-25 16:01:27 +08:00
9 changed files with 217 additions and 134 deletions

View File

@ -121,7 +121,6 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
this.initST(); this.initST();
setTimeout(() => { setTimeout(() => {
this.st.load(); this.st.load();
this.getGoodsSourceStatistical();
}, 500); }, 500);
} }
ngOnInit(): void { ngOnInit(): void {

View File

@ -1,7 +1,48 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-03-25 14:10:23
* @LastEditors : Shiming
* @LastEditTime : 2022-03-25 15:59:00
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\audit\\appeal\\appeal.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin> <nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
<sf #sf mode="edit" [schema]="schema" [ui]="ui" button="none"></sf> <div nz-row>
<sv-container col="1">
<sv label="申诉结果">
{{ dataList?.representationsStatusLabel }}
</sv>
<sv label="异常原因">
<div *ngFor="let item of dataList?.billComplianceVOS; let id=index;">
<div>
{{ item?.complianceName }}
</div>
</div>
</sv>
<sv label="申诉原因">
{{ dataList?.representationsCause }}
</sv>
<sv label="申诉描述">
{{ dataList?.representationsDescribe }}
</sv>
<sv label="凭证">
<div >
<app-imagelist
[imgList]="[
dataList?.representationFirstFilePath ? dataList?.representationFirstFilePath : '',
dataList?.representationSecondFilePath,
dataList?.representationThirdFilePath,
dataList?.representationFourthFilePath,
dataList?.representationFifthFilePath
]"
>
</app-imagelist>
</div>
</sv>
</sv-container>
</div>
<div class="modal-footer"> <div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button> <button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid" [nzLoading]="http.loading">确定</button>
</div> </div>

View File

@ -22,11 +22,8 @@ import { OrderManagementService } from '../../../services/order-management.servi
templateUrl: './appeal.component.html' templateUrl: './appeal.component.html'
}) })
export class OneCarOrderAppealComponent implements OnInit { export class OneCarOrderAppealComponent implements OnInit {
record: any = {};
i: any; i: any;
@ViewChild('sf', { static: false }) sf!: SFComponent; dataList: any;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor( constructor(
private modalRef: NzModalRef, private modalRef: NzModalRef,
private modal: NzModalService, private modal: NzModalService,
@ -36,93 +33,88 @@ export class OneCarOrderAppealComponent implements OnInit {
) {} ) {}
ngOnInit(): void { ngOnInit(): void {
this.initSF(); this.initDate();
} }
initSF() { // initSF() {
this.schema = { // this.schema = {
properties: { // properties: {
abnormalCause: { // abnormalCause: {
type: 'string', // type: 'string',
title: '异常原因', // title: '异常原因',
default: this.i.abnormalCause, // default: this.i.abnormalCause,
readOnly: true, // readOnly: true,
ui: { // ui: {
widget: 'textarea', // widget: 'textarea',
autosize: { minRows: 4, maxRows: 6 } // autosize: { minRows: 4, maxRows: 6 }
} as SFTextareaWidgetSchema // } as SFTextareaWidgetSchema
}, // },
representationsCause: { // representationsCause: {
type: 'string', // type: 'string',
title: '申诉原因', // title: '申诉原因',
ui: { // ui: {
widget: 'dict-select', // widget: 'dict-select',
params: { dictKey: 'bill:representation:reason' }, // params: { dictKey: 'bill:representation:reason' },
containsAllLabel: false, // containsAllLabel: false,
placeholder: '请选择', // placeholder: '请选择',
errors: { required: '请选择' } // errors: { required: '请选择' }
} // }
}, // },
representationsDescribe: { // representationsDescribe: {
type: 'string', // type: 'string',
title: '申诉描述', // title: '申诉描述',
maxLength: 100, // maxLength: 100,
ui: { // ui: {
widget: 'textarea', // widget: 'textarea',
autosize: { minRows: 4, maxRows: 6 } // autosize: { minRows: 4, maxRows: 6 }
} as SFTextareaWidgetSchema // } as SFTextareaWidgetSchema
}, // },
fileArr: { // fileArr: {
type: 'string', // type: 'string',
title: '上传凭证', // title: '上传凭证',
ui: { // ui: {
action: apiConf.fileUpload, // action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg', // accept: 'image/png,image/jpeg,image/jpg',
limit: 5, // limit: 5,
limitFileCount: 5, // limitFileCount: 5,
resReName: 'data.fullFilePath', // resReName: 'data.fullFilePath',
urlReName: 'data.fullFilePath', // urlReName: 'data.fullFilePath',
widget: 'upload', // widget: 'upload',
descriptionI18n: '不超过5张单张大小不超过5M支持.jpg、.jpeg和 .png格式', // descriptionI18n: '不超过5张单张大小不超过5M支持.jpg、.jpeg和 .png格式',
name: 'multipartFile', // name: 'multipartFile',
multiple: true, // multiple: true,
listType: 'picture-card', // listType: 'picture-card',
beforeUpload: (file: any, _fileList: any) => { // beforeUpload: (file: any, _fileList: any) => {
return new Observable((observer: Observer<boolean>) => { // return new Observable((observer: Observer<boolean>) => {
const isLt2M = file.size / 1024 / 1024 < 5; // const isLt2M = file.size / 1024 / 1024 < 5;
if (!isLt2M) { // if (!isLt2M) {
this.service.msgSrv.warning('图片大小超过5M!'); // this.service.msgSrv.warning('图片大小超过5M!');
observer.complete(); // observer.complete();
return; // return;
} // }
observer.next(isLt2M); // observer.next(isLt2M);
observer.complete(); // observer.complete();
}); // });
} // }
} as SFUploadWidgetSchema // } as SFUploadWidgetSchema
} // }
}, // },
required: ['representationsCause', 'representationsDescribe'] // required: ['representationsCause', 'representationsDescribe']
}; // };
this.ui = { // this.ui = {
'*': { // '*': {
spanLabelFixed: 100, // spanLabelFixed: 100,
grid: { span: 20 } // grid: { span: 20 }
// }
// };
// }
initDate(): void {
console.log(this.i);
this.service.request(this.service.$api_get_getOrderComplaintDetail, { id: this.i?.id }).subscribe((res: any) => {
if (res) {
console.log(res);
this.dataList = res
} }
}; });
}
save(value: any): void {
// if (!this.sf.valid){
// this.sf.validator({ emitError: true });
// return;
// }
// this.service.request(this.service.$api_addCompleteVehicleRepresentations, { id: this.i?.id, ...this.sf.value }).subscribe(res => {
// if (res) {
// this.service.msgSrv.success('申诉成功!');
// this.modalRef.close(true);
// } else {
// this.service.msgSrv.error(res.msg);
// }
// });
} }
close(): void { close(): void {

View File

@ -4,7 +4,7 @@
* @Author : Shiming * @Author : Shiming
* @Date : 2021-12-03 15:31:52 * @Date : 2021-12-03 15:31:52
* @LastEditors : Shiming * @LastEditors : Shiming
* @LastEditTime : 2022-03-22 17:29:07 * @LastEditTime : 2022-03-25 15:27:40
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\services\\order-management.service.ts * @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\services\\order-management.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
*/ */
@ -174,6 +174,8 @@ export class OrderManagementService extends ShipperBaseService {
$api_get_getTrajectory = `/api/sdc/billShipper/getTrajectoryByBillId`; $api_get_getTrajectory = `/api/sdc/billShipper/getTrajectoryByBillId`;
// 获取订单司机轨迹 // 获取订单司机轨迹
$api_get_getAppDriverPosition = `/api/sdc/billShipper/getAppDriverPosition`; $api_get_getAppDriverPosition = `/api/sdc/billShipper/getAppDriverPosition`;
// 查看申述记录
$api_get_getOrderComplaintDetail = `/api/sdc/billOperate/getOrderComplaintDetail`;
/** /**
* 根据企业ID获取企业历史网络货运人 * 根据企业ID获取企业历史网络货运人
* @returns * @returns

View File

@ -1,14 +1,5 @@
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
<!-- <nz-spin *ngIf="!i" class="modal-spin"></nz-spin> -->
<div class="serviceBox">
<div class="left"><span style="color:red">* </span>客服人员</div>
<div class="right">
<nz-select [(ngModel)]="appUserId" style="width: 250px;">
<nz-option *ngFor="let item of serviceList" [nzValue]="item.appUserId" [nzLabel]="item.name"></nz-option>
</nz-select>
</div>
</div>
<div class="modal-footer"> <div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button> <button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="button" nzType="primary" (click)="submitForm()" [disabled]="!appUserId">确定</button> <button nz-button type="button" nzType="primary" (click)="submitForm()" [disabled]="!sf?.valid">确定</button>
</div> </div>

View File

@ -1,12 +1,13 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { apiConf } from '@conf/api.conf'; import { apiConf } from '@conf/api.conf';
import { cacheConf } from '@conf/cache.conf'; import { cacheConf } from '@conf/cache.conf';
import { SFUISchema, SFSchema, SFUploadWidgetSchema, SFComponent, SFSelectWidgetSchema } from '@delon/form'; import { SFUISchema, SFSchema, SFUploadWidgetSchema, SFComponent, SFSelectWidgetSchema, SFSchemaEnum } from '@delon/form';
import { _HttpClient } from '@delon/theme'; import { _HttpClient } from '@delon/theme';
import { EACacheService, EAEnvironmentService } from '@shared'; import { EACacheService, EAEnvironmentService } from '@shared';
import { NzModalRef } from 'ng-zorro-antd/modal'; import { NzModalRef } from 'ng-zorro-antd/modal';
import { NzUploadFile } from 'ng-zorro-antd/upload'; import { NzUploadFile } from 'ng-zorro-antd/upload';
import { Observable, Observer, of } from 'rxjs'; import { Observable, Observer, of } from 'rxjs';
import { map } from 'rxjs/operators';
import { UsermanageService } from 'src/app/routes/usercenter/services/usercenter.service'; import { UsermanageService } from 'src/app/routes/usercenter/services/usercenter.service';
@Component({ @Component({
@ -19,7 +20,8 @@ export class ShowServiceComponent implements OnInit {
appUserId = '' appUserId = ''
record: any = {}; record: any = {};
i: any; i: any;
serviceList: any = []; ui!: SFUISchema;
schema!: SFSchema;
constructor( constructor(
private modal: NzModalRef, private modal: NzModalRef,
@ -27,27 +29,64 @@ export class ShowServiceComponent implements OnInit {
) { } ) { }
ngOnInit(): void { ngOnInit(): void {
this.initData() this.initSF()
} }
initSF() {
close(): void { this.schema = {
this.modal.close(true) properties: {
} _$expand: { type: 'boolean', ui: { hidden: true } },
initData(){ customerServiceId: {
this.service.request(this.service.$api_getStaffList).subscribe(res => { title: '客服人员',
this.serviceList = res type: 'string',
}) ui: {
} widget: 'select',
submitForm(){ asyncData: () => {
const params:any = { const params = {
appUserId: this.appUserId, // enterpriseId: 1,
}; // enterpriseProjectId: this.i.mainProjectId,
this.service.request(this.service.$api_getStaffList, params).subscribe(res => { }
if(res){ return this.service.request(this.service.$api_getStaffList, params).pipe(
this.service.msgSrv.success('分配成功') map((res: any) => {
this.modal.close(true) return res.map((i: any) => {
} return { label: i.name, value: i.appUserId };
}) });
} }),
);
// serverSearch: true,
// searchDebounceTime: 300,
// searchLoadingText: '搜索中...',
// onSearch: (q: any) => {
// if (!!q) {
// return this.service
// .request(this.service.$api_getStaffList, {
// nameOrPhone: q
// })
// .pipe(map((res: any) => (res?.records as any[]).map(i => ({ name: i.name, value: i.appUserId } as SFSchemaEnum))))
// .toPromise();
// } else {
// return of([]);
// }
},
} as SFSelectWidgetSchema
}
},
required: ['customerServiceId']
};
}
close(): void {
this.modal.close(true)
}
submitForm() {
const params: any = {
...this.sf.value,
enterpriseIdList: [this.i.id]
};
this.service.request(this.service.$api_distributionCusService, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('分配成功')
this.modal.close(true)
}
})
}
} }

View File

@ -162,6 +162,8 @@ export class UsermanageService extends ShipperBaseService {
$api_getEnterpriceRel = '/api/mdc/enterpriceRelLog/getEnterpriceRel'; $api_getEnterpriceRel = '/api/mdc/enterpriceRelLog/getEnterpriceRel';
// 员工列表 // 员工列表
$api_getStaffList = '/api/mdc/cuc/userApp/getStaffList'; $api_getStaffList = '/api/mdc/cuc/userApp/getStaffList';
// 分配客服人员
$api_distributionCusService = '/api/mdc/cuc/enterpriseInfo/operate/distributionCusService';
constructor(public injector: Injector, public nzModalService: NzModalService, private nzImageService: NzImageService) { constructor(public injector: Injector, public nzModalService: NzModalService, private nzImageService: NzImageService) {
super(injector); super(injector);

View File

@ -1,6 +1,16 @@
<!--
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-03-23 14:24:05
* @LastEditors : Shiming
* @LastEditTime : 2022-03-25 15:47:50
* @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\imagelist\\imagelist.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<div class="imgBox"> <div class="imgBox">
<ng-container *ngFor="let item of imgList; let i = index"> <ng-container *ngFor="let item of imgList; let i = index">
<ng-container *ngIf="item; else elseTemplate"> <ng-container *ngIf="item;">
<img nz-image [nzSrc]="item" /> <img nz-image [nzSrc]="item" />
</ng-container> </ng-container>
<ng-template #elseTemplate> <ng-template #elseTemplate>

View File

@ -1,10 +1,10 @@
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-12-09 17:36:13 * @Date: 2021-12-09 17:36:13
* @LastEditTime: 2021-12-10 14:12:24 * @LastEditTime : 2022-03-25 15:43:12
* @LastEditors: Please set LastEditors * @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\shared\components\imagelist\imagelist.component.ts * @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\imagelist\\imagelist.component.ts
*/ */
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { ModalHelper, _HttpClient } from '@delon/theme'; import { ModalHelper, _HttpClient } from '@delon/theme';
@ -26,13 +26,20 @@ export class ImageListComponent implements OnInit {
private nzImageService: NzImageService private nzImageService: NzImageService
) {} ) {}
ngOnInit(): void {} ngOnInit(): void {
}
showImg(index: any) { showImg(index: any) {
const params = { const params = {
imgList: this.imgList, imgList: this.imgList,
index index
}; };
const images = this.imgList.map((url: string) => ({ src: url })); const images = this.imgList.map((url: string) => {
if(url) {
console.log(url);
({ src: url })
}
});
this.nzImageService.preview(images); this.nzImageService.preview(images);
// this.modal.create(ImageViewComponent, { params }).subscribe(res => {}); // this.modal.create(ImageViewComponent, { params }).subscribe(res => {});
} }