提交代码

dev
胡锐 19 hours ago
parent 3ad0e4032e
commit 2c1cbc4273
  1. 3
      src/app/pages/merchant/merchant.routes.ts
  2. 119
      src/app/pages/merchant/oil-config/oil-config.component.html
  3. 133
      src/app/pages/merchant/oil-config/oil-config.component.ts
  4. 64
      src/app/pages/merchant/oil-no-config/oil-no-config.component.html
  5. 3
      src/app/pages/merchant/oil-no-config/oil-no-config.component.less
  6. 210
      src/app/pages/merchant/oil-no-config/oil-no-config.component.ts
  7. 120
      src/app/pages/merchant/oil-price-config/oil-price-config.component.html
  8. 3
      src/app/pages/merchant/oil-price-config/oil-price-config.component.less
  9. 206
      src/app/pages/merchant/oil-price-config/oil-price-config.component.ts
  10. 20
      src/app/pages/trade/order-oil-list/order-oil-list.component.html
  11. 60
      src/app/pages/trade/order-oil-list/order-oil-list.component.ts
  12. 32
      src/app/pipes/order/order-settle-ledger-status.pipe.ts
  13. 61
      src/app/services/mer-oil-price/oil-gun-no.service.ts
  14. 85
      src/app/services/mer-oil-price/oil-price.service.ts
  15. 2
      src/app/services/trade/order-refund.service.ts
  16. 42
      src/app/services/trade/order-settle.service.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 },

