* 'dev' of http://139.159.177.244:3000/yuanye/high-web:
  提交代码
  提交代码
pull/1/head
袁野 3 years ago
commit cd492ecc72
  1. 17
      src/app/admin/gas-oil-price/gas-oil-price-routing.module.ts
  2. 28
      src/app/admin/gas-oil-price/gas-oil-price.module.ts
  3. 100
      src/app/admin/gas-oil-price/oil-price-official-list/oil-price-official-list.component.html
  4. 0
      src/app/admin/gas-oil-price/oil-price-official-list/oil-price-official-list.component.scss
  5. 25
      src/app/admin/gas-oil-price/oil-price-official-list/oil-price-official-list.component.spec.ts
  6. 91
      src/app/admin/gas-oil-price/oil-price-official-list/oil-price-official-list.component.ts
  7. 90
      src/app/admin/gas-oil-price/oil-price-task-edit/oil-price-task-edit.component.html
  8. 13
      src/app/admin/gas-oil-price/oil-price-task-edit/oil-price-task-edit.component.scss
  9. 25
      src/app/admin/gas-oil-price/oil-price-task-edit/oil-price-task-edit.component.spec.ts
  10. 160
      src/app/admin/gas-oil-price/oil-price-task-edit/oil-price-task-edit.component.ts
  11. 169
      src/app/admin/gas-oil-price/oil-price-task-list/oil-price-task-list.component.html
  12. 0
      src/app/admin/gas-oil-price/oil-price-task-list/oil-price-task-list.component.scss
  13. 25
      src/app/admin/gas-oil-price/oil-price-task-list/oil-price-task-list.component.spec.ts
  14. 140
      src/app/admin/gas-oil-price/oil-price-task-list/oil-price-task-list.component.ts
  15. 45
      src/app/admin/gas-staff/gas-staff-edit/gas-staff-edit.component.html
  16. 7
      src/app/admin/gas-staff/gas-staff-edit/gas-staff-edit.component.scss
  17. 25
      src/app/admin/gas-staff/gas-staff-edit/gas-staff-edit.component.spec.ts
  18. 116
      src/app/admin/gas-staff/gas-staff-edit/gas-staff-edit.component.ts
  19. 116
      src/app/admin/gas-staff/gas-staff-list/gas-staff-list.component.html
  20. 0
      src/app/admin/gas-staff/gas-staff-list/gas-staff-list.component.scss
  21. 25
      src/app/admin/gas-staff/gas-staff-list/gas-staff-list.component.spec.ts
  22. 184
      src/app/admin/gas-staff/gas-staff-list/gas-staff-list.component.ts
  23. 15
      src/app/admin/gas-staff/gas-staff-routing.module.ts
  24. 27
      src/app/admin/gas-staff/gas-staff.module.ts
  25. 74
      src/app/admin/index/index/index.component.html
  26. 20
      src/app/admin/index/index/index.component.ts
  27. 10
      src/app/admin/login/login/login.component.ts
  28. 19
      src/app/admin/merchant/merchant-list/merchant-list.component.html
  29. 57
      src/app/admin/merchant/merchant-list/merchant-list.component.ts
  30. 10
      src/app/admin/navigation/navigation.component.ts
  31. 4
      src/app/admin/order/oil-station-order/oil-station-order.component.html
  32. 3
      src/app/admin/order/oil-station-order/oil-station-order.component.ts
  33. 159
      src/app/admin/recharge-order/order-list/order-list.component.html
  34. 14
      src/app/admin/recharge-order/order-list/order-list.component.ts
  35. 12
      src/app/admin/recharge-order/order-statistical/order-statistical.component.html
  36. 2
      src/app/admin/recharge-order/order-statistical/order-statistical.component.ts
  37. 291
      src/app/admin/recharge-order/price-list/price-list.component.html
  38. 143
      src/app/admin/recharge-order/price-list/price-list.component.ts
  39. 30
      src/app/app-common.module.ts
  40. 10
      src/app/app-routing.module.ts
  41. 21
      src/app/pipes/chlid-recharge-status.pipe.ts
  42. 17
      src/app/pipes/gas-oil-price/oil-price-task-execution-type.pipe.ts
  43. 19
      src/app/pipes/gas-oil-price/oil-price-task-price-type.pipe.ts
  44. 17
      src/app/pipes/gas-oil-price/oil-price-task-status.pipe.ts
  45. 19
      src/app/pipes/gas-staff/gas-staff-status.pipe.ts
  46. 5
      src/app/pipes/index.ts
  47. 23
      src/app/pipes/pay-status.pipe.ts
  48. 31
      src/app/pipes/recharge-pay-type.pipe.ts
  49. 6
      src/app/pipes/recharge-price.pipe.ts
  50. 19
      src/app/pipes/recharge-price/price-status.pipe.ts
  51. 23
      src/app/pipes/recharge-price/recharge-platform.pipe.ts
  52. 20
      src/app/pipes/recharge-status.pipe.ts
  53. 385
      src/app/services/commons.service.ts
  54. 99
      src/app/services/gas-staff.service.ts
  55. 14
      src/app/services/gas.service.ts
  56. 13
      src/app/services/index.service.ts
  57. 1
      src/app/services/local-storage.namespace.ts
  58. 28
      src/app/services/mer-amount.service.ts
  59. 53
      src/app/services/oil-price/oil-price-official.service.ts
  60. 64
      src/app/services/oil-price/oil-price-task.service.ts
  61. 492
      src/app/services/recharge.service.ts
  62. 8
      src/environments/environment.ts

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import {OilPriceOfficialListComponent} from './oil-price-official-list/oil-price-official-list.component';
import {OilPriceTaskListComponent} from './oil-price-task-list/oil-price-task-list.component';
import {OilPriceTaskEditComponent} from './oil-price-task-edit/oil-price-task-edit.component';
const routes: Routes = [
{ path: 'official-list', component: OilPriceOfficialListComponent },
{ path: 'task-list', component: OilPriceTaskListComponent },
{ path: 'task-edit', component: OilPriceTaskEditComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class GasOilPriceRoutingModule { }

@ -0,0 +1,28 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { GasOilPriceRoutingModule } from './gas-oil-price-routing.module';
import { OilPriceOfficialListComponent } from './oil-price-official-list/oil-price-official-list.component';
import {NgZorroAntdModule} from '_ng-zorro-antd@9.3.0@ng-zorro-antd';
import {FormsModule, ReactiveFormsModule} from '_@angular_forms@9.0.7@@angular/forms';
import {BreadcrumbModule} from '../../common/breadcrumb/breadcrumb.module';
import {AppCommonModule} from '../../app-common.module';
import {NgxEchartsModule} from '_ngx-echarts@4.2.2@ngx-echarts';
import { OilPriceTaskListComponent } from './oil-price-task-list/oil-price-task-list.component';
import { OilPriceTaskEditComponent } from './oil-price-task-edit/oil-price-task-edit.component';
@NgModule({
declarations: [OilPriceOfficialListComponent, OilPriceTaskListComponent, OilPriceTaskEditComponent],
imports: [
CommonModule,
GasOilPriceRoutingModule,
NgZorroAntdModule,
ReactiveFormsModule,
FormsModule,
BreadcrumbModule,
AppCommonModule,
NgxEchartsModule,
]
})
export class GasOilPriceModule { }

@ -0,0 +1,100 @@
<!-- start 面包屑 -->
<app-breadcrumb></app-breadcrumb>
<!-- end 面包屑 -->
<!--条件搜索-->
<nz-spin [nzSpinning]="loadingObject.spinning" nzTip="{{loadingObject.msg}}">
<div class="inner-content">
<form nz-form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)">
<div nz-row>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">区域名称</nz-form-label>
<nz-form-control [nzSpan]="14">
<input nz-input formControlName="regionName" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">油品号</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="oilNo">
<nz-option *ngFor="let item of oilNoArray" nzLabel="{{item.codeName}}" nzValue="{{item.codeValue}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">油品类型</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="oilType">
<nz-option nzLabel="汽油" nzValue="1"></nz-option>
<nz-option nzLabel="柴油" nzValue="2"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="24" class="search-button">
<button nz-button nzType="primary"><i nz-icon nzType="search" nzTheme="outline"></i>搜索</button>
<button nz-button nzType="default" (click)="resetForm()"><i nz-icon nzType="reload" nzTheme="outline"></i>重置</button>
</div>
</div>
</form>
</div>
<div class="inner-content">
<span>共计 {{dataObject.total?dataObject.total:0}} 条数据</span>
<div class="operating-button">
<!-- <button nz-button nzType="primary" class="right-btn" [routerLink]="['/admin/gas-staff/edit']" ><i nz-icon nzType="plus" nzTheme="outline"></i>增加员工</button>-->
</div>
<!--数组表格 -->
<nz-table #basicTable
[nzData]="dataObject.list"
[nzTotal]="dataObject.total"
[nzFrontPagination]="false"
[nzLoading]="tableLoading"
[nzPageIndex]="whereObject.pageNum"
(nzPageIndexChange)="requestData($event)"
[nzScroll]="{ x: '1100px'}">
<thead>
<tr>
<th nzWidth="60px">序号</th>
<th nzWidth="100px">区域名称</th>
<th nzWidth="100px">国标价</th>
<th nzWidth="100px">油品号</th>
<th nzWidth="100px">油品类型</th>
<th nzWidth="80px" nzRight="0px">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data;let i = index">
<td>{{i+1}}</td>
<td>{{data.regionName}}</td>
<td>{{data.priceOfficial}}</td>
<td>{{data.oilNo}}</td>
<td>{{data.oilTypeName}}</td>
<td nzRight="0px" class="table-td-operation">
<a nz-dropdown [nzDropdownMenu]="menu"> 操作列表 <i nz-icon nzType="down"></i> </a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu nzSelectable>
<!-- <li nz-menu-item ><a>修改</a></li>-->
<li nz-menu-item nzDisabled>暂无</li>
</ul>
</nz-dropdown-menu>
</td>
</tr>
</tbody>
</nz-table>
</div>
</nz-spin>

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { OilPriceOfficialListComponent } from './oil-price-official-list.component';
describe('OilPriceOfficialListComponent', () => {
let component: OilPriceOfficialListComponent;
let fixture: ComponentFixture<OilPriceOfficialListComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ OilPriceOfficialListComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(OilPriceOfficialListComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,91 @@
import { Component, OnInit } from '@angular/core';
import {environment} from '../../../../environments/environment';
import {FormBuilder, FormGroup} from '_@angular_forms@9.0.7@@angular/forms';
import {NzMessageService, NzModalService} from '_ng-zorro-antd@9.3.0@ng-zorro-antd';
import {LocalStorageService} from '../../../services/local-storage.service';
import {CommonsService} from '../../../services/commons.service';
import {Router} from '_@angular_router@9.0.7@@angular/router';
import {ADMIN_INFO_OBJECT} from '../../../services/local-storage.namespace';
import {OilPriceOfficialService} from '../../../services/oil-price/oil-price-official.service';
@Component({
selector: 'app-oil-price-official-list',
templateUrl: './oil-price-official-list.component.html',
styleUrls: ['./oil-price-official-list.component.scss']
})
export class OilPriceOfficialListComponent implements OnInit {
FILE_URL = environment.imageUrl;
roleType;
adminFlag;
loadingObject = {
spinning: false,
msg: '加载中'
};
dataObject: any = {};
tableLoading = true;
searchForm: FormGroup;
pageNum: number;
whereObject: any = {};
oilNoArray = [];
constructor(private modal: NzModalService,
private message: NzMessageService,
private store: LocalStorageService,
private oilPriceOfficialService: OilPriceOfficialService,
private commonsService: CommonsService,
private router: Router,
private form: FormBuilder) {
this.roleType = Number(this.store.get(ADMIN_INFO_OBJECT)['secRole'].roleType);
this.adminFlag = Number(this.store.get(ADMIN_INFO_OBJECT)['secUser'].adminFlag);
}
ngOnInit(): void {
this.searchForm = this.form.group({
regionName: [null],
oilNo: [null],
oilType: [null],
});
this.commonsService.getDictionary('GAS_OIL_TYPE', data => {
this.oilNoArray = data['return_data'];
});
this.requestData(1);
}
/**
*
*/
requestData(pageNum) {
this.tableLoading = true;
this.whereObject['pageNum'] = pageNum;
this.whereObject['pageSize'] = 10;
this.oilPriceOfficialService.getOilPriceOfficialList(this.whereObject, data => {
if (data['return_code'] === '000000') {
this.dataObject = data['return_data'];
} else {
this.modal.error(data['return_msg']);
}
this.tableLoading = false;
});
}
/**
*
* @param whereObject
*/
search(whereObject: object) {
this.whereObject = whereObject;
this.requestData(1);
}
/**
*
*/
resetForm(): void {
this.searchForm.reset();
}
}

@ -0,0 +1,90 @@
<!-- start 面包屑 -->
<app-breadcrumb></app-breadcrumb>
<!-- end 面包屑 -->
<div class="inner-content">
<div class="main">
<form nz-form [formGroup]="dataFrom">
<div nz-row>
<div nz-col class="gutter-row" [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>油号</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-select formControlName="oilNo">
<nz-option *ngFor="let item of oilNoArray" nzLabel="{{item.codeName}}" nzValue="{{item.codeValue}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>价格类型</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-select formControlName="priceType" [nzPlaceHolder]="'请选择价格类型'">
<nz-option *ngFor="let item of priceTypeArray" nzLabel="{{item.codeName}}" nzValue="{{item.codeValue}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24" *ngIf="dataFrom.value.priceType == 1">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>执行地区</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-select formControlName="regionId" nzShowSearch [nzPlaceHolder]="'设置执行地区'">
<nz-option *ngFor="let item of regionArray" nzLabel="{{item.regionName}}" nzValue="{{item.regionId}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24" *ngIf="(secUserObjectType == 0 || secUserObjectType == 1 || secUserObjectType == 2) && (dataFrom.value.priceType == 2 || dataFrom.value.priceType == 3)">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>加油站</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-select formControlName="merStoreIdArray" nzMode="multiple" [nzPlaceHolder]="'请选择加油站'">
<nz-option *ngFor="let item of gasArray" nzLabel="{{'【' + item.storeKey + '】' + item.storeName}}" nzValue="{{item.id}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>执行价格(¥)</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-input-number formControlName="price" [nzMin]="0" [nzMax]="999" [nzStep]="1" [nzPrecision]="2"></nz-input-number>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>执行方式</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-radio-group formControlName="executionType">
<label nz-radio nzValue="1">立刻执行</label>
<label nz-radio nzValue="2">定时执行</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24" *ngIf="dataFrom.value.executionType == 2">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>执行时间</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-date-picker formControlName="startTime" nzFormat="yyyy-MM-dd HH:mm:ss" nzShowTime [nzPlaceHolder]="'设置执行时间'"></nz-date-picker>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div class="btn-div">
<button class="btn-post" nz-button nzType="primary" (click)="submitFrom()" [nzLoading]="btnLoading" nzBlock>保存</button>
</div>
</form>
</div>
</div>

@ -0,0 +1,13 @@
.btn-div {
width: 100%;
text-align: center;
}
.btn-post {
width: 25%;
}
nz-input-number {
width: 100%;
}
nz-date-picker {
width: 100%;
}

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { OilPriceTaskEditComponent } from './oil-price-task-edit.component';
describe('OilPriceTaskEditComponent', () => {
let component: OilPriceTaskEditComponent;
let fixture: ComponentFixture<OilPriceTaskEditComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ OilPriceTaskEditComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(OilPriceTaskEditComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,160 @@
import { Component, OnInit } from '@angular/core';
import {FormBuilder, FormGroup, Validators} from '_@angular_forms@9.0.7@@angular/forms';
import {NzModalService} from '_ng-zorro-antd@9.3.0@ng-zorro-antd';
import {ActivatedRoute, Router} from '_@angular_router@9.0.7@@angular/router';
import {CommonsService} from '../../../services/commons.service';
import {OilPriceTaskService} from '../../../services/oil-price/oil-price-task.service';
import {LocalStorageService} from "../../../services/local-storage.service";
import {ADMIN_INFO_OBJECT} from "../../../services/local-storage.namespace";
@Component({
selector: 'app-oil-price-task-edit',
templateUrl: './oil-price-task-edit.component.html',
styleUrls: ['./oil-price-task-edit.component.scss']
})
export class OilPriceTaskEditComponent implements OnInit {
dataFrom: FormGroup;
btnLoading = false;
oilNoArray = [];
priceTypeArray = [];
regionArray = [];
gasArray = [];
secUserObjectType: number;
constructor(private formBuilder: FormBuilder,
private modal: NzModalService,
private oilPriceTaskService: OilPriceTaskService,
private activatedRoute: ActivatedRoute,
private commonsService: CommonsService,
private localStorageService: LocalStorageService , // 请求缓存
private router: Router) {
this.secUserObjectType = Number(this.localStorageService.get(ADMIN_INFO_OBJECT)['secUser']['objectType']);
}
ngOnInit(): void {
this.dataFrom = this.formBuilder.group({
oilNo: ['92', [Validators.required]],
priceType: [null, [Validators.required]],
price: [0, [Validators.required]],
executionType: ['1', [Validators.required]],
startTime: [null],
regionId: [null],
merStoreIdArray: [[]],
});
// 管理员
if (this.secUserObjectType === 0) {
// 价格类型 1. 国标价 2. 油站价 3. 优惠幅度
this.priceTypeArray.push({ codeValue: 1, codeName: '国标价' });
this.priceTypeArray.push({ codeValue: 2, codeName: '油站价' });
this.priceTypeArray.push({ codeValue: 3, codeName: '优惠幅度'});
// 获取全部省级地区
this.commonsService.getProvinceList(data => {
this.regionArray = data['return_data'];
});
this.commonsService.getGasSelectList( data => {
this.gasArray = data['return_data'];
});
// 分公司
} else if (this.secUserObjectType === 1) {
// 价格类型 1. 国标价 2. 油站价 3. 优惠幅度
this.priceTypeArray.push({ codeValue: 1, codeName: '国标价' });
this.priceTypeArray.push({ codeValue: 2, codeName: '油站价' });
this.priceTypeArray.push({ codeValue: 3, codeName: '优惠幅度'});
this.regionArray.push({ regionId: this.localStorageService.get(ADMIN_INFO_OBJECT)['bsCompany']['regionId'],
regionName: this.localStorageService.get(ADMIN_INFO_OBJECT)['bsCompany']['regionName'] });
this.commonsService.getGasSelectList( data => {
this.gasArray = data['return_data'];
});
// 商户
} else if (this.secUserObjectType === 2) {
this.priceTypeArray.push({ codeValue: 2, codeName: '油站价' });
this.priceTypeArray.push({ codeValue: 3, codeName: '优惠幅度' });
this.commonsService.getGasSelectList( data => {
this.gasArray = data['return_data'];
});
// 加油站
} else if (this.secUserObjectType === 3) {
this.priceTypeArray.push({ codeValue: 2, codeName: '油站价' });
this.priceTypeArray.push({ codeValue: 3, codeName: '优惠幅度' });
this.dataFrom.patchValue({ merStoreIdArray: [ this.localStorageService.get(ADMIN_INFO_OBJECT)['merchantStore']['id'] ] });
}
this.commonsService.getDictionary('GAS_OIL_TYPE', data => {
this.oilNoArray = data['return_data'];
});
}
/**
*
*/
submitFrom() {
for (const i in this.dataFrom.controls) {
this.dataFrom.controls[i].markAsDirty();
this.dataFrom.controls[i].updateValueAndValidity();
}
if (this.dataFrom.status == null || this.dataFrom.status !== 'VALID') {
this.modal.warning({
nzTitle: '提示',
nzContent: '请规范填写所有的必填项信息',
});
return;
}
const dataFromValue = this.dataFrom.value;
const dataArray = [];
if (dataFromValue.priceType === '1') {
dataArray.push({
regionId: dataFromValue.regionId,
oilNo: dataFromValue.oilNo,
priceType: dataFromValue.priceType,
price: dataFromValue.price,
executionType: dataFromValue.executionType,
startTime: dataFromValue.startTime,
});
} else {
for (const storeId of this.dataFrom.value.merStoreIdArray) {
dataArray.push({
merStoreId: storeId,
oilNo: dataFromValue.oilNo,
priceType: dataFromValue.priceType,
price: dataFromValue.price,
executionType: dataFromValue.executionType,
startTime: dataFromValue.startTime,
});
}
}
this.btnLoading = true;
this.oilPriceTaskService.batchAddTask(dataArray, data => {
if (data['return_code'] === '000000') {
this.modal.success({
nzTitle: '提示',
nzContent: '添加成功',
nzOnOk: () => this.router.navigateByUrl('admin/gas-oil-price/task-list')
});
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg'],
});
}
this.btnLoading = false;
});
}
}

@ -0,0 +1,169 @@
<!-- start 面包屑 -->
<app-breadcrumb></app-breadcrumb>
<!-- end 面包屑 -->
<!--条件搜索-->
<nz-spin [nzSpinning]="loadingObject.spinning" nzTip="{{loadingObject.msg}}">
<div class="inner-content">
<form nz-form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)">
<div nz-row>
<div nz-col nzSpan="8" *ngIf="this.secUserObjectType !== 3">
<nz-form-item>
<nz-form-label [nzSpan]="8">区域名称</nz-form-label>
<nz-form-control [nzSpan]="14">
<input nz-input formControlName="regionName" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8" *ngIf="this.secUserObjectType !== 3">
<nz-form-item>
<nz-form-label [nzSpan]="8">油站编号</nz-form-label>
<nz-form-control [nzSpan]="14">
<input nz-input formControlName="merStoreKey" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8" *ngIf="this.secUserObjectType !== 3">
<nz-form-item>
<nz-form-label [nzSpan]="8">油站名称</nz-form-label>
<nz-form-control [nzSpan]="14">
<input nz-input formControlName="merStoreName" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">油品号</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="oilNo">
<nz-option *ngFor="let item of oilNoArray" nzLabel="{{item.codeName}}" nzValue="{{item.codeValue}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">油品类型</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="oilType">
<nz-option nzLabel="汽油" nzValue="1"></nz-option>
<nz-option nzLabel="柴油" nzValue="2"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">价格类型</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="priceType">
<nz-option *ngFor="let item of priceTypeArray" nzLabel="{{item.codeName}}" nzValue="{{item.codeValue}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">执行方式</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="executionType">
<nz-option nzLabel="立刻执行" nzValue="1"></nz-option>
<nz-option nzLabel="定时执行" nzValue="2"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">任务状态</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="status">
<nz-option nzLabel="等待中" nzValue="1"></nz-option>
<nz-option nzLabel="已执行" nzValue="2"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="24" class="search-button">
<button nz-button nzType="primary"><i nz-icon nzType="search" nzTheme="outline"></i>搜索</button>
<button nz-button nzType="default" (click)="resetForm()"><i nz-icon nzType="reload" nzTheme="outline"></i>重置</button>
</div>
</div>
</form>
</div>
<div class="inner-content">
<span>共计 {{dataObject.total?dataObject.total:0}} 条数据</span>
<div class="operating-button">
<button nz-button nzType="primary" class="right-btn" [routerLink]="['/admin/gas-oil-price/task-edit']" ><i nz-icon nzType="plus" nzTheme="outline"></i>创建任务</button>
</div>
<!--数组表格 -->
<nz-table #basicTable
[nzData]="dataObject.list"
[nzTotal]="dataObject.total"
[nzFrontPagination]="false"
[nzLoading]="tableLoading"
[nzPageIndex]="whereObject.pageNum"
(nzPageIndexChange)="requestData($event)"
[nzScroll]="{ x: '1100px'}">
<thead>
<tr>
<th nzWidth="60px">序号</th>
<th nzWidth="100px" *ngIf="this.secUserObjectType !== 3">区域名称</th>
<th nzWidth="100px" *ngIf="this.secUserObjectType !== 3">油站编号</th>
<th nzWidth="200px" *ngIf="this.secUserObjectType !== 3">油站名称</th>
<th nzWidth="80px">油品号</th>
<th nzWidth="90px">油品类型</th>
<th nzWidth="90px">价格类型</th>
<th nzWidth="90px">执行价格</th>
<th nzWidth="90px">执行方式</th>
<th nzWidth="160px">执行时间</th>
<th nzWidth="90px">任务状态</th>
<th nzWidth="160px">创建时间</th>
<th nzWidth="120px">创建人</th>
<th nzWidth="110px" nzRight="0px">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data;let i = index">
<td>{{i+1}}</td>
<td *ngIf="this.secUserObjectType !== 3">{{data.regionName}}</td>
<td *ngIf="this.secUserObjectType !== 3">{{data.merStoreKey?data.merStoreKey:'无'}}</td>
<td *ngIf="this.secUserObjectType !== 3">{{data.merStoreName?data.merStoreName:'无'}}</td>
<td>{{data.oilNo}}</td>
<td>{{data.oilTypeName}}</td>
<td>{{data.priceType | oilPriceTaskPriceType}}</td>
<td>¥{{data.price}}</td>
<td>{{data.executionType | oilPriceTaskExecutionType}}</td>
<td>{{data.startTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td>
<td>{{data.status | oilPriceTaskStatus}}</td>
<td>{{data.createTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td>
<td>{{data.opUserName}}</td>
<td nzRight="0px" class="table-td-operation">
<a nz-dropdown [nzDropdownMenu]="menu"> 操作列表 <i nz-icon nzType="down"></i> </a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu nzSelectable>
<li nz-menu-item *ngIf="data.status == 1" (click)="showDelConfirm(data.id)"><a>删除任务</a></li>
<li nz-menu-item *ngIf="data.status != 1" nzDisabled>暂无操作</li>
</ul>
</nz-dropdown-menu>
</td>
</tr>
</tbody>
</nz-table>
</div>
</nz-spin>

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { OilPriceTaskListComponent } from './oil-price-task-list.component';
describe('OilPriceTaskListComponent', () => {
let component: OilPriceTaskListComponent;
let fixture: ComponentFixture<OilPriceTaskListComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ OilPriceTaskListComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(OilPriceTaskListComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,140 @@
import { Component, OnInit } from '@angular/core';
import {environment} from '../../../../environments/environment';
import {FormBuilder, FormGroup} from '_@angular_forms@9.0.7@@angular/forms';
import {NzMessageService, NzModalService} from '_ng-zorro-antd@9.3.0@ng-zorro-antd';
import {LocalStorageService} from '../../../services/local-storage.service';
import {CommonsService} from '../../../services/commons.service';
import {Router} from '_@angular_router@9.0.7@@angular/router';
import {ADMIN_INFO_OBJECT} from '../../../services/local-storage.namespace';
import {OilPriceTaskService} from '../../../services/oil-price/oil-price-task.service';
@Component({
selector: 'app-oil-price-task-list',
templateUrl: './oil-price-task-list.component.html',
styleUrls: ['./oil-price-task-list.component.scss']
})
export class OilPriceTaskListComponent implements OnInit {
FILE_URL = environment.imageUrl;
roleType;
adminFlag;
loadingObject = {
spinning: false,
msg: '加载中'
};
dataObject: any = {};
tableLoading = true;
searchForm: FormGroup;
pageNum: number;
whereObject: any = {};
oilNoArray = [];
priceTypeArray = [];
secUserObjectType: number;
constructor(private modal: NzModalService,
private message: NzMessageService,
private store: LocalStorageService,
private oilPriceTaskService: OilPriceTaskService,
private localStorageService: LocalStorageService , // 请求缓存
private commonsService: CommonsService,
private router: Router,
private form: FormBuilder) {
this.roleType = Number(this.store.get(ADMIN_INFO_OBJECT)['secRole'].roleType);
this.adminFlag = Number(this.store.get(ADMIN_INFO_OBJECT)['secUser'].adminFlag);
this.secUserObjectType = Number(this.localStorageService.get(ADMIN_INFO_OBJECT)['secUser']['objectType']);
}
ngOnInit(): void {
this.searchForm = this.form.group({
regionName: [null],
merStoreKey: [null],
merStoreName: [null],
oilNo: [null],
oilType: [null],
priceType: [null],
executionType: [null],
status: [null],
});
this.commonsService.getDictionary('GAS_OIL_TYPE', data => {
this.oilNoArray = data['return_data'];
});
// 管理员 、分公司
if (this.secUserObjectType === 0 || this.secUserObjectType === 1) {
// 价格类型 1. 国标价 2. 油站价 3. 优惠幅度
this.priceTypeArray.push({codeValue: 1, codeName: '国标价'});
this.priceTypeArray.push({codeValue: 2, codeName: '油站价'});
this.priceTypeArray.push({codeValue: 3, codeName: '优惠幅度'});
} else {
this.priceTypeArray.push({codeValue: 2, codeName: '油站价'});
this.priceTypeArray.push({codeValue: 3, codeName: '优惠幅度'});
}
this.requestData(1);
}
/**
*
*/
requestData(pageNum) {
this.tableLoading = true;
this.whereObject['pageNum'] = pageNum;
this.whereObject['pageSize'] = 10;
this.oilPriceTaskService.getTaskList(this.whereObject, data => {
if (data['return_code'] === '000000') {
this.dataObject = data['return_data'];
} else {
this.modal.error(data['return_msg']);
}
this.tableLoading = false;
});
}
/**
*
* @param whereObject
*/
search(whereObject: object) {
this.whereObject = whereObject;
this.requestData(1);
}
/**
*
*/
resetForm(): void {
this.searchForm.reset();
}
/**
*
*/
showDelConfirm(id: number): void {
this.modal.confirm({
nzTitle: '警告',
nzContent: '是否删除任务?任务一旦被删除,不会执行。',
nzOkText: '是',
nzCancelText: '否',
nzOkType: 'danger',
nzOnOk: () => this.delData(id)
});
}
/**
*
*/
delData(id: number) {
this.oilPriceTaskService.delTask(id, data => {
if (data['return_code'] === '000000') {
this.requestData(this.whereObject['pageNum']);
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg']
});
}
});
}
}

@ -0,0 +1,45 @@
<!-- start 面包屑 -->
<app-breadcrumb></app-breadcrumb>
<!-- end 面包屑 -->
<div class="inner-content">
<div class="main">
<form nz-form [formGroup]="staffFrom">
<div nz-row>
<div nz-col class="gutter-row" [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>职位类型</nz-form-label>
<nz-form-control [nzSpan]="8">
<nz-select nzAllowClear formControlName="positionType">
<nz-option *ngFor="let item of positionTypeArray" nzLabel="{{item.codeName}}" nzValue="{{item.codeValue}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>员工名称</nz-form-label>
<nz-form-control [nzSpan]="8">
<input nz-input type="text" formControlName="name" placeholder="请输入员工名称" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col class="gutter-row" [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzSpan]="8" nzRequired>员工电话</nz-form-label>
<nz-form-control [nzSpan]="8">
<input nz-input type="text" formControlName="telephone" [maxLength]="11" placeholder="请输入员工电话" />
</nz-form-control>
</nz-form-item>
</div>
</div>
<div class="btn-div">
<button class="btn-post" nz-button nzType="primary" (click)="submitFrom()" [nzLoading]="btnLoading" nzBlock>保存</button>
</div>
</form>
</div>
</div>

@ -0,0 +1,7 @@
.btn-div {
width: 100%;
text-align: center;
}
.btn-post {
width: 25%;
}

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { GasStaffEditComponent } from './gas-staff-edit.component';
describe('GasStaffEditComponent', () => {
let component: GasStaffEditComponent;
let fixture: ComponentFixture<GasStaffEditComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ GasStaffEditComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(GasStaffEditComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,116 @@
import { Component, OnInit } from '@angular/core';
import {FormBuilder, FormGroup, Validators} from '_@angular_forms@9.0.7@@angular/forms';
import {NzModalService} from '_ng-zorro-antd@9.3.0@ng-zorro-antd';
import {ActivatedRoute, Router} from '_@angular_router@9.0.7@@angular/router';
import {GasStaffService} from '../../../services/gas-staff.service';
import {CommonsService} from "../../../services/commons.service";
import {ValidatorsService} from "../../../services/validators.service";
@Component({
selector: 'app-gas-staff-edit',
templateUrl: './gas-staff-edit.component.html',
styleUrls: ['./gas-staff-edit.component.scss']
})
export class GasStaffEditComponent implements OnInit {
staffFrom: FormGroup;
btnLoading = false;
positionTypeArray = [];
constructor(private formBuilder: FormBuilder,
private modal: NzModalService,
private gasStaffService: GasStaffService,
private activatedRoute: ActivatedRoute,
private commonsService: CommonsService,
private router: Router) { }
ngOnInit(): void {
this.activatedRoute.queryParams.subscribe(queryParams => {
if (queryParams['id'] != null) {
this.getDetail(queryParams['id']);
}
});
this.commonsService.getDictionary('GAS_STAFF_POSITION_TYPE', data => {
this.positionTypeArray = data['return_data'];
});
this.staffFrom = this.formBuilder.group({
id: [null],
positionType: ['1', [Validators.required]],
name: [null, [Validators.required]],
telephone: [null, [Validators.required, ValidatorsService.mobile]],
});
}
/**
*
* @param id
*/
getDetail(id: number) {
this.gasStaffService.getStaffDetail(id, data => {
if (data['return_code'] === '000000') {
data['return_data']['positionType'] = String(data['return_data']['positionType']);
this.staffFrom.patchValue(data['return_data']);
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg'],
});
}
});
}
/**
*
*/
submitFrom() {
for (const i in this.staffFrom.controls) {
this.staffFrom.controls[i].markAsDirty();
this.staffFrom.controls[i].updateValueAndValidity();
}
if (this.staffFrom.status == null || this.staffFrom.status !== 'VALID') {
this.modal.warning({
nzTitle: '提示',
nzContent: '请规范填写所有的必填项信息',
});
return;
}
this.btnLoading = true;
if (this.staffFrom.value.id == null) {
this.gasStaffService.addStaff(this.staffFrom.value, data => {
if (data['return_code'] === '000000') {
this.modal.success({
nzTitle: '提示',
nzContent: '添加成功',
nzOnOk: () => this.router.navigateByUrl('admin/gas-staff/list')
});
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg'],
});
}
this.btnLoading = false;
});
} else {
this.gasStaffService.updateStaff(this.staffFrom.value, data => {
if (data['return_code'] === '000000') {
this.modal.success({
nzTitle: '提示',
nzContent: '修改成功',
nzOnOk: () => this.router.navigateByUrl('admin/gas-staff/list')
});
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg'],
});
}
this.btnLoading = false;
});
}
}
}

@ -0,0 +1,116 @@
<!-- start 面包屑 -->
<app-breadcrumb></app-breadcrumb>
<!-- end 面包屑 -->
<!--条件搜索-->
<nz-spin [nzSpinning]="loadingObject.spinning" nzTip="{{loadingObject.msg}}">
<div class="inner-content">
<form nz-form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)">
<div nz-row>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">职位类型</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="positionType">
<nz-option *ngFor="let item of positionTypeArray" nzLabel="{{item.codeName}}" nzValue="{{item.codeValue}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">员工名称</nz-form-label>
<nz-form-control [nzSpan]="14">
<input nz-input formControlName="name" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">员工电话</nz-form-label>
<nz-form-control [nzSpan]="14">
<input nz-input formControlName="telephone" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="8">员工状态</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-select nzAllowClear formControlName="status">
<nz-option nzValue="1" nzLabel="正常"></nz-option>
<nz-option nzValue="2" nzLabel="禁用"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="24" class="search-button">
<button nz-button nzType="primary"><i nz-icon nzType="search" nzTheme="outline"></i>搜索</button>
<button nz-button nzType="default" (click)="resetForm()"><i nz-icon nzType="reload" nzTheme="outline"></i>重置</button>
</div>
</div>
</form>
</div>
<div class="inner-content">
<span>共计 {{dataObject.total?dataObject.total:0}} 条数据</span>
<div class="operating-button">
<button nz-button nzType="primary" class="right-btn" [routerLink]="['/admin/gas-staff/edit']" ><i nz-icon nzType="plus" nzTheme="outline"></i>增加员工</button>
</div>
<!--数组表格 -->
<nz-table #basicTable
[nzData]="dataObject.list"
[nzTotal]="dataObject.total"
[nzFrontPagination]="false"
[nzLoading]="tableLoading"
[nzPageIndex]="whereObject.pageNum"
(nzPageIndexChange)="requestData($event)"
[nzScroll]="{ x: '1100px'}">
<thead>
<tr>
<th nzWidth="60px">序号</th>
<th nzWidth="100px">职位类型</th>
<th nzWidth="100px">员工名称</th>
<th nzWidth="100px">员工电话</th>
<th nzWidth="100px">员工状态</th>
<th nzWidth="140px">创建时间</th>
<th nzWidth="140px">修改时间</th>
<th nzWidth="110px" nzRight="0px">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data;let i = index">
<td>{{i+1}}</td>
<td>{{data.positionName}}</td>
<td>{{data.name}}</td>
<td>{{data.telephone}}</td>
<td>{{data.status | gasStaffStatus}}</td>
<td>{{data.createTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td>
<td>{{data.updateTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td>
<td nzRight="0px" class="table-td-operation">
<a nz-dropdown [nzDropdownMenu]="menu"> 操作列表 <i nz-icon nzType="down"></i> </a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu nzSelectable>
<li nz-menu-item [routerLink]="['/admin/gas-staff/edit']" [queryParams]="{ id: data.id}"><a>修改</a></li>
<li nz-menu-item (click)="showDisabledConfirm(data.id)" *ngIf="data.status == 1" ><a>禁用</a></li>
<li nz-menu-item (click)="showRecoverConfirm(data.id)" *ngIf="data.status == 2" ><a>恢复</a></li>
<li nz-menu-item (click)="showDelConfirm(data.id)"><a>删除</a></li>
</ul>
</nz-dropdown-menu>
</td>
</tr>
</tbody>
</nz-table>
</div>
</nz-spin>

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { GasStaffListComponent } from './gas-staff-list.component';
describe('GasStaffListComponent', () => {
let component: GasStaffListComponent;
let fixture: ComponentFixture<GasStaffListComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ GasStaffListComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(GasStaffListComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,184 @@
import { Component, OnInit } from '@angular/core';
import {environment} from '../../../../environments/environment';
import {FormBuilder, FormGroup, Validators} from '_@angular_forms@9.0.7@@angular/forms';
import {NzMessageService, NzModalService} from '_ng-zorro-antd@9.3.0@ng-zorro-antd';
import {LocalStorageService} from '../../../services/local-storage.service';
import {OrganizationService} from '../../../services/organization.service';
import {CompanyAccountService} from '../../../services/company-account.service';
import {Router} from '_@angular_router@9.0.7@@angular/router';
import {ADMIN_INFO_OBJECT} from '../../../services/local-storage.namespace';
import {GasStaffService} from '../../../services/gas-staff.service';
import {CommonsService} from "../../../services/commons.service";
@Component({
selector: 'app-gas-staff-list',
templateUrl: './gas-staff-list.component.html',
styleUrls: ['./gas-staff-list.component.scss']
})
export class GasStaffListComponent implements OnInit {
FILE_URL = environment.imageUrl;
roleType;
adminFlag;
loadingObject = {
spinning: false,
msg: '加载中'
};
dataObject: any = {};
tableLoading = true;
searchForm: FormGroup;
pageNum: number;
whereObject: any = {};
positionTypeArray = [];
constructor(private modal: NzModalService,
private message: NzMessageService,
private store: LocalStorageService,
private gasStaffService: GasStaffService,
private commonsService: CommonsService,
private router: Router,
private form: FormBuilder) {
this.roleType = Number(this.store.get(ADMIN_INFO_OBJECT)['secRole'].roleType);
this.adminFlag = Number(this.store.get(ADMIN_INFO_OBJECT)['secUser'].adminFlag);
}
ngOnInit(): void {
this.searchForm = this.form.group({
name: [null],
telephone: [null],
positionType: [null],
status: [null],
});
this.commonsService.getDictionary('GAS_STAFF_POSITION_TYPE', data => {
this.positionTypeArray = data['return_data'];
});
this.requestData(1);
}
/**
*
*/
requestData(pageNum) {
this.tableLoading = true;
this.whereObject['pageNum'] = pageNum;
this.whereObject['pageSize'] = 10;
this.gasStaffService.getStaffList(this.whereObject, data => {
if (data['return_code'] === '000000') {
this.dataObject = data['return_data'];
} else {
this.modal.error(data['return_msg']);
}
this.tableLoading = false;
});
}
/**
*
* @param whereObject
*/
search(whereObject: object) {
this.whereObject = whereObject;
this.requestData(1);
}
/**
*
*/
resetForm(): void {
this.searchForm.reset();
}
/**
*
*/
showDisabledConfirm(id: number): void {
this.modal.confirm({
nzTitle: '警告',
nzContent: '是否禁用该员工',
nzOkText: '是',
nzCancelText: '否',
nzOkType: 'danger',
nzOnOk: () => this.disabledData(id)
});
}
/**
*
*/
disabledData(id: number) {
this.gasStaffService.disabled({ staffId: id }, data => {
if (data['return_code'] === '000000') {
this.requestData(this.whereObject['pageNum']);
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg']
});
}
});
}
/**
*
*/
showRecoverConfirm(id: number): void {
this.modal.confirm({
nzTitle: '警告',
nzContent: '是否恢复该员工状态',
nzOkText: '是',
nzCancelText: '否',
nzOkType: 'danger',
nzOnOk: () => this.recoverData(id)
});
}
/**
*
*/
recoverData(id: number) {
this.gasStaffService.recover({ staffId: id }, data => {
if (data['return_code'] === '000000') {
this.requestData(this.whereObject['pageNum']);
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg']
});
}
});
}
/**
*
*/
showDelConfirm(id: number): void {
this.modal.confirm({
nzTitle: '警告',
nzContent: '是否删除该员工',
nzOkText: '是',
nzCancelText: '否',
nzOkType: 'danger',
nzOnOk: () => this.delData(id)
});
}
/**
*
*/
delData(id: number) {
this.gasStaffService.delStaff({ staffId: id }, data => {
if (data['return_code'] === '000000') {
this.requestData(this.whereObject['pageNum']);
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg']
});
}
});
}
}

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import {GasStaffListComponent} from './gas-staff-list/gas-staff-list.component';
import {GasStaffEditComponent} from './gas-staff-edit/gas-staff-edit.component';
const routes: Routes = [
{ path: 'list', component: GasStaffListComponent},
{ path: 'edit', component: GasStaffEditComponent},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class GasStaffRoutingModule { }

@ -0,0 +1,27 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { GasStaffRoutingModule } from './gas-staff-routing.module';
import { GasStaffListComponent } from './gas-staff-list/gas-staff-list.component';
import { GasStaffEditComponent } from './gas-staff-edit/gas-staff-edit.component';
import {NgZorroAntdModule} from '_ng-zorro-antd@9.3.0@ng-zorro-antd';
import {FormsModule, ReactiveFormsModule} from '_@angular_forms@9.0.7@@angular/forms';
import {BreadcrumbModule} from '../../common/breadcrumb/breadcrumb.module';
import {AppCommonModule} from '../../app-common.module';
import {NgxEchartsModule} from '_ngx-echarts@4.2.2@ngx-echarts';
@NgModule({
declarations: [GasStaffListComponent, GasStaffEditComponent],
imports: [
CommonModule,
GasStaffRoutingModule,
NgZorroAntdModule,
ReactiveFormsModule,
FormsModule,
BreadcrumbModule,
AppCommonModule,
NgxEchartsModule,
]
})
export class GasStaffModule { }

@ -8,7 +8,7 @@
<!--条件搜索-->
<div class="inner-content" *ngIf="adminInfoObject['merchantStore'] != null && adminInfoObject['merchantStore']['type'] == 1">
<div *ngIf="adminInfoObject['merchantStore']['prestoreType'] == 1" style="width: 100%;text-align: center;">
<!--<div *ngIf="adminInfoObject['merchantStore']['prestoreType'] == 1" style="width: 100%;text-align: center;">
<nz-row [nzGutter]="16">
<nz-col [nzSpan]="24">
<nz-statistic [nzValue]="'' + balanceData['amounts']" [nzTitle]="'预存账户余额'" [nzSuffix]="suffixTpl"></nz-statistic>
@ -16,26 +16,26 @@
</nz-col>
</nz-row>
</div>
<br/><br/><br/>
<br/><br/><br/>-->
<nz-card nzTitle="历史加油订单">
<nz-row [nzGutter]="16">
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.history.totalPrice ? gasCountData.history.totalPrice : 0" [nzTitle]="'加油总金额'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.history.totalPrice ? gasCountData.history.totalPrice : 0" [nzTitle]="'订单总金额'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.history.totalCount ? gasCountData.history.totalCount : 0" [nzTitle]="'加油总数量'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.history.totalCount ? gasCountData.history.totalCount : 0" [nzTitle]="'订单笔数'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.history.incomePrice ? gasCountData.history.incomePrice : 0" [nzTitle]="'加油金额'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.history.incomeCount ? gasCountData.history.incomeCount : 0" [nzTitle]="'加油数'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.history.incomeCount ? gasCountData.history.incomeCount : 0" [nzTitle]="'加油'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.history.refundPrice ? gasCountData.history.refundPrice : 0" [nzTitle]="'退款金额'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.history.refundCount ? gasCountData.history.refundCount : 0" [nzTitle]="'退款数'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.history.refundCount ? gasCountData.history.refundCount : 0" [nzTitle]="'退款'"></nz-statistic>
</nz-col>
</nz-row>
</nz-card>
@ -43,27 +43,60 @@
<nz-card nzTitle="今日加油订单">
<nz-row [nzGutter]="16">
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.today.totalPrice ? gasCountData.today.totalPrice : 0" [nzTitle]="'加油总金额'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.today.totalPrice ? gasCountData.today.totalPrice : 0" [nzTitle]="'订单总金额'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.today.totalCount ? gasCountData.today.totalCount : 0" [nzTitle]="'加油总数量'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.today.totalCount ? gasCountData.today.totalCount : 0" [nzTitle]="'订单笔数'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.today.incomePrice ? gasCountData.today.incomePrice : 0" [nzTitle]="'加油金额'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.today.incomeCount ? gasCountData.today.incomeCount : 0" [nzTitle]="'加油数'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.today.incomeCount ? gasCountData.today.incomeCount : 0" [nzTitle]="'加油'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.today.refundPrice ? gasCountData.today.refundPrice : 0" [nzTitle]="'退款金额'"></nz-statistic>
</nz-col>
<nz-col [nzSpan]="4">
<nz-statistic [nzValue]="gasCountData.today.refundCount ? gasCountData.today.refundCount : 0" [nzTitle]="'退款数'"></nz-statistic>
<nz-statistic [nzValue]="gasCountData.today.refundCount ? gasCountData.today.refundCount : 0" [nzTitle]="'退款'"></nz-statistic>
</nz-col>
</nz-row>
</nz-card>
</div>
<!--条件搜索-->
<div class="inner-content" *ngIf="roleType == 2">
<div style="width: 100%;text-align: center;">
<nz-row [nzGutter]="16">
<nz-col [nzSpan]="24">
<nz-statistic [nzValue]="'' + merGasCount['amount']" [nzTitle]="'预存账户余额'"></nz-statistic>
</nz-col>
</nz-row>
</div>
<br/><br/><br/>
<nz-card nzTitle="油站加油金额">
<nz-table #basicTable [nzData]="merGasCount.storeList" [nzHideOnSinglePage]="true">
<thead>
<tr>
<th>序号</th>
<th>油站名称</th>
<th>油站地址</th>
<th>油站加油总额</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data;let i = index;">
<td>{{ i + 1 }}</td>
<td>{{ data.store_name }}</td>
<td>{{ data.address }}</td>
<td>{{ '¥' + data.countPrice }}</td>
</tr>
</tbody>
</nz-table>
</nz-card>
</div>
<!--渠道公司-->
<div class="inner-content" *ngIf="roleType == 7">
<div nz-row >
@ -196,15 +229,18 @@
</nz-modal>
<nz-modal [(nzVisible)]="isVisibleOil" nzWidth="900" nzTitle="预充值账户记录" [nzBodyStyle]="{ padding: '15px', height: '600px'}" (nzOnCancel)="isVisibleOil = false" [nzFooter]="null">
<nz-table #RecordList [nzData]="recordList" [nzScroll]="{ y: '470px', x : '900px' }">
<nz-table #RecordList [nzData]="recordList" [nzScroll]="{ y: '450px', x : '900px' }">
<thead>
<tr>
<th nzWidth="50px">编号</th>
<th nzWidth="50px">类型</th>
<th nzWidth="80px">交易金额</th>
<th nzWidth="80px">变更前金额</th>
<th nzWidth="80px">变更后金额</th>
<th nzWidth="80px">编号</th>
<th nzWidth="80px">类型</th>
<th nzWidth="100px">交易金额</th>
<th nzWidth="110px">变更前金额</th>
<th nzWidth="110px">变更后金额</th>
<th nzWidth="110px">来源类型</th>
<th nzWidth="300px">内容</th>
<th nzWidth="130px">操作时间</th>
<th nzWidth="150px">操作人</th>
</tr>
</thead>
<tbody>
@ -214,7 +250,13 @@
<td>{{'¥' + data.amount}}</td>
<td>{{'¥' + data.beforeAmount}}</td>
<td>{{'¥' + data.afterAmount}}</td>
<td>
<span *ngIf="data.sourceType == 1">金额充值</span>
<span *ngIf="data.sourceType == 2">订单消费</span>
<span *ngIf="data.sourceType == 3">订单退款</span>
<td>{{data.sourceContent}}</td>
<td>{{data.createTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td>
<td>{{data.opUserName}}</td>
</tr>
</tbody>
</nz-table>

@ -34,6 +34,10 @@ export class IndexComponent implements OnInit {
history: {},
today: {},
};
merGasCount: any = {
amount: 0,
storeList: []
};
recordList = [];
tyBalance;
webSocket: WebSocket;
@ -72,6 +76,10 @@ export class IndexComponent implements OnInit {
this.getGasAccount();
}
}
if (this.store.get(ADMIN_INFO_OBJECT)['secUser']['objectType'] === 2) {
this.getMerGasStatistical();
}
}
// 查询余额
@ -272,6 +280,18 @@ export class IndexComponent implements OnInit {
});
}
// 查询加油站统计
public getMerGasStatistical(): void {
this.index.getMerGasStatistical(data => {
if (data['return_code'] === '000000') {
this.merGasCount = data['return_data'];
this.loading = false;
} else {
this.message.error(data['return_msg']);
}
});
}
// 查询预存账户油站记录
public getGasAccountRecord(): void {
const paramsObject = {

@ -1,12 +1,13 @@
import {Component, OnInit} from '@angular/core';
import {FormGroup, Validators, FormBuilder} from '@angular/forms';
import {LoginService} from '../../../services/login.service';
import {NzModalService} from 'ng-zorro-antd';
import {NzMessageService, NzModalService} from 'ng-zorro-antd';
import {ADMIN_INFO_OBJECT, TOKEN, INIT_FLAG, LOGINTYPE} from '../../../services/local-storage.namespace';
import {LocalStorageService} from '../../../services/local-storage.service';
import {Router} from '@angular/router';
import {HttpClient} from '@angular/common/http';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
@ -21,6 +22,7 @@ export class LoginComponent implements OnInit {
private form: FormBuilder, // 表单校验
private http: HttpClient, // http请求
private loginService: LoginService,
private message: NzMessageService,
private modal: NzModalService) {
}
@ -55,11 +57,9 @@ export class LoginComponent implements OnInit {
this.store.set(LOGINTYPE, data['return_data']['type']);
this.router.navigateByUrl('/admin/index').then();
} else {
this.modal.warning({
nzTitle: '提示',
nzContent: data['return_msg']
});
this.message.error(data['return_msg']);
}
});
}
}

@ -80,7 +80,7 @@
<th nzWidth="100px">商户电话</th>
<th nzWidth="100px">创建时间</th>
<th nzWidth="50px">状态</th>
<th nzWidth="80px" nzRight="0px">操作</th>
<th nzWidth="100px" nzRight="0px">操作</th>
</tr>
</thead>
<tbody>
@ -103,10 +103,27 @@
<nz-divider nzType="vertical"></nz-divider>
<a *ngIf="data.status === 1" (click)='disableMerchant(data.id)'><i nz-icon nzType="stop" nzTheme="outline" nz-tooltip="禁用"></i></a>
<a *ngIf="data.status !== 1" (click)='enableMerchant(data.id)'><i nz-icon nzType="check-circle" nzTheme="outline" nz-tooltip="启用"></i></a>
<nz-divider nzType="vertical"></nz-divider>
<a (click)='showRechargeModal(data.id)'><i nz-icon nzType="dollar" nzTheme="outline" nz-tooltip="余额充值"></i></a>
</td>
</tbody>
</nz-table>
</div>
<nz-modal [(nzVisible)]="rechargeModal" nzTitle="余额充值" (nzOnCancel)="closeRechargeModal()" nzWidth="500px" [nzFooter]="null">
<form nz-form [formGroup]="rechargeForm">
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired >充值金额</nz-form-label>
<nz-form-control [nzSpan]="14">
<nz-input-number style="width: 100%" formControlName="amount" [nzMin]="0.01" [nzMax]="1000" [nzStep]="1" [nzPrecision]="2"></nz-input-number>
</nz-form-control>
</nz-form-item>
<div style="text-align: center;">
<button nz-button nzType="primary" style="width: 150px;" (click)="submitRecharge()">确定</button>
</div>
</form>
</nz-modal>

@ -1,11 +1,12 @@
import { Component, OnInit } from '@angular/core';
import {FormBuilder, FormGroup} from '@angular/forms';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
import {IconService} from '../../../services/icon.service';
import {NzMessageService} from 'ng-zorro-antd';
import {NzMessageService, NzModalService} from 'ng-zorro-antd';
import {CommonsService} from '../../../services/commons.service';
import {MerchantService} from '../../../services/merchant.service';
import {Router} from '@angular/router';
import {environment} from '../../../../environments/environment';
import {MerAmountService} from "../../../services/mer-amount.service";
@Component({
selector: 'app-merchant-list',
@ -21,13 +22,18 @@ export class MerchantListComponent implements OnInit {
pageSize = 10; // 条码
loading = true;
rechargeModal = false;
rechargeForm: FormGroup; // 充值模态框
constructor(
private form: FormBuilder,
private merchant: MerchantService,
private iconService: IconService,
private message: NzMessageService,
private merAmountService: MerAmountService,
private router: Router,
private common: CommonsService
private common: CommonsService,
private modal: NzModalService,
) {
}
@ -42,6 +48,11 @@ export class MerchantListComponent implements OnInit {
telephone: [null],
status: [null],
});
this.rechargeForm = this.form.group({
merId: [null],
amount: [null, [Validators.required]],
});
this.getRequest(true, this.searchForm.value);
}
@ -131,5 +142,45 @@ export class MerchantListComponent implements OnInit {
}
}).then(r => console.log(r));
}
showRechargeModal(merId: number) {
this.rechargeForm.patchValue({ merId: merId});
this.rechargeModal = true;
}
closeRechargeModal() {
this.rechargeModal = false;
}
submitRecharge() {
for (const i in this.rechargeForm.controls) {
this.rechargeForm.controls[i].markAsDirty();
this.rechargeForm.controls[i].updateValueAndValidity();
}
if (this.rechargeForm.status == null || this.rechargeForm.status !== 'VALID') {
this.modal.warning({
nzTitle: '提示',
nzContent: '请填写所有必填项',
});
return;
}
this.merAmountService.recharge(this.rechargeForm.value, data => {
if (data['return_code'] === '000000') {
this.modal.success({
nzTitle: '提示',
nzContent: '充值成功',
});
this.closeRechargeModal();
} else {
this.modal.error({
nzTitle: '提示',
nzContent: data['return_msg'],
});
}
});
}
}

@ -20,12 +20,11 @@ import {Md5} from 'ts-md5';
import {environment} from '../../../environments/environment';
import {HttpClient} from '@angular/common/http';
import {CompanyTwoPwdService} from '../../services/company-two-pwd.service';
import {WebsocketService} from '../../services/websocket.service';
@Component({
selector: 'app-navigation',
templateUrl: './navigation.component.html',
styleUrls: ['./navigation.component.less'],
styleUrls: ['./navigation.component.less']
})
export class NavigationComponent implements OnInit {
@ -47,9 +46,8 @@ export class NavigationComponent implements OnInit {
private companyTwoPwdService: CompanyTwoPwdService,
private http: HttpClient, // http请求
private iconService: IconService,
private webSocketService: WebsocketService,
private store: LocalStorageService, // 数据请求
private modal: NzModalService,
private common: CommonsService,
private fb: FormBuilder, // 表单
private router: Router,
) {
@ -69,11 +67,9 @@ export class NavigationComponent implements OnInit {
});
this.menuList = this.storage.getList(ADMIN_INFO_OBJECT)['menuList']; // 定义菜单数据
// 连接websocket
// this.webSocketService.connect(`wss://hsgcs.dctpay.com/msg/WebSocket/` + this.store.get(ADMIN_INFO_OBJECT)['merchantStore'].id);
}
public activeLi(routeName): void {
this.routeName = routeName;
this.storage.set(ROUTENAME, routeName);

@ -111,8 +111,8 @@
<td nzRight>{{data.status | orderCouponStatus}}</td>
<td nzRight class="table-td-operation">
<a (click)="getDetail(data.orderNo)">详情</a>
<nz-divider *ngIf="data.status == 2 || data.status == 3 " nzType="vertical" ></nz-divider>
<a *ngIf="data.status == 2 || data.status == 3 " (click)="showModal(data.orderId)">退款</a>
<nz-divider *ngIf="(secUser['objectType'] != 8) && (data.status == 2 || data.status == 3)" nzType="vertical" ></nz-divider>
<a *ngIf="(secUser['objectType'] != 8) && (data.status == 2 || data.status == 3)" (click)="showModal(data.orderId)">退款</a>
</td>
</tbody>
</nz-table>

@ -10,6 +10,7 @@ import {MerchantService} from '../../../services/merchant.service';
import {LocalStorageService} from '../../../services/local-storage.service';
import {CommonsService} from '../../../services/commons.service';
import {WebsocketService} from '../../../services/websocket.service';
import {ADMIN_INFO_OBJECT} from "../../../services/local-storage.namespace";
@Component({
selector: 'app-oil-station-order',
@ -34,6 +35,7 @@ export class OilStationOrderComponent implements OnInit {
isVisibleDetail = false;
refundContent: string;
roleType: number;
secUser: object;
constructor(
private form: FormBuilder,
private order: OrderService,
@ -49,6 +51,7 @@ export class OilStationOrderComponent implements OnInit {
}
ngOnInit(): void {
this.secUser = this.store.get(ADMIN_INFO_OBJECT)['secUser'];
this.init();
// 接收消息
this.webSocketService.messageSubject.subscribe(

@ -64,7 +64,7 @@
<nz-form-item>
<nz-form-label [nzSpan]="6">充值号码</nz-form-label>
<nz-form-control [nzSpan]="16">
<input nz-input placeholder="请输入充值号码..." [formControlName]="'rechargeContent'" />
<input nz-input placeholder="请输入充值号码..." [formControlName]="'rechargeContent'"/>
</nz-form-control>
</nz-form-item>
</div>
@ -72,7 +72,7 @@
<nz-form-item>
<nz-form-label [nzSpan]="6">订单号</nz-form-label>
<nz-form-control [nzSpan]="16">
<input nz-input placeholder="请输入订单号..." [formControlName]="'orderNo'" />
<input nz-input placeholder="请输入订单号..." [formControlName]="'orderNo'"/>
</nz-form-control>
</nz-form-item>
</div>
@ -80,36 +80,19 @@
<nz-form-item>
<nz-form-label [nzSpan]="6">工会卡卡号</nz-form-label>
<nz-form-control [nzSpan]="16">
<input nz-input placeholder="请输入工会卡卡号..." [formControlName]="'idCard'" />
<input nz-input placeholder="请输入工会卡卡号..." [formControlName]="'idCard'"/>
</nz-form-control>
</nz-form-item>
</div>
<!-- <div nz-col nzSpan="8">-->
<!-- <nz-form-item>-->
<!-- <nz-form-label [nzSpan]="6">用户电话</nz-form-label>-->
<!-- <nz-form-control [nzSpan]="16">-->
<!-- <input nz-input placeholder="请输入用户电话..." [formControlName]="'userPhone'" />-->
<!-- </nz-form-control>-->
<!-- </nz-form-item>-->
<!-- </div>-->
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="6">支付时间</nz-form-label>
<nz-form-control [nzSpan]="16">
<nz-range-picker [nzShowTime]="{ nzFormat: 'HH:mm' }" formControlName="payTime"></nz-range-picker>
<nz-range-picker [nzShowTime]="{ nzFormat: 'HH:mm' }"
formControlName="payTime"></nz-range-picker>
</nz-form-control>
</nz-form-item>
</div>
<!-- <div nz-col nzSpan="8">-->
<!-- <nz-form-item>-->
<!-- <nz-form-label [nzSpan]="6">创建时间</nz-form-label>-->
<!-- <nz-form-control [nzSpan]="16">-->
<!-- <nz-range-picker [nzShowTime]="{ nzFormat: 'HH:mm' }" formControlName="createTime"></nz-range-picker>-->
<!-- </nz-form-control>-->
<!-- </nz-form-item>-->
<!-- </div>-->
</div>
<div nz-row>
<div nz-col nzSpan="24" class="search-button">
@ -125,16 +108,10 @@
<div class="inner-content">
<span>共计 {{total}} 条数据</span>
<div class="operating-button">
<nz-upload
[nzAccept]="'.xls,.xlsx'"
nzAction="{{WEB_SERVE_URL}}outRechargeOrder/importRechargeOrder"
[nzHeaders]="{ authorization: 'authorization-text' }"
(nzChange)="handleChange($event)"
[nzShowUploadList]="false"
>
<button nz-button nzType="primary" ><i nz-icon nzType="import" nzTheme="outline"></i>导入充值订单</button>
</nz-upload>
<button nz-button nzType="primary" class="right-btn" (click)="downloadTemplate(searchForm.value)" ><i nz-icon nzType="download" nzTheme="outline"></i>导出订单</button>
<button nz-button nzType="primary" class="right-btn" (click)="downloadTemplate(searchForm.value)"><i nz-icon
nzType="download"
nzTheme="outline"></i>导出订单
</button>
</div>
<nz-table
class="table"
@ -152,109 +129,85 @@
<thead nzSingleSort>
<tr>
<th nzWidth="80px">编号</th>
<th nzWidth="180px">订单名称</th>
<th nzWidth="180px">订单类型</th>
<th nzWidth="180px">充值类型</th>
<th nzWidth="180px">工会卡号</th>
<th nzWidth="180px">订单号</th>
<th nzWidth="120px">客户名称</th>
<th nzWidth="130px">充值号码</th>
<th nzWidth="100px">充值类型</th>
<th nzWidth="120px">运营商</th>
<th nzWidth="180px">充值内容</th>
<th nzWidth="100px">充值金额</th>
<th nzWidth="100px">支付金额</th>
<th nzWidth="180px">充值订单号</th>
<th nzWidth="120px">客户名称</th>
<th nzWidth="140px">生成时间</th>
<th nzWidth="100px" nzRight>支付方式</th>
<th nzWidth="300px" nzRight>充值状态</th>
<th nzWidth="100px" nzRight>订单状态</th>
<th nzWidth="200px" nzRight>操作</th>
<th nzWidth="90px" nzRight>充值状态</th>
<th nzWidth="100px" nzRight>支付状态</th>
<th nzWidth="180px" nzRight>操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of ajaxTable.data; let i = index">
<td>{{i+1}}</td>
<td>{{data.remarks}}</td>
<td>{{data.rechargeModel | rechargePrice}}</td>
<td>{{data.rechargeType== 1? '快充':'慢充'}}</td>
<td>{{data.idCard}}</td>
<td>{{i + 1}}</td>
<td>{{data.type == 1 ? '话费充值' : ''}}</td>
<td>{{data.operatorName}}</td>
<td>{{data.rechargeContent}} | {{data.rechargeType == 1 ? '快充' : '慢充'}}</td>
<td>¥{{data.rechargePrice}}</td>
<td>{{data.orderNo}}</td>
<td>{{data.userName == null ? '暂无': data.userName}}</td>
<td>{{data.rechargeContent == null ? '暂无': data.rechargeContent}}</td>
<td>{{data.orderPrice}}</td>
<td>{{data.payPrice}}</td>
<td>{{data.userName == null ? '暂无' : data.userName}}</td>
<td>{{data.createTimed | date: 'yyyy-MM-dd HH:mm:ss'}}</td>
<td nzRight>{{data.payType | rechargePayType}}</td>
<td nzRight>
{{data.rechargeStatus == 1 ? '充值异常' : '正常'}}
<span *ngIf="data.rechargeStatus === 1 && data.abnormalMsg != null">({{data.abnormalMsg}})</span>
</td>
<td nzRight>{{data.status | rechargeStatus}}</td>
<td nzRight>{{data.rechargeStatus | rechargeStatus}}</td>
<td nzRight>{{data.payStatus | payStatus}}</td>
<td nzRight class="table-td-operation">
<a (click)="getDetail(data.id)">详情</a>
<a *ngIf="data.rechargeStatus === 1" (click)="getMobileRechargeByOrderId(data.id)">再次充值</a>
<a *ngIf="data.status === 2" (click)="postRefund(data.orderNo)">申请退款</a>
<a (click)="getDetail(data.id)">详情</a>
<nz-divider nzType="vertical"></nz-divider>
<a (click)="getChildOrder(data.id)">查看子订单</a>
</td>
</tbody>
</nz-table>
</div>
<nz-modal [(nzVisible)]="isVisible" nzTitle="订单详情" nzWidth="1200">
<nz-modal [(nzVisible)]="isVisible" nzTitle="订单详情" nzWidth="1200" (nzOnOk)="isVisible = false"
(nzOnCancel)="isVisible = false">
<nz-descriptions nzBordered [nzColumn]="{ xxl: 4, xl: 3, lg: 3, md: 3, sm: 2, xs: 1 }">
<nz-descriptions-item nzTitle="订单名称">{{data['remarks']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="订单类型">{{data['rechargeModel'] | rechargePrice}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="订单号">{{data['orderNo']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="客户名称">{{data['userName'] == null ? '暂无': data['userName']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="充值号码">{{data['rechargeContent'] == null ? '暂无': data['rechargeContent']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="身份证号" *ngIf="data['rechargeModel'] === 3 ">{{data['idCard']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="充值姓名" *ngIf="data['rechargeModel'] === 3 ">{{data['rechargeName']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="充值金额">{{data['orderPrice']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="支付金额">{{data['payPrice']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="退款金额" *ngIf="data['refundFee'] != null">{{data['refundFee']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="充值类型">{{data['type'] == 1 ? '话费充值' : ''}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="运营商">{{data['operatorName']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="充值内容">{{data['rechargeContent']}} | {{data['rechargeType'] == 1 ? '快充' : '慢充'}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="充值金额">¥{{data['rechargePrice']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="应付金额">¥{{data['payPrice']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="积分抵扣金额">¥{{data['integralDeductionPrice'] == null ? '0' : data['integralDeductionPrice']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="优惠券抵扣金额">¥{{data['discountDeductionPrice'] == null ? '0' : data['discountDeductionPrice']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="实付金额">¥{{data['payRealPrice']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="退款金额" *ngIf="data['refundFee'] != null">¥{{data['refundFee']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="优惠券名称" *ngIf="data['memDiscountName'] != null">{{data['memDiscountName']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="支付流水号">{{data['paySerialNo']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="生成时间">{{data['createTimed'] | date: 'yyyy-MM-dd HH:mm:ss'}}</nz-descriptions-item>
<nz-descriptions-item *ngIf="data['cancelTime'] != null" nzTitle="取消时间">{{data['cancelTime'] | date: 'yyyy-MM-dd HH:mm:ss'}}</nz-descriptions-item>
<nz-descriptions-item *ngIf="data['finishTime'] != null" nzTitle="完成时间">{{data['finishTime'] | date: 'yyyy-MM-dd HH:mm:ss'}}</nz-descriptions-item>
<nz-descriptions-item *ngIf="data['payTime'] != null" nzTitle="支付时间">{{data['payTime'] | date: 'yyyy-MM-dd HH:mm:ss'}}</nz-descriptions-item>
<nz-descriptions-item *ngIf="data['refundTime'] != null" nzTitle="退款时间">{{data['refundTime'] | date: 'yyyy-MM-dd HH:mm:ss'}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="状态">{{data['status'] | rechargeStatus}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="支付类型">{{data['payType'] | rechargePayType}}</nz-descriptions-item>
<nz-descriptions-item *ngIf="data['laborUnionCard'] != null" nzTitle="工会卡号">{{data['laborUnionCard']}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="充值状态">{{data['rechargeStatus'] | rechargeStatus}}</nz-descriptions-item>
<nz-descriptions-item nzTitle="支付状态">{{data['payStatus'] | payStatus}}</nz-descriptions-item>
</nz-descriptions>
<!-- <div *nzModalFooter>-->
<!-- <button nz-button nzType="default" (click)="handleCancel()">取消</button>-->
<!-- <button nz-button *ngIf="data['status'] === 2" nzType="primary" (click)="finishOrder(id)">完成充值</button>-->
<!-- </div>-->
</nz-modal>
<nz-modal [(nzVisible)]="errorStudentVisible" nzTitle="导入失败数据" (nzOnCancel)="errorStudentVisible = false" nzWidth="1200px" [nzFooter]="null">
<nz-table #errorStudentTable [nzData]="importErrorStudentArray" [nzScroll]="{ x: '1200px' }">
<nz-modal [(nzVisible)]="isVisibleChild" nzWidth="700" nzTitle="子订单记录" (nzOnCancel)="isVisibleChild = false" (nzOnOk)="isVisibleChild = false">
<nz-table #basicTable [nzData]="childData">
<thead>
<tr>
<th nzWidth="80px">序号</th>
<th nzWidth="150px">订单号</th>
<th nzWidth="150px">用户昵称</th>
<th nzWidth="150px">用户联系方式</th>
<th nzWidth="150px">充值类型</th>
<th nzWidth="150px">充值内容</th>
<th nzWidth="150px">支付方式</th>
<th nzWidth="150px">卡号</th>
<th nzWidth="150px">订单金额</th>
<th nzWidth="150px">应付金额</th>
<th nzWidth="150px">订单状态</th>
<th nzWidth="150px">支付时间</th>
<th nzWidth="300px">原因</th>
<th>订单号</th>
<th>充值平台</th>
<th>充值状态</th>
<th>创建时间</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of errorStudentTable.data;let i = index">
<td>{{ i + 1}}</td>
<tr *ngFor="let data of basicTable.data">
<td>{{data.orderNo}}</td>
<td>{{data.userName}}</td>
<td>{{data.userPhone}}</td>
<td>{{data.rechargeModelName}}</td>
<td>{{data.rechargeContent}}</td>
<td>{{data.payTypeName}}</td>
<td>{{data.cardNo}}</td>
<td>{{data.orderPrice}}</td>
<td>{{data.payRealPrice}}</td>
<td>{{data.statusName}}</td>
<td>{{data.payTime}}</td>
<td>{{data.errorMessage}}</td>
<td>{{data.rechargePlatform == 1 ? '尖椒':'龙阅'}}</td>
<td>{{data.status | chlidRechargeStatus}}</td>
<td>{{data['createTime'] | date: 'yyyy-MM-dd HH:mm'}}</td>
</tr>
</tbody>
</nz-table>

@ -22,8 +22,10 @@ export class OrderListComponent implements OnInit , OnDestroy {
searchForm: FormGroup; // 搜索框
validateForm: FormGroup; // 添加框
requestData = []; // 列表数据
childData = []; // 列表数据
importErrorStudentArray = [];
errorStudentVisible = false;
isVisibleChild = false;
total: number; // 页码
pageNum = 1; // 页码
pageSize = 10; // 条码
@ -249,4 +251,16 @@ export class OrderListComponent implements OnInit , OnDestroy {
this.errorStudentVisible = true;
}
// 查询子订单
public getChildOrder(id: number): void {
this.isVisibleChild = true;
this.recharge.getChildOrder(id , data => {
if (data['return_code'] === '000000') {
this.childData = data['return_data'];
} else {
this.message.error(data['return_msg']);
}
});
}
}

@ -19,11 +19,11 @@
<nz-form-label [nzSpan]="6">订单状态</nz-form-label>
<nz-form-control [nzSpan]="16">
<nz-select nzShowSearch nzAllowClear formControlName="status" nzPlaceHolder="请选择订单状态">
<nz-option nzLabel="待支付" nzValue="1"></nz-option>
<nz-option nzLabel="已支付" nzValue="2"></nz-option>
<nz-option nzLabel="已完成" nzValue="3"></nz-option>
<nz-option nzLabel="已取消" nzValue="4"></nz-option>
<nz-option nzLabel="已退款" nzValue="5"></nz-option>
<nz-option nzLabel="待支付" nzValue="101"></nz-option>
<nz-option nzLabel="已支付" nzValue="102"></nz-option>
<nz-option nzLabel="已完成" nzValue="100"></nz-option>
<nz-option nzLabel="已取消" nzValue="104"></nz-option>
<nz-option nzLabel="已退款" nzValue="105"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
@ -74,7 +74,7 @@
<td>{{data.count}}</td>
<td>{{data.payPrice}}</td>
<td>{{data.orderPrice}}</td>
<td>{{data.status | rechargeStatus}}</td>
<td>{{data.payStatus | payStatus}}</td>
</tbody>
</nz-table>
</div>

@ -27,7 +27,7 @@ export class OrderStatisticalComponent implements OnInit {
ngOnInit(): void {
this.searchForm = this.form.group({
finishTime: [null],
status: ['3'],
status: ['100'],
});
this.getRequest(true, this.searchForm.value);
}

@ -9,24 +9,23 @@
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="6">金额类型</nz-form-label>
<nz-form-label [nzSpan]="6">运营商</nz-form-label>
<nz-form-control [nzSpan]="16">
<nz-select nzShowSearch nzAllowClear formControlName="type" nzPlaceHolder="请选择金额类型">
<nz-option nzLabel="电信充值" nzValue="1"></nz-option>
<nz-option nzLabel="移动充值" nzValue="2"></nz-option>
<nz-option nzLabel="联通充值" nzValue="3"></nz-option>
<nz-select nzShowSearch nzAllowClear formControlName="operatorType" nzPlaceHolder="请选择运营商">
<nz-option nzLabel="电信运营商" nzValue="1"></nz-option>
<nz-option nzLabel="移动运营商" nzValue="2"></nz-option>
<nz-option nzLabel="联通运营商" nzValue="3"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="6">展示区域</nz-form-label>
<nz-form-label [nzSpan]="6">充值平台</nz-form-label>
<nz-form-control [nzSpan]="16">
<nz-select nzShowSearch nzAllowClear formControlName="showType" nzPlaceHolder="请选择展示区域">
<nz-option nzLabel="小程序" [nzValue]="1"></nz-option>
<nz-option nzLabel="H5" [nzValue]="2"></nz-option>
<nz-option nzLabel="银联" [nzValue]="3"></nz-option>
<nz-select nzShowSearch nzAllowClear formControlName="rechargePlatform" nzPlaceHolder="请选择充值平台">
<nz-option nzLabel="尖椒" [nzValue]="1"></nz-option>
<nz-option nzLabel="龙阅" [nzValue]="2"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
@ -42,6 +41,42 @@
</nz-form-control>
</nz-form-item>
</div>
<!-- <div nz-col nzSpan="8">-->
<!-- <nz-form-item>-->
<!-- <nz-form-label [nzSpan]="6">展示平台</nz-form-label>-->
<!-- <nz-form-control [nzSpan]="16">-->
<!-- <nz-select nzShowSearch nzAllowClear formControlName="rechargeType" nzPlaceHolder="请选择充值类型">-->
<!-- <nz-option nzLabel="小程序" [nzValue]="1"></nz-option>-->
<!-- <nz-option nzLabel="H5" [nzValue]="2"></nz-option>-->
<!-- <nz-option nzLabel="银联" [nzValue]="3"></nz-option>-->
<!-- </nz-select>-->
<!-- </nz-form-control>-->
<!-- </nz-form-item>-->
<!-- </div>-->
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="6">充值方式</nz-form-label>
<nz-form-control [nzSpan]="16">
<nz-select nzShowSearch nzAllowClear formControlName="rechargeWay" nzPlaceHolder="请选择充值方式">
<nz-option nzLabel="自动" [nzValue]="1"></nz-option>
<nz-option nzLabel="手动" [nzValue]="2"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="8">
<nz-form-item>
<nz-form-label [nzSpan]="6">价格状态</nz-form-label>
<nz-form-control [nzSpan]="16">
<nz-select nzShowSearch nzAllowClear formControlName="status" nzPlaceHolder="请选择价格状态">
<nz-option nzLabel="正常" [nzValue]="1"></nz-option>
<nz-option nzLabel="售空" [nzValue]="2"></nz-option>
<nz-option nzLabel="编辑中" [nzValue]="3"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
</div>
@ -73,35 +108,46 @@
[nzTotal]="total"
[(nzPageIndex)]="pageNum"
[(nzPageSize)]="pageSize"
[nzScroll]="{ x: '1200px' }"
(nzPageIndexChange)="getRequest(false , searchForm.value)"
(nzPageSizeChange)="getRequest(false , searchForm.value)">
<thead nzSingleSort>
<tr>
<th>编号</th>
<th>金额类型</th>
<th>充值类型</th>
<th>展示区域</th>
<!-- <th>供货商编号</th>-->
<!-- <th>商品ID</th>-->
<th>充值金额</th>
<th>支付金额</th>
<th>创建时间</th>
<th>操作</th>
<th nzWidth="60px">编号</th>
<th nzWidth="90px">充值金额</th>
<th nzWidth="90px">折扣比例</th>
<th nzWidth="90px">支付金额</th>
<th nzWidth="120px">积分抵扣比例</th>
<th nzWidth="120px">运营商</th>
<th nzWidth="90px">充值类型</th>
<th nzWidth="100px">充值平台</th>
<th nzWidth="100px">支付方式</th>
<th nzWidth="100px">展示平台</th>
<th nzWidth="80px">商品ID</th>
<th nzWidth="120px">创建时间</th>
<th nzRight nzWidth="80px">状态</th>
<th nzRight nzWidth="160px">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of ajaxTable.data; let i = index">
<td>{{i + 1}}</td>
<td>{{data.type | rechargePrice}}</td>
<td>{{data.rechargePrice}}</td>
<td>{{data.discount + "%"}}</td>
<td>{{data.payPrice}}</td>
<td>{{data.integralDiscount + "%"}}</td>
<td>{{data.operatorType | rechargePrice}}</td>
<td>{{data.rechargeType== 1? '快充':'慢充'}}</td>
<td>{{data.showType | showType}}</td>
<td>{{data.price}}</td>
<td>{{data.realPrice}}</td>
<td>{{data.rechargePlatform | rechargePlatform}}</td>
<td>{{data.productPayTypeString.substring(0 , data.productPayTypeString.length - 1)}}</td>
<td>{{data.productPlatformString.substring(0 , data.productPlatformString.length - 1)}}</td>
<td>{{data.goodsId == null ? '暂未配置' : data.goodsId}}</td>
<td>{{data.createTime | date: 'yyyy-MM-dd HH:mm'}}</td>
<td class="table-td-operation">
<a (click)="getEdit(data.id)">编辑</a>
<a style="margin-left: 20px;" (click)='getForbiddenUser(data.id , data.status)'>{{data.status === 1 ? '禁用': '启用'}}</a>
<a style="margin-left: 20px;" (click)="getForbiddenUserD(data.id)">删除</a>
<td nzRight="">{{data.status | priceStatus}}</td>
<td nzRight class="table-td-operation">
<a *ngIf="data.status != 1" (click)="getEdit(data.id)">编辑</a>
<a style="margin-left: 20px;" (click)='getForbiddenUser(data.id , data.status)'>{{data.status === 1 ? '售空': '上线'}}</a>
<a *ngIf="data.status != 1" style="margin-left: 20px;" (click)="getForbiddenUserD(data.id)">删除</a>
</td>
</tbody>
</nz-table>
@ -112,24 +158,80 @@
<nz-form-item *ngIf="!edit">
<nz-form-label [nzSpan]="6" nzRequired>金额类型</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择类型!">
<nz-select nzShowSearch nzAllowClear formControlName="type" nzPlaceHolder="请选择类型">
<nz-option nzLabel="电信充值" nzValue="1"></nz-option>
<nz-option nzLabel="移动充值" nzValue="2"></nz-option>
<nz-option nzLabel="联通充值" nzValue="3"></nz-option>
<nz-select
nzMode="multiple"
formControlName="rechargePrices"
nzPlaceHolder="请选择充值金额"
>
<nz-option *ngFor="let item of priceArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option>
</nz-select>
<input *ngIf="edit" readonly nz-input formControlName="rechargePrice" />
</nz-form-control>
</nz-form-item>
<nz-form-item >
<nz-form-label [nzSpan]="6" nzRequired>展示区域</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择展示区域!">
<nz-select nzShowSearch nzAllowClear formControlName="showType" nzPlaceHolder="请选择展示区域">
<nz-option nzLabel="小程序" [nzValue] ="1"></nz-option>
<nz-option nzLabel="H5" [nzValue] ="2"></nz-option>
<nz-option nzLabel="银联" [nzValue] ="3"></nz-option>
<nz-form-item *ngIf="edit">
<nz-form-label [nzSpan]="6" nzRequired>充值金额</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入充值金额!">
<input readonly nz-input formControlName="rechargePrice" />
</nz-form-control>
</nz-form-item>
<nz-form-item *ngIf="edit">
<nz-form-label [nzSpan]="6" nzRequired>支付金额</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入支付金额!">
<input readonly nz-input formControlName="payPrice" [(ngModel)]="payPrice" />
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>运营商</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择运营商!">
<nz-select nzShowSearch nzAllowClear formControlName="operatorType" nzPlaceHolder="请选择运营商!">
<nz-option nzLabel="电信运营商" [nzValue]="1"></nz-option>
<nz-option nzLabel="移动运营商" [nzValue]="2"></nz-option>
<nz-option nzLabel="联通运营商" [nzValue]="3"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item >
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>展示平台</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择展示平台!">
<nz-select
nzMode="multiple"
formControlName="productPlatform"
nzPlaceHolder="请选择展示平台"
>
<nz-option *ngFor="let item of productPlatformArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>充值平台</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择充值平台!">
<nz-select nzShowSearch nzAllowClear nzMode="multiple" formControlName="rechargePlatform" nzPlaceHolder="请选择充值平台">
<nz-option *ngFor="let item of platformArray" [nzValue]="item.codeValue" [nzLabel]="item.codeName"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>支付方式</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择支付方式!">
<nz-select
nzMode="multiple"
formControlName="payType"
nzPlaceHolder="请选择支付方式"
>
<nz-option *ngFor="let item of priceTypeArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>充值方式</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择充值方式!">
<nz-select nzShowSearch nzAllowClear formControlName="rechargeWay" nzPlaceHolder="请选择充值方式">
<nz-option nzLabel="自动" [nzValue]="1"></nz-option>
<nz-option nzLabel="手动" [nzValue]="2"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>充值类型</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择充值类型!">
<nz-select nzShowSearch nzAllowClear formControlName="rechargeType" nzPlaceHolder="请选择充值类型">
@ -139,73 +241,66 @@
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>商品排序</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入商品排序!">
<input [type]="'number'" nz-input formControlName="sort" />
<nz-form-label [nzSpan]="6" nzRequired>折扣比例</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入折扣比例!">
<nz-input-number
style="width: 200px"
formControlName="discount"
[nzMin]="1"
[nzMax]="100"
[nzStep]="1"
[nzPrecision]="2"
nzPrecisionMode="cut"
(ngModelChange)="changePayType($event)"
nzPlaceHolder="请输入折扣比例!"
[nzFormatter]="formatterPercent"
[nzParser]="parserPercent"
></nz-input-number>
</nz-form-control>
</nz-form-item>
<!-- <nz-form-item>-->
<!-- <nz-form-label [nzSpan]="6" nzRequired>供货商编号</nz-form-label>-->
<!-- <nz-form-control [nzSpan]="16" nzErrorTip="请输入供货商编号!">-->
<!-- <input [type]="'number'" nz-input formControlName="channel" />-->
<!-- </nz-form-control>-->
<!-- </nz-form-item>-->
<!-- <nz-form-item>-->
<!-- <nz-form-label [nzSpan]="6" nzRequired>商品ID</nz-form-label>-->
<!-- <nz-form-control [nzSpan]="16" nzErrorTip="请输入商品ID!">-->
<!-- <input [type]="'number'" nz-input formControlName="goodsId" />-->
<!-- </nz-form-control>-->
<!-- </nz-form-item>-->
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>充值金额</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入充值金额!">
<nz-input-group nzSuffix="RMB" nzPrefix="¥">
<input [type]="'number'" (ngModelChange)="getPrice()" nz-input formControlName="price" />
</nz-input-group>
<nz-form-label [nzSpan]="6" nzRequired>积分支付比例</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入积分支付比例!">
<nz-input-number
style="width: 200px"
formControlName="integralDiscount"
[nzMin]="0"
[nzMax]="100"
[nzStep]="1"
[nzPrecision]="2"
nzPrecisionMode="cut"
nzPlaceHolder="请输入积分支付比例!"
[nzFormatter]="formatterPercent"
[nzParser]="parserPercent"
></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>折扣比例</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入折扣比例!">
<nz-input-group nzSuffix="%" >
<input [type]="'number'" (ngModelChange)="getPrice()" nz-input formControlName="discount" />
</nz-input-group>
<nz-form-item *ngIf="edit">
<nz-form-label [nzSpan]="6" >商品编号</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入商品编号!">
<nz-input-number
style="width: 200px"
formControlName="goodsId"
[nzMin]="1"
[nzMax]="10000"
[nzStep]="1"
nzPlaceHolder="请输入商品编号!"
></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label [nzSpan]="6" nzRequired>支付金额</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入支付金额!">
<nz-input-group nzSuffix="RMB" nzPrefix="¥">
<input [type]="'number'" nz-input [(ngModel)]="realPrice" formControlName="realPrice" />
</nz-input-group>
<nz-form-item *ngIf="edit">
<nz-form-label [nzSpan]="6" >排序</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请输入排序!">
<nz-input-number
style="width: 200px"
formControlName="sort"
[nzMin]="1"
[nzMax]="100"
[nzStep]="1"
nzPlaceHolder="请输入排序!"
></nz-input-number>
</nz-form-control>
</nz-form-item>
</form>
</nz-modal>
<nz-modal [(nzVisible)]="isVisibleGoods" nzWidth="900" nzTitle="渠道商获取关联商品" (nzOnCancel)="handleCancelGoods()" (nzOnOk)="handleCancelGoods()">
<nz-table #basicTable [nzData]="goodsArray">
<thead>
<tr>
<th>供货商编号</th>
<th>商品ID</th>
<th>渠道商标识符</th>
<th>折扣比例</th>
<th>商品名称</th>
<th>渠道商名称</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data">
<td>{{data.channel}}</td>
<td>{{data.goodsId}}</td>
<td>{{data.channelMark | channelMark}}</td>
<td>{{data.discountRatio}}%</td>
<td>{{data.goodsName}}</td>
<td>{{data.memberName}}</td>
<td>{{data.state == 1 ? '上架' : '下架'}}</td>
</tr>
</tbody>
</nz-table>
</nz-modal>

@ -19,6 +19,10 @@ export class PriceListComponent implements OnInit {
searchForm: FormGroup; // 搜索框
validateForm: FormGroup; // 添加框
requestData = []; // 列表数据
priceArray = []; // 价格数据
priceTypeArray = []; // 支付类型数据
platformArray = []; // 充值平台数据
productPlatformArray = []; // 展示平台数据
total: number; // 页码
pageNum = 1; // 页码
@ -27,10 +31,13 @@ export class PriceListComponent implements OnInit {
isVisible = false;
id: number;
edit = false;
payPrice;
isVisibleGoods = false;
realPrice = 0;
goodsArray;
formatterPercent = (value: number): string => `${value == null ? 0 : value} %`;
parserPercent = (value: string): string => value.replace(' %', '');
constructor(
private form: FormBuilder,
private recharge: RechargeService,
@ -45,23 +52,53 @@ export class PriceListComponent implements OnInit {
ngOnInit(): void {
this.init();
this.getInitData();
}
// 获取初始化数据
private getInitData(): void {
// 获取价格数据
this.common.getDictionary('RECHARGE_AMOUNT ', data => {
this.priceArray = data['return_data'];
});
// 获取支付类型
this.common.getDictionary('PAY_TYPE ', data => {
this.priceTypeArray = data['return_data'];
});
// 获取充值平台
this.common.getDictionary('RECHARGE_PLATFORM ', data => {
this.platformArray = data['return_data'];
});
// 获取展示平台
this.common.getDictionary('SHOW_PLATFORM ', data => {
this.productPlatformArray = data['return_data'];
});
}
public init(): void {
this.searchForm = this.form.group({
type: [null],
operatorType : [null],
rechargePlatform: [null],
rechargeType: [null],
showType: [null],
rechargeWay: [null],
status: [null],
});
this.validateForm = this.form.group({
type: [null, [Validators.required]],
showType: [null, [Validators.required]],
price: [null, [Validators.required]],
rechargeType: [null, [Validators.required]],
realPrice: [{value: null, disabled: true}, [Validators.required]],
discount: [null, [Validators.required]],
sort: [null, [Validators.required]],
// channel: [null, [Validators.required]],
integralDiscount: [0],
operatorType: [null, [Validators.required]],
rechargePrices: [null, [Validators.required]],
productPlatform: [null, [Validators.required]],
rechargeType: [null, [Validators.required]],
rechargePlatform: [null, [Validators.required]],
rechargeWay: [null, [Validators.required]],
payType: [null, [Validators.required]],
rechargePrice: [null],
payPrice: [null],
sort: [null],
goodsId: [null],
});
@ -98,6 +135,10 @@ export class PriceListComponent implements OnInit {
this.id = id;
this.edit = true;
this.recharge.findById(id, data => {
data['return_data']['productPlatform'] = data['return_data']['productPlatformString'].substring(0 , data['return_data']['productPlatformString'].length - 1).split(',');
data['return_data']['rechargePlatform'] = data['return_data']['rechargePlatform'].substring(1 , data['return_data']['rechargePlatform'].length - 1).split('-');
data['return_data']['payType'] = data['return_data']['productPayTypeString'].substring(0 , data['return_data']['productPayTypeString'].length - 1).split(',');
data['return_data']['rechargePrices'] = ['1'];
this.validateForm.patchValue(data['return_data']);
this.isVisible = true;
});
@ -108,17 +149,8 @@ export class PriceListComponent implements OnInit {
}
}
// 查看详情
public getDetail(id: number): void {
this.router.navigate(['/admin/company/company-detail'], {
queryParams: {
companyId: id
}
}).then(r => console.log(r));
}
handleOk(): void {
const wait = this.message.loading('提交中..', { nzDuration: 0 }).messageId;
// tslint:disable-next-line:forin
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsDirty();
@ -128,14 +160,15 @@ export class PriceListComponent implements OnInit {
return;
}
}
this.validateForm.value.realPrice = this.validateForm.value.price * this.validateForm.value.discount / 100;
if (this.edit) {
this.validateForm.value['id'] = this.id;
this.recharge.updatePrice(this.validateForm.value, data => {
if (data['return_code'] === '000000') {
this.message.remove(wait);
this.message.success('修改成功');
this.getRequest(false, this.searchForm.value);
this.validateForm.reset();
this.isVisible = false;
} else {
this.message.error(data['return_msg']);
@ -144,9 +177,11 @@ export class PriceListComponent implements OnInit {
} else {
this.recharge.insertPrice(this.validateForm.value, data => {
if (data['return_code'] === '000000') {
this.message.remove(wait);
this.message.success('添加成功');
this.getRequest(false, this.searchForm.value);
this.isVisible = false;
this.validateForm.reset();
} else {
this.message.error(data['return_msg']);
}
@ -156,35 +191,59 @@ export class PriceListComponent implements OnInit {
}
handleCancel(): void {
this.validateForm.reset();
this.isVisible = false;
}
handleCancelGoods(): void {
this.isVisibleGoods = false;
}
public getForbiddenUser(id, status: any): void {
const message = (status === 1 ? '是否禁用' : '是否启用');
public getForbiddenUser(idPost, status: any): void {
let statusPost;
let message;
this.common.showConfirm(message, data => {
if (data) {
this.recharge.onAndOffShelves(id, dataUser => {
if (dataUser['return_code'] === '000000') {
this.message.success('操作成功');
this.getRequest(false , this.searchForm.value);
switch (status) {
case 1:
statusPost = 2;
message = '是否售空';
break;
case 2:
statusPost = 1;
message = '是否上线';
break;
case 3:
statusPost = 1;
message = '是否上线';
break;
}
this.common.showConfirm(message, item => {
if (item) {
this.recharge.editPriceStatus( {
id: idPost,
status: statusPost
}, data => {
if (data['return_code'] === '000000') {
this.message.success('提交成功');
this.getRequest(false, this.searchForm.value);
} else {
this.message.error(dataUser['return_msg']);
this.message.error(data['return_msg']);
}
});
}
});
console.log(status);
console.log(statusPost);
console.log(message);
}
public getForbiddenUserD(id): void {
public getForbiddenUserD(idPost): void {
this.common.showConfirm('是否删除', item => {
if (item) {
this.recharge.deletePrice(id, data => {
this.recharge.editPriceStatus({
id: idPost,
status: 0
}, data => {
if (data['return_code'] === '000000') {
this.message.success('删除成功');
this.getRequest(false, this.searchForm.value);
@ -196,17 +255,9 @@ export class PriceListComponent implements OnInit {
});
}
public getMemberGoods(): void {
this.isVisibleGoods = true;
this.recharge.getMemberGoods(data => {
this.goodsArray = data['return_data']['data'];
});
public changePayType(e): void {
this.payPrice = this.validateForm.value['rechargePrice'] * e / 100;
}
public getPrice(): void {
this.realPrice = this.validateForm.value.price * this.validateForm.value.discount / 100;
}
}

@ -41,14 +41,19 @@ import {
CompanyAmountRecordTypePipe,
CompanyAmountRecordSourceTypePipe,
OilCardBindStatusPipe,
OilCardRecordTypePipe, OilCardRecordSourceTypePipe
OilCardRecordTypePipe,
OilCardRecordSourceTypePipe,
RechargePlatformPipe,
PriceStatusPipe,
GasStaffStatusPipe,
PayStatusPipe,
ChlidRechargeStatusPipe
} from './pipes';
import {OilCardStatusPipe} from "./pipes/oil-card/oil-card-status.pipe";
import { OilTypePipe } from './pipes/store/oil-type.pipe';
import {OilCardStatusPipe} from './pipes';
import {OilTypePipe} from './pipes/store/oil-type.pipe';
import {OilPriceTaskStatusPipe} from './pipes/gas-oil-price/oil-price-task-status.pipe';
import {OilPriceTaskExecutionTypePipe} from './pipes/gas-oil-price/oil-price-task-execution-type.pipe';
import {OilPriceTaskPriceTypePipe} from './pipes/gas-oil-price/oil-price-task-price-type.pipe';
const PIPES = [
TimesPipe,
@ -86,6 +91,15 @@ const PIPES = [
OilCardBindStatusPipe,
OilCardRecordTypePipe,
OilCardRecordSourceTypePipe,
GasStaffStatusPipe,
OilTypePipe,
RechargePlatformPipe,
PriceStatusPipe,
OilPriceTaskStatusPipe,
OilPriceTaskExecutionTypePipe,
OilPriceTaskPriceTypePipe,
PayStatusPipe,
ChlidRechargeStatusPipe,
];
@ -99,8 +113,6 @@ const PIPES = [
],
declarations: [
...PIPES,
OilTypePipe,
],
exports: [

@ -117,6 +117,16 @@ const routes: Routes = [
loadChildren: () => import('./admin/gz-sinopec/gz-sinopec.module').then(m => m.GzSinopecModule),
canActivate: [InitGuardService]
},
{
path: 'gas-staff',
loadChildren: () => import('./admin/gas-staff/gas-staff.module').then(m => m.GasStaffModule),
canActivate: [InitGuardService]
},
{
path: 'gas-oil-price',
loadChildren: () => import('./admin/gas-oil-price/gas-oil-price.module').then(m => m.GasOilPriceModule),
canActivate: [InitGuardService]
},
],
},
];

@ -0,0 +1,21 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'chlidRechargeStatus'
})
export class ChlidRechargeStatusPipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 101:
return '充值成功';
case 102:
return '充值中';
case 103:
return '充值失败';
case 104:
return '未充值';
}
}
}

@ -0,0 +1,17 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'oilPriceTaskExecutionType'
})
export class OilPriceTaskExecutionTypePipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 1:
return '立刻执行';
case 2:
return '定时执行';
}
}
}

@ -0,0 +1,19 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'oilPriceTaskPriceType'
})
export class OilPriceTaskPriceTypePipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 1:
return '国标价';
case 2:
return '油站价';
case 3:
return '优惠幅度';
}
}
}

@ -0,0 +1,17 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'oilPriceTaskStatus'
})
export class OilPriceTaskStatusPipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 1:
return '等待中';
case 2:
return '已执行';
}
}
}

@ -0,0 +1,19 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'gasStaffStatus'
})
export class GasStaffStatusPipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 0:
return '删除';
case 1:
return '正常';
case 2:
return '已禁用';
}
}
}

@ -32,3 +32,8 @@ export * from './oil-card/oil-card-status.pipe';
export * from './oil-card/oil-card-bind-status.pipe';
export * from './oil-card/oil-card-record-type.pipe';
export * from './oil-card/oil-card-record-source-type.pipe';
export * from './gas-staff/gas-staff-status.pipe';
export * from './recharge-price/recharge-platform.pipe';
export * from './recharge-price/price-status.pipe';
export * from './pay-status.pipe';
export * from './chlid-recharge-status.pipe';

@ -0,0 +1,23 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'payStatus'
})
export class PayStatusPipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 101:
return '待支付';
case 102:
return '已支付';
case 100:
return '已完成';
case 104:
return '已取消';
case 105:
return '已退款';
}
}
}

@ -1,21 +1,26 @@
import { Pipe, PipeTransform } from '@angular/core';
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'rechargePayType'
name: 'rechargePayType'
})
export class RechargePayTypePipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 1:
return '微信';
case 2:
return '工会卡';
case 3:
return '积分';
case 4:
return '银联';
transform(value: number): string {
switch (value) {
case 1:
return '支付宝';
case 2:
return '微信';
case 3:
return '汇联通工会卡';
case 4:
return '银联';
case 5:
return '银联分期';
case null:
return '积分抵扣';
}
}
}
}

@ -8,11 +8,11 @@ export class RechargePricePipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 1:
return '电信充值';
return '电信运营商';
case 2:
return '移动充值';
return '移动运营商';
case 3:
return '联通充值';
return '联通运营商';
}
}

@ -0,0 +1,19 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'priceStatus'
})
export class PriceStatusPipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 1:
return '上线中';
case 2:
return '已售空';
case 3:
return '编辑中';
}
}
}

@ -0,0 +1,23 @@
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'rechargePlatform'
})
export class RechargePlatformPipe implements PipeTransform {
transform(value: string): unknown {
const array = value.split('-');
let string = '';
for (const i of array) {
if (Number(i) === 1) {
string = string + '尖椒,';
}
if (Number(i) === 2) {
string = string + '龙阅,';
}
}
return string.substring(0 , string.length - 1);
}
}

@ -7,18 +7,14 @@ export class RechargeStatusPipe implements PipeTransform {
transform(value: number): string {
switch (value) {
case 1:
return '待支付';
case 2:
return '已支付';
case 3:
return '已完成';
case 4:
return '已退款';
case 5:
return '已取消';
case 6:
return '退款中';
case 201:
return '充值中';
case 202:
return '充值成功';
case 203:
return '充值失败';
case 204:
return '充值中';
}
}

@ -6,49 +6,51 @@ import {environment} from '../../environments/environment';
import {HttpClient} from '@angular/common/http';
@Injectable({
providedIn: 'root'
providedIn: 'root'
})
export class CommonsService {
constructor(
private storage: LocalStorageService,
private modalService: NzModalService, // 对话框
private http: HttpClient,
private notification: NzNotificationService
) { }
constructor(
private storage: LocalStorageService,
private modalService: NzModalService, // 对话框
private http: HttpClient,
private notification: NzNotificationService
) {
}
/**
* GET请求参数 key1=value1&key2=value2
* @param object
*/
getWhereCondition(object: object): string {
let str = '';
for (const i in object) {
if (object[i] != null && object[i] !== '') {
if (str === '') {
str = i + '=' + object[i];
} else {
str += '&' + i + '=' + object[i];
/**
* GET请求参数 key1=value1&key2=value2
* @param object
*/
getWhereCondition(object: object): string {
let str = '';
for (const i in object) {
if (object[i] != null && object[i] !== '') {
if (str === '') {
str = i + '=' + object[i];
} else {
str += '&' + i + '=' + object[i];
}
}
}
}
return str;
}
return str;
}
/**
*
* @param btnCode
*/
public isBtnCompetence(btnCode: string): boolean {
let buttonList = [];
buttonList = this.storage.get(DATA).buttonList;
if (buttonList != null && buttonList.length > 0) {
if (buttonList.find(b => b.permissionCode === btnCode) != null) {
return true;
}
/**
*
* @param btnCode
*/
public isBtnCompetence(btnCode: string): boolean {
let buttonList = [];
buttonList = this.storage.get(DATA).buttonList;
if (buttonList != null && buttonList.length > 0) {
if (buttonList.find(b => b.permissionCode === btnCode) != null) {
return true;
}
}
return false;
}
return false;
}
/**
*
@ -117,6 +119,26 @@ export class CommonsService {
});
}
/**
*
* @param callBack
*/
public getProvinceList(callBack) {
this.http.get(environment.baseUrl + 'common/getProvinceList').subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getGasSelectList(callBack) {
this.http.get(environment.baseUrl + 'highGas/getGasSelectList').subscribe(data => {
callBack(data);
});
}
/**
*
@ -191,168 +213,179 @@ export class CommonsService {
});
}
/**
*
* timestamp: 时间戳
* formatformatArr里保持一致
*/
public formatTime(timestamp: number, format: string) {
/**
*
* timestamp: 时间戳
* formatformatArr里保持一致
*/
public formatTime(timestamp: number, format: string) {
const formatArr = ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss'];
const returnArr = [];
const date = new Date(timestamp);
const formatArr = ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss'];
const returnArr = [];
const date = new Date(timestamp);
returnArr.push(date.getFullYear());
returnArr.push(this.formatNumber(date.getMonth() + 1));
returnArr.push(this.formatNumber(date.getDate()));
returnArr.push(date.getFullYear());
returnArr.push(this.formatNumber(date.getMonth() + 1));
returnArr.push(this.formatNumber(date.getDate()));
returnArr.push(this.formatNumber(date.getHours()));
returnArr.push(this.formatNumber(date.getMinutes()));
returnArr.push(this.formatNumber(date.getSeconds()));
returnArr.push(this.formatNumber(date.getHours()));
returnArr.push(this.formatNumber(date.getMinutes()));
returnArr.push(this.formatNumber(date.getSeconds()));
// tslint:disable-next-line:forin
for (const i in returnArr) {
format = format.replace(formatArr[i], returnArr[i]);
// tslint:disable-next-line:forin
for (const i in returnArr) {
format = format.replace(formatArr[i], returnArr[i]);
}
return format;
}
return format;
}
// 数据转化
formatNumber(n) {
n = n.toString();
return n[1] ? n : '0' + n;
}
// 数据转化
formatNumber(n) {
n = n.toString();
return n[1] ? n : '0' + n;
}
/**
* Notification通知提醒框
*
* @param type
* @param title
* @param content
*/
public createNotification(type: string , title: string , content: string): void {
this.notification.create(
type,
title,
content
);
}
/**
* Notification通知提醒框
*
* @param type
* @param title
* @param content
*/
public createNotification(type: string, title: string, content: string): void {
this.notification.create(
type,
title,
content
);
}
/**
* key查询value
*
* @param value string
* @param object object
* @param callback
*/
public positionKeyValue<T>(value: string , object: Array<any> , callback): void {
// tslint:disable-next-line:forin
for (const i in object) {
if (object[i].value === value) {
callback(object[i].label);
} else {
this.positionKeyValue(value , object[i].children , callback);
}
/**
* key查询value
*
* @param value string
* @param object object
* @param callback
*/
public positionKeyValue<T>(value: string, object: Array<any>, callback): void {
// tslint:disable-next-line:forin
for (const i in object) {
if (object[i].value === value) {
callback(object[i].label);
} else {
this.positionKeyValue(value, object[i].children, callback);
}
}
}
}
/**
*
*
* @param codeType
* @param codeValue value
* @param callback
*/
public getDictionaryByCodeTypeAndValue(codeType: string , codeValue: string , callback): any {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeTypeAndValue?codeType=' + codeType + '&codeValue=' + codeValue).subscribe( data => {
callback(data);
});
}
/**
*
*
* @param codeType
* @param codeValue value
* @param callback
*/
public getDictionaryByCodeTypeAndValue(codeType: string, codeValue: string, callback): any {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeTypeAndValue?codeType=' + codeType + '&codeValue=' + codeValue).subscribe(data => {
callback(data);
});
}
/**
*
*
* @param codeType
* @param codeValue value
* @param callback
*/
public getDictionaryByCodeTypeAndValuePromise(codeType: string , codeValue: string): any {
return new Promise(resolve => {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeTypeAndValue?codeType=' + codeType + '&codeValue=' + codeValue).subscribe(data => {
resolve(data['return_data']['codeName']);
});
});
}
/**
*
*
* @param codeType
* @param codeValue value
* @param callback
*/
public getDictionaryByCodeTypeAndValuePromise(codeType: string, codeValue: string): any {
return new Promise(resolve => {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeTypeAndValue?codeType=' + codeType + '&codeValue=' + codeValue).subscribe(data => {
resolve(data['return_data']['codeName']);
});
});
}
/**
*
* @param param
* @param callback
*/
public getHomeCompanyList(param: object, callback): any {
this.http.get(environment.baseUrl + 'common/getHomeCompanyList?' + this.getWhereCondition(param)).subscribe( data => {
callback(data);
});
}
public getHomeCompanyList(param: object, callback): any {
this.http.get(environment.baseUrl + 'common/getHomeCompanyList?' + this.getWhereCondition(param)).subscribe(data => {
callback(data);
});
}
/**
*
*
* @param params
* @param callBack
* @return data
*/
public editGasDiscountOilPrice(params: object, callBack) {
this.http.post(environment.baseUrl + 'highGasDiscountOilPrice/editGasDiscountOilPrice', params).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param params
* @param callBack
* @return data
*/
public editGasDiscountOilPrice(params: object, callBack) {
this.http.post(environment.baseUrl + 'highGasDiscountOilPrice/editGasDiscountOilPrice', params).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'highGasDiscountOilPrice/getList?' + this.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'highGasDiscountOilPrice/getList?' + this.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
* estateId
*
* @param id id
* @param callBack
*/
public getDetailById(id: number , callBack) {
this.http.get(environment.baseUrl + 'highGasDiscountOilPrice/getDetailById?id=' + id).subscribe(data => {
callBack(data);
});
}
/**
* estateId
*
* @param id id
* @param callBack
*/
public getDetailById(id: number, callBack) {
this.http.get(environment.baseUrl + 'highGasDiscountOilPrice/getDetailById?id=' + id).subscribe(data => {
callBack(data);
});
}
/**
* estateId
*
* @param id id
* @param callBack
*/
public delete(id: number , callBack) {
this.http.post(environment.baseUrl + 'highGasDiscountOilPrice/delete' , { id: id}).subscribe(data => {
callBack(data);
});
}
/**
* estateId
*
* @param id id
* @param callBack
*/
public delete(id: number, callBack) {
this.http.post(environment.baseUrl + 'highGasDiscountOilPrice/delete', {id: id}).subscribe(data => {
callBack(data);
});
}
/**
*
* @param param
* @param callback
*/
public getOrganizationList(param: object, callback): any {
this.http.get(environment.baseUrl + 'bsOrganization/getOrganizationList?' + this.getWhereCondition(param)).subscribe( data => {
callback(data);
});
}
/**
*
* @param param
* @param callback
*/
public getOrganizationList(param: object, callback): any {
this.http.get(environment.baseUrl + 'bsOrganization/getOrganizationList?' + this.getWhereCondition(param)).subscribe(data => {
callback(data);
});
}
/**
*
* @param param
* @param callback
*/
public getDictionaries(callback): any {
this.http.get(environment.baseUrl + 'bsOrganization/getOrganizationList').subscribe(data => {
callback(data);
});
}
}

@ -0,0 +1,99 @@
import { Injectable } from '@angular/core';
import {HttpClient} from '_@angular_common@9.0.7@@angular/common/http';
import {CommonsService} from './commons.service';
import {environment} from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class GasStaffService {
constructor(
private http: HttpClient,
private common: CommonsService
) { }
/**
*
*
* @param param
* @param callBack
*/
public addStaff(param: object, callBack) {
this.http.post(environment.baseUrl + 'gasStaff/addGasStaff', param).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param param
* @param callBack
*/
public updateStaff(param: object, callBack) {
this.http.post(environment.baseUrl + 'gasStaff/updateGasStaff', param).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param param
* @param callBack
*/
public disabled(param: object, callBack) {
this.http.post(environment.baseUrl + 'gasStaff/disabled', param).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param param
* @param callBack
*/
public recover(param: object, callBack) {
this.http.post(environment.baseUrl + 'gasStaff/recover', param).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param param
* @param callBack
*/
public delStaff(param: object, callBack) {
this.http.post(environment.baseUrl + 'gasStaff/delStaff', param).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param param
* @param callBack
*/
public getStaffDetail(staffId: number, callBack) {
this.http.get(environment.baseUrl + 'gasStaff/getStaffDetail?staffId=' + staffId).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param param
* @param callBack
*/
public getStaffList(param: object, callBack) {
this.http.get(environment.baseUrl + 'gasStaff/getStaffList?' + this.common.getWhereCondition(param)).subscribe(data => {
callBack(data);
});
}
}

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import {HttpClient} from '_@angular_common@9.0.7@@angular/common/http';
import {CommonsService} from './commons.service';
import {environment} from "../../environments/environment";
import {environment} from '../../environments/environment';
@Injectable({
providedIn: 'root'
@ -13,6 +13,18 @@ export class GasService {
private common: CommonsService
) { }
/**
*
*
* @param param
* @param callBack
*/
public getMerGasStatistical(param: object, callBack) {
this.http.post(environment.baseUrl + 'highGas/getMerGasStatistical', param).subscribe(data => {
callBack(data);
});
}
/**
*
*

@ -164,6 +164,19 @@ export class IndexService {
});
}
/**
* @Author Sum1Dream
* @methodName getGasStatistical
* @Description // 查询加油站统计
* @Date 10:00 2022/5/18
* @Param
*/
public getMerGasStatistical(callBack) {
this.http.post(environment.baseUrl + 'highGas/getMerGasStatistical', null).subscribe(data => {
callBack(data);
});
}
/**
* @Author Sum1Dream
* @methodName getAccountRecordList

@ -14,3 +14,4 @@ export const RESUME_STATUS = 'resume_status';
export const RESUME_STATUS_NAME = 'resume_status_name';
export const LOGINTYPE = 'loginType'; // 1 pc端登录 2 后台登录
export const COMPANYMENU = 'companyMenu'; // 1 公司路由
export const ALL_DICTIONARY = 'dictionary'; // 数据字典

@ -0,0 +1,28 @@
import { Injectable } from '@angular/core';
import {HttpClient} from '_@angular_common@9.0.7@@angular/common/http';
import {CommonsService} from './commons.service';
import {environment} from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class MerAmountService {
constructor(
private http: HttpClient,
private common: CommonsService
) { }
/**
*
*
* @param params
* @param callBack
* @return data
*/
public recharge(params: object, callBack) {
this.http.post(environment.baseUrl + 'merAccount/recharge', params).subscribe(data => {
callBack(data);
});
}
}

@ -0,0 +1,53 @@
import { Injectable } from '@angular/core';
import {HttpClient} from '_@angular_common@9.0.7@@angular/common/http';
import {CommonsService} from '../commons.service';
import {environment} from '../../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class OilPriceOfficialService {
constructor(
private http: HttpClient,
private common: CommonsService
) { }
/**
*
*
* @param paramsObject
* @param callBack
*/
public updateOilPriceOfficial(paramsObject: object, callBack) {
this.http.post(environment.baseUrl + 'gasOilPriceOfficial/updateOilPriceOfficial', paramsObject).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getOilPriceOfficialList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'gasOilPriceOfficial/getOilPriceOfficialList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getOilPriceOfficialDetail(regionId: number, oilNo: number, callBack) {
this.http.get(environment.baseUrl + 'gasOilPriceOfficial/getOilPriceOfficialDetail?regionId=' + regionId + '&oilNo=' + oilNo).subscribe(data => {
callBack(data);
});
}
}

@ -0,0 +1,64 @@
import { Injectable } from '@angular/core';
import {HttpClient} from '_@angular_common@9.0.7@@angular/common/http';
import {CommonsService} from '../commons.service';
import {environment} from '../../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class OilPriceTaskService {
constructor(
private http: HttpClient,
private common: CommonsService
) { }
/**
*
*
* @param paramsObject
* @param callBack
*/
public batchAddTask(paramsObject: object, callBack) {
this.http.post(environment.baseUrl + 'gasOilPriceTask/batchAddTask', paramsObject).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param id id
* @param callBack
*/
public delTask(id: number, callBack) {
this.http.post(environment.baseUrl + 'gasOilPriceTask/delTask', { taskId: id }).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getTaskDetail(id: number, callBack) {
this.http.get(environment.baseUrl + 'gasOilPriceTask/getTaskDetail?taskId=' + id).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getTaskList(param: object, callBack) {
this.http.get(environment.baseUrl + 'gasOilPriceTask/getTaskList?' + this.common.getWhereCondition(param)).subscribe(data => {
callBack(data);
});
}
}

@ -1,251 +1,263 @@
import { Injectable } from '@angular/core';
import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {CommonsService} from './commons.service';
import {environment} from '../../environments/environment';
@Injectable({
providedIn: 'root'
providedIn: 'root'
})
export class RechargeService {
constructor(
private http: HttpClient,
private common: CommonsService
) {
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getListOutRechargePrice(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargePrice/getListOutRechargePrice?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
* @Author Sum1Dream
* @methodName deletePrice
* @Description //上下架
* @Date 15:03 2021/8/12
* @Param mod
**/
public onAndOffShelves(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargePrice/onAndOffShelves?id=' + id).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param params
* @param callBack
* @return data
*/
public insertPrice(params: object, callBack) {
this.http.post(environment.baseUrl + 'outRechargePrice/insertPrice', params).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param params
* @param callBack
* @return data
*/
public updatePrice(params: object, callBack) {
this.http.post(environment.baseUrl + 'outRechargePrice/updatePrice', params).subscribe(data => {
callBack(data);
});
}
/**
* id查询详情
*
* @param id id
* @param callBack
*/
public findById(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargePrice/findById?id=' + id).subscribe(data => {
callBack(data);
});
}
/**
* id查询详情
*
* @param id id
* @param callBack
*/
public deletePrice(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargePrice/deletePrice?id=' + id).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getOrderList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getOrderList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
* id查询详情
*
* @param id id
* @param callBack
*/
public getOrderById(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getOrderById?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* id完成订单
*
* @param id id
* @param callBack
*/
public getMobileRechargeByOrderId(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getMobileRechargeByOrderId?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* id完成退款
*
* @param id id
* @param callBack
*/
public orderToRefund(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/orderToRefund?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* @Author Sum1Dream
* @methodName orderToRefundPre
* @Description // 预约订单退款
* @Date 11:17 2021/11/23
* @Param [id: number, callBack]
*/
public orderToRefundPre(id: number, callBack) {
this.http.get(environment.baseUrl + 'highOrderPre/orderToRefund?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* 退
*
* @param id id
* @param callBack
*/
public postRefund(params: object, callBack) {
this.http.post(environment.baseUrl + 'highRefundAudit/insertRefundAudit', params).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param id id
* @param callBack
*/
public countOrder(callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/countOrder').subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getOrderCountList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getOrderCountList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public exportOrderListCount(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/exportOrderListCount?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public exportOrderList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/exportOrderList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getUserCountList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getUserCountList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public exportUserOrderListCount(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/exportUserOrderListCount?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param callBack
*/
public getMemberGoods(callBack) {
this.http.get(environment.baseUrl + 'telApi/getMemberGoods').subscribe(data => {
callBack(data);
});
}
constructor(
private http: HttpClient,
private common: CommonsService
) {
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getListOutRechargePrice(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargePrice/getListOutRechargePrice?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
* @Author Sum1Dream
* @methodName editPriceStatus
* @Description // 修改价格状态
* @Date 15:03 2021/8/12
* @Param mod
**/
public editPriceStatus(params: object, callBack) {
this.http.post(environment.baseUrl + 'outRechargePrice/editPriceStatus', params).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param params
* @param callBack
* @return data
*/
public insertPrice(params: object, callBack) {
this.http.post(environment.baseUrl + 'outRechargePrice/insertPrice', params).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param params
* @param callBack
* @return data
*/
public updatePrice(params: object, callBack) {
this.http.post(environment.baseUrl + 'outRechargePrice/updatePrice', params).subscribe(data => {
callBack(data);
});
}
/**
* id查询详情
*
* @param id id
* @param callBack
*/
public findById(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargePrice/findById?id=' + id).subscribe(data => {
callBack(data);
});
}
/**
* id查询详情
*
* @param id id
* @param callBack
*/
public deletePrice(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargePrice/deletePrice?id=' + id).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getOrderList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getOrderList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
* id查询详情
*
* @param id id
* @param callBack
*/
public getOrderById(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getOrderById?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* id完成订单
*
* @param id id
* @param callBack
*/
public getMobileRechargeByOrderId(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getMobileRechargeByOrderId?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* id完成退款
*
* @param id id
* @param callBack
*/
public orderToRefund(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/orderToRefund?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* @Author Sum1Dream
* @methodName orderToRefundPre
* @Description // 预约订单退款
* @Date 11:17 2021/11/23
* @Param [id: number, callBack]
*/
public orderToRefundPre(id: number, callBack) {
this.http.get(environment.baseUrl + 'highOrderPre/orderToRefund?orderId=' + id).subscribe(data => {
callBack(data);
});
}
/**
* 退
*
* @param id id
* @param callBack
*/
public postRefund(params: object, callBack) {
this.http.post(environment.baseUrl + 'highRefundAudit/insertRefundAudit', params).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param id id
* @param callBack
*/
public countOrder(callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/countOrder').subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getOrderCountList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getOrderCountList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public exportOrderListCount(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/exportOrderListCount?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public exportOrderList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/exportOrderList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public getUserCountList(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getUserCountList?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param paramsObject
* @param callBack
*/
public exportUserOrderListCount(paramsObject: object, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/exportUserOrderListCount?' + this.common.getWhereCondition(paramsObject)).subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param callBack
*/
public getMemberGoods(callBack) {
this.http.get(environment.baseUrl + 'telApi/getMemberGoods').subscribe(data => {
callBack(data);
});
}
/**
* @Author Sum1Dream
* @methodName orderToRefundPre
* @Description // 预约订单退款
* @Date 11:17 2021/11/23
* @Param [id: number, callBack]
*/
public getChildOrder(id: number, callBack) {
this.http.get(environment.baseUrl + 'outRechargeOrder/getChildOrder?orderId=' + id).subscribe(data => {
callBack(data);
});
}
}

@ -4,10 +4,10 @@
export const environment = {
production: false,
/* baseUrl: 'http://localhost:9302/brest/', // 测试环境服务器地址(请求数据地址)
imageUrl: 'http://localhost:9302/filesystem/',*/
baseUrl: 'https://hsgcs.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址)
imageUrl: 'https://hsgcs.dctpay.com/filesystem/',
baseUrl: 'http://localhost:9302/brest/', // 测试环境服务器地址(请求数据地址)
imageUrl: 'http://localhost:9302/filesystem/',
/* baseUrl: 'https://hsg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址)
imageUrl: 'https://hsg.dctpay.com/filesystem/',*/
key: 'https://hsgcs.dctpay.com/phone-recharge-H5/index.html?codeValue=',
inviteUrl: 'https://hsgcs.dctpay.com/wx/?action=ic&id=',
};

Loading…
Cancel
Save