@rolatech/angular-order 18.0.2 → 18.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,9 @@ var OrderType;
33
33
  (function (OrderType) {
34
34
  OrderType[OrderType["COURSE"] = '课程'] = "COURSE";
35
35
  OrderType[OrderType["PRODUCT"] = '商品'] = "PRODUCT";
36
+ OrderType[OrderType["SERVICE"] = '服务'] = "SERVICE";
36
37
  OrderType[OrderType["BOOKING"] = '预定'] = "BOOKING";
38
+ OrderType[OrderType["OTTHER"] = '其他'] = "OTTHER";
37
39
  })(OrderType || (OrderType = {}));
38
40
  var OrderReturnStatus;
39
41
  (function (OrderReturnStatus) {
@@ -119,11 +121,11 @@ class OrderItemComponent {
119
121
  this.quantity = computed(() => sumBy(this.order().items, (item) => item.quantity));
120
122
  }
121
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderItemComponent, isStandalone: true, selector: "rolatech-order-item", inputs: { order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <span>\u8BA2\u5355\u53F7: {{ order().orderNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[order().status] }}</span>\n </div>\n <div>\n @if (order().items; as items) {\n @if (items.length > 1) {\n } @else {}\n <div class=\"flex flex-col overflow-x-scroll scrollbar-hide\">\n @for (item of items; track $index) {\n <div class=\"flex flex-row py-2\">\n @if (item.media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"item.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-gray-200 h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div>\n <div>{{ item.name }}</div>\n @if (item.options) {\n <div>{{ item.options | orderItemoptions }}</div>\n }\n </div>\n <div>\n <div class=\"text-sm\">\u00A5{{ (item.total / 100).toFixed(2) }}</div>\n <div class=\"text-sm mt-2\">\u6570\u91CF{{ item.quantity }}</div>\n </div>\n <!-- <div>\n <div class=\"text-sm\">\u00A5{{ total() }}</div>\n <div class=\"text-sm mt-2\">\u6570\u91CF{{ quantity() }}</div>\n </div> -->\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n<hr />\n", styles: [".scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ImagePlaceholderComponent, selector: "rolatech-image-placeholder" }, { kind: "pipe", type: OrderItemOptionsFormatPipe, name: "orderItemoptions" }], deferBlockDependencies: [() => [ThumbnailComponent]] }); }
124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderItemComponent, isStandalone: true, selector: "rolatech-order-item", inputs: { order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <span>\u8BA2\u5355\u53F7: {{ order().orderNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[order().status] }}</span>\n </div>\n <div>\n @if (order().items; as items) {\n @if (items.length > 1) {\n } @else {}\n <div class=\"flex flex-col overflow-x-scroll scrollbar-hide\">\n @for (item of items; track $index) {\n <div class=\"flex flex-row py-2\">\n @if (item.media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"item.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div>\n <div>{{ item.name }}</div>\n @if (item.options) {\n <div class=\"text-sm text-[--rt-text-secondary] mt-2\">{{ item.options | orderItemoptions }}</div>\n }\n </div>\n <div class=\"text-right\">\n <div class=\"text-sm\">\u00A5{{ (item.total / 100).toFixed(2) }}</div>\n <div class=\"text-sm mt-2\">x{{ item.quantity }}</div>\n </div>\n <!-- <div>\n <div class=\"text-sm\">\u00A5{{ total() }}</div>\n <div class=\"text-sm mt-2\">\u6570\u91CF{{ quantity() }}</div>\n </div> -->\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n<hr />\n", styles: [".scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ImagePlaceholderComponent, selector: "rolatech-image-placeholder" }, { kind: "pipe", type: OrderItemOptionsFormatPipe, name: "orderItemoptions" }], deferBlockDependencies: [() => [ThumbnailComponent]] }); }
123
125
  }
124
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderItemComponent, decorators: [{
125
127
  type: Component,
126
- args: [{ selector: 'rolatech-order-item', standalone: true, imports: [MatIconModule, ThumbnailComponent, ImagePlaceholderComponent, NgClass, JsonPipe, OrderItemOptionsFormatPipe], template: "<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <span>\u8BA2\u5355\u53F7: {{ order().orderNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[order().status] }}</span>\n </div>\n <div>\n @if (order().items; as items) {\n @if (items.length > 1) {\n } @else {}\n <div class=\"flex flex-col overflow-x-scroll scrollbar-hide\">\n @for (item of items; track $index) {\n <div class=\"flex flex-row py-2\">\n @if (item.media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"item.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-gray-200 h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div>\n <div>{{ item.name }}</div>\n @if (item.options) {\n <div>{{ item.options | orderItemoptions }}</div>\n }\n </div>\n <div>\n <div class=\"text-sm\">\u00A5{{ (item.total / 100).toFixed(2) }}</div>\n <div class=\"text-sm mt-2\">\u6570\u91CF{{ item.quantity }}</div>\n </div>\n <!-- <div>\n <div class=\"text-sm\">\u00A5{{ total() }}</div>\n <div class=\"text-sm mt-2\">\u6570\u91CF{{ quantity() }}</div>\n </div> -->\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n<hr />\n", styles: [".scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"] }]
128
+ args: [{ selector: 'rolatech-order-item', standalone: true, imports: [MatIconModule, ThumbnailComponent, ImagePlaceholderComponent, NgClass, JsonPipe, OrderItemOptionsFormatPipe], template: "<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <span>\u8BA2\u5355\u53F7: {{ order().orderNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[order().status] }}</span>\n </div>\n <div>\n @if (order().items; as items) {\n @if (items.length > 1) {\n } @else {}\n <div class=\"flex flex-col overflow-x-scroll scrollbar-hide\">\n @for (item of items; track $index) {\n <div class=\"flex flex-row py-2\">\n @if (item.media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"item.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div>\n <div>{{ item.name }}</div>\n @if (item.options) {\n <div class=\"text-sm text-[--rt-text-secondary] mt-2\">{{ item.options | orderItemoptions }}</div>\n }\n </div>\n <div class=\"text-right\">\n <div class=\"text-sm\">\u00A5{{ (item.total / 100).toFixed(2) }}</div>\n <div class=\"text-sm mt-2\">x{{ item.quantity }}</div>\n </div>\n <!-- <div>\n <div class=\"text-sm\">\u00A5{{ total() }}</div>\n <div class=\"text-sm mt-2\">\u6570\u91CF{{ quantity() }}</div>\n </div> -->\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n<hr />\n", styles: [".scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"] }]
127
129
  }] });
128
130
 
129
131
  class OrderIndexComponent {
@@ -219,11 +221,11 @@ class OrderCourseItemComponent {
219
221
  this.type = CourseType;
220
222
  }
221
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderCourseItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderCourseItemComponent, isStandalone: true, selector: "rolatech-order-course-item", inputs: { course: { classPropertyName: "course", publicName: "course", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex flex-col\">\n <div class=\"hover:!bg-[--rt-base-background] cursor-pointer py-2\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex flex-row w-full\">\n <div class=\"w-2/5 sm:w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course().media) {\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-bold break-words line-clamp-2\">{{ course().name }}</span>\n <span class=\"text-sm text-gray-600\">\u7C7B\u578B: {{ type[course().type] }}</span>\n </div>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], deferBlockDependencies: [() => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)]] }); }
224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderCourseItemComponent, isStandalone: true, selector: "rolatech-order-course-item", inputs: { course: { classPropertyName: "course", publicName: "course", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex flex-col\">\n <div class=\"hover:!bg-[--rt-base-background] cursor-pointer py-2\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex flex-row w-full\">\n <div class=\"w-2/5 sm:w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course().media) {\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-bold break-words line-clamp-2\">{{ course().name }}</span>\n <span class=\"text-sm text-[--rt-text-secondary]\">\u7C7B\u578B: {{ type[course().type] }}</span>\n </div>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], deferBlockDependencies: [() => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)]] }); }
223
225
  }
224
226
  i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.2.0", ngImport: i0, type: OrderCourseItemComponent, resolveDeferredDeps: () => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
225
227
  type: Component,
226
- args: [{ selector: 'rolatech-order-course-item', standalone: true, imports: [CommonModule, ThumbnailComponent, MatIconModule], template: "<div class=\"flex flex-col\">\n <div class=\"hover:!bg-[--rt-base-background] cursor-pointer py-2\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex flex-row w-full\">\n <div class=\"w-2/5 sm:w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course().media) {\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-bold break-words line-clamp-2\">{{ course().name }}</span>\n <span class=\"text-sm text-gray-600\">\u7C7B\u578B: {{ type[course().type] }}</span>\n </div>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n </div>\n</div>\n" }]
228
+ args: [{ selector: 'rolatech-order-course-item', standalone: true, imports: [CommonModule, ThumbnailComponent, MatIconModule], template: "<div class=\"flex flex-col\">\n <div class=\"hover:!bg-[--rt-base-background] cursor-pointer py-2\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex flex-row w-full\">\n <div class=\"w-2/5 sm:w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course().media) {\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-bold break-words line-clamp-2\">{{ course().name }}</span>\n <span class=\"text-sm text-[--rt-text-secondary]\">\u7C7B\u578B: {{ type[course().type] }}</span>\n </div>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n </div>\n</div>\n" }]
227
229
  }], ctorParameters: null, propDecorators: null }) });
228
230
 
229
231
  class OrderVariantItemComponent {
@@ -247,11 +249,11 @@ class OrderProductItemComponent {
247
249
  });
248
250
  }
249
251
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderProductItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderProductItemComponent, isStandalone: true, selector: "rolatech-order-product-item", inputs: { thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, quantity: { classPropertyName: "quantity", publicName: "quantity", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-gray-200 rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-gray-200 h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold\">{{ title() }}</span>\n <span class=\"text-sm text-gray-600 mt-2\">{{ description() }}</span>\n </div>\n <div>\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], deferBlockDependencies: [() => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)]] }); }
252
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderProductItemComponent, isStandalone: true, selector: "rolatech-order-product-item", inputs: { thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, quantity: { classPropertyName: "quantity", publicName: "quantity", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold\">{{ title() }}</span>\n <span class=\"text-sm text-[--rt-text-secondary] mt-2\">{{ description() }}</span>\n </div>\n <div>\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], deferBlockDependencies: [() => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)]] }); }
251
253
  }
252
254
  i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.2.0", ngImport: i0, type: OrderProductItemComponent, resolveDeferredDeps: () => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
253
255
  type: Component,
254
- args: [{ selector: 'rolatech-order-product-item', standalone: true, imports: [CommonModule, ThumbnailComponent, MatIcon], template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-gray-200 rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-gray-200 h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold\">{{ title() }}</span>\n <span class=\"text-sm text-gray-600 mt-2\">{{ description() }}</span>\n </div>\n <div>\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
256
+ args: [{ selector: 'rolatech-order-product-item', standalone: true, imports: [CommonModule, ThumbnailComponent, MatIcon], template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold\">{{ title() }}</span>\n <span class=\"text-sm text-[--rt-text-secondary] mt-2\">{{ description() }}</span>\n </div>\n <div>\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
255
257
  }], ctorParameters: null, propDecorators: null }) });
256
258
 
257
259
  class OrderDetailComponent extends BaseComponent {
@@ -369,7 +371,7 @@ class OrderDetailComponent extends BaseComponent {
369
371
  });
370
372
  }
371
373
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
372
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderDetailComponent, isStandalone: true, selector: "rolatech-order-detail", usesInheritance: true, ngImport: i0, template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" large link=\"../\">\n <button mat-button (click)=\"timeline()\">\n <mat-icon>history</mat-icon>\n <span>\u8BA2\u5355\u72B6\u6001</span>\n </button>\n </rolatech-toolbar>\n <div>\n <div>\n @if (order.status === 'CREATED') {\n <div class=\"text-orange-600 font-bold\">\u652F\u4ED8\u5012\u8BA1\u65F6: {{ countDown }}</div>\n }\n </div>\n <div>\n <div>\n @if (course$ | async; as course) {\n <div class=\"text-lg py-3\">\u8BFE\u7A0B\u4FE1\u606F</div>\n <rolatech-order-course-item [routerLink]=\"['/courses/', course.id]\" [course]=\"course\"></rolatech-order-course-item>\n } @else {\n <div class=\"text-lg py-3\">\u5546\u54C1\u4FE1\u606F</div>\n @for (item of order.items; track $index) {\n <!-- [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\" -->\n <rolatech-order-product-item\n [thumbnail]=\"item.media[0].url + '!w200 '\"\n [routerLink]=\"['/products/', item.productId]\"\n [title]=\"item.name\"\n [total]=\"item.total\"\n [description]=\"item.options | orderItemoptions\"\n [quantity]=\"item.quantity\"\n ></rolatech-order-product-item>\n }\n }\n </div>\n <div class=\"mt-3\">\n <div class=\"text-lg py-3 font-medium\">\u8BA2\u5355\u4FE1\u606F</div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u8BA2\u5355\u53F7</label>\n <span class=\"text-sm\"> {{ order.orderNo }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u4E0B\u5355\u65F6\u95F4</label>\n <span class=\"text-sm\"> {{ order.createdAt }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u5E94\u4ED8\u91D1\u989D</label>\n <span class=\"text-sm\">\u00A5{{ (order.total / 100).toFixed(2) }}</span>\n </div>\n </div>\n @if (order.status.toString() === 'CREATED' || order.status.toString() === 'PAID') {\n <div class=\"mt-6\">\n <div class=\"text-lg pb-3 font-medium\">\u652F\u4ED8\u65B9\u5F0F</div>\n <div class=\"flex\">\n <img class=\"w-6 h-6\" src=\"assets/pay_wechat.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1\u652F\u4ED8</span>\n </div>\n </div>\n }\n </div>\n <!-- safe area -->\n <div class=\"pb-16 sm:pb-3\"></div>\n <div class=\"\">\n @if (order.status.toString() === 'PAID') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"refund()\">\u7533\u8BF7\u9000\u6B3E</button>\n }\n <div class=\"flex items-center justify-end\">\n @if (order.status.toString() === 'CREATED') {\n <span class=\"underline text-sm underline-offset-4 mr-6 cursor-pointer hover:text-orange-400\" (click)=\"cancel()\"\n >\u53D6\u6D88\u8BA2\u5355</span\n >\n }\n @if (order.status.toString() === 'CREATED') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"pay()\">\u652F\u4ED8\u8BA2\u5355</button>\n }\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n<div\n [ngClass]=\"info ? 'translate-none' : 'translate-x-full'\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-80 sm:w-[300px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-xl font-bold\">\u8BA2\u5355\u72B6\u6001</div>\n <button mat-icon-button (click)=\"info = !info\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loadingTimeline) {\n <div class=\"mt-3 p-1 sm:p-4\">\n <ol class=\"relative border-l border-[--rt-border-color]\">\n @for (item of timelineData; track item) {\n <li class=\"mb-8 ml-4\">\n <div\n class=\"absolute w-3 h-3 rounded-full mt-1.5 -left-1.5 border border-[--rt-raised-background] bg-[--rt-text-primary]\"\n ></div>\n <div class=\"text-md font-bold mb-1\">{{ timelineStatus[item.status] }}</div>\n @if (item.status === 'BOOKING_RETURN_REJECTED') {\n <div class=\"text-sm mb-1\">{{ item.return.note }}</div>\n }\n @if (item.status === 'BOOKING_RETURN_REQUESTED') {\n <div class=\"text-sm mb-1\">{{ item.return.reason }}</div>\n }\n <div class=\"text-sm text-gray-400\">{{ item.date }}</div>\n </li>\n }\n </ol>\n </div>\n }\n @if (loadingTimeline) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"info = !info\"\n [ngClass]=\"info ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed inset-0 z-[1000]\"\n></div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: OrderCourseItemComponent, selector: "rolatech-order-course-item", inputs: ["course"] }, { kind: "component", type: OrderProductItemComponent, selector: "rolatech-order-product-item", inputs: ["thumbnail", "title", "description", "quantity", "total"] }, { kind: "pipe", type: OrderItemOptionsFormatPipe, name: "orderItemoptions" }] }); }
374
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderDetailComponent, isStandalone: true, selector: "rolatech-order-detail", usesInheritance: true, ngImport: i0, template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" large link=\"../\">\n <button mat-button (click)=\"timeline()\">\n <mat-icon>history</mat-icon>\n <span>\u8BA2\u5355\u72B6\u6001</span>\n </button>\n </rolatech-toolbar>\n <div>\n <div>\n @if (order.status === 'CREATED') {\n <div class=\"text-[--rt-brand-color] font-bold\">\u652F\u4ED8\u5012\u8BA1\u65F6: {{ countDown }}</div>\n }\n </div>\n <div>\n <div>\n @if (course$ | async; as course) {\n <div class=\"text-lg py-3\">\u8BFE\u7A0B\u4FE1\u606F</div>\n <rolatech-order-course-item [routerLink]=\"['/courses/', course.id]\" [course]=\"course\"></rolatech-order-course-item>\n } @else {\n <div class=\"text-lg py-3\">\u5546\u54C1\u4FE1\u606F</div>\n @for (item of order.items; track $index) {\n <!-- [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\" -->\n <rolatech-order-product-item\n [thumbnail]=\"item.media[0].url + '!w200 '\"\n [routerLink]=\"['/products/', item.productId]\"\n [title]=\"item.name\"\n [total]=\"item.total\"\n [description]=\"item.options | orderItemoptions\"\n [quantity]=\"item.quantity\"\n ></rolatech-order-product-item>\n }\n }\n </div>\n <div class=\"mt-3\">\n <div class=\"text-lg py-3 font-medium\">\u8BA2\u5355\u4FE1\u606F</div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u8BA2\u5355\u53F7</label>\n <span class=\"text-sm\"> {{ order.orderNo }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u4E0B\u5355\u65F6\u95F4</label>\n <span class=\"text-sm\"> {{ order.createdAt }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u5E94\u4ED8\u91D1\u989D</label>\n <span class=\"text-sm\">\u00A5{{ (order.total / 100).toFixed(2) }}</span>\n </div>\n </div>\n @if (order.status.toString() === 'CREATED' || order.status.toString() === 'PAID') {\n <div class=\"mt-6\">\n <div class=\"text-lg pb-3 font-medium\">\u652F\u4ED8\u65B9\u5F0F</div>\n <div class=\"flex\">\n <img class=\"w-6 h-6\" src=\"assets/pay_wechat.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1\u652F\u4ED8</span>\n </div>\n </div>\n }\n </div>\n <!-- safe area -->\n <div class=\"pb-16 sm:pb-3\"></div>\n <div class=\"\">\n @if (order.status.toString() === 'PAID') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"refund()\">\u7533\u8BF7\u9000\u6B3E</button>\n }\n <div class=\"flex items-center justify-end\">\n @if (order.status.toString() === 'CREATED') {\n <span\n class=\"underline text-sm underline-offset-4 mr-6 cursor-pointer hover:text-[--rt-brand-color]\"\n (click)=\"cancel()\"\n >\u53D6\u6D88\u8BA2\u5355</span\n >\n }\n @if (order.status.toString() === 'CREATED') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"pay()\">\u652F\u4ED8\u8BA2\u5355</button>\n }\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n<div\n [ngClass]=\"info ? 'translate-none' : 'translate-x-full'\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-80 sm:w-[300px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-xl font-bold\">\u8BA2\u5355\u72B6\u6001</div>\n <button mat-icon-button (click)=\"info = !info\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loadingTimeline) {\n <div class=\"mt-3 p-1 sm:p-4\">\n <ol class=\"relative border-l border-[--rt-border-color]\">\n @for (item of timelineData; track item) {\n <li class=\"mb-8 ml-4\">\n <div\n class=\"absolute w-3 h-3 rounded-full mt-1.5 -left-1.5 border border-[--rt-raised-background] bg-[--rt-text-primary]\"\n ></div>\n <div class=\"text-md font-bold mb-1\">{{ timelineStatus[item.status] }}</div>\n @if (item.status === 'BOOKING_RETURN_REJECTED') {\n <div class=\"text-sm mb-1\">{{ item.return.note }}</div>\n }\n @if (item.status === 'BOOKING_RETURN_REQUESTED') {\n <div class=\"text-sm mb-1\">{{ item.return.reason }}</div>\n }\n <div class=\"text-sm text-[--rt-text-secondary]\">{{ item.date }}</div>\n </li>\n }\n </ol>\n </div>\n }\n @if (loadingTimeline) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"info = !info\"\n [ngClass]=\"info ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed inset-0 z-[1000]\"\n></div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i1$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: OrderCourseItemComponent, selector: "rolatech-order-course-item", inputs: ["course"] }, { kind: "component", type: OrderProductItemComponent, selector: "rolatech-order-product-item", inputs: ["thumbnail", "title", "description", "quantity", "total"] }, { kind: "pipe", type: OrderItemOptionsFormatPipe, name: "orderItemoptions" }] }); }
373
375
  }
374
376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderDetailComponent, decorators: [{
375
377
  type: Component,
@@ -388,7 +390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
388
390
  OrderProductItemComponent,
389
391
  OrderVariantItemComponent,
390
392
  OrderItemOptionsFormatPipe,
391
- ], template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" large link=\"../\">\n <button mat-button (click)=\"timeline()\">\n <mat-icon>history</mat-icon>\n <span>\u8BA2\u5355\u72B6\u6001</span>\n </button>\n </rolatech-toolbar>\n <div>\n <div>\n @if (order.status === 'CREATED') {\n <div class=\"text-orange-600 font-bold\">\u652F\u4ED8\u5012\u8BA1\u65F6: {{ countDown }}</div>\n }\n </div>\n <div>\n <div>\n @if (course$ | async; as course) {\n <div class=\"text-lg py-3\">\u8BFE\u7A0B\u4FE1\u606F</div>\n <rolatech-order-course-item [routerLink]=\"['/courses/', course.id]\" [course]=\"course\"></rolatech-order-course-item>\n } @else {\n <div class=\"text-lg py-3\">\u5546\u54C1\u4FE1\u606F</div>\n @for (item of order.items; track $index) {\n <!-- [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\" -->\n <rolatech-order-product-item\n [thumbnail]=\"item.media[0].url + '!w200 '\"\n [routerLink]=\"['/products/', item.productId]\"\n [title]=\"item.name\"\n [total]=\"item.total\"\n [description]=\"item.options | orderItemoptions\"\n [quantity]=\"item.quantity\"\n ></rolatech-order-product-item>\n }\n }\n </div>\n <div class=\"mt-3\">\n <div class=\"text-lg py-3 font-medium\">\u8BA2\u5355\u4FE1\u606F</div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u8BA2\u5355\u53F7</label>\n <span class=\"text-sm\"> {{ order.orderNo }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u4E0B\u5355\u65F6\u95F4</label>\n <span class=\"text-sm\"> {{ order.createdAt }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u5E94\u4ED8\u91D1\u989D</label>\n <span class=\"text-sm\">\u00A5{{ (order.total / 100).toFixed(2) }}</span>\n </div>\n </div>\n @if (order.status.toString() === 'CREATED' || order.status.toString() === 'PAID') {\n <div class=\"mt-6\">\n <div class=\"text-lg pb-3 font-medium\">\u652F\u4ED8\u65B9\u5F0F</div>\n <div class=\"flex\">\n <img class=\"w-6 h-6\" src=\"assets/pay_wechat.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1\u652F\u4ED8</span>\n </div>\n </div>\n }\n </div>\n <!-- safe area -->\n <div class=\"pb-16 sm:pb-3\"></div>\n <div class=\"\">\n @if (order.status.toString() === 'PAID') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"refund()\">\u7533\u8BF7\u9000\u6B3E</button>\n }\n <div class=\"flex items-center justify-end\">\n @if (order.status.toString() === 'CREATED') {\n <span class=\"underline text-sm underline-offset-4 mr-6 cursor-pointer hover:text-orange-400\" (click)=\"cancel()\"\n >\u53D6\u6D88\u8BA2\u5355</span\n >\n }\n @if (order.status.toString() === 'CREATED') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"pay()\">\u652F\u4ED8\u8BA2\u5355</button>\n }\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n<div\n [ngClass]=\"info ? 'translate-none' : 'translate-x-full'\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-80 sm:w-[300px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-xl font-bold\">\u8BA2\u5355\u72B6\u6001</div>\n <button mat-icon-button (click)=\"info = !info\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loadingTimeline) {\n <div class=\"mt-3 p-1 sm:p-4\">\n <ol class=\"relative border-l border-[--rt-border-color]\">\n @for (item of timelineData; track item) {\n <li class=\"mb-8 ml-4\">\n <div\n class=\"absolute w-3 h-3 rounded-full mt-1.5 -left-1.5 border border-[--rt-raised-background] bg-[--rt-text-primary]\"\n ></div>\n <div class=\"text-md font-bold mb-1\">{{ timelineStatus[item.status] }}</div>\n @if (item.status === 'BOOKING_RETURN_REJECTED') {\n <div class=\"text-sm mb-1\">{{ item.return.note }}</div>\n }\n @if (item.status === 'BOOKING_RETURN_REQUESTED') {\n <div class=\"text-sm mb-1\">{{ item.return.reason }}</div>\n }\n <div class=\"text-sm text-gray-400\">{{ item.date }}</div>\n </li>\n }\n </ol>\n </div>\n }\n @if (loadingTimeline) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"info = !info\"\n [ngClass]=\"info ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed inset-0 z-[1000]\"\n></div>\n" }]
393
+ ], template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" large link=\"../\">\n <button mat-button (click)=\"timeline()\">\n <mat-icon>history</mat-icon>\n <span>\u8BA2\u5355\u72B6\u6001</span>\n </button>\n </rolatech-toolbar>\n <div>\n <div>\n @if (order.status === 'CREATED') {\n <div class=\"text-[--rt-brand-color] font-bold\">\u652F\u4ED8\u5012\u8BA1\u65F6: {{ countDown }}</div>\n }\n </div>\n <div>\n <div>\n @if (course$ | async; as course) {\n <div class=\"text-lg py-3\">\u8BFE\u7A0B\u4FE1\u606F</div>\n <rolatech-order-course-item [routerLink]=\"['/courses/', course.id]\" [course]=\"course\"></rolatech-order-course-item>\n } @else {\n <div class=\"text-lg py-3\">\u5546\u54C1\u4FE1\u606F</div>\n @for (item of order.items; track $index) {\n <!-- [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\" -->\n <rolatech-order-product-item\n [thumbnail]=\"item.media[0].url + '!w200 '\"\n [routerLink]=\"['/products/', item.productId]\"\n [title]=\"item.name\"\n [total]=\"item.total\"\n [description]=\"item.options | orderItemoptions\"\n [quantity]=\"item.quantity\"\n ></rolatech-order-product-item>\n }\n }\n </div>\n <div class=\"mt-3\">\n <div class=\"text-lg py-3 font-medium\">\u8BA2\u5355\u4FE1\u606F</div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u8BA2\u5355\u53F7</label>\n <span class=\"text-sm\"> {{ order.orderNo }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u4E0B\u5355\u65F6\u95F4</label>\n <span class=\"text-sm\"> {{ order.createdAt }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">\u5E94\u4ED8\u91D1\u989D</label>\n <span class=\"text-sm\">\u00A5{{ (order.total / 100).toFixed(2) }}</span>\n </div>\n </div>\n @if (order.status.toString() === 'CREATED' || order.status.toString() === 'PAID') {\n <div class=\"mt-6\">\n <div class=\"text-lg pb-3 font-medium\">\u652F\u4ED8\u65B9\u5F0F</div>\n <div class=\"flex\">\n <img class=\"w-6 h-6\" src=\"assets/pay_wechat.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1\u652F\u4ED8</span>\n </div>\n </div>\n }\n </div>\n <!-- safe area -->\n <div class=\"pb-16 sm:pb-3\"></div>\n <div class=\"\">\n @if (order.status.toString() === 'PAID') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"refund()\">\u7533\u8BF7\u9000\u6B3E</button>\n }\n <div class=\"flex items-center justify-end\">\n @if (order.status.toString() === 'CREATED') {\n <span\n class=\"underline text-sm underline-offset-4 mr-6 cursor-pointer hover:text-[--rt-brand-color]\"\n (click)=\"cancel()\"\n >\u53D6\u6D88\u8BA2\u5355</span\n >\n }\n @if (order.status.toString() === 'CREATED') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"pay()\">\u652F\u4ED8\u8BA2\u5355</button>\n }\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n<div\n [ngClass]=\"info ? 'translate-none' : 'translate-x-full'\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-80 sm:w-[300px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-xl font-bold\">\u8BA2\u5355\u72B6\u6001</div>\n <button mat-icon-button (click)=\"info = !info\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loadingTimeline) {\n <div class=\"mt-3 p-1 sm:p-4\">\n <ol class=\"relative border-l border-[--rt-border-color]\">\n @for (item of timelineData; track item) {\n <li class=\"mb-8 ml-4\">\n <div\n class=\"absolute w-3 h-3 rounded-full mt-1.5 -left-1.5 border border-[--rt-raised-background] bg-[--rt-text-primary]\"\n ></div>\n <div class=\"text-md font-bold mb-1\">{{ timelineStatus[item.status] }}</div>\n @if (item.status === 'BOOKING_RETURN_REJECTED') {\n <div class=\"text-sm mb-1\">{{ item.return.note }}</div>\n }\n @if (item.status === 'BOOKING_RETURN_REQUESTED') {\n <div class=\"text-sm mb-1\">{{ item.return.reason }}</div>\n }\n <div class=\"text-sm text-[--rt-text-secondary]\">{{ item.date }}</div>\n </li>\n }\n </ol>\n </div>\n }\n @if (loadingTimeline) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"info = !info\"\n [ngClass]=\"info ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed inset-0 z-[1000]\"\n></div>\n" }]
392
394
  }] });