@ -1,20 +1,10 @@
<form nz-form [formGroup]="searchForm" class="search_form">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>油号</nz-form-label>
<nz-form-control>
<nz-select formControlName="oilNo" [nzPlaceHolder]="'请选择'">
<nz-option *ngFor="let item of oilNoArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label [nzNoColon]="true"></nz-form-label>
<nz-form-control>
<button nz-button style="margin-right: 8px" [nzType]="'primary'" (click)="searchFormSubmit()">查询</button>
<button nz-button style="margin-right: 8px" [nzType]="'primary'" (click)="showEditModal()">创建油品</button>
</nz-form-control>
</nz-form-item>
</div>
@ -22,37 +12,57 @@
</form>
<nz-table #basicTable
[nzScroll]="{ x: '1200' }"
[nzScroll]="{ x: '1000' }"
[nzBordered]="true"
[nzShowPagination]="false"
[nzFrontPagination]="false"
[nzShowQuickJumper]="false"
[nzShowTotal]="totalTemplate"
[nzTotal]="tableData.length"
[nzData]="tableData" >
[nzTotal]="tableData.total"
[nzData]="tableData.list" >
<thead>
<tr>
<th nzWidth="100px">日期</th>
<th nzWidth="100px">油号</th>
<th nzWidth="100px">国标价</th>
<th nzWidth="100px">油枪价</th>
<th nzWidth="100px">优惠价</th>
<th nzWidth="60px">油品类型</th>
<th nzWidth="60px">油号</th>
<th nzWidth="80px">国标价(今日)</th>
<th nzWidth="80px">油枪价(今日)</th>
<th nzWidth="80px">优惠价(今日)</th>
<th nzWidth="100px">更新时间</th>
<th nzRight nzWidth="50px">操作</th>
<th nzWidth="50px">状态</th>
<th nzRight nzWidth="60px">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data">
<td style="{{today == data.weeks?'color: red':''}}">
{{data.weeks | week}} {{today == data.weeks?'(今日)':''}}
</td>
<td>{{data.oilTypeName}}</td>
<td>{{data.oilNoName}}</td>
<td>{{data.priceOfficial}}</td>
<td>{{data.priceGun}}</td>
<td>{{data.priceVip}}</td>
<td>
¥{{data.priceOfficial}}
</td>
<td>
¥{{data.priceGun}}
<td>
¥{{data.priceVip}}
</td>
<td>{{data.updateTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td>
<td>
<span *ngIf="data.status == 1">正常</span>
<span *ngIf="data.status == 2">禁用</span>
</td>
<td nzRight>
<button nz-button nzType="link" (click)="showEditModal(data)" [nzSize]="'small'" >修改</button>
<a nz-dropdown [nzDropdownMenu]="menu">
操作列表
<span nz-icon nzType="down"></span>
</a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu nzSelectable>
<li nz-menu-item><a [routerLink]="['/admin/merchant/oil-price-config']" [queryParams]="{title: '油价配置', oilNo: data['oilNo']}">设置价格</a></li>
<li nz-menu-item><a (click)="showSetOilNoModal(data.oilNo)">设置枪号</a></li>
<li nz-menu-item *ngIf="data.status == 1"><a (click)="disable(data.oilNo)">禁用油号</a></li>
<li nz-menu-item *ngIf="data.status == 2"><a (click)="restore(data.oilNo)">恢复油号</a></li>
<li nz-menu-item><a (click)="delOil(data.oilNo)">删除油号</a></li>
</ul>
</nz-dropdown-menu>
</td>
</tr>
</tbody>
@ -61,60 +71,33 @@
<nz-modal [(nzVisible)]="editDataModal"
[nzWidth]="500"
nzTitle="修改价格"
nzTitle="创建油品"
[nzFooter]="null"
(nzOnCancel)="closeEditModal()">
<ng-container *nzModalContent>
<form nz-form [formGroup]="editDataForm">
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24">日期</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-select formControlName="week" [nzPlaceHolder]="'请选择'">
<nz-option nzValue="1" nzLabel="星期一"></nz-option>
<nz-option nzValue="2" nzLabel="星期二"></nz-option>
<nz-option nzValue="3" nzLabel="星期三"></nz-option>
<nz-option nzValue="4" nzLabel="星期四"></nz-option>
<nz-option nzValue="5" nzLabel="星期五"></nz-option>
<nz-option nzValue="6" nzLabel="星期六"></nz-option>
<nz-option nzValue="7" nzLabel="星期日"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24">油品</nz-form-label>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>油品</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-select formControlName="oilNo" nzAllowClear [nzPlaceHolder]="'请选择'">
<nz-option *ngFor="let item of oilNoArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>国标价</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-input-number formControlName="priceOfficial" [nzMin]="0" [nzMax]="99" [nzStep]="1" [nzPrecision]="2" [nzPlaceHolder]="'国标价'"></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>油枪价</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-input-number formControlName="priceGun" [nzMin]="0" [nzMax]="99" [nzStep]="1" [nzPrecision]="2" [nzPlaceHolder]="'油枪价'"></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>优惠价</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-input-number formControlName="priceVip" [nzMin]="0" [nzMax]="99" [nzStep]="1" [nzPrecision]="2" [nzPlaceHolder]="'优惠价'"></nz-input-number>
</nz-form-control>
</nz-form-item>
<div nz-flex style="margin-top: 15px" [nzJustify]="'center'">
<button nz-button nzType="primary" (click)="submitData()" class="submit-btn">保存</button>
<button nz-button nzType="primary" (click)="submitData()" class="submit-btn">创建</button>
</div>
</form>
</ng-container>
</nz-modal>
<nz-modal [(nzVisible)]="setOilNoModal"
[nzWidth]="800"
nzTitle="油枪号配置"
[nzFooter]="null"
(nzOnCancel)="setOilNoModal = false">
<ng-container *nzModalContent>
<app-oil-no-config [merNo]="this.setOilMerNo" [oilNo]="this.setOilNo"></app-oil-no-config>
</ng-container>
</nz-modal>

@ -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']);
}
})
});
}
}

