parent
218762cf7b
commit
020a1ce94d
@ -0,0 +1,162 @@ |
|||||||
|
<!-- start 面包屑 --> |
||||||
|
<app-breadcrumb></app-breadcrumb> |
||||||
|
<!-- end 面包屑 --> |
||||||
|
|
||||||
|
<!--条件搜索--> |
||||||
|
<div class="inner-content"> |
||||||
|
<form nz-form [formGroup]="searchForm" (ngSubmit)="getRequest(true , searchForm.value)"> |
||||||
|
<div nz-row> |
||||||
|
<div nz-col nzSpan="8"> |
||||||
|
<nz-form-item> |
||||||
|
<nz-form-label [nzSpan]="6">产品名称</nz-form-label> |
||||||
|
<nz-form-control [nzSpan]="16"> |
||||||
|
<input nz-input formControlName="name"/> |
||||||
|
</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>共计 {{total}} 条数据</span> |
||||||
|
<div class="operating-button"> |
||||||
|
<button nz-button nzType="primary" class="right-btn" (click)="getEdit()"><i nz-icon nzType="plus" nzTheme="outline"></i>添加</button> |
||||||
|
</div> |
||||||
|
<nz-table |
||||||
|
class="table" |
||||||
|
#ajaxTable |
||||||
|
nzShowSizeChanger |
||||||
|
[nzFrontPagination]="false" |
||||||
|
[nzData]="requestData" |
||||||
|
[nzLoading]="loading" |
||||||
|
[nzTotal]="total" |
||||||
|
[(nzPageIndex)]="pageNum" |
||||||
|
[(nzPageSize)]="pageSize" |
||||||
|
[nzScroll]="{ x: '1200px' }" |
||||||
|
(nzPageIndexChange)="getRequest(false , searchForm.value)" |
||||||
|
(nzPageSizeChange)="getRequest(false , searchForm.value)"> |
||||||
|
<thead nzSingleSort> |
||||||
|
<tr> |
||||||
|
<th nzWidth="60px">编号</th> |
||||||
|
<th nzWidth="90px">产品名称</th> |
||||||
|
<th nzWidth="90px">产品编码</th> |
||||||
|
<th nzWidth="120px">成本价</th> |
||||||
|
<th nzWidth="120px">面值</th> |
||||||
|
<th nzWidth="120px">创建时间</th> |
||||||
|
<th nzRight nzWidth="80px">操作</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr *ngFor="let data of ajaxTable.data; let i = index"> |
||||||
|
<td>{{i + 1}}</td> |
||||||
|
<td>{{data.name}}</td> |
||||||
|
<td>{{data.productId}}</td> |
||||||
|
<td>{{data.costPrice + "RMB"}}</td> |
||||||
|
<td>{{data.price + "RMB"}}</td> |
||||||
|
<td>{{data.createTime | date: 'yyyy-MM-dd HH:mm'}}</td> |
||||||
|
<td nzRight 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"><a (click)="getEdit(data.id)">编辑</a></li> |
||||||
|
</ul> |
||||||
|
</nz-dropdown-menu> |
||||||
|
</td> |
||||||
|
</tbody> |
||||||
|
</nz-table> |
||||||
|
</div> |
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="isVisible" nzTitle="会员产品配置" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()"> |
||||||
|
<form nz-form [formGroup]="validateForm" class="login-form"> |
||||||
|
<nz-form-item> |
||||||
|
<nz-form-label [nzSpan]="6" nzRequired>产品名称</nz-form-label> |
||||||
|
<nz-form-control [nzSpan]="16" nzErrorTip="请输入产品名称!"> |
||||||
|
<input nz-input placeholder="请输入产品名称..." [formControlName]="'name'" id="'name'" /> |
||||||
|
</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 nz-input placeholder="请输入产品编号..." [formControlName]="'productId'" id="'productId'" /> |
||||||
|
</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 nzPlaceHolder="请选择产品分类" (ngModelChange)="getBrandByList($event)" [formControlName]="'typeId'"> |
||||||
|
<nz-option *ngFor="let item of goodsTypeData" [nzValue]="item.id" nzLabel="{{item.title}}"></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 nzPlaceHolder="请选择品牌" [formControlName]="'brandId'"> |
||||||
|
<nz-option *ngFor="let item of brandData" [nzValue]="item.id" nzLabel="{{item.title}}"></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-number |
||||||
|
style="width: 200px" |
||||||
|
formControlName="costPrice" |
||||||
|
[nzMin]="1" |
||||||
|
[nzMax]="10000" |
||||||
|
[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-number |
||||||
|
style="width: 200px" |
||||||
|
formControlName="price" |
||||||
|
[nzMin]="1" |
||||||
|
[nzMax]="10000" |
||||||
|
[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" >排序</nz-form-label> |
||||||
|
<nz-form-control [nzSpan]="16"> |
||||||
|
<nz-input-number |
||||||
|
style="width: 200px" |
||||||
|
formControlName="sort" |
||||||
|
[nzMin]="1" |
||||||
|
[nzMax]="10000" |
||||||
|
[nzStep]="1" |
||||||
|
nzPlaceHolder="请输入排序!" |
||||||
|
></nz-input-number> |
||||||
|
</nz-form-control> |
||||||
|
</nz-form-item> |
||||||
|
</form> |
||||||
|
</nz-modal> |
||||||
|
|
@ -0,0 +1,234 @@ |
|||||||
|
import { Component, OnInit } from '@angular/core'; |
||||||
|
import {environment} from '../../../../environments/environment'; |
||||||
|
import {RechargeService} from '../../../services/recharge.service'; |
||||||
|
import {DiscountService} from '../../../services/discount.service'; |
||||||
|
import {CouponService} from '../../../services/coupon.service'; |
||||||
|
import {IconService} from '../../../services/icon.service'; |
||||||
|
import {CommonsService} from '../../../services/commons.service'; |
||||||
|
import {ApiProductService} from '../../../services/api-product.service'; |
||||||
|
import {FormBuilder, FormGroup, Validators} from '_@angular_forms@9.0.7@@angular/forms'; |
||||||
|
import {NzMessageService} from '_ng-zorro-antd@9.3.0@ng-zorro-antd'; |
||||||
|
import {Router} from '_@angular_router@9.0.7@@angular/router'; |
||||||
|
import {ConfigService} from "../../../services/config.service"; |
||||||
|
|
||||||
|
@Component({ |
||||||
|
selector: 'app-member-product', |
||||||
|
templateUrl: './member-product.component.html', |
||||||
|
styleUrls: ['./member-product.component.scss'] |
||||||
|
}) |
||||||
|
export class MemberProductComponent implements OnInit { |
||||||
|
|
||||||
|
|
||||||
|
WEB_SERVE_URL = environment.imageUrl; |
||||||
|
searchForm: FormGroup; // 搜索框
|
||||||
|
validateForm: FormGroup; // 添加框
|
||||||
|
requestData = []; // 列表数据
|
||||||
|
productArray = []; // 价格数据
|
||||||
|
priceTypeArray = []; // 支付类型数据
|
||||||
|
productPlatformArray = []; // 展示平台数据
|
||||||
|
|
||||||
|
total: number; // 页码
|
||||||
|
pageNum = 1; // 页码
|
||||||
|
pageSize = 10; // 条码
|
||||||
|
loading = true; |
||||||
|
isVisible = false; |
||||||
|
isVisibleProduct = false; |
||||||
|
id: number; |
||||||
|
edit = false; |
||||||
|
payPrice; |
||||||
|
isVisibleGoods = false; |
||||||
|
realPrice = 0; |
||||||
|
data = {}; |
||||||
|
goodsTypeData; |
||||||
|
brandData; |
||||||
|
|
||||||
|
formatterPercent = (value: number): string => `${value == null ? 0 : value} RMB`; |
||||||
|
parserPercent = (value: string): string => value.replace(' RMB', ''); |
||||||
|
|
||||||
|
constructor( |
||||||
|
private form: FormBuilder, |
||||||
|
private recharge: RechargeService, |
||||||
|
private discount: DiscountService, |
||||||
|
private coupon: CouponService, |
||||||
|
private iconService: IconService, |
||||||
|
private message: NzMessageService, |
||||||
|
private config: ConfigService, |
||||||
|
private router: Router, |
||||||
|
private common: CommonsService, |
||||||
|
private apiProduct: ApiProductService |
||||||
|
) { |
||||||
|
} |
||||||
|
|
||||||
|
ngOnInit(): void { |
||||||
|
this.init(); |
||||||
|
this.getInitData(); |
||||||
|
} |
||||||
|
|
||||||
|
// 获取初始化数据
|
||||||
|
private getInitData(): void { |
||||||
|
const params = { |
||||||
|
pageNum: 1, |
||||||
|
userService: '会员充值', |
||||||
|
pageSize: 10000 |
||||||
|
}; |
||||||
|
this.config.getListGoodsType(params , data => { |
||||||
|
this.goodsTypeData = data['return_data'].list; |
||||||
|
}); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public getBrandByList(e): void { |
||||||
|
|
||||||
|
const params = { |
||||||
|
pageNum: 1, |
||||||
|
pageSize: 10000, |
||||||
|
goodTypeId: e |
||||||
|
}; |
||||||
|
|
||||||
|
this.config.getBrandByList(params , data => { |
||||||
|
this.brandData = data['return_data'].list; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
public init(): void { |
||||||
|
this.searchForm = this.form.group({ |
||||||
|
name: [null], |
||||||
|
}); |
||||||
|
this.validateForm = this.form.group({ |
||||||
|
sort: [null], |
||||||
|
price: [null, [Validators.required]], |
||||||
|
costPrice: [null, [Validators.required]], |
||||||
|
brandId: [null, [Validators.required]], |
||||||
|
productId: [null, [Validators.required]], |
||||||
|
typeId: [null, [Validators.required]], |
||||||
|
name: [null, [Validators.required]], |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
this.getRequest(true, this.searchForm.value); |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表
|
||||||
|
public getRequest(reset: boolean = false, whereObject: object) { |
||||||
|
|
||||||
|
this.loading = false; |
||||||
|
if (reset) { |
||||||
|
this.pageNum = 1; |
||||||
|
} |
||||||
|
whereObject['pageNum'] = this.pageNum; |
||||||
|
whereObject['pageSize'] = this.pageSize; |
||||||
|
this.apiProduct.getListApiMemberProduct(whereObject, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.requestData = data['return_data'].list; |
||||||
|
this.total = data['return_data'].total; |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
// 重置
|
||||||
|
public resetForm(): void { |
||||||
|
this.searchForm.reset(); |
||||||
|
} |
||||||
|
|
||||||
|
// 修改
|
||||||
|
public getEdit(id?: number): void { |
||||||
|
if (id != null) { |
||||||
|
this.id = id; |
||||||
|
this.edit = true; |
||||||
|
this.apiProduct.findMemberProductById(id, data => { |
||||||
|
this.validateForm.patchValue(data['return_data']); |
||||||
|
this.isVisible = true; |
||||||
|
}); |
||||||
|
} else { |
||||||
|
this.validateForm.reset(); |
||||||
|
this.isVisible = true; |
||||||
|
this.edit = false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
handleOk(): void { |
||||||
|
console.log(this.validateForm.value); |
||||||
|
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(); |
||||||
|
this.validateForm.controls[i].updateValueAndValidity(); |
||||||
|
if (this.validateForm.controls[i].errors != null) { |
||||||
|
this.message.error('必填项不能为空'); |
||||||
|
this.message.remove(wait); |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (this.edit) { |
||||||
|
this.validateForm.value['id'] = this.id; |
||||||
|
this.apiProduct.updateMemberProduct(this.validateForm.value, data => { |
||||||
|
this.message.remove(wait); |
||||||
|
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']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} else { |
||||||
|
this.apiProduct.insertMemberProduct(this.validateForm.value, data => { |
||||||
|
this.message.remove(wait); |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.message.success('添加成功'); |
||||||
|
this.getRequest(false, this.searchForm.value); |
||||||
|
this.isVisible = false; |
||||||
|
this.validateForm.reset(); |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
handleCancel(): void { |
||||||
|
this.validateForm.reset(); |
||||||
|
this.isVisible = false; |
||||||
|
} |
||||||
|
|
||||||
|
public getForbiddenUserD(idPost): void { |
||||||
|
|
||||||
|
this.common.showConfirm('是否删除', item => { |
||||||
|
if (item) { |
||||||
|
this.recharge.editPriceStatus({ |
||||||
|
id: idPost, |
||||||
|
status: 0 |
||||||
|
}, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.message.success('删除成功'); |
||||||
|
this.getRequest(false, this.searchForm.value); |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
// 详情
|
||||||
|
public getDetail(id: number): void { |
||||||
|
this.id = id; |
||||||
|
this.apiProduct.findStarbucksProducts(id, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.data = data['return_data']; |
||||||
|
this.isVisibleProduct = true; |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,189 @@ |
|||||||
|
<!-- start 面包屑 --> |
||||||
|
<app-breadcrumb></app-breadcrumb> |
||||||
|
<!-- end 面包屑 --> |
||||||
|
|
||||||
|
<!--条件搜索--> |
||||||
|
<div class="inner-content"> |
||||||
|
<form nz-form [formGroup]="searchForm" (ngSubmit)="getRequest(true , searchForm.value)"> |
||||||
|
<div nz-row> |
||||||
|
<div nz-col nzSpan="8"> |
||||||
|
<nz-form-item> |
||||||
|
<nz-form-label [nzSpan]="6">产品名称</nz-form-label> |
||||||
|
<nz-form-control [nzSpan]="16"> |
||||||
|
<input nz-input formControlName="productName"/> |
||||||
|
</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="productType" 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> |
||||||
|
|
||||||
|
|
||||||
|
<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>共计 {{total}} 条数据</span> |
||||||
|
<div class="operating-button"> |
||||||
|
<button nz-button nzType="primary" class="right-btn" (click)="getEdit()"><i nz-icon nzType="plus" nzTheme="outline"></i>添加</button> |
||||||
|
</div> |
||||||
|
<nz-table |
||||||
|
class="table" |
||||||
|
#ajaxTable |
||||||
|
nzShowSizeChanger |
||||||
|
[nzFrontPagination]="false" |
||||||
|
[nzData]="requestData" |
||||||
|
[nzLoading]="loading" |
||||||
|
[nzTotal]="total" |
||||||
|
[(nzPageIndex)]="pageNum" |
||||||
|
[(nzPageSize)]="pageSize" |
||||||
|
[nzScroll]="{ x: '1200px' }" |
||||||
|
(nzPageIndexChange)="getRequest(false , searchForm.value)" |
||||||
|
(nzPageSizeChange)="getRequest(false , searchForm.value)"> |
||||||
|
<thead nzSingleSort> |
||||||
|
<tr> |
||||||
|
<th nzWidth="60px">编号</th> |
||||||
|
<!-- <th nzWidth="90px">产品类型</th>--> |
||||||
|
<th nzWidth="90px">产品名称</th> |
||||||
|
<th nzWidth="90px">利润比例</th> |
||||||
|
<th nzWidth="120px">积分抵扣比例</th> |
||||||
|
<th nzWidth="100px">支付方式</th> |
||||||
|
<th nzWidth="100px">展示平台</th> |
||||||
|
<th nzWidth="120px">创建时间</th> |
||||||
|
<th nzRight nzWidth="80px">操作</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr *ngFor="let data of ajaxTable.data; let i = index"> |
||||||
|
<td>{{i + 1}}</td> |
||||||
|
<!-- <td>{{data.productType == 1 ? '星巴克' : '肯德基'}}</td>--> |
||||||
|
<td>{{data.productName}}</td> |
||||||
|
<td>{{data.discount + "%"}}</td> |
||||||
|
<td>{{data.integralDiscount + "%"}}</td> |
||||||
|
<td>{{data.productPayTypeString.substring(0 , data.productPayTypeString.length - 1)}}</td> |
||||||
|
<td>{{data.productPlatformString.substring(0 , data.productPlatformString.length - 1)}}</td> |
||||||
|
<td>{{data.createTime | date: 'yyyy-MM-dd HH:mm'}}</td> |
||||||
|
<td nzRight 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"><a (click)="getEdit(data.id)">编辑</a></li> |
||||||
|
<!-- <li nz-menu-item *ngIf="data.status != 1"><a (click)="getForbiddenUserD(data.id)">删除</a></li>--> |
||||||
|
</ul> |
||||||
|
</nz-dropdown-menu> |
||||||
|
</td> |
||||||
|
</tbody> |
||||||
|
</nz-table> |
||||||
|
</div> |
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="isVisible" nzTitle="产品配置" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()"> |
||||||
|
<form nz-form [formGroup]="validateForm" class="login-form"> |
||||||
|
<nz-form-item> |
||||||
|
<nz-form-label [nzSpan]="6" nzRequired>产品类型</nz-form-label> |
||||||
|
<nz-form-control [nzSpan]="16" nzErrorTip="请选择产品类型!"> |
||||||
|
<nz-select nzShowSearch nzAllowClear formControlName="productType" 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 |
||||||
|
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 |
||||||
|
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-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-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> |
||||||
|
</form> |
||||||
|
</nz-modal> |
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="isVisibleProduct" nzTitle="商品详情" nzWidth="1200" (nzOnOk)="isVisibleProduct = false" |
||||||
|
(nzOnCancel)="isVisibleProduct = false"> |
||||||
|
<nz-descriptions nzBordered [nzColumn]="{ xxl: 4, xl: 3, lg: 3, md: 3, sm: 2, xs: 1 }"> |
||||||
|
<nz-descriptions-item nzTitle="类别名称">{{data['categoryName']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="商品名称">{{data['name']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="商品图片"><img style="width: 80px;" src="{{data['defaultImage']}}" alt=""></nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="杯型">{{data['cupSize']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="温度">{{data['temperature']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="奶油">{{data['cream']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="浓缩咖啡">{{data['espresso']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="牛奶">{{data['milk']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="奶泡">{{data['milkBubble']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="中杯市场价(元)">¥{{data['marketTallPrice']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="大杯市场价(元)">¥{{data['marketGrandePrice']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="超大杯市场价(元)">¥{{data['marketVentiPrice']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="中杯销售价(元)">¥{{data['salesTallPrice']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="大杯销售价(元)">¥{{data['salesGrandePrice']}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="超大杯销售价(元)">¥{{data['salesVentiPrice']}}</nz-descriptions-item> |
||||||
|
</nz-descriptions> |
||||||
|
</nz-modal> |
@ -0,0 +1,231 @@ |
|||||||
|
import { Component, OnInit } from '@angular/core'; |
||||||
|
import {environment} from '../../../../environments/environment'; |
||||||
|
import {FormBuilder, FormGroup, Validators} from '_@angular_forms@9.0.7@@angular/forms'; |
||||||
|
import {RechargeService} from '../../../services/recharge.service'; |
||||||
|
import {DiscountService} from '../../../services/discount.service'; |
||||||
|
import {CouponService} from '../../../services/coupon.service'; |
||||||
|
import {IconService} from '../../../services/icon.service'; |
||||||
|
import {NzMessageService} from '_ng-zorro-antd@9.3.0@ng-zorro-antd'; |
||||||
|
import {Router} from '_@angular_router@9.0.7@@angular/router'; |
||||||
|
import {CommonsService} from '../../../services/commons.service'; |
||||||
|
import {ApiProductService} from '../../../services/api-product.service'; |
||||||
|
|
||||||
|
@Component({ |
||||||
|
selector: 'app-third-product', |
||||||
|
templateUrl: './third-product.component.html', |
||||||
|
styleUrls: ['./third-product.component.scss'] |
||||||
|
}) |
||||||
|
export class ThirdProductComponent implements OnInit { |
||||||
|
|
||||||
|
WEB_SERVE_URL = environment.imageUrl; |
||||||
|
searchForm: FormGroup; // 搜索框
|
||||||
|
validateForm: FormGroup; // 添加框
|
||||||
|
requestData = []; // 列表数据
|
||||||
|
productArray = []; // 价格数据
|
||||||
|
priceTypeArray = []; // 支付类型数据
|
||||||
|
platformArray = []; // 充值平台数据
|
||||||
|
productPlatformArray = []; // 展示平台数据
|
||||||
|
|
||||||
|
total: number; // 页码
|
||||||
|
pageNum = 1; // 页码
|
||||||
|
pageSize = 10; // 条码
|
||||||
|
loading = true; |
||||||
|
isVisible = false; |
||||||
|
isVisibleProduct = false; |
||||||
|
id: number; |
||||||
|
edit = false; |
||||||
|
payPrice; |
||||||
|
isVisibleGoods = false; |
||||||
|
realPrice = 0; |
||||||
|
data = {}; |
||||||
|
|
||||||
|
array = [{num: 1, productId: 28, cupSize: '中杯', temperature: '特别热', milk: '全脂牛奶', cream: '奶油', espresso: '浓缩', milkBubble: '奶泡'}]; |
||||||
|
hero2 = {num: 2, productId: 28, cupSize: '中杯', temperature: '特别热', milk: '全脂牛奶', cream: '奶油', espresso: '浓缩', milkBubble: '奶泡'}; |
||||||
|
hero3 = {num: 1, productId: 28, cupSize: '超大杯', temperature: '特别热', milk: '全脂牛奶', cream: '奶油', espresso: '浓缩', milkBubble: '奶泡'}; |
||||||
|
|
||||||
|
|
||||||
|
formatterPercent = (value: number): string => `${value == null ? 0 : value} %`; |
||||||
|
parserPercent = (value: string): string => value.replace(' %', ''); |
||||||
|
|
||||||
|
constructor( |
||||||
|
private form: FormBuilder, |
||||||
|
private recharge: RechargeService, |
||||||
|
private discount: DiscountService, |
||||||
|
private coupon: CouponService, |
||||||
|
private iconService: IconService, |
||||||
|
private message: NzMessageService, |
||||||
|
private router: Router, |
||||||
|
private common: CommonsService, |
||||||
|
private apiProduct: ApiProductService |
||||||
|
) { |
||||||
|
} |
||||||
|
|
||||||
|
ngOnInit(): void { |
||||||
|
this.init(); |
||||||
|
this.getInitData(); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
// 获取初始化数据
|
||||||
|
private getInitData(): void { |
||||||
|
// 获取星巴克数据
|
||||||
|
this.apiProduct.getStarbucksProducts(data => { |
||||||
|
this.productArray = data['return_data']; |
||||||
|
}); |
||||||
|
// 获取支付类型
|
||||||
|
this.common.getDictionary('PAY_TYPE ', data => { |
||||||
|
this.priceTypeArray = data['return_data']; |
||||||
|
}); |
||||||
|
// 获取展示平台
|
||||||
|
this.common.getDictionary('SHOW_PLATFORM ', data => { |
||||||
|
this.productPlatformArray = data['return_data']; |
||||||
|
}); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public init(): void { |
||||||
|
this.searchForm = this.form.group({ |
||||||
|
productType: [null], |
||||||
|
productName: [null], |
||||||
|
}); |
||||||
|
this.validateForm = this.form.group({ |
||||||
|
discount: [null, [Validators.required]], |
||||||
|
integralDiscount: [0], |
||||||
|
productPlatform: [null, [Validators.required]], |
||||||
|
payType: [null, [Validators.required]], |
||||||
|
productType: [null, [Validators.required]], |
||||||
|
productName: [null], |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
this.getRequest(true, this.searchForm.value); |
||||||
|
} |
||||||
|
|
||||||
|
// 查询列表
|
||||||
|
public getRequest(reset: boolean = false, whereObject: object) { |
||||||
|
|
||||||
|
this.loading = false; |
||||||
|
if (reset) { |
||||||
|
this.pageNum = 1; |
||||||
|
} |
||||||
|
whereObject['pageNum'] = this.pageNum; |
||||||
|
whereObject['pageSize'] = this.pageSize; |
||||||
|
this.apiProduct.getProductConfig(whereObject, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
console.log(data); |
||||||
|
this.requestData = data['return_data'].list; |
||||||
|
this.total = data['return_data'].total; |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
// 重置
|
||||||
|
public resetForm(): void { |
||||||
|
this.searchForm.reset(); |
||||||
|
} |
||||||
|
|
||||||
|
// 修改
|
||||||
|
public getEdit(id?: number): void { |
||||||
|
if (id != null) { |
||||||
|
this.id = id; |
||||||
|
this.edit = true; |
||||||
|
this.apiProduct.findProductConfig(id, data => { |
||||||
|
data['return_data']['productPlatform'] = data['return_data']['productPlatformString'].substring(0 , data['return_data']['productPlatformString'].length - 1).split(','); |
||||||
|
data['return_data']['payType'] = data['return_data']['productPayTypeString'].substring(0 , data['return_data']['productPayTypeString'].length - 1).split(','); |
||||||
|
this.validateForm.patchValue(data['return_data']); |
||||||
|
this.isVisible = true; |
||||||
|
}); |
||||||
|
} else { |
||||||
|
this.validateForm.reset(); |
||||||
|
this.isVisible = true; |
||||||
|
this.edit = false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
handleOk(): void { |
||||||
|
console.log(this.validateForm.value); |
||||||
|
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(); |
||||||
|
this.validateForm.controls[i].updateValueAndValidity(); |
||||||
|
if (this.validateForm.controls[i].errors != null) { |
||||||
|
this.message.error('必填项不能为空'); |
||||||
|
this.message.remove(wait); |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (this.edit) { |
||||||
|
this.validateForm.value['id'] = this.id; |
||||||
|
this.apiProduct.updateProductConfig(this.validateForm.value, data => { |
||||||
|
this.message.remove(wait); |
||||||
|
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']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} else { |
||||||
|
this.apiProduct.productConfig(this.validateForm.value, data => { |
||||||
|
this.message.remove(wait); |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.message.success('添加成功'); |
||||||
|
this.getRequest(false, this.searchForm.value); |
||||||
|
this.isVisible = false; |
||||||
|
this.validateForm.reset(); |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
handleCancel(): void { |
||||||
|
this.validateForm.reset(); |
||||||
|
this.isVisible = false; |
||||||
|
} |
||||||
|
|
||||||
|
public getForbiddenUserD(idPost): void { |
||||||
|
|
||||||
|
this.common.showConfirm('是否删除', item => { |
||||||
|
if (item) { |
||||||
|
this.recharge.editPriceStatus({ |
||||||
|
id: idPost, |
||||||
|
status: 0 |
||||||
|
}, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.message.success('删除成功'); |
||||||
|
this.getRequest(false, this.searchForm.value); |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
// 详情
|
||||||
|
public getDetail(id: number): void { |
||||||
|
this.id = id; |
||||||
|
this.apiProduct.findStarbucksProducts(id, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.data = data['return_data']; |
||||||
|
this.isVisibleProduct = true; |
||||||
|
} else { |
||||||
|
this.message.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue