@rolatech/angular-inventory 17.0.4 → 17.0.6

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/esm2022/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  export { inventoryRoutes } from './lib/pages/inventory.routes';
2
- export * from './lib/components';
3
2
  export { InventoryLocationComponent } from './lib/pages/inventory-location/inventory-location.component';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW52ZW50b3J5L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGludmVudG9yeVJvdXRlcyB9IGZyb20gJy4vbGliL3BhZ2VzL2ludmVudG9yeS5yb3V0ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XG5leHBvcnQgeyBJbnZlbnRvcnlMb2NhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbGliL3BhZ2VzL2ludmVudG9yeS1sb2NhdGlvbi9pbnZlbnRvcnktbG9jYXRpb24uY29tcG9uZW50JztcbiJdfQ==
3
+ export { InventoryLocationDetailComponent } from './lib/pages/inventory-location-detail/inventory-location-detail.component';
4
+ export { InventoryLocationAddComponent } from './lib/pages/inventory-location-add/inventory-location-add.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW52ZW50b3J5L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDN0gsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUVBQXFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBpbnZlbnRvcnlSb3V0ZXMgfSBmcm9tICcuL2xpYi9wYWdlcy9pbnZlbnRvcnkucm91dGVzJztcbmV4cG9ydCB7IEludmVudG9yeUxvY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvcGFnZXMvaW52ZW50b3J5LWxvY2F0aW9uL2ludmVudG9yeS1sb2NhdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHsgSW52ZW50b3J5TG9jYXRpb25EZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2xpYi9wYWdlcy9pbnZlbnRvcnktbG9jYXRpb24tZGV0YWlsL2ludmVudG9yeS1sb2NhdGlvbi1kZXRhaWwuY29tcG9uZW50JztcbmV4cG9ydCB7IEludmVudG9yeUxvY2F0aW9uQWRkQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvcGFnZXMvaW52ZW50b3J5LWxvY2F0aW9uLWFkZC9pbnZlbnRvcnktbG9jYXRpb24tYWRkLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,68 @@
1
+ import { Component, inject, ViewEncapsulation } from '@angular/core';
2
+ import { TextFieldModule } from '@angular/cdk/text-field';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatInputModule } from '@angular/material/input';
7
+ import { ToolbarComponent, MediaListComponent, MediaListItemComponent, BaseComponent } from '@rolatech/angular-components';
8
+ import { InventoryService } from '@rolatech/angular-services';
9
+ import { InventoryLocationMapComponent } from '../../components/inventory-location-map/inventory-location-map.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/forms";
12
+ import * as i2 from "@angular/material/form-field";
13
+ import * as i3 from "@angular/material/input";
14
+ import * as i4 from "@angular/cdk/text-field";
15
+ import * as i5 from "@angular/material/button";
16
+ export class InventoryLocationAddComponent extends BaseComponent {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.inventoryService = inject(InventoryService);
20
+ this.location = {};
21
+ }
22
+ selectLocation() {
23
+ const dialogRef = this.dialog.open(InventoryLocationMapComponent, {
24
+ width: '90%',
25
+ data: {
26
+ title: '选择位置',
27
+ },
28
+ });
29
+ dialogRef.afterClosed().subscribe((result) => {
30
+ if (result) {
31
+ const address = result.address;
32
+ const { lat, lng } = result.location;
33
+ this.location.detail = address;
34
+ this.location.latitude = lat;
35
+ this.location.longitude = lng;
36
+ this.location.province = result.province;
37
+ this.location.city = result.city;
38
+ this.location.district = result.district;
39
+ }
40
+ });
41
+ }
42
+ add() {
43
+ const data = {
44
+ ...this.location,
45
+ };
46
+ this.inventoryService.addLocation(data).subscribe({
47
+ next: (res) => {
48
+ this.snackBarService.open('添加成功');
49
+ },
50
+ });
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationAddComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InventoryLocationAddComponent, isStandalone: true, selector: "rolatech-inventory-location-add", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TextFieldModule }], encapsulation: i0.ViewEncapsulation.None }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationAddComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'rolatech-inventory-location-add', standalone: true, imports: [
58
+ ToolbarComponent,
59
+ FormsModule,
60
+ MatFormFieldModule,
61
+ MatInputModule,
62
+ MatButtonModule,
63
+ TextFieldModule,
64
+ MediaListComponent,
65
+ MediaListItemComponent,
66
+ ], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n" }]
67
+ }] });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LWxvY2F0aW9uLWFkZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW52ZW50b3J5L3NyYy9saWIvcGFnZXMvaW52ZW50b3J5LWxvY2F0aW9uLWFkZC9pbnZlbnRvcnktbG9jYXRpb24tYWRkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnZlbnRvcnkvc3JjL2xpYi9wYWdlcy9pbnZlbnRvcnktbG9jYXRpb24tYWRkL2ludmVudG9yeS1sb2NhdGlvbi1hZGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7Ozs7OztBQW1CekgsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGFBQWE7SUFqQmhFOztRQWtCRSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxhQUFRLEdBQVEsRUFBRSxDQUFDO0tBa0NwQjtJQWhDQyxjQUFjO1FBQ1osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDaEUsS0FBSyxFQUFFLEtBQUs7WUFDWixJQUFJLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLE1BQU07YUFDZDtTQUNGLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRztRQUNELE1BQU0sSUFBSSxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsUUFBUTtTQUNqQixDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEQsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBcENVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLGtIQzNCMUMsK2xHQXlFQSwwREQzREksZ0JBQWdCLCtIQUNoQixXQUFXLG93Q0FDWCxrQkFBa0IsMFNBQ2xCLGNBQWMseWtCQUNkLGVBQWUsMk5BQ2YsZUFBZTs7MkZBUU4sNkJBQTZCO2tCQWpCekMsU0FBUzsrQkFDRSxpQ0FBaUMsY0FDL0IsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3FCQUN2QixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0RmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCwgTWVkaWFMaXN0Q29tcG9uZW50LCBNZWRpYUxpc3RJdGVtQ29tcG9uZW50LCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgSW52ZW50b3J5TG9jYXRpb25NYXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ludmVudG9yeS1sb2NhdGlvbi1tYXAvaW52ZW50b3J5LWxvY2F0aW9uLW1hcC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1pbnZlbnRvcnktbG9jYXRpb24tYWRkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBUZXh0RmllbGRNb2R1bGUsXG4gICAgTWVkaWFMaXN0Q29tcG9uZW50LFxuICAgIE1lZGlhTGlzdEl0ZW1Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnZlbnRvcnktbG9jYXRpb24tYWRkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ludmVudG9yeS1sb2NhdGlvbi1hZGQuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBJbnZlbnRvcnlMb2NhdGlvbkFkZENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBpbnZlbnRvcnlTZXJ2aWNlID0gaW5qZWN0KEludmVudG9yeVNlcnZpY2UpO1xuXG4gIGxvY2F0aW9uOiBhbnkgPSB7fTtcblxuICBzZWxlY3RMb2NhdGlvbigpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEludmVudG9yeUxvY2F0aW9uTWFwQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzkwJScsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRpdGxlOiAn6YCJ5oup5L2N572uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHJlc3VsdC5hZGRyZXNzO1xuICAgICAgICBjb25zdCB7IGxhdCwgbG5nIH0gPSByZXN1bHQubG9jYXRpb247XG4gICAgICAgIHRoaXMubG9jYXRpb24uZGV0YWlsID0gYWRkcmVzcztcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5sYXRpdHVkZSA9IGxhdDtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5sb25naXR1ZGUgPSBsbmc7XG4gICAgICAgIHRoaXMubG9jYXRpb24ucHJvdmluY2UgPSByZXN1bHQucHJvdmluY2U7XG4gICAgICAgIHRoaXMubG9jYXRpb24uY2l0eSA9IHJlc3VsdC5jaXR5O1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmRpc3RyaWN0ID0gcmVzdWx0LmRpc3RyaWN0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAuLi50aGlzLmxvY2F0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLmludmVudG9yeVNlcnZpY2UuYWRkTG9jYXRpb24oZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3Blbign5re75Yqg5oiQ5YqfJyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCI8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIuWIm+W7uuS7k+W6k1wiIGJhY2s+IDwvcm9sYXRlY2gtdG9vbGJhcj5cbjxkaXYgY2xhc3M9XCJweC0zIGgtZnVsbFwiPlxuICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgPGRpdiBjbGFzcz1cInctMi8zIGZsZXggZmxleC1jb2xcIj5cbiAgICAgIDxmb3JtICNsb2NhdGlvbkZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICA8IS0tIGJhc2UgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDku5PlupPlkI3np7AgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLm5hbWVcIiBuYW1lPVwibmFtZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOiBlOezu+S6uiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwibG9jYXRpb24uY29udGFjdFwiIG5hbWU9XCJjb250YWN0XCIgcmVxdWlyZWQgLz5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g5omL5py65Y+3IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJsb2NhdGlvbi5waG9uZVwiIG5hbWU9XCJwaG9uZVwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gbG9jYXRpb24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0zIGZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgIDxoMj7kvY3nva7kv6Hmga88L2gyPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0TG9jYXRpb24oKVwiPuS9jee9rumAieaLqTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g55yB5Lu9IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJsb2NhdGlvbi5wcm92aW5jZVwiIG5hbWU9XCJwcm92aW5jZVwiIHJlcXVpcmVkIGRpc2FibGVkIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOWfjuW4giA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwibG9jYXRpb24uY2l0eVwiIG5hbWU9XCJjaXR5XCIgcmVxdWlyZWQgZGlzYWJsZWQgLz5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g5Yy6L+WOvyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwibG9jYXRpb24uZGlzdHJpY3RcIiBuYW1lPVwiY291bnR5XCIgcmVxdWlyZWQgZGlzYWJsZWQgLz5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8IS0tIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD4g6KGX6YGTIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9jYXRpb24udG93blwiXG4gICAgICAgICAgICAgIG5hbWU9XCJ0b3duXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPiAtLT5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDlnLDlnYAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLmRldGFpbFwiIG5hbWU9XCJhZGRyZXNzXCIgLz5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g6K+m57uGIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9jYXRpb24uZGV0YWlsXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZGV0YWlsXCJcbiAgICAgICAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiM1wiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHktM1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cImFkZCgpXCI+5L+d5a2YPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -14,7 +14,7 @@ export const inventoryRoutes = [
14
14
  },
