diff --git a/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html index eed8266a..b39e4913 100644 --- a/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html +++ b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-02-24 20:09:49 * @LastEditors : Shiming - * @LastEditTime : 2022-04-26 15:50:41 + * @LastEditTime : 2022-04-26 20:44:56 * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> @@ -20,10 +20,10 @@ - 固定结算费率配置 + 固定结算费率配置 -  % @@ -37,21 +37,24 @@ -
- +
+ +
+
+
关联合伙人配置 - + - + diff --git a/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts index 052b5c3c..6e0b851b 100644 --- a/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts +++ b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-03-21 09:26:45 * @LastEditors : Shiming - * @LastEditTime : 2022-04-26 15:51:04 + * @LastEditTime : 2022-04-26 21:06:50 * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.ts * Copyright (C) 2022 huzhenhong. All rights reserved. */ @@ -25,6 +25,7 @@ export class ParterRebateManageMentAddComponent implements OnInit { @ViewChild('table') table!: any; titleText :string= '新增'; tabelData: any; + tabelType: any; formData: any; addStatus: boolean = false; hiden: boolean = false; @@ -88,7 +89,6 @@ export class ParterRebateManageMentAddComponent implements OnInit { text: '移除', click: _record => this.delete(_record), iif: ()=> { - console.log(this.hiden); return !this.hiden }, acl: { ability: ['AbnormalAppear-reply'] } @@ -98,7 +98,6 @@ export class ParterRebateManageMentAddComponent implements OnInit { ]; } ngOnInit() { - console.log(this.ar.snapshot.queryParams.id); if(this.ar.snapshot?.queryParams?.id) { this.titleText= '查看' this.hiden= true @@ -128,14 +127,11 @@ export class ParterRebateManageMentAddComponent implements OnInit { this.partnerId = []; if (res) { if (Array.isArray(res)) { - console.log(res); - console.log(this.partnerPeopleList); this.partnerPeopleList = this.partnerPeopleList.concat(res); res.forEach((ele: any) => { this.partnerId.push(ele?.id); }); } else { - console.log(res); this.partnerPeopleList = this.partnerPeopleList.concat(res); this.partnerId.push(res?.id); } @@ -148,9 +144,27 @@ export class ParterRebateManageMentAddComponent implements OnInit { }); } save() { - console.log(this.partnerId); - console.log(this.partnerId.join(',')); - + console.log(this.configName); + // if(!this.configName) { + // this.service.msgSrv.warning('请输入配置名称!'); + // return + // } + // if(!this.accountingRate) { + // this.service.msgSrv.warning('请输入固定结算费率!'); + // return + // } + // if(!this.partnerType) { + // this.service.msgSrv.warning('请选择合伙人范围!'); + // return + // } + // if(this.partnerType == '3' && this.partnerPeopleList?.length == 0) { + // this.service.msgSrv.warning('请选择合伙人!'); + // return + // } + this.table.data.forEach((element: any) => { + console.log(element); + + }); const params = { accountingRate: this.accountingRate, configName: this.configName, @@ -162,18 +176,15 @@ export class ParterRebateManageMentAddComponent implements OnInit { remarke: this.remarke, partnerType: this.partnerType }; - console.log(params); - this.service.request(this.service.$api_save_rebateConfig, params).subscribe((res: any) => { - if (res) { - console.log(res); - this.service.msgSrv.success('新增成功!'); - this.router.navigate(['/partner/rebate/setting']); - } - }); + // this.service.request(this.service.$api_save_rebateConfig, params).subscribe((res: any) => { + // if (res) { + // this.service.msgSrv.success('新增成功!'); + // this.router.navigate(['/partner/rebate/setting']); + // } + // }); } initData(id:string) { this.service.request(this.service.$api_get_getPartnerRebateConfigInfo, {id: id}).subscribe((res: any) => { - console.log(res); if(res) { this.configName = res?.configName; this.accountingRate = res?.accountingRate; @@ -189,7 +200,6 @@ export class ParterRebateManageMentAddComponent implements OnInit { }) } changePartner(value: any) { - console.log(value); if (value == '3') { this.addStatus = true; } else { diff --git a/src/app/routes/partner/system-config/components/config/config.component.html b/src/app/routes/partner/system-config/components/config/config.component.html index e942c052..c57af325 100644 --- a/src/app/routes/partner/system-config/components/config/config.component.html +++ b/src/app/routes/partner/system-config/components/config/config.component.html @@ -12,15 +12,15 @@

提现手续费配置

-
- +
+
按照提现金额收取 %手续费
- +
按照提现金额收取
-

合伙人提现配置

-
+

合伙人提现配置

+
- + - -
- - - - -
-
-
- + +
+ + + +
+
+
+ +
-

客服电话配置

+

客户定义配置

-
- - - -
+
+ 客户 + + 天内没有交易订单的视为“沉默客户” +
+
+ 客户 + + 天内没有交易订单的视为“流失客户” +
+
+ 说明:交易订单指从司机已接单开始的订单。 +
-

司机端配置

-

图片配置

+

邀请合伙人

+ +

邀请客户

+ - -
可输入字符
- -
-

短信配置

-
-
- -

配置用户端登陆页注册帐号、修改密码、修改手机号时的短信内容

- -
-
-
-

通知配置

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-

客服电话配置

-
-
- - - -
-
-

证件提醒配置

-
-
- - 距离到期时间 - - 天开始提醒,每隔 - - 天提醒一次 - -
-
+
@@ -163,46 +113,48 @@
- - -
-
- - - -
-
-
- -- -
-
- -- -
-
-
- -
- - +
+
+
+ + + +
+
+ +
+
+
+ + + + + +
+
+
+
+
+
diff --git a/src/app/routes/partner/system-config/components/config/config.component.less b/src/app/routes/partner/system-config/components/config/config.component.less index 09e68362..69767d7d 100644 --- a/src/app/routes/partner/system-config/components/config/config.component.less +++ b/src/app/routes/partner/system-config/components/config/config.component.less @@ -18,5 +18,8 @@ width : 100px; margin-left: 10px; } + .audit .ant-form-item-label{ + width: 81px !important; + } } } \ No newline at end of file diff --git a/src/app/routes/partner/system-config/components/config/config.component.ts b/src/app/routes/partner/system-config/components/config/config.component.ts index 3ee76370..bbac9eb1 100644 --- a/src/app/routes/partner/system-config/components/config/config.component.ts +++ b/src/app/routes/partner/system-config/components/config/config.component.ts @@ -1,8 +1,23 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { SFComponent, SFSchema, SFUploadWidgetSchema } from '@delon/form'; -import { Observable, Observer } from 'rxjs'; +import { NzUploadFile } from 'ng-zorro-antd/upload'; +import { Observable, Observer, of } from 'rxjs'; import { ConfigService } from '../../services/config.service'; - +import { apiConf } from '@conf/api.conf'; +const IMAGECONFIG = { + previewFile: (file: NzUploadFile) => of(file.url), + action: apiConf.waterFileUpload, + fileType: 'image/png,image/jpeg,image/jpg,image/gif', + fileSize: 5120, + limit: 1, + limitFileCount: 1, + resReName: 'data.fullFileWatermarkPath', + urlReName: 'data.fullFileWatermarkPath', + widget: 'upload', + name: 'multipartFile', + multiple: false, + listType: 'picture-card' +} as SFUploadWidgetSchema; @Component({ selector: 'app-parterl-config', templateUrl: './config.component.html', @@ -10,6 +25,7 @@ import { ConfigService } from '../../services/config.service'; }) export class PartnerSystemConfigComponent implements OnInit { @ViewChild('sf', { static: false }) sf!: SFComponent; + @ViewChild('sf2', { static: false }) sf2!: SFComponent; formDate: any = { isAudit: false, isEveryDay: false, @@ -21,6 +37,7 @@ export class PartnerSystemConfigComponent implements OnInit { auditTime!: any; auditTimeStatus: boolean = false everyDay: boolean = false + MonthDay: boolean = false time: Date | null = null; defaultOpenValue = new Date(0, 0, 0, 0, 0, 0); tabs = [ @@ -32,6 +49,22 @@ export class PartnerSystemConfigComponent implements OnInit { } ]; selectedTab = 0; + TimeStatus: boolean = true + everyDayData: Array =[]; + MonthDayData: any = [ + {month: [ + { label: '周一', value: '周一', }, + { label: '周二', value: '周二' }, + { label: '周三', value: '周三' }, + { label: '周四', value: '周四' }, + { label: '周五', value: '周五' }, + { label: '周六', value: '周六' }, + { label: '周日', value: '周日' } + ], Times:[ { + startTime: [], + endTime: [], + }]} + ] checkOptionsOne = [ { label: '周一', value: '周一', checked: true }, @@ -45,134 +78,212 @@ export class PartnerSystemConfigComponent implements OnInit { i: any; schema!: SFSchema; + schema2!: SFSchema; - imageConfig = { - widget: 'upload', - action: `/scm/cms/cms/upload/multipartFile/fileModel`, - limit: 1, - limitFileCount: 1, - resReName: 'url', - urlReName: 'url', - data: { - appId: this.service.envSrv.getEnvironment().appId - }, - multiple: false, - listType: 'picture-card', - showRequired: true - }; + // IMAGECONFIG = { + // widget: 'upload', + // action: `/scm/cms/cms/upload/multipartFile/fileModel`, + // limit: 1, + // limitFileCount: 1, + // resReName: 'url', + // urlReName: 'url', + // data: { + // appId: this.service.envSrv.getEnvironment().appId + // }, + // multiple: false, + // listType: 'picture-card', + // showRequired: true + // }; + constructor(private service: ConfigService) {} ngOnInit() { this.initSF(); + this.everyDayData = [ + { + startTime: '', + endTime: '', + } + ] + } + addEvery() { + this.everyDayData.push( + { + startTime: [], + endTime: [], + } + ) + } + delEvery(index: number) { + this.everyDayData.splice(index, 1) + + } + addMonthEvery(value: any) { + this.MonthDayData[value].Times.push( + { + startTime: '', + endTime: '' + } + ) + } + addMonth() { + this.MonthDayData.push( + {month: [ + { label: '周一', value: '周一', }, + { label: '周二', value: '周二' }, + { label: '周三', value: '周三' }, + { label: '周四', value: '周四' }, + { label: '周五', value: '周五' }, + { label: '周六', value: '周六' }, + { label: '周日', value: '周日' } + ], Times:[{ + startTime: '', + endTime: '' + }]} + ) + + } + delMonth(value: number,index: number) { + this.MonthDayData[value].Times.splice(index, 1) } - changeType(type: number): void { this.selectedTab = type; } + changeMonth(type: any): void { + console.log(type); + console.log( this.MonthDayData); + } + everyDayChange(type: any): void { + console.log(type); + if(type) { + this.MonthDay = false + this.TimeStatus = true + } + } + MonthDayChange(type: any): void { + console.log(type); + if(type) { + this.everyDay = false + this.TimeStatus = false + } + } + initSF() { this.schema = { properties: { - sysMinLogo: { + roadTransportPhoto: { title: '', type: 'string', ui: { hidden: true } }, + roadTransportPhotoWatermark: { type: 'string', - title: '系统LOGO(小)', - // enum: [], + title: '分享海报', ui: { - ...this.imageConfig, - descriptionI18n: '小尺寸logo,支持JPG、PNG格式,文件小于2M(建议尺寸32*32px)。', + ...IMAGECONFIG, + descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸 750px* 1624 px)。', change: args => { if (args.type === 'success') { - const avatar = this.getImageModel(args, 'sysMinLogo'); - this.sf?.setValue('/sysMinLogo', avatar); - this.i.sysMinLogo = avatar; + this.sf.setValue('/roadTransportPhoto', args.fileList[0].response.data.fullFilePath); } }, - beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, - sysMaxLogo: { + share: { title: '', type: 'string', ui: { hidden: true } }, + shareWatermark: { type: 'string', - title: '系统LOGO(大)', + title: '分享图', ui: { - ...this.imageConfig, - descriptionI18n: '小尺寸logo,支持JPG、PNG格式,文件小于2M(建议尺寸32*32px)。', + ...IMAGECONFIG, + descriptionI18n: '支持JPG、PNG格式,文件小于2M( 建议尺寸 856px * 688px)。', change: args => { if (args.type === 'success') { - const avatar = this.getImageModel(args, -1); - this.sf?.setValue('/sysMaxLogo', avatar); - this.i.sysMaxLogo = avatar; + this.sf.setValue('/share', args.fileList[0].response.data.fullFilePath); } }, - beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, - sysMaxLogo1: { + take: { title: '', type: 'string', ui: { hidden: true } }, + takeWatermark: { type: 'string', - title: '用户默认头像', + title: '受邀海报', ui: { - ...this.imageConfig, - descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸60*60px)。', + ...IMAGECONFIG, + descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸 750px* 1624 px)。', change: args => { if (args.type === 'success') { - const avatar = this.getImageModel(args, -1); - this.sf?.setValue('/sysMaxLogo1', avatar); - this.i.sysMaxLogo1 = avatar; + this.sf.setValue('/take', args.fileList[0].response.data.fullFilePath); } }, - beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, - sysMaxLogo2: { + complianceRemark: { + title: '分享文案', type: 'string', - title: '企业默认头像', + maxLength: 50, ui: { - ...this.imageConfig, - descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸60*60px)。', - change: args => { - if (args.type === 'success') { - const avatar = this.getImageModel(args, -1); - this.sf?.setValue('/sysMaxLogo2', avatar); - this.i.sysMaxLogo2 = avatar; - } - }, - beforeUpload: this.uploadBefore - } as SFUploadWidgetSchema - }, - sysMaxLogo3: { - type: 'string', - title: '货主PC端登陆页海报', - ui: { - ...this.imageConfig, - descriptionI18n: '支持JPG、PNG格式,文件小于5M(建议尺寸1920*630px)。', - change: args => { - if (args.type === 'success') { - const avatar = this.getImageModel(args, -1); - this.sf?.setValue('/sysMaxLogo3', avatar); - this.i.sysMaxLogo3 = avatar; - } - }, - beforeUpload: this.uploadBefore - } as SFUploadWidgetSchema - }, - sysMaxLogo4: { - type: 'string', - title: 'APP开屏海报', - ui: { - ...this.imageConfig, - descriptionI18n: '支持JPG、PNG格式,文件小于5M(建议尺寸375*773px)。', - change: args => { - if (args.type === 'success') { - const avatar = this.getImageModel(args, -1); - this.sf?.setValue('/sysMaxLogo4', avatar); - this.i.sysMaxLogo4 = avatar; - } - }, - beforeUpload: this.uploadBefore - } as SFUploadWidgetSchema - }, + placeholder: '请不要超过50个字', + widget: 'textarea', + autosize: { minRows: 3, maxRows: 6 } + } + } }, - required: ['sysMinLogo', 'sysMaxLogo', 'sysMaxLogo1', 'sysMaxLogo2', 'sysMaxLogo3', 'sysMaxLogo4'] + required: ['roadTransportPhotoWatermark', 'shareWatermark', 'takeWatermark', 'complianceRemark'] + }; + this.schema2 = { + properties: { + roadTransportPhoto: { title: '', type: 'string', ui: { hidden: true } }, + roadTransportPhotoWatermark: { + type: 'string', + title: '分享海报', + ui: { + ...IMAGECONFIG, + descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸750px* 1624 px)。', + change: args => { + if (args.type === 'success') { + this.sf2.setValue('/roadTransportPhoto', args.fileList[0].response.data.fullFilePath); + } + }, + } as SFUploadWidgetSchema + }, + share: { title: '', type: 'string', ui: { hidden: true } }, + shareWatermark: { + type: 'string', + title: '分享图', + ui: { + ...IMAGECONFIG, + descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸 856px * 688px)。', + change: args => { + if (args.type === 'success') { + this.sf2.setValue('/share', args.fileList[0].response.data.fullFilePath); + } + }, + } as SFUploadWidgetSchema + }, + take: { title: '', type: 'string', ui: { hidden: true } }, + takeWatermark: { + type: 'string', + title: '受邀海报', + ui: { + ...IMAGECONFIG, + descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸750px* 1624 px)。', + change: args => { + if (args.type === 'success') { + this.sf2.setValue('/take', args.fileList[0].response.data.fullFilePath); + } + }, + } as SFUploadWidgetSchema + }, + complianceRemark: { + title: '分享文案', + type: 'string', + maxLength: 50, + ui: { + placeholder: '请不要超过50个字', + widget: 'textarea', + autosize: { minRows: 3, maxRows: 6 } + } + } + }, + required: ['roadTransportPhotoWatermark', 'shareWatermark', 'takeWatermark', 'complianceRemark'] }; } private uploadBefore = (file: any, fileList: any) => { diff --git a/src/app/routes/ticket-management/components/billing-order/billing-order.component.html b/src/app/routes/ticket-management/components/billing-order/billing-order.component.html new file mode 100644 index 00000000..3f494035 --- /dev/null +++ b/src/app/routes/ticket-management/components/billing-order/billing-order.component.html @@ -0,0 +1,37 @@ + + + + + +
+
+ +
+
+ + + + +
+
+
+ + + + + 待受理 + 处理中 + 已完成 + 已拒绝 + 已撤销 + 已作废 + + + \ No newline at end of file diff --git a/src/app/routes/ticket-management/components/billing-order/billing-order.component.ts b/src/app/routes/ticket-management/components/billing-order/billing-order.component.ts new file mode 100644 index 00000000..6c755377 --- /dev/null +++ b/src/app/routes/ticket-management/components/billing-order/billing-order.component.ts @@ -0,0 +1,277 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st'; +import { SFComponent, SFSchema, SFDateWidgetSchema, SFSelectWidgetSchema } from '@delon/form'; +import { NzModalService } from 'ng-zorro-antd/modal'; +import { TicketService } from '../../services/ticket.service'; + +@Component({ + selector: 'app-billing-order', + templateUrl: './billing-order.component.html', + styleUrls: ['../../../commom/less/box.less', '../../../commom/less/expend-but.less'] +}) +export class BillingOrderComponent implements OnInit { + @ViewChild('st', { static: true }) + st!: STComponent; + @ViewChild('sf', { static: false }) + sf!: SFComponent; + columns: STColumn[] = this.initST(); + searchSchema: SFSchema = this.initSF(); + + _$expand = false; + + constructor(public service: TicketService, private nzModalService: NzModalService, private router: Router, private ar: ActivatedRoute) { } + + ngOnInit(): void { } + + beforeReq = (requestOptions: STRequestOptions) => { + if (this.sf) { + Object.assign(requestOptions.body, { + ...this.sf.value, + }); + } + return requestOptions; + }; + + routeTo(item: any) { + // return; + this.router.navigateByUrl(`/order-management/vehicle/vehicle-detail/${item.billId}`); + } + + /** + * 重置表单 + */ + resetSF() { + this.sf.reset(); + this._$expand = false; + } + + /** + * 伸缩查询条件 + */ + expandToggle() { + this._$expand = !this._$expand; + this.sf?.setValue('/expand', this._$expand); + } + + export() { + this.service.exportStart({ ...this.sf.value, pageSize: -1 }, this.service.$api_export_InvoicedBillInfoPage); + } + + private initSF(): SFSchema { + return { + properties: { + expand: { + type: 'boolean', + ui: { + hidden: true + } + }, + billCode: { + type: 'string', + title: '订单号', + ui: { + placeholder: '请输入' + } + }, + serviceType: { + title: '服务类型', + type: 'string', + ui: { + widget: 'dict-select', + params: { dictKey: 'service:type' }, + containsAllLabel: true, + visibleIf: { + _$expand: (value: boolean) => value + } + } as SFSelectWidgetSchema + }, + shipperAppUserName: { + type: 'string', + title: '货主名称', + ui: { + placeholder: '请输入', + } + }, + vatappcode: { + type: 'string', + title: '申请编号', + ui: { + autocomplete: 'off', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + vatinvcode: { + type: 'string', + title: '分票编号', + ui: { + placeholder: '请输入', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + vatappdate: { + title: '申请时间', + type: 'string', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd HH:mm:ss', + visibleIf: { + expand: (value: boolean) => value + } + } as SFDateWidgetSchema + }, + sts: { + type: 'string', + title: '开票状态', + ui: { + widget: 'dict-select', + params: { dictKey: 'etc:invoicing:status' }, + placeholder: '请选择', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + invoiceno: { + type: 'string', + title: '发票号码', + ui: { + placeholder: '请输入', + autocomplete: 'off', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + invoicedate: { + title: '开票日期', + type: 'string', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + expand: (value: boolean) => value + } + } as SFDateWidgetSchema + }, + enterpriseInfoId: { + type: 'string', + title: '网络货运人', + ui: { + widget: 'select', + placeholder: '请选择', + allowClear: true, + visibleIf: { + expand: (value: boolean) => value + }, + asyncData: () => this.service.getNetworkFreightForwarder() + } + } + } + }; + } + + private initST(): STColumn[] { + return [ + { title: '订单号', index: 'billCode', type:'link', className: 'text-center', width: 180, click: _record => this.routeTo(_record) }, + { title: '运单号', index: 'wayBillCode', width: 180, className: 'text-center' }, + { title: '银行类型', index: 'bankTypeLabel', render: 'bankType', width: 100, className: 'text-center' }, + { title: '网络货运人', index: 'enterpriseInfoName', width: 220, className: 'text-center' }, + { + title: '开票金额', // TODO + index: 'vatmoney', + width: 120, + type: 'widget', + className: 'text-center', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) } + }, + { + title: '总费用', + index: 'totalAmount', + width: 120, + type: 'widget', + className: 'text-center', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.totalAmount }) } + }, + { + title: '运输费', + index: 'price', + width: 120, + type: 'widget', + className: 'text-center', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.price }) } + }, + { + title: '技术服务费', + index: 'insurancePremium', + width: 120, + type: 'widget', + className: 'text-center', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.insurancePremium }) } + }, + { + title: '附加费', + index: 'surcharge', + width: 120, + type: 'widget', + className: 'text-center', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.surcharge }) } + }, + { + title: '附加费率', + className: 'text-center', + index: 'paymentMethodRate', + width: 130, + format: record => `${record.paymentMethodRate}%` + }, + { title: '货主名称', index: 'shipperAppUserName', width: '180px', className: 'text-center' }, + { title: '所属项目', index: 'enterpriseProjectName', width: '180px', className: 'text-center', }, + { + title: '服务类型', + index: 'serviceTypeLabel', + width: '180px', + className: 'text-center' + }, + { title: '装货地', index: 'consignor', width: '180px', className: 'text-center' }, + { title: '卸货地', index: 'consignee', width: '180px', className: 'text-center' }, + { title: '货物信息', index: 'goodsName', className: 'text-center', width: '180px' }, + { title: '车牌号', index: 'carNo', className: 'text-center', width: '180px' }, + { + title: '承运司机', + index:'driverName', + className: 'text-center', + width: '180px', + }, + { + title: '车队长', + className: 'text-center', + width: '180px', + index: 'carCaptainName', + }, + { title: '业务员', width: '100px', index: 'salesmanName', className: 'text-center', }, + // { title: '录单时间', index: 'recordTime', type: 'date', className: 'text-center', width: '150px' }, //TODO + { title: '装货时间', index: 'loadTime', type: 'date', width: '150px', className: 'text-center', }, + { title: '卸货时间', index: 'unloadTime', type: 'date', width: '150px', className: 'text-center', }, + { title: '订单完成时间', index: 'orderReceivingTime', type: 'date', width: 150, className: 'text-center', }, + { title: '支付完成时间', index: 'overallPaymentTime', type: 'date', width: 150, className: 'text-center', }, + { title: '开票状态', index: 'sts', render: 'sts', className: 'text-center', width: 180 }, + { title: '申请开票时间', index: 'vatappdate', type: 'date', className: 'text-center', width: 180 }, + { title: '申请开票编号', index: 'vatappcode', className: 'text-center', width: 180 }, + { title: '分票编号', index: 'vatinvcode', width: '180px', className: 'text-center', }, + { title: '发票号码', index: 'invoiceno', width: 130, className: 'text-center', }, + { title: '发票代码', index: 'invoiceno2', width: 130, className: 'text-center' }, + { title: '开票日期', index: 'invoicedate', type: 'date', width: 150, className: 'text-center' }, + // { title: '作废日期', index: 'invalidTime', type: 'date', width: 150 }, // TODO + { + title: 'ETC开票金额', index: 'etcInvoiceMoney', className: 'text-center', width: 200, type: 'widget', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.etcInvoiceMoney }) } + } + ]; + } +} diff --git a/src/app/routes/ticket-management/services/ticket.service.ts b/src/app/routes/ticket-management/services/ticket.service.ts index 2c1222e5..504c8d84 100644 --- a/src/app/routes/ticket-management/services/ticket.service.ts +++ b/src/app/routes/ticket-management/services/ticket.service.ts @@ -146,6 +146,11 @@ export class TicketService extends ShipperBaseService { // ETC白名单(车辆)导出接口 $api_get_ficoCarWhiteList_asyncExport = '/api/fcc/ficoEtcInvoiceL/asyncExportCarWhiteList'; + // 可开票订单list查询 + $api_invoicedBillInfo_page = '/api/fcc/invoicedBillInfo/getInvoicedBillInfoPage'; + // 可开票订单导出 + $api_export_InvoicedBillInfoPage = '/api/fcc/invoicedBillInfo/exportInvoicedBillInfoPage' + constructor(public injector: Injector) { super(injector); } diff --git a/src/app/routes/ticket-management/ticket-management-routing.module.ts b/src/app/routes/ticket-management/ticket-management-routing.module.ts index 5cbcd7d0..51369dec 100644 --- a/src/app/routes/ticket-management/ticket-management-routing.module.ts +++ b/src/app/routes/ticket-management/ticket-management-routing.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { BillingOrderComponent } from './components/billing-order/billing-order.component'; import { CancellationInvoiceComponent } from './components/cancellation-invoice/cancellation-invoice.component'; import { ETCBlacklistComponent } from './components/etc-blacklist/etc-blacklist.component'; import { ETCInvoicedListComponent } from './components/etc-invoiced-list/etc-invoiced-list.component'; @@ -28,7 +29,8 @@ const routes: Routes = [ { path: 'input-invoice', component: InputInvoiceComponent }, { path: 'input-invoice/detail/:id', component: InputInvoiceDetailComponent }, { path: 'input-invoice/edit/:id', component: EditCollectionInvoiceComponent }, - { path: 'express-info', component: ExpressInfoComponent } + { path: 'express-info', component: ExpressInfoComponent }, + { path: 'billing-order', component: BillingOrderComponent } ]; @NgModule({ diff --git a/src/app/routes/ticket-management/ticket-management.module.ts b/src/app/routes/ticket-management/ticket-management.module.ts index e0d47e51..dede5926 100644 --- a/src/app/routes/ticket-management/ticket-management.module.ts +++ b/src/app/routes/ticket-management/ticket-management.module.ts @@ -26,6 +26,7 @@ import { PrintOrderModalComponent } from './components/invoice-requested/print-o import { ExpressInfoComponent } from './components/express-info/express-info.component'; import { ExpressDetailModalComponent } from './components/express-info/express-detail-modal/express-detail-modal.component'; import { UpdateAddressModalComponent } from './components/invoice-requested/update-address-modal/update-address-modal.component'; +import { BillingOrderComponent } from './components/billing-order/billing-order.component'; const COMPONENTS: any = [ ETCInvoicedListComponent, @@ -41,7 +42,8 @@ const COMPONENTS: any = [ InputInvoiceComponent, InputInvoiceDetailComponent, EditCollectionInvoiceComponent, - ExpressInfoComponent + ExpressInfoComponent, + BillingOrderComponent ]; const NOTROUTECOMPONENTS: any = [ TransactionDetailsComponent, diff --git a/src/app/routes/vehicle/components/audit/detail/detail.component.ts b/src/app/routes/vehicle/components/audit/detail/detail.component.ts index 89ece581..6f2ec34c 100644 --- a/src/app/routes/vehicle/components/audit/detail/detail.component.ts +++ b/src/app/routes/vehicle/components/audit/detail/detail.component.ts @@ -137,6 +137,7 @@ export class VehicleComponentsAuditDetailComponent implements OnInit, OnDestroy reset() { this.detailData = { ...this.tempalateData }; this.isEdit = false; + this.getDetailList(); } save() { @@ -261,10 +262,19 @@ export class VehicleComponentsAuditDetailComponent implements OnInit, OnDestroy return value; } viewEvaluate(item: any) { - this.modal.createStatic(VehicleImgViewComponent, { i: item }).subscribe(i => { + // this.modal.createStatic(VehicleImgViewComponent, { i: item }).subscribe(i => { + // this.st.reload(); + // this.getDetailList(); + // }); + console.log(item); + + const params = { + imgList: [item.carProtocal], + index: 0 + }; + this.nzImageService.preview([{ src: item.carProtocal}]); this.st.reload(); this.getDetailList(); - }); } updateEvaluate(item: any) { this.modal.createStatic(VehicleComponentsListEditComponent, { i: item }).subscribe(i => { diff --git a/src/app/routes/vehicle/components/list/detail/detail.component.ts b/src/app/routes/vehicle/components/list/detail/detail.component.ts index 9e729f83..50a20048 100644 --- a/src/app/routes/vehicle/components/list/detail/detail.component.ts +++ b/src/app/routes/vehicle/components/list/detail/detail.component.ts @@ -28,7 +28,7 @@ export class VehicleComponentsListDetailComponent implements OnInit { modalName = ''; ui!: SFUISchema; columns!: STColumn[]; - uploadURl = apiConf.fileUpload; + uploadURl = apiConf.waterFileUpload; schema!: SFSchema; @ViewChild('sf', { static: false }) sf!: SFComponent; schema1!: SFSchema; @@ -198,10 +198,14 @@ export class VehicleComponentsListDetailComponent implements OnInit { *查看评价 */ viewEvaluate(item: any) { - this.modal.createStatic(VehicleImgViewComponent, { i: item }).subscribe(() => { - this.st.reload(); - this.getDetailList(); - }); + console.log(item); + this.st.reload(); + this.getDetailList(); + const params = { + imgList: [item.carProtocal], + index: 0 + }; + this.nzImageService.preview([{ src: item.carProtocal}]); } /** *查看评价 @@ -219,7 +223,7 @@ export class VehicleComponentsListDetailComponent implements OnInit { changeUpload({ file, fileList, type }: any, key: string) { console.log({ file, fileList, type }); if (type === 'success') { - this.detailData[key] = file.response.data.fullFilePath; + this.detailData[key] = file.response.data.fullFileWatermarkPath; } } deleteImg(key: string) { @@ -247,6 +251,7 @@ export class VehicleComponentsListDetailComponent implements OnInit { reset() { this.detailData = { ...this.tempalateData }; this.isEdit = false; + this.getDetailList(); } save() { diff --git a/src/app/routes/vehicle/components/list/edit/edit.component.ts b/src/app/routes/vehicle/components/list/edit/edit.component.ts index 0de6585d..d614e420 100644 --- a/src/app/routes/vehicle/components/list/edit/edit.component.ts +++ b/src/app/routes/vehicle/components/list/edit/edit.component.ts @@ -56,12 +56,13 @@ export class VehicleComponentsListEditComponent implements OnInit { // 依据类型初始表单 this.schema = { properties: { - carProtocal: { + carProtocal: { title: '', type: 'string', ui: { hidden: true } }, + carProtocalWatermark: { type: 'string', title: '车主申明/挂靠协议', ui: { widget: 'upload', - action: apiConf.fileUpload, + action: apiConf.waterFileUpload, fileType: 'image/png,image/jpeg,image/jpg,image/gif', limit: 1, limitFileCount: 1, @@ -72,6 +73,11 @@ export class VehicleComponentsListEditComponent implements OnInit { appId: this.envSrv.env.appId, }, name: 'multipartFile', + change: args => { + if (args.type === 'success') { + this.sf.setValue('/carProtocal', args.fileList[0].response.data.fullFilePath); + } + }, beforeUpload: (file: any, fileList: any) => { return new Observable((observer: Observer) => { const isLt1M = file.size / 1024 / 1024 < 5; @@ -110,8 +116,11 @@ export class VehicleComponentsListEditComponent implements OnInit { this.modal.destroy(); } sure() { + console.log(this.sf.value); + const params ={ - carProtocal: this.sf.value.carProtocal?.data?.fullFilePath, + carProtocal: this.sf.value.carProtocal, + carProtocalWatermark: this.sf.value.carProtocalWatermark, id: this.i.id } this.service.request(this.service.$api_get_upLoadCarProtocal, params).subscribe((res) => { diff --git a/src/app/shared/components/rebate-table/rebate-table.component.html b/src/app/shared/components/rebate-table/rebate-table.component.html index f23994c1..2380c116 100644 --- a/src/app/shared/components/rebate-table/rebate-table.component.html +++ b/src/app/shared/components/rebate-table/rebate-table.component.html @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-01-25 20:18:52 * @LastEditors : Shiming - * @LastEditTime : 2022-04-22 14:09:16 + * @LastEditTime : 2022-04-26 20:46:19 * @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\rebate-table\\rebate-table.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> @@ -23,7 +23,7 @@ 初始业务量(万/月) 到达业务量(万/月) 管理费比例% - 操作 + 操作 @@ -37,15 +37,18 @@
- - + + + + +
- @@ -55,7 +58,7 @@
- +
@@ -63,7 +66,7 @@
- @@ -72,11 +75,11 @@
- - + + - - diff --git a/src/app/shared/components/rebate-table/rebate-table.component.ts b/src/app/shared/components/rebate-table/rebate-table.component.ts index d2b3fa09..0e6581fc 100644 --- a/src/app/shared/components/rebate-table/rebate-table.component.ts +++ b/src/app/shared/components/rebate-table/rebate-table.component.ts @@ -1,60 +1,66 @@ import { debounceTime } from 'rxjs/operators'; import { Subject } from 'rxjs'; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, Input, OnInit, Output } from '@angular/core'; import { BaseService } from '@shared'; -import { SFComponent, SFSchema, SFUISchema } from '@delon/form'; -import { EventEmitter} from '@angular/core' +import { EventEmitter } from '@angular/core'; @Component({ selector: 'app-rebate-table', templateUrl: './rebate-table.component.html', styleUrls: ['./rebate-table.component.less'] }) export class RebateTableComponent implements OnInit { - @Input() data: any =[]; + @Input() data: any = []; // 数据 + @Input() type: any; // 配置类型 1全部等级 2不同等级 + @Input() hiden!: boolean; // 判断新增/查看 @Output() private dataChange: EventEmitter = new EventEmitter(); emit() { - this.dataChange.emit(this.data) + this.dataChange.emit(this.data); } headers: any[] = []; - gradeConfigId: string =''; + gradeConfigId: string = ''; grage: any[] = []; formatterDollar = (value: number): string => `${value}`; changeSub = new Subject(); constructor(public service: BaseService, private cdr: ChangeDetectorRef) {} ngOnInit(): void { - this.data = [ - { - gradeConfigId: '', - startAmount: 0, - endAmount: 0, - managementFeeRatio: 0, - } - ]; - this.loadData(); + if (this.type == '2') { + this.loadData(); + } + // 新增-不同等级情况 + if (!this.hiden && this.type == '2') { + this.data = [ + { + gradeConfigId: '', + startAmount: 0, + endAmount: 0, + managementFeeRatio: 0, + } + ]; + // 新增-全部等级情况 + } else if (!this.hiden && this.type == '1'){ + this.data = [ + { + gradeConfigId: '0', + startAmount: 0, + endAmount: 0, + managementFeeRatio: 0, + } + ]; + } this.changeendAmountAction(); } loadData() { this.service.request('/api/mdc/partnerGradeConfig/listPartnerGradeConfig').subscribe(res => { if (res) { - console.log(res); this.grage = res; this.cdr.detectChanges(); } }); - // this.service.request('/api/mdc/pbc/sysConfigItem/findItemValueByItemKeys', [ - // "rebate.config.minrebatePrice" - // ]).subscribe(res => { - // if (res) { - // console.log(res); - // } - // }); } - - /** * 修改结束公里数 * @param event 车长 @@ -62,8 +68,6 @@ export class RebateTableComponent implements OnInit { */ changeendAmount(event: any, i: number) { if (event) { - console.log(event); - this.changeSub.next(`${event},${i}`); } } @@ -75,10 +79,9 @@ export class RebateTableComponent implements OnInit { const i = Number(paras[1]); if (num <= this.data[i]?.startAmount) { - console.log(this.data[i].endAmount); this.data[i].endAmount = null; setTimeout(() => { - this.data[i].endAmount = this.data[i]?.startAmount + 1 ; + this.data[i].endAmount = this.data[i]?.startAmount + 1; }, 0); this.changeNextstartAmount(this.data[i]?.startAmount + 1, i + 1); return; @@ -90,45 +93,25 @@ export class RebateTableComponent implements OnInit { } add() { - console.log(this.data); - const tem = this.data[this.data?.length - 1]; if (tem) { this.data.push({ gradeConfigId: '', startAmount: 0, endAmount: 0, - managementFeeRatio: 0, + managementFeeRatio: 0 }); this.data = [...this.data]; } } deleteRow(index: number) { - console.log(index); var newArr = this.data.concat(); - newArr.splice(this.data.length-1,1) + newArr.splice(this.data.length - 1, 1); // this.data = this.data.pop() - console.log(newArr); this.data = [...newArr]; } - save() { - console.log(this.data) - let params= { - rebateConfigDTOS: this.data - } - console.log(params); - this.service.request('/api/mdc/cuc/rebateConfig/saveBatch', params).subscribe(res => { - if (res) { - console.log(res); - this.service.msgSrv.success('修改成功'); - this.loadData(); - } - }); - } - - /** * 遍历同步后置位公里数 * @param event 车长