From 2c1cbc42736e5c37e94035aa4dae95e7fc5f4006 Mon Sep 17 00:00:00 2001 From: hu177768073 <177768073@qq.com> Date: Thu, 14 Aug 2025 15:15:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/pages/merchant/merchant.routes.ts | 3 +- .../oil-config/oil-config.component.html | 119 +++++----- .../oil-config/oil-config.component.ts | 133 +++++++---- .../oil-no-config.component.html | 64 ++++++ .../oil-no-config.component.less | 3 + .../oil-no-config/oil-no-config.component.ts | 210 ++++++++++++++++++ .../oil-price-config.component.html | 120 ++++++++++ .../oil-price-config.component.less | 3 + .../oil-price-config.component.ts | 206 +++++++++++++++++ .../order-oil-list.component.html | 20 +- .../order-oil-list.component.ts | 60 ++++- .../order/order-settle-ledger-status.pipe.ts | 32 +++ .../mer-oil-price/oil-gun-no.service.ts | 61 +++++ .../mer-oil-price/oil-price.service.ts | 85 +++++++ .../services/trade/order-refund.service.ts | 2 +- .../services/trade/order-settle.service.ts | 42 ++++ 16 files changed, 1035 insertions(+), 128 deletions(-) create mode 100644 src/app/pages/merchant/oil-no-config/oil-no-config.component.html create mode 100644 src/app/pages/merchant/oil-no-config/oil-no-config.component.less create mode 100644 src/app/pages/merchant/oil-no-config/oil-no-config.component.ts create mode 100644 src/app/pages/merchant/oil-price-config/oil-price-config.component.html create mode 100644 src/app/pages/merchant/oil-price-config/oil-price-config.component.less create mode 100644 src/app/pages/merchant/oil-price-config/oil-price-config.component.ts create mode 100644 src/app/pipes/order/order-settle-ledger-status.pipe.ts create mode 100644 src/app/services/mer-oil-price/oil-gun-no.service.ts create mode 100644 src/app/services/mer-oil-price/oil-price.service.ts create mode 100644 src/app/services/trade/order-settle.service.ts diff --git a/src/app/pages/merchant/merchant.routes.ts b/src/app/pages/merchant/merchant.routes.ts index 6046770..e04bf98 100644 --- a/src/app/pages/merchant/merchant.routes.ts +++ b/src/app/pages/merchant/merchant.routes.ts @@ -6,7 +6,6 @@ import {MerchantAmountListComponent} from "./merchant-amount-list/merchant-amoun import {MerChainBrandAmountComponent} from "./mer-chain-brand-amount/mer-chain-brand-amount.component"; import {DeviceListComponent} from "../device/device-list/device-list.component"; import {OilTaskComponent} from "../mer-oil-price/oil-task/oil-task.component"; -import {OilDiscountComponent} from "../mer-oil-price/oil-discount/oil-discount.component"; import {DevicePrintComponent} from "../device/device-print/device-print.component"; import {OilConfigComponent} from "./oil-config/oil-config.component"; import {QrCodeListComponent} from "./qr-code-list/qr-code-list.component"; @@ -15,6 +14,7 @@ import {MerClassGroupListComponent} from "../mer-class-group/mer-class-group-lis import {MerStaffListComponent} from "./mer-staff-list/mer-staff-list.component"; import {MerchantAmountComponent} from "./merchant-amount/merchant-amount.component"; import {OilChannelWeekComponent} from "../mer-oil-price/oil-channel-week/oil-channel-week.component"; +import {OilPriceConfigComponent} from "./oil-price-config/oil-price-config.component"; export const MERCHANT_ROUTES: Routes = [ { path: 'mer-list', component: MerListComponent }, @@ -28,6 +28,7 @@ export const MERCHANT_ROUTES: Routes = [ { path: 'oil-task-list', component: OilTaskComponent }, { path: 'oil-discount-list', component: OilChannelWeekComponent }, { path: 'oil-config', component: OilConfigComponent }, + { path: 'oil-price-config', component: OilPriceConfigComponent }, { path: 'qr-code-list', component: QrCodeListComponent }, { path: 'class-group-list', component: MerClassGroupListComponent }, { path: 'class-group-task-list', component: MerClassGroupTaskComponent }, diff --git a/src/app/pages/merchant/oil-config/oil-config.component.html b/src/app/pages/merchant/oil-config/oil-config.component.html index 4932336..81fad5b 100644 --- a/src/app/pages/merchant/oil-config/oil-config.component.html +++ b/src/app/pages/merchant/oil-config/oil-config.component.html @@ -1,20 +1,10 @@
-
- - 油号 - - - - - - -
- +
@@ -22,37 +12,57 @@ + [nzTotal]="tableData.total" + [nzData]="tableData.list" > - 日期 - 油号 - 国标价 - 油枪价 - 优惠价 + 油品类型 + 油号 + 国标价(今日) + 油枪价(今日) + 优惠价(今日) 更新时间 - 操作 + 状态 + 操作 - - {{data.weeks | week}} {{today == data.weeks?'(今日)':''}} - + {{data.oilTypeName}} {{data.oilNoName}} - {{data.priceOfficial}} - {{data.priceGun}} - {{data.priceVip}} + + ¥{{data.priceOfficial}} + + + ¥{{data.priceGun}} + + ¥{{data.priceVip}} + {{data.updateTime | date : 'yyyy-MM-dd HH:mm:ss'}} + + 正常 + 禁用 + - + + 操作列表 + + + + + @@ -61,60 +71,33 @@
- - - 日期 - - - - - - - - - - - - - - 油品 + 油品 - - - 国标价 - - - - - - - 油枪价 - - - - - - - 优惠价 - - - - -
- +
+ + + + + + + diff --git a/src/app/pages/merchant/oil-config/oil-config.component.ts b/src/app/pages/merchant/oil-config/oil-config.component.ts index 95b85f2..ac7c718 100644 --- a/src/app/pages/merchant/oil-config/oil-config.component.ts +++ b/src/app/pages/merchant/oil-config/oil-config.component.ts @@ -14,8 +14,8 @@ import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; import {NzDatePickerComponent} from "ng-zorro-antd/date-picker"; import {NzFlexDirective} from "ng-zorro-antd/flex"; import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form"; -import {NzInputNumberComponent, NzInputNumberModule} from "ng-zorro-antd/input-number"; -import {NzModalComponent, NzModalModule, NzModalService} from "ng-zorro-antd/modal"; +import {NzInputNumberModule} from "ng-zorro-antd/input-number"; +import {NzModalModule, NzModalService} from "ng-zorro-antd/modal"; import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select"; import {NzDividerComponent} from "ng-zorro-antd/divider"; import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; @@ -29,11 +29,15 @@ import {NzImageModule} from "ng-zorro-antd/image"; import {NzSwitchComponent} from "ng-zorro-antd/switch"; import {NzMessageService} from "ng-zorro-antd/message"; import {BrowserStorageService} from "../../../utils/localStorage.service"; -import {OilTaskService} from "../../../services/mer-oil-price/oil-task.service"; import {CommonService} from "../../../services/common/common.service"; import {DATA} from "../../../data/login/localStorage.namespace"; import {GasOilPriceWeekService} from "../../../services/mer-oil-price/gas-oil-price-week.service"; import {WeekPipe} from "../../../pipes/common/week.pipe"; +import {OilGunNoService} from "../../../services/mer-oil-price/oil-gun-no.service"; +import {OilPriceService} from "../../../services/mer-oil-price/oil-price.service"; +import {NzTypographyComponent} from "ng-zorro-antd/typography"; +import {RouterLink} from "@angular/router"; +import {OilNoConfigComponent} from "../oil-no-config/oil-no-config.component"; @Component({ selector: 'app-oil-config', @@ -79,14 +83,17 @@ import {WeekPipe} from "../../../pipes/common/week.pipe"; NzSwitchComponent, NzDatePickerComponent, NzInputNumberModule, - WeekPipe + WeekPipe, + NzTypographyComponent, + RouterLink, + OilNoConfigComponent ], templateUrl: './oil-config.component.html', styleUrl: './oil-config.component.less' }) export class OilConfigComponent { // 表单数据 - tableData: any = []; + tableData: any = {}; // 搜索表单 searchForm: FormGroup; // 油号 @@ -97,29 +104,24 @@ export class OilConfigComponent { editDataForm: FormGroup; editDataModal = false; - // 当前日期 - today:number = new Date().getDay(); + setOilNoModal = false; + setOilNo: any; + setOilMerNo: any; + constructor(private fb: NonNullableFormBuilder, private message: NzMessageService, private storage: BrowserStorageService, - private gasOilPriceWeekService: GasOilPriceWeekService, + private oilGunNoService: OilGunNoService, + private oilPriceService: OilPriceService, private commonService: CommonService, private modal: NzModalService) { this.merNo = this.storage.get(DATA)['merchant']['merNo']; - - // 初始化搜索框 this.searchForm = this.fb.group({ merNo: [this.merNo], - oilNo: [this.oilNoArray[0].codeValue], }); - this.editDataForm = this.fb.group({ - id: [null, [Validators.required]], - week: [null], - oilNo: [null], - priceOfficial: [null, [Validators.required]], - priceGun: [null, [Validators.required]], - priceVip: [null, [Validators.required]], + merNo: [this.merNo], + oilNo: [null, Validators.required], }); // 查询数据 this.queryData(); @@ -130,35 +132,19 @@ export class OilConfigComponent { */ queryData() { this.searchForm.value.time = new Date().getTime(); - this.gasOilPriceWeekService.getPriceList(this.searchForm.value, (data: any) => { + this.searchForm.value.pageNum = 1; + this.searchForm.value.pageSize = 100; + this.oilPriceService.queryOilList(this.searchForm.value, (data: any) => { if (data['return_code'] == '000000') { this.tableData = data['return_data']; } }); } - /** - * 搜索表单提交 - */ - searchFormSubmit(): void { - this.queryData(); - } - - /** - * 搜索表单重置 - */ - searchFormReset(): void { - this.searchForm.reset(); - } - /** * 打开编辑模态框 */ - showEditModal(data: any) { - data['week'] = String(data['weeks']); - this.editDataForm.patchValue(data); - this.editDataForm.controls['week'].disable(); - this.editDataForm.controls['oilNo'].disable(); + showEditModal() { this.editDataModal = true; } @@ -167,7 +153,7 @@ export class OilConfigComponent { */ submitData() { if (this.editDataForm.valid) { - this.gasOilPriceWeekService.updatePrice(this.editDataForm.value, (data: any) => { + this.oilPriceService.createOil(this.editDataForm.value, (data: any) => { if (data['return_code'] == '000000') { this.message.create('success', '操作成功'); // 刷新数据 @@ -196,4 +182,73 @@ export class OilConfigComponent { this.editDataModal = false; } + /** + * 打开设置油枪号模态框 + */ + showSetOilNoModal(oilNo:string) { + this.setOilMerNo = this.merNo; + this.setOilNo = oilNo; + this.setOilNoModal = true; + } + + /** + * 禁用油号 + * @param oilNo + */ + disable(oilNo:string) { + this.modal.confirm({ + nzTitle: '提醒', + nzContent: '确定禁用'+oilNo+'号油吗?禁用后此油号无法加油', + nzOnOk: () => this.oilPriceService.disable({'merNo':this.merNo, 'oilNo':oilNo}, (data: any) => { + if (data['return_code'] == '000000') { + this.message.create('success', '操作成功'); + // 刷新数据 + this.queryData(); + } else { + this.message.create('error', data['return_msg']); + } + }) + }); + } + + /** + * 恢复油号 + * @param oilNo + */ + restore(oilNo:string) { + this.modal.confirm({ + nzTitle: '提醒', + nzContent: '确定恢复'+oilNo+'号油吗?恢复后可进行加油', + nzOnOk: () => this.oilPriceService.restore({'merNo':this.merNo, 'oilNo':oilNo}, (data: any) => { + if (data['return_code'] == '000000') { + this.message.create('success', '操作成功'); + // 刷新数据 + this.queryData(); + } else { + this.message.create('error', data['return_msg']); + } + }) + }); + } + + /** + * 删除油号 + * @param oilNo + */ + delOil(oilNo:string) { + this.modal.confirm({ + nzTitle: '提醒', + nzContent: '确定删除'+oilNo+'号油吗?', + nzOnOk: () => this.oilPriceService.delete({'merNo':this.merNo, 'oilNo':oilNo}, (data: any) => { + if (data['return_code'] == '000000') { + this.message.create('success', '操作成功'); + // 刷新数据 + this.queryData(); + } else { + this.message.create('error', data['return_msg']); + } + }) + }); + } + } diff --git a/src/app/pages/merchant/oil-no-config/oil-no-config.component.html b/src/app/pages/merchant/oil-no-config/oil-no-config.component.html new file mode 100644 index 0000000..5707b38 --- /dev/null +++ b/src/app/pages/merchant/oil-no-config/oil-no-config.component.html @@ -0,0 +1,64 @@ +
+
+
+ + + + + + +
+
+
+ + + + + 油品类型 + 油号 + 油枪号 + 创建时间 + 操作 + + + + + {{data.oilTypeName}} + {{data.oilNoName}} + {{data.gunNo}} + {{data.createTime | date : 'yyyy-MM-dd HH:mm'}} + + + + + + 总计 {{ total }} 条 + + + + +
+ + 油枪号 + + + + +
+ +
+
+
+
diff --git a/src/app/pages/merchant/oil-no-config/oil-no-config.component.less b/src/app/pages/merchant/oil-no-config/oil-no-config.component.less new file mode 100644 index 0000000..90447c4 --- /dev/null +++ b/src/app/pages/merchant/oil-no-config/oil-no-config.component.less @@ -0,0 +1,3 @@ +nz-input-number { + width: 100%; +} diff --git a/src/app/pages/merchant/oil-no-config/oil-no-config.component.ts b/src/app/pages/merchant/oil-no-config/oil-no-config.component.ts new file mode 100644 index 0000000..2ba90a2 --- /dev/null +++ b/src/app/pages/merchant/oil-no-config/oil-no-config.component.ts @@ -0,0 +1,210 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {DatePipe, NgForOf, NgIf} from "@angular/common"; +import {DictionaryPipe} from "../../../pipes/common/dictionary.pipe"; +import {FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule, Validators} from "@angular/forms"; +import {NzButtonComponent} from "ng-zorro-antd/button"; +import { + NzCellFixedDirective, + NzTableCellDirective, + NzTableComponent, NzTableModule, + NzTbodyComponent, NzTheadComponent, + NzThMeasureDirective, NzTrDirective +} from "ng-zorro-antd/table"; +import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; +import {NzDividerComponent} from "ng-zorro-antd/divider"; +import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; +import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form"; +import {NzIconDirective} from "ng-zorro-antd/icon"; +import {NzInputDirective} from "ng-zorro-antd/input"; +import {NzMenuDirective, NzMenuItemComponent} from "ng-zorro-antd/menu"; +import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select"; +import {NzModalModule, NzModalService} from "ng-zorro-antd/modal"; +import {NzFlexDirective} from "ng-zorro-antd/flex"; +import {NzDescriptionsModule} from "ng-zorro-antd/descriptions"; +import {NzUploadComponent} from "ng-zorro-antd/upload"; +import {NzAvatarModule} from "ng-zorro-antd/avatar"; +import {NzImageModule} from "ng-zorro-antd/image"; +import {NzSwitchComponent} from "ng-zorro-antd/switch"; +import {NzDatePickerComponent} from "ng-zorro-antd/date-picker"; +import {NzInputNumberModule} from "ng-zorro-antd/input-number"; +import {WeekPipe} from "../../../pipes/common/week.pipe"; +import {NzTypographyComponent} from "ng-zorro-antd/typography"; +import {RouterLink} from "@angular/router"; +import {NzMessageService} from "ng-zorro-antd/message"; +import {BrowserStorageService} from "../../../utils/localStorage.service"; +import {OilGunNoService} from "../../../services/mer-oil-price/oil-gun-no.service"; +import {OilPriceService} from "../../../services/mer-oil-price/oil-price.service"; +import {CommonService} from "../../../services/common/common.service"; +import {DATA} from "../../../data/login/localStorage.namespace"; +import {NzEmptyModule} from "ng-zorro-antd/empty"; + +@Component({ + selector: 'app-oil-no-config', + standalone: true, + imports: [ + DatePipe, + DictionaryPipe, + FormsModule, + NgForOf, + NgIf, + NzButtonComponent, + NzCellFixedDirective, + NzColDirective, + NzDividerComponent, + NzDropDownADirective, + NzDropDownDirective, + NzDropdownMenuComponent, + NzFormControlComponent, + NzFormDirective, + NzFormItemComponent, + NzFormLabelComponent, + NzIconDirective, + NzInputDirective, + NzMenuDirective, + NzMenuItemComponent, + NzOptionComponent, + NzRowDirective, + NzSelectComponent, + NzTableCellDirective, + NzTableComponent, + NzTbodyComponent, + NzThMeasureDirective, + NzTheadComponent, + NzTrDirective, + ReactiveFormsModule, + NzTableModule, + NzModalModule, + NzFlexDirective, + NzDescriptionsModule, + NzUploadComponent, + NzAvatarModule, + NzImageModule, + NzSwitchComponent, + NzDatePickerComponent, + NzInputNumberModule, + WeekPipe, + NzTypographyComponent, + RouterLink, + ], + templateUrl: './oil-no-config.component.html', + styleUrl: './oil-no-config.component.less' +}) +export class OilNoConfigComponent implements OnInit { + // 表单数据 + tableData: any = []; + // 搜索表单 + searchForm: FormGroup; + // 油号 + oilNoArray = new DictionaryPipe().getDictionaryList('OIL_NO'); + // 商户号 + @Input() merNo: any; + // 油号 + @Input() oilNo: any; + // 编辑数据表单 + editDataForm: FormGroup; + editDataModal = false; + + constructor(private fb: NonNullableFormBuilder, + private message: NzMessageService, + private storage: BrowserStorageService, + private oilGunNoService: OilGunNoService, + private commonService: CommonService, + private modal: NzModalService) { + this.searchForm = this.fb.group({ + merNo: [null], + oilNo: [null], + }); + this.editDataForm = this.fb.group({ + merNo: [null], + oilNo: [null], + gunNo: [null, Validators.required], + }); + } + + ngOnInit(): void { + if (this.merNo == null) { + this.merNo = this.storage.get(DATA)['merchant']['merNo']; + } + this.searchForm.controls['merNo'].setValue(this.merNo); + this.searchForm.controls['oilNo'].setValue(this.oilNo); + // 查询数据 + this.queryData(); + } + + /** + * 获取数据 + */ + queryData() { + this.searchForm.value.time = new Date().getTime(); + this.searchForm.value.pageNum = 1; + this.searchForm.value.pageSize = 100; + this.oilGunNoService.queryGunNoList(this.searchForm.value, (data: any) => { + if (data['return_code'] == '000000') { + this.tableData = data['return_data']; + } + }); + } + + /** + * 打开编辑模态框 + */ + showEditModal() { + this.editDataModal = true; + } + + /** + * 提交数据 + */ + submitData() { + this.editDataForm.controls['merNo'].setValue(this.merNo); + this.editDataForm.controls['oilNo'].setValue(this.oilNo); + if (this.editDataForm.valid) { + this.oilGunNoService.createOilGunNo(this.editDataForm.value, (data: any) => { + if (data['return_code'] == '000000') { + this.message.create('success', '操作成功'); + // 刷新数据 + this.queryData(); + // 关闭弹窗 + this.closeEditModal(); + } else { + this.message.create('error', data['return_msg']); + } + }); + } else { + Object.values(this.editDataForm.controls).forEach(control => { + if (control.invalid) { + control.markAsDirty(); + control.updateValueAndValidity({ onlySelf: true }); + } + }); + } + } + + /** + * 关闭编辑任务模态框 + */ + closeEditModal() { + this.editDataForm.reset(); + this.editDataModal = false; + } + + /** + * 删除油号 + * @param oilNo + */ + del(data: any) { + this.modal.confirm({ + nzTitle: '提醒', + nzContent: '确定删除'+data.gunNo+'号枪吗?', + nzOnOk: () => this.oilGunNoService.delete({'gunNoId': data.id }, (data: any) => { + if (data['return_code'] == '000000') { + this.message.create('success', '操作成功'); + // 刷新数据 + this.queryData(); + } else { + this.message.create('error', data['return_msg']); + } + }) + }); + } +} diff --git a/src/app/pages/merchant/oil-price-config/oil-price-config.component.html b/src/app/pages/merchant/oil-price-config/oil-price-config.component.html new file mode 100644 index 0000000..4932336 --- /dev/null +++ b/src/app/pages/merchant/oil-price-config/oil-price-config.component.html @@ -0,0 +1,120 @@ +
+
+
+ + 油号 + + + + + + +
+
+ + + + + + +
+
+
+ + + + + 日期 + 油号 + 国标价 + 油枪价 + 优惠价 + 更新时间 + 操作 + + + + + + {{data.weeks | week}} {{today == data.weeks?'(今日)':''}} + + {{data.oilNoName}} + {{data.priceOfficial}} + {{data.priceGun}} + {{data.priceVip}} + {{data.updateTime | date : 'yyyy-MM-dd HH:mm:ss'}} + + + + + + 总计 {{ total }} 条 + + + + +
+ + + 日期 + + + + + + + + + + + + + + + 油品 + + + + + + + + + 国标价 + + + + + + + 油枪价 + + + + + + + 优惠价 + + + + + +
+ +
+
+
+
diff --git a/src/app/pages/merchant/oil-price-config/oil-price-config.component.less b/src/app/pages/merchant/oil-price-config/oil-price-config.component.less new file mode 100644 index 0000000..90447c4 --- /dev/null +++ b/src/app/pages/merchant/oil-price-config/oil-price-config.component.less @@ -0,0 +1,3 @@ +nz-input-number { + width: 100%; +} diff --git a/src/app/pages/merchant/oil-price-config/oil-price-config.component.ts b/src/app/pages/merchant/oil-price-config/oil-price-config.component.ts new file mode 100644 index 0000000..c2093e3 --- /dev/null +++ b/src/app/pages/merchant/oil-price-config/oil-price-config.component.ts @@ -0,0 +1,206 @@ +import { Component } from '@angular/core'; +import {DatePipe, NgForOf, NgIf} from "@angular/common"; +import {DictionaryPipe} from "../../../pipes/common/dictionary.pipe"; +import {FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule, Validators} from "@angular/forms"; +import {NzButtonComponent} from "ng-zorro-antd/button"; +import { + NzCellFixedDirective, + NzTableCellDirective, + NzTableComponent, NzTableModule, + NzTbodyComponent, NzTheadComponent, + NzThMeasureDirective, NzTrDirective +} from "ng-zorro-antd/table"; +import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; +import {NzDividerComponent} from "ng-zorro-antd/divider"; +import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; +import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form"; +import {NzIconDirective} from "ng-zorro-antd/icon"; +import {NzInputDirective} from "ng-zorro-antd/input"; +import {NzMenuDirective, NzMenuItemComponent} from "ng-zorro-antd/menu"; +import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select"; +import {NzModalModule, NzModalService} from "ng-zorro-antd/modal"; +import {NzFlexDirective} from "ng-zorro-antd/flex"; +import {NzDescriptionsModule} from "ng-zorro-antd/descriptions"; +import {NzUploadComponent} from "ng-zorro-antd/upload"; +import {NzAvatarModule} from "ng-zorro-antd/avatar"; +import {NzImageModule} from "ng-zorro-antd/image"; +import {NzSwitchComponent} from "ng-zorro-antd/switch"; +import {NzDatePickerComponent} from "ng-zorro-antd/date-picker"; +import {NzInputNumberModule} from "ng-zorro-antd/input-number"; +import {WeekPipe} from "../../../pipes/common/week.pipe"; +import {NzMessageService} from "ng-zorro-antd/message"; +import {BrowserStorageService} from "../../../utils/localStorage.service"; +import {GasOilPriceWeekService} from "../../../services/mer-oil-price/gas-oil-price-week.service"; +import {CommonService} from "../../../services/common/common.service"; +import {DATA} from "../../../data/login/localStorage.namespace"; +import {ActivatedRoute} from "@angular/router"; + +@Component({ + selector: 'app-oil-price-config', + standalone: true, + imports: [ + DatePipe, + DictionaryPipe, + FormsModule, + NgForOf, + NgIf, + NzButtonComponent, + NzCellFixedDirective, + NzColDirective, + NzDividerComponent, + NzDropDownADirective, + NzDropDownDirective, + NzDropdownMenuComponent, + NzFormControlComponent, + NzFormDirective, + NzFormItemComponent, + NzFormLabelComponent, + NzIconDirective, + NzInputDirective, + NzMenuDirective, + NzMenuItemComponent, + NzOptionComponent, + NzRowDirective, + NzSelectComponent, + NzTableCellDirective, + NzTableComponent, + NzTbodyComponent, + NzThMeasureDirective, + NzTheadComponent, + NzTrDirective, + ReactiveFormsModule, + NzTableModule, + NzModalModule, + NzFlexDirective, + NzDescriptionsModule, + NzUploadComponent, + NzAvatarModule, + NzImageModule, + NzSwitchComponent, + NzDatePickerComponent, + NzInputNumberModule, + WeekPipe + ], + templateUrl: './oil-price-config.component.html', + styleUrl: './oil-price-config.component.less' +}) +export class OilPriceConfigComponent { + // 表单数据 + tableData: any = []; + // 搜索表单 + searchForm: FormGroup; + // 油号 + oilNoArray = new DictionaryPipe().getDictionaryList('OIL_NO'); + // 商户号 + merNo = null; + // 编辑数据表单 + editDataForm: FormGroup; + editDataModal = false; + + // 当前日期 + today:number = new Date().getDay(); + constructor(private fb: NonNullableFormBuilder, + private message: NzMessageService, + private storage: BrowserStorageService, + private gasOilPriceWeekService: GasOilPriceWeekService, + private commonService: CommonService, + private modal: NzModalService, + private activatedRoute: ActivatedRoute) { + + this.merNo = this.storage.get(DATA)['merchant']['merNo']; + // 初始化搜索框 + this.searchForm = this.fb.group({ + merNo: [this.merNo], + oilNo: [this.oilNoArray[0].codeValue], + }); + + this.activatedRoute.queryParams.subscribe(queryParams => { + // 接收到路由参数 + if (queryParams['oilNo'] != null) { + this.searchForm.controls['oilNo'].setValue(queryParams['oilNo']); + } + }); + + this.editDataForm = this.fb.group({ + id: [null, [Validators.required]], + week: [null], + oilNo: [null], + priceOfficial: [null, [Validators.required]], + priceGun: [null, [Validators.required]], + priceVip: [null, [Validators.required]], + }); + // 查询数据 + this.queryData(); + } + + /** + * 获取数据 + */ + queryData() { + this.searchForm.value.time = new Date().getTime(); + this.gasOilPriceWeekService.getPriceList(this.searchForm.value, (data: any) => { + if (data['return_code'] == '000000') { + this.tableData = data['return_data']; + } + }); + } + + /** + * 搜索表单提交 + */ + searchFormSubmit(): void { + this.queryData(); + } + + /** + * 搜索表单重置 + */ + searchFormReset(): void { + this.searchForm.reset(); + } + + /** + * 打开编辑模态框 + */ + showEditModal(data: any) { + data['week'] = String(data['weeks']); + this.editDataForm.patchValue(data); + this.editDataForm.controls['week'].disable(); + this.editDataForm.controls['oilNo'].disable(); + this.editDataModal = true; + } + + /** + * 提交数据 + */ + submitData() { + if (this.editDataForm.valid) { + this.gasOilPriceWeekService.updatePrice(this.editDataForm.value, (data: any) => { + if (data['return_code'] == '000000') { + this.message.create('success', '操作成功'); + // 刷新数据 + this.queryData(); + // 关闭弹窗 + this.closeEditModal(); + } else { + this.message.create('error', data['return_msg']); + } + }); + } else { + Object.values(this.editDataForm.controls).forEach(control => { + if (control.invalid) { + control.markAsDirty(); + control.updateValueAndValidity({ onlySelf: true }); + } + }); + } + } + + /** + * 关闭编辑任务模态框 + */ + closeEditModal() { + this.editDataForm.reset(); + this.editDataModal = false; + } +} diff --git a/src/app/pages/trade/order-oil-list/order-oil-list.component.html b/src/app/pages/trade/order-oil-list/order-oil-list.component.html index 012adcd..6fc1617 100644 --- a/src/app/pages/trade/order-oil-list/order-oil-list.component.html +++ b/src/app/pages/trade/order-oil-list/order-oil-list.component.html @@ -331,17 +331,19 @@
+ 交易单号:{{this.refundForm.controls['orderNo'].value}}
+ 加油油站:{{this.refundForm.controls['merName'].value}}
+ 加油客户:{{this.refundForm.controls['userPhone'].value}}
+ 加油金额:¥{{this.refundForm.controls['gasRefuelPrice'].value}}
+ 实付金额:¥{{this.refundForm.controls['actualPayPrice'].value}}
+ 加油油号:{{this.refundForm.controls['gasOilNo'].value}}
+ 交易时间:{{this.refundForm.controls['payTime'].value | date : 'yyyy-MM-dd HH:mm:ss'}}
+ 是否分账:{{this.orderSettleObj['orderSettle'].ledgerFlag==1?'是':'否'}}
+ 分账状态:{{this.orderSettleObj.orderSettle.ledgerStatus | orderSettleLedgerStatus}} + - 交易单号 - - - - - - 退款备注 - - +
diff --git a/src/app/pages/trade/order-oil-list/order-oil-list.component.ts b/src/app/pages/trade/order-oil-list/order-oil-list.component.ts index 38b4cf1..0c3a81d 100644 --- a/src/app/pages/trade/order-oil-list/order-oil-list.component.ts +++ b/src/app/pages/trade/order-oil-list/order-oil-list.component.ts @@ -40,6 +40,9 @@ import {NzTooltipDirective} from "ng-zorro-antd/tooltip"; import {symlinkSync} from "fs"; import {DateMinutesDiffPipe} from "../../../pipes/common/date-minutes-diff.pipe"; import {NzDividerModule} from "ng-zorro-antd/divider"; +import {NzTypographyComponent} from "ng-zorro-antd/typography"; +import {OrderSettleService} from "../../../services/trade/order-settle.service"; +import {OrderSettleLedgerStatusPipe} from "../../../pipes/order/order-settle-ledger-status.pipe"; @Component({ selector: 'app-order-oil-list', @@ -89,7 +92,9 @@ import {NzDividerModule} from "ng-zorro-antd/divider"; NzBadgeComponent, NzTooltipDirective, DateMinutesDiffPipe, - NzDividerModule + NzDividerModule, + NzTypographyComponent, + OrderSettleLedgerStatusPipe ], templateUrl: './order-oil-list.component.html', styleUrl: './order-oil-list.component.less' @@ -145,7 +150,10 @@ export class OrderOilListComponent { gasOrder: {}, tradeOrder: {}, }; - + orderSettleObj: any = { + orderSettle: {}, + orderSettleLedger: [], + }; orderRefundModal = false; refundForm: FormGroup; GAS_REFUND_BTN = new ButtonPipe().isButton("GAS_REFUND"); @@ -153,6 +161,7 @@ export class OrderOilListComponent { GAS_ORDER_REPAIR_BTN = new ButtonPipe().isButton("GAS_ORDER_REPAIR_BTN"); constructor(private fb: NonNullableFormBuilder, private orderOilService : OrderOilService, + private orderSettleService : OrderSettleService, private agentService : AgentService, private storage: BrowserStorageService, private agentStaffService : AgentStaffService, @@ -166,11 +175,12 @@ export class OrderOilListComponent { this.refundForm = this.fb.group({ orderNo: [{ value: null, disabled: true}, [Validators.required]], orderChildNo: [null], - merName: [{ value: null}], - userPhone: [{ value: null}], - gasRefuelPrice: [{ value: null}], - gasOilNo: [{ value: null}], - payTime: [{ value: null}], + merName: [{ value: null, disabled: true}], + userPhone: [{ value: null, disabled: true}], + gasRefuelPrice: [{ value: null, disabled: true}], + actualPayPrice: [{ value: null, disabled: true}], + gasOilNo: [{ value: null, disabled: true}], + payTime: [{ value: null, disabled: true}], remarks: [null,[Validators.required]], }); @@ -353,9 +363,16 @@ export class OrderOilListComponent { * @param orderNo * @param childOrderNo */ - showRefund(data: any) { - this.refundForm.patchValue(data) - this.orderRefundModal = true; + showRefund(obj: any) { + this.orderSettleService.getDetailByOrderNo(obj['orderNo'],(data:any) => { + if (data['return_code'] == '000000') { + this.orderSettleObj = data['return_data']; + this.refundForm.patchValue(obj); + this.orderRefundModal = true; + } else { + this.modal.error(data['return_msg']); + } + }); } /** @@ -446,4 +463,27 @@ export class OrderOilListComponent { } }) } + + /** + * 撤回分账 + */ + revokeLedger(orderNo: string) { + this.modal.confirm({ + nzTitle: '提醒', + nzContent: '确定撤销分账吗?', + nzOnOk: () => this.orderSettleService.revokeLedger(orderNo, (data: any) => { + if (data['return_code'] == '000000') { + this.message.create('success', '操作成功,请稍后查看撤销状态'); + // 查询结算信息 + this.orderSettleService.getDetailByOrderNo(orderNo,(data:any) => { + if (data['return_code'] == '000000') { + this.orderSettleObj = data['return_data']; + } + }); + } else { + this.message.create('error', data['return_msg']); + } + }), + }); + } } diff --git a/src/app/pipes/order/order-settle-ledger-status.pipe.ts b/src/app/pipes/order/order-settle-ledger-status.pipe.ts new file mode 100644 index 0000000..61e9d96 --- /dev/null +++ b/src/app/pipes/order/order-settle-ledger-status.pipe.ts @@ -0,0 +1,32 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'orderSettleLedgerStatus', + standalone: true +}) +export class OrderSettleLedgerStatusPipe implements PipeTransform { + + transform(value: number): any { + switch (value) { + case 0: + return '待处理'; + case 1: + return '分账完成'; + case 2: + return '处理中'; + case 3: + return '已受理'; + case 4: + return '分账失败'; + case 5: + return '撤销中'; + case 6: + return '撤销成功'; + case 7: + return '撤销失败'; + default: + return '未知状态' + } + } + +} diff --git a/src/app/services/mer-oil-price/oil-gun-no.service.ts b/src/app/services/mer-oil-price/oil-gun-no.service.ts new file mode 100644 index 0000000..0ac62cc --- /dev/null +++ b/src/app/services/mer-oil-price/oil-gun-no.service.ts @@ -0,0 +1,61 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {environment} from "../../../environments/environment"; +import {ObjectData} from "../../utils/objectData.service"; + +@Injectable({ + providedIn: 'root' +}) +export class OilGunNoService { + + constructor(private http: HttpClient) { } + + /** + * 创建油品枪号 + * @param params + * @param callBack + */ + public createOilGunNo(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.post(environment.baseUrl + 'gasOilGunNo/createOilGunNo', params).subscribe(data => { + callBack(data); + }); + } + + /** + * 删除抢号 + * @param params + * @param callBack + */ + public delete(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.post(environment.baseUrl + 'gasOilGunNo/delete', params).subscribe(data => { + callBack(data); + }); + } + + /** + * 查询油品详情 + * @param params + * @param callBack + */ + public queryOilDetail(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.get(environment.baseUrl + 'gasOilGunNo/queryOilDetail?'+ObjectData.objectByString(params)).subscribe(data => { + callBack(data); + }); + } + + /** + * 查询油品列表 + * @param params + * @param callBack + */ + public queryGunNoList(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.get(environment.baseUrl + 'gasOilGunNo/queryGunNoList?'+ObjectData.objectByString(params)).subscribe(data => { + callBack(data); + }); + } + +} diff --git a/src/app/services/mer-oil-price/oil-price.service.ts b/src/app/services/mer-oil-price/oil-price.service.ts new file mode 100644 index 0000000..b4d37a5 --- /dev/null +++ b/src/app/services/mer-oil-price/oil-price.service.ts @@ -0,0 +1,85 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {environment} from "../../../environments/environment"; +import {ObjectData} from "../../utils/objectData.service"; + +@Injectable({ + providedIn: 'root' +}) +export class OilPriceService { + + constructor(private http: HttpClient) { } + + /** + * 创建油品 + * @param params + * @param callBack + */ + public createOil(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.post(environment.baseUrl + 'gasOilPrice/createOil', params).subscribe(data => { + callBack(data); + }); + } + + /** + * 恢复 + * @param params + * @param callBack + */ + public restore(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.post(environment.baseUrl + 'gasOilPrice/restore', params).subscribe(data => { + callBack(data); + }); + } + + /** + * 禁用油品 + * @param params + * @param callBack + */ + public disable(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.post(environment.baseUrl + 'gasOilPrice/disable', params).subscribe(data => { + callBack(data); + }); + } + + /** + * 删除油品 + * @param params + * @param callBack + */ + public delete(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.post(environment.baseUrl + 'gasOilPrice/delete', params).subscribe(data => { + callBack(data); + }); + } + + /** + * 查询油品详情 + * @param params + * @param callBack + */ + public queryOilDetail(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.get(environment.baseUrl + 'gasOilPrice/queryOilDetail?'+ObjectData.objectByString(params)).subscribe(data => { + callBack(data); + }); + } + + /** + * 查询油品列表 + * @param params + * @param callBack + */ + public queryOilList(params: any, callBack:any) { + params.time = new Date().getTime(); + this.http.get(environment.baseUrl + 'gasOilPrice/queryOilList?'+ObjectData.objectByString(params)).subscribe(data => { + callBack(data); + }); + } + +} diff --git a/src/app/services/trade/order-refund.service.ts b/src/app/services/trade/order-refund.service.ts index e9a7445..5761739 100644 --- a/src/app/services/trade/order-refund.service.ts +++ b/src/app/services/trade/order-refund.service.ts @@ -25,7 +25,7 @@ export class OrderRefundService { callBack(data); }); } - + /** * 退款 * @param param diff --git a/src/app/services/trade/order-settle.service.ts b/src/app/services/trade/order-settle.service.ts new file mode 100644 index 0000000..6ade980 --- /dev/null +++ b/src/app/services/trade/order-settle.service.ts @@ -0,0 +1,42 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {environment} from "../../../environments/environment"; +import {ObjectData} from "../../utils/objectData.service"; + +@Injectable({ + providedIn: 'root' +}) +export class OrderSettleService { + constructor(private http: HttpClient) { } + + /** + * 查询订单结算详情 + * @param param + * @param callBack + */ + public getDetailByOrderNo(orderNo: string, callBack:any) { + let param = { + orderNo: orderNo, + dt: new Date().getTime() + } + this.http.get(environment.baseUrl + 'orderSettle/getDetailByOrderNo?'+ObjectData.objectByString(param)).subscribe(data => { + callBack(data); + }); + } + + /** + * 查询订单结算详情 + * @param param + * @param callBack + */ + public revokeLedger(orderNo: string, callBack:any) { + let param = { + orderNo: orderNo, + dt: new Date().getTime() + } + this.http.post(environment.baseUrl + 'orderSettle/revokeLedger', param).subscribe(data => { + callBack(data); + }); + } + +}