15
15
  {
16
16
  path: 'locations/add',
17
- loadComponent: () => import('../components/inventory-location-add/inventory-location-add.component').then((c) => c.InventoryLocationAddComponent),
17
+ loadComponent: () => import('./inventory-location-add/inventory-location-add.component').then((c) => c.InventoryLocationAddComponent),
18
18
  },
19
19
  {
20
20
  path: 'locations/:id',
@@ -27,4 +27,4 @@ export const inventoryRoutes = [
27
27
  ],
28
28
  },
29
29
  ];
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LnJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnZlbnRvcnkvc3JjL2xpYi9wYWdlcy9pbnZlbnRvcnkucm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRXJHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBVztJQUNyQztRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLHdCQUF3QjtRQUNuQyxRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsRUFBRTtnQkFDUixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7YUFDakc7WUFDRDtnQkFDRSxJQUFJLEVBQUUsV0FBVztnQkFDakIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUNsQixNQUFNLENBQUMsbURBQW1ELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQzthQUN4RztZQUNEO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDLElBQUksQ0FDbEYsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FDdkM7YUFDSjtZQUNEO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDLElBQUksQ0FDNUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FDMUM7YUFDSjtZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlEQUFpRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUM7YUFDeEg7U0FDRjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJbnZlbnRvcnlMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ludmVudG9yeS1sYXlvdXQvaW52ZW50b3J5LWxheW91dC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgaW52ZW50b3J5Um91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IEludmVudG9yeUxheW91dENvbXBvbmVudCxcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ludmVudG9yeS9pbnZlbnRvcnkuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5JbnZlbnRvcnlDb21wb25lbnQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2xvY2F0aW9ucycsXG4gICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgaW1wb3J0KCcuL2ludmVudG9yeS1sb2NhdGlvbi9pbnZlbnRvcnktbG9jYXRpb24uY29tcG9uZW50JykudGhlbigoYykgPT4gYy5JbnZlbnRvcnlMb2NhdGlvbkNvbXBvbmVudCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiAnbG9jYXRpb25zL2FkZCcsXG4gICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgaW1wb3J0KCcuLi9jb21wb25lbnRzL2ludmVudG9yeS1sb2NhdGlvbi1hZGQvaW52ZW50b3J5LWxvY2F0aW9uLWFkZC5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgKGMpID0+IGMuSW52ZW50b3J5TG9jYXRpb25BZGRDb21wb25lbnQsXG4gICAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdsb2NhdGlvbnMvOmlkJyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICBpbXBvcnQoJy4vaW52ZW50b3J5LWxvY2F0aW9uLWRldGFpbC9pbnZlbnRvcnktbG9jYXRpb24tZGV0YWlsLmNvbXBvbmVudCcpLnRoZW4oXG4gICAgICAgICAgICAoYykgPT4gYy5JbnZlbnRvcnlMb2NhdGlvbkRldGFpbENvbXBvbmVudCxcbiAgICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ3Byb2R1Y3RzJyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ludmVudG9yeS1wcm9kdWN0L2ludmVudG9yeS1wcm9kdWN0LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuSW52ZW50b3J5UHJvZHVjdENvbXBvbmVudCksXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5dO1xuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LnJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnZlbnRvcnkvc3JjL2xpYi9wYWdlcy9pbnZlbnRvcnkucm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRXJHLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBVztJQUNyQztRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLHdCQUF3QjtRQUNuQyxRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsRUFBRTtnQkFDUixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7YUFDakc7WUFDRDtnQkFDRSxJQUFJLEVBQUUsV0FBVztnQkFDakIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUNsQixNQUFNLENBQUMsbURBQW1ELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQzthQUN4RztZQUNEO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQ2xCLE1BQU0sQ0FBQywyREFBMkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO2FBQ25IO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLGlFQUFpRSxDQUFDLENBQUMsSUFBSSxDQUM1RSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUMxQzthQUNKO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsaURBQWlELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQzthQUN4SDtTQUNGO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEludmVudG9yeUxheW91dENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaW52ZW50b3J5LWxheW91dC9pbnZlbnRvcnktbGF5b3V0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBpbnZlbnRvcnlSb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogSW52ZW50b3J5TGF5b3V0Q29tcG9uZW50LFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICcnLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vaW52ZW50b3J5L2ludmVudG9yeS5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkludmVudG9yeUNvbXBvbmVudCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiAnbG9jYXRpb25zJyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICBpbXBvcnQoJy4vaW52ZW50b3J5LWxvY2F0aW9uL2ludmVudG9yeS1sb2NhdGlvbi5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkludmVudG9yeUxvY2F0aW9uQ29tcG9uZW50KSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdsb2NhdGlvbnMvYWRkJyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICBpbXBvcnQoJy4vaW52ZW50b3J5LWxvY2F0aW9uLWFkZC9pbnZlbnRvcnktbG9jYXRpb24tYWRkLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuSW52ZW50b3J5TG9jYXRpb25BZGRDb21wb25lbnQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2xvY2F0aW9ucy86aWQnLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgIGltcG9ydCgnLi9pbnZlbnRvcnktbG9jYXRpb24tZGV0YWlsL2ludmVudG9yeS1sb2NhdGlvbi1kZXRhaWwuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgIChjKSA9PiBjLkludmVudG9yeUxvY2F0aW9uRGV0YWlsQ29tcG9uZW50LFxuICAgICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiAncHJvZHVjdHMnLFxuICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vaW52ZW50b3J5LXByb2R1Y3QvaW52ZW50b3J5LXByb2R1Y3QuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5JbnZlbnRvcnlQcm9kdWN0Q29tcG9uZW50KSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl07XG4iXX0=
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { input, model, Component, ViewEncapsulation, inject } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { AngularComponentsModule, ImagePlaceholderComponent, ThumbnailComponent, ImageComponent, BaseComponent, ToolbarComponent } from '@rolatech/angular-components';
5
- import { a as InventoryContentComponent } from './rolatech-angular-inventory-rolatech-angular-inventory-De3UY48K.mjs';
5
+ import { I as InventoryContentComponent } from './rolatech-angular-inventory-rolatech-angular-inventory-DlSxFWx-.mjs';
6
6
  import { InventoryService, ProductService } from '@rolatech/angular-services';
7
7
  import _ from 'lodash';
8
8
  import { AngularCommonModule } from '@rolatech/angular-common';
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
55
55
  }] });
56
56
 
57
57
  export { InventoryProductComponent };
