@rolatech/angular-product 19.0.0-beta.1 → 19.0.0-beta.2

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.
package/README.md CHANGED
@@ -1,7 +1 @@
1
1
  # angular-product
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test angular-product` to execute the unit tests.
@@ -511,7 +511,7 @@ class ProductDetailsComponent extends BaseComponent {
511
511
  });
512
512
  }
513
513
  this.findUserBaseInfo(this.product.userId);
514
- this.titleService.setTitle(`${this.product.name} - 拼小课`);
514
+ this.titleService.setTitle(`${this.product.name}`);
515
515
  },
516
516
  });
517
517
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-product.mjs","sources":["../../../../packages/angular-product/src/lib/pages/product/product-layout/product-layout.component.ts","../../../../packages/angular-product/src/lib/pages/product/product-layout/product-layout.component.html","../../../../packages/angular-product/src/lib/pages/product/product-category/product-category.component.ts","../../../../packages/angular-product/src/lib/pages/product/product-category/product-category.component.html","../../../../packages/angular-product/src/lib/components/product-info/product-info.component.ts","../../../../packages/angular-product/src/lib/components/product-info/product-info.component.html","../../../../packages/angular-product/src/lib/components/product-media/product-media.component.ts","../../../../packages/angular-product/src/lib/components/product-media/product-media.component.html","../../../../packages/angular-product/src/lib/components/product-section/product-section.component.ts","../../../../packages/angular-product/src/lib/components/product-section/product-section.component.html","../../../../packages/angular-product/src/lib/components/product-item/product-item.component.ts","../../../../packages/angular-product/src/lib/components/product-item/product-item.component.html","../../../../packages/angular-product/src/lib/components/product-action/product-action.component.ts","../../../../packages/angular-product/src/lib/components/product-action/product-action.component.html","../../../../packages/angular-product/src/lib/components/product-pricing/product-pricing.component.ts","../../../../packages/angular-product/src/lib/components/product-pricing/product-pricing.component.html","../../../../packages/angular-product/src/lib/components/product-option/product-option.component.ts","../../../../packages/angular-product/src/lib/components/product-option/product-option.component.html","../../../../packages/angular-product/src/lib/components/product-mange-section-item/product-mange-section-item.component.ts","../../../../packages/angular-product/src/lib/components/product-mange-section-item/product-manage-section-item.component.html","../../../../packages/angular-product/src/lib/components/product-manage-option-add/product-manage-option-add.component.ts","../../../../packages/angular-product/src/lib/components/product-manage-option-add/product-manage-option-add.component.html","../../../../packages/angular-product/src/lib/components/product-manage-option-item/product-manage-option-item.component.ts","../../../../packages/angular-product/src/lib/components/product-manage-option-item/product-manage-option-item.component.html","../../../../packages/angular-product/src/lib/pages/product/product-details/selected.pipe.ts","../../../../packages/angular-product/src/lib/components/product-owner-renderer/product-owner-renderer.component.ts","../../../../packages/angular-product/src/lib/components/product-owner-renderer/product-owner-renderer.component.html","../../../../packages/angular-product/src/lib/pages/product/product-details/product-details.component.ts","../../../../packages/angular-product/src/lib/pages/product/product-details/product-details.component.html","../../../../packages/angular-product/src/lib/pages/product/product.routes.ts","../../../../packages/angular-product/src/lib/interfaces/product.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-content/product-manage-content.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-content/product-manage-content.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-info/product-manage-info.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-info/product-manage-info.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-media/product-manage-media.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-media/product-manage-media.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item/product-manage-item.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item/product-manage-item.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-index/product-manage-index.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-index/product-manage-index.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-create/product-manage-create.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-create/product-manage-create.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-options/product-manage-options.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-options/product-manage-options.component.html","../../../../packages/angular-product/src/lib/components/product-manage-variant/product-manage-variant.component.ts","../../../../packages/angular-product/src/lib/components/product-manage-variant/product-manage-variant.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage.routes.ts","../../../../packages/angular-product/src/provider.ts","../../../../packages/angular-product/src/lib/services/index.ts","../../../../packages/angular-product/src/rolatech-angular-product.ts"],"sourcesContent":["import { Component, inject, OnInit } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, ContainerComponent } from '@rolatech/angular-components';\nimport { ProductCategory } from '../../../interfaces';\nimport { ProductService, ProductCategoryService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-product-layout',\n imports: [AngularCommonModule, AngularComponentsModule, ContainerComponent],\n templateUrl: './product-layout.component.html',\n styleUrl: './product-layout.component.scss',\n})\nexport class ProductLayoutComponent extends BaseComponent implements OnInit {\n categories: ProductCategory[] = [];\n categoryService = inject(ProductCategoryService);\n productService = inject(ProductService);\n selectIndex = 0;\n\n ngOnInit(): void {\n this.findCategories();\n }\n findCategories() {\n this.categoryService.find({}, false).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n loadProductByCategoryIndex(index: number) {\n this.selectIndex = index;\n const id = this.categories[index].id;\n if (index === 0) {\n this.router.navigate([`./`]);\n // this.productService.find({}).subscribe({\n // next: res => {\n // }\n // })\n } else {\n this.router.navigate([`../categories/${id}`], {\n relativeTo: this.route,\n });\n }\n }\n nextCategory() {}\n}\n","@if (categories) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 md:h-auto min-w-[240px]\">\n <div class=\"hidden md:block text-2xl font-medium py-3 md:px-1 px-3\">分类</div>\n <div\n class=\"flex flex-row md:flex-col md:h-full items-center md:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center md:mb-1 mr-2 md:mr-0\"\n routerLinkActive=\"product-layout-active\"\n routerLink=\"./\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">全部</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center mr-2 md:mr-0 md:mb-1\"\n routerLinkActive=\"product-layout-active\"\n [routerLink]=\"['./categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { ProductCategoryService, ProductService } from '@rolatech/angular-services';\nimport { AngularComponentsModule, BaseComponent, RichItemComponent, RichViewComponent } from '@rolatech/angular-components';\nimport { Product, ProductCategory } from '../../../interfaces';\nimport { ParamMap } from '@angular/router';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-product-category',\n imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent],\n templateUrl: './product-category.component.html',\n styleUrl: './product-category.component.scss',\n})\nexport class ProductCategoryComponent extends BaseComponent implements OnInit {\n categoryService = inject(ProductCategoryService);\n productService = inject(ProductService);\n category!: ProductCategory;\n products: Product[] = [];\n categories: ProductCategory[] = [];\n loading = false;\n\n ngOnInit(): void {\n this.findAllCategories();\n this.route.paramMap.subscribe((params: ParamMap) => {\n const id = params.get('id') as string;\n this.findCategoryById(id);\n this.findProductsByCategoryId(id);\n });\n }\n findAllCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n findCategoryById(id: string) {\n this.categoryService.get(id).subscribe({\n next: (res: any) => {\n this.category = res.data;\n },\n });\n }\n findAllProducts() {\n this.productService.find({}).subscribe({\n next: (res: any) => {\n this.products = res.data;\n },\n });\n }\n findProductsByCategoryId(id: string) {\n this.loading = true;\n const options = {\n filter: `categories:${id},published:true`,\n };\n this.productService.find(options).subscribe({\n next: (res: any) => {\n this.products = res.data;\n this.loading = false;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n\n loadProductsByCategory(item: any) {\n // [routerLink] = \"['../../', item.id]\";\n this.router.navigate([`../../${item.id}`], {\n relativeTo: this.route,\n });\n }\n}\n","<div>\n @if (category) {\n <div class=\"p-3 hidden md:block text-2xl font-medium\">{{ category.name }}</div>\n } @else {\n <div class=\"flex flex-row animate-pulse w-full\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n </div>\n }\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 md:w-1/4 aspect-video bg-[--rt-base-background] rounded-lg\"></div>\n <div class=\"w-3/5 md:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n <rolatech-rich-view list>\n @for (item of products; track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['../../', item.id]\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"item.price / 100\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'rolatech-product-info',\n imports: [MatIconModule, RouterModule],\n templateUrl: './product-info.component.html',\n styleUrl: './product-info.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n id: 'rolatech-product-info',\n },\n})\nexport class ProductInfoComponent {\n name = input.required<string>();\n description = input<string>();\n}\n","<div>\n <div class=\"text-2xl font-medium\">{{ name() }}</div>\n <div>\n {{ description() }}\n </div>\n</div>\n","import { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Media } from '@rolatech/angular-common';\nimport { ImagePreviewDialogComponent, ThumbnailComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-product-media',\n imports: [NgClass, ThumbnailComponent],\n templateUrl: './product-media.component.html',\n styleUrl: './product-media.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductMediaComponent {\n dialog = inject(MatDialog);\n media = input<Media[]>([]);\n min = input<boolean>(false);\n mediaIndex = 0;\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n}\n","@if (media()) {\n <div>\n <div class=\"object-cover aspect-video bg-[--rt-raised-background]\">\n <rolatech-thumbnail [src]=\"media()[mediaIndex].url\" size=\"small\" mode=\"full\"></rolatech-thumbnail>\n </div>\n @for (media of media(); track media; let index = $index) {\n <div\n class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer w-28 p-2 bg-[--rt-10-percent-layer]\"\n (click)=\"mediaIndex = index\"\n [ngClass]=\"mediaIndex === index ? 'border border-black' : 'opacity-70'\"\n >\n <rolatech-thumbnail [src]=\"media.url\" mode=\"full\"></rolatech-thumbnail>\n </div>\n }\n </div>\n}\n","import { booleanAttribute, Component, inject, input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, ViewportScroller } from '@angular/common';\nimport { ProductSection } from '../../interfaces';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-product-section',\n imports: [CommonModule, ThumbnailComponent],\n templateUrl: './product-section.component.html',\n styleUrl: './product-section.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductSectionComponent implements OnInit {\n section = input.required<ProductSection>();\n user = input<string>();\n username = input<string>();\n viewportScroller = inject(ViewportScroller);\n row = input(false, { transform: booleanAttribute });\n reverse = input(false, { transform: booleanAttribute });\n\n ngOnInit(): void {}\n\n onClickScroller(id: string) {\n this.viewportScroller.scrollToAnchor(id);\n }\n}\n","@if (section(); as section) {\n @if (row()) {\n <div>\n @if (section.title) {\n <div class=\"py-3 flex items-center gap-3\">\n <span class=\"h-4 w-1 bg-[--rt-brand-color] inline-block\"></span>\n <span class=\"text-lg font-medium py-1\"> {{ section.title }}</span>\n </div>\n }\n @if (section.description) {\n <div>\n {{ section.description }}\n </div>\n }\n @if (section.media) {\n <div class=\"w-80%\">\n @for (item of section.media; track item) {\n <div class=\"py-3\">\n <rolatech-thumbnail\n [src]=\"item.url\"\n size=\"small\"\n mode=\"full\"\n [width]=\"item.width\"\n [height]=\"item.height\"\n ></rolatech-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n } @else {\n <div\n class=\"flex w-full p-3\"\n [ngClass]=\"reverse() ? 'flex-col-reverse md:flex-row-reverse' : 'flex-col-reverse md:flex-row'\"\n >\n <div\n class=\"w-full md:w-1/2 py-3 flex flex-col justify-center items-center gap-3\"\n [ngClass]=\"reverse() ? ' md:ml-16' : 'md:mr-16'\"\n >\n <span class=\"text-3xl font-bold py-1\"> {{ section.title }}</span>\n <span>\n {{ section.description }}\n </span>\n </div>\n <div class=\"w-full md:w-1/2 py-11\">\n @for (item of section.media; track item) {\n <div class=\"py-3\">\n <rolatech-thumbnail\n [src]=\"item.url\"\n size=\"small\"\n mode=\"full\"\n [width]=\"item.width\"\n [height]=\"item.height\"\n ></rolatech-thumbnail>\n </div>\n }\n </div>\n </div>\n }\n}\n","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, RichItemComponent } from '@rolatech/angular-components';\nimport { Product } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-product-item',\n imports: [AngularCommonModule, AngularComponentsModule, RichItemComponent],\n templateUrl: './product-item.component.html',\n styleUrl: './product-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductItemComponent {\n product = input.required<Product>();\n}\n","<rolatech-rich-item\n [routerLink]=\"['./', product().id]\"\n [thumbnail]=\"product().media[0].url + '!w400'\"\n [title]=\"product().name\"\n [subtitle]=\"product().description\"\n [price]=\"product().price / 100\"\n></rolatech-rich-item>\n","import { Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Product } from '../../interfaces';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-product-action',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './product-action.component.html',\n styleUrl: './product-action.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductActionComponent {\n product = input.required<Product>();\n cart = output<Product>();\n checkout = output<Product>();\n deposit = output<Product>();\n displayDeposit = computed(() => {\n return (this.product().deposit / 100).toFixed(2);\n });\n\n onCart(product: Product) {\n this.cart.emit(product);\n }\n onCheckout(product: Product) {\n this.checkout.emit(product);\n }\n onDeposit(product: Product) {\n this.deposit.emit(product);\n }\n}\n","<div class=\"flex gap-3\">\n <a mat-stroked-button class=\"\" (click)=\"onCart(product())\">加入购物车</a>\n @if (product().priceType && product().priceType.toString() === 'PARTIAL') {\n <a mat-flat-button class=\"\" (click)=\"onDeposit(product())\">支付定金 ¥{{ displayDeposit() }}</a>\n } @else {\n <a mat-flat-button class=\"\" (click)=\"onCheckout(product())\">立即购买</a>\n }\n</div>\n","import { Component, computed, effect, input, output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { Product } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-product-pricing',\n imports: [CommonModule, MatButtonModule, MatDivider],\n templateUrl: './product-pricing.component.html',\n styleUrl: './product-pricing.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductPricingComponent {\n product = input.required<Product>();\n // price = computed(() => {\n // return (this.product().price / 100).toFixed(2);\n // });\n price = input.required<number>();\n displayPrice = computed(() => {\n return (this.price() / 100).toFixed(2);\n });\n wish = output<Product>();\n inWishList = input<boolean>(false);\n onWish(product: Product) {\n this.wish.emit(product);\n }\n}\n","<div class=\"py-3\">\n <div class=\"flex justify-between items-center\">\n <div class=\"text-xl font-bold py-3\">¥ {{ displayPrice() }}</div>\n <button mat-icon-button (click)=\"onWish(product())\">\n @if (inWishList()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"m293-203.08 49.62-212.54-164.93-142.84 217.23-18.85L480-777.69l85.08 200.38 217.23 18.85-164.93 142.84L667-203.08 480-315.92 293-203.08Z\"\n />\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm-61 83.92 49.62-212.54-164.93-142.84 217.23-18.85L480-777.69l85.08 200.38 217.23 18.85-164.93 142.84L667-203.08 480-315.92 293-203.08ZM480-470Z\"\n />\n </svg>\n }\n </button>\n </div>\n <mat-divider></mat-divider>\n</div>\n","import { Component, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProductOption, ProductOptionValue } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-product-option',\n imports: [CommonModule],\n templateUrl: './product-option.component.html',\n styleUrl: './product-option.component.scss',\n})\nexport class ProductOptionComponent {\n option = input.required<ProductOption>();\n change = output<{ option: ProductOption; value: ProductOptionValue }>();\n selected = model<ProductOption>();\n value = model<ProductOptionValue>();\n\n onChange(value: ProductOptionValue) {\n this.value.set(value);\n this.change.emit({ option: this.option(), value: value });\n }\n}\n","<div class=\"mb-3\">\n <div class=\"text-xl font-bold py-3\">{{ option().name }}</div>\n <div class=\"flex flex-wrap gap-3\">\n @for (item of option().values; track $index) {\n <div\n class=\"w-24 h-12 border border-[--rt-border-color] rounded flex justify-center items-center hover:text-[--rt-text-primary-inverse] hover:bg-[--rt-base-background-inverse] cursor-pointer\"\n (click)=\"onChange(item)\"\n [ngClass]=\"value()?.id === item.id ? 'bg-[--rt-base-background-inverse] text-[--rt-text-primary-inverse]' : ''\"\n >\n {{ item.name }}\n </div>\n }\n </div>\n</div>\n","import { Component, input, OnInit, output } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { Media } from '@rolatech/angular-common';\nimport { ProductSection } from '../../interfaces';\nimport { first } from 'lodash';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'rolatech-product-manage-section-item',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n TextFieldModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatProgressBarModule,\n MatDividerModule,\n ],\n templateUrl: './product-manage-section-item.component.html',\n styleUrl: './product-manage-section-item.component.scss',\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('400ms cubic-bezier(0.25, 0.1, 0.25, 1)')),\n ]),\n ],\n})\nexport class ProductManageSectionItemComponent implements OnInit {\n isUploading = input<boolean>();\n section = input.required<ProductSection>();\n actions = input<boolean>(false);\n selectMedia = input<any>();\n upload = output<{ section: ProductSection; data: FormData | null }>();\n delete = output<ProductSection>();\n save = output<ProductSection>();\n deleteMedia = output<{ section: ProductSection; media: Media }>();\n selectedImg!: Media | any;\n expanded = false;\n constructor() {}\n\n ngOnInit(): void {\n this.selectedImg = this.section().media ? this.section().media[0] : null;\n }\n onUpload(data: any) {\n this.upload.emit({ section: this.section(), data });\n }\n onMediaItemClick(image: Media) {\n this.selectedImg = image;\n }\n\n select(item: any) {\n this.selectedImg = item;\n }\n deleteImage() {}\n onSave(section: ProductSection) {\n this.save.emit(section);\n }\n onDelete(section: ProductSection) {\n this.delete.emit(section);\n }\n onDeleteMedia(media: Media) {\n this.deleteMedia.emit({ section: this.section(), media });\n this.selectedImg = this.section().media ? first(this.section().media) : null;\n }\n}\n","<div class=\"px-3\">\n <div\n class=\"h-14 py-3 flex items-center justify-between cursor-pointer\"\n (click)=\"expanded = !expanded; $event.stopPropagation()\"\n >\n <div class=\"flex\">\n <div class=\"w-32 line-clamp-1\">{{ section().title }}</div>\n <div class=\"line-clamp-1\">{{ section().description }}</div>\n </div>\n <div>\n <button mat-icon-button aria-label=\"expand row\" (click)=\"expanded = !expanded; $event.stopPropagation()\">\n @if (expanded) {\n <mat-icon>keyboard_arrow_up</mat-icon>\n } @else {\n <mat-icon>keyboard_arrow_down</mat-icon>\n }\n </button>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 w-full overflow-hidden\" [@detailExpand]=\"expanded ? 'expanded' : 'collapsed'\">\n <div class=\"flex flex-col lg:flex-row\">\n <div class=\"flex flex-col grow\">\n <mat-form-field appearance=\"fill\">\n <mat-label>标题</mat-label>\n <input matInput placeholder=\"标题\" [(ngModel)]=\"section().title\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" [hideRequiredMarker]=\"true\">\n <mat-label>描述</mat-label>\n <textarea\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n placeholder=\"描述\"\n [(ngModel)]=\"section().description\"\n ></textarea>\n </mat-form-field>\n </div>\n <!-- media -->\n <div class=\"lg:basis-1/2 px-0 lg:px-3\">\n @if (selectedImg) {\n <div class=\"flex flex-row justify-center relative aspect-video\">\n <img class=\"object-contain w-full\" [src]=\"selectedImg.url\" [alt]=\"selectedImg.alt\" />\n <div class=\"absolute z-30 right-0\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"beforeMenu\"\n class=\"ml-auto focus:outline-none hover:bg-[--rt-base-background] p-1\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"onDeleteMedia(selectedImg)\">\n <span>删除</span>\n </button>\n </mat-menu>\n </div>\n </div>\n }\n\n <!-- media -->\n <div>\n <div class=\"flex flex-row flex-wrap cursor-pointer relative box-border\" fxLayout=\"row\">\n <div class=\"progress-bar\">\n @if (section().isUploading) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n @for (media of section().media; track media) {\n <div class=\"media-list-item\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n </div>\n }\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <div class=\"add-button\">\n <div (click)=\"fileInput.click()\" class=\"tile-media flex justify-center items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(section())\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(section())\">保存</button>\n </div>\n }\n </div>\n</div>\n\n<mat-divider></mat-divider>\n","import { Component, DoCheck, model, output } from '@angular/core';\nimport { ENTER, COMMA } from '@angular/cdk/keycodes';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { ProductOption } from '../../interfaces';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-product-manage-option-add',\n imports: [MatChipsModule, MatButtonModule, MatFormFieldModule, AngularCommonModule, AngularComponentsModule, MatIconModule],\n templateUrl: './product-manage-option-add.component.html',\n styleUrl: './product-manage-option-add.component.scss',\n})\nexport class ProductManageOptionAddComponent implements DoCheck {\n option: ProductOption = {\n id: '',\n name: '',\n values: [],\n };\n addOnBlur = true;\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\n cancel = output();\n save = output<ProductOption>();\n action = true;\n output = output<any>();\n\n onCancel() {\n this.cancel.emit();\n }\n onSave() {\n this.save.emit(this.option);\n }\n\n addOptionValues(event: MatChipInputEvent) {\n const value = (event.value || '').trim();\n if (value) {\n this.option.values.push({ name: value });\n }\n event.chipInput!.clear();\n }\n removeValue(value: any) {\n if (value) {\n const index = this.option.values.findIndex((item: any) => item.name === value.name);\n this.option.values?.splice(index!, 1);\n }\n }\n ngDoCheck(): void {\n this.output.emit(this.option);\n }\n}\n","<div class=\"flex flex-col\">\n <div class=\"p-1\">选项</div>\n <form>\n <mat-form-field appearance=\"fill\">\n <input matInput placeholder=\"名称\" type=\"text\" [(ngModel)]=\"option.name\" [ngModelOptions]=\"{ standalone: true }\" />\n </mat-form-field>\n <mat-form-field>\n <mat-chip-grid #chipGrid aria-label=\"Enter values\">\n @for (value of option.values; track value) {\n <mat-chip-row\n (removed)=\"removeValue(value)\"\n [editable]=\"true\"\n [aria-description]=\"'press enter to edit ' + value.name\"\n >\n {{ value.name }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + value.name\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n <input\n placeholder=\"选项值\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"addOptionValues($event)\"\n />\n </mat-chip-grid>\n </mat-form-field>\n </form>\n</div>\n@if (action) {\n <div class=\"flex items-center justify-end\">\n <button mat-button (click)=\"onCancel()\">取消</button>\n <button mat-button color=\"primary\" (click)=\"onSave()\">保存</button>\n </div>\n}\n","import { Component, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { ProductOption } from '../../interfaces';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\n@Component({\n selector: 'rolatech-product-manage-option-item',\n imports: [\n MatChipsModule,\n MatButtonModule,\n MatFormFieldModule,\n AngularCommonModule,\n AngularComponentsModule,\n MatIconModule,\n OptionsFormatPipe,\n ],\n templateUrl: './product-manage-option-item.component.html',\n styleUrl: './product-manage-option-item.component.scss',\n})\nexport class ProductManageOptionItemComponent {\n option = input.required<ProductOption>();\n addOnBlur = true;\n delete = output<ProductOption>();\n save = output<ProductOption>();\n edit = output<ProductOption>();\n\n onDelete() {\n this.delete.emit(this.option());\n }\n onSave() {\n this.save.emit(this.option());\n }\n onEdit() {\n this.edit.emit(this.option());\n }\n}\n","<div class=\"group flex justify-between items-center h-14 hover:bg-[--rt-raised-background] cursor-pointer px-2\">\n <div class=\"flex\">\n <div class=\"min-w-[100px]\">{{ option().name }}</div>\n <div class=\"overflow-hidden line-clamp-1\">\n {{ option().values! | options }}\n </div>\n </div>\n <div class=\"flex justify-end max-w-24 w-24 invisible group-hover:visible\">\n <button mat-icon-button (click)=\"onEdit()\">\n <mat-icon>edit</mat-icon>\n </button>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n</div>\n<mat-divider></mat-divider>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ProductOption, ProductOptionValue, ProductVariant } from '../../../interfaces';\n\n@Pipe({\n name: 'selected',\n})\nexport class SelectedPipe implements PipeTransform {\n transform(variant: ProductVariant, option: ProductOption): any {\n const findedOption = variant.options.find((item) => item.option.id === option.id);\n return findedOption?.value;\n }\n}\n","import { Component, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-product-owner-renderer',\n imports: [AngularCommonModule, MatIconModule],\n templateUrl: './product-owner-renderer.component.html',\n styleUrl: './product-owner-renderer.component.scss',\n})\nexport class ProductOwnerRendererComponent {\n name = input<string>();\n avatar = input<string>();\n username = input<string>();\n}\n","<div class=\"flex flex-row items-center py-3\">\n <div class=\"flex mr-3 gap-2 items-center\">\n @if (avatar()) {\n <div class=\"cursor-pointer\" [routerLink]=\"['/', '@' + username()]\">\n <img [src]=\"avatar()\" class=\"w-11 h-11 rounded-full\" alt />\n </div>\n } @else {\n <div class=\"w-11 h-11 rounded-full bg-[--rt-brand-color]\"></div>\n }\n <div class=\"flex items-center text-lg font-bold cursor-pointer\">\n <a [routerLink]=\"['/', '@' + username()]\">\n <span>{{ name() }}</span>\n </a>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n </div>\n</div>\n","import { Component, computed, effect, inject, OnInit, signal, Signal } from '@angular/core';\nimport {\n ProductActionComponent,\n ProductInfoComponent,\n ProductMediaComponent,\n ProductOptionComponent,\n ProductPricingComponent,\n} from '../../../components';\nimport { AngularComponentsModule, BaseComponent, ContainerComponent } from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { CommentsComponent } from '@rolatech/angular-comment';\nimport { Product, ProductOption, ProductVariant, ProductVariantOption } from '../../../interfaces';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { ProductSectionComponent } from '../../../components/product-section/product-section.component';\nimport { SelectedPipe } from './selected.pipe';\nimport _ from 'lodash';\nimport { ProductOwnerRendererComponent } from '../../../components/product-owner-renderer/product-owner-renderer.component';\nimport { CartEventType, CartService, ProductService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-product-details',\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n ContainerComponent,\n ProductInfoComponent,\n ProductMediaComponent,\n ProductPricingComponent,\n ProductSectionComponent,\n ProductActionComponent,\n CommentsComponent,\n ProductOptionComponent,\n ProductOwnerRendererComponent,\n SelectedPipe,\n ],\n templateUrl: './product-details.component.html',\n styleUrl: './product-details.component.scss',\n})\nexport class ProductDetailsComponent extends BaseComponent implements OnInit {\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n productService = inject(ProductService);\n cartService = inject(CartService);\n authenticated = this.authService.authenticated;\n product!: Product;\n fullname = '';\n username = '';\n user: any;\n inWishList = false;\n purchased = false;\n selectedOption!: ProductOption;\n variants: ProductVariant[] = [];\n selectedVariant!: ProductVariant;\n variantOption = signal<ProductVariantOption | undefined>(undefined);\n variantOptionChanged = computed(() => {\n return this.variantOption();\n });\n results: any[] = [];\n constructor() {\n super();\n effect(() => {\n if (this.authenticated()) {\n this.findWishlistBy();\n }\n });\n }\n ngOnInit(): void {\n this.getProduct();\n }\n getProduct() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n if (this.product.variants) {\n this.variants = this.product.variants;\n this.selectedVariant = this.variants[0];\n this.selectedVariant.options.forEach((item) => {\n this.results.push([item.option.id, item.value.id]);\n });\n }\n\n this.findUserBaseInfo(this.product.userId);\n this.titleService.setTitle(`${this.product.name} - 拼小课`);\n },\n });\n }\n private findVariant(optionId: string, valueId: string): ProductVariant | undefined {\n return this.variants.find((item) => {\n const exist = item.options.some((i: ProductVariantOption) => i.option.id === optionId && i.value.id === valueId);\n if (exist) {\n return item;\n }\n return null;\n });\n }\n findUserBaseInfo(userId: string) {\n this.authUserService.getPublicUserInfo(userId).subscribe({\n next: (res) => {\n this.fullname = res.name;\n this.username = res.username;\n this.user = res;\n },\n });\n }\n private findWishlistBy() {\n this.productService.findWishlistBy(this.id).subscribe({\n next: (res: any) => {\n this.inWishList = res.data;\n },\n });\n }\n onWish(e: any) {\n if (this.authenticated()) {\n if (this.inWishList) {\n this.removeFromWishlist();\n } else {\n this.addToWishlist();\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n }\n onCart(e: any) {\n const data = { productId: this.id, quantity: 1 };\n if (this.selectedVariant) {\n data['variantId'] = this.selectedVariant.id;\n }\n this.cartService.create(data).subscribe({\n next: (res) => {\n this.cartService.cartEvent.emit(CartEventType.CartAdd);\n },\n });\n }\n private removeFromWishlist() {\n this.productService.removeFromWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = false;\n },\n });\n }\n private addToWishlist() {\n this.productService.addToWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = true;\n },\n });\n }\n checkout(e: any) {\n if (this.authenticated()) {\n if (this.selectedVariant) {\n // this.router.navigateByUrl(`/cart/checkout/products/${this.id}?variant-id=${this.selectedVariant.id}`);\n // this.router.navigate([`/cart/checkout/products/${this.id}`], { queryParams: { variant: this.selectedVariant.id } });\n this.router.navigate([`/cart/checkout/products/${this.id}/variants/${this.selectedVariant.id}`]);\n } else {\n this.router.navigateByUrl(`/cart/checkout/products/${this.id}`);\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n }\n\n onOptionChange(e) {\n const criteria: any = [];\n this.selectedVariant.options.map((item) => {\n criteria.push({\n optionId: item.option.id === e.option.id ? e.option.id : item.option.id,\n valueId: item.option.id === e.option.id ? e.value.id : item.value.id,\n });\n });\n\n // const criteria = [\n // { optionId: '249008855294545920', valueId: '249008855298740224' }, // color: red\n // { optionId: '248661715955355648', valueId: '249001130061860865' }, // size: 256GB\n // ];\n\n // Function to check if a variant matches all the criteria\n const matchesAllCriteria = (variant, criteria) => {\n return _.every(criteria, (criterion) => {\n return _.some(variant.options, (o) => o.option.id === criterion.optionId && o.value.id === criterion.valueId);\n });\n };\n // Function to update the criteria based on a matching variant\n const updateCriteriaFromVariant = (variant) => {\n return _.map(variant.options, (o) => ({\n optionId: o.option.id,\n valueId: o.value.id,\n }));\n };\n\n // Find the variant that matches all the criteria\n const matchingVariant = _.find(this.variants, (variant) => matchesAllCriteria(variant, criteria));\n this.selectedVariant = matchingVariant!;\n // const updatedCriteria = matchingVariant ? updateCriteriaFromVariant(matchingVariant) : [];\n }\n}\n","@if (product) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row w-full\">\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-media [media]=\"product.media\"></rolatech-product-media>\n </div>\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-info [name]=\"product.name\" [description]=\"product.description\"> </rolatech-product-info>\n @for (option of product.options; track $index) {\n <rolatech-product-option\n [option]=\"option\"\n [value]=\"selectedVariant | selected: option\"\n (change)=\"onOptionChange($event)\"\n ></rolatech-product-option>\n }\n <rolatech-product-pricing\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n [product]=\"product\"\n [price]=\"selectedVariant ? selectedVariant.price : product.price\"\n ></rolatech-product-pricing>\n <rolatech-product-action\n [product]=\"product\"\n (checkout)=\"checkout($event)\"\n (deposit)=\"checkout($event)\"\n (cart)=\"onCart($event)\"\n ></rolatech-product-action>\n </div>\n </div>\n <div class=\"py-3\">\n <mat-divider></mat-divider>\n <rolatech-product-owner-renderer\n [name]=\"fullname\"\n [avatar]=\"user?.avatar\"\n [username]=\"username\"\n ></rolatech-product-owner-renderer>\n <mat-divider></mat-divider>\n </div>\n <div class=\"flex flex-col\">\n @for (section of product.sections; track $index) {\n <rolatech-product-section [section]=\"section\" [reverse]=\"$index % 2 !== 0\"></rolatech-product-section>\n }\n\n <rolatech-comments [itemId]=\"product.id\"></rolatech-comments>\n </div>\n </rolatech-container>\n}\n","import { Routes } from '@angular/router';\nimport { ProductLayoutComponent } from './product-layout/product-layout.component';\nimport { ProductCategoryComponent } from './product-category/product-category.component';\nimport { ProductDetailsComponent } from './product-details/product-details.component';\nexport const productRoutes: Routes = [\n {\n path: '',\n component: ProductLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./product-index/product-index.component').then((x) => x.ProductIndexComponent),\n },\n {\n path: 'categories/:id',\n component: ProductCategoryComponent,\n },\n ],\n },\n {\n path: ':id',\n component: ProductDetailsComponent,\n },\n];\n","import { ProductCategory } from './category';\n\nexport interface Product {\n id: string;\n name: string;\n description: string;\n media: ProductMedia[];\n status: ProductStatus | string;\n type: ProductType | string;\n scope: ProductScope | string;\n categories: ProductCategory[];\n tags: ProductTag[];\n sections: ProductSection[];\n options: ProductOption[];\n variants?: ProductVariant[];\n price: number;\n deposit: number;\n priceType: ProductPriceType;\n userId: string;\n createdAt: string;\n updatedAt: string;\n}\nexport enum ProductPriceType {\n FIXED = '固定价格',\n PARTIAL = '支付定金',\n VARIED = '多变的',\n}\nexport interface ProductSection {\n id: string;\n title: string;\n description: string;\n media: ProductMedia[];\n isUploading?: boolean;\n}\n\nexport interface ProductVariant {\n id: string;\n title: string;\n price: number;\n sku: string;\n options: ProductVariantOption[];\n media: ProductVariantMedia[];\n isUploading?: boolean;\n status: ProductInventoryStatus | string;\n}\nexport interface ProductVariantMedia {\n url: string;\n alt: string;\n uploading?: boolean;\n}\nexport interface ProductVariantOption {\n option: ProductOption;\n value: ProductOptionValue;\n}\nexport interface ProductTag {\n id: string;\n name: string;\n}\nexport enum ProductStatus {\n DRAFT = <any>'草稿',\n AWAITING = <any>'审核中',\n PENDING = <any>'审核中',\n ACCEPTED = <any>'已通过',\n ACTIVE = <any>'已发布',\n DELETED = <any>'已删除',\n ARCHIVED = <any>'已下架',\n}\nexport enum ProductType {\n DIGITAL = '虚拟商品',\n PHYSICAL = '实体商品',\n SERVICE = '服务',\n OTHER = '其他',\n}\nexport enum ProductInventoryStatus {\n IN_STOCK = '有货',\n LOW_STOCK = '库存不足',\n OUT_OF_STOCK = '售罄',\n DISCONTINUED = '已停产',\n}\nexport enum ProductScope {\n WEB = <any>'网站',\n GLOBAL = <any>'全域',\n}\nexport interface ProductMedia {\n id: string;\n url: string;\n alt: string;\n width: number;\n height: number;\n uuid: string;\n selected: boolean;\n}\n\nexport interface ProductOption {\n id: string;\n name: string;\n values: ProductOptionValue[];\n}\nexport interface ProductOptionValue {\n id?: string;\n name: string;\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';\nimport { Product, ProductStatus } from '../../../interfaces/product';\nimport { ProductService } from '@rolatech/angular-services';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-product-manage-layout',\n imports: [RouterLink, RouterLinkActive, MatButtonModule, RouterOutlet],\n templateUrl: './product-manage-layout.component.html',\n styleUrl: './product-manage-layout.component.scss',\n})\nexport class ProductManageLayoutComponent implements OnInit {\n id: string;\n product!: Product;\n submitted = false;\n accepted = false;\n isDraft = false;\n route = inject(ActivatedRoute);\n productService = inject(ProductService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n constructor() {\n this.id = this.route.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n },\n });\n }\n updateStatus() {\n this.isDraft = this.product.status.toString() === 'DRAFT' || this.product.status.toString() === 'PENDING';\n this.accepted = this.product.status.toString() === 'ACCEPTED';\n }\n publish() {\n this.productService.publish(this.id).subscribe({\n next: (res) => {\n this.snackBar.open('发布成功');\n this.product.status = ProductStatus['已发布' as keyof typeof ProductStatus];\n this.updateStatus();\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 md:px-0 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">商品信息</div>\n <a routerLink=\"./info\" routerLinkActive=\"manage-active\" class=\"p-2\">基本信息</a>\n <a routerLink=\"./media\" routerLinkActive=\"manage-active\" class=\"p-2\">图片</a>\n <a routerLink=\"./sections\" routerLinkActive=\"manage-active\" class=\"p-2\">详情</a>\n <a routerLink=\"./options\" routerLinkActive=\"manage-active\" class=\"p-2\">选项</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">商品设置</div>\n <a routerLink=\"./variants\" routerLinkActive=\"manage-active\" class=\"p-2\">价格策略</a>\n <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">库存设置</a>\n <a routerLink=\"./schedule\" routerLinkActive=\"manage-active\" class=\"p-2\">发布设置</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">其他信息</div>\n <a routerLink=\"./pricing\" routerLinkActive=\"manage-active\" class=\"p-2\">价格</a>\n </div>\n\n @if (isDraft) {\n <div class=\"md:mt-6 md:ml-2\">\n <button mat-flat-button color=\"primary\" (click)=\"publish()\">发布商品</button>\n </div>\n }\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-content',\n imports: [CommonModule],\n templateUrl: './product-manage-content.component.html',\n styleUrl: './product-manage-content.component.scss',\n})\nexport class ProductManageContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject, model, OnInit } from '@angular/core';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductCategoryService, ProductService } from '@rolatech/angular-services';\nimport { Product, ProductCategory, ProductPriceType, ProductStatus, ProductType } from '../../../interfaces';\nimport { DecimalDirective } from '@rolatech/angular-common';\nimport { KeyValuePipe } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-info',\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n ToolbarComponent,\n ProductManageContentComponent,\n DecimalDirective,\n MatSelectModule,\n KeyValuePipe,\n ],\n templateUrl: './product-manage-info.component.html',\n styleUrl: './product-manage-info.component.scss',\n})\nexport class ProductManageInfoComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n categoryService = inject(ProductCategoryService);\n product!: Product;\n status = ProductStatus;\n categories!: ProductCategory[];\n selectedCategoyIds!: string[];\n productType = ProductType;\n priceType = ProductPriceType;\n price = model<string>();\n deposit = model<string>('');\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n find() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n const price = (this.product.price / 100).toFixed(2);\n this.price.set(price);\n\n if (this.product.priceType.toString() === 'PARTIAL') {\n const deposit = (this.product.deposit / 100).toFixed(2);\n this.deposit.set(deposit);\n }\n },\n });\n }\n typeCompareFn(t1: any, t2: any) {\n return t1 === t2;\n }\n priceTypeCompareFn(t1: any, t2: any) {\n return t1 === t2;\n }\n compareFn(o1: ProductCategory, o2: ProductCategory) {\n return o1.id === o2?.id;\n }\n onTypeChange(event: MatSelectChange) {\n this.product.type = Object.keys(this.productType).find((key) => this.productType[key] === event.value)!;\n }\n onCategoryChange(event: any) {\n this.selectedCategoyIds = event.value;\n }\n update() {\n const { name, description, categories, priceType } = this.product;\n const data = {\n name,\n description,\n categories,\n price: Number(this.price()) * 100,\n type: this.product.type,\n priceType,\n deposit: Number(this.deposit()) * 100,\n };\n this.productService.update(this.id, data).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"基本信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n @if (product) {\n <div class=\"flex flex-col\">\n <form #productForm=\"ngForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"product.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"product.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" required>\n <mat-label>类型</mat-label>\n <mat-select\n name=\"type\"\n [compareWith]=\"typeCompareFn\"\n (selectionChange)=\"onTypeChange($event)\"\n [(ngModel)]=\"product.type\"\n >\n @for (type of productType | keyvalue; track type) {\n <mat-option [value]=\"type.key\">\n {{ type.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" ngModelGroup=\"categories\" required>\n <mat-label>分类</mat-label>\n <mat-select\n multiple\n name=\"id\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"product.categories\"\n #select=\"matSelect\"\n (selectionChange)=\"onCategoryChange($event)\"\n >\n @for (item of categories; track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" required>\n <mat-label>价格类型</mat-label>\n <mat-select name=\"priceType\" [compareWith]=\"priceTypeCompareFn\" [(ngModel)]=\"product.priceType\">\n @for (type of priceType | keyvalue; track type) {\n <mat-option [value]=\"type.key\">\n {{ type.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 价格 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"price\" name=\"price\" required rolatechDecimal />\n </mat-form-field>\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <mat-form-field appearance=\"fill\">\n <mat-label> 定金 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"deposit\" name=\"deposit\" required rolatechDecimal />\n </mat-form-field>\n }\n </form>\n </div>\n <div>\n <button mat-flat-button type=\"primary\" (click)=\"update()\">保存</button>\n </div>\n }\n</rolatech-product-manage-content>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToolbarComponent, ConfirmationDialogComponent } from '@rolatech/angular-components';\nimport { findIndex, remove } from 'lodash';\nimport { ProductSection, ProductStatus, ProductType } from '../../../interfaces';\nimport { ProductService } from '@rolatech/angular-services';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { ProductManageSectionItemComponent } from '../../../components';\n\n@Component({\n selector: 'rolatech-product-manage-sections',\n imports: [ProductManageSectionItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, ProductManageContentComponent],\n templateUrl: './product-manage-sections.component.html',\n styleUrl: './product-manage-sections.component.scss',\n})\nexport class ProductManageSectionsComponent implements OnInit {\n route = inject(ActivatedRoute);\n productService = inject(ProductService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n\n id: string;\n isLoading = false;\n isUploading = false;\n sections: ProductSection[] = [];\n status = ProductStatus;\n productType: any = ProductType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.productService.findSections(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.sections = res.data;\n }\n },\n });\n }\n addSection() {\n if (!this.sections) {\n this.sections = [];\n }\n this.productService\n .addSection(this.id, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const section = res.data;\n this.sections.push({\n id: section.id,\n title: '无标题',\n description: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onUploadSectionMedia(event: any) {\n const section = event.section;\n const sectionId = section.id;\n const file = event.data.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (!section.media) {\n section.media = [];\n }\n (section.media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n section.isUploading = true;\n const formData = new FormData();\n formData.append('file', file);\n this.productService.uploadSectionMedia(sectionId, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n section.isUploading = false;\n delete res.data.productSection;\n section.media[section.media.length - 1].id = res.data.id;\n section.media[section.media.length - 1].url = res.data.url;\n },\n error: (e) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onDeleteSectionMedia(event: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除图片',\n message: `确定删除吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const section = event.section;\n const mediaId = event.media.id;\n remove(section.media, {\n id: mediaId,\n });\n this.productService.deleteSectionMedia(section.id, mediaId).subscribe({\n next: (res: any) => {\n // remove(section.media, {\n // id: mediaId,\n // });\n },\n });\n }\n });\n }\n onSectionSave(section: ProductSection) {\n delete section.isUploading;\n this.productService.updateSection(section.id, section).subscribe({\n next: (res: any) => {\n this.snackBar.open('保存成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onSectionDelete(section: ProductSection) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除详情',\n message: '确定删除此详情吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.deleteSection(section.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.data);\n remove(this.sections, {\n id: section.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"详情\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (section of sections; track section) {\n <rolatech-product-manage-section-item\n [section]=\"section\"\n (upload)=\"onUploadSectionMedia($event)\"\n (deleteMedia)=\"onDeleteSectionMedia($event)\"\n (save)=\"onSectionSave($event)\"\n (delete)=\"onSectionDelete($event)\"\n [actions]=\"true\"\n ></rolatech-product-manage-section-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addSection()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>添加详情</span>\n </button>\n </div>\n</rolatech-product-manage-content>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { Media } from '@rolatech/angular-common';\nimport {\n ConfirmationDialogComponent,\n ImagePreviewDialogComponent,\n MediaListComponent,\n MediaListItemComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { findLastIndex } from 'lodash';\nimport { ProductService } from '@rolatech/angular-services';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { ProductStatus } from '../../../interfaces';\n\nconst SIZE = 10 * 1024 * 1024; // file slice size 10MB\n\n@Component({\n selector: 'rolatech-product-manage-media',\n imports: [MediaListComponent, MediaListItemComponent, ToolbarComponent, ProductManageContentComponent],\n templateUrl: './product-manage-media.component.html',\n styleUrl: './product-manage-media.component.scss',\n})\nexport class ProductManageMediaComponent implements OnInit {\n route = inject(ActivatedRoute);\n productService = inject(ProductService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n id: string;\n isUploading = false;\n isLoading = false;\n media: Media[] = [];\n status = ProductStatus;\n // productType: any = ProductType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.media = res.data.media || [];\n },\n });\n }\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n private createFileChunk(file: any, size = SIZE) {\n const fileChunkList: any = [];\n let cur = 0;\n while (cur < file.size) {\n fileChunkList.push({ file: file.slice(cur, cur + size) });\n cur += size;\n }\n return fileChunkList;\n }\n\n onUploadMedia2(event: any) {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.onload = (e) => {};\n\n const fileChunkList = this.createFileChunk(file);\n fileChunkList.forEach((item) => {});\n }\n onUploadMedia(event: any) {\n const file = event.target.files[0];\n // 5MB * 1024 * 1024 = 5242880\n // if (file?.size > 5242880) {\n // this.snackBar.open('尺寸过大, 请修改后上传');\n // this.isUploading = false;\n // return;\n // }\n\n if (file) {\n const reader = new FileReader();\n const formData = new FormData();\n formData.append('file', file);\n\n reader.readAsDataURL(file);\n reader.onload = () => {\n const img: any = new Image();\n img.onload = () => {\n this.media.push({\n url: img.src,\n alt: 'upload image',\n width: img.width,\n height: img.height,\n });\n\n this.isUploading = true;\n };\n img.src = reader.result; // This is the data URL\n };\n this.productService.uploadMedia(this.id, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n const index = findLastIndex(this.media);\n // Replace item at index using native splice\n this.media.splice(index, 1, res.data);\n },\n error: (e: any) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onMediaDelete(item: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除图片',\n message: '确定删除这张商品图片吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.deleteMedia(this.id, item.id).subscribe({\n next: (res) => {\n this.media = this.media.filter((m) => m.id !== item.id);\n this.snackBar.open('删除成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"图片信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div>\n <p>*图片文件大小限制在5MB以下*</p>\n <rolatech-media-list (upload)=\"onUploadMedia($event)\" [isUploading]=\"isUploading\">\n @for (item of media; track item; let i = $index) {\n <rolatech-media-list-item\n [media]=\"item\"\n (mediaItemClick)=\"onImageClick(i)\"\n (deleteMedia)=\"onMediaDelete(item)\"\n ></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n</rolatech-product-manage-content>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-pricing',\n imports: [CommonModule],\n templateUrl: './product-manage-pricing.component.html',\n styleUrl: './product-manage-pricing.component.scss',\n})\nexport class ProductManagePricingComponent {}\n","<p>product-manage-pricing works!</p>\n","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Product, ProductStatus } from '../../../interfaces';\nimport { ImagePlaceholderComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { FixedPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-product-manage-item',\n imports: [CommonModule, ThumbnailComponent, ImagePlaceholderComponent, MatButtonModule, MatMenuModule, MatIcon, FixedPipe],\n templateUrl: './product-manage-item.component.html',\n styleUrl: './product-manage-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductManageItemComponent {\n product = input.required<Product>();\n thumbnail = input();\n status = ProductStatus;\n publish() {}\n archived() {}\n delete() {}\n}\n","<div class=\"flex p-3 items-center hover:bg-[--rt-raised-background] cursor-pointer\">\n <div>\n @if (product().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]=\"product().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>\n <div class=\"px-3\">\n {{ product().name }}\n </div>\n <div class=\"flex-1\"></div>\n <div class=\"px-3 min-w-28 w-28\">\n {{ status[product().status] }}\n </div>\n <div class=\"px-3 min-w-28 w-28\">¥{{ product().price | fixed }}</div>\n <div class=\"pr-4\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n aria-label=\"Example icon-button with a menu\"\n (click)=\"$event.stopPropagation()\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n @if (product().status === 'DRAFT') {\n <button mat-menu-item (click)=\"publish()\">\n <span> 上架 </span>\n </button>\n }\n @if (product().status === 'STARTED') {\n <button mat-menu-item (click)=\"archived()\">\n <span> 结束 </span>\n </button>\n }\n @if (product().status !== 'ACTIVE') {\n <button mat-menu-item (click)=\"delete()\">\n <span> 删除 </span>\n </button>\n }\n </mat-menu>\n </div>\n</div>\n<div class=\"h-[1px] px-3 bg-[--rt-raised-background]\"></div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-item-header',\n imports: [CommonModule],\n templateUrl: './product-manage-item-header.component.html',\n styleUrl: './product-manage-item-header.component.scss',\n})\nexport class ProductManageItemHeaderComponent {}\n","<div class=\"flex h-11 items-center\">\n <div class=\"text-md font-bold px-3 min-w-[320px]\">商品</div>\n <div class=\"flex-1\"></div>\n <div class=\"text-md font-bold px-3 w-28\">状态</div>\n <div class=\"text-md font-bold px-3 w-28\">价格</div>\n <div class=\"text-md px-3 w-16\"></div>\n</div>\n<div class=\"h-[1px] px-3 bg-[--rt-raised-background]\"></div>\n","import { Component, inject, OnInit, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule, MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTableModule, MatTableDataSource } from '@angular/material/table';\nimport { RouterLink } from '@angular/router';\nimport { ToolbarComponent, SpinnerComponent, ConfirmationDialogComponent } from '@rolatech/angular-components';\nimport { ProductService } from '@rolatech/angular-services';\nimport { Product, ProductStatus } from '../../../interfaces';\nimport { ProductManageItemComponent } from '../product-manage-item/product-manage-item.component';\nimport { ProductManageItemHeaderComponent } from '../product-manage-item-header/product-manage-item-header.component';\n\n@Component({\n selector: 'rolatech-product-manage-index',\n imports: [\n MatButtonModule,\n RouterLink,\n MatIconModule,\n MatTableModule,\n MatMenuModule,\n MatPaginatorModule,\n ToolbarComponent,\n SpinnerComponent,\n ProductManageItemComponent,\n ProductManageItemHeaderComponent,\n ],\n templateUrl: './product-manage-index.component.html',\n styleUrl: './product-manage-index.component.scss',\n})\nexport class ProductManageIndexComponent implements OnInit {\n paginator = viewChild(MatPaginator);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n productService = inject(ProductService);\n isLoading = false;\n isSearch = false;\n pageEvent!: PageEvent;\n length = 100;\n pageSize = 15;\n pageSizeOptions: number[] = [5, 10, 25, 100];\n dataSource = new MatTableDataSource<any>();\n products: Product[] = [];\n displayedColumns: string[] = ['name', 'status', 'createdAt', 'actions'];\n orderOptions = [\n {\n key: 'createdAt',\n value: '创建时间',\n icon: 'arrow_upward',\n sort: 'asc',\n },\n {\n key: 'createdAt',\n value: '创建时间',\n icon: 'arrow_downward',\n sort: 'desc',\n },\n {\n key: 'status',\n value: '状态',\n icon: 'arrow_upward',\n sort: 'asc',\n },\n {\n key: 'status',\n value: '状态',\n icon: 'arrow_downward',\n sort: 'desc',\n },\n ];\n status: any = ProductStatus;\n orderString = 'createdAt desc';\n classrooms: any;\n\n ngOnInit(): void {\n this.find(null);\n }\n find(event?: PageEvent | null): any {\n this.isLoading = true;\n const page = event ? event.pageIndex + 1 : 1;\n const limit = event ? event.pageSize : 15;\n const sort = this.orderString;\n const options = {\n page,\n limit,\n sort,\n };\n this.productService.me(options).subscribe({\n next: (res: any) => {\n this.products = res.data;\n // this.dataSource.data = this.products;\n this.length = res.meta.pagination.count;\n this.isLoading = false;\n },\n error: (e) => {\n this.isLoading = false;\n this.snackBar.open(e.message);\n },\n });\n }\n\n archived(product: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '商品下架',\n message: `确定下架 ${product.name} 吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.archived(product.id).subscribe({\n next: (res) => {\n const index = this.products.findIndex((item) => item.id === product.id);\n const status = ProductStatus[ProductStatus.ARCHIVED];\n this.products[index].status = status;\n this.snackBar.open('结束成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n delete(product: Product) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除商品',\n message: `确定删除 ${product.name} 吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.delete(product.id).subscribe({\n next: (res) => {\n const index = this.products.findIndex((item) => item.id === product.id);\n this.products.splice(index, 1);\n this.dataSource.data = this.products;\n this.length--;\n this.snackBar.open('删除成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-toolbar title=\"商品\">\n <div class=\"flex items-center gap-2\">\n <button mat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n 创建商品\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <rolatech-product-manage-item-header></rolatech-product-manage-item-header>\n @for (item of products; track $index) {\n <rolatech-product-manage-item [product]=\"item\" routerLink=\"./{{ item.id }}/manage/info\"></rolatech-product-manage-item>\n }\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = find($event)\"\n hidePageSize\n showFirstLastButtons\n >\n </mat-paginator>\n}\n","import { Component, inject } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductService } from '@rolatech/angular-services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'rolatech-product-manage-create',\n imports: [\n ToolbarComponent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n ],\n templateUrl: './product-manage-create.component.html',\n styleUrl: './product-manage-create.component.scss',\n})\nexport class ProductManageCreateComponent {\n private productService = inject(ProductService);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private snackBar = inject(MatSnackBar);\n product: any = {};\n create() {\n const data = {\n ...this.product,\n // classroom: this.selectedClassroom,\n };\n this.productService.create(data).subscribe({\n next: (res) => {\n this.router.navigate([`../${res.data.id}/manage/info`], {\n relativeTo: this.route,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n}\n","<rolatech-toolbar title=\"创建商品\" link=\"../\"> </rolatech-toolbar>\n<div class=\"p-3\">\n <section>\n <form #productForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"product.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"product.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n </div>\n </form>\n </section>\n <div class=\"mt-3\">\n <button mat-flat-button [disabled]=\"!productForm.valid\" class=\"w-28\" (click)=\"create()\">创建</button>\n </div>\n</div>\n","import { Component, inject, OnInit, signal } from '@angular/core';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport {\n AngularComponentsModule,\n BaseComponent,\n ConfirmationDialogComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { ProductService } from '@rolatech/angular-services';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ProductOption } from '../../../interfaces';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { ProductManageOptionAddComponent, ProductManageOptionItemComponent } from '../../../components';\n\n@Component({\n selector: 'rolatech-product-manage-options',\n imports: [\n ProductManageContentComponent,\n ToolbarComponent,\n MatButtonModule,\n MatFormFieldModule,\n AngularCommonModule,\n AngularComponentsModule,\n MatIconModule,\n ProductManageOptionItemComponent,\n ProductManageOptionAddComponent,\n ],\n templateUrl: './product-manage-options.component.html',\n styleUrl: './product-manage-options.component.scss',\n})\nexport class ProductManageOptionsComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n options: ProductOption[] = [];\n\n add = false;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.productService.findOptions(this.id).subscribe({\n next: (res) => {\n this.options = res.data || [];\n },\n });\n }\n saveOption(option: ProductOption) {\n this.productService.addOption(this.id, option).subscribe({\n next: (res) => {\n this.options.push(res.data);\n this.add = false;\n },\n });\n }\n onUpdateOption(option: ProductOption) {\n const options = {\n title: '编辑选项',\n cancelText: '取消',\n confirmText: '确认',\n data: {\n option: option,\n action: false,\n },\n component: ProductManageOptionAddComponent,\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.productService.updateOption(option.id, res).subscribe({\n next: (res) => {\n option.values = res.data.values;\n },\n });\n }\n },\n });\n }\n onDeleteOption(option: ProductOption) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除选项',\n message: `确定删除 ${option.name} 吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.deleteOption(option.id).subscribe({\n next: (res) => {\n const index = this.options.findIndex((item) => item.id === option.id);\n this.options.splice(index, 1);\n this.snackBarService.open('删除成功');\n },\n });\n }\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"选项\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n @for (item of options; track $index) {\n <rolatech-product-manage-option-item\n [option]=\"item\"\n (delete)=\"onDeleteOption($event)\"\n (edit)=\"onUpdateOption($event)\"\n ></rolatech-product-manage-option-item>\n }\n <div class=\"mt-3\">\n @if (add) {\n <rolatech-product-manage-option-add\n (save)=\"saveOption($event)\"\n (cancel)=\"add = false\"\n ></rolatech-product-manage-option-add>\n } @else {\n <button mat-stroked-button (click)=\"add = true\">\n <mat-icon>add</mat-icon>\n <span>增加</span>\n </button>\n }\n </div>\n </div>\n</rolatech-product-manage-content>\n","import { Component, computed, inject, model, output } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { AngularCommonModule, DecimalDirective } from '@rolatech/angular-common';\nimport { AngularComponentsModule, ImagePreviewDialogComponent } from '@rolatech/angular-components';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\nimport { ProductInventoryStatus, ProductVariant } from '../../interfaces';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\n\n@Component({\n selector: 'rolatech-product-manage-variant',\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n OptionsFormatPipe,\n MatTableModule,\n MatIcon,\n MatFormFieldModule,\n DecimalDirective,\n MatProgressBarModule,\n MatSelectModule,\n ],\n templateUrl: './product-manage-variant.component.html',\n styleUrl: './product-manage-variant.component.scss',\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('220ms cubic-bezier(0.25, 0.1, 0.25, 1)')),\n ]),\n ],\n})\nexport class ProductManageVariantComponent {\n dialog = inject(MatDialog);\n variant = model.required<ProductVariant>();\n price = computed(() => {\n return (this.variant().price / 100).toFixed(2);\n });\n\n expanded = false;\n upload = output<FormData>();\n variantStatus = ProductInventoryStatus;\n enumKeys = Object.keys(this.variantStatus).filter((key) => isNaN(Number(key)));\n\n onUpload(event: any) {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n const formData = new FormData();\n formData.append('file', file);\n reader.readAsDataURL(file);\n reader.onload = () => {\n const img: any = new Image();\n img.onload = () => {\n this.variant.update((item) => {\n item.media = item.media ? item.media : [];\n item.media.push({\n url: img.src,\n alt: 'upload image',\n uploading: true,\n });\n return item;\n });\n };\n img.src = reader.result;\n this.upload.emit(formData);\n };\n reader.onerror = (error) => {};\n }\n }\n onMediaClick(i: number) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.variant().media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n statusCompareFn(t1: any, t2: any) {\n return t1 === ProductInventoryStatus[t2];\n }\n onStatusChange(event: MatSelectChange) {\n this.variant.update((item) => {\n item.status = Object.keys(this.variantStatus).find((key) => this.variantStatus[key] === event.value)!;\n return item;\n });\n }\n onPriceChange(event: any) {\n const value = event.target.value;\n this.variant.update((currentVariant) => {\n currentVariant.price = value * 100;\n return { ...currentVariant };\n });\n }\n}\n","<div class=\"flex items-center h-[72px] cursor-pointer px-2\" (click)=\"expanded = !expanded; $event.stopPropagation()\">\n <div>{{ variant().options | options }}</div>\n <div class=\"flex-1\"></div>\n <div class=\"px-3 dense-2\" (click)=\"$event.stopPropagation()\">\n <mat-form-field subscriptSizing=\"dynamic\" class=\"h-12\">\n <span matTextPrefix> ¥ &nbsp;</span>\n <input matInput type=\"text\" [value]=\"price()\" (change)=\"onPriceChange($event)\" rolatechDecimal />\n </mat-form-field>\n </div>\n <div class=\"px-3\">\n <mat-form-field class=\"dense-2\" (click)=\"$event.stopPropagation()\" subscriptSizing=\"dynamic\">\n <mat-select\n name=\"type\"\n [compareWith]=\"statusCompareFn\"\n (selectionChange)=\"onStatusChange($event)\"\n [(ngModel)]=\"variant().status\"\n >\n @for (key of enumKeys; track key) {\n <mat-option [value]=\"variantStatus[key]\">\n {{ variantStatus[key] }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"block w-20 text-right\">\n <button mat-icon-button aria-label=\"expand row\" (click)=\"expanded = !expanded; $event.stopPropagation()\">\n @if (expanded) {\n <mat-icon>keyboard_arrow_up</mat-icon>\n } @else {\n <mat-icon>keyboard_arrow_down</mat-icon>\n }\n </button>\n </div>\n</div>\n<div>\n <div class=\"flex flex-col gap-3 w-full overflow-hidden\" [@detailExpand]=\"expanded ? 'expanded' : 'collapsed'\">\n <div class=\"flex flex-col my-3 md:w-1/2\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\" class=\"h-12\">\n <span matTextPrefix> ¥ &nbsp;</span>\n <input matInput type=\"number\" [value]=\"price()\" rolatechDecimal />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>库存</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"variant().price\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col items-start my-3 md:w-1/2\">\n <div class=\"flex flex-wrap\">\n @for (media of variant().media; track $index) {\n <div class=\"media-list-item\">\n <div class=\"inner-media\">\n @defer (on viewport()) {\n <img (click)=\"onMediaClick($index)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n @if (media.uploading) {\n <div class=\"absolute flex items-center justify-center p-4 w-full h-full bg-[--rt-20-percent-layer]\">\n <mat-spinner></mat-spinner>\n <!--\n <svg\n viewBox=\"0 0 24 24\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n class=\"style-scope tp-yt-iron-icon\"\n style=\"pointer-events: none; display: block; width: 100%; height: 100%\"\n >\n <g class=\"style-scope tp-yt-iron-icon\">\n <path\n d=\"M17,18v1H6V18ZM6.49,9l.71.71L11,5.91V16h1V5.91l3.8,3.81L16.51,9l-5-5Z\"\n class=\"style-scope tp-yt-iron-icon\"\n ></path>\n </g>\n </svg>\n <span>Uploading…</span> -->\n </div>\n }\n </div>\n </div>\n }\n <div class=\"media-list-item\">\n <div class=\"inner-media\" (click)=\"fileInput.click()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n </div>\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n </div>\n </div>\n </div>\n</div>\n<mat-divider></mat-divider>\n","import { ChangeDetectorRef, Component, inject, model, OnInit, signal } from '@angular/core';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { AngularComponentsModule, BaseComponent, SpinnerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { Product, ProductOption, ProductVariant } from '../../../interfaces';\nimport { ProductService } from '@rolatech/angular-services';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { ProductManageVariantComponent } from '../../../components/product-manage-variant/product-manage-variant.component';\n\n@Component({\n selector: 'rolatech-product-manage-variants',\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n ProductManageContentComponent,\n ToolbarComponent,\n MatFormFieldModule,\n ProductManageVariantComponent,\n SpinnerComponent,\n ],\n templateUrl: './product-manage-variants.component.html',\n styleUrl: './product-manage-variants.component.scss',\n})\nexport class ProductManageVariantsComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n changeDetectorRefs = inject(ChangeDetectorRef);\n options = signal<ProductOption[]>([]);\n snackBar = inject(MatSnackBar);\n productPrice = model<string>();\n variants: any;\n variantPriceChecked = false;\n product!: Product;\n loading = false;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.getProduct();\n }\n onVariantSlideToggle(event: MatSlideToggleChange) {\n const newState = event.checked;\n if (newState) {\n this.productService.updateVariantPrice(this.id, true).subscribe({\n next: (res) => {\n this.variants = res.data;\n this.variantPriceChecked = newState;\n },\n });\n } else {\n const options = {\n title: '取消价格策略吗',\n message: '这会删除现有策略, 确定吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.productService.updateVariantPrice(this.id, false).subscribe({\n next: (res) => {\n this.variantPriceChecked = false;\n this.variants = res.data;\n },\n });\n } else {\n event.source.checked = !newState;\n }\n },\n });\n }\n }\n onInventorySlideToggle(e: MatSlideToggleChange) {}\n\n saveVariants() {\n this.productService.updateVariants(this.id, this.variants).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n onUpload(variant: any, data: any) {\n this.productService.uploadVariantMedia(variant.id, data).subscribe({\n next: (res: any) => {\n variant.media[variant.media.length - 1] = {\n id: res.data.id,\n url: res.data.url + '!w200',\n uploading: false,\n };\n },\n error: (e: any) => {\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n }\n findVariants() {\n this.productService.findVariants(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.variantPriceChecked = true;\n }\n this.variants = res.data;\n },\n });\n }\n getProduct() {\n this.loading = true;\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.variants = this.product.variants;\n this.variantPriceChecked = this.variants ? this.variants.length > 0 : false;\n this.options.set(res.data.options || []);\n const price = (res.data.price / 100).toFixed(2);\n this.productPrice.set(price);\n this.loading = false;\n },\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"价格策略\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n @if (loading) {\n <rolatech-spinner></rolatech-spinner>\n } @else {\n <div class=\"flex items-center\">\n <mat-slide-toggle\n color=\"primary\"\n #slide\n [checked]=\"variantPriceChecked\"\n (change)=\"onVariantSlideToggle($event)\"\n [disabled]=\"options().length <= 0\"\n ></mat-slide-toggle>\n <div>根据商品选项设置不同的价格和库存</div>\n </div>\n <div class=\"flex items-center\">\n <mat-slide-toggle color=\"primary\" #inventorySlide (change)=\"onInventorySlideToggle($event)\"></mat-slide-toggle>\n <div>跟踪库存</div>\n </div>\n\n @if (slide.checked) {\n <div>\n <div class=\"header flex gap-3 h-14 items-center\">\n <div class=\"px-3\">名称</div>\n <div class=\"flex-1\"></div>\n <div class=\"w-[160px]\">价格</div>\n <div class=\"w-[160px]\">状态</div>\n @if (inventorySlide.checked) {\n <div class=\"w-[160px]\">库存</div>\n }\n\n <div class=\"block w-20 text-right\">展开/折叠</div>\n </div>\n @for (item of variants; track $index) {\n <rolatech-product-manage-variant [variant]=\"item\" (upload)=\"onUpload(item, $event)\"></rolatech-product-manage-variant>\n }\n </div>\n <div class=\"mt-3\">\n <button mat-button (click)=\"saveVariants()\">保存</button>\n </div>\n }\n }\n</rolatech-product-manage-content>\n","import { Component } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\n\n@Component({\n selector: 'rolatech-product-manage-schedule',\n imports: [AngularCommonModule, AngularComponentsModule, ToolbarComponent, ProductManageContentComponent],\n templateUrl: './product-manage-schedule.component.html',\n styleUrl: './product-manage-schedule.component.scss',\n})\nexport class ProductManageScheduleComponent {}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"发布设置\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div></div>\n</rolatech-product-manage-content>\n","import { Component, inject, model, OnInit } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { InventoryService, ProductService } from '@rolatech/angular-services';\nimport { Product } from '../../../interfaces';\nimport { MatSelectModule } from '@angular/material/select';\nimport _ from 'lodash';\n\n@Component({\n selector: 'rolatech-product-manage-inventory',\n imports: [AngularCommonModule, AngularComponentsModule, ToolbarComponent, ProductManageContentComponent, MatSelectModule],\n templateUrl: './product-manage-inventory.component.html',\n styleUrl: './product-manage-inventory.component.scss',\n})\nexport class ProductManageInventoryComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n inventoryService = inject(InventoryService);\n\n inventoryEnabled = false;\n loading = false;\n product!: Product;\n locations = model<any>();\n selectedLocation: any;\n amount = 0;\n inventoryItem: any = {\n levels: [],\n };\n\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.getProduct();\n this.findInventoryLocations();\n this.findInventoryItemsByProductId();\n }\n getProduct() {\n this.loading = true;\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.loading = false;\n },\n });\n }\n findInventoryItemsByProductId() {\n this.inventoryService.findInventoryItemByProductId(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.inventoryEnabled = true;\n this.inventoryItem = res.data;\n }\n },\n });\n }\n findInventoryLocations() {\n this.inventoryService.findLocations({}).subscribe({\n next: (res) => {\n this.locations.set(res.data);\n this.selectedLocation = res.data[0];\n },\n });\n }\n onInventorySlideToggle(event: MatSlideToggleChange) {\n const newState = event.checked;\n this.inventoryEnabled = newState;\n if (!newState) {\n const options = {\n title: '取消库存策略吗',\n message: '这会删除现有策略, 确定吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.inventoryService.deleteInventoryItemsByProductId(this.id).subscribe({\n next: (res) => {\n this.inventoryEnabled = false;\n this.inventoryItem = {};\n },\n });\n } else {\n event.source.checked = !newState;\n }\n },\n });\n }\n }\n onSelectionChange(item, event: any) {\n item.locationId = event.value.id;\n }\n compareFn(o1: any, o2: any) {\n return o1.id === o2.id;\n }\n add() {\n const level = {\n location: {},\n amount: 0,\n };\n this.inventoryItem.levels.push(level);\n }\n save() {\n const locationIds = _.map(this.inventoryItem.levels, 'location.id');\n const duplicated = new Set(locationIds).size !== locationIds.length;\n if (duplicated) {\n this.snackBarService.open('仓库重复');\n return;\n }\n\n const data: any = {\n productId: this.id,\n levels: [],\n };\n this.inventoryItem.levels.forEach((item) => {\n data.levels.push({\n locationId: item.location.id,\n amount: item.amount,\n });\n });\n this.inventoryService.addInventoryItem(data).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n });\n }\n deleteLevel(index, level: any) {\n const options = {\n title: '确定删除吗',\n message: `这会删除现有仓库${level.location.name}商品库存数据, 确定吗?`,\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.inventoryService.deleteInventoryLevel(level.id).subscribe({\n next: (res) => {\n this.inventoryItem.levels.splice(index, 1);\n },\n });\n }\n },\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"库存设置\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"flex items-center\">\n <mat-slide-toggle\n color=\"primary\"\n #inventorySlide\n [checked]=\"inventoryEnabled\"\n (change)=\"onInventorySlideToggle($event)\"\n ></mat-slide-toggle>\n <div>跟踪库存</div>\n </div>\n @if (inventoryEnabled) {\n @for (item of inventoryItem.levels; track $index) {\n <div class=\"flex gap-3 items-center py-2\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>仓库</mat-label>\n <mat-select [compareWith]=\"compareFn\" (selectionChange)=\"onSelectionChange(item, $event)\" [(ngModel)]=\"item.location\">\n @for (item of locations(); track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label> 数量 </mat-label>\n <input matInput [(ngModel)]=\"item.amount\" required />\n </mat-form-field>\n <button mat-button (click)=\"deleteLevel($index, item)\">删除</button>\n </div>\n }\n }\n <div class=\"flex gap-3\">\n <button mat-stroked-button (click)=\"add()\">添加</button>\n <button mat-flat-button (click)=\"save()\">保存</button>\n </div>\n</rolatech-product-manage-content>\n","import { Routes } from '@angular/router';\nimport { ProductManageLayoutComponent } from './product-manage-layout/product-manage-layout.component';\nimport { ProductManageInfoComponent } from './product-manage-info/product-manage-info.component';\nimport { ProductManageSectionsComponent } from './product-manage-sections/product-manage-sections.component';\nimport { ProductManageMediaComponent } from './product-manage-media/product-manage-media.component';\nimport { ProductManagePricingComponent } from './product-manage-pricing/product-manage-pricing.component';\nimport { ProductManageIndexComponent } from './product-manage-index/product-manage-index.component';\nimport { ProductManageCreateComponent } from './product-manage-create/product-manage-create.component';\nimport { ProductManageOptionsComponent } from './product-manage-options/product-manage-options.component';\nimport { ProductManageVariantsComponent } from './product-manage-variants/product-manage-variants.component';\nimport { ProductManageScheduleComponent } from './product-manage-schedule/product-manage-schedule.component';\nimport { ProductManageInventoryComponent } from './product-manage-inventory/product-manage-inventory.component';\n\nexport const productManageRoutes: Routes = [\n {\n path: '',\n component: ProductManageIndexComponent,\n },\n {\n path: 'create',\n component: ProductManageCreateComponent,\n },\n {\n path: ':id/manage',\n component: ProductManageLayoutComponent,\n children: [\n {\n path: 'info',\n component: ProductManageInfoComponent,\n },\n {\n path: 'media',\n component: ProductManageMediaComponent,\n },\n {\n path: 'sections',\n component: ProductManageSectionsComponent,\n },\n {\n path: 'options',\n component: ProductManageOptionsComponent,\n },\n {\n path: 'variants',\n component: ProductManageVariantsComponent,\n },\n {\n path: 'inventory',\n component: ProductManageInventoryComponent,\n },\n\n {\n path: 'pricing',\n component: ProductManagePricingComponent,\n },\n {\n path: 'schedule',\n component: ProductManageScheduleComponent,\n },\n ],\n },\n];\n","import { EnvironmentProviders, Provider, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nexport function provideAngularProduct(): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","export const services: any[] = [];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5","i6","i7"],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-product.mjs","sources":["../../../../packages/angular-product/src/lib/pages/product/product-layout/product-layout.component.ts","../../../../packages/angular-product/src/lib/pages/product/product-layout/product-layout.component.html","../../../../packages/angular-product/src/lib/pages/product/product-category/product-category.component.ts","../../../../packages/angular-product/src/lib/pages/product/product-category/product-category.component.html","../../../../packages/angular-product/src/lib/components/product-info/product-info.component.ts","../../../../packages/angular-product/src/lib/components/product-info/product-info.component.html","../../../../packages/angular-product/src/lib/components/product-media/product-media.component.ts","../../../../packages/angular-product/src/lib/components/product-media/product-media.component.html","../../../../packages/angular-product/src/lib/components/product-section/product-section.component.ts","../../../../packages/angular-product/src/lib/components/product-section/product-section.component.html","../../../../packages/angular-product/src/lib/components/product-item/product-item.component.ts","../../../../packages/angular-product/src/lib/components/product-item/product-item.component.html","../../../../packages/angular-product/src/lib/components/product-action/product-action.component.ts","../../../../packages/angular-product/src/lib/components/product-action/product-action.component.html","../../../../packages/angular-product/src/lib/components/product-pricing/product-pricing.component.ts","../../../../packages/angular-product/src/lib/components/product-pricing/product-pricing.component.html","../../../../packages/angular-product/src/lib/components/product-option/product-option.component.ts","../../../../packages/angular-product/src/lib/components/product-option/product-option.component.html","../../../../packages/angular-product/src/lib/components/product-mange-section-item/product-mange-section-item.component.ts","../../../../packages/angular-product/src/lib/components/product-mange-section-item/product-manage-section-item.component.html","../../../../packages/angular-product/src/lib/components/product-manage-option-add/product-manage-option-add.component.ts","../../../../packages/angular-product/src/lib/components/product-manage-option-add/product-manage-option-add.component.html","../../../../packages/angular-product/src/lib/components/product-manage-option-item/product-manage-option-item.component.ts","../../../../packages/angular-product/src/lib/components/product-manage-option-item/product-manage-option-item.component.html","../../../../packages/angular-product/src/lib/pages/product/product-details/selected.pipe.ts","../../../../packages/angular-product/src/lib/components/product-owner-renderer/product-owner-renderer.component.ts","../../../../packages/angular-product/src/lib/components/product-owner-renderer/product-owner-renderer.component.html","../../../../packages/angular-product/src/lib/pages/product/product-details/product-details.component.ts","../../../../packages/angular-product/src/lib/pages/product/product-details/product-details.component.html","../../../../packages/angular-product/src/lib/pages/product/product.routes.ts","../../../../packages/angular-product/src/lib/interfaces/product.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-content/product-manage-content.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-content/product-manage-content.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-info/product-manage-info.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-info/product-manage-info.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-media/product-manage-media.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-media/product-manage-media.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item/product-manage-item.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item/product-manage-item.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-index/product-manage-index.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-index/product-manage-index.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-create/product-manage-create.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-create/product-manage-create.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-options/product-manage-options.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-options/product-manage-options.component.html","../../../../packages/angular-product/src/lib/components/product-manage-variant/product-manage-variant.component.ts","../../../../packages/angular-product/src/lib/components/product-manage-variant/product-manage-variant.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.ts","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.html","../../../../packages/angular-product/src/lib/pages/product-manage/product-manage.routes.ts","../../../../packages/angular-product/src/provider.ts","../../../../packages/angular-product/src/lib/services/index.ts","../../../../packages/angular-product/src/rolatech-angular-product.ts"],"sourcesContent":["import { Component, inject, OnInit } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, ContainerComponent } from '@rolatech/angular-components';\nimport { ProductCategory } from '../../../interfaces';\nimport { ProductService, ProductCategoryService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-product-layout',\n imports: [AngularCommonModule, AngularComponentsModule, ContainerComponent],\n templateUrl: './product-layout.component.html',\n styleUrl: './product-layout.component.scss',\n})\nexport class ProductLayoutComponent extends BaseComponent implements OnInit {\n categories: ProductCategory[] = [];\n categoryService = inject(ProductCategoryService);\n productService = inject(ProductService);\n selectIndex = 0;\n\n ngOnInit(): void {\n this.findCategories();\n }\n findCategories() {\n this.categoryService.find({}, false).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n loadProductByCategoryIndex(index: number) {\n this.selectIndex = index;\n const id = this.categories[index].id;\n if (index === 0) {\n this.router.navigate([`./`]);\n // this.productService.find({}).subscribe({\n // next: res => {\n // }\n // })\n } else {\n this.router.navigate([`../categories/${id}`], {\n relativeTo: this.route,\n });\n }\n }\n nextCategory() {}\n}\n","@if (categories) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 md:h-auto min-w-[240px]\">\n <div class=\"hidden md:block text-2xl font-medium py-3 md:px-1 px-3\">分类</div>\n <div\n class=\"flex flex-row md:flex-col md:h-full items-center md:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center md:mb-1 mr-2 md:mr-0\"\n routerLinkActive=\"product-layout-active\"\n routerLink=\"./\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">全部</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center mr-2 md:mr-0 md:mb-1\"\n routerLinkActive=\"product-layout-active\"\n [routerLink]=\"['./categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { ProductCategoryService, ProductService } from '@rolatech/angular-services';\nimport { AngularComponentsModule, BaseComponent, RichItemComponent, RichViewComponent } from '@rolatech/angular-components';\nimport { Product, ProductCategory } from '../../../interfaces';\nimport { ParamMap } from '@angular/router';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-product-category',\n imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent],\n templateUrl: './product-category.component.html',\n styleUrl: './product-category.component.scss',\n})\nexport class ProductCategoryComponent extends BaseComponent implements OnInit {\n categoryService = inject(ProductCategoryService);\n productService = inject(ProductService);\n category!: ProductCategory;\n products: Product[] = [];\n categories: ProductCategory[] = [];\n loading = false;\n\n ngOnInit(): void {\n this.findAllCategories();\n this.route.paramMap.subscribe((params: ParamMap) => {\n const id = params.get('id') as string;\n this.findCategoryById(id);\n this.findProductsByCategoryId(id);\n });\n }\n findAllCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n findCategoryById(id: string) {\n this.categoryService.get(id).subscribe({\n next: (res: any) => {\n this.category = res.data;\n },\n });\n }\n findAllProducts() {\n this.productService.find({}).subscribe({\n next: (res: any) => {\n this.products = res.data;\n },\n });\n }\n findProductsByCategoryId(id: string) {\n this.loading = true;\n const options = {\n filter: `categories:${id},published:true`,\n };\n this.productService.find(options).subscribe({\n next: (res: any) => {\n this.products = res.data;\n this.loading = false;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n\n loadProductsByCategory(item: any) {\n // [routerLink] = \"['../../', item.id]\";\n this.router.navigate([`../../${item.id}`], {\n relativeTo: this.route,\n });\n }\n}\n","<div>\n @if (category) {\n <div class=\"p-3 hidden md:block text-2xl font-medium\">{{ category.name }}</div>\n } @else {\n <div class=\"flex flex-row animate-pulse w-full\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n </div>\n }\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 md:w-1/4 aspect-video bg-[--rt-base-background] rounded-lg\"></div>\n <div class=\"w-3/5 md:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n <rolatech-rich-view list>\n @for (item of products; track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['../../', item.id]\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"item.price / 100\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'rolatech-product-info',\n imports: [MatIconModule, RouterModule],\n templateUrl: './product-info.component.html',\n styleUrl: './product-info.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n id: 'rolatech-product-info',\n },\n})\nexport class ProductInfoComponent {\n name = input.required<string>();\n description = input<string>();\n}\n","<div>\n <div class=\"text-2xl font-medium\">{{ name() }}</div>\n <div>\n {{ description() }}\n </div>\n</div>\n","import { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Media } from '@rolatech/angular-common';\nimport { ImagePreviewDialogComponent, ThumbnailComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-product-media',\n imports: [NgClass, ThumbnailComponent],\n templateUrl: './product-media.component.html',\n styleUrl: './product-media.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductMediaComponent {\n dialog = inject(MatDialog);\n media = input<Media[]>([]);\n min = input<boolean>(false);\n mediaIndex = 0;\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n}\n","@if (media()) {\n <div>\n <div class=\"object-cover aspect-video bg-[--rt-raised-background]\">\n <rolatech-thumbnail [src]=\"media()[mediaIndex].url\" size=\"small\" mode=\"full\"></rolatech-thumbnail>\n </div>\n @for (media of media(); track media; let index = $index) {\n <div\n class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer w-28 p-2 bg-[--rt-10-percent-layer]\"\n (click)=\"mediaIndex = index\"\n [ngClass]=\"mediaIndex === index ? 'border border-black' : 'opacity-70'\"\n >\n <rolatech-thumbnail [src]=\"media.url\" mode=\"full\"></rolatech-thumbnail>\n </div>\n }\n </div>\n}\n","import { booleanAttribute, Component, inject, input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, ViewportScroller } from '@angular/common';\nimport { ProductSection } from '../../interfaces';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-product-section',\n imports: [CommonModule, ThumbnailComponent],\n templateUrl: './product-section.component.html',\n styleUrl: './product-section.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductSectionComponent implements OnInit {\n section = input.required<ProductSection>();\n user = input<string>();\n username = input<string>();\n viewportScroller = inject(ViewportScroller);\n row = input(false, { transform: booleanAttribute });\n reverse = input(false, { transform: booleanAttribute });\n\n ngOnInit(): void {}\n\n onClickScroller(id: string) {\n this.viewportScroller.scrollToAnchor(id);\n }\n}\n","@if (section(); as section) {\n @if (row()) {\n <div>\n @if (section.title) {\n <div class=\"py-3 flex items-center gap-3\">\n <span class=\"h-4 w-1 bg-[--rt-brand-color] inline-block\"></span>\n <span class=\"text-lg font-medium py-1\"> {{ section.title }}</span>\n </div>\n }\n @if (section.description) {\n <div>\n {{ section.description }}\n </div>\n }\n @if (section.media) {\n <div class=\"w-80%\">\n @for (item of section.media; track item) {\n <div class=\"py-3\">\n <rolatech-thumbnail\n [src]=\"item.url\"\n size=\"small\"\n mode=\"full\"\n [width]=\"item.width\"\n [height]=\"item.height\"\n ></rolatech-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n } @else {\n <div\n class=\"flex w-full p-3\"\n [ngClass]=\"reverse() ? 'flex-col-reverse md:flex-row-reverse' : 'flex-col-reverse md:flex-row'\"\n >\n <div\n class=\"w-full md:w-1/2 py-3 flex flex-col justify-center items-center gap-3\"\n [ngClass]=\"reverse() ? ' md:ml-16' : 'md:mr-16'\"\n >\n <span class=\"text-3xl font-bold py-1\"> {{ section.title }}</span>\n <span>\n {{ section.description }}\n </span>\n </div>\n <div class=\"w-full md:w-1/2 py-11\">\n @for (item of section.media; track item) {\n <div class=\"py-3\">\n <rolatech-thumbnail\n [src]=\"item.url\"\n size=\"small\"\n mode=\"full\"\n [width]=\"item.width\"\n [height]=\"item.height\"\n ></rolatech-thumbnail>\n </div>\n }\n </div>\n </div>\n }\n}\n","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, RichItemComponent } from '@rolatech/angular-components';\nimport { Product } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-product-item',\n imports: [AngularCommonModule, AngularComponentsModule, RichItemComponent],\n templateUrl: './product-item.component.html',\n styleUrl: './product-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductItemComponent {\n product = input.required<Product>();\n}\n","<rolatech-rich-item\n [routerLink]=\"['./', product().id]\"\n [thumbnail]=\"product().media[0].url + '!w400'\"\n [title]=\"product().name\"\n [subtitle]=\"product().description\"\n [price]=\"product().price / 100\"\n></rolatech-rich-item>\n","import { Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Product } from '../../interfaces';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-product-action',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './product-action.component.html',\n styleUrl: './product-action.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductActionComponent {\n product = input.required<Product>();\n cart = output<Product>();\n checkout = output<Product>();\n deposit = output<Product>();\n displayDeposit = computed(() => {\n return (this.product().deposit / 100).toFixed(2);\n });\n\n onCart(product: Product) {\n this.cart.emit(product);\n }\n onCheckout(product: Product) {\n this.checkout.emit(product);\n }\n onDeposit(product: Product) {\n this.deposit.emit(product);\n }\n}\n","<div class=\"flex gap-3\">\n <a mat-stroked-button class=\"\" (click)=\"onCart(product())\">加入购物车</a>\n @if (product().priceType && product().priceType.toString() === 'PARTIAL') {\n <a mat-flat-button class=\"\" (click)=\"onDeposit(product())\">支付定金 ¥{{ displayDeposit() }}</a>\n } @else {\n <a mat-flat-button class=\"\" (click)=\"onCheckout(product())\">立即购买</a>\n }\n</div>\n","import { Component, computed, effect, input, output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { Product } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-product-pricing',\n imports: [CommonModule, MatButtonModule, MatDivider],\n templateUrl: './product-pricing.component.html',\n styleUrl: './product-pricing.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductPricingComponent {\n product = input.required<Product>();\n // price = computed(() => {\n // return (this.product().price / 100).toFixed(2);\n // });\n price = input.required<number>();\n displayPrice = computed(() => {\n return (this.price() / 100).toFixed(2);\n });\n wish = output<Product>();\n inWishList = input<boolean>(false);\n onWish(product: Product) {\n this.wish.emit(product);\n }\n}\n","<div class=\"py-3\">\n <div class=\"flex justify-between items-center\">\n <div class=\"text-xl font-bold py-3\">¥ {{ displayPrice() }}</div>\n <button mat-icon-button (click)=\"onWish(product())\">\n @if (inWishList()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"m293-203.08 49.62-212.54-164.93-142.84 217.23-18.85L480-777.69l85.08 200.38 217.23 18.85-164.93 142.84L667-203.08 480-315.92 293-203.08Z\"\n />\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\">\n <path\n d=\"m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143Zm-61 83.92 49.62-212.54-164.93-142.84 217.23-18.85L480-777.69l85.08 200.38 217.23 18.85-164.93 142.84L667-203.08 480-315.92 293-203.08ZM480-470Z\"\n />\n </svg>\n }\n </button>\n </div>\n <mat-divider></mat-divider>\n</div>\n","import { Component, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProductOption, ProductOptionValue } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-product-option',\n imports: [CommonModule],\n templateUrl: './product-option.component.html',\n styleUrl: './product-option.component.scss',\n})\nexport class ProductOptionComponent {\n option = input.required<ProductOption>();\n change = output<{ option: ProductOption; value: ProductOptionValue }>();\n selected = model<ProductOption>();\n value = model<ProductOptionValue>();\n\n onChange(value: ProductOptionValue) {\n this.value.set(value);\n this.change.emit({ option: this.option(), value: value });\n }\n}\n","<div class=\"mb-3\">\n <div class=\"text-xl font-bold py-3\">{{ option().name }}</div>\n <div class=\"flex flex-wrap gap-3\">\n @for (item of option().values; track $index) {\n <div\n class=\"w-24 h-12 border border-[--rt-border-color] rounded flex justify-center items-center hover:text-[--rt-text-primary-inverse] hover:bg-[--rt-base-background-inverse] cursor-pointer\"\n (click)=\"onChange(item)\"\n [ngClass]=\"value()?.id === item.id ? 'bg-[--rt-base-background-inverse] text-[--rt-text-primary-inverse]' : ''\"\n >\n {{ item.name }}\n </div>\n }\n </div>\n</div>\n","import { Component, input, OnInit, output } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { Media } from '@rolatech/angular-common';\nimport { ProductSection } from '../../interfaces';\nimport { first } from 'lodash';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\n\n@Component({\n selector: 'rolatech-product-manage-section-item',\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n TextFieldModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatProgressBarModule,\n MatDividerModule,\n ],\n templateUrl: './product-manage-section-item.component.html',\n styleUrl: './product-manage-section-item.component.scss',\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('400ms cubic-bezier(0.25, 0.1, 0.25, 1)')),\n ]),\n ],\n})\nexport class ProductManageSectionItemComponent implements OnInit {\n isUploading = input<boolean>();\n section = input.required<ProductSection>();\n actions = input<boolean>(false);\n selectMedia = input<any>();\n upload = output<{ section: ProductSection; data: FormData | null }>();\n delete = output<ProductSection>();\n save = output<ProductSection>();\n deleteMedia = output<{ section: ProductSection; media: Media }>();\n selectedImg!: Media | any;\n expanded = false;\n constructor() {}\n\n ngOnInit(): void {\n this.selectedImg = this.section().media ? this.section().media[0] : null;\n }\n onUpload(data: any) {\n this.upload.emit({ section: this.section(), data });\n }\n onMediaItemClick(image: Media) {\n this.selectedImg = image;\n }\n\n select(item: any) {\n this.selectedImg = item;\n }\n deleteImage() {}\n onSave(section: ProductSection) {\n this.save.emit(section);\n }\n onDelete(section: ProductSection) {\n this.delete.emit(section);\n }\n onDeleteMedia(media: Media) {\n this.deleteMedia.emit({ section: this.section(), media });\n this.selectedImg = this.section().media ? first(this.section().media) : null;\n }\n}\n","<div class=\"px-3\">\n <div\n class=\"h-14 py-3 flex items-center justify-between cursor-pointer\"\n (click)=\"expanded = !expanded; $event.stopPropagation()\"\n >\n <div class=\"flex\">\n <div class=\"w-32 line-clamp-1\">{{ section().title }}</div>\n <div class=\"line-clamp-1\">{{ section().description }}</div>\n </div>\n <div>\n <button mat-icon-button aria-label=\"expand row\" (click)=\"expanded = !expanded; $event.stopPropagation()\">\n @if (expanded) {\n <mat-icon>keyboard_arrow_up</mat-icon>\n } @else {\n <mat-icon>keyboard_arrow_down</mat-icon>\n }\n </button>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 w-full overflow-hidden\" [@detailExpand]=\"expanded ? 'expanded' : 'collapsed'\">\n <div class=\"flex flex-col lg:flex-row\">\n <div class=\"flex flex-col grow\">\n <mat-form-field appearance=\"fill\">\n <mat-label>标题</mat-label>\n <input matInput placeholder=\"标题\" [(ngModel)]=\"section().title\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" [hideRequiredMarker]=\"true\">\n <mat-label>描述</mat-label>\n <textarea\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n placeholder=\"描述\"\n [(ngModel)]=\"section().description\"\n ></textarea>\n </mat-form-field>\n </div>\n <!-- media -->\n <div class=\"lg:basis-1/2 px-0 lg:px-3\">\n @if (selectedImg) {\n <div class=\"flex flex-row justify-center relative aspect-video\">\n <img class=\"object-contain w-full\" [src]=\"selectedImg.url\" [alt]=\"selectedImg.alt\" />\n <div class=\"absolute z-30 right-0\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"beforeMenu\"\n class=\"ml-auto focus:outline-none hover:bg-[--rt-base-background] p-1\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #beforeMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"onDeleteMedia(selectedImg)\">\n <span>删除</span>\n </button>\n </mat-menu>\n </div>\n </div>\n }\n\n <!-- media -->\n <div>\n <div class=\"flex flex-row flex-wrap cursor-pointer relative box-border\" fxLayout=\"row\">\n <div class=\"progress-bar\">\n @if (section().isUploading) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n @for (media of section().media; track media) {\n <div class=\"media-list-item\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n </div>\n }\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <div class=\"add-button\">\n <div (click)=\"fileInput.click()\" class=\"tile-media flex justify-center items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(section())\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(section())\">保存</button>\n </div>\n }\n </div>\n</div>\n\n<mat-divider></mat-divider>\n","import { Component, DoCheck, model, output } from '@angular/core';\nimport { ENTER, COMMA } from '@angular/cdk/keycodes';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { ProductOption } from '../../interfaces';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-product-manage-option-add',\n imports: [MatChipsModule, MatButtonModule, MatFormFieldModule, AngularCommonModule, AngularComponentsModule, MatIconModule],\n templateUrl: './product-manage-option-add.component.html',\n styleUrl: './product-manage-option-add.component.scss',\n})\nexport class ProductManageOptionAddComponent implements DoCheck {\n option: ProductOption = {\n id: '',\n name: '',\n values: [],\n };\n addOnBlur = true;\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\n cancel = output();\n save = output<ProductOption>();\n action = true;\n output = output<any>();\n\n onCancel() {\n this.cancel.emit();\n }\n onSave() {\n this.save.emit(this.option);\n }\n\n addOptionValues(event: MatChipInputEvent) {\n const value = (event.value || '').trim();\n if (value) {\n this.option.values.push({ name: value });\n }\n event.chipInput!.clear();\n }\n removeValue(value: any) {\n if (value) {\n const index = this.option.values.findIndex((item: any) => item.name === value.name);\n this.option.values?.splice(index!, 1);\n }\n }\n ngDoCheck(): void {\n this.output.emit(this.option);\n }\n}\n","<div class=\"flex flex-col\">\n <div class=\"p-1\">选项</div>\n <form>\n <mat-form-field appearance=\"fill\">\n <input matInput placeholder=\"名称\" type=\"text\" [(ngModel)]=\"option.name\" [ngModelOptions]=\"{ standalone: true }\" />\n </mat-form-field>\n <mat-form-field>\n <mat-chip-grid #chipGrid aria-label=\"Enter values\">\n @for (value of option.values; track value) {\n <mat-chip-row\n (removed)=\"removeValue(value)\"\n [editable]=\"true\"\n [aria-description]=\"'press enter to edit ' + value.name\"\n >\n {{ value.name }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + value.name\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n <input\n placeholder=\"选项值\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"addOptionValues($event)\"\n />\n </mat-chip-grid>\n </mat-form-field>\n </form>\n</div>\n@if (action) {\n <div class=\"flex items-center justify-end\">\n <button mat-button (click)=\"onCancel()\">取消</button>\n <button mat-button color=\"primary\" (click)=\"onSave()\">保存</button>\n </div>\n}\n","import { Component, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { ProductOption } from '../../interfaces';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\n@Component({\n selector: 'rolatech-product-manage-option-item',\n imports: [\n MatChipsModule,\n MatButtonModule,\n MatFormFieldModule,\n AngularCommonModule,\n AngularComponentsModule,\n MatIconModule,\n OptionsFormatPipe,\n ],\n templateUrl: './product-manage-option-item.component.html',\n styleUrl: './product-manage-option-item.component.scss',\n})\nexport class ProductManageOptionItemComponent {\n option = input.required<ProductOption>();\n addOnBlur = true;\n delete = output<ProductOption>();\n save = output<ProductOption>();\n edit = output<ProductOption>();\n\n onDelete() {\n this.delete.emit(this.option());\n }\n onSave() {\n this.save.emit(this.option());\n }\n onEdit() {\n this.edit.emit(this.option());\n }\n}\n","<div class=\"group flex justify-between items-center h-14 hover:bg-[--rt-raised-background] cursor-pointer px-2\">\n <div class=\"flex\">\n <div class=\"min-w-[100px]\">{{ option().name }}</div>\n <div class=\"overflow-hidden line-clamp-1\">\n {{ option().values! | options }}\n </div>\n </div>\n <div class=\"flex justify-end max-w-24 w-24 invisible group-hover:visible\">\n <button mat-icon-button (click)=\"onEdit()\">\n <mat-icon>edit</mat-icon>\n </button>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n</div>\n<mat-divider></mat-divider>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ProductOption, ProductOptionValue, ProductVariant } from '../../../interfaces';\n\n@Pipe({\n name: 'selected',\n})\nexport class SelectedPipe implements PipeTransform {\n transform(variant: ProductVariant, option: ProductOption): any {\n const findedOption = variant.options.find((item) => item.option.id === option.id);\n return findedOption?.value;\n }\n}\n","import { Component, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-product-owner-renderer',\n imports: [AngularCommonModule, MatIconModule],\n templateUrl: './product-owner-renderer.component.html',\n styleUrl: './product-owner-renderer.component.scss',\n})\nexport class ProductOwnerRendererComponent {\n name = input<string>();\n avatar = input<string>();\n username = input<string>();\n}\n","<div class=\"flex flex-row items-center py-3\">\n <div class=\"flex mr-3 gap-2 items-center\">\n @if (avatar()) {\n <div class=\"cursor-pointer\" [routerLink]=\"['/', '@' + username()]\">\n <img [src]=\"avatar()\" class=\"w-11 h-11 rounded-full\" alt />\n </div>\n } @else {\n <div class=\"w-11 h-11 rounded-full bg-[--rt-brand-color]\"></div>\n }\n <div class=\"flex items-center text-lg font-bold cursor-pointer\">\n <a [routerLink]=\"['/', '@' + username()]\">\n <span>{{ name() }}</span>\n </a>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n </div>\n</div>\n","import { Component, computed, effect, inject, OnInit, signal, Signal } from '@angular/core';\nimport {\n ProductActionComponent,\n ProductInfoComponent,\n ProductMediaComponent,\n ProductOptionComponent,\n ProductPricingComponent,\n} from '../../../components';\nimport { AngularComponentsModule, BaseComponent, ContainerComponent } from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { CommentsComponent } from '@rolatech/angular-comment';\nimport { Product, ProductOption, ProductVariant, ProductVariantOption } from '../../../interfaces';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { ProductSectionComponent } from '../../../components/product-section/product-section.component';\nimport { SelectedPipe } from './selected.pipe';\nimport _ from 'lodash';\nimport { ProductOwnerRendererComponent } from '../../../components/product-owner-renderer/product-owner-renderer.component';\nimport { CartEventType, CartService, ProductService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-product-details',\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n ContainerComponent,\n ProductInfoComponent,\n ProductMediaComponent,\n ProductPricingComponent,\n ProductSectionComponent,\n ProductActionComponent,\n CommentsComponent,\n ProductOptionComponent,\n ProductOwnerRendererComponent,\n SelectedPipe,\n ],\n templateUrl: './product-details.component.html',\n styleUrl: './product-details.component.scss',\n})\nexport class ProductDetailsComponent extends BaseComponent implements OnInit {\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n productService = inject(ProductService);\n cartService = inject(CartService);\n authenticated = this.authService.authenticated;\n product!: Product;\n fullname = '';\n username = '';\n user: any;\n inWishList = false;\n purchased = false;\n selectedOption!: ProductOption;\n variants: ProductVariant[] = [];\n selectedVariant!: ProductVariant;\n variantOption = signal<ProductVariantOption | undefined>(undefined);\n variantOptionChanged = computed(() => {\n return this.variantOption();\n });\n results: any[] = [];\n constructor() {\n super();\n effect(() => {\n if (this.authenticated()) {\n this.findWishlistBy();\n }\n });\n }\n ngOnInit(): void {\n this.getProduct();\n }\n getProduct() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n if (this.product.variants) {\n this.variants = this.product.variants;\n this.selectedVariant = this.variants[0];\n this.selectedVariant.options.forEach((item) => {\n this.results.push([item.option.id, item.value.id]);\n });\n }\n\n this.findUserBaseInfo(this.product.userId);\n this.titleService.setTitle(`${this.product.name}`);\n },\n });\n }\n private findVariant(optionId: string, valueId: string): ProductVariant | undefined {\n return this.variants.find((item) => {\n const exist = item.options.some((i: ProductVariantOption) => i.option.id === optionId && i.value.id === valueId);\n if (exist) {\n return item;\n }\n return null;\n });\n }\n findUserBaseInfo(userId: string) {\n this.authUserService.getPublicUserInfo(userId).subscribe({\n next: (res) => {\n this.fullname = res.name;\n this.username = res.username;\n this.user = res;\n },\n });\n }\n private findWishlistBy() {\n this.productService.findWishlistBy(this.id).subscribe({\n next: (res: any) => {\n this.inWishList = res.data;\n },\n });\n }\n onWish(e: any) {\n if (this.authenticated()) {\n if (this.inWishList) {\n this.removeFromWishlist();\n } else {\n this.addToWishlist();\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n }\n onCart(e: any) {\n const data = { productId: this.id, quantity: 1 };\n if (this.selectedVariant) {\n data['variantId'] = this.selectedVariant.id;\n }\n this.cartService.create(data).subscribe({\n next: (res) => {\n this.cartService.cartEvent.emit(CartEventType.CartAdd);\n },\n });\n }\n private removeFromWishlist() {\n this.productService.removeFromWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = false;\n },\n });\n }\n private addToWishlist() {\n this.productService.addToWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = true;\n },\n });\n }\n checkout(e: any) {\n if (this.authenticated()) {\n if (this.selectedVariant) {\n // this.router.navigateByUrl(`/cart/checkout/products/${this.id}?variant-id=${this.selectedVariant.id}`);\n // this.router.navigate([`/cart/checkout/products/${this.id}`], { queryParams: { variant: this.selectedVariant.id } });\n this.router.navigate([`/cart/checkout/products/${this.id}/variants/${this.selectedVariant.id}`]);\n } else {\n this.router.navigateByUrl(`/cart/checkout/products/${this.id}`);\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n }\n\n onOptionChange(e) {\n const criteria: any = [];\n this.selectedVariant.options.map((item) => {\n criteria.push({\n optionId: item.option.id === e.option.id ? e.option.id : item.option.id,\n valueId: item.option.id === e.option.id ? e.value.id : item.value.id,\n });\n });\n\n // const criteria = [\n // { optionId: '249008855294545920', valueId: '249008855298740224' }, // color: red\n // { optionId: '248661715955355648', valueId: '249001130061860865' }, // size: 256GB\n // ];\n\n // Function to check if a variant matches all the criteria\n const matchesAllCriteria = (variant, criteria) => {\n return _.every(criteria, (criterion) => {\n return _.some(variant.options, (o) => o.option.id === criterion.optionId && o.value.id === criterion.valueId);\n });\n };\n // Function to update the criteria based on a matching variant\n const updateCriteriaFromVariant = (variant) => {\n return _.map(variant.options, (o) => ({\n optionId: o.option.id,\n valueId: o.value.id,\n }));\n };\n\n // Find the variant that matches all the criteria\n const matchingVariant = _.find(this.variants, (variant) => matchesAllCriteria(variant, criteria));\n this.selectedVariant = matchingVariant!;\n // const updatedCriteria = matchingVariant ? updateCriteriaFromVariant(matchingVariant) : [];\n }\n}\n","@if (product) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row w-full\">\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-media [media]=\"product.media\"></rolatech-product-media>\n </div>\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-info [name]=\"product.name\" [description]=\"product.description\"> </rolatech-product-info>\n @for (option of product.options; track $index) {\n <rolatech-product-option\n [option]=\"option\"\n [value]=\"selectedVariant | selected: option\"\n (change)=\"onOptionChange($event)\"\n ></rolatech-product-option>\n }\n <rolatech-product-pricing\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n [product]=\"product\"\n [price]=\"selectedVariant ? selectedVariant.price : product.price\"\n ></rolatech-product-pricing>\n <rolatech-product-action\n [product]=\"product\"\n (checkout)=\"checkout($event)\"\n (deposit)=\"checkout($event)\"\n (cart)=\"onCart($event)\"\n ></rolatech-product-action>\n </div>\n </div>\n <div class=\"py-3\">\n <mat-divider></mat-divider>\n <rolatech-product-owner-renderer\n [name]=\"fullname\"\n [avatar]=\"user?.avatar\"\n [username]=\"username\"\n ></rolatech-product-owner-renderer>\n <mat-divider></mat-divider>\n </div>\n <div class=\"flex flex-col\">\n @for (section of product.sections; track $index) {\n <rolatech-product-section [section]=\"section\" [reverse]=\"$index % 2 !== 0\"></rolatech-product-section>\n }\n\n <rolatech-comments [itemId]=\"product.id\"></rolatech-comments>\n </div>\n </rolatech-container>\n}\n","import { Routes } from '@angular/router';\nimport { ProductLayoutComponent } from './product-layout/product-layout.component';\nimport { ProductCategoryComponent } from './product-category/product-category.component';\nimport { ProductDetailsComponent } from './product-details/product-details.component';\nexport const productRoutes: Routes = [\n {\n path: '',\n component: ProductLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./product-index/product-index.component').then((x) => x.ProductIndexComponent),\n },\n {\n path: 'categories/:id',\n component: ProductCategoryComponent,\n },\n ],\n },\n {\n path: ':id',\n component: ProductDetailsComponent,\n },\n];\n","import { ProductCategory } from './category';\n\nexport interface Product {\n id: string;\n name: string;\n description: string;\n media: ProductMedia[];\n status: ProductStatus | string;\n type: ProductType | string;\n scope: ProductScope | string;\n categories: ProductCategory[];\n tags: ProductTag[];\n sections: ProductSection[];\n options: ProductOption[];\n variants?: ProductVariant[];\n price: number;\n deposit: number;\n priceType: ProductPriceType;\n userId: string;\n createdAt: string;\n updatedAt: string;\n}\nexport enum ProductPriceType {\n FIXED = '固定价格',\n PARTIAL = '支付定金',\n VARIED = '多变的',\n}\nexport interface ProductSection {\n id: string;\n title: string;\n description: string;\n media: ProductMedia[];\n isUploading?: boolean;\n}\n\nexport interface ProductVariant {\n id: string;\n title: string;\n price: number;\n sku: string;\n options: ProductVariantOption[];\n media: ProductVariantMedia[];\n isUploading?: boolean;\n status: ProductInventoryStatus | string;\n}\nexport interface ProductVariantMedia {\n url: string;\n alt: string;\n uploading?: boolean;\n}\nexport interface ProductVariantOption {\n option: ProductOption;\n value: ProductOptionValue;\n}\nexport interface ProductTag {\n id: string;\n name: string;\n}\nexport enum ProductStatus {\n DRAFT = <any>'草稿',\n AWAITING = <any>'审核中',\n PENDING = <any>'审核中',\n ACCEPTED = <any>'已通过',\n ACTIVE = <any>'已发布',\n DELETED = <any>'已删除',\n ARCHIVED = <any>'已下架',\n}\nexport enum ProductType {\n DIGITAL = '虚拟商品',\n PHYSICAL = '实体商品',\n SERVICE = '服务',\n OTHER = '其他',\n}\nexport enum ProductInventoryStatus {\n IN_STOCK = '有货',\n LOW_STOCK = '库存不足',\n OUT_OF_STOCK = '售罄',\n DISCONTINUED = '已停产',\n}\nexport enum ProductScope {\n WEB = <any>'网站',\n GLOBAL = <any>'全域',\n}\nexport interface ProductMedia {\n id: string;\n url: string;\n alt: string;\n width: number;\n height: number;\n uuid: string;\n selected: boolean;\n}\n\nexport interface ProductOption {\n id: string;\n name: string;\n values: ProductOptionValue[];\n}\nexport interface ProductOptionValue {\n id?: string;\n name: string;\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';\nimport { Product, ProductStatus } from '../../../interfaces/product';\nimport { ProductService } from '@rolatech/angular-services';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-product-manage-layout',\n imports: [RouterLink, RouterLinkActive, MatButtonModule, RouterOutlet],\n templateUrl: './product-manage-layout.component.html',\n styleUrl: './product-manage-layout.component.scss',\n})\nexport class ProductManageLayoutComponent implements OnInit {\n id: string;\n product!: Product;\n submitted = false;\n accepted = false;\n isDraft = false;\n route = inject(ActivatedRoute);\n productService = inject(ProductService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n constructor() {\n this.id = this.route.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n },\n });\n }\n updateStatus() {\n this.isDraft = this.product.status.toString() === 'DRAFT' || this.product.status.toString() === 'PENDING';\n this.accepted = this.product.status.toString() === 'ACCEPTED';\n }\n publish() {\n this.productService.publish(this.id).subscribe({\n next: (res) => {\n this.snackBar.open('发布成功');\n this.product.status = ProductStatus['已发布' as keyof typeof ProductStatus];\n this.updateStatus();\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 md:px-0 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">商品信息</div>\n <a routerLink=\"./info\" routerLinkActive=\"manage-active\" class=\"p-2\">基本信息</a>\n <a routerLink=\"./media\" routerLinkActive=\"manage-active\" class=\"p-2\">图片</a>\n <a routerLink=\"./sections\" routerLinkActive=\"manage-active\" class=\"p-2\">详情</a>\n <a routerLink=\"./options\" routerLinkActive=\"manage-active\" class=\"p-2\">选项</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">商品设置</div>\n <a routerLink=\"./variants\" routerLinkActive=\"manage-active\" class=\"p-2\">价格策略</a>\n <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">库存设置</a>\n <a routerLink=\"./schedule\" routerLinkActive=\"manage-active\" class=\"p-2\">发布设置</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">其他信息</div>\n <a routerLink=\"./pricing\" routerLinkActive=\"manage-active\" class=\"p-2\">价格</a>\n </div>\n\n @if (isDraft) {\n <div class=\"md:mt-6 md:ml-2\">\n <button mat-flat-button color=\"primary\" (click)=\"publish()\">发布商品</button>\n </div>\n }\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-content',\n imports: [CommonModule],\n templateUrl: './product-manage-content.component.html',\n styleUrl: './product-manage-content.component.scss',\n})\nexport class ProductManageContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject, model, OnInit } from '@angular/core';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductCategoryService, ProductService } from '@rolatech/angular-services';\nimport { Product, ProductCategory, ProductPriceType, ProductStatus, ProductType } from '../../../interfaces';\nimport { DecimalDirective } from '@rolatech/angular-common';\nimport { KeyValuePipe } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-info',\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n ToolbarComponent,\n ProductManageContentComponent,\n DecimalDirective,\n MatSelectModule,\n KeyValuePipe,\n ],\n templateUrl: './product-manage-info.component.html',\n styleUrl: './product-manage-info.component.scss',\n})\nexport class ProductManageInfoComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n categoryService = inject(ProductCategoryService);\n product!: Product;\n status = ProductStatus;\n categories!: ProductCategory[];\n selectedCategoyIds!: string[];\n productType = ProductType;\n priceType = ProductPriceType;\n price = model<string>();\n deposit = model<string>('');\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n find() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n const price = (this.product.price / 100).toFixed(2);\n this.price.set(price);\n\n if (this.product.priceType.toString() === 'PARTIAL') {\n const deposit = (this.product.deposit / 100).toFixed(2);\n this.deposit.set(deposit);\n }\n },\n });\n }\n typeCompareFn(t1: any, t2: any) {\n return t1 === t2;\n }\n priceTypeCompareFn(t1: any, t2: any) {\n return t1 === t2;\n }\n compareFn(o1: ProductCategory, o2: ProductCategory) {\n return o1.id === o2?.id;\n }\n onTypeChange(event: MatSelectChange) {\n this.product.type = Object.keys(this.productType).find((key) => this.productType[key] === event.value)!;\n }\n onCategoryChange(event: any) {\n this.selectedCategoyIds = event.value;\n }\n update() {\n const { name, description, categories, priceType } = this.product;\n const data = {\n name,\n description,\n categories,\n price: Number(this.price()) * 100,\n type: this.product.type,\n priceType,\n deposit: Number(this.deposit()) * 100,\n };\n this.productService.update(this.id, data).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"基本信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n @if (product) {\n <div class=\"flex flex-col\">\n <form #productForm=\"ngForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"product.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"product.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" required>\n <mat-label>类型</mat-label>\n <mat-select\n name=\"type\"\n [compareWith]=\"typeCompareFn\"\n (selectionChange)=\"onTypeChange($event)\"\n [(ngModel)]=\"product.type\"\n >\n @for (type of productType | keyvalue; track type) {\n <mat-option [value]=\"type.key\">\n {{ type.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" ngModelGroup=\"categories\" required>\n <mat-label>分类</mat-label>\n <mat-select\n multiple\n name=\"id\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"product.categories\"\n #select=\"matSelect\"\n (selectionChange)=\"onCategoryChange($event)\"\n >\n @for (item of categories; track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" required>\n <mat-label>价格类型</mat-label>\n <mat-select name=\"priceType\" [compareWith]=\"priceTypeCompareFn\" [(ngModel)]=\"product.priceType\">\n @for (type of priceType | keyvalue; track type) {\n <mat-option [value]=\"type.key\">\n {{ type.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 价格 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"price\" name=\"price\" required rolatechDecimal />\n </mat-form-field>\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <mat-form-field appearance=\"fill\">\n <mat-label> 定金 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"deposit\" name=\"deposit\" required rolatechDecimal />\n </mat-form-field>\n }\n </form>\n </div>\n <div>\n <button mat-flat-button type=\"primary\" (click)=\"update()\">保存</button>\n </div>\n }\n</rolatech-product-manage-content>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToolbarComponent, ConfirmationDialogComponent } from '@rolatech/angular-components';\nimport { findIndex, remove } from 'lodash';\nimport { ProductSection, ProductStatus, ProductType } from '../../../interfaces';\nimport { ProductService } from '@rolatech/angular-services';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { ProductManageSectionItemComponent } from '../../../components';\n\n@Component({\n selector: 'rolatech-product-manage-sections',\n imports: [ProductManageSectionItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, ProductManageContentComponent],\n templateUrl: './product-manage-sections.component.html',\n styleUrl: './product-manage-sections.component.scss',\n})\nexport class ProductManageSectionsComponent implements OnInit {\n route = inject(ActivatedRoute);\n productService = inject(ProductService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n\n id: string;\n isLoading = false;\n isUploading = false;\n sections: ProductSection[] = [];\n status = ProductStatus;\n productType: any = ProductType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.productService.findSections(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.sections = res.data;\n }\n },\n });\n }\n addSection() {\n if (!this.sections) {\n this.sections = [];\n }\n this.productService\n .addSection(this.id, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const section = res.data;\n this.sections.push({\n id: section.id,\n title: '无标题',\n description: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onUploadSectionMedia(event: any) {\n const section = event.section;\n const sectionId = section.id;\n const file = event.data.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (!section.media) {\n section.media = [];\n }\n (section.media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n section.isUploading = true;\n const formData = new FormData();\n formData.append('file', file);\n this.productService.uploadSectionMedia(sectionId, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n section.isUploading = false;\n delete res.data.productSection;\n section.media[section.media.length - 1].id = res.data.id;\n section.media[section.media.length - 1].url = res.data.url;\n },\n error: (e) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onDeleteSectionMedia(event: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除图片',\n message: `确定删除吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const section = event.section;\n const mediaId = event.media.id;\n remove(section.media, {\n id: mediaId,\n });\n this.productService.deleteSectionMedia(section.id, mediaId).subscribe({\n next: (res: any) => {\n // remove(section.media, {\n // id: mediaId,\n // });\n },\n });\n }\n });\n }\n onSectionSave(section: ProductSection) {\n delete section.isUploading;\n this.productService.updateSection(section.id, section).subscribe({\n next: (res: any) => {\n this.snackBar.open('保存成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onSectionDelete(section: ProductSection) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除详情',\n message: '确定删除此详情吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.deleteSection(section.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.data);\n remove(this.sections, {\n id: section.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"详情\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (section of sections; track section) {\n <rolatech-product-manage-section-item\n [section]=\"section\"\n (upload)=\"onUploadSectionMedia($event)\"\n (deleteMedia)=\"onDeleteSectionMedia($event)\"\n (save)=\"onSectionSave($event)\"\n (delete)=\"onSectionDelete($event)\"\n [actions]=\"true\"\n ></rolatech-product-manage-section-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addSection()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>添加详情</span>\n </button>\n </div>\n</rolatech-product-manage-content>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { Media } from '@rolatech/angular-common';\nimport {\n ConfirmationDialogComponent,\n ImagePreviewDialogComponent,\n MediaListComponent,\n MediaListItemComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { findLastIndex } from 'lodash';\nimport { ProductService } from '@rolatech/angular-services';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { ProductStatus } from '../../../interfaces';\n\nconst SIZE = 10 * 1024 * 1024; // file slice size 10MB\n\n@Component({\n selector: 'rolatech-product-manage-media',\n imports: [MediaListComponent, MediaListItemComponent, ToolbarComponent, ProductManageContentComponent],\n templateUrl: './product-manage-media.component.html',\n styleUrl: './product-manage-media.component.scss',\n})\nexport class ProductManageMediaComponent implements OnInit {\n route = inject(ActivatedRoute);\n productService = inject(ProductService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n id: string;\n isUploading = false;\n isLoading = false;\n media: Media[] = [];\n status = ProductStatus;\n // productType: any = ProductType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.media = res.data.media || [];\n },\n });\n }\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n private createFileChunk(file: any, size = SIZE) {\n const fileChunkList: any = [];\n let cur = 0;\n while (cur < file.size) {\n fileChunkList.push({ file: file.slice(cur, cur + size) });\n cur += size;\n }\n return fileChunkList;\n }\n\n onUploadMedia2(event: any) {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.onload = (e) => {};\n\n const fileChunkList = this.createFileChunk(file);\n fileChunkList.forEach((item) => {});\n }\n onUploadMedia(event: any) {\n const file = event.target.files[0];\n // 5MB * 1024 * 1024 = 5242880\n // if (file?.size > 5242880) {\n // this.snackBar.open('尺寸过大, 请修改后上传');\n // this.isUploading = false;\n // return;\n // }\n\n if (file) {\n const reader = new FileReader();\n const formData = new FormData();\n formData.append('file', file);\n\n reader.readAsDataURL(file);\n reader.onload = () => {\n const img: any = new Image();\n img.onload = () => {\n this.media.push({\n url: img.src,\n alt: 'upload image',\n width: img.width,\n height: img.height,\n });\n\n this.isUploading = true;\n };\n img.src = reader.result; // This is the data URL\n };\n this.productService.uploadMedia(this.id, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n const index = findLastIndex(this.media);\n // Replace item at index using native splice\n this.media.splice(index, 1, res.data);\n },\n error: (e: any) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onMediaDelete(item: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除图片',\n message: '确定删除这张商品图片吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.deleteMedia(this.id, item.id).subscribe({\n next: (res) => {\n this.media = this.media.filter((m) => m.id !== item.id);\n this.snackBar.open('删除成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"图片信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div>\n <p>*图片文件大小限制在5MB以下*</p>\n <rolatech-media-list (upload)=\"onUploadMedia($event)\" [isUploading]=\"isUploading\">\n @for (item of media; track item; let i = $index) {\n <rolatech-media-list-item\n [media]=\"item\"\n (mediaItemClick)=\"onImageClick(i)\"\n (deleteMedia)=\"onMediaDelete(item)\"\n ></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n</rolatech-product-manage-content>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-pricing',\n imports: [CommonModule],\n templateUrl: './product-manage-pricing.component.html',\n styleUrl: './product-manage-pricing.component.scss',\n})\nexport class ProductManagePricingComponent {}\n","<p>product-manage-pricing works!</p>\n","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Product, ProductStatus } from '../../../interfaces';\nimport { ImagePlaceholderComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIcon } from '@angular/material/icon';\nimport { FixedPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-product-manage-item',\n imports: [CommonModule, ThumbnailComponent, ImagePlaceholderComponent, MatButtonModule, MatMenuModule, MatIcon, FixedPipe],\n templateUrl: './product-manage-item.component.html',\n styleUrl: './product-manage-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProductManageItemComponent {\n product = input.required<Product>();\n thumbnail = input();\n status = ProductStatus;\n publish() {}\n archived() {}\n delete() {}\n}\n","<div class=\"flex p-3 items-center hover:bg-[--rt-raised-background] cursor-pointer\">\n <div>\n @if (product().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]=\"product().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>\n <div class=\"px-3\">\n {{ product().name }}\n </div>\n <div class=\"flex-1\"></div>\n <div class=\"px-3 min-w-28 w-28\">\n {{ status[product().status] }}\n </div>\n <div class=\"px-3 min-w-28 w-28\">¥{{ product().price | fixed }}</div>\n <div class=\"pr-4\">\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n aria-label=\"Example icon-button with a menu\"\n (click)=\"$event.stopPropagation()\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n @if (product().status === 'DRAFT') {\n <button mat-menu-item (click)=\"publish()\">\n <span> 上架 </span>\n </button>\n }\n @if (product().status === 'STARTED') {\n <button mat-menu-item (click)=\"archived()\">\n <span> 结束 </span>\n </button>\n }\n @if (product().status !== 'ACTIVE') {\n <button mat-menu-item (click)=\"delete()\">\n <span> 删除 </span>\n </button>\n }\n </mat-menu>\n </div>\n</div>\n<div class=\"h-[1px] px-3 bg-[--rt-raised-background]\"></div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-product-manage-item-header',\n imports: [CommonModule],\n templateUrl: './product-manage-item-header.component.html',\n styleUrl: './product-manage-item-header.component.scss',\n})\nexport class ProductManageItemHeaderComponent {}\n","<div class=\"flex h-11 items-center\">\n <div class=\"text-md font-bold px-3 min-w-[320px]\">商品</div>\n <div class=\"flex-1\"></div>\n <div class=\"text-md font-bold px-3 w-28\">状态</div>\n <div class=\"text-md font-bold px-3 w-28\">价格</div>\n <div class=\"text-md px-3 w-16\"></div>\n</div>\n<div class=\"h-[1px] px-3 bg-[--rt-raised-background]\"></div>\n","import { Component, inject, OnInit, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule, MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTableModule, MatTableDataSource } from '@angular/material/table';\nimport { RouterLink } from '@angular/router';\nimport { ToolbarComponent, SpinnerComponent, ConfirmationDialogComponent } from '@rolatech/angular-components';\nimport { ProductService } from '@rolatech/angular-services';\nimport { Product, ProductStatus } from '../../../interfaces';\nimport { ProductManageItemComponent } from '../product-manage-item/product-manage-item.component';\nimport { ProductManageItemHeaderComponent } from '../product-manage-item-header/product-manage-item-header.component';\n\n@Component({\n selector: 'rolatech-product-manage-index',\n imports: [\n MatButtonModule,\n RouterLink,\n MatIconModule,\n MatTableModule,\n MatMenuModule,\n MatPaginatorModule,\n ToolbarComponent,\n SpinnerComponent,\n ProductManageItemComponent,\n ProductManageItemHeaderComponent,\n ],\n templateUrl: './product-manage-index.component.html',\n styleUrl: './product-manage-index.component.scss',\n})\nexport class ProductManageIndexComponent implements OnInit {\n paginator = viewChild(MatPaginator);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n productService = inject(ProductService);\n isLoading = false;\n isSearch = false;\n pageEvent!: PageEvent;\n length = 100;\n pageSize = 15;\n pageSizeOptions: number[] = [5, 10, 25, 100];\n dataSource = new MatTableDataSource<any>();\n products: Product[] = [];\n displayedColumns: string[] = ['name', 'status', 'createdAt', 'actions'];\n orderOptions = [\n {\n key: 'createdAt',\n value: '创建时间',\n icon: 'arrow_upward',\n sort: 'asc',\n },\n {\n key: 'createdAt',\n value: '创建时间',\n icon: 'arrow_downward',\n sort: 'desc',\n },\n {\n key: 'status',\n value: '状态',\n icon: 'arrow_upward',\n sort: 'asc',\n },\n {\n key: 'status',\n value: '状态',\n icon: 'arrow_downward',\n sort: 'desc',\n },\n ];\n status: any = ProductStatus;\n orderString = 'createdAt desc';\n classrooms: any;\n\n ngOnInit(): void {\n this.find(null);\n }\n find(event?: PageEvent | null): any {\n this.isLoading = true;\n const page = event ? event.pageIndex + 1 : 1;\n const limit = event ? event.pageSize : 15;\n const sort = this.orderString;\n const options = {\n page,\n limit,\n sort,\n };\n this.productService.me(options).subscribe({\n next: (res: any) => {\n this.products = res.data;\n // this.dataSource.data = this.products;\n this.length = res.meta.pagination.count;\n this.isLoading = false;\n },\n error: (e) => {\n this.isLoading = false;\n this.snackBar.open(e.message);\n },\n });\n }\n\n archived(product: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '商品下架',\n message: `确定下架 ${product.name} 吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.archived(product.id).subscribe({\n next: (res) => {\n const index = this.products.findIndex((item) => item.id === product.id);\n const status = ProductStatus[ProductStatus.ARCHIVED];\n this.products[index].status = status;\n this.snackBar.open('结束成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n delete(product: Product) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除商品',\n message: `确定删除 ${product.name} 吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.delete(product.id).subscribe({\n next: (res) => {\n const index = this.products.findIndex((item) => item.id === product.id);\n this.products.splice(index, 1);\n this.dataSource.data = this.products;\n this.length--;\n this.snackBar.open('删除成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-toolbar title=\"商品\">\n <div class=\"flex items-center gap-2\">\n <button mat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n 创建商品\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <rolatech-product-manage-item-header></rolatech-product-manage-item-header>\n @for (item of products; track $index) {\n <rolatech-product-manage-item [product]=\"item\" routerLink=\"./{{ item.id }}/manage/info\"></rolatech-product-manage-item>\n }\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = find($event)\"\n hidePageSize\n showFirstLastButtons\n >\n </mat-paginator>\n}\n","import { Component, inject } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductService } from '@rolatech/angular-services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'rolatech-product-manage-create',\n imports: [\n ToolbarComponent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n ],\n templateUrl: './product-manage-create.component.html',\n styleUrl: './product-manage-create.component.scss',\n})\nexport class ProductManageCreateComponent {\n private productService = inject(ProductService);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private snackBar = inject(MatSnackBar);\n product: any = {};\n create() {\n const data = {\n ...this.product,\n // classroom: this.selectedClassroom,\n };\n this.productService.create(data).subscribe({\n next: (res) => {\n this.router.navigate([`../${res.data.id}/manage/info`], {\n relativeTo: this.route,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n}\n","<rolatech-toolbar title=\"创建商品\" link=\"../\"> </rolatech-toolbar>\n<div class=\"p-3\">\n <section>\n <form #productForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"product.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 商品描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"product.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n </div>\n </form>\n </section>\n <div class=\"mt-3\">\n <button mat-flat-button [disabled]=\"!productForm.valid\" class=\"w-28\" (click)=\"create()\">创建</button>\n </div>\n</div>\n","import { Component, inject, OnInit, signal } from '@angular/core';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport {\n AngularComponentsModule,\n BaseComponent,\n ConfirmationDialogComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { ProductService } from '@rolatech/angular-services';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ProductOption } from '../../../interfaces';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { ProductManageOptionAddComponent, ProductManageOptionItemComponent } from '../../../components';\n\n@Component({\n selector: 'rolatech-product-manage-options',\n imports: [\n ProductManageContentComponent,\n ToolbarComponent,\n MatButtonModule,\n MatFormFieldModule,\n AngularCommonModule,\n AngularComponentsModule,\n MatIconModule,\n ProductManageOptionItemComponent,\n ProductManageOptionAddComponent,\n ],\n templateUrl: './product-manage-options.component.html',\n styleUrl: './product-manage-options.component.scss',\n})\nexport class ProductManageOptionsComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n options: ProductOption[] = [];\n\n add = false;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.productService.findOptions(this.id).subscribe({\n next: (res) => {\n this.options = res.data || [];\n },\n });\n }\n saveOption(option: ProductOption) {\n this.productService.addOption(this.id, option).subscribe({\n next: (res) => {\n this.options.push(res.data);\n this.add = false;\n },\n });\n }\n onUpdateOption(option: ProductOption) {\n const options = {\n title: '编辑选项',\n cancelText: '取消',\n confirmText: '确认',\n data: {\n option: option,\n action: false,\n },\n component: ProductManageOptionAddComponent,\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.productService.updateOption(option.id, res).subscribe({\n next: (res) => {\n option.values = res.data.values;\n },\n });\n }\n },\n });\n }\n onDeleteOption(option: ProductOption) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除选项',\n message: `确定删除 ${option.name} 吗?`,\n },\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.productService.deleteOption(option.id).subscribe({\n next: (res) => {\n const index = this.options.findIndex((item) => item.id === option.id);\n this.options.splice(index, 1);\n this.snackBarService.open('删除成功');\n },\n });\n }\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"选项\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n @for (item of options; track $index) {\n <rolatech-product-manage-option-item\n [option]=\"item\"\n (delete)=\"onDeleteOption($event)\"\n (edit)=\"onUpdateOption($event)\"\n ></rolatech-product-manage-option-item>\n }\n <div class=\"mt-3\">\n @if (add) {\n <rolatech-product-manage-option-add\n (save)=\"saveOption($event)\"\n (cancel)=\"add = false\"\n ></rolatech-product-manage-option-add>\n } @else {\n <button mat-stroked-button (click)=\"add = true\">\n <mat-icon>add</mat-icon>\n <span>增加</span>\n </button>\n }\n </div>\n </div>\n</rolatech-product-manage-content>\n","import { Component, computed, inject, model, output } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { AngularCommonModule, DecimalDirective } from '@rolatech/angular-common';\nimport { AngularComponentsModule, ImagePreviewDialogComponent } from '@rolatech/angular-components';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\nimport { ProductInventoryStatus, ProductVariant } from '../../interfaces';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\n\n@Component({\n selector: 'rolatech-product-manage-variant',\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n OptionsFormatPipe,\n MatTableModule,\n MatIcon,\n MatFormFieldModule,\n DecimalDirective,\n MatProgressBarModule,\n MatSelectModule,\n ],\n templateUrl: './product-manage-variant.component.html',\n styleUrl: './product-manage-variant.component.scss',\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('220ms cubic-bezier(0.25, 0.1, 0.25, 1)')),\n ]),\n ],\n})\nexport class ProductManageVariantComponent {\n dialog = inject(MatDialog);\n variant = model.required<ProductVariant>();\n price = computed(() => {\n return (this.variant().price / 100).toFixed(2);\n });\n\n expanded = false;\n upload = output<FormData>();\n variantStatus = ProductInventoryStatus;\n enumKeys = Object.keys(this.variantStatus).filter((key) => isNaN(Number(key)));\n\n onUpload(event: any) {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n const formData = new FormData();\n formData.append('file', file);\n reader.readAsDataURL(file);\n reader.onload = () => {\n const img: any = new Image();\n img.onload = () => {\n this.variant.update((item) => {\n item.media = item.media ? item.media : [];\n item.media.push({\n url: img.src,\n alt: 'upload image',\n uploading: true,\n });\n return item;\n });\n };\n img.src = reader.result;\n this.upload.emit(formData);\n };\n reader.onerror = (error) => {};\n }\n }\n onMediaClick(i: number) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.variant().media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n statusCompareFn(t1: any, t2: any) {\n return t1 === ProductInventoryStatus[t2];\n }\n onStatusChange(event: MatSelectChange) {\n this.variant.update((item) => {\n item.status = Object.keys(this.variantStatus).find((key) => this.variantStatus[key] === event.value)!;\n return item;\n });\n }\n onPriceChange(event: any) {\n const value = event.target.value;\n this.variant.update((currentVariant) => {\n currentVariant.price = value * 100;\n return { ...currentVariant };\n });\n }\n}\n","<div class=\"flex items-center h-[72px] cursor-pointer px-2\" (click)=\"expanded = !expanded; $event.stopPropagation()\">\n <div>{{ variant().options | options }}</div>\n <div class=\"flex-1\"></div>\n <div class=\"px-3 dense-2\" (click)=\"$event.stopPropagation()\">\n <mat-form-field subscriptSizing=\"dynamic\" class=\"h-12\">\n <span matTextPrefix> ¥ &nbsp;</span>\n <input matInput type=\"text\" [value]=\"price()\" (change)=\"onPriceChange($event)\" rolatechDecimal />\n </mat-form-field>\n </div>\n <div class=\"px-3\">\n <mat-form-field class=\"dense-2\" (click)=\"$event.stopPropagation()\" subscriptSizing=\"dynamic\">\n <mat-select\n name=\"type\"\n [compareWith]=\"statusCompareFn\"\n (selectionChange)=\"onStatusChange($event)\"\n [(ngModel)]=\"variant().status\"\n >\n @for (key of enumKeys; track key) {\n <mat-option [value]=\"variantStatus[key]\">\n {{ variantStatus[key] }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"block w-20 text-right\">\n <button mat-icon-button aria-label=\"expand row\" (click)=\"expanded = !expanded; $event.stopPropagation()\">\n @if (expanded) {\n <mat-icon>keyboard_arrow_up</mat-icon>\n } @else {\n <mat-icon>keyboard_arrow_down</mat-icon>\n }\n </button>\n </div>\n</div>\n<div>\n <div class=\"flex flex-col gap-3 w-full overflow-hidden\" [@detailExpand]=\"expanded ? 'expanded' : 'collapsed'\">\n <div class=\"flex flex-col my-3 md:w-1/2\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\" class=\"h-12\">\n <span matTextPrefix> ¥ &nbsp;</span>\n <input matInput type=\"number\" [value]=\"price()\" rolatechDecimal />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>库存</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"variant().price\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col items-start my-3 md:w-1/2\">\n <div class=\"flex flex-wrap\">\n @for (media of variant().media; track $index) {\n <div class=\"media-list-item\">\n <div class=\"inner-media\">\n @defer (on viewport()) {\n <img (click)=\"onMediaClick($index)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n @if (media.uploading) {\n <div class=\"absolute flex items-center justify-center p-4 w-full h-full bg-[--rt-20-percent-layer]\">\n <mat-spinner></mat-spinner>\n <!--\n <svg\n viewBox=\"0 0 24 24\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n class=\"style-scope tp-yt-iron-icon\"\n style=\"pointer-events: none; display: block; width: 100%; height: 100%\"\n >\n <g class=\"style-scope tp-yt-iron-icon\">\n <path\n d=\"M17,18v1H6V18ZM6.49,9l.71.71L11,5.91V16h1V5.91l3.8,3.81L16.51,9l-5-5Z\"\n class=\"style-scope tp-yt-iron-icon\"\n ></path>\n </g>\n </svg>\n <span>Uploading…</span> -->\n </div>\n }\n </div>\n </div>\n }\n <div class=\"media-list-item\">\n <div class=\"inner-media\" (click)=\"fileInput.click()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n </div>\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n </div>\n </div>\n </div>\n</div>\n<mat-divider></mat-divider>\n","import { ChangeDetectorRef, Component, inject, model, OnInit, signal } from '@angular/core';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { AngularComponentsModule, BaseComponent, SpinnerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { Product, ProductOption, ProductVariant } from '../../../interfaces';\nimport { ProductService } from '@rolatech/angular-services';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { ProductManageVariantComponent } from '../../../components/product-manage-variant/product-manage-variant.component';\n\n@Component({\n selector: 'rolatech-product-manage-variants',\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n ProductManageContentComponent,\n ToolbarComponent,\n MatFormFieldModule,\n ProductManageVariantComponent,\n SpinnerComponent,\n ],\n templateUrl: './product-manage-variants.component.html',\n styleUrl: './product-manage-variants.component.scss',\n})\nexport class ProductManageVariantsComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n changeDetectorRefs = inject(ChangeDetectorRef);\n options = signal<ProductOption[]>([]);\n snackBar = inject(MatSnackBar);\n productPrice = model<string>();\n variants: any;\n variantPriceChecked = false;\n product!: Product;\n loading = false;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.getProduct();\n }\n onVariantSlideToggle(event: MatSlideToggleChange) {\n const newState = event.checked;\n if (newState) {\n this.productService.updateVariantPrice(this.id, true).subscribe({\n next: (res) => {\n this.variants = res.data;\n this.variantPriceChecked = newState;\n },\n });\n } else {\n const options = {\n title: '取消价格策略吗',\n message: '这会删除现有策略, 确定吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.productService.updateVariantPrice(this.id, false).subscribe({\n next: (res) => {\n this.variantPriceChecked = false;\n this.variants = res.data;\n },\n });\n } else {\n event.source.checked = !newState;\n }\n },\n });\n }\n }\n onInventorySlideToggle(e: MatSlideToggleChange) {}\n\n saveVariants() {\n this.productService.updateVariants(this.id, this.variants).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n onUpload(variant: any, data: any) {\n this.productService.uploadVariantMedia(variant.id, data).subscribe({\n next: (res: any) => {\n variant.media[variant.media.length - 1] = {\n id: res.data.id,\n url: res.data.url + '!w200',\n uploading: false,\n };\n },\n error: (e: any) => {\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n }\n findVariants() {\n this.productService.findVariants(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.variantPriceChecked = true;\n }\n this.variants = res.data;\n },\n });\n }\n getProduct() {\n this.loading = true;\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.variants = this.product.variants;\n this.variantPriceChecked = this.variants ? this.variants.length > 0 : false;\n this.options.set(res.data.options || []);\n const price = (res.data.price / 100).toFixed(2);\n this.productPrice.set(price);\n this.loading = false;\n },\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"价格策略\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n @if (loading) {\n <rolatech-spinner></rolatech-spinner>\n } @else {\n <div class=\"flex items-center\">\n <mat-slide-toggle\n color=\"primary\"\n #slide\n [checked]=\"variantPriceChecked\"\n (change)=\"onVariantSlideToggle($event)\"\n [disabled]=\"options().length <= 0\"\n ></mat-slide-toggle>\n <div>根据商品选项设置不同的价格和库存</div>\n </div>\n <div class=\"flex items-center\">\n <mat-slide-toggle color=\"primary\" #inventorySlide (change)=\"onInventorySlideToggle($event)\"></mat-slide-toggle>\n <div>跟踪库存</div>\n </div>\n\n @if (slide.checked) {\n <div>\n <div class=\"header flex gap-3 h-14 items-center\">\n <div class=\"px-3\">名称</div>\n <div class=\"flex-1\"></div>\n <div class=\"w-[160px]\">价格</div>\n <div class=\"w-[160px]\">状态</div>\n @if (inventorySlide.checked) {\n <div class=\"w-[160px]\">库存</div>\n }\n\n <div class=\"block w-20 text-right\">展开/折叠</div>\n </div>\n @for (item of variants; track $index) {\n <rolatech-product-manage-variant [variant]=\"item\" (upload)=\"onUpload(item, $event)\"></rolatech-product-manage-variant>\n }\n </div>\n <div class=\"mt-3\">\n <button mat-button (click)=\"saveVariants()\">保存</button>\n </div>\n }\n }\n</rolatech-product-manage-content>\n","import { Component } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\n\n@Component({\n selector: 'rolatech-product-manage-schedule',\n imports: [AngularCommonModule, AngularComponentsModule, ToolbarComponent, ProductManageContentComponent],\n templateUrl: './product-manage-schedule.component.html',\n styleUrl: './product-manage-schedule.component.scss',\n})\nexport class ProductManageScheduleComponent {}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"发布设置\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div></div>\n</rolatech-product-manage-content>\n","import { Component, inject, model, OnInit } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { ProductManageContentComponent } from '../product-manage-content/product-manage-content.component';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { InventoryService, ProductService } from '@rolatech/angular-services';\nimport { Product } from '../../../interfaces';\nimport { MatSelectModule } from '@angular/material/select';\nimport _ from 'lodash';\n\n@Component({\n selector: 'rolatech-product-manage-inventory',\n imports: [AngularCommonModule, AngularComponentsModule, ToolbarComponent, ProductManageContentComponent, MatSelectModule],\n templateUrl: './product-manage-inventory.component.html',\n styleUrl: './product-manage-inventory.component.scss',\n})\nexport class ProductManageInventoryComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n inventoryService = inject(InventoryService);\n\n inventoryEnabled = false;\n loading = false;\n product!: Product;\n locations = model<any>();\n selectedLocation: any;\n amount = 0;\n inventoryItem: any = {\n levels: [],\n };\n\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.getProduct();\n this.findInventoryLocations();\n this.findInventoryItemsByProductId();\n }\n getProduct() {\n this.loading = true;\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.loading = false;\n },\n });\n }\n findInventoryItemsByProductId() {\n this.inventoryService.findInventoryItemByProductId(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.inventoryEnabled = true;\n this.inventoryItem = res.data;\n }\n },\n });\n }\n findInventoryLocations() {\n this.inventoryService.findLocations({}).subscribe({\n next: (res) => {\n this.locations.set(res.data);\n this.selectedLocation = res.data[0];\n },\n });\n }\n onInventorySlideToggle(event: MatSlideToggleChange) {\n const newState = event.checked;\n this.inventoryEnabled = newState;\n if (!newState) {\n const options = {\n title: '取消库存策略吗',\n message: '这会删除现有策略, 确定吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.inventoryService.deleteInventoryItemsByProductId(this.id).subscribe({\n next: (res) => {\n this.inventoryEnabled = false;\n this.inventoryItem = {};\n },\n });\n } else {\n event.source.checked = !newState;\n }\n },\n });\n }\n }\n onSelectionChange(item, event: any) {\n item.locationId = event.value.id;\n }\n compareFn(o1: any, o2: any) {\n return o1.id === o2.id;\n }\n add() {\n const level = {\n location: {},\n amount: 0,\n };\n this.inventoryItem.levels.push(level);\n }\n save() {\n const locationIds = _.map(this.inventoryItem.levels, 'location.id');\n const duplicated = new Set(locationIds).size !== locationIds.length;\n if (duplicated) {\n this.snackBarService.open('仓库重复');\n return;\n }\n\n const data: any = {\n productId: this.id,\n levels: [],\n };\n this.inventoryItem.levels.forEach((item) => {\n data.levels.push({\n locationId: item.location.id,\n amount: item.amount,\n });\n });\n this.inventoryService.addInventoryItem(data).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n });\n }\n deleteLevel(index, level: any) {\n const options = {\n title: '确定删除吗',\n message: `这会删除现有仓库${level.location.name}商品库存数据, 确定吗?`,\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.inventoryService.deleteInventoryLevel(level.id).subscribe({\n next: (res) => {\n this.inventoryItem.levels.splice(index, 1);\n },\n });\n }\n },\n });\n }\n}\n","<rolatech-product-manage-content>\n <rolatech-toolbar title=\"库存设置\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"flex items-center\">\n <mat-slide-toggle\n color=\"primary\"\n #inventorySlide\n [checked]=\"inventoryEnabled\"\n (change)=\"onInventorySlideToggle($event)\"\n ></mat-slide-toggle>\n <div>跟踪库存</div>\n </div>\n @if (inventoryEnabled) {\n @for (item of inventoryItem.levels; track $index) {\n <div class=\"flex gap-3 items-center py-2\">\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>仓库</mat-label>\n <mat-select [compareWith]=\"compareFn\" (selectionChange)=\"onSelectionChange(item, $event)\" [(ngModel)]=\"item.location\">\n @for (item of locations(); track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label> 数量 </mat-label>\n <input matInput [(ngModel)]=\"item.amount\" required />\n </mat-form-field>\n <button mat-button (click)=\"deleteLevel($index, item)\">删除</button>\n </div>\n }\n }\n <div class=\"flex gap-3\">\n <button mat-stroked-button (click)=\"add()\">添加</button>\n <button mat-flat-button (click)=\"save()\">保存</button>\n </div>\n</rolatech-product-manage-content>\n","import { Routes } from '@angular/router';\nimport { ProductManageLayoutComponent } from './product-manage-layout/product-manage-layout.component';\nimport { ProductManageInfoComponent } from './product-manage-info/product-manage-info.component';\nimport { ProductManageSectionsComponent } from './product-manage-sections/product-manage-sections.component';\nimport { ProductManageMediaComponent } from './product-manage-media/product-manage-media.component';\nimport { ProductManagePricingComponent } from './product-manage-pricing/product-manage-pricing.component';\nimport { ProductManageIndexComponent } from './product-manage-index/product-manage-index.component';\nimport { ProductManageCreateComponent } from './product-manage-create/product-manage-create.component';\nimport { ProductManageOptionsComponent } from './product-manage-options/product-manage-options.component';\nimport { ProductManageVariantsComponent } from './product-manage-variants/product-manage-variants.component';\nimport { ProductManageScheduleComponent } from './product-manage-schedule/product-manage-schedule.component';\nimport { ProductManageInventoryComponent } from './product-manage-inventory/product-manage-inventory.component';\n\nexport const productManageRoutes: Routes = [\n {\n path: '',\n component: ProductManageIndexComponent,\n },\n {\n path: 'create',\n component: ProductManageCreateComponent,\n },\n {\n path: ':id/manage',\n component: ProductManageLayoutComponent,\n children: [\n {\n path: 'info',\n component: ProductManageInfoComponent,\n },\n {\n path: 'media',\n component: ProductManageMediaComponent,\n },\n {\n path: 'sections',\n component: ProductManageSectionsComponent,\n },\n {\n path: 'options',\n component: ProductManageOptionsComponent,\n },\n {\n path: 'variants',\n component: ProductManageVariantsComponent,\n },\n {\n path: 'inventory',\n component: ProductManageInventoryComponent,\n },\n\n {\n path: 'pricing',\n component: ProductManagePricingComponent,\n },\n {\n path: 'schedule',\n component: ProductManageScheduleComponent,\n },\n ],\n },\n];\n","import { EnvironmentProviders, Provider, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nexport function provideAngularProduct(): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","export const services: any[] = [];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5","i6","i7"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-product",
3
- "version": "19.0.0-beta.1",
3
+ "version": "19.0.0-beta.2",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^19.0.0",