parent
36e4381a14
commit
7c6b39417d
@ -0,0 +1,332 @@ |
|||||||
|
<!-- start 面包屑 --> |
||||||
|
<app-breadcrumb></app-breadcrumb> |
||||||
|
<!-- end 面包屑 --> |
||||||
|
<!--条件搜索--> |
||||||
|
|
||||||
|
<nz-spin [nzSpinning]="loadingObject.status" [nzTip]="loadingObject.title"> |
||||||
|
|
||||||
|
<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="orderNo" /> |
||||||
|
</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="memPhone" /> |
||||||
|
</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="oilCardNo" /> |
||||||
|
</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-range-picker |
||||||
|
[nzShowTime]="{ nzHideDisabledOptions: true }" |
||||||
|
formControlName="createTime" |
||||||
|
nzFormat="yyyy-MM-dd HH:mm:ss" |
||||||
|
></nz-range-picker> |
||||||
|
</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-range-picker |
||||||
|
[nzShowTime]="{ nzHideDisabledOptions: true }" |
||||||
|
formControlName="payTime" |
||||||
|
nzFormat="yyyy-MM-dd HH:mm:ss" |
||||||
|
></nz-range-picker> |
||||||
|
</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 formControlName="status" nzAllowClear> |
||||||
|
<nz-option *ngFor="let item of orderStatusArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></nz-option> |
||||||
|
</nz-select> |
||||||
|
</nz-form-control> |
||||||
|
</nz-form-item> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<div nz-row *ngIf="isCollapse"> |
||||||
|
|
||||||
|
<div nz-col nzSpan="8"> |
||||||
|
<nz-form-item> |
||||||
|
<nz-form-label [nzSpan]="8">支付方式</nz-form-label> |
||||||
|
<nz-form-control [nzSpan]="14"> |
||||||
|
<nz-select formControlName="payType" nzAllowClear> |
||||||
|
<nz-option *ngFor="let item of payTypeArray" nzValue="{{item.codeValue}}" nzLabel="{{item.codeName}}"></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-range-picker |
||||||
|
[nzShowTime]="{ nzHideDisabledOptions: true }" |
||||||
|
formControlName="refundTimeArray" |
||||||
|
nzFormat="yyyy-MM-dd HH:mm:ss" |
||||||
|
></nz-range-picker> |
||||||
|
</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)="resetSearchForm()"><i nz-icon nzType="reload" nzTheme="outline"></i>重置</button> |
||||||
|
<a class="collapse" (click)="toggleCollapse()">更多条件<i nz-icon [nzType]="!isCollapse ? 'down' : 'up'"></i></a> |
||||||
|
</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" (click)="excelOrder()"><i nz-icon nzType="export" nzTheme="outline"></i>导出订单</button> |
||||||
|
</div> |
||||||
|
|
||||||
|
<!--数组表格 --> |
||||||
|
<nz-table #basicTable |
||||||
|
nzShowPagination |
||||||
|
nzShowSizeChanger |
||||||
|
nzBordered |
||||||
|
[nzData]="dataObject.list" |
||||||
|
[nzTotal]="dataObject.total" |
||||||
|
[nzFrontPagination]="false" |
||||||
|
[nzLoading]="tableLoading" |
||||||
|
[nzPageIndex]="whereObject.pageNum" |
||||||
|
(nzPageIndexChange)="requestOrderData($event)" |
||||||
|
(nzPageSizeChange)="pageSizeChang($event)" |
||||||
|
[nzPageSizeOptions]="[10,20,50,100]" |
||||||
|
[nzScroll]="{ x: '900px'}" |
||||||
|
> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th nzWidth="120px">交易单号</th> |
||||||
|
<th nzWidth="120px">客户电话</th> |
||||||
|
<th nzWidth="120px">油卡卡号</th> |
||||||
|
<th nzWidth="80px">充值金额</th> |
||||||
|
<th nzWidth="80px">赠送金额</th> |
||||||
|
<th nzWidth="100px">实际到账金额</th> |
||||||
|
<th nzWidth="80px">支付金额</th> |
||||||
|
<th nzWidth="120px">创建时间</th> |
||||||
|
<th nzWidth="120px">支付时间</th> |
||||||
|
<th nzWidth="120px">退款时间</th> |
||||||
|
<th nzWidth="80px">交易状态</th> |
||||||
|
<th nzWidth="80px" nzRight="0px">操作</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr *ngFor="let data of basicTable.data;let i = index" [style]="{ color: data.color}"> |
||||||
|
<td>{{data.orderNo}}</td> |
||||||
|
<td>{{data.memPhone}}</td> |
||||||
|
<td>{{data.oildCard}}</td> |
||||||
|
<td>{{data.goodsActualPrice}}</td> |
||||||
|
<td>{{data.givePrice}}</td> |
||||||
|
<td>{{data.goodsPrice}}</td> |
||||||
|
<td>{{data.payRealPrice!=null?data.payRealPrice:'未支付'}}</td> |
||||||
|
<td>{{data.createTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td> |
||||||
|
<td>{{data.payTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td> |
||||||
|
<td>{{data.refundTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td> |
||||||
|
<td>{{data.orderStatus}}</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 (click)="showOrderDetail(data.orderNo)" nz-menu-item>交易详情</li> |
||||||
|
<li *ngIf="data.exceptionStatus == true" (click)="showRefund(data.orderNo)" nz-menu-item>交易退款</li> |
||||||
|
<li *ngIf="data.orderStatus == '已退款'" (click)="showRefundRecord(data.orderNo)" nz-menu-item>退款记录</li> |
||||||
|
</ul> |
||||||
|
</nz-dropdown-menu> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</nz-table> |
||||||
|
</div> |
||||||
|
</nz-spin> |
||||||
|
|
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="orderDetailModal" nzTitle="交易详情" (nzOnCancel)="closeOrderDetail()" [nzFooter]="null" |
||||||
|
nzWidth="1000px" [nzBodyStyle]=" { padding: '5px 5px 30px 5px'}"> |
||||||
|
<nz-spin [nzSpinning]="orderDetailModalLoading"> |
||||||
|
<nz-tabset [nzTabPosition]="'top'" [nzType]="'card'" class="order-oil-tab"> |
||||||
|
<nz-tab nzTitle="交易信息"> |
||||||
|
<nz-descriptions nzBordered [nzColumn]="2" [nzSize]="'middle'"> |
||||||
|
<nz-descriptions-item nzTitle="交易订单号">{{orderDetailObject.orderNo}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="第三方交易号">{{orderDetailObject.paySerialNo!=null?orderDetailObject.paySerialNo:'无'}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="客户手机号">{{orderDetailObject.memPhone}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="交易状态">{{orderDetailObject.orderStatus | orderStatus}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="支付方式">{{orderDetailObject.payType | orderPayType}}</nz-descriptions-item> |
||||||
|
<!-- <nz-descriptions-item nzTitle="支付卡号" *ngIf="orderDetailObject.payType != null && (orderDetailObject.payType == 4 || orderDetailObject.tradeOrder.payType == 7)"> |
||||||
|
{{orderDetailObject.memCardNo}} |
||||||
|
</nz-descriptions-item>--> |
||||||
|
<nz-descriptions-item nzTitle="优惠券">{{orderDetailObject.memDiscountName?orderDetailObject.memDiscountName:'无'}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="返利">{{orderDetailObject.whetherRebate?'是':'否'}}</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="备注">{{orderDetailObject.remarks}}</nz-descriptions-item> |
||||||
|
</nz-descriptions> |
||||||
|
|
||||||
|
<nz-divider nzText="支付信息"></nz-divider> |
||||||
|
<nz-descriptions nzBordered [nzColumn]="3" [nzSize]="'middle'"> |
||||||
|
<nz-descriptions-item nzTitle="交易总额" >{{orderDetailObject.totalPrice}} 元</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="优惠信息" nzSpan="2"> |
||||||
|
<span nz-typography>总优惠: {{orderDetailObject.totalDeductionPrice}} 元</span><br> |
||||||
|
<span nz-typography>加油优惠: {{orderDetailObject.deductionProductPrice}} 元</span><br> |
||||||
|
<span nz-typography>优惠券优惠: {{orderDetailObject.deductionCouponPrice}} 元</span><br> |
||||||
|
</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="应付金额" >{{orderDetailObject.payablePrice}} 元</nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="积分抵扣" >{{orderDetailObject.payGold / 100}} 元 </nz-descriptions-item> |
||||||
|
<nz-descriptions-item nzTitle="实付金额" > |
||||||
|
{{orderDetailObject.payRealPrice!=null?orderDetailObject.payRealPrice+' 元':'未支付'}} |
||||||
|
</nz-descriptions-item> |
||||||
|
</nz-descriptions> |
||||||
|
|
||||||
|
</nz-tab> |
||||||
|
<nz-tab nzTitle="交易时间"> |
||||||
|
<nz-card> |
||||||
|
<nz-timeline> |
||||||
|
<nz-timeline-item *ngIf="orderDetailObject.createTime != null">创建时间:{{orderDetailObject.createTime | date : 'yyyy-MM-dd HH:mm:ss'}}</nz-timeline-item> |
||||||
|
<nz-timeline-item *ngIf="orderDetailObject.cancelTime != null">取消时间:{{orderDetailObject.cancelTime | date : 'yyyy-MM-dd HH:mm:ss'}}</nz-timeline-item> |
||||||
|
<nz-timeline-item *ngIf="orderDetailObject.payTime != null">支付时间:{{orderDetailObject.payTime | date : 'yyyy-MM-dd HH:mm:ss'}}</nz-timeline-item> |
||||||
|
<nz-timeline-item *ngIf="orderDetailObject.finishTime != null">完成时间:{{orderDetailObject.finishTime | date : 'yyyy-MM-dd HH:mm:ss'}}</nz-timeline-item> |
||||||
|
<nz-timeline-item *ngIf="orderDetailObject.refundTime != null">退款时间:{{orderDetailObject.refundTime | date : 'yyyy-MM-dd HH:mm:ss'}}</nz-timeline-item> |
||||||
|
</nz-timeline> |
||||||
|
</nz-card> |
||||||
|
</nz-tab> |
||||||
|
<nz-tab nzTitle="产品信息"> |
||||||
|
<nz-table #childOrder [nzData]="orderDetailObject.highChildOrderList" [nzHideOnSinglePage]="true" [nzScroll]="{ x: '1000px'}"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th nzWidth="110px">订单编号</th> |
||||||
|
<th nzWidth="60px">产品类型</th> |
||||||
|
<th nzWidth="150px">产品名称</th> |
||||||
|
<th nzWidth="80px">产品规格</th> |
||||||
|
<th nzWidth="60px">数量</th> |
||||||
|
<th nzWidth="60px">单价</th> |
||||||
|
<th nzWidth="60px">总价</th> |
||||||
|
<th nzWidth="80px">订单状态</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr *ngFor="let data of childOrder.data"> |
||||||
|
<td>{{ data.childOrderNo}}</td> |
||||||
|
<td>{{ data.goodsType | orderChildGoodsType}}</td> |
||||||
|
<td nzEllipsis> |
||||||
|
{{ data.goodsName }} |
||||||
|
<nz-tag *ngIf="data.giveawayType == 1" [nzColor]="'magenta'">赠品</nz-tag> |
||||||
|
</td> |
||||||
|
<td>{{ data.goodsSpecName }}</td> |
||||||
|
<td>{{ data.saleCount }}</td> |
||||||
|
<td>{{ data.goodsActualPrice }} 元</td> |
||||||
|
<td>{{ data.totalActualPrice }} 元</td> |
||||||
|
<td>{{ data.childOrderStatus | orderChildStatus}} </td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</nz-table> |
||||||
|
</nz-tab> |
||||||
|
</nz-tabset> |
||||||
|
</nz-spin> |
||||||
|
</nz-modal> |
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="refundModal" nzTitle="交易退款" (nzOnCancel)="closeRefund()" [nzFooter]="null" nzWidth="800px"> |
||||||
|
<nz-spin [nzSpinning]="loadingObject.status" [nzTip]="loadingObject.title"> |
||||||
|
<form nz-form [formGroup]="refundForm"> |
||||||
|
<nz-form-item> |
||||||
|
<nz-form-label>交易单号</nz-form-label> |
||||||
|
<nz-form-control> |
||||||
|
<input nz-input formControlName="orderNo" /> |
||||||
|
</nz-form-control> |
||||||
|
</nz-form-item> |
||||||
|
|
||||||
|
<nz-form-item> |
||||||
|
<nz-form-label>退款备注</nz-form-label> |
||||||
|
<nz-form-control> |
||||||
|
<textarea rows="4" nz-input formControlName="remarks" maxlength="100"></textarea> |
||||||
|
</nz-form-control> |
||||||
|
</nz-form-item> |
||||||
|
<div style="text-align: center;"> |
||||||
|
<button nz-button [nzType]="'primary'" (click)="submitRefundConfirm()">提交退款</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</nz-spin> |
||||||
|
</nz-modal> |
||||||
|
|
||||||
|
<nz-modal [(nzVisible)]="refundRecordModal" nzTitle="退款记录" (nzOnCancel)="closeRefundRecord()" [nzFooter]="null" |
||||||
|
nzWidth="1000px" [nzBodyStyle]=" { padding: '5px 5px 30px 5px'}"> |
||||||
|
<nz-table #refundRecord [nzData]="refundRefundRecordArray" |
||||||
|
[nzFrontPagination]="false" |
||||||
|
[nzHideOnSinglePage]="true" |
||||||
|
[nzScroll]="{ x: '1000px'}"> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th nzWidth="200px">交易单号</th> |
||||||
|
<th nzWidth="160px">产品单号</th> |
||||||
|
<th nzWidth="120px">客户电话</th> |
||||||
|
<th nzWidth="120px">产品类型</th> |
||||||
|
<th nzWidth="120px">产品名称</th> |
||||||
|
<th nzWidth="200px">退款单号</th> |
||||||
|
<th nzWidth="120px">退款数量</th> |
||||||
|
<th nzWidth="120px">退款总额</th> |
||||||
|
<th nzWidth="120px">退回金额</th> |
||||||
|
<th nzWidth="100px">退回积分</th> |
||||||
|
<th nzWidth="100px">退款状态</th> |
||||||
|
<th nzWidth="180px">创建时间</th> |
||||||
|
<th nzWidth="180px">退款时间</th> |
||||||
|
<th nzWidth="300px">退款备注</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr *ngFor="let data of refundRecord.data"> |
||||||
|
<td>{{data.orderNo}}</td> |
||||||
|
<td>{{data.orderChildNo}}</td> |
||||||
|
<td>{{data.memPhone}}</td> |
||||||
|
<td>{{data.goodsType | orderChildGoodsType}}</td> |
||||||
|
<td>{{data.goodsName}}</td> |
||||||
|
<td>{{data.refundOrderNo}}</td> |
||||||
|
<td>{{data.refundGoodsNum}}</td> |
||||||
|
<td>¥{{data.returnTotalPrice}}</td> |
||||||
|
<td>¥{{data.refundPrice}}</td> |
||||||
|
<td>{{data.refundIntegral}}</td> |
||||||
|
<td>{{data.refundStatus | orderRefundStatus}}</td> |
||||||
|
<td>{{data.createTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td> |
||||||
|
<td>{{data.refundTime | date : 'yyyy-MM-dd HH:mm:ss'}}</td> |
||||||
|
<td nzBreakWord>{{data.refundRemark}}</td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</nz-table> |
||||||
|
</nz-modal> |
||||||
|
|
@ -0,0 +1,12 @@ |
|||||||
|
.collapse { |
||||||
|
margin-left: 15px; |
||||||
|
} |
||||||
|
nz-range-picker { |
||||||
|
width: 100%; |
||||||
|
} |
||||||
|
::ng-deep .order-oil-tab .ant-descriptions-item-label { |
||||||
|
width: 150px; |
||||||
|
} |
||||||
|
::ng-deep .order-oil-tab .ant-descriptions-item-content { |
||||||
|
width: 200px; |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
||||||
|
|
||||||
|
import { OrderOilCardComponent } from './order-oil-card.component'; |
||||||
|
|
||||||
|
describe('OrderOilCardComponent', () => { |
||||||
|
let component: OrderOilCardComponent; |
||||||
|
let fixture: ComponentFixture<OrderOilCardComponent>; |
||||||
|
|
||||||
|
beforeEach(async(() => { |
||||||
|
TestBed.configureTestingModule({ |
||||||
|
declarations: [ OrderOilCardComponent ] |
||||||
|
}) |
||||||
|
.compileComponents(); |
||||||
|
})); |
||||||
|
|
||||||
|
beforeEach(() => { |
||||||
|
fixture = TestBed.createComponent(OrderOilCardComponent); |
||||||
|
component = fixture.componentInstance; |
||||||
|
fixture.detectChanges(); |
||||||
|
}); |
||||||
|
|
||||||
|
it('should create', () => { |
||||||
|
expect(component).toBeTruthy(); |
||||||
|
}); |
||||||
|
}); |
@ -0,0 +1,473 @@ |
|||||||
|
import { Component, OnInit } from '@angular/core'; |
||||||
|
import {environment} from '../../../../environments/environment'; |
||||||
|
import {FormBuilder, FormGroup, Validators} from '@angular/forms'; |
||||||
|
import {NzMessageService, NzModalService} from 'ng-zorro-antd'; |
||||||
|
import {CommonsService} from '../../../services/commons.service'; |
||||||
|
import {CompanyService} from '../../../services/company.service'; |
||||||
|
import {MerchantService} from '../../../services/merchant.service'; |
||||||
|
import {LocalStorageService} from '../../../services/local-storage.service'; |
||||||
|
import {OrderManageService} from '../../../services/order/order-manage.service'; |
||||||
|
import {OrderService} from '../../../services/order.service'; |
||||||
|
import {OrganizationService} from '../../../services/organization.service'; |
||||||
|
import {ActivatedRoute} from '@angular/router'; |
||||||
|
import {ADMIN_INFO_OBJECT} from '../../../services/local-storage.namespace'; |
||||||
|
|
||||||
|
@Component({ |
||||||
|
selector: 'app-order-oil-card', |
||||||
|
templateUrl: './order-oil-card.component.html', |
||||||
|
styleUrls: ['./order-oil-card.component.scss'] |
||||||
|
}) |
||||||
|
export class OrderOilCardComponent implements OnInit { |
||||||
|
FILE_URL = environment.imageUrl; |
||||||
|
roleType; |
||||||
|
adminFlag; |
||||||
|
|
||||||
|
loadingObject = { |
||||||
|
title: "加载中...", |
||||||
|
status: false, |
||||||
|
}; |
||||||
|
dataObject: any = {}; |
||||||
|
tableLoading = true; |
||||||
|
searchForm: FormGroup; |
||||||
|
pageNum = 1; |
||||||
|
pageSize = 10; |
||||||
|
whereObject: any = {}; |
||||||
|
isCollapse = false; |
||||||
|
|
||||||
|
refundModal = false; |
||||||
|
refundForm: FormGroup; |
||||||
|
refundRefundRecordArray = []; |
||||||
|
|
||||||
|
refundRecordModal = false; |
||||||
|
|
||||||
|
orderDetailModal = false; |
||||||
|
orderDetailModalLoading = false; |
||||||
|
orderDetailObject: any = {} |
||||||
|
orderStatusArray = []; |
||||||
|
companyArray = []; |
||||||
|
merArray = []; |
||||||
|
payTypeArray = []; |
||||||
|
orgIdArray = []; |
||||||
|
|
||||||
|
cardNo: string; |
||||||
|
phone: string; |
||||||
|
carLicensePlate: string; |
||||||
|
|
||||||
|
// 退款按钮权限
|
||||||
|
REFUND_OIL_BTN = false; |
||||||
|
|
||||||
|
printDataObject = { |
||||||
|
orderNo: null, |
||||||
|
printData: null |
||||||
|
}; |
||||||
|
printModal = false; |
||||||
|
|
||||||
|
constructor(private modal: NzModalService, |
||||||
|
private message: NzMessageService, |
||||||
|
private commonsService: CommonsService, |
||||||
|
private companyService: CompanyService, |
||||||
|
private merchantService: MerchantService, |
||||||
|
private store: LocalStorageService, |
||||||
|
private orderManageService: OrderManageService, |
||||||
|
private orderService: OrderService, |
||||||
|
private organizationService: OrganizationService, |
||||||
|
|
||||||
|
private activatedRoute: ActivatedRoute, |
||||||
|
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 { |
||||||
|
let currentDate = new Date(); |
||||||
|
currentDate.setHours(0); |
||||||
|
currentDate.setMinutes(0); |
||||||
|
currentDate.setSeconds(0); |
||||||
|
let createTimeS = currentDate.getTime(); |
||||||
|
|
||||||
|
currentDate.setHours(23); |
||||||
|
currentDate.setMinutes(59); |
||||||
|
currentDate.setSeconds(59); |
||||||
|
let createTimeE = currentDate.getTime(); |
||||||
|
this.whereObject = { createTimeS: createTimeS, createTimeE: createTimeE}; |
||||||
|
|
||||||
|
this.commonsService.getDictionary("ORDER_STATUS", data => { |
||||||
|
this.orderStatusArray = data['return_data']; |
||||||
|
}); |
||||||
|
|
||||||
|
this.REFUND_OIL_BTN = this.commonsService.isBtnCompetence("BTN_REFUND_OIL_BTN"); |
||||||
|
this.refundForm = this.form.group({ |
||||||
|
orderNo: [{ value: null, disabled: true}, [Validators.required]], |
||||||
|
remarks: [null], |
||||||
|
}); |
||||||
|
|
||||||
|
this.searchForm = this.form.group({ |
||||||
|
orderNo: [null], |
||||||
|
memPhone: [null], |
||||||
|
oilCardNo: [null], |
||||||
|
payType: [null], |
||||||
|
status: [null], |
||||||
|
createTime: [[createTimeS,createTimeE]], |
||||||
|
createTimeS: [null], |
||||||
|
createTimeE: [null], |
||||||
|
payTime: [null], |
||||||
|
payTimeS: [null], |
||||||
|
payTimeE: [null], |
||||||
|
refundTime: [null], |
||||||
|
refundTimeS: [null], |
||||||
|
refundTimeE: [null], |
||||||
|
}); |
||||||
|
this.requestOrderData(1); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 请求订单数据 |
||||||
|
*/ |
||||||
|
requestOrderData(pageNum: number) { |
||||||
|
this.tableLoading = true; |
||||||
|
if (this.cardNo != null) { |
||||||
|
this.whereObject['memCardNo'] = this.cardNo; |
||||||
|
} |
||||||
|
if (this.phone != null) { |
||||||
|
this.whereObject['memPhone'] = this.phone; |
||||||
|
} |
||||||
|
this.whereObject['pageNum'] = pageNum; |
||||||
|
this.whereObject['pageSize'] = this.pageSize; |
||||||
|
this.orderService.getOilCardOrderList(this.whereObject, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.dataObject = data['return_data']; |
||||||
|
for (let data of this.dataObject['list']) { |
||||||
|
if (data['exceptionStatus'] == true) { |
||||||
|
data['color'] = 'red'; |
||||||
|
} |
||||||
|
} |
||||||
|
} else { |
||||||
|
this.modal.error(data['return_msg']); |
||||||
|
} |
||||||
|
this.tableLoading = false; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 搜索 |
||||||
|
* @param whereObject 条件 |
||||||
|
*/ |
||||||
|
search(whereObject: object) { |
||||||
|
if (whereObject['createTime'] != null && whereObject['createTime'].length > 0) { |
||||||
|
whereObject['createTimeS'] = new Date(whereObject['createTime'][0]).getTime(); |
||||||
|
whereObject['createTimeE'] = new Date(whereObject['createTime'][1]).getTime(); |
||||||
|
} else { |
||||||
|
whereObject['createTimeS'] = null; |
||||||
|
whereObject['createTimeE'] = null; |
||||||
|
} |
||||||
|
|
||||||
|
if (whereObject['payTime'] != null && whereObject['payTime'].length > 0) { |
||||||
|
whereObject['payTimeS'] = new Date(whereObject['payTime'][0]).getTime(); |
||||||
|
whereObject['payTimeE'] = new Date(whereObject['payTime'][1]).getTime(); |
||||||
|
} else { |
||||||
|
whereObject['payTimeS'] = null; |
||||||
|
whereObject['payTimeE'] = null; |
||||||
|
} |
||||||
|
|
||||||
|
if (whereObject['refundTime'] != null && whereObject['refundTime'].length > 0) { |
||||||
|
whereObject['refundTimeS'] = new Date(whereObject['refundTime'][0]).getTime(); |
||||||
|
whereObject['refundTimeE'] = new Date(whereObject['refundTime'][1]).getTime(); |
||||||
|
} else { |
||||||
|
whereObject['refundTimeS'] = null; |
||||||
|
whereObject['refundTimeE'] = null; |
||||||
|
} |
||||||
|
this.whereObject = whereObject; |
||||||
|
this.requestOrderData(1); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 分页 |
||||||
|
* @param pageSize |
||||||
|
*/ |
||||||
|
pageSizeChang(pageSize: number) { |
||||||
|
this.pageSize = pageSize; |
||||||
|
this.requestOrderData(1) |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 重置 |
||||||
|
*/ |
||||||
|
resetSearchForm(): void { |
||||||
|
this.searchForm.reset(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 搜索条件折叠 |
||||||
|
*/ |
||||||
|
toggleCollapse(): void { |
||||||
|
this.isCollapse = !this.isCollapse; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 导出订单 |
||||||
|
*/ |
||||||
|
excelOrder() { |
||||||
|
this.loadingObject.status = true; |
||||||
|
this.loadingObject.title = '数据导出中...'; |
||||||
|
|
||||||
|
this.orderService.exportOilCardOrder(this.whereObject, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
window.location.href = this.FILE_URL + 'temporary/' + data['return_data']; |
||||||
|
} else { |
||||||
|
this.modal.error({ |
||||||
|
nzTitle: '提示', |
||||||
|
nzContent: data['return_msg'] |
||||||
|
}); |
||||||
|
} |
||||||
|
this.loadingObject.status = false; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 打开订单详情 |
||||||
|
*/ |
||||||
|
showOrderDetail(orderNo: string) { |
||||||
|
this.orderDetailModal = true; |
||||||
|
this.orderDetailModalLoading = true; |
||||||
|
|
||||||
|
this.orderManageService.getDetailByOrderNo(orderNo, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.orderDetailObject = data['return_data']; |
||||||
|
} else { |
||||||
|
this.modal.error({ |
||||||
|
nzTitle: '提示', |
||||||
|
nzContent: data['return_msg'] |
||||||
|
}); |
||||||
|
} |
||||||
|
this.orderDetailModalLoading = false; |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 关闭订单详情 |
||||||
|
*/ |
||||||
|
closeOrderDetail() { |
||||||
|
this.orderDetailModal = false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 打开退款模态框 |
||||||
|
* @param orderNo |
||||||
|
*/ |
||||||
|
showRefund(orderNo: string) { |
||||||
|
this.refundForm.patchValue({ orderNo: orderNo}) |
||||||
|
this.refundModal = true; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 提交退款确认框 |
||||||
|
*/ |
||||||
|
submitRefundConfirm() { |
||||||
|
for (const i in this.refundForm.controls) { |
||||||
|
this.refundForm.controls[i].markAsDirty(); |
||||||
|
this.refundForm.controls[i].updateValueAndValidity(); |
||||||
|
} |
||||||
|
if (this.refundForm.status == null || this.refundForm.status !== 'VALID') { |
||||||
|
this.modal.warning({ |
||||||
|
nzTitle: '提示', |
||||||
|
nzContent: '请填写所有必填项', |
||||||
|
}); |
||||||
|
return; |
||||||
|
} |
||||||
|
this.modal.confirm({ |
||||||
|
nzTitle: '提示', |
||||||
|
nzContent: '确定对交易订号('+this.refundForm.controls.orderNo.value+')进行退款吗?', |
||||||
|
nzOnOk: () => this.submitRefund() |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 提交退款 |
||||||
|
* @param orderNo |
||||||
|
*/ |
||||||
|
submitRefund() { |
||||||
|
this.loadingObject.status = true; |
||||||
|
this.loadingObject.title = '处理中...'; |
||||||
|
this.orderManageService.refundOrder(this.refundForm.controls.orderNo.value,this.refundForm.controls.remarks.value, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.modal.success({ |
||||||
|
nzTitle: '提示', |
||||||
|
nzContent: '操作成功', |
||||||
|
}); |
||||||
|
this.requestOrderData(this.whereObject.pageNum); |
||||||
|
this.closeRefund(); |
||||||
|
} else { |
||||||
|
this.modal.error({ |
||||||
|
nzTitle: '提示', |
||||||
|
nzContent: data['return_msg'], |
||||||
|
}); |
||||||
|
} |
||||||
|
this.loadingObject.status = false; |
||||||
|
}); |
||||||
|
this.refundModal = true; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 关闭退款模态框 |
||||||
|
* @param orderNo |
||||||
|
*/ |
||||||
|
closeRefund() { |
||||||
|
this.refundModal = false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 打开退款记录模态框 |
||||||
|
* @param orderNo |
||||||
|
*/ |
||||||
|
showRefundRecord(orderNo: string) { |
||||||
|
this.orderManageService.getRefundList({orderNo: orderNo, pageNum:1, pageSize: 99}, data => { |
||||||
|
if (data['return_code'] === '000000') { |
||||||
|
this.refundRefundRecordArray = data['return_data']['list']; |
||||||
|
} else { |
||||||
|
this.modal.error(data['return_msg']); |
||||||
|
} |
||||||
|
}); |
||||||
|
this.refundRecordModal = true; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 关闭退款记录模态框 |
||||||
|
* @param orderNo |
||||||
|
*/ |
||||||
|
closeRefundRecord() { |
||||||
|
this.refundRecordModal = false; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
showPrintModal(orderNo: string, data: PrintData) { |
||||||
|
this.printDataObject.orderNo = orderNo; |
||||||
|
this.printDataObject.printData = data; |
||||||
|
this.printModal = true; |
||||||
|
} |
||||||
|
|
||||||
|
cloudPrint() { |
||||||
|
this.orderService.print(this.printDataObject.orderNo, 2, dataBack => { |
||||||
|
if (dataBack['return_code'] === '000000') { |
||||||
|
this.modal.success({ |
||||||
|
nzTitle: '提示', |
||||||
|
nzContent: '操作成功', |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
showPrintDiv() { |
||||||
|
const data = this.printDataObject.printData; |
||||||
|
data['createTime'] = new Date(data['createTime']).toLocaleString(); |
||||||
|
this.printDiv(data); |
||||||
|
} |
||||||
|
|
||||||
|
printDiv(data: object) { |
||||||
|
const headstr = '<html><head><title>打印小票</title></head><body>'; |
||||||
|
const footstr = '</body>'; |
||||||
|
const newstr = '<div id="div_print" style="font-size: 16px;">\n' + |
||||||
|
' <div style="float: left;margin-bottom: 150px;">\n' + |
||||||
|
' <div style="line-height: 30px; color:#000;">\n' + |
||||||
|
' <span style="font-size: 13px;float: left;width: 100%;">' + data['storeName'] + '</span>\n' + |
||||||
|
' <span style="font-size: 13px;float: left;width: 100%;margin-left: 60px;">(客户存根)</span>\n' + |
||||||
|
' </div>\n' + |
||||||
|
' <table style="width: 100%;">\n' + |
||||||
|
' <tbody>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">流水号:<span>' + data['orderNo'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">时间:<span>' + data['createTime'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">来源:<span>嗨森逛</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">油枪:<span>' + data['gasGunNo'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">油品:<span>' + data['gasOilNo'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">升数:<span>' + data['gasOilLiters'] + '升</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">实际加油升数以油站加油机为准!</td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr><td style="float: left;margin-top: 10px;font-size: 30px;color: black">加油金额</td></tr>\n' + |
||||||
|
' <tr><td style="font-size: 30px;color: black">¥' + data['gasRefuelPrice'] + '元</td></tr>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr><td style="float: left;font-size: xx-small;color: black;margin-left: 25px;">开心又省钱; 来”嗨森逛“</td></tr>\n' + |
||||||
|
' </tbody>\n' + |
||||||
|
' </table>\n' + |
||||||
|
' </div>\n' + |
||||||
|
' <div style="float: left;margin-bottom: 50px;">\n' + |
||||||
|
' <div style="line-height: 30px; color:#000;">\n' + |
||||||
|
' <span style="font-size: 13px;float: left;width: 100%;">' + data['storeName'] + '</span>\n' + |
||||||
|
' <span style="font-size: 13px;float: left;width: 100%;margin-left: 60px;">(收银员存根)</span>\n' + |
||||||
|
' </div>\n' + |
||||||
|
' <table style="width: 100%;">\n' + |
||||||
|
' <tbody>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">流水号:<span>' + data['orderNo'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">时间:<span>' + data['createTime'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">来源:<span>嗨森逛</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">油枪:<span>' + data['gasGunNo'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">油品:<span>' + data['gasOilNo'] + '</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">升数:<span>' + data['gasOilLiters'] + '升</span></td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr>\n' + |
||||||
|
' <td style="font-size: xx-small;color: black;">实际加油升数以油站加油机为准!</td>\n' + |
||||||
|
' </tr>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr><td style="float: left;margin-top: 10px;font-size: 30px;color: black">加油金额</td></tr>\n' + |
||||||
|
' <tr><td style="font-size: 30px;color: black">¥' + data['gasRefuelPrice'] + '元</td></tr>\n' + |
||||||
|
' <tr><td style="font-size: xx-small;color: black;">-------------------------------------------</td></tr>\n' + |
||||||
|
' <tr><td style="float: left;font-size: xx-small;color: black;margin-left: 25px;">开心又省钱; 来”嗨森逛“</td></tr>\n' + |
||||||
|
' </tbody>\n' + |
||||||
|
' </table>\n' + |
||||||
|
' </div>\n' + |
||||||
|
'</div>'; |
||||||
|
// const oldstr = document.body.innerHTML;
|
||||||
|
// document.body.innerHTML = headstr + newstr + footstr;
|
||||||
|
const newWindow = window.open('', ''); |
||||||
|
newWindow.document.write(headstr + newstr + footstr); |
||||||
|
newWindow.print(); |
||||||
|
newWindow.close(); |
||||||
|
// document.body.innerHTML = oldstr;
|
||||||
|
// location.reload();
|
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
export class PrintData { |
||||||
|
// 油站名称
|
||||||
|
gasName = ''; |
||||||
|
// 订单号
|
||||||
|
orderNo = ''; |
||||||
|
// 下单时间
|
||||||
|
createTime = ''; |
||||||
|
// 油品
|
||||||
|
gasOilNo = ''; |
||||||
|
// 加油抢号
|
||||||
|
gasGunNo = ''; |
||||||
|
// 加油升数
|
||||||
|
gasOilLiters = 0; |
||||||
|
// 加油金额
|
||||||
|
oilPrice = 0; |
||||||
|
} |
Loading…
Reference in new issue