58
- //# sourceMappingURL=rolatech-angular-inventory-inventory-product.component--hp_Po_x.mjs.map
58
+ //# sourceMappingURL=rolatech-angular-inventory-inventory-product.component-BeKmJf1T.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-inventory-inventory-product.component--hp_Po_x.mjs","sources":["../../../../libs/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.ts","../../../../libs/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.html"],"sourcesContent":["import { Component, input, model, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AngularComponentsModule,\n ImageComponent,\n ImagePlaceholderComponent,\n ThumbnailComponent,\n} from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\nexport interface InventoryProduct {\n name: string;\n media: InventoryProductMedia[];\n}\nexport interface InventoryProductMedia {\n url: string;\n}\n\n@Component({\n selector: 'rolatech-inventory-product-item',\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, ThumbnailComponent, ImageComponent, ImagePlaceholderComponent],\n templateUrl: './inventory-product-item.component.html',\n styleUrl: './inventory-product-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductItemComponent {\n product = input.required<InventoryProduct>();\n amount = model<any>();\n}\n","<div class=\"flex items-center p-2 justify-between\">\n <div class=\"flex\">\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\" mode=\"full\"> </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>{{ product().name }}</div>\n </div>\n <!-- <div>\n <mat-form-field subscriptSizing=\"dynamic\" class=\"h-12\">\n <mat-label> 数量 </mat-label>\n <input matInput />\n </mat-form-field>\n </div> -->\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService, ProductService } from '@rolatech/angular-services';\nimport _ from 'lodash';\nimport { InventoryProductItemComponent } from '../../components/inventory-product-item/inventory-product-item.component';\nimport { RouterLink } from '@angular/router';\n@Component({\n selector: 'rolatech-inventory-product',\n standalone: true,\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, InventoryProductItemComponent, RouterLink],\n templateUrl: './inventory-product.component.html',\n styleUrl: './inventory-product.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n productService = inject(ProductService);\n products: any = [];\n ngOnInit(): void {\n this.findInventoryItem();\n }\n findInventoryItem() {\n this.inventoryService.findMyInventoryItems({}).subscribe({\n next: (res) => {\n const productIds = _.uniq(_.map(res.data, 'productId'));\n this.findProductsByIds(productIds);\n },\n });\n }\n findProductsByIds(ids: Array<string>) {\n this.productService.findByIds(ids).subscribe({\n next: (res) => {\n this.products = res.data;\n },\n });\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"商品库存\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of products; track $index) {\n <rolatech-inventory-product-item\n class=\"block cursor-pointer hover:bg-[--rt-raised-background]\"\n [product]=\"item\"\n [routerLink]=\"['/products', item.id, 'manage', 'inventory']\"\n ></rolatech-inventory-product-item>\n }\n </div>\n</rolatech-inventory-content>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-inventory-inventory-product.component-BeKmJf1T.mjs","sources":["../../../../libs/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-product-item/inventory-product-item.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.ts","../../../../libs/angular-inventory/src/lib/pages/inventory-product/inventory-product.component.html"],"sourcesContent":["import { Component, input, model, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AngularComponentsModule,\n ImageComponent,\n ImagePlaceholderComponent,\n ThumbnailComponent,\n} from '@rolatech/angular-components';\nimport { AngularCommonModule } from '@rolatech/angular-common';\n\nexport interface InventoryProduct {\n name: string;\n media: InventoryProductMedia[];\n}\nexport interface InventoryProductMedia {\n url: string;\n}\n\n@Component({\n selector: 'rolatech-inventory-product-item',\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, ThumbnailComponent, ImageComponent, ImagePlaceholderComponent],\n templateUrl: './inventory-product-item.component.html',\n styleUrl: './inventory-product-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductItemComponent {\n product = input.required<InventoryProduct>();\n amount = model<any>();\n}\n","<div class=\"flex items-center p-2 justify-between\">\n <div class=\"flex\">\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\" mode=\"full\"> </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>{{ product().name }}</div>\n </div>\n <!-- <div>\n <mat-form-field subscriptSizing=\"dynamic\" class=\"h-12\">\n <mat-label> 数量 </mat-label>\n <input matInput />\n </mat-form-field>\n </div> -->\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService, ProductService } from '@rolatech/angular-services';\nimport _ from 'lodash';\nimport { InventoryProductItemComponent } from '../../components/inventory-product-item/inventory-product-item.component';\nimport { RouterLink } from '@angular/router';\n@Component({\n selector: 'rolatech-inventory-product',\n standalone: true,\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, InventoryProductItemComponent, RouterLink],\n templateUrl: './inventory-product.component.html',\n styleUrl: './inventory-product.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryProductComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n productService = inject(ProductService);\n products: any = [];\n ngOnInit(): void {\n this.findInventoryItem();\n }\n findInventoryItem() {\n this.inventoryService.findMyInventoryItems({}).subscribe({\n next: (res) => {\n const productIds = _.uniq(_.map(res.data, 'productId'));\n this.findProductsByIds(productIds);\n },\n });\n }\n findProductsByIds(ids: Array<string>) {\n this.productService.findByIds(ids).subscribe({\n next: (res) => {\n this.products = res.data;\n },\n });\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"商品库存\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of products; track $index) {\n <rolatech-inventory-product-item\n class=\"block cursor-pointer hover:bg-[--rt-raised-background]\"\n [product]=\"item\"\n [routerLink]=\"['/products', item.id, 'manage', 'inventory']\"\n ></rolatech-inventory-product-item>\n }\n </div>\n</rolatech-inventory-content>\n"],"names":[],"mappings":";;;;;;;;;;MA0Ba,6BAA6B,CAAA;AAR1C,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAoB,CAAC;QAC7C,IAAM,CAAA,MAAA,GAAG,KAAK,EAAO,CAAC;AACvB,KAAA;8GAHY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B1C,y6BAwBA,EDHY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BAAE,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAsC,yBAAyB,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,MAAA,CAA7D,kBAAkB,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAK/D,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,cAC/B,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,cAAc,EAAE,yBAAyB,CAAC,EAGvG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,y6BAAA,EAAA,CAAA;;;AERjC,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AAR5D,IAAA,WAAA,GAAA;;AASE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACxC,IAAQ,CAAA,QAAA,GAAQ,EAAE,CAAC;AAmBpB,KAAA;IAlBC,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IACD,iBAAiB,GAAA;QACf,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACvD,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;aACpC;AACF,SAAA,CAAC,CAAC;KACJ;AACD,IAAA,iBAAiB,CAAC,GAAkB,EAAA;QAClC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC3C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;aAC1B;AACF,SAAA,CAAC,CAAC;KACJ;8GArBU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBtC,wgBAYA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,6BAA6B,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAKnG,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAC1B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,UAAU,CAAC,EAGhG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,wgBAAA,EAAA,CAAA;;;;;"}
@@ -1,26 +1,27 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ViewEncapsulation, Inject, inject } from '@angular/core';
2
+ import { Component, ViewEncapsulation, inject, Inject, input, output } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i1 from '@angular/router';
5
5
  import { RouterModule, RouterLink } from '@angular/router';
6
- import * as i4$1 from '@angular/cdk/text-field';
6
+ import { ToolbarComponent, TitleComponent, MediaListComponent, MediaListItemComponent, BaseComponent } from '@rolatech/angular-components';
7
+ import { InventoryService } from '@rolatech/angular-services';
8
+ import * as i7 from '@angular/material/icon';
9
+ import { MatIcon, MatIconModule } from '@angular/material/icon';
10
+ import * as i5 from '@angular/material/button';
11
+ import { MatButtonModule } from '@angular/material/button';
12
+ import * as i3$1 from '@angular/cdk/text-field';
7
13
  import { TextFieldModule } from '@angular/cdk/text-field';
8
14
  import * as i1$2 from '@angular/forms';
9
15
  import { FormsModule } from '@angular/forms';
10
- import * as i5 from '@angular/material/button';
11
- import { MatButtonModule } from '@angular/material/button';
16
+ import { MatDividerModule } from '@angular/material/divider';
12
17
  import * as i2 from '@angular/material/form-field';
13
18
  import { MatFormFieldModule } from '@angular/material/form-field';
14
19
  import * as i6 from '@angular/material/input';
15
20
  import { MatInputModule } from '@angular/material/input';
16
- import { ToolbarComponent, MediaListComponent, MediaListItemComponent } from '@rolatech/angular-components';
17
- import { InventoryService, NavigationService } from '@rolatech/angular-services';
18
21
  import * as i1$1 from '@angular/material/dialog';
19
22
  import { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose, MatDialog } from '@angular/material/dialog';
20
23
  import * as i4 from '@angular/material/core';
21
24
  import { MatOptionModule } from '@angular/material/core';
22
- import * as i7 from '@angular/material/icon';
23
- import { MatIconModule, MatIcon } from '@angular/material/icon';
24
25
  import * as i3 from '@angular/material/select';
25
26
  import { MatSelectModule } from '@angular/material/select';
26
27
 
@@ -52,16 +53,56 @@ const inventoryRoutes = [
52
53
  },
53
54
  {
54
55
  path: 'locations/:id',
55
- loadComponent: () => import('./rolatech-angular-inventory-inventory-location-detail.component-BKR7in_r.mjs').then((c) => c.InventoryLocationDetailComponent),
56
+ loadComponent: () => Promise.resolve().then(function () { return inventoryLocationDetail_component; }).then((c) => c.InventoryLocationDetailComponent),
56
57
  },
57
58
  {
58
59
  path: 'products',
59
- loadComponent: () => import('./rolatech-angular-inventory-inventory-product.component--hp_Po_x.mjs').then((c) => c.InventoryProductComponent),
60
+ loadComponent: () => import('./rolatech-angular-inventory-inventory-product.component-BeKmJf1T.mjs').then((c) => c.InventoryProductComponent),
60
61
  },
61
62
  ],
62
63
  },
63
64
  ];
64
65
 
66
+ class InventoryContentComponent {
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InventoryContentComponent, isStandalone: true, selector: "rolatech-inventory-content", ngImport: i0, template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryContentComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'rolatech-inventory-content', standalone: true, imports: [CommonModule], template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n" }]
73
+ }] });
74
+
75
+ class InventoryLocationComponent {
76
+ constructor() {
77
+ this.inventoryService = inject(InventoryService);
78
+ this.locations = [];
79
+ }
80
+ ngOnInit() {
81
+ this.findLocations();
82
+ }
83
+ findLocations() {
84
+ this.inventoryService.findLocations({}).subscribe({
85
+ next: (res) => {
86
+ this.locations = res.data;
87
+ },
88
+ });
89
+ }
90
+ addLocation(data) {
91
+ this.inventoryService.addLocation(data);
92
+ }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InventoryLocationComponent, isStandalone: true, selector: "rolatech-inventory-location", ngImport: i0, template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"\u4ED3\u5E93\u8BBE\u7F6E\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n \u521B\u5EFA\u4ED3\u5E93\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-1 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: InventoryContentComponent, selector: "rolatech-inventory-content" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
95
+ }
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationComponent, decorators: [{
97
+ type: Component,
98
+ args: [{ selector: 'rolatech-inventory-location', standalone: true, imports: [CommonModule, ToolbarComponent, InventoryContentComponent, RouterLink, MatButtonModule, MatIcon], template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"\u4ED3\u5E93\u8BBE\u7F6E\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n \u521B\u5EFA\u4ED3\u5E93\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-1 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n" }]
99
+ }] });
100
+
101
+ var inventoryLocation_component = /*#__PURE__*/Object.freeze({
102
+ __proto__: null,
103
+ InventoryLocationComponent: InventoryLocationComponent
104
+ });
105
+
65
106
  class InventoryLocationMapComponent {
66
107
  constructor(dialogRef, data) {
67
108
  this.dialogRef = dialogRef;
@@ -157,11 +198,118 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
157
198
  args: [MAT_DIALOG_DATA]
158
199
  }] }] });
159
200
 
160
- class InventoryLocationAddComponent {
201
+ class InventoryLocationItemComponent {
161
202
  constructor() {
162
- this.inventoryService = inject(InventoryService);
203
+ this.location = input.required();
163
204
  this.dialog = inject(MatDialog);
164
- this.navigationService = inject(NavigationService);
205
+ this.save = output();
206
+ this.delete = output();
207
+ }
208
+ selectLocation() {
209
+ const dialogRef = this.dialog.open(InventoryLocationMapComponent, {
210
+ width: '90%',
211
+ data: {
212
+ title: '选择位置',
213
+ },
214
+ });
215
+ dialogRef.afterClosed().subscribe((result) => {
216
+ if (result) {
217
+ const address = result.address;
218
+ const { lat, lng } = result.location;
219
+ this.location().detail = address;
220
+ this.location().latitude = lat;
221
+ this.location().longitude = lng;
222
+ this.location().province = result.province;
223
+ this.location().city = result.city;
224
+ this.location().district = result.district;
225
+ this.location().detail = result.title;
226
+ }
227
+ });
228
+ }
229
+ onSave() {
230
+ this.save.emit(this.location());
231
+ }
232
+ onDelete() {
233
+ this.delete.emit(this.location());
234
+ }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.8", type: InventoryLocationItemComponent, isStandalone: true, selector: "rolatech-inventory-location-item", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { save: "save", delete: "delete" }, ngImport: i0, template: "<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"\u4F4D\u7F6E\u4FE1\u606F\"></rolatech-title>\n\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\">\u5220\u9664</button>\n <button mat-flat-button type=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: TitleComponent, selector: "rolatech-title", inputs: ["title", "subtitle", "large"] }], encapsulation: i0.ViewEncapsulation.None }); }
237
+ }
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationItemComponent, decorators: [{
239
+ type: Component,
240
+ args: [{ selector: 'rolatech-inventory-location-item', standalone: true, imports: [
241
+ MatFormFieldModule,
242
+ MatInputModule,
243
+ FormsModule,
244
+ MatButtonModule,
245
+ TextFieldModule,
246
+ MediaListComponent,
247
+ MediaListItemComponent,
248
+ MatDividerModule,
249
+ TitleComponent,
250
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"\u4F4D\u7F6E\u4FE1\u606F\"></rolatech-title>\n\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\">\u5220\u9664</button>\n <button mat-flat-button type=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n" }]
251
+ }] });
252
+
253
+ class InventoryLocationDetailComponent extends BaseComponent {
254
+ constructor() {
255
+ super(...arguments);
256
+ this.inventoryService = inject(InventoryService);
257
+ }
258
+ ngOnInit() {
259
+ this.get();
260
+ }
261
+ get() {
262
+ this.inventoryService.getLocation(this.id).subscribe({
263
+ next: (res) => {
264
+ this.location = res.data;
265
+ },
266
+ });
267
+ }
268
+ onLocationSave(e) {
269
+ this.inventoryService.updateLocation(e.id, e).subscribe({
270
+ next: (res) => {
271
+ this.snackBarService.open('保存成功');
272
+ },
273
+ });
274
+ }
275
+ onLocationDetele(location) {
276
+ const options = {
277
+ title: '确定删除吗',
278
+ message: `这会删除仓库, 确定吗?`,
279
+ cancelText: '取消',
280
+ confirmText: '确认',
281
+ };
282
+ this.dialogService.open(options);
283
+ this.dialogService.confirmed().subscribe({
284
+ next: (res) => {
285
+ if (res) {
286
+ this.inventoryService.deleteLocation(location.id).subscribe({
287
+ next: (res) => {
288
+ this.snackBarService.open('删除成功');
289
+ this.navigation.back();
290
+ },
291
+ });
292
+ }
293
+ },
294
+ });
295
+ }
296
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
297
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InventoryLocationDetailComponent, isStandalone: true, selector: "rolatech-inventory-location-detail", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"\u4ED3\u5E93\u8BE6\u60C5\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: InventoryLocationItemComponent, selector: "rolatech-inventory-location-item", inputs: ["location"], outputs: ["save", "delete"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }], encapsulation: i0.ViewEncapsulation.None }); }
298
+ }
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationDetailComponent, decorators: [{
300
+ type: Component,
301
+ args: [{ selector: 'rolatech-inventory-location-detail', standalone: true, imports: [CommonModule, InventoryLocationItemComponent, ToolbarComponent], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"\u4ED3\u5E93\u8BE6\u60C5\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n" }]
302
+ }] });
303
+
304
+ var inventoryLocationDetail_component = /*#__PURE__*/Object.freeze({
305
+ __proto__: null,
306
+ InventoryLocationDetailComponent: InventoryLocationDetailComponent
307
+ });
308
+
309
+ class InventoryLocationAddComponent extends BaseComponent {
310
+ constructor() {
311
+ super(...arguments);
312
+ this.inventoryService = inject(InventoryService);
165
313
  this.location = {};
166
314
  }
167
315
  selectLocation() {
@@ -190,12 +338,12 @@ class InventoryLocationAddComponent {
190
338
  };
191
339
  this.inventoryService.addLocation(data).subscribe({
192
340
  next: (res) => {
193
- this.navigationService.back();
341
+ this.snackBarService.open('添加成功');
194
342
  },
195
343
  });
196
344
  }
197
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationAddComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InventoryLocationAddComponent, isStandalone: true, selector: "rolatech-inventory-location-add", ngImport: i0, template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\"> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TextFieldModule }] }); }
345
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationAddComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
346
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InventoryLocationAddComponent, isStandalone: true, selector: "rolatech-inventory-location-add", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TextFieldModule }], encapsulation: i0.ViewEncapsulation.None }); }
199
347
  }
200
348
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationAddComponent, decorators: [{
201
349
  type: Component,
@@ -208,7 +356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
208
356
  TextFieldModule,
209
357
  MediaListComponent,
210
358
  MediaListItemComponent,
211
- ], template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\"> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n" }]
359
+ ], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n" }]
212
360
  }] });
213
361
 
214
362
  var inventoryLocationAdd_component = /*#__PURE__*/Object.freeze({
@@ -216,49 +364,9 @@ var inventoryLocationAdd_component = /*#__PURE__*/Object.freeze({
216
364
  InventoryLocationAddComponent: InventoryLocationAddComponent
217
365
  });
218
366
 
219
- class InventoryContentComponent {
220
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
221
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InventoryContentComponent, isStandalone: true, selector: "rolatech-inventory-content", ngImport: i0, template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
222
- }
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryContentComponent, decorators: [{
224
- type: Component,
225
- args: [{ selector: 'rolatech-inventory-content', standalone: true, imports: [CommonModule], template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n" }]
226
- }] });
227
-
228
- class InventoryLocationComponent {
229
- constructor() {
230
- this.inventoryService = inject(InventoryService);
231
- this.locations = [];
232
- }
233
- ngOnInit() {
234
- this.findLocations();
235
- }
236
- findLocations() {
237
- this.inventoryService.findLocations({}).subscribe({
238
- next: (res) => {
239
- this.locations = res.data;
240
- },
241
- });
242
- }
243
- addLocation(data) {
244
- this.inventoryService.addLocation(data);
245
- }
246
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
247
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InventoryLocationComponent, isStandalone: true, selector: "rolatech-inventory-location", ngImport: i0, template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"\u4ED3\u5E93\u8BBE\u7F6E\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n \u521B\u5EFA\u4ED3\u5E93\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-1 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: InventoryContentComponent, selector: "rolatech-inventory-content" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
248
- }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationComponent, decorators: [{
250
- type: Component,
251
- args: [{ selector: 'rolatech-inventory-location', standalone: true, imports: [CommonModule, ToolbarComponent, InventoryContentComponent, RouterLink, MatButtonModule, MatIcon], template: "<rolatech-inventory-content>\n <rolatech-toolbar title=\"\u4ED3\u5E93\u8BBE\u7F6E\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n \u521B\u5EFA\u4ED3\u5E93\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-1 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n" }]
252
- }] });
253
-
254
- var inventoryLocation_component = /*#__PURE__*/Object.freeze({
255
- __proto__: null,
256
- InventoryLocationComponent: InventoryLocationComponent
257
- });
258
-
259
367
  /**
260
368
  * Generated bundle index. Do not edit.
261
369
  */
262
370
 
263
- export { InventoryLocationMapComponent as I, InventoryContentComponent as a, InventoryLocationComponent as b, InventoryLocationAddComponent as c, inventoryRoutes as i };
264
- //# sourceMappingURL=rolatech-angular-inventory-rolatech-angular-inventory-De3UY48K.mjs.map
371
+ export { InventoryContentComponent as I, InventoryLocationComponent as a, InventoryLocationDetailComponent as b, InventoryLocationAddComponent as c, inventoryRoutes as i };
372
+ //# sourceMappingURL=rolatech-angular-inventory-rolatech-angular-inventory-DlSxFWx-.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-inventory-rolatech-angular-inventory-DlSxFWx-.mjs","sources":["../../../../libs/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory.routes.ts","../../../../libs/angular-inventory/src/lib/components/inventory-content/inventory-content.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-content/inventory-content.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.ts","../../../../libs/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.html","../../../../libs/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.html","../../../../libs/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.ts","../../../../libs/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory-location-add/inventory-location-add.component.ts","../../../../libs/angular-inventory/src/lib/pages/inventory-location-add/inventory-location-add.component.html","../../../../libs/angular-inventory/src/rolatech-angular-inventory.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'rolatech-inventory-layout',\n standalone: true,\n imports: [CommonModule, RouterModule],\n templateUrl: './inventory-layout.component.html',\n styleUrl: './inventory-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLayoutComponent {}\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=\"./locations\" 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=\"./products\" routerLinkActive=\"manage-active\" class=\"p-2\">商品</a>\n <!-- <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">库存设置</a> -->\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Routes } from '@angular/router';\nimport { InventoryLayoutComponent } from '../components/inventory-layout/inventory-layout.component';\n\nexport const inventoryRoutes: Routes = [\n {\n path: '',\n component: InventoryLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./inventory/inventory.component').then((c) => c.InventoryComponent),\n },\n {\n path: 'locations',\n loadComponent: () =>\n import('./inventory-location/inventory-location.component').then((c) => c.InventoryLocationComponent),\n },\n {\n path: 'locations/add',\n loadComponent: () =>\n import('./inventory-location-add/inventory-location-add.component').then((c) => c.InventoryLocationAddComponent),\n },\n {\n path: 'locations/:id',\n loadComponent: () =>\n import('./inventory-location-detail/inventory-location-detail.component').then(\n (c) => c.InventoryLocationDetailComponent,\n ),\n },\n {\n path: 'products',\n loadComponent: () => import('./inventory-product/inventory-product.component').then((c) => c.InventoryProductComponent),\n },\n ],\n },\n];\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-inventory-content',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './inventory-content.component.html',\n styleUrl: './inventory-content.component.scss',\n})\nexport class InventoryContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService } from '@rolatech/angular-services';\nimport { Location } from '../../interfaces/inventory-location';\nimport { RouterLink } from '@angular/router';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-inventory-location',\n standalone: true,\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, RouterLink, MatButtonModule, MatIcon],\n templateUrl: './inventory-location.component.html',\n styleUrl: './inventory-location.component.scss',\n})\nexport class InventoryLocationComponent implements OnInit {\n inventoryService = inject(InventoryService);\n locations: Location[] = [];\n\n ngOnInit(): void {\n this.findLocations();\n }\n findLocations() {\n this.inventoryService.findLocations({}).subscribe({\n next: (res) => {\n this.locations = res.data;\n },\n });\n }\n addLocation(data) {\n this.inventoryService.addLocation(data);\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"仓库设置\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n 创建仓库\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-1 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n","import { Component, Inject, OnInit } from '@angular/core';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from '@angular/material/dialog';\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 { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\ndeclare global {\n interface Window {\n qq: any;\n TMap: any;\n }\n}\n\n@Component({\n selector: 'rolatech-inventory-location-map',\n standalone: true,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatOptionModule,\n MatInputModule,\n MatIconModule,\n MatDialogActions,\n MatButtonModule,\n MatDialogClose,\n ],\n templateUrl: './inventory-location-map.component.html',\n styleUrl: './inventory-location-map.component.scss',\n})\nexport class InventoryLocationMapComponent implements OnInit {\n map: any;\n markers: any;\n lists: any;\n infoWindowList = Array(10);\n selectedLocation: any;\n cities: string[] = ['北京', '上海'];\n region = '北京';\n constructor(\n public dialogRef: MatDialogRef<InventoryLocationMapComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {}\n\n ngOnInit(): void {\n this.init();\n }\n\n init() {\n const map = new window.TMap.Map(document.getElementById('map-container'), {\n // 地图的中心地理坐标。\n center: new window.TMap.LatLng(40.0402718, 116.2735831),\n resizeEnable: true,\n zoom: 14,\n });\n const markers = new window.TMap.MultiMarker({\n map: map,\n geometries: [],\n });\n this.map = map;\n this.markers = markers;\n }\n onSearchChange(event: any) {\n const value = event.target.value;\n const suggest = new window.TMap.service.Suggestion({\n pageSize: 15, // 返回结果每页条目数\n region: this.region, // 限制城市范围\n regionFix: true, // 搜索无结果时是否固定在当前城市\n });\n if (value) {\n suggest\n .getSuggestions({ keyword: value, location: this.map.getCenter() })\n .then((result: any) => {\n this.lists = result.data;\n })\n .catch((error: any) => {});\n }\n }\n setLocation(index: any) {\n this.infoWindowList.forEach((infoWindow) => {\n infoWindow.close();\n });\n this.infoWindowList.length = 0;\n const item = this.lists[index];\n this.selectedLocation = item;\n this.lists = [];\n this.markers.setGeometries([]);\n this.markers.updateGeometries([\n {\n id: '0', // 点标注数据数组\n position: item.location,\n },\n ]);\n\n const infoWindow = new window.TMap.InfoWindow({\n map: this.map,\n position: item.location,\n content: `<h3>${item.title}</h3><p>地址:${item.address}</p>`,\n offset: { x: 0, y: -50 },\n });\n this.infoWindowList.push(infoWindow);\n this.map.setCenter(item.location);\n this.markers.on('click', (e: any) => {\n this.infoWindowList[Number(e.geometry.id)].open();\n });\n }\n onNoClick(): void {\n this.dialogRef.close();\n }\n selectionChange(event: any) {}\n}\n","@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n <div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label>城市</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"输入关键字搜索\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-[--rt-raised-background]\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close>取消</button>\n <button mat-flat-button [mat-dialog-close]=\"selectedLocation\" cdkFocusInitial>确定</button>\n</div>\n","import { Component, inject, input, output, ViewEncapsulation } 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 { MatInputModule } from '@angular/material/input';\nimport { MediaListComponent, MediaListItemComponent, TitleComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryLocationMapComponent } from '../inventory-location-map/inventory-location-map.component';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-inventory-location-item',\n standalone: true,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n TextFieldModule,\n MediaListComponent,\n MediaListItemComponent,\n MatDividerModule,\n TitleComponent,\n ],\n templateUrl: './inventory-location-item.component.html',\n styleUrl: './inventory-location-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationItemComponent {\n location = input.required<Location>();\n dialog = inject(MatDialog);\n save = output<Location>();\n delete = output<Location>();\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location().detail = address;\n this.location().latitude = lat;\n this.location().longitude = lng;\n this.location().province = result.province;\n this.location().city = result.city;\n this.location().district = result.district;\n this.location().detail = result.title;\n }\n });\n }\n onSave() {\n this.save.emit(this.location());\n }\n onDelete() {\n this.delete.emit(this.location());\n }\n}\n","<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 仓库名称 </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 联系人 </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"位置信息\"></rolatech-title>\n\n <button mat-stroked-button (click)=\"selectLocation()\">位置选择</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 省份 </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 城市 </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 区/县 </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> 地址 </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 详细 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\">删除</button>\n <button mat-flat-button type=\"primary\" (click)=\"onSave()\">保存</button>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InventoryLocationItemComponent } from '../../components/inventory-location-item/inventory-location-item.component';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-inventory-location-detail',\n standalone: true,\n imports: [CommonModule, InventoryLocationItemComponent, ToolbarComponent],\n templateUrl: './inventory-location-detail.component.html',\n styleUrl: './inventory-location-detail.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationDetailComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n location!: Location;\n\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.inventoryService.getLocation(this.id).subscribe({\n next: (res) => {\n this.location = res.data;\n },\n });\n }\n onLocationSave(e) {\n this.inventoryService.updateLocation(e.id, e).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n });\n }\n onLocationDetele(location: any) {\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.deleteLocation(location.id).subscribe({\n next: (res) => {\n this.snackBarService.open('删除成功');\n this.navigation.back();\n },\n });\n }\n },\n });\n }\n}\n","<rolatech-toolbar title=\"仓库详情\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ToolbarComponent, MediaListComponent, MediaListItemComponent, BaseComponent } from '@rolatech/angular-components';\nimport { InventoryService } from '@rolatech/angular-services';\nimport { InventoryLocationMapComponent } from '../../components/inventory-location-map/inventory-location-map.component';\n\n@Component({\n selector: 'rolatech-inventory-location-add',\n standalone: true,\n imports: [\n ToolbarComponent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n TextFieldModule,\n MediaListComponent,\n MediaListItemComponent,\n ],\n templateUrl: './inventory-location-add.component.html',\n styleUrl: './inventory-location-add.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationAddComponent extends BaseComponent {\n inventoryService = inject(InventoryService);\n\n location: any = {};\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location.detail = address;\n this.location.latitude = lat;\n this.location.longitude = lng;\n this.location.province = result.province;\n this.location.city = result.city;\n this.location.district = result.district;\n }\n });\n }\n\n add() {\n const data = {\n ...this.location,\n };\n\n this.inventoryService.addLocation(data).subscribe({\n next: (res) => {\n this.snackBarService.open('添加成功');\n },\n });\n }\n}\n","<rolatech-toolbar title=\"创建仓库\" back> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 仓库名称 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 联系人 </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>位置信息</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">位置选择</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> 省份 </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 城市 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 区/县 </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> 街道 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 地址 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 详细 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">保存</button>\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i8","i2","i3","i4","i1"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { c as InventoryLocationAddComponent, b as InventoryLocationComponent, i as inventoryRoutes } from './rolatech-angular-inventory-rolatech-angular-inventory-De3UY48K.mjs';
1
+ export { c as InventoryLocationAddComponent, a as InventoryLocationComponent, b as InventoryLocationDetailComponent, i as inventoryRoutes } from './rolatech-angular-inventory-rolatech-angular-inventory-DlSxFWx-.mjs';
2
2
  //# sourceMappingURL=rolatech-angular-inventory.mjs.map
package/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { inventoryRoutes } from './lib/pages/inventory.routes';
2
- export * from './lib/components';
3
2
  export { InventoryLocationComponent } from './lib/pages/inventory-location/inventory-location.component';
3
+ export { InventoryLocationDetailComponent } from './lib/pages/inventory-location-detail/inventory-location-detail.component';
4
+ export { InventoryLocationAddComponent } from './lib/pages/inventory-location-add/inventory-location-add.component';
@@ -1,10 +1,8 @@
1
- import { InventoryService, NavigationService } from '@rolatech/angular-services';
2
- import { MatDialog } from '@angular/material/dialog';
1
+ import { BaseComponent } from '@rolatech/angular-components';
2
+ import { InventoryService } from '@rolatech/angular-services';
3
3
  import * as i0 from "@angular/core";