@ -0,0 +1,64 @@
<form nz-form [formGroup]="searchForm" class="search_form">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label [nzNoColon]="true"></nz-form-label>
<nz-form-control>
<button nz-button style="margin-right: 8px" [nzType]="'primary'" (click)="showEditModal()">创建油枪号</button>
</nz-form-control>
</nz-form-item>
</div>
</div>
</form>
<nz-table #basicTable
[nzScroll]="{ x: '1000' }"
[nzBordered]="true"
[nzShowPagination]="false"
[nzFrontPagination]="false"
[nzShowQuickJumper]="false"
[nzShowTotal]="totalTemplate"
[nzTotal]="tableData.length"
[nzData]="tableData" >
<thead>
<tr>
<th nzWidth="60px">油品类型</th>
<th nzWidth="60px">油号</th>
<th nzWidth="80px">油枪号</th>
<th nzWidth="80px">创建时间</th>
<th nzRight nzWidth="60px">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data">
<td>{{data.oilTypeName}}</td>
<td>{{data.oilNoName}}</td>
<td>{{data.gunNo}}</td>
<td>{{data.createTime | date : 'yyyy-MM-dd HH:mm'}}</td>
<td nzRight>
<button nz-button nzType="link" (click)="del(data)" [nzSize]="'small'" >删除</button>
</td>
</tr>
</tbody>
<ng-template #totalTemplate let-total>总计 {{ total }} 条</ng-template>
</nz-table>
<nz-modal [(nzVisible)]="editDataModal"
[nzWidth]="500"
nzTitle="创建油枪号"
[nzFooter]="null"
(nzOnCancel)="closeEditModal()">
<ng-container *nzModalContent>
<form nz-form [formGroup]="editDataForm">
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>油枪号</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<input nz-input formControlName="gunNo" placeholder="请输入"/>
</nz-form-control>
</nz-form-item>
<div nz-flex style="margin-top: 15px" [nzJustify]="'center'">
<button nz-button nzType="primary" (click)="submitData()" class="submit-btn">创建</button>
</div>
</form>
</ng-container>
</nz-modal>

@ -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']);
}
})
});
}
}

@ -0,0 +1,120 @@
<form nz-form [formGroup]="searchForm" class="search_form">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>油号</nz-form-label>
<nz-form-control>
<nz-select formControlName="oilNo" [nzPlaceHolder]="'请选择'">
<nz-option *ngFor="let item of oilNoArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label [nzNoColon]="true"></nz-form-label>
<nz-form-control>
<button nz-button style="margin-right: 8px" [nzType]="'primary'" (click)="searchFormSubmit()">查询</button>
</nz-form-control>
</nz-form-item>
</div>
</div>
</form>
<nz-table #basicTable
[nzScroll]="{ x: '1200' }"
[nzBordered]="true"
[nzShowPagination]="false"
[nzFrontPagination]="false"
[nzShowQuickJumper]="false"
[nzShowTotal]="totalTemplate"
[nzTotal]="tableData.length"
[nzData]="tableData" >
<thead>
<tr>
<th nzWidth="100px">日期</th>
<th nzWidth="100px">油号</th>
<th nzWidth="100px">国标价</th>
<th nzWidth="100px">油枪价</th>
<th nzWidth="100px">优惠价</th>
<th nzWidth="100px">更新时间</th>
<th nzRight nzWidth="50px">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data">
<td style="{{today == data.weeks?'color: red':''}}">
{{data.weeks | week}} {{today == data.weeks?'(今日)':''}}
</td>
<td>{{data.oilNoName}}</td>
<td>{{data.priceOfficial}}</td>
<td>{{data.priceGun}}</td>
<td>{{data.priceVip}}</td>
<td>{{data.updateTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td>
<td nzRight>
<button nz-button nzType="link" (click)="showEditModal(data)" [nzSize]="'small'" >修改</button>
</td>
</tr>
</tbody>
<ng-template #totalTemplate let-total>总计 {{ total }} 条</ng-template>
</nz-table>
<nz-modal [(nzVisible)]="editDataModal"
[nzWidth]="500"
nzTitle="修改价格"
[nzFooter]="null"
(nzOnCancel)="closeEditModal()">
<ng-container *nzModalContent>
<form nz-form [formGroup]="editDataForm">
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24">日期</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-select formControlName="week" [nzPlaceHolder]="'请选择'">
<nz-option nzValue="1" nzLabel="星期一"></nz-option>
<nz-option nzValue="2" nzLabel="星期二"></nz-option>
<nz-option nzValue="3" nzLabel="星期三"></nz-option>
<nz-option nzValue="4" nzLabel="星期四"></nz-option>
<nz-option nzValue="5" nzLabel="星期五"></nz-option>
<nz-option nzValue="6" nzLabel="星期六"></nz-option>
<nz-option nzValue="7" nzLabel="星期日"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24">油品</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-select formControlName="oilNo" nzAllowClear [nzPlaceHolder]="'请选择'">
<nz-option *ngFor="let item of oilNoArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>国标价</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-input-number formControlName="priceOfficial" [nzMin]="0" [nzMax]="99" [nzStep]="1" [nzPrecision]="2" [nzPlaceHolder]="'国标价'"></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>油枪价</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-input-number formControlName="priceGun" [nzMin]="0" [nzMax]="99" [nzStep]="1" [nzPrecision]="2" [nzPlaceHolder]="'油枪价'"></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSm]="6" [nzXs]="24" nzRequired>优惠价</nz-form-label>
<nz-form-control [nzSm]="14" [nzXs]="24">
<nz-input-number formControlName="priceVip" [nzMin]="0" [nzMax]="99" [nzStep]="1" [nzPrecision]="2" [nzPlaceHolder]="'优惠价'"></nz-input-number>
</nz-form-control>
</nz-form-item>
<div nz-flex style="margin-top: 15px" [nzJustify]="'center'">
<button nz-button nzType="primary" (click)="submitData()" class="submit-btn">保存</button>
</div>
</form>
</ng-container>
</nz-modal>

@ -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;
}
}