393
395
 
394
396
  class OrderQrcodepayComponent extends BaseComponent {
@@ -447,11 +449,11 @@ class OrderQrcodepayComponent extends BaseComponent {
447
449
  }
448
450
  }
449
451
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderQrcodepayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
450
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderQrcodepayComponent, isStandalone: true, selector: "rolatech-order-qrcodepay", viewQueries: [{ propertyName: "qrcElement", first: true, predicate: ["qrcode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" link=\"../\" large></rolatech-toolbar>\n <div>\n <div>\n <a class=\"text-orange-600\" routerLink=\"..\"\n ><span>\u8BA2\u5355: </span><span class=\"underline\">#{{ this.id }}</span></a\n >\n </div>\n <div class=\"mt-6\">\n @if (needPay) {\n <div>\n <div>\u8BF7\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u652F\u4ED8, \u6211\u4EEC\u4F1A\u5728\u6536\u5230\u4ED8\u6B3E\u540E\u5904\u7406\u60A8\u7684\u8BA2\u5355</div>\n <div class=\"w-52 h-56 flex flex-col justify-end items-center\">\n <div #qrcode></div>\n <span class=\"text-md\">\u5FAE\u4FE1\u652F\u4ED8\u4E8C\u7EF4\u7801</span>\n </div>\n </div>\n } @else {\n <div>\u8BF7\u786E\u8BA4\u5F53\u524D\u8BA2\u5355\u72B6\u6001, \u5982\u5DF2\u7ECF\u4ED8\u6B3E, \u8BF7\u8FD4\u56DE\u67E5\u770B</div>\n }\n </div>\n </div>\n </rolatech-container>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }] }); }
452
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: OrderQrcodepayComponent, isStandalone: true, selector: "rolatech-order-qrcodepay", viewQueries: [{ propertyName: "qrcElement", first: true, predicate: ["qrcode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" link=\"../\" large></rolatech-toolbar>\n <div>\n <div>\n <a class=\"text-[--rt-brand-color]\" routerLink=\"..\"\n ><span>\u8BA2\u5355: </span><span class=\"underline\">#{{ this.id }}</span></a\n >\n </div>\n <div class=\"mt-6\">\n @if (needPay) {\n <div>\n <div>\u8BF7\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u652F\u4ED8, \u6211\u4EEC\u4F1A\u5728\u6536\u5230\u4ED8\u6B3E\u540E\u5904\u7406\u60A8\u7684\u8BA2\u5355</div>\n <div class=\"w-52 h-56 flex flex-col justify-end items-center\">\n <div #qrcode></div>\n <span class=\"text-md\">\u5FAE\u4FE1\u652F\u4ED8\u4E8C\u7EF4\u7801</span>\n </div>\n </div>\n } @else {\n <div>\u8BF7\u786E\u8BA4\u5F53\u524D\u8BA2\u5355\u72B6\u6001, \u5982\u5DF2\u7ECF\u4ED8\u6B3E, \u8BF7\u8FD4\u56DE\u67E5\u770B</div>\n }\n </div>\n </div>\n </rolatech-container>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }] }); }
451
453
  }
452
454
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: OrderQrcodepayComponent, decorators: [{
453
455
  type: Component,
454
- args: [{ selector: 'rolatech-order-qrcodepay', standalone: true, imports: [RouterLink, ContainerComponent, ToolbarComponent], template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" link=\"../\" large></rolatech-toolbar>\n <div>\n <div>\n <a class=\"text-orange-600\" routerLink=\"..\"\n ><span>\u8BA2\u5355: </span><span class=\"underline\">#{{ this.id }}</span></a\n >\n </div>\n <div class=\"mt-6\">\n @if (needPay) {\n <div>\n <div>\u8BF7\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u652F\u4ED8, \u6211\u4EEC\u4F1A\u5728\u6536\u5230\u4ED8\u6B3E\u540E\u5904\u7406\u60A8\u7684\u8BA2\u5355</div>\n <div class=\"w-52 h-56 flex flex-col justify-end items-center\">\n <div #qrcode></div>\n <span class=\"text-md\">\u5FAE\u4FE1\u652F\u4ED8\u4E8C\u7EF4\u7801</span>\n </div>\n </div>\n } @else {\n <div>\u8BF7\u786E\u8BA4\u5F53\u524D\u8BA2\u5355\u72B6\u6001, \u5982\u5DF2\u7ECF\u4ED8\u6B3E, \u8BF7\u8FD4\u56DE\u67E5\u770B</div>\n }\n </div>\n </div>\n </rolatech-container>\n}\n" }]
456
+ args: [{ selector: 'rolatech-order-qrcodepay', standalone: true, imports: [RouterLink, ContainerComponent, ToolbarComponent], template: "@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" link=\"../\" large></rolatech-toolbar>\n <div>\n <div>\n <a class=\"text-[--rt-brand-color]\" routerLink=\"..\"\n ><span>\u8BA2\u5355: </span><span class=\"underline\">#{{ this.id }}</span></a\n >\n </div>\n <div class=\"mt-6\">\n @if (needPay) {\n <div>\n <div>\u8BF7\u4F7F\u7528\u5FAE\u4FE1\u626B\u7801\u652F\u4ED8, \u6211\u4EEC\u4F1A\u5728\u6536\u5230\u4ED8\u6B3E\u540E\u5904\u7406\u60A8\u7684\u8BA2\u5355</div>\n <div class=\"w-52 h-56 flex flex-col justify-end items-center\">\n <div #qrcode></div>\n <span class=\"text-md\">\u5FAE\u4FE1\u652F\u4ED8\u4E8C\u7EF4\u7801</span>\n </div>\n </div>\n } @else {\n <div>\u8BF7\u786E\u8BA4\u5F53\u524D\u8BA2\u5355\u72B6\u6001, \u5982\u5DF2\u7ECF\u4ED8\u6B3E, \u8BF7\u8FD4\u56DE\u67E5\u770B</div>\n }\n </div>\n </div>\n </rolatech-container>\n}\n" }]
455
457
  }] });
456
458
 
457
459
  const orderRoutes = [
@@ -473,5 +475,5 @@ const orderRoutes = [
473
475
  * Generated bundle index. Do not edit.
474
476
  */
475
477
 
476
- export { OrderItemStatus, OrderPayoutStatus, OrderPayoutType, OrderReturnStatus, OrderStatus, OrderTimelineStatus, OrderType, orderRoutes };
478
+ export { OrderCourseItemComponent, OrderItemComponent, OrderItemOptionsFormatPipe, OrderItemStatus, OrderPayoutStatus, OrderPayoutType, OrderProductItemComponent, OrderReturnRequestComponent, OrderReturnStatus, OrderStatus, OrderTimelineStatus, OrderType, OrderVariantItemComponent, orderRoutes };
477
479
  //# sourceMappingURL=rolatech-angular-order.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-order.mjs","sources":["../../../../libs/angular-order/src/lib/interfaces/order.ts","../../../../libs/angular-order/src/lib/components/order-item/order-item-options.pipe.ts","../../../../libs/angular-order/src/lib/components/order-item/order-item.component.ts","../../../../libs/angular-order/src/lib/components/order-item/order-item.component.html","../../../../libs/angular-order/src/lib/pages/orders-index/order-index.component.ts","../../../../libs/angular-order/src/lib/pages/orders-index/order-index.component.html","../../../../libs/angular-order/src/lib/components/order-return-request/order-return-request.component.ts","../../../../libs/angular-order/src/lib/components/order-return-request/order-return-request.component.html","../../../../libs/angular-order/src/lib/components/order-course-item/order-course-item.component.ts","../../../../libs/angular-order/src/lib/components/order-course-item/order-course-item.component.html","../../../../libs/angular-order/src/lib/components/order-variant-item/order-variant-item.component.ts","../../../../libs/angular-order/src/lib/components/order-variant-item/order-variant-item.component.html","../../../../libs/angular-order/src/lib/components/order-product-item/order-product-item.component.ts","../../../../libs/angular-order/src/lib/components/order-product-item/order-product-item.component.html","../../../../libs/angular-order/src/lib/pages/order-detail/order-detail.component.ts","../../../../libs/angular-order/src/lib/pages/order-detail/order-detail.component.html","../../../../libs/angular-order/src/lib/pages/order-qrcodepay/order-qrcodepay.component.ts","../../../../libs/angular-order/src/lib/pages/order-qrcodepay/order-qrcodepay.component.html","../../../../libs/angular-order/src/lib/orders.routes.ts","../../../../libs/angular-order/src/rolatech-angular-order.ts"],"sourcesContent":["export interface Order {\n id?: string;\n createdAt: string;\n orderNo?: string;\n total: number;\n status: OrderStatus | string;\n items: OrderItem[];\n customerId: string;\n ownerId: string;\n type: OrderType;\n}\nexport enum OrderStatus {\n CREATED = <any>'待付款',\n PAID = <any>'已支付',\n COMPLETED = <any>'已完成',\n CLOSED = <any>'交易关闭',\n CANCELED = <any>'交易取消',\n REFUNDED = <any>'已退款',\n}\nexport enum OrderType {\n COURSE = <any>'课程',\n PRODUCT = <any>'商品',\n BOOKING = <any>'预定',\n}\nexport interface OrderReturn {\n status: OrderReturnStatus | string;\n reason: string;\n total: number;\n customerId: string;\n ownerId: string;\n items: OrderItemReturn[];\n}\nexport interface OrderItemReturn {\n orderItem: OrderItem;\n}\nexport enum OrderReturnStatus {\n CREATED = <any>'等待审核',\n CANCELED = <any>'用户取消',\n APPROVED = <any>'已通过',\n REJECTED = <any>'已拒绝',\n PROCESSING = <any>'平台处理中',\n RETURNED = <any>'已退款',\n}\nexport interface OrderItem {\n name: string;\n productId: string;\n variantId: string;\n status: OrderItemStatus;\n total: number;\n quantity: number;\n media: OrderItemMedia[];\n options: OrderItemOption[];\n}\nexport interface OrderItemMedia {\n url: string;\n alt: string;\n size: number;\n}\nexport interface OrderItemOption {\n name: string;\n value: string;\n}\nexport enum OrderItemStatus {\n CREATED = <any>'创建',\n CANCELED = <any>'已取消',\n CLOSED = <any>'已关闭',\n RETURN_REQUESTED = <any>'等待审核',\n RETURN_APPROVED = <any>'商家同意退款',\n RETURN_REJECTED = <any>'商家拒绝退款',\n RETURN_PROCESSING = <any>'退款处理中',\n REFUNDED = <any>'已退款',\n}\nexport enum OrderTimelineStatus {\n ORDER_CREATE = <any>'交易创建',\n ORDER_CLOSED = <any>'交易关闭',\n ORDER_CANCELED = <any>'交易取消',\n ORDER_PAID = <any>'订单已支付',\n ORDER_REFUNDED = <any>'订单已退款',\n ORDER_COMPLETED = <any>'订单已完成',\n ORDER_RETURN_REQUESTED = <any>'退款申请',\n ORDER_RETURN_APPROVED = <any>'商家同意退款',\n ORDER_RETURN_REJECTED = <any>'商家拒绝退款',\n ORDER_RETURN_PROCESSING = <any>'退款处理中',\n ORDER_RETURN_REFUNDED = <any>'退款处理完成,已入账',\n}\nexport interface OrderPayout {\n id: string;\n createdAt: string;\n amount: number;\n status: OrderPayoutStatus | string;\n type: OrderPayoutType;\n fee: number;\n total: number;\n orderId: string;\n description: string;\n}\nexport enum OrderPayoutStatus {\n CREATED = <any>'创建',\n PENDING = <any>'处理中',\n PAID = <any>'已支付',\n CANCELED = <any>'已取消',\n FAILED = <any>'失败',\n}\nexport enum OrderPayoutType {\n BANK = <any>'银行转账',\n CARD = <any>'银行卡',\n WECHAT = <any>'微信零钱',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'orderItemoptions',\n})\nexport class OrderItemOptionsFormatPipe implements PipeTransform {\n transform(items: any[]): any {\n if (!items) {\n return;\n }\n let result = '';\n items.forEach((item, index) => {\n const tmp = index === items.length - 1 ? '' : ', ';\n result += item.name ? item.value + tmp : item.name + tmp;\n });\n return result;\n }\n}\n","import { Component, computed, effect, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Order, OrderStatus } from '../../interfaces';\nimport { JsonPipe, NgClass } from '@angular/common';\nimport { sumBy } from 'lodash';\nimport { ImagePlaceholderComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { OrderItemOptionsFormatPipe } from './order-item-options.pipe';\n\n@Component({\n selector: 'rolatech-order-item',\n standalone: true,\n imports: [MatIconModule, ThumbnailComponent, ImagePlaceholderComponent, NgClass, JsonPipe, OrderItemOptionsFormatPipe],\n templateUrl: './order-item.component.html',\n styleUrl: './order-item.component.scss',\n})\nexport class OrderItemComponent {\n order = input.required<Order>();\n status: any = OrderStatus;\n total = computed(() => {\n return (this.order().total / 100).toFixed(2);\n // const price = sumBy(this.order().items, (item: any) => item.total);\n // return (price / 100).toFixed(2);\n });\n quantity = computed(() => sumBy(this.order().items, (item: any) => item.quantity));\n}\n","<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <span>订单号: {{ order().orderNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[order().status] }}</span>\n </div>\n <div>\n @if (order().items; as items) {\n @if (items.length > 1) {\n } @else {}\n <div class=\"flex flex-col overflow-x-scroll scrollbar-hide\">\n @for (item of items; track $index) {\n <div class=\"flex flex-row py-2\">\n @if (item.media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"item.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-gray-200 h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div>\n <div>{{ item.name }}</div>\n @if (item.options) {\n <div>{{ item.options | orderItemoptions }}</div>\n }\n </div>\n <div>\n <div class=\"text-sm\">¥{{ (item.total / 100).toFixed(2) }}</div>\n <div class=\"text-sm mt-2\">数量{{ item.quantity }}</div>\n </div>\n <!-- <div>\n <div class=\"text-sm\">¥{{ total() }}</div>\n <div class=\"text-sm mt-2\">数量{{ quantity() }}</div>\n </div> -->\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n<hr />\n","import { Component, inject, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { RouterModule, ActivatedRoute } from '@angular/router';\nimport {\n ContainerComponent,\n TabsComponent,\n TabComponent,\n ToolbarComponent,\n ListComponent,\n EmptyComponent,\n} from '@rolatech/angular-components';\nimport { OrderService } from '@rolatech/angular-services';\nimport { OrderItemComponent } from '../../components/order-item/order-item.component';\nimport { Order, OrderStatus } from '../../interfaces';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-order-index',\n templateUrl: './order-index.component.html',\n styleUrls: ['./order-index.component.scss'],\n standalone: true,\n imports: [\n ContainerComponent,\n RouterModule,\n TabsComponent,\n TabComponent,\n ToolbarComponent,\n ListComponent,\n OrderItemComponent,\n EmptyComponent,\n MatButtonModule,\n MatIconModule,\n ],\n})\nexport class OrderIndexComponent implements OnInit {\n orderService = inject(OrderService);\n title = inject(Title);\n route = inject(ActivatedRoute);\n links = [\n {\n name: '全部',\n icon: 'dashboard',\n },\n {\n name: '待付款',\n icon: 'category',\n status: 'created',\n },\n {\n name: '已支付',\n icon: 'category',\n status: 'paid',\n },\n {\n name: '已退款',\n icon: 'category',\n status: 'refunded',\n },\n {\n name: '已取消',\n icon: 'category',\n status: 'canceled',\n },\n ];\n orders: Order[] = [];\n status: any = OrderStatus;\n select = 0;\n ngOnInit(): void {\n this.title.setTitle('我的订单 - 拼小课');\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n this.findOrders(status);\n });\n }\n findOrders(status: string) {\n const options: any = {\n sort: 'updatedAt desc',\n };\n if (status) {\n options['filter'] = `status:${status}`;\n }\n this.orderService.me(options).subscribe({\n next: (res: any) => {\n this.orders = res.data;\n },\n });\n }\n}\n","<rolatech-container>\n <rolatech-toolbar title=\"我的订单\" large>\n <button mat-button>\n <span>过滤</span>\n <mat-icon>tune</mat-icon>\n </button>\n </rolatech-toolbar>\n <rolatech-tabs [select]=\"select\">\n @for (item of links; track item) {\n @if (item.status) {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\" [queryParams]=\"{ status: item.status }\"></rolatech-tab>\n } @else {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\"></rolatech-tab>\n }\n }\n </rolatech-tabs>\n <rolatech-list>\n @if (orders) {\n @for (item of orders; track item) {\n <rolatech-order-item [routerLink]=\"['./', item.id]\" [order]=\"item\"></rolatech-order-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n </rolatech-list>\n</rolatech-container>\n","import { Component, model, output } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'rolatech-order-return-request',\n standalone: true,\n imports: [MatFormFieldModule, MatInputModule],\n templateUrl: './order-return-request.component.html',\n styleUrl: './order-return-request.component.scss',\n})\nexport class OrderReturnRequestComponent {\n output = output<any>();\n reason = model<any>();\n}\n","<div class=\"py-2\">\n <h2 class=\"mb-2\">在下面输入退款理由</h2>\n <mat-form-field appearance=\"fill\">\n <mat-label> 退款理由 </mat-label>\n <textarea matInput required [value]=\"reason()\"></textarea>\n </mat-form-field>\n</div>\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Course, CourseType } from '@rolatech/angular-course';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-order-course-item',\n standalone: true,\n imports: [CommonModule, ThumbnailComponent, MatIconModule],\n templateUrl: './order-course-item.component.html',\n styleUrl: './order-course-item.component.scss',\n})\nexport class OrderCourseItemComponent {\n course = input.required<Course>();\n type = CourseType;\n}\n","<div class=\"flex flex-col\">\n <div class=\"hover:!bg-[--rt-base-background] cursor-pointer py-2\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex flex-row w-full\">\n <div class=\"w-2/5 sm:w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course().media) {\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-bold break-words line-clamp-2\">{{ course().name }}</span>\n <span class=\"text-sm text-gray-600\">类型: {{ type[course().type] }}</span>\n </div>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-order-variant-item',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './order-variant-item.component.html',\n styleUrl: './order-variant-item.component.scss',\n})\nexport class OrderVariantItemComponent {}\n","<p>order-variant-item works!</p>\n","import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-order-product-item',\n standalone: true,\n imports: [CommonModule, ThumbnailComponent, MatIcon],\n templateUrl: './order-product-item.component.html',\n styleUrl: './order-product-item.component.scss',\n})\nexport class OrderProductItemComponent {\n thumbnail = input<string>();\n title = input.required<string>();\n description = input<string>();\n quantity = input<number>(0);\n total = input.required<number>();\n priceDisplay = computed(() => {\n return (this.total() / 100)?.toFixed(2);\n });\n}\n","<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-gray-200 rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-gray-200 h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold\">{{ title() }}</span>\n <span class=\"text-sm text-gray-600 mt-2\">{{ description() }}</span>\n </div>\n <div>¥{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">数量</span>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, forwardRef, inject, OnInit } from '@angular/core';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport moment from 'moment';\nimport { Observable, map } from 'rxjs';\nimport {\n ContainerComponent,\n BaseComponent,\n SpinnerComponent,\n ThumbnailComponent,\n TitleComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { CourseType, Course, CourseService } from '@rolatech/angular-course';\nimport { NavigationService } from '@rolatech/angular-services';\nimport { OrderService } from '@rolatech/angular-services';\nimport { Order, OrderStatus, OrderTimelineStatus, OrderType } from '../../interfaces';\nimport { OrderReturnRequestComponent } from '../../components/order-return-request/order-return-request.component';\nimport { ProductService } from '@rolatech/angular-services';\nimport { OrderCourseItemComponent } from '../../components/order-course-item/order-course-item.component';\nimport { OrderVariantItemComponent } from '../../components/order-variant-item/order-variant-item.component';\nimport { OrderProductItemComponent } from '../../components/order-product-item/order-product-item.component';\nimport { OrderItemOptionsFormatPipe } from '../../components/order-item/order-item-options.pipe';\n@Component({\n selector: 'rolatech-order-detail',\n standalone: true,\n imports: [\n MatButtonModule,\n MatIconModule,\n RouterLink,\n NgClass,\n AsyncPipe,\n SpinnerComponent,\n ContainerComponent,\n ThumbnailComponent,\n ToolbarComponent,\n TitleComponent,\n OrderCourseItemComponent,\n OrderProductItemComponent,\n OrderVariantItemComponent,\n OrderItemOptionsFormatPipe,\n ],\n templateUrl: './order-detail.component.html',\n styleUrl: './order-detail.component.scss',\n})\nexport class OrderDetailComponent extends BaseComponent implements OnInit {\n order!: Order;\n status: any = OrderStatus;\n type = CourseType;\n orderType = OrderType;\n orderService = inject(OrderService);\n courseService = inject(CourseService);\n productService = inject(ProductService);\n navigationService = inject(NavigationService);\n timelineData: any;\n info = false;\n loadingTimeline = false;\n timelineStatus: any = OrderTimelineStatus;\n\n // order$: Observable<Order>;\n course$?: Observable<Course>;\n countDown = '';\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.orderService.get(this.id).subscribe({\n next: (res: any) => {\n this.order = res.data;\n if (this.order.type?.toString() === 'PRODUCT') {\n this.getVariant();\n } else if (this.order.type?.toString() === 'COURSE') {\n this.getCourse();\n } else {\n this.getCourse();\n }\n if (this.order.status === 'CREATED') {\n setInterval(() => {\n const start = moment();\n const end = moment(this.order.createdAt).add(15, 'minute');\n const diff = end.diff(start);\n const duration = moment.duration(diff);\n this.countDown = moment.utc(duration.as('milliseconds')).format('mm:ss');\n }, 1000);\n }\n },\n });\n }\n back() {\n this.navigationService.back();\n }\n getCourse() {\n const { productId } = this.order.items[0];\n this.course$ = this.courseService.get(productId).pipe(map((res: any) => res.data));\n }\n getVariant() {\n const { variantId } = this.order.items[0];\n if (variantId) {\n this.productService\n .getVariant(variantId)\n .pipe(map((res: any) => res.data))\n .subscribe({\n next: (res) => {},\n });\n }\n }\n refund() {\n const options = {\n width: '500px',\n title: '申请退款',\n height: '90%',\n cancelText: '取消',\n confirmText: '确认',\n component: OrderReturnRequestComponent,\n data: {\n reason: '',\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((res) => {\n if (res) {\n this.orderService.refund(this.id, res).subscribe({\n next: (res) => {\n this.snackBarService.open('退款申请成功, 等待审核');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n });\n }\n cancel() {\n this.orderService.cancel(this.id).subscribe({\n next: (res) => {\n this.order.status = OrderStatus[OrderStatus.CANCELED];\n this.snackBarService.open('取消成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n pay() {\n this.router.navigateByUrl(`/orders/${this.id}/qrcodepay`);\n }\n timeline() {\n this.info = true;\n this.loadingTimeline = true;\n this.orderService.timeline(this.id).subscribe({\n next: (res) => {\n this.timelineData = res.data;\n this.loadingTimeline = false;\n },\n error: (error) => {\n this.loadingTimeline = false;\n },\n });\n }\n}\n","@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" large link=\"../\">\n <button mat-button (click)=\"timeline()\">\n <mat-icon>history</mat-icon>\n <span>订单状态</span>\n </button>\n </rolatech-toolbar>\n <div>\n <div>\n @if (order.status === 'CREATED') {\n <div class=\"text-orange-600 font-bold\">支付倒计时: {{ countDown }}</div>\n }\n </div>\n <div>\n <div>\n @if (course$ | async; as course) {\n <div class=\"text-lg py-3\">课程信息</div>\n <rolatech-order-course-item [routerLink]=\"['/courses/', course.id]\" [course]=\"course\"></rolatech-order-course-item>\n } @else {\n <div class=\"text-lg py-3\">商品信息</div>\n @for (item of order.items; track $index) {\n <!-- [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\" -->\n <rolatech-order-product-item\n [thumbnail]=\"item.media[0].url + '!w200 '\"\n [routerLink]=\"['/products/', item.productId]\"\n [title]=\"item.name\"\n [total]=\"item.total\"\n [description]=\"item.options | orderItemoptions\"\n [quantity]=\"item.quantity\"\n ></rolatech-order-product-item>\n }\n }\n </div>\n <div class=\"mt-3\">\n <div class=\"text-lg py-3 font-medium\">订单信息</div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">订单号</label>\n <span class=\"text-sm\"> {{ order.orderNo }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">下单时间</label>\n <span class=\"text-sm\"> {{ order.createdAt }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">应付金额</label>\n <span class=\"text-sm\">¥{{ (order.total / 100).toFixed(2) }}</span>\n </div>\n </div>\n @if (order.status.toString() === 'CREATED' || order.status.toString() === 'PAID') {\n <div class=\"mt-6\">\n <div class=\"text-lg pb-3 font-medium\">支付方式</div>\n <div class=\"flex\">\n <img class=\"w-6 h-6\" src=\"assets/pay_wechat.png\" />\n <span class=\"ml-1\">微信支付</span>\n </div>\n </div>\n }\n </div>\n <!-- safe area -->\n <div class=\"pb-16 sm:pb-3\"></div>\n <div class=\"\">\n @if (order.status.toString() === 'PAID') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"refund()\">申请退款</button>\n }\n <div class=\"flex items-center justify-end\">\n @if (order.status.toString() === 'CREATED') {\n <span class=\"underline text-sm underline-offset-4 mr-6 cursor-pointer hover:text-orange-400\" (click)=\"cancel()\"\n >取消订单</span\n >\n }\n @if (order.status.toString() === 'CREATED') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"pay()\">支付订单</button>\n }\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n<div\n [ngClass]=\"info ? 'translate-none' : 'translate-x-full'\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-80 sm:w-[300px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-xl font-bold\">订单状态</div>\n <button mat-icon-button (click)=\"info = !info\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loadingTimeline) {\n <div class=\"mt-3 p-1 sm:p-4\">\n <ol class=\"relative border-l border-[--rt-border-color]\">\n @for (item of timelineData; track item) {\n <li class=\"mb-8 ml-4\">\n <div\n class=\"absolute w-3 h-3 rounded-full mt-1.5 -left-1.5 border border-[--rt-raised-background] bg-[--rt-text-primary]\"\n ></div>\n <div class=\"text-md font-bold mb-1\">{{ timelineStatus[item.status] }}</div>\n @if (item.status === 'BOOKING_RETURN_REJECTED') {\n <div class=\"text-sm mb-1\">{{ item.return.note }}</div>\n }\n @if (item.status === 'BOOKING_RETURN_REQUESTED') {\n <div class=\"text-sm mb-1\">{{ item.return.reason }}</div>\n }\n <div class=\"text-sm text-gray-400\">{{ item.date }}</div>\n </li>\n }\n </ol>\n </div>\n }\n @if (loadingTimeline) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"info = !info\"\n [ngClass]=\"info ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed inset-0 z-[1000]\"\n></div>\n","import { Component, ElementRef, inject, OnInit, Renderer2, viewChild } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ContainerComponent, ToolbarComponent, BaseComponent } from '@rolatech/angular-components';\nimport { Order, OrderStatus } from '../../interfaces';\nimport { OrderService } from '@rolatech/angular-services';\nimport * as QRCode from 'qrcode';\n\n@Component({\n selector: 'rolatech-order-qrcodepay',\n standalone: true,\n imports: [RouterLink, ContainerComponent, ToolbarComponent],\n templateUrl: './order-qrcodepay.component.html',\n styleUrl: './order-qrcodepay.component.scss',\n})\nexport class OrderQrcodepayComponent extends BaseComponent implements OnInit {\n order!: Order;\n status: any = OrderStatus;\n orderService = inject(OrderService);\n renderer = inject(Renderer2);\n needPay = true;\n qrcElement = viewChild.required<ElementRef>('qrcode');\n\n ngOnInit(): void {\n this.getOrder();\n }\n getOrder() {\n this.orderService.get(this.id).subscribe({\n next: (res: any) => {\n this.order = res.data;\n this.needPay = this.order.status.toString() === 'CREATED';\n if (this.needPay) {\n this.getQRCodeUrl();\n }\n },\n });\n }\n getQRCodeUrl() {\n this.orderService.pay(this.id).subscribe({\n next: (res) => {\n this.genQRCode(res.data.qrCodeUrl);\n },\n });\n }\n genQRCode(url: string) {\n const element: Element = this.renderer.createElement('canvas');\n this.toCanvas(element, url)\n .then(() => {\n this.renderElement(element);\n })\n .catch((e) => {\n this.removeElementChildren();\n });\n }\n\n private toCanvas(canvas: any, url: any): Promise<any> {\n return QRCode.toCanvas(canvas, url, {\n errorCorrectionLevel: 'M',\n width: 200,\n });\n }\n private renderElement(element: any): void {\n this.removeElementChildren();\n this.renderer.appendChild(this.qrcElement().nativeElement, element);\n }\n private removeElementChildren(): void {\n for (const node of this.qrcElement().nativeElement.childNodes) {\n this.renderer.removeChild(this.qrcElement().nativeElement, node);\n }\n }\n}\n","@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" link=\"../\" large></rolatech-toolbar>\n <div>\n <div>\n <a class=\"text-orange-600\" routerLink=\"..\"\n ><span>订单: </span><span class=\"underline\">#{{ this.id }}</span></a\n >\n </div>\n <div class=\"mt-6\">\n @if (needPay) {\n <div>\n <div>请使用微信扫码支付, 我们会在收到付款后处理您的订单</div>\n <div class=\"w-52 h-56 flex flex-col justify-end items-center\">\n <div #qrcode></div>\n <span class=\"text-md\">微信支付二维码</span>\n </div>\n </div>\n } @else {\n <div>请确认当前订单状态, 如已经付款, 请返回查看</div>\n }\n </div>\n </div>\n </rolatech-container>\n}\n","import { Routes } from '@angular/router';\nimport { OrderIndexComponent } from './pages/orders-index/order-index.component';\nimport { OrderDetailComponent } from './pages/order-detail/order-detail.component';\nimport { OrderQrcodepayComponent } from './pages/order-qrcodepay/order-qrcodepay.component';\n\nexport const orderRoutes: Routes = [\n {\n path: '',\n component: OrderIndexComponent,\n },\n {\n path: ':id',\n component: OrderDetailComponent,\n },\n {\n path: ':id/qrcodepay',\n component: OrderQrcodepayComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-order.mjs","sources":["../../../../libs/angular-order/src/lib/interfaces/order.ts","../../../../libs/angular-order/src/lib/pipe/order-item-options.pipe.ts","../../../../libs/angular-order/src/lib/components/order-item/order-item.component.ts","../../../../libs/angular-order/src/lib/components/order-item/order-item.component.html","../../../../libs/angular-order/src/lib/pages/orders-index/order-index.component.ts","../../../../libs/angular-order/src/lib/pages/orders-index/order-index.component.html","../../../../libs/angular-order/src/lib/components/order-return-request/order-return-request.component.ts","../../../../libs/angular-order/src/lib/components/order-return-request/order-return-request.component.html","../../../../libs/angular-order/src/lib/components/order-course-item/order-course-item.component.ts","../../../../libs/angular-order/src/lib/components/order-course-item/order-course-item.component.html","../../../../libs/angular-order/src/lib/components/order-variant-item/order-variant-item.component.ts","../../../../libs/angular-order/src/lib/components/order-variant-item/order-variant-item.component.html","../../../../libs/angular-order/src/lib/components/order-product-item/order-product-item.component.ts","../../../../libs/angular-order/src/lib/components/order-product-item/order-product-item.component.html","../../../../libs/angular-order/src/lib/pages/order-detail/order-detail.component.ts","../../../../libs/angular-order/src/lib/pages/order-detail/order-detail.component.html","../../../../libs/angular-order/src/lib/pages/order-qrcodepay/order-qrcodepay.component.ts","../../../../libs/angular-order/src/lib/pages/order-qrcodepay/order-qrcodepay.component.html","../../../../libs/angular-order/src/lib/orders.routes.ts","../../../../libs/angular-order/src/rolatech-angular-order.ts"],"sourcesContent":["export interface Order {\n id?: string;\n createdAt: string;\n orderNo?: string;\n total: number;\n status: OrderStatus | string;\n items: OrderItem[];\n customerId: string;\n ownerId: string;\n type: OrderType;\n}\nexport enum OrderStatus {\n CREATED = <any>'待付款',\n PAID = <any>'已支付',\n COMPLETED = <any>'已完成',\n CLOSED = <any>'交易关闭',\n CANCELED = <any>'交易取消',\n REFUNDED = <any>'已退款',\n}\nexport enum OrderType {\n COURSE = <any>'课程',\n PRODUCT = <any>'商品',\n SERVICE = <any>'服务',\n BOOKING = <any>'预定',\n OTTHER = <any>'其他',\n}\nexport interface OrderReturn {\n status: OrderReturnStatus | string;\n reason: string;\n total: number;\n customerId: string;\n ownerId: string;\n items: OrderItemReturn[];\n}\nexport interface OrderItemReturn {\n orderItem: OrderItem;\n}\nexport enum OrderReturnStatus {\n CREATED = <any>'等待审核',\n CANCELED = <any>'用户取消',\n APPROVED = <any>'已通过',\n REJECTED = <any>'已拒绝',\n PROCESSING = <any>'平台处理中',\n RETURNED = <any>'已退款',\n}\nexport interface OrderItem {\n name: string;\n productId: string;\n variantId: string;\n status: OrderItemStatus;\n total: number;\n quantity: number;\n media: OrderItemMedia[];\n options: OrderItemOption[];\n}\nexport interface OrderItemMedia {\n url: string;\n alt: string;\n size: number;\n}\nexport interface OrderItemOption {\n name: string;\n value: string;\n}\nexport enum OrderItemStatus {\n CREATED = <any>'创建',\n CANCELED = <any>'已取消',\n CLOSED = <any>'已关闭',\n RETURN_REQUESTED = <any>'等待审核',\n RETURN_APPROVED = <any>'商家同意退款',\n RETURN_REJECTED = <any>'商家拒绝退款',\n RETURN_PROCESSING = <any>'退款处理中',\n REFUNDED = <any>'已退款',\n}\nexport enum OrderTimelineStatus {\n ORDER_CREATE = <any>'交易创建',\n ORDER_CLOSED = <any>'交易关闭',\n ORDER_CANCELED = <any>'交易取消',\n ORDER_PAID = <any>'订单已支付',\n ORDER_REFUNDED = <any>'订单已退款',\n ORDER_COMPLETED = <any>'订单已完成',\n ORDER_RETURN_REQUESTED = <any>'退款申请',\n ORDER_RETURN_APPROVED = <any>'商家同意退款',\n ORDER_RETURN_REJECTED = <any>'商家拒绝退款',\n ORDER_RETURN_PROCESSING = <any>'退款处理中',\n ORDER_RETURN_REFUNDED = <any>'退款处理完成,已入账',\n}\nexport interface OrderPayout {\n id: string;\n createdAt: string;\n amount: number;\n status: OrderPayoutStatus | string;\n type: OrderPayoutType;\n fee: number;\n total: number;\n orderId: string;\n description: string;\n}\nexport enum OrderPayoutStatus {\n CREATED = <any>'创建',\n PENDING = <any>'处理中',\n PAID = <any>'已支付',\n CANCELED = <any>'已取消',\n FAILED = <any>'失败',\n}\nexport enum OrderPayoutType {\n BANK = <any>'银行转账',\n CARD = <any>'银行卡',\n WECHAT = <any>'微信零钱',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'orderItemoptions',\n})\nexport class OrderItemOptionsFormatPipe implements PipeTransform {\n transform(items: any[]): any {\n if (!items) {\n return;\n }\n let result = '';\n items.forEach((item, index) => {\n const tmp = index === items.length - 1 ? '' : ', ';\n result += item.name ? item.value + tmp : item.name + tmp;\n });\n return result;\n }\n}\n","import { Component, computed, effect, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Order, OrderStatus } from '../../interfaces';\nimport { JsonPipe, NgClass } from '@angular/common';\nimport { sumBy } from 'lodash';\nimport { ImagePlaceholderComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { OrderItemOptionsFormatPipe } from '../../pipe/order-item-options.pipe';\n\n@Component({\n selector: 'rolatech-order-item',\n standalone: true,\n imports: [MatIconModule, ThumbnailComponent, ImagePlaceholderComponent, NgClass, JsonPipe, OrderItemOptionsFormatPipe],\n templateUrl: './order-item.component.html',\n styleUrl: './order-item.component.scss',\n})\nexport class OrderItemComponent {\n order = input.required<Order>();\n status: any = OrderStatus;\n total = computed(() => {\n return (this.order().total / 100).toFixed(2);\n // const price = sumBy(this.order().items, (item: any) => item.total);\n // return (price / 100).toFixed(2);\n });\n quantity = computed(() => sumBy(this.order().items, (item: any) => item.quantity));\n}\n","<div class=\"flex flex-col hover:bg-[--rt-raised-background] cursor-pointer p-3\">\n <div class=\"flex justify-between w-full mb-2\">\n <span>订单号: {{ order().orderNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[order().status] }}</span>\n </div>\n <div>\n @if (order().items; as items) {\n @if (items.length > 1) {\n } @else {}\n <div class=\"flex flex-col overflow-x-scroll scrollbar-hide\">\n @for (item of items; track $index) {\n <div class=\"flex flex-row py-2\">\n @if (item.media) {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"item.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n } @else {\n <div class=\"min-w-24 w-36 object-cover aspect-video rounded-lg mr-3\">\n <rolatech-image-placeholder></rolatech-image-placeholder>\n </div>\n }\n <div class=\"flex w-full justify-between\">\n <div class=\"flex justify-between w-full\">\n <div>\n <div>{{ item.name }}</div>\n @if (item.options) {\n <div class=\"text-sm text-[--rt-text-secondary] mt-2\">{{ item.options | orderItemoptions }}</div>\n }\n </div>\n <div class=\"text-right\">\n <div class=\"text-sm\">¥{{ (item.total / 100).toFixed(2) }}</div>\n <div class=\"text-sm mt-2\">x{{ item.quantity }}</div>\n </div>\n <!-- <div>\n <div class=\"text-sm\">¥{{ total() }}</div>\n <div class=\"text-sm mt-2\">数量{{ quantity() }}</div>\n </div> -->\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n</div>\n<hr />\n","import { Component, inject, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { RouterModule, ActivatedRoute } from '@angular/router';\nimport {\n ContainerComponent,\n TabsComponent,\n TabComponent,\n ToolbarComponent,\n ListComponent,\n EmptyComponent,\n} from '@rolatech/angular-components';\nimport { OrderService } from '@rolatech/angular-services';\nimport { OrderItemComponent } from '../../components/order-item/order-item.component';\nimport { Order, OrderStatus } from '../../interfaces';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-order-index',\n templateUrl: './order-index.component.html',\n styleUrls: ['./order-index.component.scss'],\n standalone: true,\n imports: [\n ContainerComponent,\n RouterModule,\n TabsComponent,\n TabComponent,\n ToolbarComponent,\n ListComponent,\n OrderItemComponent,\n EmptyComponent,\n MatButtonModule,\n MatIconModule,\n ],\n})\nexport class OrderIndexComponent implements OnInit {\n orderService = inject(OrderService);\n title = inject(Title);\n route = inject(ActivatedRoute);\n links = [\n {\n name: '全部',\n icon: 'dashboard',\n },\n {\n name: '待付款',\n icon: 'category',\n status: 'created',\n },\n {\n name: '已支付',\n icon: 'category',\n status: 'paid',\n },\n {\n name: '已退款',\n icon: 'category',\n status: 'refunded',\n },\n {\n name: '已取消',\n icon: 'category',\n status: 'canceled',\n },\n ];\n orders: Order[] = [];\n status: any = OrderStatus;\n select = 0;\n ngOnInit(): void {\n this.title.setTitle('我的订单 - 拼小课');\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n this.findOrders(status);\n });\n }\n findOrders(status: string) {\n const options: any = {\n sort: 'updatedAt desc',\n };\n if (status) {\n options['filter'] = `status:${status}`;\n }\n this.orderService.me(options).subscribe({\n next: (res: any) => {\n this.orders = res.data;\n },\n });\n }\n}\n","<rolatech-container>\n <rolatech-toolbar title=\"我的订单\" large>\n <button mat-button>\n <span>过滤</span>\n <mat-icon>tune</mat-icon>\n </button>\n </rolatech-toolbar>\n <rolatech-tabs [select]=\"select\">\n @for (item of links; track item) {\n @if (item.status) {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\" [queryParams]=\"{ status: item.status }\"></rolatech-tab>\n } @else {\n <rolatech-tab [label]=\"item.name\" routerLink=\"./\"></rolatech-tab>\n }\n }\n </rolatech-tabs>\n <rolatech-list>\n @if (orders) {\n @for (item of orders; track item) {\n <rolatech-order-item [routerLink]=\"['./', item.id]\" [order]=\"item\"></rolatech-order-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n </rolatech-list>\n</rolatech-container>\n","import { Component, model, output } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'rolatech-order-return-request',\n standalone: true,\n imports: [MatFormFieldModule, MatInputModule],\n templateUrl: './order-return-request.component.html',\n styleUrl: './order-return-request.component.scss',\n})\nexport class OrderReturnRequestComponent {\n output = output<any>();\n reason = model<any>();\n}\n","<div class=\"py-2\">\n <h2 class=\"mb-2\">在下面输入退款理由</h2>\n <mat-form-field appearance=\"fill\">\n <mat-label> 退款理由 </mat-label>\n <textarea matInput required [value]=\"reason()\"></textarea>\n </mat-form-field>\n</div>\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Course, CourseType } from '@rolatech/angular-course';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-order-course-item',\n standalone: true,\n imports: [CommonModule, ThumbnailComponent, MatIconModule],\n templateUrl: './order-course-item.component.html',\n styleUrl: './order-course-item.component.scss',\n})\nexport class OrderCourseItemComponent {\n course = input.required<Course>();\n type = CourseType;\n}\n","<div class=\"flex flex-col\">\n <div class=\"hover:!bg-[--rt-base-background] cursor-pointer py-2\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex flex-row w-full\">\n <div class=\"w-2/5 sm:w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course().media) {\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-bold break-words line-clamp-2\">{{ course().name }}</span>\n <span class=\"text-sm text-[--rt-text-secondary]\">类型: {{ type[course().type] }}</span>\n </div>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-order-variant-item',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './order-variant-item.component.html',\n styleUrl: './order-variant-item.component.scss',\n})\nexport class OrderVariantItemComponent {}\n","<p>order-variant-item works!</p>\n","import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-order-product-item',\n standalone: true,\n imports: [CommonModule, ThumbnailComponent, MatIcon],\n templateUrl: './order-product-item.component.html',\n styleUrl: './order-product-item.component.scss',\n})\nexport class OrderProductItemComponent {\n thumbnail = input<string>();\n title = input.required<string>();\n description = input<string>();\n quantity = input<number>(0);\n total = input.required<number>();\n priceDisplay = computed(() => {\n return (this.total() / 100)?.toFixed(2);\n });\n}\n","<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold\">{{ title() }}</span>\n <span class=\"text-sm text-[--rt-text-secondary] mt-2\">{{ description() }}</span>\n </div>\n <div>¥{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">数量</span>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, forwardRef, inject, OnInit } from '@angular/core';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport moment from 'moment';\nimport { Observable, map } from 'rxjs';\nimport {\n ContainerComponent,\n BaseComponent,\n SpinnerComponent,\n ThumbnailComponent,\n TitleComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { CourseType, Course, CourseService } from '@rolatech/angular-course';\nimport { NavigationService } from '@rolatech/angular-services';\nimport { OrderService } from '@rolatech/angular-services';\nimport { Order, OrderStatus, OrderTimelineStatus, OrderType } from '../../interfaces';\nimport { OrderReturnRequestComponent } from '../../components/order-return-request/order-return-request.component';\nimport { ProductService } from '@rolatech/angular-services';\nimport { OrderCourseItemComponent } from '../../components/order-course-item/order-course-item.component';\nimport { OrderVariantItemComponent } from '../../components/order-variant-item/order-variant-item.component';\nimport { OrderProductItemComponent } from '../../components/order-product-item/order-product-item.component';\nimport { OrderItemOptionsFormatPipe } from '../../pipe/order-item-options.pipe';\n@Component({\n selector: 'rolatech-order-detail',\n standalone: true,\n imports: [\n MatButtonModule,\n MatIconModule,\n RouterLink,\n NgClass,\n AsyncPipe,\n SpinnerComponent,\n ContainerComponent,\n ThumbnailComponent,\n ToolbarComponent,\n TitleComponent,\n OrderCourseItemComponent,\n OrderProductItemComponent,\n OrderVariantItemComponent,\n OrderItemOptionsFormatPipe,\n ],\n templateUrl: './order-detail.component.html',\n styleUrl: './order-detail.component.scss',\n})\nexport class OrderDetailComponent extends BaseComponent implements OnInit {\n order!: Order;\n status: any = OrderStatus;\n type = CourseType;\n orderType = OrderType;\n orderService = inject(OrderService);\n courseService = inject(CourseService);\n productService = inject(ProductService);\n navigationService = inject(NavigationService);\n timelineData: any;\n info = false;\n loadingTimeline = false;\n timelineStatus: any = OrderTimelineStatus;\n\n // order$: Observable<Order>;\n course$?: Observable<Course>;\n countDown = '';\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.orderService.get(this.id).subscribe({\n next: (res: any) => {\n this.order = res.data;\n if (this.order.type?.toString() === 'PRODUCT') {\n this.getVariant();\n } else if (this.order.type?.toString() === 'COURSE') {\n this.getCourse();\n } else {\n this.getCourse();\n }\n if (this.order.status === 'CREATED') {\n setInterval(() => {\n const start = moment();\n const end = moment(this.order.createdAt).add(15, 'minute');\n const diff = end.diff(start);\n const duration = moment.duration(diff);\n this.countDown = moment.utc(duration.as('milliseconds')).format('mm:ss');\n }, 1000);\n }\n },\n });\n }\n back() {\n this.navigationService.back();\n }\n getCourse() {\n const { productId } = this.order.items[0];\n this.course$ = this.courseService.get(productId).pipe(map((res: any) => res.data));\n }\n getVariant() {\n const { variantId } = this.order.items[0];\n if (variantId) {\n this.productService\n .getVariant(variantId)\n .pipe(map((res: any) => res.data))\n .subscribe({\n next: (res) => {},\n });\n }\n }\n refund() {\n const options = {\n width: '500px',\n title: '申请退款',\n height: '90%',\n cancelText: '取消',\n confirmText: '确认',\n component: OrderReturnRequestComponent,\n data: {\n reason: '',\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((res) => {\n if (res) {\n this.orderService.refund(this.id, res).subscribe({\n next: (res) => {\n this.snackBarService.open('退款申请成功, 等待审核');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n });\n }\n cancel() {\n this.orderService.cancel(this.id).subscribe({\n next: (res) => {\n this.order.status = OrderStatus[OrderStatus.CANCELED];\n this.snackBarService.open('取消成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n pay() {\n this.router.navigateByUrl(`/orders/${this.id}/qrcodepay`);\n }\n timeline() {\n this.info = true;\n this.loadingTimeline = true;\n this.orderService.timeline(this.id).subscribe({\n next: (res) => {\n this.timelineData = res.data;\n this.loadingTimeline = false;\n },\n error: (error) => {\n this.loadingTimeline = false;\n },\n });\n }\n}\n","@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" large link=\"../\">\n <button mat-button (click)=\"timeline()\">\n <mat-icon>history</mat-icon>\n <span>订单状态</span>\n </button>\n </rolatech-toolbar>\n <div>\n <div>\n @if (order.status === 'CREATED') {\n <div class=\"text-[--rt-brand-color] font-bold\">支付倒计时: {{ countDown }}</div>\n }\n </div>\n <div>\n <div>\n @if (course$ | async; as course) {\n <div class=\"text-lg py-3\">课程信息</div>\n <rolatech-order-course-item [routerLink]=\"['/courses/', course.id]\" [course]=\"course\"></rolatech-order-course-item>\n } @else {\n <div class=\"text-lg py-3\">商品信息</div>\n @for (item of order.items; track $index) {\n <!-- [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\" -->\n <rolatech-order-product-item\n [thumbnail]=\"item.media[0].url + '!w200 '\"\n [routerLink]=\"['/products/', item.productId]\"\n [title]=\"item.name\"\n [total]=\"item.total\"\n [description]=\"item.options | orderItemoptions\"\n [quantity]=\"item.quantity\"\n ></rolatech-order-product-item>\n }\n }\n </div>\n <div class=\"mt-3\">\n <div class=\"text-lg py-3 font-medium\">订单信息</div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">订单号</label>\n <span class=\"text-sm\"> {{ order.orderNo }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">下单时间</label>\n <span class=\"text-sm\"> {{ order.createdAt }}</span>\n </div>\n <div class=\"flex items-center justify-between py-1\">\n <label class=\"font-medium\">应付金额</label>\n <span class=\"text-sm\">¥{{ (order.total / 100).toFixed(2) }}</span>\n </div>\n </div>\n @if (order.status.toString() === 'CREATED' || order.status.toString() === 'PAID') {\n <div class=\"mt-6\">\n <div class=\"text-lg pb-3 font-medium\">支付方式</div>\n <div class=\"flex\">\n <img class=\"w-6 h-6\" src=\"assets/pay_wechat.png\" />\n <span class=\"ml-1\">微信支付</span>\n </div>\n </div>\n }\n </div>\n <!-- safe area -->\n <div class=\"pb-16 sm:pb-3\"></div>\n <div class=\"\">\n @if (order.status.toString() === 'PAID') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"refund()\">申请退款</button>\n }\n <div class=\"flex items-center justify-end\">\n @if (order.status.toString() === 'CREATED') {\n <span\n class=\"underline text-sm underline-offset-4 mr-6 cursor-pointer hover:text-[--rt-brand-color]\"\n (click)=\"cancel()\"\n >取消订单</span\n >\n }\n @if (order.status.toString() === 'CREATED') {\n <button mat-flat-button class=\"w-32 min-h-11\" (click)=\"pay()\">支付订单</button>\n }\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n<div\n [ngClass]=\"info ? 'translate-none' : 'translate-x-full'\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-80 sm:w-[300px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-xl font-bold\">订单状态</div>\n <button mat-icon-button (click)=\"info = !info\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loadingTimeline) {\n <div class=\"mt-3 p-1 sm:p-4\">\n <ol class=\"relative border-l border-[--rt-border-color]\">\n @for (item of timelineData; track item) {\n <li class=\"mb-8 ml-4\">\n <div\n class=\"absolute w-3 h-3 rounded-full mt-1.5 -left-1.5 border border-[--rt-raised-background] bg-[--rt-text-primary]\"\n ></div>\n <div class=\"text-md font-bold mb-1\">{{ timelineStatus[item.status] }}</div>\n @if (item.status === 'BOOKING_RETURN_REJECTED') {\n <div class=\"text-sm mb-1\">{{ item.return.note }}</div>\n }\n @if (item.status === 'BOOKING_RETURN_REQUESTED') {\n <div class=\"text-sm mb-1\">{{ item.return.reason }}</div>\n }\n <div class=\"text-sm text-[--rt-text-secondary]\">{{ item.date }}</div>\n </li>\n }\n </ol>\n </div>\n }\n @if (loadingTimeline) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"info = !info\"\n [ngClass]=\"info ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed inset-0 z-[1000]\"\n></div>\n","import { Component, ElementRef, inject, OnInit, Renderer2, viewChild } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ContainerComponent, ToolbarComponent, BaseComponent } from '@rolatech/angular-components';\nimport { Order, OrderStatus } from '../../interfaces';\nimport { OrderService } from '@rolatech/angular-services';\nimport * as QRCode from 'qrcode';\n\n@Component({\n selector: 'rolatech-order-qrcodepay',\n standalone: true,\n imports: [RouterLink, ContainerComponent, ToolbarComponent],\n templateUrl: './order-qrcodepay.component.html',\n styleUrl: './order-qrcodepay.component.scss',\n})\nexport class OrderQrcodepayComponent extends BaseComponent implements OnInit {\n order!: Order;\n status: any = OrderStatus;\n orderService = inject(OrderService);\n renderer = inject(Renderer2);\n needPay = true;\n qrcElement = viewChild.required<ElementRef>('qrcode');\n\n ngOnInit(): void {\n this.getOrder();\n }\n getOrder() {\n this.orderService.get(this.id).subscribe({\n next: (res: any) => {\n this.order = res.data;\n this.needPay = this.order.status.toString() === 'CREATED';\n if (this.needPay) {\n this.getQRCodeUrl();\n }\n },\n });\n }\n getQRCodeUrl() {\n this.orderService.pay(this.id).subscribe({\n next: (res) => {\n this.genQRCode(res.data.qrCodeUrl);\n },\n });\n }\n genQRCode(url: string) {\n const element: Element = this.renderer.createElement('canvas');\n this.toCanvas(element, url)\n .then(() => {\n this.renderElement(element);\n })\n .catch((e) => {\n this.removeElementChildren();\n });\n }\n\n private toCanvas(canvas: any, url: any): Promise<any> {\n return QRCode.toCanvas(canvas, url, {\n errorCorrectionLevel: 'M',\n width: 200,\n });\n }\n private renderElement(element: any): void {\n this.removeElementChildren();\n this.renderer.appendChild(this.qrcElement().nativeElement, element);\n }\n private removeElementChildren(): void {\n for (const node of this.qrcElement().nativeElement.childNodes) {\n this.renderer.removeChild(this.qrcElement().nativeElement, node);\n }\n }\n}\n","@if (order) {\n <rolatech-container>\n <rolatech-toolbar [title]=\"status[order.status]\" link=\"../\" large></rolatech-toolbar>\n <div>\n <div>\n <a class=\"text-[--rt-brand-color]\" routerLink=\"..\"\n ><span>订单: </span><span class=\"underline\">#{{ this.id }}</span></a\n >\n </div>\n <div class=\"mt-6\">\n @if (needPay) {\n <div>\n <div>请使用微信扫码支付, 我们会在收到付款后处理您的订单</div>\n <div class=\"w-52 h-56 flex flex-col justify-end items-center\">\n <div #qrcode></div>\n <span class=\"text-md\">微信支付二维码</span>\n </div>\n </div>\n } @else {\n <div>请确认当前订单状态, 如已经付款, 请返回查看</div>\n }\n </div>\n </div>\n </rolatech-container>\n}\n","import { Routes } from '@angular/router';\nimport { OrderIndexComponent } from './pages/orders-index/order-index.component';\nimport { OrderDetailComponent } from './pages/order-detail/order-detail.component';\nimport { OrderQrcodepayComponent } from './pages/order-qrcodepay/order-qrcodepay.component';\n\nexport const orderRoutes: Routes = [\n {\n path: '',\n component: OrderIndexComponent,\n },\n {\n path: ':id',\n component: OrderDetailComponent,\n },\n {\n path: ':id/qrcodepay',\n component: OrderQrcodepayComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export { orderRoutes } from './lib/orders.routes';
2
2
  export * from './lib/interfaces';
3
+ export * from './lib/components';
4
+ export * from './lib/pipe/order-item-options.pipe';
@@ -0,0 +1,6 @@
1
+ export * from './order-return-request/order-return-request.component';
2
+ export * from './order-course-item/order-course-item.component';
3
+ export * from './order-product-item/order-product-item.component';
4
+ export * from './order-return-request/order-return-request.component';
5
+ export * from './order-variant-item/order-variant-item.component';
6
+ export * from './order-item/order-item.component';
@@ -20,7 +20,9 @@ export declare enum OrderStatus {
20
20
  export declare enum OrderType {
21
21
  COURSE,
22
22
  PRODUCT,
23
- BOOKING
23
+ SERVICE,
24
+ BOOKING,
25
+ OTTHER
24
26
  }
25
27
  export interface OrderReturn {
26
28
  status: OrderReturnStatus | string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-order",
3
- "version": "18.0.2",
3
+ "version": "18.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.0",
6
6
  "@angular/core": "^18.0.0"