4
- export declare class InventoryLocationAddComponent {
4
+ export declare class InventoryLocationAddComponent extends BaseComponent {
5
5
  inventoryService: InventoryService;
6
- dialog: MatDialog;
7
- navigationService: NavigationService;
8
6
  location: any;
9
7
  selectLocation(): void;
10
8
  add(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-inventory",
3
- "version": "17.0.4",
3
+ "version": "17.0.6",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.1.0",
6
6
  "@angular/core": "^17.1.0"
@@ -9,6 +9,10 @@
9
9
  "tslib": "^2.3.0"
10
10
  },
11
11
  "sideEffects": false,
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/viablecell/rolatech-web.git"
15
+ },
12
16
  "license": "MIT",
13
17
  "exports": {
14
18
  ".": {
@@ -1,2 +0,0 @@
1
- export { InventoryLocationAddComponent } from './inventory-location-add/inventory-location-add.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW52ZW50b3J5L3NyYy9saWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEludmVudG9yeUxvY2F0aW9uQWRkQ29tcG9uZW50IH0gZnJvbSAnLi9pbnZlbnRvcnktbG9jYXRpb24tYWRkL2ludmVudG9yeS1sb2NhdGlvbi1hZGQuY29tcG9uZW50JztcbiJdfQ==
@@ -1,70 +0,0 @@
1
- import { Component, inject } from '@angular/core';
2
- import { TextFieldModule } from '@angular/cdk/text-field';
3
- import { FormsModule } from '@angular/forms';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { MatInputModule } from '@angular/material/input';
7
- import { ToolbarComponent, MediaListComponent, MediaListItemComponent } from '@rolatech/angular-components';
8
- import { InventoryService, NavigationService } from '@rolatech/angular-services';
9
- import { MatDialog } from '@angular/material/dialog';
10
- import { InventoryLocationMapComponent } from '../inventory-location-map/inventory-location-map.component';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/forms";
13
- import * as i2 from "@angular/material/form-field";
14
- import * as i3 from "@angular/material/input";
15
- import * as i4 from "@angular/cdk/text-field";
16
- import * as i5 from "@angular/material/button";
17
- export class InventoryLocationAddComponent {
18
- constructor() {
19
- this.inventoryService = inject(InventoryService);
20
- this.dialog = inject(MatDialog);
21
- this.navigationService = inject(NavigationService);
22
- this.location = {};
23
- }
24
- selectLocation() {
25
- const dialogRef = this.dialog.open(InventoryLocationMapComponent, {
26
- width: '90%',
27
- data: {
28
- title: '选择位置',
29
- },
30
- });
31
- dialogRef.afterClosed().subscribe((result) => {
32
- if (result) {
33
- const address = result.address;
34
- const { lat, lng } = result.location;
35
- this.location.detail = address;
36
- this.location.latitude = lat;
37
- this.location.longitude = lng;
38
- this.location.province = result.province;
39
- this.location.city = result.city;
40
- this.location.district = result.district;
41
- }
42
- });
43
- }
44
- add() {
45
- const data = {
46
- ...this.location,
47
- };
48
- this.inventoryService.addLocation(data).subscribe({
49
- next: (res) => {
50
- this.navigationService.back();
51
- },
52
- });
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationAddComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: InventoryLocationAddComponent, isStandalone: true, selector: "rolatech-inventory-location-add", ngImport: i0, template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\"> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TextFieldModule }] }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationAddComponent, decorators: [{
58
- type: Component,
59
- args: [{ selector: 'rolatech-inventory-location-add', standalone: true, imports: [
60
- ToolbarComponent,
61
- FormsModule,
62
- MatFormFieldModule,
63
- MatInputModule,
64
- MatButtonModule,
65
- TextFieldModule,
66
- MediaListComponent,
67
- MediaListItemComponent,
68
- ], template: "<rolatech-toolbar title=\"\u521B\u5EFA\u4ED3\u5E93\"> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>\u4F4D\u7F6E\u4FE1\u606F</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> \u8857\u9053 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n" }]
69
- }] });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LWxvY2F0aW9uLWFkZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW52ZW50b3J5L3NyYy9saWIvY29tcG9uZW50cy9pbnZlbnRvcnktbG9jYXRpb24tYWRkL2ludmVudG9yeS1sb2NhdGlvbi1hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWludmVudG9yeS9zcmMvbGliL2NvbXBvbmVudHMvaW52ZW50b3J5LWxvY2F0aW9uLWFkZC9pbnZlbnRvcnktbG9jYXRpb24tYWRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7Ozs7Ozs7QUFrQjNHLE1BQU0sT0FBTyw2QkFBNkI7SUFoQjFDO1FBaUJFLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLFdBQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0Isc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFOUMsYUFBUSxHQUFRLEVBQUUsQ0FBQztLQWtDcEI7SUFoQ0MsY0FBYztRQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ2hFLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxNQUFNO2FBQ2Q7U0FDRixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUMvQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO2dCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUc7UUFDRCxNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsSUFBSSxDQUFDLFFBQVE7U0FDakIsQ0FBQztRQUVGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F0Q1UsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsMkZDNUIxQywwbEdBeUVBLDBERHpESSxnQkFBZ0IsK0hBQ2hCLFdBQVcsb3dDQUNYLGtCQUFrQiwwU0FDbEIsY0FBYyx5a0JBQ2QsZUFBZSwyTkFDZixlQUFlOzsyRkFPTiw2QkFBNkI7a0JBaEJ6QyxTQUFTOytCQUNFLGlDQUFpQyxjQUMvQixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixzQkFBc0I7cUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRleHRGaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50LCBNZWRpYUxpc3RDb21wb25lbnQsIE1lZGlhTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pbnZlbnRvcnktbG9jYXRpb24nO1xuaW1wb3J0IHsgSW52ZW50b3J5U2VydmljZSwgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgSW52ZW50b3J5TG9jYXRpb25NYXBDb21wb25lbnQgfSBmcm9tICcuLi9pbnZlbnRvcnktbG9jYXRpb24tbWFwL2ludmVudG9yeS1sb2NhdGlvbi1tYXAuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtaW52ZW50b3J5LWxvY2F0aW9uLWFkZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgVGV4dEZpZWxkTW9kdWxlLFxuICAgIE1lZGlhTGlzdENvbXBvbmVudCxcbiAgICBNZWRpYUxpc3RJdGVtQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vaW52ZW50b3J5LWxvY2F0aW9uLWFkZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9pbnZlbnRvcnktbG9jYXRpb24tYWRkLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgSW52ZW50b3J5TG9jYXRpb25BZGRDb21wb25lbnQge1xuICBpbnZlbnRvcnlTZXJ2aWNlID0gaW5qZWN0KEludmVudG9yeVNlcnZpY2UpO1xuICBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgbmF2aWdhdGlvblNlcnZpY2UgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIGxvY2F0aW9uOiBhbnkgPSB7fTtcblxuICBzZWxlY3RMb2NhdGlvbigpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEludmVudG9yeUxvY2F0aW9uTWFwQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzkwJScsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRpdGxlOiAn6YCJ5oup5L2N572uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHJlc3VsdC5hZGRyZXNzO1xuICAgICAgICBjb25zdCB7IGxhdCwgbG5nIH0gPSByZXN1bHQubG9jYXRpb247XG4gICAgICAgIHRoaXMubG9jYXRpb24uZGV0YWlsID0gYWRkcmVzcztcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5sYXRpdHVkZSA9IGxhdDtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5sb25naXR1ZGUgPSBsbmc7XG4gICAgICAgIHRoaXMubG9jYXRpb24ucHJvdmluY2UgPSByZXN1bHQucHJvdmluY2U7XG4gICAgICAgIHRoaXMubG9jYXRpb24uY2l0eSA9IHJlc3VsdC5jaXR5O1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmRpc3RyaWN0ID0gcmVzdWx0LmRpc3RyaWN0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAuLi50aGlzLmxvY2F0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLmludmVudG9yeVNlcnZpY2UuYWRkTG9jYXRpb24oZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5iYWNrKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCI8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIuWIm+W7uuS7k+W6k1wiPiA8L3JvbGF0ZWNoLXRvb2xiYXI+XG48ZGl2IGNsYXNzPVwicHgtMyBoLWZ1bGxcIj5cbiAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTIvMyBmbGV4IGZsZXgtY29sXCI+XG4gICAgICA8Zm9ybSAjbG9jYXRpb25Gb3JtPVwibmdGb3JtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgPCEtLSBiYXNlIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g5LuT5bqT5ZCN56ewIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJsb2NhdGlvbi5uYW1lXCIgbmFtZT1cIm5hbWVcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDogZTns7vkurogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLmNvbnRhY3RcIiBuYW1lPVwiY29udGFjdFwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOaJi+acuuWPtyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwibG9jYXRpb24ucGhvbmVcIiBuYW1lPVwicGhvbmVcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIGxvY2F0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMyBmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICA8aDI+5L2N572u5L+h5oGvPC9oMj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cInNlbGVjdExvY2F0aW9uKClcIj7kvY3nva7pgInmi6k8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOecgeS7vSA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwibG9jYXRpb24ucHJvdmluY2VcIiBuYW1lPVwicHJvdmluY2VcIiByZXF1aXJlZCBkaXNhYmxlZCAvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDln47luIIgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLmNpdHlcIiBuYW1lPVwiY2l0eVwiIHJlcXVpcmVkIGRpc2FibGVkIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOWMui/ljr8gPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLmRpc3RyaWN0XCIgbmFtZT1cImNvdW50eVwiIHJlcXVpcmVkIGRpc2FibGVkIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPCEtLSA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+IOihl+mBkyA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLnRvd25cIlxuICAgICAgICAgICAgICBuYW1lPVwidG93blwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4gLS0+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g5Zyw5Z2AIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJsb2NhdGlvbi5kZXRhaWxcIiBuYW1lPVwiYWRkcmVzc1wiIC8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOivpue7hiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxvY2F0aW9uLmRldGFpbFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImRldGFpbFwiXG4gICAgICAgICAgICAgICAgY2RrVGV4dGFyZWFBdXRvc2l6ZVxuICAgICAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjNcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB5LTNcIj5cbiAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJhZGQoKVwiPuS/neWtmDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,124 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { input, inject, output, Component, ViewEncapsulation } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import * as i4 from '@angular/cdk/text-field';
5
- import { TextFieldModule } from '@angular/cdk/text-field';
6
- import * as i1 from '@angular/forms';
7
- import { FormsModule } from '@angular/forms';
8
- import * as i5 from '@angular/material/button';
9
- import { MatButtonModule } from '@angular/material/button';
10
- import { MatDividerModule } from '@angular/material/divider';
11
- import * as i2 from '@angular/material/form-field';
12
- import { MatFormFieldModule } from '@angular/material/form-field';
13
- import * as i6 from '@angular/material/input';
14
- import { MatInputModule } from '@angular/material/input';
15
- import { TitleComponent, MediaListComponent, MediaListItemComponent, BaseComponent, ToolbarComponent } from '@rolatech/angular-components';
16
- import { I as InventoryLocationMapComponent } from './rolatech-angular-inventory-rolatech-angular-inventory-De3UY48K.mjs';
17
- import { MatDialog } from '@angular/material/dialog';
18
- import { InventoryService } from '@rolatech/angular-services';
19
-
20
- class InventoryLocationItemComponent {
21
- constructor() {
22
- this.location = input.required();
23
- this.dialog = inject(MatDialog);
24
- this.save = output();
25
- this.delete = output();
26
- }
27
- selectLocation() {
28
- const dialogRef = this.dialog.open(InventoryLocationMapComponent, {
29
- width: '90%',
30
- data: {
31
- title: '选择位置',
32
- },
33
- });
34
- dialogRef.afterClosed().subscribe((result) => {
35
- if (result) {
36
- const address = result.address;
37
- const { lat, lng } = result.location;
38
- this.location().detail = address;
39
- this.location().latitude = lat;
40
- this.location().longitude = lng;
41
- this.location().province = result.province;
42
- this.location().city = result.city;
43
- this.location().district = result.district;
44
- this.location().detail = result.title;
45
- }
46
- });
47
- }
48
- onSave() {
49
- this.save.emit(this.location());
50
- }
51
- onDelete() {
52
- this.delete.emit(this.location());
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.8", type: InventoryLocationItemComponent, isStandalone: true, selector: "rolatech-inventory-location-item", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { save: "save", delete: "delete" }, ngImport: i0, template: "<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"\u4F4D\u7F6E\u4FE1\u606F\"></rolatech-title>\n\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\">\u5220\u9664</button>\n <button mat-flat-button type=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: TitleComponent, selector: "rolatech-title", inputs: ["title", "subtitle", "large"] }], encapsulation: i0.ViewEncapsulation.None }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationItemComponent, decorators: [{
58
- type: Component,
59
- args: [{ selector: 'rolatech-inventory-location-item', standalone: true, imports: [
60
- MatFormFieldModule,
61
- MatInputModule,
62
- FormsModule,
63
- MatButtonModule,
64
- TextFieldModule,
65
- MediaListComponent,
66
- MediaListItemComponent,
67
- MatDividerModule,
68
- TitleComponent,
69
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u4ED3\u5E93\u540D\u79F0 </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8054\u7CFB\u4EBA </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"\u4F4D\u7F6E\u4FE1\u606F\"></rolatech-title>\n\n <button mat-stroked-button (click)=\"selectLocation()\">\u4F4D\u7F6E\u9009\u62E9</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7701\u4EFD </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u57CE\u5E02 </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u533A/\u53BF </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5730\u5740 </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u8BE6\u7EC6 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\">\u5220\u9664</button>\n <button mat-flat-button type=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div>\n </div>\n</div>\n" }]
70
- }] });
71
-
72
- class InventoryLocationDetailComponent extends BaseComponent {
73
- constructor() {
74
- super(...arguments);
75
- this.inventoryService = inject(InventoryService);
76
- }
77
- ngOnInit() {
78
- this.get();
79
- }
80
- get() {
81
- this.inventoryService.getLocation(this.id).subscribe({
82
- next: (res) => {
83
- this.location = res.data;
84
- },
85
- });
86
- }
87
- onLocationSave(e) {
88
- this.inventoryService.updateLocation(e.id, e).subscribe({
89
- next: (res) => {
90
- this.snackBarService.open('保存成功');
91
- },
92
- });
93
- }
94
- onLocationDetele(location) {
95
- const options = {
96
- title: '确定删除吗',
97
- message: `这会删除仓库, 确定吗?`,
98
- cancelText: '取消',
99
- confirmText: '确认',
100
- };
101
- this.dialogService.open(options);
102
- this.dialogService.confirmed().subscribe({
103
- next: (res) => {
104
- if (res) {
105
- this.inventoryService.deleteLocation(location.id).subscribe({
106
- next: (res) => {
107
- this.snackBarService.open('删除成功');
108
- this.navigation.back();
109
- },
110
- });
111
- }
112
- },
113
- });
114
- }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationDetailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
116
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: InventoryLocationDetailComponent, isStandalone: true, selector: "rolatech-inventory-location-detail", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"\u4ED3\u5E93\u8BE6\u60C5\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: InventoryLocationItemComponent, selector: "rolatech-inventory-location-item", inputs: ["location"], outputs: ["save", "delete"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }], encapsulation: i0.ViewEncapsulation.None }); }
117
- }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: InventoryLocationDetailComponent, decorators: [{
119
- type: Component,
120
- args: [{ selector: 'rolatech-inventory-location-detail', standalone: true, imports: [CommonModule, InventoryLocationItemComponent, ToolbarComponent], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"\u4ED3\u5E93\u8BE6\u60C5\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n" }]
121
- }] });
122
-
123
- export { InventoryLocationDetailComponent };
124
- //# sourceMappingURL=rolatech-angular-inventory-inventory-location-detail.component-BKR7in_r.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolatech-angular-inventory-inventory-location-detail.component-BKR7in_r.mjs","sources":["../../../../libs/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-location-item/inventory-location-item.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.ts","../../../../libs/angular-inventory/src/lib/pages/inventory-location-detail/inventory-location-detail.component.html"],"sourcesContent":["import { Component, inject, input, output, ViewEncapsulation } 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 { MatInputModule } from '@angular/material/input';\nimport { MediaListComponent, MediaListItemComponent, TitleComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryLocationMapComponent } from '../inventory-location-map/inventory-location-map.component';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-inventory-location-item',\n standalone: true,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n TextFieldModule,\n MediaListComponent,\n MediaListItemComponent,\n MatDividerModule,\n TitleComponent,\n ],\n templateUrl: './inventory-location-item.component.html',\n styleUrl: './inventory-location-item.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationItemComponent {\n location = input.required<Location>();\n dialog = inject(MatDialog);\n save = output<Location>();\n delete = output<Location>();\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location().detail = address;\n this.location().latitude = lat;\n this.location().longitude = lng;\n this.location().province = result.province;\n this.location().city = result.city;\n this.location().district = result.district;\n this.location().detail = result.title;\n }\n });\n }\n onSave() {\n this.save.emit(this.location());\n }\n onDelete() {\n this.delete.emit(this.location());\n }\n}\n","<div class=\"mb-8\">\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 仓库名称 </mat-label>\n <input matInput [(ngModel)]=\"location().name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 联系人 </mat-label>\n <input matInput [(ngModel)]=\"location().contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input matInput [(ngModel)]=\"location().phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <rolatech-title title=\"位置信息\"></rolatech-title>\n\n <button mat-stroked-button (click)=\"selectLocation()\">位置选择</button>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 省份 </mat-label>\n <input matInput [(ngModel)]=\"location().province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 城市 </mat-label>\n <input matInput [(ngModel)]=\"location().city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 区/县 </mat-label>\n <input matInput [(ngModel)]=\"location().district\" name=\"district\" required disabled />\n </mat-form-field>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> 地址 </mat-label>\n <input matInput [(ngModel)]=\"location().street\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 详细 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location().detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n <div>\n <button mat-button (click)=\"onDelete()\">删除</button>\n <button mat-flat-button type=\"primary\" (click)=\"onSave()\">保存</button>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InventoryLocationItemComponent } from '../../components/inventory-location-item/inventory-location-item.component';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-inventory-location-detail',\n standalone: true,\n imports: [CommonModule, InventoryLocationItemComponent, ToolbarComponent],\n templateUrl: './inventory-location-detail.component.html',\n styleUrl: './inventory-location-detail.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLocationDetailComponent extends BaseComponent implements OnInit {\n inventoryService = inject(InventoryService);\n location!: Location;\n\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.inventoryService.getLocation(this.id).subscribe({\n next: (res) => {\n this.location = res.data;\n },\n });\n }\n onLocationSave(e) {\n this.inventoryService.updateLocation(e.id, e).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n },\n });\n }\n onLocationDetele(location: any) {\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.deleteLocation(location.id).subscribe({\n next: (res) => {\n this.snackBarService.open('删除成功');\n this.navigation.back();\n },\n });\n }\n },\n });\n }\n}\n","<rolatech-toolbar title=\"仓库详情\" back> </rolatech-toolbar>\n@if (location) {\n <div class=\"px-3\">\n <rolatech-inventory-location-item\n [location]=\"location\"\n (save)=\"onLocationSave($event)\"\n (delete)=\"onLocationDetele($event)\"\n ></rolatech-inventory-location-item>\n </div>\n}\n"],"names":["i2","i3","i4"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolatech-angular-inventory-rolatech-angular-inventory-De3UY48K.mjs","sources":["../../../../libs/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-layout/inventory-layout.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory.routes.ts","../../../../libs/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-location-map/inventory-location-map.component.html","../../../../libs/angular-inventory/src/lib/components/inventory-location-add/inventory-location-add.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-location-add/inventory-location-add.component.html","../../../../libs/angular-inventory/src/lib/components/inventory-content/inventory-content.component.ts","../../../../libs/angular-inventory/src/lib/components/inventory-content/inventory-content.component.html","../../../../libs/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.ts","../../../../libs/angular-inventory/src/lib/pages/inventory-location/inventory-location.component.html","../../../../libs/angular-inventory/src/rolatech-angular-inventory.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n selector: 'rolatech-inventory-layout',\n standalone: true,\n imports: [CommonModule, RouterModule],\n templateUrl: './inventory-layout.component.html',\n styleUrl: './inventory-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InventoryLayoutComponent {}\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=\"./locations\" 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=\"./products\" routerLinkActive=\"manage-active\" class=\"p-2\">商品</a>\n <!-- <a routerLink=\"./inventory\" routerLinkActive=\"manage-active\" class=\"p-2\">库存设置</a> -->\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { Routes } from '@angular/router';\nimport { InventoryLayoutComponent } from '../components/inventory-layout/inventory-layout.component';\n\nexport const inventoryRoutes: Routes = [\n {\n path: '',\n component: InventoryLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./inventory/inventory.component').then((c) => c.InventoryComponent),\n },\n {\n path: 'locations',\n loadComponent: () =>\n import('./inventory-location/inventory-location.component').then((c) => c.InventoryLocationComponent),\n },\n {\n path: 'locations/add',\n loadComponent: () =>\n import('../components/inventory-location-add/inventory-location-add.component').then(\n (c) => c.InventoryLocationAddComponent,\n ),\n },\n {\n path: 'locations/:id',\n loadComponent: () =>\n import('./inventory-location-detail/inventory-location-detail.component').then(\n (c) => c.InventoryLocationDetailComponent,\n ),\n },\n {\n path: 'products',\n loadComponent: () => import('./inventory-product/inventory-product.component').then((c) => c.InventoryProductComponent),\n },\n ],\n },\n];\n","import { Component, Inject, OnInit } from '@angular/core';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from '@angular/material/dialog';\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 { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\ndeclare global {\n interface Window {\n qq: any;\n TMap: any;\n }\n}\n\n@Component({\n selector: 'rolatech-inventory-location-map',\n standalone: true,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n MatOptionModule,\n MatInputModule,\n MatIconModule,\n MatDialogActions,\n MatButtonModule,\n MatDialogClose,\n ],\n templateUrl: './inventory-location-map.component.html',\n styleUrl: './inventory-location-map.component.scss',\n})\nexport class InventoryLocationMapComponent implements OnInit {\n map: any;\n markers: any;\n lists: any;\n infoWindowList = Array(10);\n selectedLocation: any;\n cities: string[] = ['北京', '上海'];\n region = '北京';\n constructor(\n public dialogRef: MatDialogRef<InventoryLocationMapComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {}\n\n ngOnInit(): void {\n this.init();\n }\n\n init() {\n const map = new window.TMap.Map(document.getElementById('map-container'), {\n // 地图的中心地理坐标。\n center: new window.TMap.LatLng(40.0402718, 116.2735831),\n resizeEnable: true,\n zoom: 14,\n });\n const markers = new window.TMap.MultiMarker({\n map: map,\n geometries: [],\n });\n this.map = map;\n this.markers = markers;\n }\n onSearchChange(event: any) {\n const value = event.target.value;\n const suggest = new window.TMap.service.Suggestion({\n pageSize: 15, // 返回结果每页条目数\n region: this.region, // 限制城市范围\n regionFix: true, // 搜索无结果时是否固定在当前城市\n });\n if (value) {\n suggest\n .getSuggestions({ keyword: value, location: this.map.getCenter() })\n .then((result: any) => {\n this.lists = result.data;\n })\n .catch((error: any) => {});\n }\n }\n setLocation(index: any) {\n this.infoWindowList.forEach((infoWindow) => {\n infoWindow.close();\n });\n this.infoWindowList.length = 0;\n const item = this.lists[index];\n this.selectedLocation = item;\n this.lists = [];\n this.markers.setGeometries([]);\n this.markers.updateGeometries([\n {\n id: '0', // 点标注数据数组\n position: item.location,\n },\n ]);\n\n const infoWindow = new window.TMap.InfoWindow({\n map: this.map,\n position: item.location,\n content: `<h3>${item.title}</h3><p>地址:${item.address}</p>`,\n offset: { x: 0, y: -50 },\n });\n this.infoWindowList.push(infoWindow);\n this.map.setCenter(item.location);\n this.markers.on('click', (e: any) => {\n this.infoWindowList[Number(e.geometry.id)].open();\n });\n }\n onNoClick(): void {\n this.dialogRef.close();\n }\n selectionChange(event: any) {}\n}\n","@if (data.title) {\n <h2 mat-dialog-title>{{ data.title }}</h2>\n}\n<div mat-dialog-content>\n <div class=\"h-full\">\n <div class=\"relative h-full\">\n <div id=\"map-container\" class=\"h-full\"></div>\n <div class=\"absolute bg-white z-[9999] top-[30px] left-[30px]\">\n <div class=\"flex gap-3 px-3 pt-3\">\n <mat-form-field appearance=\"fill\" [style.width.px]=\"180\">\n <mat-label>城市</mat-label>\n <mat-select #select=\"matSelect\" [(ngModel)]=\"region\" (selectionChange)=\"selectionChange($event)\">\n @for (city of cities; track city) {\n <mat-option [value]=\"city\">\n {{ city }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input matInput placeholder=\"输入关键字搜索\" (input)=\"onSearchChange($event)\" />\n </mat-form-field>\n </div>\n <div class=\"max-h-[320px] overflow-scroll pb-3 bg-white\">\n @for (item of lists; track item; let index = $index) {\n <div (click)=\"setLocation(index)\" class=\"cursor-pointer\">\n <div class=\"p-3 flex items-center gap-2 hover:bg-[--rt-raised-background]\">\n <mat-icon fontIcon=\"location_on\"></mat-icon>\n <div class=\"text-sm font-thin\">{{ item.title }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close>取消</button>\n <button mat-flat-button [mat-dialog-close]=\"selectedLocation\" cdkFocusInitial>确定</button>\n</div>\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 { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ToolbarComponent, MediaListComponent, MediaListItemComponent } from '@rolatech/angular-components';\nimport { Location } from '../../interfaces/inventory-location';\nimport { InventoryService, NavigationService } from '@rolatech/angular-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { InventoryLocationMapComponent } from '../inventory-location-map/inventory-location-map.component';\n\n@Component({\n selector: 'rolatech-inventory-location-add',\n standalone: true,\n imports: [\n ToolbarComponent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n TextFieldModule,\n MediaListComponent,\n MediaListItemComponent,\n ],\n templateUrl: './inventory-location-add.component.html',\n styleUrl: './inventory-location-add.component.scss',\n})\nexport class InventoryLocationAddComponent {\n inventoryService = inject(InventoryService);\n dialog = inject(MatDialog);\n navigationService = inject(NavigationService);\n\n location: any = {};\n\n selectLocation() {\n const dialogRef = this.dialog.open(InventoryLocationMapComponent, {\n width: '90%',\n data: {\n title: '选择位置',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n const address = result.address;\n const { lat, lng } = result.location;\n this.location.detail = address;\n this.location.latitude = lat;\n this.location.longitude = lng;\n this.location.province = result.province;\n this.location.city = result.city;\n this.location.district = result.district;\n }\n });\n }\n\n add() {\n const data = {\n ...this.location,\n };\n\n this.inventoryService.addLocation(data).subscribe({\n next: (res) => {\n this.navigationService.back();\n },\n });\n }\n}\n","<rolatech-toolbar title=\"创建仓库\"> </rolatech-toolbar>\n<div class=\"px-3 h-full\">\n <div class=\"w-full\">\n <div class=\"w-2/3 flex flex-col\">\n <form #locationForm=\"ngForm\">\n <div class=\"flex flex-col\">\n <!-- base -->\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 仓库名称 </mat-label>\n <input matInput [(ngModel)]=\"location.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 联系人 </mat-label>\n <input matInput [(ngModel)]=\"location.contact\" name=\"contact\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 手机号 </mat-label>\n <input matInput [(ngModel)]=\"location.phone\" name=\"phone\" required />\n </mat-form-field>\n </div>\n <!-- location -->\n <div class=\"flex flex-col\">\n <div class=\"py-3 flex justify-between\">\n <h2>位置信息</h2>\n <button mat-stroked-button (click)=\"selectLocation()\">位置选择</button>\n </div>\n <mat-form-field appearance=\"fill\">\n <mat-label> 省份 </mat-label>\n <input matInput [(ngModel)]=\"location.province\" name=\"province\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 城市 </mat-label>\n <input matInput [(ngModel)]=\"location.city\" name=\"city\" required disabled />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 区/县 </mat-label>\n <input matInput [(ngModel)]=\"location.district\" name=\"county\" required disabled />\n </mat-form-field>\n <!-- <mat-form-field appearance=\"fill\">\n <mat-label> 街道 </mat-label>\n <input\n matInput\n [(ngModel)]=\"location.town\"\n name=\"town\"\n required\n readonly\n />\n </mat-form-field> -->\n <mat-form-field appearance=\"fill\">\n <mat-label> 地址 </mat-label>\n <input matInput [(ngModel)]=\"location.detail\" name=\"address\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 详细 </mat-label>\n <textarea\n matInput\n [(ngModel)]=\"location.detail\"\n name=\"detail\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n </form>\n </div>\n <div class=\"py-3\">\n <button mat-flat-button (click)=\"add()\">保存</button>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-inventory-content',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './inventory-content.component.html',\n styleUrl: './inventory-content.component.scss',\n})\nexport class InventoryContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolbarComponent } from '@rolatech/angular-components';\nimport { InventoryContentComponent } from '../../components/inventory-content/inventory-content.component';\nimport { InventoryService } from '@rolatech/angular-services';\nimport { Location } from '../../interfaces/inventory-location';\nimport { RouterLink } from '@angular/router';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-inventory-location',\n standalone: true,\n imports: [CommonModule, ToolbarComponent, InventoryContentComponent, RouterLink, MatButtonModule, MatIcon],\n templateUrl: './inventory-location.component.html',\n styleUrl: './inventory-location.component.scss',\n})\nexport class InventoryLocationComponent implements OnInit {\n inventoryService = inject(InventoryService);\n locations: Location[] = [];\n\n ngOnInit(): void {\n this.findLocations();\n }\n findLocations() {\n this.inventoryService.findLocations({}).subscribe({\n next: (res) => {\n this.locations = res.data;\n },\n });\n }\n addLocation(data) {\n this.inventoryService.addLocation(data);\n }\n}\n","<rolatech-inventory-content>\n <rolatech-toolbar title=\"仓库设置\" class=\"hidden md:block\" divider>\n <div class=\"flex items-center gap-2\">\n <button mat-stroked-button routerLink=\"./add\">\n <mat-icon>add</mat-icon>\n 创建仓库\n </button>\n </div>\n </rolatech-toolbar>\n <div class=\"divide-y\">\n @for (item of locations; track $index) {\n <div [routerLink]=\"item.id\" class=\"flex items-center px-1 h-11 hover:cursor-pointer hover:bg-[--rt-raised-background]\">\n <div class=\"font-bold\">{{ item.name }}</div>\n <div></div>\n </div>\n }\n </div>\n</rolatech-inventory-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5","i8","i1","i3","i4"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export { InventoryLocationAddComponent } from './inventory-location-add/inventory-location-add.component';