@ -331,17 +331,19 @@
<ng-container *nzModalContent>
<nz-spin [nzSpinning]="loadingObject.status" [nzTip]="loadingObject.title">
<form nz-form [formGroup]="refundForm">
<span nz-typography>交易单号:{{this.refundForm.controls['orderNo'].value}}</span><br>
<span nz-typography>加油油站:{{this.refundForm.controls['merName'].value}}</span><br>
<span nz-typography>加油客户:{{this.refundForm.controls['userPhone'].value}}</span><br>
<span nz-typography>加油金额:¥{{this.refundForm.controls['gasRefuelPrice'].value}}</span><br>
<span nz-typography>实付金额:¥{{this.refundForm.controls['actualPayPrice'].value}}</span><br>
<span nz-typography>加油油号:{{this.refundForm.controls['gasOilNo'].value}}</span><br>
<span nz-typography>交易时间:{{this.refundForm.controls['payTime'].value | date : 'yyyy-MM-dd HH:mm:ss'}}</span><br>
<span nz-typography>是否分账:{{this.orderSettleObj['orderSettle'].ledgerFlag==1?'是':'否'}}</span><br>
<span nz-typography *ngIf="this.orderSettleObj['orderSettle'].ledgerFlag==1">分账状态:{{this.orderSettleObj.orderSettle.ledgerStatus | orderSettleLedgerStatus}}</span>
<nz-divider></nz-divider>
<nz-form-item>
<nz-form-label>交易单号</nz-form-label>
<nz-form-control>
<input nz-input formControlName="orderNo" />
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label nzRequired>退款备注</nz-form-label>
<nz-form-control>
<textarea rows="4" nz-input formControlName="remarks" maxlength="100"></textarea>
<textarea rows="4" nz-input formControlName="remarks" maxlength="100" [placeholder]="'请填写退款备注'"></textarea>
</nz-form-control>
</nz-form-item>
<div style="text-align: center;">

@ -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']);
}
}),
});
}
}

@ -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 '未知状态'
}
}
}

@ -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);
});
}
}

@ -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);
});
}
}

@ -25,7 +25,7 @@ export class OrderRefundService {
callBack(data);
});
}
/**
* 退
* @param param

@ -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);
});
}
}
Loading…
Cancel
Save