提交话费修改

pull/1/head
袁野 3 years ago
parent 929b9e8f7d
commit a0e126f447
  1. 10
      src/app/admin/login/login/login.component.ts
  2. 316
      src/app/admin/navigation/navigation.component.ts
  3. 211
      src/app/admin/recharge-order/price-list/price-list.component.html
  4. 70
      src/app/admin/recharge-order/price-list/price-list.component.ts
  5. 6
      src/app/pipes/recharge-price.pipe.ts
  6. 680
      src/app/services/commons.service.ts
  7. 1
      src/app/services/local-storage.namespace.ts

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

@ -1,6 +1,14 @@
import { Component, OnInit } from '@angular/core';
import {Component, OnInit} from '@angular/core';
import {LocalStorageService} from '../../services/local-storage.service';
import {DATA, ROUTENAME, MENUNAME, CHILDMENUNAME, INIT_FLAG, ADMIN_INFO_OBJECT, TOKEN} from '../../services/local-storage.namespace';
import {
DATA,
ROUTENAME,
MENUNAME,
CHILDMENUNAME,
INIT_FLAG,
ADMIN_INFO_OBJECT,
TOKEN
} from '../../services/local-storage.namespace';
import {LoginService} from '../../services/login.service';
import {NzMessageService, NzModalService} from 'ng-zorro-antd';
import {Router} from '@angular/router';
@ -14,162 +22,172 @@ import {HttpClient} from '@angular/common/http';
import {CompanyTwoPwdService} from '../../services/company-two-pwd.service';
@Component({
selector: 'app-navigation',
templateUrl: './navigation.component.html',
styleUrls: ['./navigation.component.less']
selector: 'app-navigation',
templateUrl: './navigation.component.html',
styleUrls: ['./navigation.component.less']
})
export class NavigationComponent implements OnInit {
visibleUpdatePwd = false; // 修改密码抽屉
validateForm: FormGroup; // 定义表单
passwordVisible = false;
isCollapsed = false;
userInfo: any;
menuList: any;
routeName: string;
switchValue = false;
constructor(
private storage: LocalStorageService,
private loginService: LoginService,
private message: NzMessageService,
private commonsService: CommonsService,
private companyTwoPwdService: CompanyTwoPwdService,
private http: HttpClient, // http请求
private iconService: IconService,
private modal: NzModalService,
private fb: FormBuilder, // 表单
private router: Router,
) { }
ngOnInit(): void {
this.validateForm = this.fb.group({
oldPassword: [null, [Validators.required, ValidatorsService.minLength(6), ValidatorsService.maxLength(16)]],
newPassword: [null, [Validators.required, ValidatorsService.minLength(6), ValidatorsService.maxLength(16)]],
checkNewPassword: [null, [Validators.required, this.checkPwd]],
});
this.routeName = this.storage.get(ROUTENAME) == null ? 'index' : this.storage.get(ROUTENAME);
this.userInfo = this.storage.getList(ADMIN_INFO_OBJECT);
this.commonsService.mappingSysNameOl('RECHARGE', data => {
this.switchValue = data['return_data']['codeValue'] === '1';
});
this.menuList = this.storage.getList(ADMIN_INFO_OBJECT)['menuList']; // 定义菜单数据
}
public activeLi(routeName): void {
this.routeName = routeName;
this.storage.set(ROUTENAME, routeName);
}
// 菜单姓名
public getRouteName(menuName , childMenuName): void {
this.storage.set(MENUNAME, menuName);
this.storage.set(CHILDMENUNAME, childMenuName);
}
// 登出
public loginOut(): void {
this.loginService.loginOut(data => {
if (data.return_code === '000000') {
this.storage.set(ADMIN_INFO_OBJECT, null);
this.storage.set(INIT_FLAG, false);
this.storage.set(TOKEN, null);
this.router.navigateByUrl('/adminLogin').then();
} else {
this.message.warning(data.return_msg);
}
});
}
// 返回
public getBack(): void {
history.back();
}
clickSwitch(): void {
this.switchValue = !this.switchValue;
this.commonsService.updateDictionary('RECHARGE' , this.switchValue === true ? '1' : '0' , data => {
if (data['return_code'] === '000000') {
this.message.success(data['return_data']);
} else {
this.message.error(data['return_msg']);
}
});
}
// 打开抽屉
openUpdatePwd(): void {
this.visibleUpdatePwd = true;
}
// 关闭抽屉
closeUser(): void {
this.visibleUpdatePwd = false;
}
// 提交表单
submitForm(value): void {
// 表单验证
// tslint:disable-next-line:forin
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsDirty();
this.validateForm.controls[i].updateValueAndValidity();
visibleUpdatePwd = false; // 修改密码抽屉
validateForm: FormGroup; // 定义表单
passwordVisible = false;
isCollapsed = false;
userInfo: any;
menuList: any;
routeName: string;
switchValue = false;
constructor(
private storage: LocalStorageService,
private loginService: LoginService,
private message: NzMessageService,
private commonsService: CommonsService,
private companyTwoPwdService: CompanyTwoPwdService,
private http: HttpClient, // http请求
private iconService: IconService,
private modal: NzModalService,
private common: CommonsService,
private fb: FormBuilder, // 表单
private router: Router,
) {
}
if (this.validateForm.status == null || this.validateForm.status !== 'VALID') {
this.modal.info({
nzTitle: '提示',
nzContent: '请正确填写必填信息',
});
return;
ngOnInit(): void {
this.validateForm = this.fb.group({
oldPassword: [null, [Validators.required, ValidatorsService.minLength(6), ValidatorsService.maxLength(16)]],
newPassword: [null, [Validators.required, ValidatorsService.minLength(6), ValidatorsService.maxLength(16)]],
checkNewPassword: [null, [Validators.required, this.checkPwd]],
});
this.routeName = this.storage.get(ROUTENAME) == null ? 'index' : this.storage.get(ROUTENAME);
this.userInfo = this.storage.getList(ADMIN_INFO_OBJECT);
this.commonsService.mappingSysNameOl('RECHARGE', data => {
this.switchValue = data['return_data']['codeValue'] === '1';
});
this.menuList = this.storage.getList(ADMIN_INFO_OBJECT)['menuList']; // 定义菜单数据
this.common.getDictionaries(data => {
if (data['return_code'] === '000000') {
console.log(data);
} else {
this.message.error(data['return_msg']);
}
});
}
public activeLi(routeName): void {
this.routeName = routeName;
this.storage.set(ROUTENAME, routeName);
}
// 菜单姓名
public getRouteName(menuName, childMenuName): void {
this.storage.set(MENUNAME, menuName);
this.storage.set(CHILDMENUNAME, childMenuName);
}
const timeNum = new Date().getTime();
const signStr = 'userId=' + this.storage.get(ADMIN_INFO_OBJECT)['secUser'].id + '&newPassword=' + value.newPassword + '&nonceStr=' + timeNum;
// 定义请求数据
const params = {
userId: this.storage.get(ADMIN_INFO_OBJECT)['secUser'].id,
oldPassword: value.oldPassword,
newPassword: value.newPassword,
nonceStr: timeNum,
sign: String(Md5.hashStr(signStr)).toLocaleUpperCase(),
};
this.http.post(environment.baseUrl + '/secUser/sendUserPass', params).subscribe(data => {
if (data['return_code'] === '000000') {
this.modal.success({
nzTitle: '提示',
nzContent: '密码修改成功',
nzOkText: '重新登录',
nzOkType: 'primary',
nzOnOk: () => this.loginOut()
// 登出
public loginOut(): void {
this.loginService.loginOut(data => {
if (data.return_code === '000000') {
this.storage.set(ADMIN_INFO_OBJECT, null);
this.storage.set(INIT_FLAG, false);
this.storage.set(TOKEN, null);
this.router.navigateByUrl('/adminLogin').then();
} else {
this.message.warning(data.return_msg);
}
});
} else {
this.modal.warning({
nzTitle: '提示',
nzContent: data['return_msg'],
nzOkText: '取消',
nzOkType: 'primary',
}
// 返回
public getBack(): void {
history.back();
}
clickSwitch(): void {
this.switchValue = !this.switchValue;
this.commonsService.updateDictionary('RECHARGE', this.switchValue === true ? '1' : '0', data => {
if (data['return_code'] === '000000') {
this.message.success(data['return_data']);
} else {
this.message.error(data['return_msg']);
}
});
}
setTimeout(() => {
}, 1000);
}, error => {
this.message.create('error', `未知错误!`);
});
}
/**
*
* @param control
*/
checkPwd = (control: FormControl): { [s: string]: boolean } => {
if (!control.value) {
return { required: true };
} else if (control.value !== this.validateForm.controls.newPassword.value) {
return { confirm: true, error: true };
}
return {};
}
// 打开抽屉
openUpdatePwd(): void {
this.visibleUpdatePwd = true;
}
// 关闭抽屉
closeUser(): void {
this.visibleUpdatePwd = false;
}
// 提交表单
submitForm(value): void {
// 表单验证
// tslint:disable-next-line:forin
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsDirty();
this.validateForm.controls[i].updateValueAndValidity();
}
if (this.validateForm.status == null || this.validateForm.status !== 'VALID') {
this.modal.info({
nzTitle: '提示',
nzContent: '请正确填写必填信息',
});
return;
}
const timeNum = new Date().getTime();
const signStr = 'userId=' + this.storage.get(ADMIN_INFO_OBJECT)['secUser'].id + '&newPassword=' + value.newPassword + '&nonceStr=' + timeNum;
// 定义请求数据
const params = {
userId: this.storage.get(ADMIN_INFO_OBJECT)['secUser'].id,
oldPassword: value.oldPassword,
newPassword: value.newPassword,
nonceStr: timeNum,
sign: String(Md5.hashStr(signStr)).toLocaleUpperCase(),
};
this.http.post(environment.baseUrl + '/secUser/sendUserPass', params).subscribe(data => {
if (data['return_code'] === '000000') {
this.modal.success({
nzTitle: '提示',
nzContent: '密码修改成功',
nzOkText: '重新登录',
nzOkType: 'primary',
nzOnOk: () => this.loginOut()
});
} else {
this.modal.warning({
nzTitle: '提示',
nzContent: data['return_msg'],
nzOkText: '取消',
nzOkType: 'primary',
});
}
setTimeout(() => {
}, 1000);
}, error => {
this.message.create('error', `未知错误!`);
});
}
/**
*
* @param control
*/
checkPwd = (control: FormControl): { [s: string]: boolean } => {
if (!control.value) {
return {required: true};
} else if (control.value !== this.validateForm.controls.newPassword.value) {
return {confirm: true, error: true};
}
return {};
}
}

@ -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="showType" 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,30 @@
</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="rechargeWay" 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>
@ -78,11 +101,11 @@
<thead nzSingleSort>
<tr>
<th>编号</th>
<th>金额类型</th>
<th>充值类型</th>
<th>充值金额</th>
<th>折扣比例</th>
<th>支付金额</th>
<th>展示区域</th>
<!-- <th>供货商编号</th>-->
<!-- <th>商品ID</th>-->
<th>商品ID</th>
<th>充值金额</th>
<th>支付金额</th>
<th>创建时间</th>
@ -92,7 +115,10 @@
<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.operatorType | rechargePrice}}</td>
<td>{{data.rechargeType== 1? '快充':'慢充'}}</td>
<td>{{data.showType | showType}}</td>
<td>{{data.price}}</td>
@ -100,7 +126,7 @@
<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)='getForbiddenUser(data.id , data.status)'>{{data.status === 1 ? '售空': '禁用'}}</a>
<a style="margin-left: 20px;" (click)="getForbiddenUserD(data.id)">删除</a>
</td>
</tbody>
@ -109,103 +135,112 @@
<nz-modal [(nzVisible)]="isVisible" nzTitle="金额编辑" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()">
<form nz-form [formGroup]="validateForm" class="login-form">
<nz-form-item *ngIf="!edit">
<nz-form-item>
<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>
</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="请选择运营商!">
<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-label [nzSpan]="6" nzRequired>充值类型</nz-form-label>
<nz-form-control [nzSpan]="16" nzErrorTip="请选择充值类型!">
<nz-select nzShowSearch nzAllowClear formControlName="rechargeType" nzPlaceHolder="请选择充值类型">
<nz-option nzLabel="快充" [nzValue] ="1"></nz-option>
<nz-option nzLabel="慢充" [nzValue]="2"></nz-option>
<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="请输入商品排序!">
<input [type]="'number'" nz-input formControlName="sort" />
<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="请输入供货商编号!">-->
<!-- <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-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="请选择充值类型">
<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-input-group nzSuffix="%" >
<input [type]="'number'" (ngModelChange)="getPrice()" nz-input formControlName="discount" />
</nz-input-group>
<nz-input-number
style="width: 200px"
formControlName="discount"
[nzMin]="1"
[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="RMB" nzPrefix="¥">
<input [type]="'number'" nz-input [(ngModel)]="realPrice" formControlName="realPrice" />
</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]="1"
[nzMax]="100"
[nzStep]="1"
[nzPrecision]="2"
nzPrecisionMode="cut"
nzPlaceHolder="请输入积分支付比例!"
[nzFormatter]="formatterPercent"
[nzParser]="parserPercent"
></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; // 页码
@ -30,7 +34,10 @@ export class PriceListComponent implements OnInit {
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,49 @@ 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: [null, [Validators.required]],
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]],
});
@ -128,7 +161,6 @@ 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;
@ -136,6 +168,7 @@ export class PriceListComponent implements OnInit {
if (data['return_code'] === '000000') {
this.message.success('修改成功');
this.getRequest(false, this.searchForm.value);
this.validateForm.reset();
this.isVisible = false;
} else {
this.message.error(data['return_msg']);
@ -147,6 +180,7 @@ export class PriceListComponent implements OnInit {
this.message.success('添加成功');
this.getRequest(false, this.searchForm.value);
this.isVisible = false;
this.validateForm.reset();
} else {
this.message.error(data['return_msg']);
}
@ -159,9 +193,7 @@ export class PriceListComponent implements OnInit {
this.isVisible = false;
}
handleCancelGoods(): void {
this.isVisibleGoods = false;
}
public getForbiddenUser(id, status: any): void {
const message = (status === 1 ? '是否禁用' : '是否启用');
@ -196,16 +228,6 @@ export class PriceListComponent implements OnInit {
});
}
public getMemberGoods(): void {
this.isVisibleGoods = true;
this.recharge.getMemberGoods(data => {
this.goodsArray = data['return_data']['data'];
});
}
public getPrice(): void {
this.realPrice = this.validateForm.value.price * this.validateForm.value.discount / 100;
}

@ -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 '联通运营商';
}
}

