From 6aa02cc57b6cb9e59884f9aa8fd7244382b8a7c0 Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Thu, 8 Aug 2024 16:55:16 +0800 Subject: [PATCH 1/6] 1 --- src/app/data/goods/goods.namespace.ts | 32 ++- .../order-starbucks.component.html | 202 ++++++++++++++++++ .../order-starbucks.component.less | 9 + .../order-starbucks.component.ts | 177 +++++++++++++++ src/app/pages/trade/trade.routes.ts | 2 + .../pipes/goods/order-child-status.pipe.ts | 28 +++ .../pipes/goods/order-starbucks-type.pipe.ts | 32 +++ src/app/pipes/goods/order-starbucks.pipe.ts | 32 +++ src/app/pipes/goods/pay-type.pipe.ts | 25 +++ src/app/services/common/icon.service.ts | 14 ++ .../services/trade/order-starbucks.service.ts | 24 +++ src/app/services/trade/order.service.ts | 23 ++ src/app/utils/dateUtils.service.ts | 19 ++ 13 files changed, 618 insertions(+), 1 deletion(-) create mode 100644 src/app/pages/trade/order-starbucks/order-starbucks.component.html create mode 100644 src/app/pages/trade/order-starbucks/order-starbucks.component.less create mode 100644 src/app/pages/trade/order-starbucks/order-starbucks.component.ts create mode 100644 src/app/pipes/goods/order-child-status.pipe.ts create mode 100644 src/app/pipes/goods/order-starbucks-type.pipe.ts create mode 100644 src/app/pipes/goods/order-starbucks.pipe.ts create mode 100644 src/app/pipes/goods/pay-type.pipe.ts create mode 100644 src/app/services/common/icon.service.ts create mode 100644 src/app/services/trade/order-starbucks.service.ts create mode 100644 src/app/services/trade/order.service.ts diff --git a/src/app/data/goods/goods.namespace.ts b/src/app/data/goods/goods.namespace.ts index ce12f75..514be3f 100644 --- a/src/app/data/goods/goods.namespace.ts +++ b/src/app/data/goods/goods.namespace.ts @@ -11,7 +11,14 @@ export const orderGoodsStatus = [ {name: "已退货" , key: 7}, {name: "待支付" , key: 8} ]; - +export const orderGoodsChild = [ + {name: "待支付" , key: 1} , + {name: "已支付" , key: 2}, + {name: "已完成" , key: 3}, + {name: "已退款" , key: 4}, + {name: "已取消" , key: 5}, + {name: "退款中" , key: 6} +]; export const orderCinemaStatus = [ {name: "未上送" , key: 0} , @@ -21,3 +28,26 @@ export const orderCinemaStatus = [ {name: "已取消" , key: -5}, ]; +export const orderStarbucksStatus = [ + {name: "待付款" , key: 0} , + {name: "已支付" , key: 5}, + {name: "出单中" , key: 10}, + {name: "出单成功" , key: 15}, + {name: "配送中" , key: 20}, + {name: "配送完成" , key: 25}, + {name: "已取消" , key: -5}, + {name: "失败" , key: -10}, + +]; +export const orderPayType = [ + {name: "微信" , key: 1} , + {name: "支付宝" , key: 2}, + {name: "快捷支付" , key: 3}, + {name: "工会卡" , key: 4} +]; + +export const hltLogo = "./assets/order/hlt.png"; +export const gzBankLogo = "./assets/order/gzbank.png"; +export const wxLogo = "./assets/order/wx.png"; +export const aliLogo = "./assets/order/ali.png"; +export const noPayLogo = "./assets/order/noPay.png"; diff --git a/src/app/pages/trade/order-starbucks/order-starbucks.component.html b/src/app/pages/trade/order-starbucks/order-starbucks.component.html new file mode 100644 index 0000000..3235114 --- /dev/null +++ b/src/app/pages/trade/order-starbucks/order-starbucks.component.html @@ -0,0 +1,202 @@ +
+
+
+ + 商品名称 + + + + +
+
+ + 门店名称 + + + + +
+
+ + 门店地址 + + + + +
+ +
+ + 订单号 + + + + +
+
+ + 用户手机号 + + + + +
+
+ + 订单状态 + + + + + + +
+
+ + 支付类型 + + + + + + +
+
+ + 创建时间 + + + + +
+ +
+ + +
+
+
+ + + + + 商品名称 + 门店名称 + 门店地址 + 用户手机号 + 订单号 + 子订单号 + 渠道订单号 + 订单价格 + + 创建时间 + 更新时间 + 支付类型 + 状态 + 操作 + + + + + {{data.productName}} | {{data.productSpecName}} + {{data.storeName}} + {{data.storeAddress}} + {{data.userPhone}} + {{data.orderNo}} + {{data.childOrderNo}} + {{data.channelOrderNo}} + ¥{{data.productPrice}} + + {{ data.createTime | date: 'yyyy-MM-dd HH:mm'}} + {{ data.updateTime | date: 'yyyy-MM-dd HH:mm'}} + + + + {{data.status | orderChildStatus}} + + 详情 + + + + 总计 {{ total }} 条 + + + + + + + + + +

+
+ {{ orderGoodsData?.userPhone }} + + + + {{ orderChild?.business['storeName'] }} + {{ orderChild?.business['storeAddress'] }} + +
+
+ + + + + 产品名称 + 产品图片 + 规格 + 数量 + 单价 + 总价 + + + + + {{data.name}} + + + + {{data.speList}} + {{data.num}} + ¥{{data.price}} + ¥{{data.totalPrice}} + + + + + + + {{ orderChild?.orderNo }} + {{ orderChild?.childOrderNo }} + {{ orderGoodsData?.paySerialNo }} + ¥{{ orderGoodsData?.totalPrice }} + ¥{{ orderChild?.couponDiscountPrice }} + ¥{{ orderChild?.integralDiscountPrice/100 }} + ¥{{ orderChild?.totalDeductionPrice }} + ¥{{ orderGoodsData?.payRealPrice }} + + + + + {{ orderGoodsData?.createTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.payTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.cancelTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.refundTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.finishTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.updateTime | date: 'yyyy-MM-dd HH:mm' }} + + +
+ +
+
diff --git a/src/app/pages/trade/order-starbucks/order-starbucks.component.less b/src/app/pages/trade/order-starbucks/order-starbucks.component.less new file mode 100644 index 0000000..cb045d5 --- /dev/null +++ b/src/app/pages/trade/order-starbucks/order-starbucks.component.less @@ -0,0 +1,9 @@ +.search-area { + margin-bottom: 10px; +} +.search-area button { + margin-right: 8px; +} +.fontColor { + color: red; +} diff --git a/src/app/pages/trade/order-starbucks/order-starbucks.component.ts b/src/app/pages/trade/order-starbucks/order-starbucks.component.ts new file mode 100644 index 0000000..69ad36c --- /dev/null +++ b/src/app/pages/trade/order-starbucks/order-starbucks.component.ts @@ -0,0 +1,177 @@ +import { Component } from '@angular/core'; +import {FormGroup, NonNullableFormBuilder, ReactiveFormsModule} from "@angular/forms"; +import {NzMessageService} from "ng-zorro-antd/message"; +import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; +import {NzFormControlComponent, NzFormDirective, NzFormLabelComponent, NzFormModule} from "ng-zorro-antd/form"; +import {NzInputDirective} from "ng-zorro-antd/input"; +import {NzDatePickerComponent, NzRangePickerComponent} from "ng-zorro-antd/date-picker"; +import {NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent} from "ng-zorro-antd/radio"; +import {DatePipe, NgClass, NgForOf, NgIf, NgOptimizedImage} from "@angular/common"; +import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select"; +import {NzButtonComponent} from "ng-zorro-antd/button"; +import {NzCellFixedDirective, NzTableComponent, NzTableModule, NzThMeasureDirective} from "ng-zorro-antd/table"; +import {NzModalComponent, NzModalContentDirective, NzModalModule} from "ng-zorro-antd/modal"; +import {NzTabComponent, NzTabSetComponent} from "ng-zorro-antd/tabs"; +import {NzDescriptionsComponent, NzDescriptionsItemComponent} from "ng-zorro-antd/descriptions"; +import {NzImageDirective, NzImageGroupComponent, NzImageModule} from "ng-zorro-antd/image"; +import {OrderStarbucksService} from "../../../services/trade/order-starbucks.service"; +import {OrderStarbucksPipe} from "../../../pipes/goods/order-starbucks.pipe"; +import { + fallbackImg, + orderGoodsChild, + orderPayType, +} from "../../../data/goods/goods.namespace"; +import {DateUtils} from "../../../utils/dateUtils.service"; +import {OrderChildStatusPipe} from "../../../pipes/goods/order-child-status.pipe"; +import {OrderService} from "../../../services/trade/order.service"; +import {OrderCinemaStatusPipe} from "../../../pipes/goods/order-cinema-status.pipe"; +import {PayTypePipe} from "../../../pipes/goods/pay-type.pipe"; +import {NzIconDirective, NzIconService} from "ng-zorro-antd/icon"; +import {IconService} from "../../../services/common/icon.service"; +import {NzBadgeComponent} from "ng-zorro-antd/badge"; +import {OrderStarbucksTypePipe} from "../../../pipes/goods/order-starbucks-type.pipe"; + +@Component({ + selector: 'app-order-starbucks', + standalone: true, + imports: [ + ReactiveFormsModule, + NzRowDirective, + NzFormLabelComponent, + NzFormControlComponent, + NzColDirective, + NzInputDirective, + NzDatePickerComponent, + NzRadioGroupComponent, + NzRadioButtonDirective, + NzTableModule, + NzModalModule, + NzFormModule, + NgForOf, + NzRadioComponent, + NzSelectComponent, + NzButtonComponent, + NzTableComponent, + NzThMeasureDirective, + NzCellFixedDirective, + NgClass, + DatePipe, + NzModalComponent, + NzTabSetComponent, + NzDescriptionsComponent, + NzTabComponent, + NzDescriptionsItemComponent, + NzImageGroupComponent, + NzImageDirective, + NzFormDirective, + NzImageModule, + NzModalContentDirective, + OrderStarbucksPipe, + NzOptionComponent, + NzRangePickerComponent, + OrderChildStatusPipe, + NgIf, + OrderCinemaStatusPipe, + PayTypePipe, + NgOptimizedImage, + NzIconDirective, + NzBadgeComponent, + OrderStarbucksTypePipe + ], + templateUrl: './order-starbucks.component.html', + styleUrl: './order-starbucks.component.less' +}) +export class OrderStarbucksComponent { + // 表单页数 + tablePageNum = 1; + // 表单数据 + tableData: any = { + total: 0, + loading: false, + list: [], + }; + // 搜索表单 + searchForm: FormGroup; + orderDetailModal = false; + orderGoodsData: any; + orderChild: any; + + protected readonly orderGoodsChild = orderGoodsChild; + protected readonly orderPayType = orderPayType; + + constructor(private fb: NonNullableFormBuilder, + private msg: NzMessageService, + private iconService: IconService, + private orderService: OrderService, + private orderStarbucks: OrderStarbucksService) { + + // 初始化搜索框 + this.searchForm = this.fb.group({ + orderNo: [''], + childOrderNo: [''], + userPhone: [''], + productName: [''], + storeName: [''], + storeAddress: [''], + createTimeArray: [[]], + createTimeS: [''], + createTimeE: [''], + goodsName: [''], + payType: [''], + status: [''], + }); + this.getRequest(); + } + + // 查询列表 + public getRequest(reset: boolean = false) { + + if (this.searchForm.controls['createTimeArray'].value != null + && this.searchForm.controls['createTimeArray'].value.length > 0) { + this.searchForm.controls['createTimeS'].setValue(DateUtils.getDateHMS(new Date(this.searchForm.controls['createTimeArray'].value[0]) , 1).getTime()); + this.searchForm.controls['createTimeE'].setValue(DateUtils.getDateHMS(new Date(this.searchForm.controls['createTimeArray'].value[1]) , 2).getTime()); + } else { + this.searchForm.controls['createTimeS'].setValue(null) + this.searchForm.controls['createTimeE'].setValue(null) + } + + this.tableData.loading = true; + if (reset) { + this.tablePageNum = 1; + } + this.searchForm.value.pageNum = this.tablePageNum; + this.searchForm.value.pageSize = 10; + this.searchForm.value.time = new Date().getTime(); + + this.orderStarbucks.getListStarbucks(this.searchForm.value , (data: any) => { + if (data['return_code'] == '000000') { + this.tableData = data['return_data']; + } else { + this.msg.error(data['return_msg']); + } + this.tableData.loading = false; + }); + } + + // 重制 + public reset() { + this.searchForm.reset(); + this.getRequest(); + } + + // 查询详情 + showDetail(orderNo: string): void { + this.orderService.queryOrder(orderNo , (data: any) => { + if (data['return_code'] == '000000') { + this.orderGoodsData = data['return_data']; + this.orderChild = this.orderGoodsData['orderChildList'][0] + } else { + this.msg.error(data['return_msg']); + } + }) + this.orderDetailModal = true; + } + + + protected readonly fallbackImg = fallbackImg; +} diff --git a/src/app/pages/trade/trade.routes.ts b/src/app/pages/trade/trade.routes.ts index e7cedec..c018d56 100644 --- a/src/app/pages/trade/trade.routes.ts +++ b/src/app/pages/trade/trade.routes.ts @@ -4,6 +4,7 @@ import {OrderAfterSalesComponent} from "./order-after-sales/order-after-sales.co import {GoodsListComponent} from "./goods-list/goods-list.component"; import {OrderRefundComponent} from "./order-refund/order-refund.component"; import {OrderCinemaComponent} from "./order-cinema/order-cinema.component"; +import {OrderStarbucksComponent} from "./order-starbucks/order-starbucks.component"; export const TRADE_ROUTES: Routes = [ { path: 'goods-list', component: GoodsListComponent }, @@ -11,4 +12,5 @@ export const TRADE_ROUTES: Routes = [ { path: 'order-after-sales', component: OrderAfterSalesComponent }, { path: 'order-refund', component: OrderRefundComponent }, { path: 'order-cinema', component: OrderCinemaComponent }, + { path: 'order-starbucks', component: OrderStarbucksComponent }, ]; diff --git a/src/app/pipes/goods/order-child-status.pipe.ts b/src/app/pipes/goods/order-child-status.pipe.ts new file mode 100644 index 0000000..5fd6ba5 --- /dev/null +++ b/src/app/pipes/goods/order-child-status.pipe.ts @@ -0,0 +1,28 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'orderChildStatus', + standalone: true +}) +export class OrderChildStatusPipe implements PipeTransform { + + transform(value: number): any { + switch (value) { + case 1: + return '待支付'; + case 2: + return '已支付'; + case 3: + return '已完成'; + case 4: + return '已退款'; + case 5: + return '已取消'; + case 6: + return '退款中'; + default: + return '未知状态' + } + } + +} diff --git a/src/app/pipes/goods/order-starbucks-type.pipe.ts b/src/app/pipes/goods/order-starbucks-type.pipe.ts new file mode 100644 index 0000000..cb51a51 --- /dev/null +++ b/src/app/pipes/goods/order-starbucks-type.pipe.ts @@ -0,0 +1,32 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'orderStarbucksType', + standalone: true +}) +export class OrderStarbucksTypePipe implements PipeTransform { + + transform(value: number): any { + switch (value) { + case 0: + return 'warning'; + case 5: + return 'processing'; + case 10: + return 'processing'; + case 15: + return 'success'; + case 20: + return 'processing'; + case 25: + return 'success'; + case -5: + return 'default'; + case -10: + return 'error'; + default: + return 'error' + } + } + +} diff --git a/src/app/pipes/goods/order-starbucks.pipe.ts b/src/app/pipes/goods/order-starbucks.pipe.ts new file mode 100644 index 0000000..b19f57d --- /dev/null +++ b/src/app/pipes/goods/order-starbucks.pipe.ts @@ -0,0 +1,32 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'orderStarbucks', + standalone: true +}) +export class OrderStarbucksPipe implements PipeTransform { + + + transform(value: number): any { + switch (value) { + case 0: + return '待付款'; + case 5: + return '已支付'; + case 10: + return '出单中'; + case 15: + return '出单成功'; + case 20: + return '配送中'; + case 25: + return '配送完成'; + case -5: + return '已取消'; + case -10: + return '失败'; + default: + return '未知状态' + } + } +} diff --git a/src/app/pipes/goods/pay-type.pipe.ts b/src/app/pipes/goods/pay-type.pipe.ts new file mode 100644 index 0000000..5eae8f9 --- /dev/null +++ b/src/app/pipes/goods/pay-type.pipe.ts @@ -0,0 +1,25 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import {aliLogo, gzBankLogo, hltLogo, noPayLogo, wxLogo} from "../../data/goods/goods.namespace"; + +@Pipe({ + name: 'payType', + standalone: true +}) +export class PayTypePipe implements PipeTransform { + + transform(value: number): any { + switch (value) { + case 1: + return "icon-weixin"; + case 2: + return "icon-zhifubao"; + case 3: + return "icon-guizhouyinhanglogo"; + case 4: + return "icon-work_icon_party-01"; + default: + return "icon-daizhifu" + } + } + +} diff --git a/src/app/services/common/icon.service.ts b/src/app/services/common/icon.service.ts new file mode 100644 index 0000000..5189b6d --- /dev/null +++ b/src/app/services/common/icon.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import {NzIconService} from "ng-zorro-antd/icon"; + +@Injectable({ + providedIn: 'root' +}) +export class IconService { + + constructor(private iconService: NzIconService) { + this.iconService.fetchFromIconfont({ + scriptUrl: 'https://at.alicdn.com/t/c/font_4647823_zeitf111aa.js' + }); + } +} diff --git a/src/app/services/trade/order-starbucks.service.ts b/src/app/services/trade/order-starbucks.service.ts new file mode 100644 index 0000000..5de0c4e --- /dev/null +++ b/src/app/services/trade/order-starbucks.service.ts @@ -0,0 +1,24 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {environment} from "../../../environments/environment"; +import {ObjectData} from "../../utils/objectData.service"; + +@Injectable({ + providedIn: 'root' +}) +export class OrderStarbucksService { + + constructor(private http: HttpClient) { } + + /** + * 查询订单列表 + * @param param + * @param callBack + */ + public getListStarbucks(param: object, callBack:any) { + this.http.get(environment.orderUrl + 'orderStarbucks/getListStarbucks?'+ObjectData.objectByString(param)).subscribe(data => { + callBack(data); + }); + } + +} diff --git a/src/app/services/trade/order.service.ts b/src/app/services/trade/order.service.ts new file mode 100644 index 0000000..8a5d404 --- /dev/null +++ b/src/app/services/trade/order.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {environment} from "../../../environments/environment"; +import {ObjectData} from "../../utils/objectData.service"; + +@Injectable({ + providedIn: 'root' +}) +export class OrderService { + + constructor(private http: HttpClient) { } + + /** + * 查询订单 + * @param orderNo + * @param callBack + */ + public queryOrder(orderNo: string, callBack:any) { + this.http.get(environment.orderUrl + 'queryOrder?orderNo='+ orderNo).subscribe(data => { + callBack(data); + }); + } +} diff --git a/src/app/utils/dateUtils.service.ts b/src/app/utils/dateUtils.service.ts index 7ef2e54..05bbb81 100644 --- a/src/app/utils/dateUtils.service.ts +++ b/src/app/utils/dateUtils.service.ts @@ -119,4 +119,23 @@ export class DateUtils { return returnObj; } + + /** + * 获取时间 + * @param currentDate 当前时间 + * @param type 1;开始时间 2:结束时间 + */ + public static getDateHMS(currentDate: Date , type: number): any { + if (type == 1) { + currentDate.setHours(0); + currentDate.setMinutes(0); + currentDate.setSeconds(0); + } + if (type == 2) { + currentDate.setHours(23); + currentDate.setMinutes(59); + currentDate.setSeconds(59); + } + return currentDate; + } } From a413dc9ce481b9bc08a74888ff0b1d75d9cf9e3b Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Mon, 12 Aug 2024 10:21:55 +0800 Subject: [PATCH 2/6] 1 --- src/app/data/goods/goods.namespace.ts | 17 +- .../goods-list/goods-list.component.html | 113 ++++--- .../trade/goods-list/goods-list.component.ts | 46 ++- .../goods-logistics-list.component.html | 274 +++++++++++++++++ .../goods-logistics-list.component.less | 6 + .../goods-logistics-list.component.ts | 284 ++++++++++++++++++ .../order-cinema/order-cinema.component.ts | 2 - src/app/pages/trade/trade.routes.ts | 2 + .../pipes/order/order-goods-status.pipe.ts | 32 -- src/environments/environment.ts | 16 +- 10 files changed, 667 insertions(+), 125 deletions(-) create mode 100644 src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html create mode 100644 src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.less create mode 100644 src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts delete mode 100644 src/app/pipes/order/order-goods-status.pipe.ts diff --git a/src/app/data/goods/goods.namespace.ts b/src/app/data/goods/goods.namespace.ts index 514be3f..427ceff 100644 --- a/src/app/data/goods/goods.namespace.ts +++ b/src/app/data/goods/goods.namespace.ts @@ -1,15 +1,14 @@ export const fallbackImg = 'data:image/png;base64,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'; -export const orderGoodsStatus = [ - {name: "待发货" , key: 1} , - {name: "已发货" , key: 2}, - {name: "配送中" , key: 3}, - {name: "已送达" , key: 4}, - {name: "已取消" , key: 5}, - {name: "退货中" , key: 6}, - {name: "已退货" , key: 7}, - {name: "待支付" , key: 8} +export const logisticsStatus = [ + {name: "派件中" , key: "DELIVERING"} , + {name: "运输中" , key: "TRANSPORT"}, + {name: "已代签收" , key: "AGENT_SIGN"}, + {name: "已签收" , key: "SIGN"}, + {name: "已揽收" , key: "ACCEPT"}, + {name: "包裹异常" , key: "FAILED"}, + {name: "待揽收" , key: "WAIT_ACCEPT"} ]; export const orderGoodsChild = [ {name: "待支付" , key: 1} , diff --git a/src/app/pages/trade/goods-list/goods-list.component.html b/src/app/pages/trade/goods-list/goods-list.component.html index c456ac6..78ad508 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.html +++ b/src/app/pages/trade/goods-list/goods-list.component.html @@ -26,25 +26,22 @@
- 用户手机号 + 子订单号 - +
- -
+
- 创建时间 + 用户手机号 - - - - +
-
+ +
商品分类 @@ -57,7 +54,7 @@
-
+
商品品牌 @@ -68,25 +65,48 @@
- -
+
+ + 物流状态 + + + + + + +
+
+ + 支付类型 + + + + + + +
+
- 订单状态 + 支付状态 - +
+
+ + 创建时间 + + + + +
- - - 更多查询条件 - - +
@@ -103,7 +123,7 @@ [nzData]="tableData.list" > - 商品名称 + 商品名称 商户名称 商品图片 商品分类 @@ -112,10 +132,12 @@ 订单号 子订单号 物流单号 - 创建时间 - 更新时间 - 物流状态 - 操作 + 创建时间 + 更新时间 + 支付类型 + 支付状态 + 物流状态 + 操作 @@ -134,8 +156,19 @@ {{ data.createTime | date: 'yyyy-MM-dd HH:mm'}} {{ data.updateTime | date: 'yyyy-MM-dd HH:mm'}} - {{data.status | orderGoodsStatus}} - {{data.logisticsStatusDesc}} + + + + {{data.status | orderChildStatus}} + + + + + + + + + 详情 @@ -146,7 +179,6 @@ @@ -173,9 +205,6 @@ - - {{orderGoodsData.status | orderGoodsStatus}} - @@ -210,13 +239,11 @@ {{ orderGoodsData?.updateTime | date: 'yyyy-MM-dd HH:mm' }} - - + + {{deliveryAddress?.consignee}} {{ deliveryAddress?.phone }} - {{ deliveryAddress?.regionName }} - {{ deliveryAddress?.address }} - {{deliveryAddress?.consignee}} -{{ deliveryAddress?.phone }} -{{ deliveryAddress?.address }} + {{ deliveryAddress?.regionName }} -{{deliveryAddress?.consignee}} -{{ deliveryAddress?.phone }} -{{ deliveryAddress?.address }} @@ -225,20 +252,6 @@ - - -
-
- - 物流单号 - - - - -
-
-
-
diff --git a/src/app/pages/trade/goods-list/goods-list.component.ts b/src/app/pages/trade/goods-list/goods-list.component.ts index 5471a43..bc6d458 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.ts +++ b/src/app/pages/trade/goods-list/goods-list.component.ts @@ -18,11 +18,10 @@ import {NzTreeSelectComponent} from "ng-zorro-antd/tree-select"; import {environment} from "../../../../environments/environment"; import {NzMessageService} from "ng-zorro-antd/message"; import {GoodsService} from "../../../services/goods/goods.service"; -import {fallbackImg, orderGoodsStatus} from '../../../data/goods/goods.namespace'; +import {fallbackImg, logisticsStatus, orderGoodsChild, orderPayType} from '../../../data/goods/goods.namespace'; import {GoodsStatusPipe} from "../../../pipes/goods/goods-status.pipe"; import {NzModalModule} from "ng-zorro-antd/modal"; import {OrderGoodsService} from "../../../services/trade/order-goods.service"; -import {OrderGoodsStatusPipe} from "../../../pipes/order/order-goods-status.pipe"; import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; import {NzMenuDirective, NzMenuItemComponent} from "ng-zorro-antd/menu"; import {NzPopconfirmDirective} from "ng-zorro-antd/popconfirm"; @@ -39,6 +38,9 @@ import {NzResultComponent} from "ng-zorro-antd/result"; import {DateSelectType, DateUtils} from "../../../utils/dateUtils.service"; import {NzDatePickerComponent, NzRangePickerComponent} from "ng-zorro-antd/date-picker"; import {NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent} from "ng-zorro-antd/radio"; +import {PayTypePipe} from "../../../pipes/goods/pay-type.pipe"; +import {IconService} from "../../../services/common/icon.service"; +import {OrderChildStatusPipe} from "../../../pipes/goods/order-child-status.pipe"; @Component({ selector: 'app-goods-list', @@ -63,7 +65,6 @@ import {NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent} from "n NzImageDirective, GoodsStatusPipe, DatePipe, - OrderGoodsStatusPipe, NzDropdownMenuComponent, NgIf, NzMenuDirective, @@ -89,6 +90,8 @@ import {NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent} from "n NzRadioComponent, NzRadioGroupComponent, NzRangePickerComponent, + PayTypePipe, + OrderChildStatusPipe, ], templateUrl: './goods-list.component.html', @@ -121,16 +124,15 @@ export class GoodsListComponent { logisticsTraceDetails: any; goodsOrderId: any; deliveryAddress: any; - // 时间类型选择 - dateTypeSelect = DateSelectType; - // 更多查询条件 - isCollapse = false; + protected readonly fallbackImg = fallbackImg; - protected readonly orderGoodsStatus = orderGoodsStatus; + protected readonly logisticsStatus = logisticsStatus; + protected readonly orderGoodsChild = orderGoodsChild; constructor(private fb: NonNullableFormBuilder, private msg: NzMessageService, + private iconService: IconService, private orderGoodsService: OrderGoodsService, private goodsService: GoodsService) { @@ -139,6 +141,8 @@ export class GoodsListComponent { this.searchForm = this.fb.group({ logisticsNo: [''], orderNo: [''], + childOrderNo: [''], + logisticsStatus: [''], goodsType: [''], goodsBrand: [''], userPhone: [''], @@ -148,11 +152,9 @@ export class GoodsListComponent { createTimeS: [''], createTimeE: [''], goodsName: [''], - payType: [''], status: [''], + payType: [''], }); - - this.createTimeInit(); this.getRequest(); this.getGoodsTypeNode(); this.getGoodsBrandNode(); @@ -164,8 +166,8 @@ export class GoodsListComponent { if (this.searchForm.controls['createTimeArray'].value != null && this.searchForm.controls['createTimeArray'].value.length > 0) { - this.searchForm.controls['createTimeS'].setValue(new Date(this.searchForm.controls['createTimeArray'].value[0]).getTime()); - this.searchForm.controls['createTimeE'].setValue(new Date(this.searchForm.controls['createTimeArray'].value[1]).getTime()); + this.searchForm.controls['createTimeS'].setValue(DateUtils.getDateHMS(new Date(this.searchForm.controls['createTimeArray'].value[0]) , 1).getTime()); + this.searchForm.controls['createTimeE'].setValue(DateUtils.getDateHMS(new Date(this.searchForm.controls['createTimeArray'].value[1]) , 2).getTime()); } else { this.searchForm.controls['createTimeS'].setValue(null) this.searchForm.controls['createTimeE'].setValue(null) @@ -189,6 +191,12 @@ export class GoodsListComponent { }); } + // 重制 + public reset() { + this.searchForm.reset(); + this.getRequest(); + } + // 获取商品分类 getGoodsTypeNode() { this.goodsService.getList({time: new Date().getTime()}, (data: any) => { @@ -198,17 +206,6 @@ export class GoodsListComponent { }); } - /** - * 创建时间初始化 - */ - createTimeInit() { - let createTimeSelect = this.searchForm.controls['createTimeSelect'].value; - if (createTimeSelect != null) { - let timeObj = DateUtils.getDate(new Date(), Number(createTimeSelect)); - this.searchForm.controls['createTimeArray'].setValue([timeObj.timeS, timeObj.timeE]); - } - } - // 配置数据 getNode(array: any): any { array.forEach((item: any) => { @@ -290,4 +287,5 @@ export class GoodsListComponent { } + protected readonly orderPayType = orderPayType; } diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html new file mode 100644 index 0000000..effed5e --- /dev/null +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html @@ -0,0 +1,274 @@ +
+
+
+ + 商品名称 + + + + +
+
+ + 物流订单号 + + + + +
+
+ + 订单号 + + + + +
+
+ + 子订单号 + + + + +
+
+ + 用户手机号 + + + + +
+ +
+ + 商品分类 + + + + +
+
+ + 商品品牌 + + + + + + +
+ +
+ + 物流状态 + + + + + + +
+
+ + 支付类型 + + + + + + +
+
+ + 创建时间 + + + + +
+ +
+ + +
+
+
+ + + + + 商品名称 + 商户名称 + 商品图片 + 商品分类 + 商品品牌 + 用户手机号 + 订单号 + 子订单号 + 物流单号 + 创建时间 + 更新时间 + 支付类型 + 支付状态 + 物流状态 + 操作 + + + + + {{data.goodsName}} - {{data.goodsSpecsName}} + {{data.merName}} + + + + {{data.goodsTypeName}} + {{data.goodsBrandName}} + {{data.userPhone}} + {{data.orderNo}} + {{data.childOrderNo}} + {{data.logisticsNo}} + {{ data.createTime | date: 'yyyy-MM-dd HH:mm'}} + {{ data.updateTime | date: 'yyyy-MM-dd HH:mm'}} + + + + + {{data.status | orderChildStatus}} + + + + + + + + + + + + 详情 + + + 更多 + + + + + + + + + 总计 {{ total }} 条 + + + + + + + + {{orderGoodsData?.goodsName}} - {{orderGoodsData?.goodsSpecsName}} + {{ orderGoodsData?.userPhone }}//. + 0 {{ orderGoodsData?.goodsTypeName }} + {{ orderGoodsData?.goodsBrandName }} + {{ orderGoodsData?.goodsSpecsOriginalPrice }} + {{ orderGoodsData?.goodsCount }} + + + + + + + + + + + + + + + + + + + + + {{ orderGoodsData?.orderNo }} + {{ orderGoodsData?.childOrderNo }} + {{ orderGoodsData?.paySerialNo }} + {{ orderGoodsData?.totalPrice }} + {{ orderGoodsData?.couponDiscountPrice }} + {{ orderGoodsData?.integralDiscountPrice }} + {{ orderGoodsData?.totalDeductionPrice }} + {{ orderGoodsData?.payRealPrice }} + + + + + {{ orderGoodsData?.createTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.payTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.cancelTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.refundTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.finishTime | date: 'yyyy-MM-dd HH:mm' }} + {{ orderGoodsData?.updateTime | date: 'yyyy-MM-dd HH:mm' }} + + + + + {{deliveryAddress?.consignee}} + {{ deliveryAddress?.phone }} + {{ deliveryAddress?.regionName }} -{{deliveryAddress?.consignee}} -{{ deliveryAddress?.phone }} -{{ deliveryAddress?.address }} + + + + + + + + + + +
+
+ + 物流单号 + + + + +
+
+
+
+ + + + + + +

{{item['desc']}}

+

{{item.time | date : 'yyyy-MM-dd HH:mm:ss'}}

+
+
+ +
+
+
diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.less b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.less new file mode 100644 index 0000000..4056a86 --- /dev/null +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.less @@ -0,0 +1,6 @@ +.search-area { + margin-bottom: 10px; +} +.search-area button { + margin-right: 8px; +} diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts new file mode 100644 index 0000000..6124b27 --- /dev/null +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts @@ -0,0 +1,284 @@ +import { Component } from '@angular/core'; +import {FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule} from "@angular/forms"; +import {NzMessageService} from "ng-zorro-antd/message"; +import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; +import { NzFormDirective, NzFormModule} from "ng-zorro-antd/form"; +import {NzInputDirective} from "ng-zorro-antd/input"; +import {NzDatePickerComponent, NzRangePickerComponent} from "ng-zorro-antd/date-picker"; +import {NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent} from "ng-zorro-antd/radio"; +import {NzCellFixedDirective, NzTableComponent, NzTableModule, NzThMeasureDirective} from "ng-zorro-antd/table"; +import {NzModalComponent, NzModalContentDirective, NzModalModule} from "ng-zorro-antd/modal"; +import {DatePipe, NgClass, NgForOf, NgIf, NgOptimizedImage} from "@angular/common"; +import {NzOptionComponent, NzSelectComponent} from "ng-zorro-antd/select"; +import {NzButtonComponent} from "ng-zorro-antd/button"; +import {NzTabSetComponent, NzTabsModule} from "ng-zorro-antd/tabs"; +import {NzDescriptionsModule} from "ng-zorro-antd/descriptions"; +import {NzImageDirective, NzImageModule} from "ng-zorro-antd/image"; + +import {NzIconDirective} from "ng-zorro-antd/icon"; +import {NzBadgeComponent} from "ng-zorro-antd/badge"; +import {fallbackImg, logisticsStatus, orderPayType} from '../../../data/goods/goods.namespace'; +import {NzDividerComponent} from "ng-zorro-antd/divider"; +import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; +import {NzMenuDirective, NzMenuItemComponent} from "ng-zorro-antd/menu"; +import {NzResultComponent} from "ng-zorro-antd/result"; +import {NzSpinComponent} from "ng-zorro-antd/spin"; +import {NzTimelineComponent, NzTimelineItemComponent} from "ng-zorro-antd/timeline"; +import {NzTreeSelectComponent} from "ng-zorro-antd/tree-select"; +import {environment} from "../../../../environments/environment"; +import {OrderGoodsService} from "../../../services/trade/order-goods.service"; +import {GoodsService} from "../../../services/goods/goods.service"; +import {OrderGoodsData} from "../../../model/order.interface"; +import {GoodsStatusPipe} from "../../../pipes/goods/goods-status.pipe"; +import {NzPopconfirmDirective} from "ng-zorro-antd/popconfirm"; +import {AuditStatusPipe} from "../../../pipes/audit/audit-status.pipe"; +import {IconService} from "../../../services/common/icon.service"; +import {PayTypePipe} from "../../../pipes/goods/pay-type.pipe"; +import {OrderChildStatusPipe} from "../../../pipes/goods/order-child-status.pipe"; + +@Component({ + selector: 'app-goods-logistics-list', + standalone: true, + imports: [ + NzColDirective, + NzRowDirective, + NzFormDirective, + ReactiveFormsModule, + NzTreeSelectComponent, + NzInputDirective, + NzSelectComponent, + NzOptionComponent, + NzButtonComponent, + NzTableComponent, + NzImageModule, + NzModalModule, + NzTableModule, + NzFormModule, + NzThMeasureDirective, + NgForOf, + NzImageDirective, + GoodsStatusPipe, + DatePipe, + NzDropdownMenuComponent, + NgIf, + NzMenuDirective, + NzDescriptionsModule, + NzMenuItemComponent, + NzPopconfirmDirective, + NzDividerComponent, + NzDropDownADirective, + NzDropDownDirective, + NzTabsModule, + NzIconDirective, + NzBadgeComponent, + AuditStatusPipe, + NzTabSetComponent, + FormsModule, + NzSpinComponent, + NzTimelineItemComponent, + NgClass, + NzResultComponent, + NzTimelineComponent, + NzDatePickerComponent, + NzRadioButtonDirective, + NzRadioComponent, + NzRadioGroupComponent, + NzRangePickerComponent, + PayTypePipe, + OrderChildStatusPipe, + + ], + templateUrl: './goods-logistics-list.component.html', + styleUrl: './goods-logistics-list.component.less' +}) +export class GoodsLogisticsListComponent { + // 表单页数 + tablePageNum = 1; + // 表单数据 + tableData: any = { + total: 0, + loading: false, + list: [], + }; + // 搜索表单 + searchForm: FormGroup; + + baseUrl = environment.baseUrl; + imageUrl = environment.imageUrl; + + // 商品类型数据 + nodes = []; + nodesBrand = []; + orderGoodsData: any; + orderDetailModal = false; + isVisible = false; + orderDetailModalChild = false; + orderDetailModalLoading = false; + logisticsNo: any; + logisticsTraceDetails: any; + goodsOrderId: any; + deliveryAddress: any; + + + protected readonly fallbackImg = fallbackImg; + protected readonly orderPayType = orderPayType; + protected readonly logisticsStatus = logisticsStatus; + + constructor(private fb: NonNullableFormBuilder, + private msg: NzMessageService, + private iconService: IconService, + private orderGoodsService: OrderGoodsService, + private goodsService: GoodsService) { + + + // 初始化搜索框 + this.searchForm = this.fb.group({ + logisticsNo: [''], + orderNo: [''], + childOrderNo: [''], + goodsType: [''], + goodsBrand: [''], + userPhone: [''], + goodsSpecsName: [''], + createTimeArray: [[]], + createTimeSelect: ['1'], + createTimeS: [''], + createTimeE: [''], + goodsName: [''], + payType: [''], + status: [''], + logisticsStatus: [''], + }); + this.getRequest(); + this.getGoodsTypeNode(); + this.getGoodsBrandNode(); + + } + + // 查询列表 + public getRequest(reset: boolean = false) { + + this.searchForm.controls['status'].setValue(2) + if (this.searchForm.controls['createTimeArray'].value != null + && this.searchForm.controls['createTimeArray'].value.length > 0) { + this.searchForm.controls['createTimeS'].setValue(new Date(this.searchForm.controls['createTimeArray'].value[0]).getTime()); + this.searchForm.controls['createTimeE'].setValue(new Date(this.searchForm.controls['createTimeArray'].value[1]).getTime()); + } else { + this.searchForm.controls['createTimeS'].setValue(null) + this.searchForm.controls['createTimeE'].setValue(null) + } + + this.tableData.loading = true; + if (reset) { + this.tablePageNum = 1; + } + this.searchForm.value.pageNum = this.tablePageNum; + this.searchForm.value.pageSize = 10; + this.searchForm.value.time = new Date().getTime(); + + this.orderGoodsService.getListGoods(this.searchForm.value , (data: any) => { + if (data['return_code'] == '000000') { + this.tableData = data['return_data']; + } else { + this.msg.error(data['return_msg']); + } + this.tableData.loading = false; + }); + } + + // 获取商品分类 + getGoodsTypeNode() { + this.goodsService.getList({time: new Date().getTime()}, (data: any) => { + if (data['return_code'] === '000000') { + this.getNode(data['return_data']); + } + }); + } + + // 重制 + public reset() { + this.searchForm.reset(); + this.getRequest(); + } + + // 配置数据 + getNode(array: any): any { + array.forEach((item: any) => { + if (item.children) { + this.getNode(item.children); + }else { + item["isLeaf"] = true; + } + item["key"] = item.id; + + }); + this.nodes = array; + } + + // 获取商品品牌 + getGoodsBrandNode() { + this.goodsService.getListBrandAll( (data: any) => { + if (data['return_code'] == '000000') { + this.nodesBrand = data['return_data']; + } + }); + } + + getLogisticsNo(id: number): void { + this.goodsOrderId = id; + this.isVisible = true; + } + + showDetail(data: OrderGoodsData): void { + this.orderGoodsData = data; + this.findDeliveryAddressById(data.deliveryAddressId); + this.orderDetailModal = true; + } + + handleOk(): void { + let params = { + id: this.goodsOrderId, + logisticsNo: this.logisticsNo, + time: new Date().getTime() + } + + this.orderGoodsService.updateLogisticsNo(params , (data: any) => { + if (data['return_code'] == '000000') { + this.isVisible = false; + this.getRequest(false); + this.msg.success("成功") + } else { + this.msg.error(data['return_msg']); + } + }); + } + + showLogisticsNo(id: number): void { + let params = { + id:id, + time: new Date().getTime() + } + + this.orderGoodsService.getLogisticsMsg(params , (data: any) => { + if (data['return_code'] == '000000') { + this.orderDetailModalChild = true; + this.getRequest(false); + this.logisticsTraceDetails = data['return_data']['logisticsTraceDetails']; + } else { + this.msg.error(data['return_msg']); + } + }); + } + + findDeliveryAddressById(id: number): void { + this.goodsService.findDeliveryAddressById(id, (data: any) => { + if (data['return_code'] == '000000') { + this.deliveryAddress = data['return_data']; + } else { + this.msg.error(data['return_msg']); + } + }); + } + + +} diff --git a/src/app/pages/trade/order-cinema/order-cinema.component.ts b/src/app/pages/trade/order-cinema/order-cinema.component.ts index 4aba796..fcbb2d2 100644 --- a/src/app/pages/trade/order-cinema/order-cinema.component.ts +++ b/src/app/pages/trade/order-cinema/order-cinema.component.ts @@ -15,7 +15,6 @@ import {NzImageDirective, NzImageModule} from "ng-zorro-antd/image"; import {NzModalModule} from "ng-zorro-antd/modal"; import {DatePipe, NgClass, NgForOf, NgIf} from "@angular/common"; import {GoodsStatusPipe} from "../../../pipes/goods/goods-status.pipe"; -import {OrderGoodsStatusPipe} from "../../../pipes/order/order-goods-status.pipe"; import {NzDropDownADirective, NzDropDownDirective, NzDropdownMenuComponent} from "ng-zorro-antd/dropdown"; import {NzMenuDirective, NzMenuItemComponent} from "ng-zorro-antd/menu"; import {NzDescriptionsModule} from "ng-zorro-antd/descriptions"; @@ -57,7 +56,6 @@ import {OrderCinemaStatusPipe} from "../../../pipes/goods/order-cinema-status.pi NzImageDirective, GoodsStatusPipe, DatePipe, - OrderGoodsStatusPipe, NzDropdownMenuComponent, NgIf, NzMenuDirective, diff --git a/src/app/pages/trade/trade.routes.ts b/src/app/pages/trade/trade.routes.ts index c018d56..52a34b3 100644 --- a/src/app/pages/trade/trade.routes.ts +++ b/src/app/pages/trade/trade.routes.ts @@ -5,6 +5,7 @@ import {GoodsListComponent} from "./goods-list/goods-list.component"; import {OrderRefundComponent} from "./order-refund/order-refund.component"; import {OrderCinemaComponent} from "./order-cinema/order-cinema.component"; import {OrderStarbucksComponent} from "./order-starbucks/order-starbucks.component"; +import {GoodsLogisticsListComponent} from "./goods-logistics-list/goods-logistics-list.component"; export const TRADE_ROUTES: Routes = [ { path: 'goods-list', component: GoodsListComponent }, @@ -13,4 +14,5 @@ export const TRADE_ROUTES: Routes = [ { path: 'order-refund', component: OrderRefundComponent }, { path: 'order-cinema', component: OrderCinemaComponent }, { path: 'order-starbucks', component: OrderStarbucksComponent }, + { path: 'goods-logistics-list', component: GoodsLogisticsListComponent }, ]; diff --git a/src/app/pipes/order/order-goods-status.pipe.ts b/src/app/pipes/order/order-goods-status.pipe.ts deleted file mode 100644 index f543cfa..0000000 --- a/src/app/pipes/order/order-goods-status.pipe.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; - -@Pipe({ - name: 'orderGoodsStatus', - standalone: true -}) -export class OrderGoodsStatusPipe implements PipeTransform { - - transform(value: number): any { - switch (value) { - case 1: - return '待发货'; - case 2: - return '已发货'; - case 3: - return '配送中'; - case 4: - return '已送达'; - case 5: - return '已取消'; - case 6: - return '退货中'; - case 7: - return '已退货'; - case 8: - return '待支付'; - default: - return '未知状态' - } - } - -} diff --git a/src/environments/environment.ts b/src/environments/environment.ts index ee124eb..ec6ab5c 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,15 +4,15 @@ export const environment = { production: false, - // baseUrl: 'https://phg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) - // orderUrl: 'https://phg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) - // userUrl: 'https://phg.dctpay.com/user/', // 测试环境服务器地址(请求数据地址) - // imageUrl: 'https://phg.obs.cn-southwest-2.myhuaweicloud.com/', + baseUrl: 'https://phg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) + orderUrl: 'https://phg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) + userUrl: 'https://phg.dctpay.com/user/', // 测试环境服务器地址(请求数据地址) + imageUrl: 'https://phg.obs.cn-southwest-2.myhuaweicloud.com/', - baseUrl: 'http://localhost:9702/brest/', // 测试环境服务器地址(请求数据地址) - orderUrl: 'http://localhost:9703/order/', // 测试环境服务器地址(请求数据地址) - userUrl: 'http://localhost:9704/user/', // 测试环境服务器地址(请求数据地址) - imageUrl: 'https://phg-test.obs.cn-southwest-2.myhuaweicloud.com/', + // baseUrl: 'http://localhost:9702/brest/', // 测试环境服务器地址(请求数据地址) + // orderUrl: 'http://localhost:9703/order/', // 测试环境服务器地址(请求数据地址) + // userUrl: 'http://localhost:9704/user/', // 测试环境服务器地址(请求数据地址) + // imageUrl: 'https://phg-test.obs.cn-southwest-2.myhuaweicloud.com/', }; From bf3a35390d000958592acd3be5e6beeb940acdba Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Thu, 15 Aug 2024 09:42:38 +0800 Subject: [PATCH 3/6] 1 --- src/app/data/goods/goods.namespace.ts | 1 + src/app/pages/body/index/index.component.html | 57 +++++++++ src/app/pages/body/index/index.component.less | 3 + src/app/pages/body/index/index.component.ts | 116 +++++++++++++++++- .../goods-list/goods-list.component.html | 99 +++++++++------ .../goods-list/goods-list.component.less | 3 +- .../trade/goods-list/goods-list.component.ts | 49 +++++++- .../goods-logistics-list.component.html | 101 ++++++++------- .../goods-logistics-list.component.ts | 29 ++++- src/app/pipes/common/data-utils.pipe.ts | 16 +++ src/app/pipes/file/business-type.pipe.ts | 30 +++++ src/app/pipes/file/status.pipe.ts | 22 ++++ .../services/common/communication.service.ts | 17 +++ src/app/services/common/icon.service.ts | 2 +- src/app/services/file/file.service.ts | 41 +++++++ src/app/services/trade/order-goods.service.ts | 11 ++ src/environments/environment.ts | 18 +-- 17 files changed, 515 insertions(+), 100 deletions(-) create mode 100644 src/app/pipes/common/data-utils.pipe.ts create mode 100644 src/app/pipes/file/business-type.pipe.ts create mode 100644 src/app/pipes/file/status.pipe.ts create mode 100644 src/app/services/common/communication.service.ts create mode 100644 src/app/services/file/file.service.ts diff --git a/src/app/data/goods/goods.namespace.ts b/src/app/data/goods/goods.namespace.ts index 427ceff..7c485b4 100644 --- a/src/app/data/goods/goods.namespace.ts +++ b/src/app/data/goods/goods.namespace.ts @@ -2,6 +2,7 @@ export const fallbackImg = 'data:image/png;base64,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'; export const logisticsStatus = [ + {name: "待发货" , key: "待发货"} , {name: "派件中" , key: "DELIVERING"} , {name: "运输中" , key: "TRANSPORT"}, {name: "已代签收" , key: "AGENT_SIGN"}, diff --git a/src/app/pages/body/index/index.component.html b/src/app/pages/body/index/index.component.html index c17ef31..3e980c8 100644 --- a/src/app/pages/body/index/index.component.html +++ b/src/app/pages/body/index/index.component.html @@ -14,6 +14,7 @@
+
{{userInfo['userName']}} @@ -24,7 +25,29 @@
+
+ + + +
+ + + + + + {{item.title}} + + 失败 + + + + 查看更多记录 + + +
+
+
@@ -52,6 +75,40 @@
+ + + + + + + 序号 + 文件名称 + 下载来源 + 申请时间 + 下载时间 + 状态 + 操作 + + + + + {{ i + 1 }} + {{ data.title }} + {{ data.businessType | businessType }} + {{ data.createTime | date: 'yyyy-MM-dd HH:mm:ss'}} + {{ data.downloadTime | date: 'yyyy-MM-dd HH:mm:ss'}} + {{ data.status | status}} + + 下载 + 重新下载 + + + + + + + diff --git a/src/app/pages/body/index/index.component.less b/src/app/pages/body/index/index.component.less index 735b7cf..b14d3f5 100644 --- a/src/app/pages/body/index/index.component.less +++ b/src/app/pages/body/index/index.component.less @@ -67,3 +67,6 @@ nz-content { } } +.file-downLoad { + width: 300px; +} diff --git a/src/app/pages/body/index/index.component.ts b/src/app/pages/body/index/index.component.ts index c5c2aa8..b0d5a55 100644 --- a/src/app/pages/body/index/index.component.ts +++ b/src/app/pages/body/index/index.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import {AfterViewInit, Component} from '@angular/core'; import {Router, RouterLink, RouterOutlet} from "@angular/router"; import { NzContentComponent, @@ -10,7 +10,7 @@ import { import {NzBreadCrumbComponent, NzBreadCrumbItemComponent} from "ng-zorro-antd/breadcrumb"; import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; import {NzMenuDirective, NzMenuGroupComponent, NzMenuItemComponent, NzSubMenuComponent} from "ng-zorro-antd/menu"; -import {NgClass, NgForOf} from "@angular/common"; +import {DatePipe, NgClass, NgForOf, NgIf} from "@angular/common"; import {NzIconDirective} from "ng-zorro-antd/icon"; import {NzTabComponent, NzTabSetComponent} from "ng-zorro-antd/tabs"; import {TabComponent} from "../tab/tab.component"; @@ -22,6 +22,22 @@ import {Dictionary, dictionaryData} from "../../../data/common/dictionary.namesp import {CommonService} from "../../../services/common/common.service"; import {LoginService} from "../../../services/login/login.service"; import {NzConfigService} from "ng-zorro-antd/core/config"; +import {NzPopoverDirective} from "ng-zorro-antd/popover"; +import {NzListItemComponent, NzListItemMetaComponent, NzListModule} from "ng-zorro-antd/list"; +import {NzTypographyComponent} from "ng-zorro-antd/typography"; +import {IconService} from "../../../services/common/icon.service"; +import {FileService} from "../../../services/file/file.service"; +import {DataUtilsPipe} from "../../../pipes/common/data-utils.pipe"; +import {GoodsListComponent} from "../../trade/goods-list/goods-list.component"; +import {Subject} from "rxjs"; +import {CommunicationService} from "../../../services/common/communication.service"; +import {NzModalComponent, NzModalContentDirective, NzModalModule} from "ng-zorro-antd/modal"; +import {NzResultComponent} from "ng-zorro-antd/result"; +import {NzSpinComponent} from "ng-zorro-antd/spin"; +import {NzTimelineComponent, NzTimelineItemComponent} from "ng-zorro-antd/timeline"; +import {NzTableComponent, NzTableModule} from "ng-zorro-antd/table"; +import {BusinessTypePipe} from "../../../pipes/file/business-type.pipe"; +import {StatusPipe} from "../../../pipes/file/status.pipe"; @Component({ selector: 'app-index', @@ -37,6 +53,7 @@ import {NzConfigService} from "ng-zorro-antd/core/config"; NzRowDirective, NzColDirective, NzMenuItemComponent, + NzModalModule, NzMenuDirective, RouterLink, NzSubMenuComponent, @@ -44,12 +61,31 @@ import {NzConfigService} from "ng-zorro-antd/core/config"; NgClass, NzIconDirective, NzTabComponent, + NzListModule, NzTabSetComponent, TabComponent, NzSiderComponent, NzMenuGroupComponent, NzDropDownDirective, - NzDropdownMenuComponent + NzDropdownMenuComponent, + NgIf, + NzPopoverDirective, + NzListItemComponent, + NzListItemMetaComponent, + NzTypographyComponent, + NzTableModule, + DataUtilsPipe, + GoodsListComponent, + DatePipe, + NzModalComponent, + NzResultComponent, + NzSpinComponent, + NzTimelineComponent, + NzTimelineItemComponent, + NzTableComponent, + NzModalContentDirective, + BusinessTypePipe, + StatusPipe ], templateUrl: './index.component.html', styleUrl: './index.component.less', @@ -60,22 +96,39 @@ export class IndexComponent { 'menuName' : '首页', 'selected' : true, }]; + // 表单页数 + tablePageNum = 1; + // 表单数据 + tableData: any; userInfo: any; // 左侧菜单栏数据 leftMenuData: any = []; // 侧边菜单展示开关 isCollapse = true; + loading = false; + isVisible = false; // 当前顶级菜单 currentParentMenu: any = {}; - + downloadType = 1; + interval: any; constructor( private commonService: CommonService, private storage: BrowserStorageService, + private communicationService: CommunicationService, private nzConfigService: NzConfigService, + private iconService: IconService, + private fileService: FileService, private message: NzMessageService, private router: Router, // 路由 private login: LoginService ) { + + this.communicationService.currentMessage.subscribe(message => { + this.fileRecords(); + this.findFileRecords(message.id); + this.downloadType = 2; + }); + this.nzConfigService.set('button', { nzSize: 'large' }) this.nzConfigService.set('treeSelect', { nzSize: 'large' }) // 缓存数据字典 @@ -99,6 +152,7 @@ export class IndexComponent { this.menuData = this.menuData.concat(this.storage.get(DATA)['menuTree']); this.userInfo = this.storage.get(DATA)['account']; + this.fileRecords(); } // 选择操作 @@ -131,4 +185,58 @@ export class IndexComponent { } }); } + + // 弹出下载记录 + public getFileRecords() { + this.loading = true; + this.isVisible = true; + } + + // 查询下载记录 + public fileRecords() { + let searchForm = { + time: new Date().getTime() + } + + this.fileService.getFileRecordsList(searchForm , (data: any) => { + if (data['return_code'] == '000000') { + this.tableData = data['return_data']; + } else { + this.message.error(data['return_msg']); + } + this.loading = false; + }); + } + + // 查询详情 + public findFileRecords(id: number) { + this.interval = setInterval(() => this.fileService.findFileRecords(id, (data: any) => { + if (data['return_code'] == '000000') { + if (data['return_data'].status == 1) { + clearTimeout(this.interval); + console.log("完成"); + this.downloadType = 1; + this.fileRecords(); + } + }else { + clearTimeout(this.interval); + this.fileRecords(); + this.downloadType = 1; + } + }), 1000); + + + + } + + // 下载 + public getDownLoad(id: number) { + this.fileService.getDownLoad(id, (data: any) => { + if (data['return_code'] == '000000') { + window.location.href = data['return_data']; + }else { + this.message.error(data['return_msg']); + } + }) + } } diff --git a/src/app/pages/trade/goods-list/goods-list.component.html b/src/app/pages/trade/goods-list/goods-list.component.html index 78ad508..3aba1ad 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.html +++ b/src/app/pages/trade/goods-list/goods-list.component.html @@ -1,18 +1,21 @@
+
- 商品名称 + 物流订单号 - +
- 物流订单号 + 物流状态 - + + +
@@ -25,6 +28,34 @@
+ + 创建时间 + + + + +
+
+ + 商户 + + + + + + +
+
+ + 商品名称 + + + + +
+ + +
子订单号 @@ -32,7 +63,7 @@
-
+
用户手机号 @@ -41,7 +72,7 @@
-
+
商品分类 @@ -54,7 +85,7 @@
-
+
商品品牌 @@ -65,17 +96,8 @@
-
- - 物流状态 - - - - - - -
-
+ +
支付类型 @@ -85,7 +107,7 @@
-
+
支付状态 @@ -95,18 +117,17 @@
-
- - 创建时间 - - - - +
+
@@ -134,9 +155,9 @@ 物流单号 创建时间 更新时间 - 支付类型 - 支付状态 - 物流状态 + 支付类型 + 支付状态 + 物流状态 操作 @@ -162,6 +183,8 @@ {{data.status | orderChildStatus}} + + @@ -205,15 +228,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/src/app/pages/trade/goods-list/goods-list.component.less b/src/app/pages/trade/goods-list/goods-list.component.less index 4056a86..1190184 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.less +++ b/src/app/pages/trade/goods-list/goods-list.component.less @@ -1,6 +1,7 @@ .search-area { + margin-top: 20px; margin-bottom: 10px; } .search-area button { - margin-right: 8px; + margin-right: 14px; } diff --git a/src/app/pages/trade/goods-list/goods-list.component.ts b/src/app/pages/trade/goods-list/goods-list.component.ts index bc6d458..18193fc 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.ts +++ b/src/app/pages/trade/goods-list/goods-list.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import {Component, Output} from '@angular/core'; import {DatePipe, NgClass, NgForOf, NgIf} from "@angular/common"; import {FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule} from "@angular/forms"; import {NzButtonComponent} from "ng-zorro-antd/button"; @@ -41,6 +41,12 @@ import {NzRadioButtonDirective, NzRadioComponent, NzRadioGroupComponent} from "n import {PayTypePipe} from "../../../pipes/goods/pay-type.pipe"; import {IconService} from "../../../services/common/icon.service"; import {OrderChildStatusPipe} from "../../../pipes/goods/order-child-status.pipe"; +import {DATA} from "../../../data/login/localStorage.namespace"; +import {BrowserStorageService} from "../../../utils/localStorage.service"; +import {MerService} from "../../../services/merchant/mer.service"; +import EventEmitter from "node:events"; +import {Subject} from "rxjs"; +import {CommunicationService} from "../../../services/common/communication.service"; @Component({ selector: 'app-goods-list', @@ -124,19 +130,28 @@ export class GoodsListComponent { logisticsTraceDetails: any; goodsOrderId: any; deliveryAddress: any; - + // 更多查询条件 + isCollapse = false; + merData: any; + objectType: any; protected readonly fallbackImg = fallbackImg; protected readonly logisticsStatus = logisticsStatus; protected readonly orderGoodsChild = orderGoodsChild; + protected readonly orderPayType = orderPayType; constructor(private fb: NonNullableFormBuilder, private msg: NzMessageService, + private storage: BrowserStorageService, + private communicationService: CommunicationService, + private merService: MerService, private iconService: IconService, private orderGoodsService: OrderGoodsService, private goodsService: GoodsService) { + + // 初始化搜索框 this.searchForm = this.fb.group({ logisticsNo: [''], @@ -145,6 +160,7 @@ export class GoodsListComponent { logisticsStatus: [''], goodsType: [''], goodsBrand: [''], + merId: [''], userPhone: [''], goodsSpecsName: [''], createTimeArray: [[]], @@ -158,7 +174,22 @@ export class GoodsListComponent { this.getRequest(); this.getGoodsTypeNode(); this.getGoodsBrandNode(); + this.merList(); + this.objectType = this.storage.get(DATA)['account']['objectType']; + } + // 查询商户 + public merList() { + let params: any = { + pageNum: 1, + pageSize: 1000, + time: new Date().getTime(), + } + this.merService.queryList(params, (data: any) => { + if (data['return_code'] == '000000') { + this.merData = data['return_data']['list']; + } + }); } // 查询列表 @@ -286,6 +317,18 @@ export class GoodsListComponent { }); } + // 订单导出 + public getExport() { + this.searchForm.value.time = new Date().getTime(); + this.orderGoodsService.exportGoodsOrder(this.searchForm.value , (data: any) => { + if (data['return_code'] == '000000') { + this.communicationService.sendMessage(data['return_data']); + } else { + this.msg.error(data['return_msg']); + } + this.tableData.loading = false; + }); + } + - protected readonly orderPayType = orderPayType; } diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html index effed5e..20149b8 100644 --- a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html @@ -1,30 +1,60 @@
+
- 商品名称 + 物流订单号 - +
- 物流订单号 + 订单号 - +
+
- 订单号 + 物流状态 - + + +
+ + 创建时间 + + + + +
+
+ + 商户 + + + + + + +
+
+ + 商品名称 + + + + +
+
子订单号 @@ -32,7 +62,7 @@
-
+
用户手机号 @@ -41,7 +71,7 @@
-
+
商品分类 @@ -54,7 +84,7 @@
-
+
商品品牌 @@ -65,17 +95,7 @@
-
- - 物流状态 - - - - - - -
-
+
支付类型 @@ -85,18 +105,15 @@
-
- - 创建时间 - - - - -
+
@@ -122,11 +139,11 @@ 订单号 子订单号 物流单号 - 创建时间 - 更新时间 - 支付类型 - 支付状态 - 物流状态 + 创建时间 + 更新时间 + 支付类型 + 支付状态 + 物流状态 操作 @@ -152,6 +169,7 @@ {{data.status | orderChildStatus}} + @@ -196,15 +214,14 @@ - - - - - - - - - + + + + + + + + diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts index 6124b27..730395b 100644 --- a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts @@ -35,6 +35,9 @@ import {AuditStatusPipe} from "../../../pipes/audit/audit-status.pipe"; import {IconService} from "../../../services/common/icon.service"; import {PayTypePipe} from "../../../pipes/goods/pay-type.pipe"; import {OrderChildStatusPipe} from "../../../pipes/goods/order-child-status.pipe"; +import {MerService} from "../../../services/merchant/mer.service"; +import {DATA} from "../../../data/login/localStorage.namespace"; +import {BrowserStorageService} from "../../../utils/localStorage.service"; @Component({ selector: 'app-goods-logistics-list', @@ -118,19 +121,24 @@ export class GoodsLogisticsListComponent { logisticsTraceDetails: any; goodsOrderId: any; deliveryAddress: any; - - + // 更多查询条件 + isCollapse = false; + merData: any; + objectType: any; protected readonly fallbackImg = fallbackImg; protected readonly orderPayType = orderPayType; protected readonly logisticsStatus = logisticsStatus; constructor(private fb: NonNullableFormBuilder, private msg: NzMessageService, + private storage: BrowserStorageService, + private merService: MerService, private iconService: IconService, private orderGoodsService: OrderGoodsService, private goodsService: GoodsService) { + // 初始化搜索框 this.searchForm = this.fb.group({ logisticsNo: [''], @@ -138,6 +146,7 @@ export class GoodsLogisticsListComponent { childOrderNo: [''], goodsType: [''], goodsBrand: [''], + merId: [''], userPhone: [''], goodsSpecsName: [''], createTimeArray: [[]], @@ -152,9 +161,25 @@ export class GoodsLogisticsListComponent { this.getRequest(); this.getGoodsTypeNode(); this.getGoodsBrandNode(); + this.merList(); + this.objectType = this.storage.get(DATA)['account']['objectType']; + } + // 查询商户 + public merList() { + let params: any = { + pageNum: 1, + pageSize: 1000, + time: new Date().getTime(), + } + this.merService.queryList(params, (data: any) => { + if (data['return_code'] == '000000') { + this.merData = data['return_data']['list']; + } + }); } + // 查询列表 public getRequest(reset: boolean = false) { diff --git a/src/app/pipes/common/data-utils.pipe.ts b/src/app/pipes/common/data-utils.pipe.ts new file mode 100644 index 0000000..89fd259 --- /dev/null +++ b/src/app/pipes/common/data-utils.pipe.ts @@ -0,0 +1,16 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'dataUtils', + standalone: true +}) +export class DataUtilsPipe implements PipeTransform { + + transform(data: any, length: number): any { + if (data.length == 0) { + return []; + } + return data.slice(0 , length); + } + +} diff --git a/src/app/pipes/file/business-type.pipe.ts b/src/app/pipes/file/business-type.pipe.ts new file mode 100644 index 0000000..d648af3 --- /dev/null +++ b/src/app/pipes/file/business-type.pipe.ts @@ -0,0 +1,30 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'businessType', + standalone: true +}) +export class BusinessTypePipe implements PipeTransform { + + transform(value: number): any { + switch (value) { + case 1: + return '实物产品'; + case 2: + return '虚拟产品'; + case 3: + return '肯德基'; + case 4: + return '星巴克'; + case 5: + return '支付订单'; + case 6: + return '物流上传订单'; + case 7: + return '物流下载订单'; + default: + return '未知状态' + } + } + +} diff --git a/src/app/pipes/file/status.pipe.ts b/src/app/pipes/file/status.pipe.ts new file mode 100644 index 0000000..f94cb5a --- /dev/null +++ b/src/app/pipes/file/status.pipe.ts @@ -0,0 +1,22 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'status', + standalone: true +}) +export class StatusPipe implements PipeTransform { + + transform(value: number): any { + switch (value) { + case 1: + return '成功'; + case 2: + return '导出中'; + case 3: + return '失败'; + default: + return '未知状态' + } + } + +} diff --git a/src/app/services/common/communication.service.ts b/src/app/services/common/communication.service.ts new file mode 100644 index 0000000..78ab2cc --- /dev/null +++ b/src/app/services/common/communication.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import {Subject} from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) +export class CommunicationService { + + private messageSource = new Subject(); + currentMessage = this.messageSource.asObservable(); + + constructor() { } + + sendMessage(message: string) { + this.messageSource.next(message); + } +} diff --git a/src/app/services/common/icon.service.ts b/src/app/services/common/icon.service.ts index 5189b6d..c89c04c 100644 --- a/src/app/services/common/icon.service.ts +++ b/src/app/services/common/icon.service.ts @@ -8,7 +8,7 @@ export class IconService { constructor(private iconService: NzIconService) { this.iconService.fetchFromIconfont({ - scriptUrl: 'https://at.alicdn.com/t/c/font_4647823_zeitf111aa.js' + scriptUrl: 'https://at.alicdn.com/t/c/font_4647823_ys5j7ogeas.js' }); } } diff --git a/src/app/services/file/file.service.ts b/src/app/services/file/file.service.ts new file mode 100644 index 0000000..64f58b2 --- /dev/null +++ b/src/app/services/file/file.service.ts @@ -0,0 +1,41 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {environment} from "../../../environments/environment"; +import {ObjectData} from "../../utils/objectData.service"; + +@Injectable({ + providedIn: 'root' +}) +export class FileService { + + constructor(private http: HttpClient) { } + + /** + * 查询列表 + * @param params + * @param callBack + */ + public getFileRecordsList(params: object, callBack:any) { + this.http.get(environment.baseUrl + 'file/getFileRecordsList?' + ObjectData.objectByString(params)).subscribe(data => { + callBack(data); + }); + } + + /** + * 查询详情 + * @param id + * @param callBack + */ + public findFileRecords(id: number, callBack:any) { + this.http.get(environment.baseUrl + 'file/findFileRecords?id=' + id + "&time=" + new Date().getTime()).subscribe(data => { + callBack(data); + }); + } + + public getDownLoad(id: number, callBack:any) { + this.http.get(environment.baseUrl + 'file/getDownLoad?id=' + id + "&time=" + new Date().getTime()).subscribe(data => { + callBack(data); + }); + } + +} diff --git a/src/app/services/trade/order-goods.service.ts b/src/app/services/trade/order-goods.service.ts index 1eeee14..309b8b6 100644 --- a/src/app/services/trade/order-goods.service.ts +++ b/src/app/services/trade/order-goods.service.ts @@ -32,4 +32,15 @@ export class OrderGoodsService { callBack(data); }); } + + /** + * 订单导出 + * @param param + * @param callBack + */ + public exportGoodsOrder(param: object, callBack:any) { + this.http.get(environment.orderUrl + 'orderGoods/exportGoodsOrder?'+ObjectData.objectByString(param)).subscribe(data => { + callBack(data); + }); + } } diff --git a/src/environments/environment.ts b/src/environments/environment.ts index ec6ab5c..6230f92 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,15 +4,15 @@ export const environment = { production: false, - baseUrl: 'https://phg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) - orderUrl: 'https://phg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) - userUrl: 'https://phg.dctpay.com/user/', // 测试环境服务器地址(请求数据地址) - imageUrl: 'https://phg.obs.cn-southwest-2.myhuaweicloud.com/', - - // baseUrl: 'http://localhost:9702/brest/', // 测试环境服务器地址(请求数据地址) - // orderUrl: 'http://localhost:9703/order/', // 测试环境服务器地址(请求数据地址) - // userUrl: 'http://localhost:9704/user/', // 测试环境服务器地址(请求数据地址) - // imageUrl: 'https://phg-test.obs.cn-southwest-2.myhuaweicloud.com/', + // baseUrl: 'https://phg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) + // orderUrl: 'https://phg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) + // userUrl: 'https://phg.dctpay.com/user/', // 测试环境服务器地址(请求数据地址) + // imageUrl: 'https://phg.obs.cn-southwest-2.myhuaweicloud.com/', + // + baseUrl: 'http://localhost:9702/brest/', // 测试环境服务器地址(请求数据地址) + orderUrl: 'http://localhost:9703/order/', // 测试环境服务器地址(请求数据地址) + userUrl: 'http://localhost:9704/user/', // 测试环境服务器地址(请求数据地址) + imageUrl: 'https://phg-test.obs.cn-southwest-2.myhuaweicloud.com/', }; From b33b66d9bc002715ab7784f81835569a0df2bbee Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Thu, 15 Aug 2024 10:47:32 +0800 Subject: [PATCH 4/6] 1 --- package.json | 4 ++-- .../trade/goods-list/goods-list.component.html | 2 +- .../trade/goods-list/goods-list.component.ts | 4 ++-- .../goods-logistics-list.component.html | 2 +- .../goods-logistics-list.component.ts | 4 ++-- src/environments/environment.ts | 16 ++++++++-------- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 3ee62e8..77ad293 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "ng-zorro-antd": "^17.1.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", + "typescript": "5.4", "zone.js": "~0.14.2" }, "devDependencies": { @@ -39,7 +40,6 @@ "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.2.2" + "karma-jasmine-html-reporter": "~2.1.0" } } diff --git a/src/app/pages/trade/goods-list/goods-list.component.html b/src/app/pages/trade/goods-list/goods-list.component.html index 3aba1ad..7433a8b 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.html +++ b/src/app/pages/trade/goods-list/goods-list.component.html @@ -202,7 +202,7 @@ diff --git a/src/app/pages/trade/goods-list/goods-list.component.ts b/src/app/pages/trade/goods-list/goods-list.component.ts index 18193fc..476eccf 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.ts +++ b/src/app/pages/trade/goods-list/goods-list.component.ts @@ -290,9 +290,9 @@ export class GoodsListComponent { }); } - showLogisticsNo(id: number): void { + showLogisticsNo(logisticsNo: string): void { let params = { - id:id, + logisticsNo:logisticsNo, time: new Date().getTime() } diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html index 20149b8..f0aba29 100644 --- a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html @@ -188,7 +188,7 @@ diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts index 730395b..488df62 100644 --- a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts @@ -278,9 +278,9 @@ export class GoodsLogisticsListComponent { }); } - showLogisticsNo(id: number): void { + showLogisticsNo(logisticsNo: string): void { let params = { - id:id, + logisticsNo:logisticsNo, time: new Date().getTime() } diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 6230f92..b8075c0 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,15 +4,15 @@ export const environment = { production: false, - // baseUrl: 'https://phg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) - // orderUrl: 'https://phg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) - // userUrl: 'https://phg.dctpay.com/user/', // 测试环境服务器地址(请求数据地址) - // imageUrl: 'https://phg.obs.cn-southwest-2.myhuaweicloud.com/', + baseUrl: 'https://phg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) + orderUrl: 'https://phg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) + userUrl: 'https://phg.dctpay.com/user/', // 测试环境服务器地址(请求数据地址) + imageUrl: 'https://phg.obs.cn-southwest-2.myhuaweicloud.com/', // - baseUrl: 'http://localhost:9702/brest/', // 测试环境服务器地址(请求数据地址) - orderUrl: 'http://localhost:9703/order/', // 测试环境服务器地址(请求数据地址) - userUrl: 'http://localhost:9704/user/', // 测试环境服务器地址(请求数据地址) - imageUrl: 'https://phg-test.obs.cn-southwest-2.myhuaweicloud.com/', + // baseUrl: 'http://localhost:9702/brest/', // 测试环境服务器地址(请求数据地址) + // orderUrl: 'http://localhost:9703/order/', // 测试环境服务器地址(请求数据地址) + // userUrl: 'http://localhost:9704/user/', // 测试环境服务器地址(请求数据地址) + // imageUrl: 'https://phg-test.obs.cn-southwest-2.myhuaweicloud.com/', }; From ef17d9f1081fc72c6fbc1370a480bd449a23f0e0 Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Thu, 15 Aug 2024 10:47:35 +0800 Subject: [PATCH 5/6] 1 --- package-lock.json | 715 ++-------------------------------------------- 1 file changed, 21 insertions(+), 694 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0fdf534..46e0183 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "ng-zorro-antd": "^17.1.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", + "typescript": "5.4", "zone.js": "~0.14.2" }, "devDependencies": { @@ -36,8 +37,7 @@ "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.2.2" + "karma-jasmine-html-reporter": "~2.1.0" } }, "node_modules/@ampproject/remapping": { @@ -191,6 +191,22 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/@ngtools/webpack": { + "version": "17.0.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.0.7.tgz", + "integrity": "sha512-gwhUhpwXn0trwwKdSu9WlJbEcLt+s/2fPwoD9lZ0y3wXfrOogsfcNBJKeO5BZf1h+A3AWt7ePmgrZXSJM+865Q==", + "dev": true, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0", + "typescript": ">=5.2 <5.3", + "webpack": "^5.54.0" + } + }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1700.7", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1700.7.tgz", @@ -2288,54 +2304,6 @@ "node": ">=10.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", - "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", - "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", - "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.19.5", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", @@ -2352,294 +2320,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", - "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", - "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", - "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", - "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", - "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", - "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", - "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", - "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", - "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", - "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", - "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", - "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", - "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", - "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", - "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", - "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", - "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", - "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@fastify/busboy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", @@ -2846,22 +2526,6 @@ "node": ">= 0.4" } }, - "node_modules/@ngtools/webpack": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.0.7.tgz", - "integrity": "sha512-gwhUhpwXn0trwwKdSu9WlJbEcLt+s/2fPwoD9lZ0y3wXfrOogsfcNBJKeO5BZf1h+A3AWt7ePmgrZXSJM+865Q==", - "dev": true, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "typescript": ">=5.2 <5.3", - "webpack": "^5.54.0" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -11684,10 +11348,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11965,54 +11628,6 @@ } } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", @@ -12029,294 +11644,6 @@ "node": ">=12" } }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/vite/node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", From b1bc3d43c7029d1f46813a9e9d62181a89749472 Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Fri, 16 Aug 2024 15:10:18 +0800 Subject: [PATCH 6/6] 1 --- package-lock.json | 8 +++--- package.json | 2 +- src/app/pages/body/index/index.component.html | 14 ++++++---- src/app/pages/body/index/index.component.less | 22 +++++++++++++++ src/app/pages/body/index/index.component.ts | 19 ++++++++++--- .../goods-list/goods-list.component.html | 2 +- .../trade/goods-list/goods-list.component.ts | 27 ++----------------- .../goods-logistics-list.component.html | 2 +- .../goods-logistics-list.component.ts | 4 +-- 9 files changed, 57 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46e0183..8607aa4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "ng-zorro-antd": "^17.1.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", - "typescript": "5.4", + "typescript": "5.2", "zone.js": "~0.14.2" }, "devDependencies": { @@ -11348,9 +11348,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 77ad293..3d3f5f4 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "ng-zorro-antd": "^17.1.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", - "typescript": "5.4", + "typescript": "5.2", "zone.js": "~0.14.2" }, "devDependencies": { diff --git a/src/app/pages/body/index/index.component.html b/src/app/pages/body/index/index.component.html index 3e980c8..0892f4c 100644 --- a/src/app/pages/body/index/index.component.html +++ b/src/app/pages/body/index/index.component.html @@ -34,10 +34,9 @@ - {{item.title}} - - 失败 + + @@ -47,6 +46,10 @@
+
+ 正在导出中,请稍后在此处进行下载 +
+
@@ -100,8 +103,9 @@ {{ data.downloadTime | date: 'yyyy-MM-dd HH:mm:ss'}} {{ data.status | status}} - 下载 - 重新下载 + 下载 + 重新下载 + diff --git a/src/app/pages/body/index/index.component.less b/src/app/pages/body/index/index.component.less index b14d3f5..e227cbd 100644 --- a/src/app/pages/body/index/index.component.less +++ b/src/app/pages/body/index/index.component.less @@ -70,3 +70,25 @@ nz-content { .file-downLoad { width: 300px; } +.button-up { + font-size: 16px; + padding: 10px; + top: 48px; + left: 22px; + z-index: 999; + border-radius: 5px; + position:absolute; + height: 80px; + width: 280px; + background-color: rgba(0, 0, 0, 0.7); +} +.to_top { + z-index: 999; + top: 40px; + position:absolute; + width: 0; + height: 0; + border-bottom: 8px solid rgba(0, 0, 0, 0.7); + border-left: 8px solid transparent; + border-right: 8px solid transparent; +} diff --git a/src/app/pages/body/index/index.component.ts b/src/app/pages/body/index/index.component.ts index b0d5a55..218d0da 100644 --- a/src/app/pages/body/index/index.component.ts +++ b/src/app/pages/body/index/index.component.ts @@ -38,6 +38,9 @@ import {NzTimelineComponent, NzTimelineItemComponent} from "ng-zorro-antd/timeli import {NzTableComponent, NzTableModule} from "ng-zorro-antd/table"; import {BusinessTypePipe} from "../../../pipes/file/business-type.pipe"; import {StatusPipe} from "../../../pipes/file/status.pipe"; +import {NzPopconfirmDirective} from "ng-zorro-antd/popconfirm"; +import {NzButtonComponent} from "ng-zorro-antd/button"; +import {NzBadgeComponent} from "ng-zorro-antd/badge"; @Component({ selector: 'app-index', @@ -85,7 +88,10 @@ import {StatusPipe} from "../../../pipes/file/status.pipe"; NzTableComponent, NzModalContentDirective, BusinessTypePipe, - StatusPipe + StatusPipe, + NzPopconfirmDirective, + NzButtonComponent, + NzBadgeComponent ], templateUrl: './index.component.html', styleUrl: './index.component.less', @@ -111,6 +117,7 @@ export class IndexComponent { currentParentMenu: any = {}; downloadType = 1; interval: any; + showComponent = false; constructor( private commonService: CommonService, private storage: BrowserStorageService, @@ -124,6 +131,7 @@ export class IndexComponent { ) { this.communicationService.currentMessage.subscribe(message => { + this.showComponent = true; this.fileRecords(); this.findFileRecords(message.id); this.downloadType = 2; @@ -212,13 +220,14 @@ export class IndexComponent { public findFileRecords(id: number) { this.interval = setInterval(() => this.fileService.findFileRecords(id, (data: any) => { if (data['return_code'] == '000000') { - if (data['return_data'].status == 1) { + if (data['return_data'].status == 1 || data['return_data'].status == 3) { + this.showComponent = false; clearTimeout(this.interval); - console.log("完成"); this.downloadType = 1; this.fileRecords(); } }else { + this.showComponent = false; clearTimeout(this.interval); this.fileRecords(); this.downloadType = 1; @@ -233,10 +242,12 @@ export class IndexComponent { public getDownLoad(id: number) { this.fileService.getDownLoad(id, (data: any) => { if (data['return_code'] == '000000') { - window.location.href = data['return_data']; + this.fileRecords(); + window.open(data['return_data']); }else { this.message.error(data['return_msg']); } }) } + } diff --git a/src/app/pages/trade/goods-list/goods-list.component.html b/src/app/pages/trade/goods-list/goods-list.component.html index 7433a8b..1f5ca21 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.html +++ b/src/app/pages/trade/goods-list/goods-list.component.html @@ -202,7 +202,7 @@ diff --git a/src/app/pages/trade/goods-list/goods-list.component.ts b/src/app/pages/trade/goods-list/goods-list.component.ts index 476eccf..98a3537 100644 --- a/src/app/pages/trade/goods-list/goods-list.component.ts +++ b/src/app/pages/trade/goods-list/goods-list.component.ts @@ -260,39 +260,16 @@ export class GoodsListComponent { }); } - getLogisticsNo(id: number): void { - this.getRequest(false); - this.goodsOrderId = id; - this.isVisible = true; - } - showDetail(data: OrderGoodsData): void { this.orderGoodsData = data; this.findDeliveryAddressById(data.deliveryAddressId); this.orderDetailModal = true; } - handleOk(): void { - let params = { - id: this.goodsOrderId, - logisticsNo: this.logisticsNo, - time: new Date().getTime() - } - - this.orderGoodsService.updateLogisticsNo(params , (data: any) => { - if (data['return_code'] == '000000') { - this.isVisible = false; - - this.msg.success("成功") - } else { - this.msg.error(data['return_msg']); - } - }); - } - showLogisticsNo(logisticsNo: string): void { + showLogisticsNo(id: number): void { let params = { - logisticsNo:logisticsNo, + id:id, time: new Date().getTime() } diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html index f0aba29..3bbef23 100644 --- a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.html @@ -188,7 +188,7 @@ diff --git a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts index 488df62..730395b 100644 --- a/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts +++ b/src/app/pages/trade/goods-logistics-list/goods-logistics-list.component.ts @@ -278,9 +278,9 @@ export class GoodsLogisticsListComponent { }); } - showLogisticsNo(logisticsNo: string): void { + showLogisticsNo(id: number): void { let params = { - logisticsNo:logisticsNo, + id:id, time: new Date().getTime() }