@ -6,353 +6,365 @@ 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
) { }
/**
* 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];
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];
}
}
}
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;
}
}
return false;
}
/**
*
* @param message
* @param callback
*/
public showConfirm(message, callback) {
this.modalService.confirm({
nzTitle: message,
nzOkText: '是',
nzOkType: 'danger',
nzOnOk: () => callback(true),
nzCancelText: '否',
});
}
/**
* estateId
*
* @param estateId id
* @param callBack
*/
public getMallCategoryTree(estateId: number, callBack) {
this.http.get(environment.baseUrl + 'categoryEstates/getMallCategoryTree?estateId=' + estateId).subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getParentInfosByRegionId(regionId: number, callBack) {
this.http.get(environment.baseUrl + 'common/getParentInfosByRegionId?regionId=' + regionId).subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getAllRegion(callBack) {
this.http.get(environment.baseUrl + 'common/getAllProvinceAndCity').subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getAllProvinceAndCityRegion(callBack) {
this.http.get(environment.baseUrl + 'common/getAllProvinceAndCityRegion').subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getAllIndustry(callBack) {
this.http.get(environment.baseUrl + 'secCompanyIndustry/findIndustryTree').subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param object
*/
public getUniqueObject<T>(object: any): any {
const map = {};
// 1、把数组元素作为对象的键存起来(这样就算有重复的元素,也会相互替换掉)
object.forEach(item => map[JSON.stringify(item)] = item);
// 2、再把对象的值抽成一个数组返回即为不重复的集合
return Object.keys(map).map(key => map[key]) as T[];
}
/**
* String
*
* @param name String
*/
public getStringIsNull<T>(name: string): boolean {
if (name == null) {
return true;
}
}
if (name === '') {
return true;
}
}
/**
*
*
* @param phone String
*/
public verifyPhone<T>(phone: string): boolean {
return phone.length === 11;
}
/**
*
*
* @param codeType
* @param callback
*/
public getDictionary(codeType: string, callback): any {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeType?codeType=' + codeType).subscribe(data => {
callback(data);
});
}
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;
}
public mappingSysNameOl(codeType: string, callback): any {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeTypeOl?codeType=' + codeType).subscribe(data => {
callback(data);
});
}
return false;
}
/**
*
* @param message
* @param callback
*/
public showConfirm(message , callback) {
this.modalService.confirm({
nzTitle: message,
nzOkText: '是',
nzOkType: 'danger',
nzOnOk: () => callback(true),
nzCancelText: '否',
});
}
/**
* estateId
*
* @param estateId id
* @param callBack
*/
public getMallCategoryTree(estateId: number , callBack) {
this.http.get(environment.baseUrl + 'categoryEstates/getMallCategoryTree?estateId=' + estateId).subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getParentInfosByRegionId(regionId: number, callBack) {
this.http.get(environment.baseUrl + 'common/getParentInfosByRegionId?regionId=' + regionId).subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getAllRegion(callBack) {
this.http.get(environment.baseUrl + 'common/getAllProvinceAndCity').subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getAllProvinceAndCityRegion(callBack) {
this.http.get(environment.baseUrl + 'common/getAllProvinceAndCityRegion').subscribe(data => {
callBack(data);
});
}
/**
*
* @param callBack
*/
public getAllIndustry(callBack) {
this.http.get(environment.baseUrl + 'secCompanyIndustry/findIndustryTree').subscribe(data => {
callBack(data);
});
}
/**
*
*
* @param object
*/
public getUniqueObject<T>(object: any): any {
const map = {};
// 1、把数组元素作为对象的键存起来(这样就算有重复的元素,也会相互替换掉)
object.forEach(item => map[JSON.stringify(item)] = item);
// 2、再把对象的值抽成一个数组返回即为不重复的集合
return Object.keys(map).map(key => map[key]) as T[];
}
/**
* String
*
* @param name String
*/
public getStringIsNull<T>(name: string): boolean {
if (name == null) {
return true;
}
if (name === '') {
return true;
}
}
/**
*
*
* @param phone String
*/
public verifyPhone<T>(phone: string): boolean {
return phone.length === 11;
}
/**
*
*
* @param codeType
* @param callback
*/
public getDictionary(codeType: string , callback): any {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeType?codeType=' + codeType).subscribe( data => {
callback(data);
});
}
public mappingSysNameOl(codeType: string , callback): any {
this.http.get(environment.baseUrl + '/common/getDictionaryByCodeTypeOl?codeType=' + codeType).subscribe( data => {
callback(data);
});
}
public updateDictionary(codeType: string , codeValue: string , callback): any {
this.http.get(environment.baseUrl + '/common/updateDictionary?codeType=' + codeType + '&codeValue=' + codeValue).subscribe( data => {
callback(data);
});
}
/**
*
*
*
* @param callback
*/
getAllJobType(callback) {
this.http.get('assets/json/jobType.json').subscribe( data => {
callback(data);
});
}
/**
*
* timestamp: 时间戳
* formatformatArr里保持一致
*/
public formatTime(timestamp: number, format: string) {
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(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]);
public updateDictionary(codeType: string, codeValue: string, callback): any {
this.http.get(environment.baseUrl + '/common/updateDictionary?codeType=' + codeType + '&codeValue=' + codeValue).subscribe(data => {
callback(data);
});
}
return format;
}
// 数据转化
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
);
}
/**
* 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 callback
*/
getAllJobType(callback) {
this.http.get('assets/json/jobType.json').subscribe(data => {
callback(data);
});
}
/**
*
* timestamp: 时间戳
* formatformatArr里保持一致
*/
public formatTime(timestamp: number, format: string) {
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(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]);
}
return format;
}
// 数据转化
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
);
}
/**
* 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 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 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 param
* @param callback
*/
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 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 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);
});
}
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 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 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 getDictionaries(callback): any {
this.http.get(environment.baseUrl + 'bsOrganization/getOrganizationList').subscribe(data => {
callback(data);
});
}
}

@ -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'; // 数据字典

Loading…
Cancel
Save