@rolatech/angular-booking 19.0.0-beta.11 → 19.0.0-beta.12
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/fesm2022/rolatech-angular-booking.mjs +294 -1
- package/fesm2022/rolatech-angular-booking.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/components/booking-item/booking-item.component.d.ts +8 -0
- package/lib/components/index.d.ts +3 -0
- package/lib/components/period-item/period-item.component.d.ts +28 -0
- package/lib/components/session-item/session-item.component.d.ts +26 -0
- package/lib/interfaces/booking.d.ts +61 -0
- package/lib/interfaces/category.d.ts +14 -0
- package/lib/interfaces/facility.d.ts +12 -0
- package/lib/interfaces/index.d.ts +7 -0
- package/lib/interfaces/media.d.ts +9 -0
- package/lib/interfaces/partner.d.ts +32 -0
- package/lib/interfaces/resource-variant.d.ts +6 -0
- package/lib/interfaces/resource.d.ts +86 -0
- package/package.json +1 -1
|
@@ -1,8 +1,301 @@
|
|
|
1
|
+
import { DatePipe } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { model, input, output, Component } from '@angular/core';
|
|
4
|
+
import { MomentDateAdapter } from '@angular/material-moment-adapter';
|
|
5
|
+
import * as i5 from '@angular/material/core';
|
|
6
|
+
import { MatOptionModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
7
|
+
import * as i6 from '@angular/material/button';
|
|
8
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
9
|
+
import * as i4 from '@angular/material/select';
|
|
10
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
11
|
+
import * as i3 from '@angular/forms';
|
|
12
|
+
import { FormsModule } from '@angular/forms';
|
|
13
|
+
import * as i2 from '@angular/material/input';
|
|
14
|
+
import { MatInputModule } from '@angular/material/input';
|
|
15
|
+
import * as i1 from '@angular/material/form-field';
|
|
16
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
17
|
+
import moment from 'moment';
|
|
18
|
+
import * as i4$1 from '@angular/material/datepicker';
|
|
19
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
20
|
+
import * as i1$1 from '@angular/material/icon';
|
|
21
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
22
|
+
|
|
1
23
|
const bookingRoutes = [];
|
|
2
24
|
|
|
25
|
+
var ResourceStatus;
|
|
26
|
+
(function (ResourceStatus) {
|
|
27
|
+
ResourceStatus[ResourceStatus["DRAFT"] = '草稿'] = "DRAFT";
|
|
28
|
+
ResourceStatus[ResourceStatus["AWAITING"] = '审核中'] = "AWAITING";
|
|
29
|
+
ResourceStatus[ResourceStatus["PENDING"] = '审核中'] = "PENDING";
|
|
30
|
+
ResourceStatus[ResourceStatus["ACTIVE"] = '已发布'] = "ACTIVE";
|
|
31
|
+
ResourceStatus[ResourceStatus["ACCEPTED"] = '已通过'] = "ACCEPTED";
|
|
32
|
+
ResourceStatus[ResourceStatus["DELETED"] = '已删除'] = "DELETED";
|
|
33
|
+
})(ResourceStatus || (ResourceStatus = {}));
|
|
34
|
+
var ResourceType;
|
|
35
|
+
(function (ResourceType) {
|
|
36
|
+
ResourceType[ResourceType["CLASSROOM"] = '教室'] = "CLASSROOM";
|
|
37
|
+
})(ResourceType || (ResourceType = {}));
|
|
38
|
+
const PeriodDate = [
|
|
39
|
+
'00:00',
|
|
40
|
+
'00:15',
|
|
41
|
+
'00:30',
|
|
42
|
+
'00:45',
|
|
43
|
+
'01:00',
|
|
44
|
+
'01:15',
|
|
45
|
+
'01:30',
|
|
46
|
+
'01:45',
|
|
47
|
+
'02:00',
|
|
48
|
+
'02:15',
|
|
49
|
+
'02:30',
|
|
50
|
+
'02:45',
|
|
51
|
+
'03:00',
|
|
52
|
+
'03:15',
|
|
53
|
+
'03:30',
|
|
54
|
+
'03:45',
|
|
55
|
+
'04:00',
|
|
56
|
+
'04:15',
|
|
57
|
+
'04:30',
|
|
58
|
+
'04:45',
|
|
59
|
+
'05:00',
|
|
60
|
+
'05:15',
|
|
61
|
+
'05:30',
|
|
62
|
+
'05:45',
|
|
63
|
+
'06:00',
|
|
64
|
+
'06:15',
|
|
65
|
+
'06:30',
|
|
66
|
+
'06:45',
|
|
67
|
+
'07:00',
|
|
68
|
+
'07:15',
|
|
69
|
+
'07:30',
|
|
70
|
+
'07:45',
|
|
71
|
+
'08:00',
|
|
72
|
+
'08:15',
|
|
73
|
+
'08:30',
|
|
74
|
+
'08:45',
|
|
75
|
+
'09:00',
|
|
76
|
+
'09:15',
|
|
77
|
+
'09:30',
|
|
78
|
+
'09:45',
|
|
79
|
+
'10:00',
|
|
80
|
+
'10:15',
|
|
81
|
+
'10:30',
|
|
82
|
+
'10:45',
|
|
83
|
+
'11:00',
|
|
84
|
+
'11:15',
|
|
85
|
+
'11:30',
|
|
86
|
+
'11:45',
|
|
87
|
+
'12:00',
|
|
88
|
+
'12:15',
|
|
89
|
+
'12:30',
|
|
90
|
+
'12:45',
|
|
91
|
+
'13:00',
|
|
92
|
+
'13:15',
|
|
93
|
+
'13:30',
|
|
94
|
+
'13:45',
|
|
95
|
+
'14:00',
|
|
96
|
+
'14:15',
|
|
97
|
+
'14:30',
|
|
98
|
+
'14:45',
|
|
99
|
+
'15:00',
|
|
100
|
+
'15:15',
|
|
101
|
+
'15:30',
|
|
102
|
+
'15:45',
|
|
103
|
+
'16:00',
|
|
104
|
+
'16:15',
|
|
105
|
+
'16:30',
|
|
106
|
+
'16:45',
|
|
107
|
+
'17:00',
|
|
108
|
+
'17:15',
|
|
109
|
+
'17:30',
|
|
110
|
+
'17:45',
|
|
111
|
+
'18:00',
|
|
112
|
+
'18:15',
|
|
113
|
+
'18:30',
|
|
114
|
+
'18:45',
|
|
115
|
+
'19:00',
|
|
116
|
+
'19:15',
|
|
117
|
+
'19:30',
|
|
118
|
+
'19:45',
|
|
119
|
+
'20:00',
|
|
120
|
+
'20:15',
|
|
121
|
+
'20:30',
|
|
122
|
+
'20:45',
|
|
123
|
+
'21:00',
|
|
124
|
+
'21:15',
|
|
125
|
+
'21:30',
|
|
126
|
+
'21:45',
|
|
127
|
+
'22:00',
|
|
128
|
+
'22:15',
|
|
129
|
+
'22:30',
|
|
130
|
+
'22:45',
|
|
131
|
+
'23:00',
|
|
132
|
+
'23:15',
|
|
133
|
+
'23:30',
|
|
134
|
+
'23:45',
|
|
135
|
+
];
|
|
136
|
+
|
|
137
|
+
const MY_FORMATS$1 = {
|
|
138
|
+
parse: {
|
|
139
|
+
dateInput: 'YYYY-MM-DD',
|
|
140
|
+
},
|
|
141
|
+
display: {
|
|
142
|
+
dateInput: 'YYYY-MM-DD',
|
|
143
|
+
monthYearLabel: 'MMM YYYY',
|
|
144
|
+
dateA11yLabel: 'YYYY-MM-DD',
|
|
145
|
+
monthYearA11yLabel: 'MMMM YYYY',
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
class PeriodItemComponent {
|
|
149
|
+
period = model.required();
|
|
150
|
+
actions = input(false);
|
|
151
|
+
delete = output();
|
|
152
|
+
save = output();
|
|
153
|
+
date = PeriodDate;
|
|
154
|
+
ngOnInit() {
|
|
155
|
+
// this.period.startTime = moment(this.period.startTime).format('HH:mm');
|
|
156
|
+
// this.period.endTime = moment(this.period.endTime).format('HH:mm');
|
|
157
|
+
}
|
|
158
|
+
startTimeChanged(event) { }
|
|
159
|
+
endTimeChanged(event) { }
|
|
160
|
+
onSave(period) {
|
|
161
|
+
this.save.emit(period);
|
|
162
|
+
}
|
|
163
|
+
onDelete(period) {
|
|
164
|
+
this.delete.emit(period);
|
|
165
|
+
}
|
|
166
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: PeriodItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
167
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: PeriodItemComponent, isStandalone: true, selector: "rolatech-period-item", inputs: { period: { classPropertyName: "period", publicName: "period", isSignal: true, isRequired: true, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { period: "periodChange", delete: "delete", save: "save" }, providers: [
|
|
168
|
+
{
|
|
169
|
+
provide: DateAdapter,
|
|
170
|
+
useClass: MomentDateAdapter,
|
|
171
|
+
deps: [MAT_DATE_LOCALE],
|
|
172
|
+
},
|
|
173
|
+
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS$1 },
|
|
174
|
+
DatePipe,
|
|
175
|
+
], ngImport: i0, template: "<div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u540D\u79F0 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"period.name\" name=\"name\" required />\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5F00\u59CB\u65F6\u95F4</mat-label>\n <mat-select [(ngModel)]=\"period().startTime\" (selectionChange)=\"startTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7ED3\u675F\u65F6\u95F4</mat-label>\n <mat-select [(ngModel)]=\"period().endTime\" (selectionChange)=\"endTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button (click)=\"onDelete(period())\">\u5220\u9664</button>\n <button mat-flat-button (click)=\"onSave(period())\">\u4FDD\u5B58</button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
|
|
176
|
+
}
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: PeriodItemComponent, decorators: [{
|
|
178
|
+
type: Component,
|
|
179
|
+
args: [{ selector: 'rolatech-period-item', providers: [
|
|
180
|
+
{
|
|
181
|
+
provide: DateAdapter,
|
|
182
|
+
useClass: MomentDateAdapter,
|
|
183
|
+
deps: [MAT_DATE_LOCALE],
|
|
184
|
+
},
|
|
185
|
+
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS$1 },
|
|
186
|
+
DatePipe,
|
|
187
|
+
], imports: [MatFormFieldModule, MatInputModule, FormsModule, MatSelectModule, MatOptionModule, MatButtonModule], template: "<div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u540D\u79F0 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"period.name\" name=\"name\" required />\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5F00\u59CB\u65F6\u95F4</mat-label>\n <mat-select [(ngModel)]=\"period().startTime\" (selectionChange)=\"startTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7ED3\u675F\u65F6\u95F4</mat-label>\n <mat-select [(ngModel)]=\"period().endTime\" (selectionChange)=\"endTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button (click)=\"onDelete(period())\">\u5220\u9664</button>\n <button mat-flat-button (click)=\"onSave(period())\">\u4FDD\u5B58</button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
|
|
188
|
+
}] });
|
|
189
|
+
|
|
190
|
+
const MY_FORMATS = {
|
|
191
|
+
parse: {
|
|
192
|
+
dateInput: 'YYYY-MM-DD',
|
|
193
|
+
},
|
|
194
|
+
display: {
|
|
195
|
+
dateInput: 'YYYY-MM-DD',
|
|
196
|
+
monthYearLabel: 'MMM YYYY',
|
|
197
|
+
dateA11yLabel: 'YYYY-MM-DD',
|
|
198
|
+
monthYearA11yLabel: 'MMMM YYYY',
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
class SessionItemComponent {
|
|
202
|
+
session = model.required();
|
|
203
|
+
actions = input(false);
|
|
204
|
+
delete = output();
|
|
205
|
+
save = output();
|
|
206
|
+
date = PeriodDate;
|
|
207
|
+
ngOnInit() {
|
|
208
|
+
this.session().startDate = moment(this.session().startDate).format('YYYY-MM-DD');
|
|
209
|
+
this.session().endDate = moment(this.session().endDate).format('YYYY-MM-DD');
|
|
210
|
+
}
|
|
211
|
+
onSave(session) {
|
|
212
|
+
this.save.emit(session);
|
|
213
|
+
}
|
|
214
|
+
onDelete(session) {
|
|
215
|
+
this.delete.emit(session);
|
|
216
|
+
}
|
|
217
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SessionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SessionItemComponent, isStandalone: true, selector: "rolatech-session-item", inputs: { session: { classPropertyName: "session", publicName: "session", isSignal: true, isRequired: true, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { session: "sessionChange", delete: "delete", save: "save" }, providers: [
|
|
219
|
+
{
|
|
220
|
+
provide: DateAdapter,
|
|
221
|
+
useClass: MomentDateAdapter,
|
|
222
|
+
deps: [MAT_DATE_LOCALE],
|
|
223
|
+
},
|
|
224
|
+
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
225
|
+
DatePipe,
|
|
226
|
+
], ngImport: i0, template: "<div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u540D\u79F0 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"session.name\" name=\"name\" required />\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5F00\u59CB\u65E5\u671F</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n (focus)=\"picker.open()\"\n name=\"startAt\"\n [(ngModel)]=\"session().startDate\"\n (dateInput)=\"session().startDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7ED3\u675F\u65E5\u671F</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker2\"\n name=\"endAt\"\n (focus)=\"picker2.open()\"\n [(ngModel)]=\"session().endDate\"\n (dateInput)=\"session().endDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </mat-form-field>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button (click)=\"onDelete(session())\">\u5220\u9664</button>\n <button mat-flat-button (click)=\"onSave(session())\">\u4FDD\u5B58</button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
|
|
227
|
+
}
|
|
228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SessionItemComponent, decorators: [{
|
|
229
|
+
type: Component,
|
|
230
|
+
args: [{ selector: 'rolatech-session-item', providers: [
|
|
231
|
+
{
|
|
232
|
+
provide: DateAdapter,
|
|
233
|
+
useClass: MomentDateAdapter,
|
|
234
|
+
deps: [MAT_DATE_LOCALE],
|
|
235
|
+
},
|
|
236
|
+
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
237
|
+
DatePipe,
|
|
238
|
+
], imports: [MatFormFieldModule, MatInputModule, FormsModule, MatDatepickerModule, MatButtonModule], template: "<div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u540D\u79F0 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"session.name\" name=\"name\" required />\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5F00\u59CB\u65E5\u671F</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n (focus)=\"picker.open()\"\n name=\"startAt\"\n [(ngModel)]=\"session().startDate\"\n (dateInput)=\"session().startDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7ED3\u675F\u65E5\u671F</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker2\"\n name=\"endAt\"\n (focus)=\"picker2.open()\"\n [(ngModel)]=\"session().endDate\"\n (dateInput)=\"session().endDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </mat-form-field>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button (click)=\"onDelete(session())\">\u5220\u9664</button>\n <button mat-flat-button (click)=\"onSave(session())\">\u4FDD\u5B58</button>\n </div>\n }\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
|
|
239
|
+
}] });
|
|
240
|
+
|
|
241
|
+
var BookingStatus;
|
|
242
|
+
(function (BookingStatus) {
|
|
243
|
+
BookingStatus[BookingStatus["CREATED"] = '待付款'] = "CREATED";
|
|
244
|
+
BookingStatus[BookingStatus["PAID"] = '已支付'] = "PAID";
|
|
245
|
+
BookingStatus[BookingStatus["COMPLETED"] = '已完成'] = "COMPLETED";
|
|
246
|
+
BookingStatus[BookingStatus["CLOSED"] = '交易关闭'] = "CLOSED";
|
|
247
|
+
BookingStatus[BookingStatus["CANCELED"] = '交易取消'] = "CANCELED";
|
|
248
|
+
BookingStatus[BookingStatus["REFUNDED"] = '已退款'] = "REFUNDED";
|
|
249
|
+
})(BookingStatus || (BookingStatus = {}));
|
|
250
|
+
var BookingReturnStatus;
|
|
251
|
+
(function (BookingReturnStatus) {
|
|
252
|
+
BookingReturnStatus[BookingReturnStatus["CREATED"] = '等待审核'] = "CREATED";
|
|
253
|
+
BookingReturnStatus[BookingReturnStatus["CANCELED"] = '用户取消'] = "CANCELED";
|
|
254
|
+
BookingReturnStatus[BookingReturnStatus["APPROVED"] = '已通过'] = "APPROVED";
|
|
255
|
+
BookingReturnStatus[BookingReturnStatus["REJECTED"] = '已拒绝'] = "REJECTED";
|
|
256
|
+
BookingReturnStatus[BookingReturnStatus["PROCESSING"] = '平台处理中'] = "PROCESSING";
|
|
257
|
+
BookingReturnStatus[BookingReturnStatus["RETURNED"] = '已退款'] = "RETURNED";
|
|
258
|
+
})(BookingReturnStatus || (BookingReturnStatus = {}));
|
|
259
|
+
var BookingItemStatus;
|
|
260
|
+
(function (BookingItemStatus) {
|
|
261
|
+
BookingItemStatus[BookingItemStatus["CREATED"] = '创建'] = "CREATED";
|
|
262
|
+
BookingItemStatus[BookingItemStatus["CANCELED"] = '已取消'] = "CANCELED";
|
|
263
|
+
BookingItemStatus[BookingItemStatus["CLOSED"] = '已关闭'] = "CLOSED";
|
|
264
|
+
BookingItemStatus[BookingItemStatus["RETURN_REQUESTED"] = '等待审核'] = "RETURN_REQUESTED";
|
|
265
|
+
BookingItemStatus[BookingItemStatus["RETURN_APPROVED"] = '商家同意退款'] = "RETURN_APPROVED";
|
|
266
|
+
BookingItemStatus[BookingItemStatus["RETURN_REJECTED"] = '商家拒绝退款'] = "RETURN_REJECTED";
|
|
267
|
+
BookingItemStatus[BookingItemStatus["RETURN_PROCESSING"] = '退款处理中'] = "RETURN_PROCESSING";
|
|
268
|
+
BookingItemStatus[BookingItemStatus["REFUNDED"] = '已退款'] = "REFUNDED";
|
|
269
|
+
})(BookingItemStatus || (BookingItemStatus = {}));
|
|
270
|
+
var BookingTimelineStatus;
|
|
271
|
+
(function (BookingTimelineStatus) {
|
|
272
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_CREATE"] = '交易创建'] = "BOOKING_CREATE";
|
|
273
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_CLOSED"] = '交易关闭'] = "BOOKING_CLOSED";
|
|
274
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_CANCELED"] = '交易取消'] = "BOOKING_CANCELED";
|
|
275
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_PAID"] = '订单已支付'] = "BOOKING_PAID";
|
|
276
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_REFUNDED"] = '订单已退款'] = "BOOKING_REFUNDED";
|
|
277
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_COMPLETED"] = '订单已完成'] = "BOOKING_COMPLETED";
|
|
278
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_RETURN_REQUESTED"] = '退款申请'] = "BOOKING_RETURN_REQUESTED";
|
|
279
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_RETURN_APPROVED"] = '商家同意退款'] = "BOOKING_RETURN_APPROVED";
|
|
280
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_RETURN_REJECTED"] = '商家拒绝退款'] = "BOOKING_RETURN_REJECTED";
|
|
281
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_RETURN_PROCESSING"] = '退款处理中'] = "BOOKING_RETURN_PROCESSING";
|
|
282
|
+
BookingTimelineStatus[BookingTimelineStatus["BOOKING_RETURN_REFUNDED"] = '退款处理完成,已入账'] = "BOOKING_RETURN_REFUNDED";
|
|
283
|
+
})(BookingTimelineStatus || (BookingTimelineStatus = {}));
|
|
284
|
+
|
|
285
|
+
class BookingItemComponent {
|
|
286
|
+
booking = input.required();
|
|
287
|
+
status = BookingStatus;
|
|
288
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: BookingItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
289
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: BookingItemComponent, isStandalone: true, selector: "rolatech-booking-item", inputs: { booking: { classPropertyName: "booking", publicName: "booking", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"flex flex-col p-3 hover:bg-[--rt-raised-background] cursor-pointer\">\n <div class=\"flex justify-between w-full\">\n <span>\u9884\u8BA2\u53F7: {{ booking().bookingNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[booking().status] }}</span>\n </div>\n @if (booking().product) {\n <div class=\"flex items-center justify-between\">\n <div>\n <span class=\"font-bold break-words line-clamp-2\">\u5546\u54C1: {{ booking().product.name }}</span>\n @if (booking().items) {\n <span class=\"font-bold break-words line-clamp-2\">\u6559\u5BA4: {{ booking().items[0].variant.classroom.name }}</span>\n }\n <span class=\"mt-2 text-md\">\u91D1\u989D: \u00A5{{ booking().total / 100 }}</span>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n }\n</div>\n<hr />\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
290
|
+
}
|
|
291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: BookingItemComponent, decorators: [{
|
|
292
|
+
type: Component,
|
|
293
|
+
args: [{ selector: 'rolatech-booking-item', imports: [MatIconModule], template: "<div class=\"flex flex-col p-3 hover:bg-[--rt-raised-background] cursor-pointer\">\n <div class=\"flex justify-between w-full\">\n <span>\u9884\u8BA2\u53F7: {{ booking().bookingNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[booking().status] }}</span>\n </div>\n @if (booking().product) {\n <div class=\"flex items-center justify-between\">\n <div>\n <span class=\"font-bold break-words line-clamp-2\">\u5546\u54C1: {{ booking().product.name }}</span>\n @if (booking().items) {\n <span class=\"font-bold break-words line-clamp-2\">\u6559\u5BA4: {{ booking().items[0].variant.classroom.name }}</span>\n }\n <span class=\"mt-2 text-md\">\u91D1\u989D: \u00A5{{ booking().total / 100 }}</span>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n }\n</div>\n<hr />\n" }]
|
|
294
|
+
}] });
|
|
295
|
+
|
|
3
296
|
/**
|
|
4
297
|
* Generated bundle index. Do not edit.
|
|
5
298
|
*/
|
|
6
299
|
|
|
7
|
-
export { bookingRoutes };
|
|
300
|
+
export { BookingItemComponent, BookingItemStatus, BookingReturnStatus, BookingStatus, BookingTimelineStatus, PeriodDate, PeriodItemComponent, ResourceStatus, ResourceType, SessionItemComponent, bookingRoutes };
|
|
8
301
|
//# sourceMappingURL=rolatech-angular-booking.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-booking.mjs","sources":["../../../../packages/angular-booking/src/lib/pages/booking.routes.ts","../../../../packages/angular-booking/src/rolatech-angular-booking.ts"],"sourcesContent":["export const bookingRoutes = [];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAO,MAAM,aAAa,GAAG;;ACA7B;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"rolatech-angular-booking.mjs","sources":["../../../../packages/angular-booking/src/lib/pages/booking.routes.ts","../../../../packages/angular-booking/src/lib/interfaces/resource.ts","../../../../packages/angular-booking/src/lib/components/period-item/period-item.component.ts","../../../../packages/angular-booking/src/lib/components/period-item/period-item.component.html","../../../../packages/angular-booking/src/lib/components/session-item/session-item.component.ts","../../../../packages/angular-booking/src/lib/components/session-item/session-item.component.html","../../../../packages/angular-booking/src/lib/interfaces/booking.ts","../../../../packages/angular-booking/src/lib/components/booking-item/booking-item.component.ts","../../../../packages/angular-booking/src/lib/components/booking-item/booking-item.component.html","../../../../packages/angular-booking/src/rolatech-angular-booking.ts"],"sourcesContent":["export const bookingRoutes = [];\n","import { Booking } from './booking';\nimport { Category } from './category';\nimport { Facility } from './facility';\nimport { Media } from './media';\n\nexport interface Resource {\n id: string;\n createdAt: string;\n updatedAt: string;\n name: number;\n description: string;\n status: ResourceStatus;\n type: ResourceType;\n price: number;\n partnerId: string;\n location?: ResourceLocation;\n bookings: Booking[];\n sessions: ResourceSession[];\n media: Media[];\n categories: Category[];\n details: ResourceDetail[];\n facilities?: Facility[];\n periods: any;\n}\nexport enum ResourceStatus {\n DRAFT = <any>'草稿',\n AWAITING = <any>'审核中',\n PENDING = <any>'审核中',\n ACTIVE = <any>'已发布',\n ACCEPTED = <any>'已通过',\n DELETED = <any>'已删除',\n}\nexport enum ResourceType {\n CLASSROOM = <any>'教室',\n}\nexport interface ResourceSession {\n id?: string;\n name: string;\n startDate: string;\n endDate: string;\n}\nexport interface ResourcePeriod {\n id?: string;\n name: string;\n startTime: string;\n endTime: string;\n}\nexport interface ResourceRate {\n userId: string;\n rate: number;\n}\nexport interface ResourceLocation {\n id: string;\n name: string;\n contact: string;\n phone: string;\n province: string;\n city: string;\n county: string;\n town: string;\n address: string;\n detail: string;\n latitude: string;\n longitude: string;\n}\nexport interface ResourceDetail {\n id: string;\n title: string;\n description: string;\n content: string;\n media: Media[];\n isUploading?: boolean;\n}\nexport interface ResourceClassroom {\n id: string;\n name: string;\n capacity: number;\n area: number;\n contact: string;\n phone: string;\n notes: string;\n facilities?: Facility[];\n media: Media[];\n productId?: string;\n isUploading?: boolean;\n}\nexport const PeriodDate = [\n '00:00',\n '00:15',\n '00:30',\n '00:45',\n\n '01:00',\n '01:15',\n '01:30',\n '01:45',\n\n '02:00',\n '02:15',\n '02:30',\n '02:45',\n '03:00',\n '03:15',\n '03:30',\n '03:45',\n\n '04:00',\n '04:15',\n '04:30',\n '04:45',\n '05:00',\n '05:15',\n '05:30',\n '05:45',\n\n '06:00',\n '06:15',\n '06:30',\n '06:45',\n '07:00',\n '07:15',\n '07:30',\n '07:45',\n\n '08:00',\n '08:15',\n '08:30',\n '08:45',\n '09:00',\n '09:15',\n '09:30',\n '09:45',\n\n '10:00',\n '10:15',\n '10:30',\n '10:45',\n '11:00',\n '11:15',\n '11:30',\n '11:45',\n\n '12:00',\n '12:15',\n '12:30',\n '12:45',\n '13:00',\n '13:15',\n '13:30',\n '13:45',\n\n '14:00',\n '14:15',\n '14:30',\n '14:45',\n '15:00',\n '15:15',\n '15:30',\n '15:45',\n\n '16:00',\n '16:15',\n '16:30',\n '16:45',\n '17:00',\n '17:15',\n '17:30',\n '17:45',\n\n '18:00',\n '18:15',\n '18:30',\n '18:45',\n '19:00',\n '19:15',\n '19:30',\n '19:45',\n\n '20:00',\n '20:15',\n '20:30',\n '20:45',\n '21:00',\n '21:15',\n '21:30',\n '21:45',\n\n '22:00',\n '22:15',\n '22:30',\n '22:45',\n '23:00',\n '23:15',\n '23:30',\n '23:45',\n];\n","import { DatePipe } from '@angular/common';\nimport { Component, OnInit, input, model, output } from '@angular/core';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS, MatOptionModule } from '@angular/material/core';\nimport moment from 'moment';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ResourcePeriod, PeriodDate } from '../../interfaces/resource';\nexport const MY_FORMATS = {\n parse: {\n dateInput: 'YYYY-MM-DD',\n },\n display: {\n dateInput: 'YYYY-MM-DD',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'YYYY-MM-DD',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n@Component({\n selector: 'rolatech-period-item',\n templateUrl: './period-item.component.html',\n styleUrls: ['./period-item.component.scss'],\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },\n DatePipe,\n ],\n imports: [MatFormFieldModule, MatInputModule, FormsModule, MatSelectModule, MatOptionModule, MatButtonModule],\n})\nexport class PeriodItemComponent implements OnInit {\n period = model.required<ResourcePeriod>();\n actions = input<boolean>(false);\n delete = output<ResourcePeriod>();\n save = output<ResourcePeriod>();\n\n date = PeriodDate;\n\n ngOnInit(): void {\n // this.period.startTime = moment(this.period.startTime).format('HH:mm');\n // this.period.endTime = moment(this.period.endTime).format('HH:mm');\n }\n startTimeChanged(event: any) {}\n endTimeChanged(event: any) {}\n\n onSave(period: ResourcePeriod) {\n this.save.emit(period);\n }\n onDelete(period: ResourcePeriod) {\n this.delete.emit(period);\n }\n}\n","<div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"period.name\" name=\"name\" required />\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>开始时间</mat-label>\n <mat-select [(ngModel)]=\"period().startTime\" (selectionChange)=\"startTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>结束时间</mat-label>\n <mat-select [(ngModel)]=\"period().endTime\" (selectionChange)=\"endTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button (click)=\"onDelete(period())\">删除</button>\n <button mat-flat-button (click)=\"onSave(period())\">保存</button>\n </div>\n }\n</div>\n","import { Component, OnInit, input, model, output } from '@angular/core';\nimport moment from 'moment';\nimport { DatePipe } from '@angular/common';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { PeriodDate, ResourceSession } from '../../interfaces/resource';\nexport const MY_FORMATS = {\n parse: {\n dateInput: 'YYYY-MM-DD',\n },\n display: {\n dateInput: 'YYYY-MM-DD',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'YYYY-MM-DD',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\n@Component({\n selector: 'rolatech-session-item',\n templateUrl: './session-item.component.html',\n styleUrls: ['./session-item.component.scss'],\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },\n DatePipe,\n ],\n imports: [MatFormFieldModule, MatInputModule, FormsModule, MatDatepickerModule, MatButtonModule],\n})\nexport class SessionItemComponent implements OnInit {\n session = model.required<ResourceSession>();\n actions = input<boolean>(false);\n delete = output<ResourceSession>();\n save = output<ResourceSession>();\n date = PeriodDate;\n\n ngOnInit(): void {\n this.session().startDate = moment(this.session().startDate).format('YYYY-MM-DD');\n this.session().endDate = moment(this.session().endDate).format('YYYY-MM-DD');\n }\n onSave(session: ResourceSession) {\n this.save.emit(session);\n }\n onDelete(session: ResourceSession) {\n this.delete.emit(session);\n }\n}\n","<div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"session.name\" name=\"name\" required />\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>开始日期</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n (focus)=\"picker.open()\"\n name=\"startAt\"\n [(ngModel)]=\"session().startDate\"\n (dateInput)=\"session().startDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>结束日期</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker2\"\n name=\"endAt\"\n (focus)=\"picker2.open()\"\n [(ngModel)]=\"session().endDate\"\n (dateInput)=\"session().endDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </mat-form-field>\n </div>\n @if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button (click)=\"onDelete(session())\">删除</button>\n <button mat-flat-button (click)=\"onSave(session())\">保存</button>\n </div>\n }\n</div>\n","import { Resource, ResourceType } from './resource';\nimport { ResourceVariant } from './resource-variant';\n\nexport interface Booking {\n id?: string;\n createdAt: string;\n bookingNo?: string;\n total: number;\n status: BookingStatus | string;\n userId: string;\n partnerId: string;\n notes: string;\n type: ResourceType;\n items: BookingItem[];\n product: Resource;\n}\nexport enum BookingStatus {\n CREATED = <any>'待付款',\n PAID = <any>'已支付',\n COMPLETED = <any>'已完成',\n CLOSED = <any>'交易关闭',\n CANCELED = <any>'交易取消',\n REFUNDED = <any>'已退款',\n}\nexport enum BookingReturnStatus {\n CREATED = <any>'等待审核',\n CANCELED = <any>'用户取消',\n APPROVED = <any>'已通过',\n REJECTED = <any>'已拒绝',\n PROCESSING = <any>'平台处理中',\n RETURNED = <any>'已退款',\n}\n\nexport interface BookingItem {\n total: number;\n variant: ResourceVariant;\n startAt: string;\n endAt: string;\n status: BookingItemStatus;\n}\nexport enum BookingItemStatus {\n CREATED = <any>'创建',\n CANCELED = <any>'已取消',\n CLOSED = <any>'已关闭',\n RETURN_REQUESTED = <any>'等待审核',\n RETURN_APPROVED = <any>'商家同意退款',\n RETURN_REJECTED = <any>'商家拒绝退款',\n RETURN_PROCESSING = <any>'退款处理中',\n REFUNDED = <any>'已退款',\n}\nexport enum BookingTimelineStatus {\n BOOKING_CREATE = <any>'交易创建',\n BOOKING_CLOSED = <any>'交易关闭',\n BOOKING_CANCELED = <any>'交易取消',\n BOOKING_PAID = <any>'订单已支付',\n BOOKING_REFUNDED = <any>'订单已退款',\n BOOKING_COMPLETED = <any>'订单已完成',\n BOOKING_RETURN_REQUESTED = <any>'退款申请',\n BOOKING_RETURN_APPROVED = <any>'商家同意退款',\n BOOKING_RETURN_REJECTED = <any>'商家拒绝退款',\n BOOKING_RETURN_PROCESSING = <any>'退款处理中',\n BOOKING_RETURN_REFUNDED = <any>'退款处理完成,已入账',\n}\n","import { Component, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Booking, BookingStatus } from '../../interfaces/booking';\n\n@Component({\n selector: 'rolatech-booking-item',\n imports: [MatIconModule],\n templateUrl: './booking-item.component.html',\n styleUrl: './booking-item.component.scss',\n})\nexport class BookingItemComponent {\n booking = input.required<Booking>();\n status: any = BookingStatus;\n}\n","<div class=\"flex flex-col p-3 hover:bg-[--rt-raised-background] cursor-pointer\">\n <div class=\"flex justify-between w-full\">\n <span>预订号: {{ booking().bookingNo }}</span>\n <span class=\"font-medium text-sm\">{{ status[booking().status] }}</span>\n </div>\n @if (booking().product) {\n <div class=\"flex items-center justify-between\">\n <div>\n <span class=\"font-bold break-words line-clamp-2\">商品: {{ booking().product.name }}</span>\n @if (booking().items) {\n <span class=\"font-bold break-words line-clamp-2\">教室: {{ booking().items[0].variant.classroom.name }}</span>\n }\n <span class=\"mt-2 text-md\">金额: ¥{{ booking().total / 100 }}</span>\n </div>\n <div class=\"pl-2\">\n <mat-icon>navigate_next</mat-icon>\n </div>\n </div>\n }\n</div>\n<hr />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["MY_FORMATS","i4","i5","i1"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Booking } from '../../interfaces/booking';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class BookingItemComponent {
|
|
4
|
+
booking: import("@angular/core").InputSignal<Booking>;
|
|
5
|
+
status: any;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BookingItemComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BookingItemComponent, "rolatech-booking-item", never, { "booking": { "alias": "booking"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { ResourcePeriod } from '../../interfaces/resource';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare const MY_FORMATS: {
|
|
5
|
+
parse: {
|
|
6
|
+
dateInput: string;
|
|
7
|
+
};
|
|
8
|
+
display: {
|
|
9
|
+
dateInput: string;
|
|
10
|
+
monthYearLabel: string;
|
|
11
|
+
dateA11yLabel: string;
|
|
12
|
+
monthYearA11yLabel: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export declare class PeriodItemComponent implements OnInit {
|
|
16
|
+
period: import("@angular/core").ModelSignal<ResourcePeriod>;
|
|
17
|
+
actions: import("@angular/core").InputSignal<boolean>;
|
|
18
|
+
delete: import("@angular/core").OutputEmitterRef<ResourcePeriod>;
|
|
19
|
+
save: import("@angular/core").OutputEmitterRef<ResourcePeriod>;
|
|
20
|
+
date: string[];
|
|
21
|
+
ngOnInit(): void;
|
|
22
|
+
startTimeChanged(event: any): void;
|
|
23
|
+
endTimeChanged(event: any): void;
|
|
24
|
+
onSave(period: ResourcePeriod): void;
|
|
25
|
+
onDelete(period: ResourcePeriod): void;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PeriodItemComponent, never>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PeriodItemComponent, "rolatech-period-item", never, { "period": { "alias": "period"; "required": true; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; }, { "period": "periodChange"; "delete": "delete"; "save": "save"; }, never, never, true, never>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { ResourceSession } from '../../interfaces/resource';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare const MY_FORMATS: {
|
|
5
|
+
parse: {
|
|
6
|
+
dateInput: string;
|
|
7
|
+
};
|
|
8
|
+
display: {
|
|
9
|
+
dateInput: string;
|
|
10
|
+
monthYearLabel: string;
|
|
11
|
+
dateA11yLabel: string;
|
|
12
|
+
monthYearA11yLabel: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export declare class SessionItemComponent implements OnInit {
|
|
16
|
+
session: import("@angular/core").ModelSignal<ResourceSession>;
|
|
17
|
+
actions: import("@angular/core").InputSignal<boolean>;
|
|
18
|
+
delete: import("@angular/core").OutputEmitterRef<ResourceSession>;
|
|
19
|
+
save: import("@angular/core").OutputEmitterRef<ResourceSession>;
|
|
20
|
+
date: string[];
|
|
21
|
+
ngOnInit(): void;
|
|
22
|
+
onSave(session: ResourceSession): void;
|
|
23
|
+
onDelete(session: ResourceSession): void;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SessionItemComponent, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SessionItemComponent, "rolatech-session-item", never, { "session": { "alias": "session"; "required": true; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; }, { "session": "sessionChange"; "delete": "delete"; "save": "save"; }, never, never, true, never>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Resource, ResourceType } from './resource';
|
|
2
|
+
import { ResourceVariant } from './resource-variant';
|
|
3
|
+
export interface Booking {
|
|
4
|
+
id?: string;
|
|
5
|
+
createdAt: string;
|
|
6
|
+
bookingNo?: string;
|
|
7
|
+
total: number;
|
|
8
|
+
status: BookingStatus | string;
|
|
9
|
+
userId: string;
|
|
10
|
+
partnerId: string;
|
|
11
|
+
notes: string;
|
|
12
|
+
type: ResourceType;
|
|
13
|
+
items: BookingItem[];
|
|
14
|
+
product: Resource;
|
|
15
|
+
}
|
|
16
|
+
export declare enum BookingStatus {
|
|
17
|
+
CREATED,
|
|
18
|
+
PAID,
|
|
19
|
+
COMPLETED,
|
|
20
|
+
CLOSED,
|
|
21
|
+
CANCELED,
|
|
22
|
+
REFUNDED
|
|
23
|
+
}
|
|
24
|
+
export declare enum BookingReturnStatus {
|
|
25
|
+
CREATED,
|
|
26
|
+
CANCELED,
|
|
27
|
+
APPROVED,
|
|
28
|
+
REJECTED,
|
|
29
|
+
PROCESSING,
|
|
30
|
+
RETURNED
|
|
31
|
+
}
|
|
32
|
+
export interface BookingItem {
|
|
33
|
+
total: number;
|
|
34
|
+
variant: ResourceVariant;
|
|
35
|
+
startAt: string;
|
|
36
|
+
endAt: string;
|
|
37
|
+
status: BookingItemStatus;
|
|
38
|
+
}
|
|
39
|
+
export declare enum BookingItemStatus {
|
|
40
|
+
CREATED,
|
|
41
|
+
CANCELED,
|
|
42
|
+
CLOSED,
|
|
43
|
+
RETURN_REQUESTED,
|
|
44
|
+
RETURN_APPROVED,
|
|
45
|
+
RETURN_REJECTED,
|
|
46
|
+
RETURN_PROCESSING,
|
|
47
|
+
REFUNDED
|
|
48
|
+
}
|
|
49
|
+
export declare enum BookingTimelineStatus {
|
|
50
|
+
BOOKING_CREATE,
|
|
51
|
+
BOOKING_CLOSED,
|
|
52
|
+
BOOKING_CANCELED,
|
|
53
|
+
BOOKING_PAID,
|
|
54
|
+
BOOKING_REFUNDED,
|
|
55
|
+
BOOKING_COMPLETED,
|
|
56
|
+
BOOKING_RETURN_REQUESTED,
|
|
57
|
+
BOOKING_RETURN_APPROVED,
|
|
58
|
+
BOOKING_RETURN_REJECTED,
|
|
59
|
+
BOOKING_RETURN_PROCESSING,
|
|
60
|
+
BOOKING_RETURN_REFUNDED
|
|
61
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface Category {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
media: CategoryMedia[];
|
|
5
|
+
createdAt: string;
|
|
6
|
+
originId: string;
|
|
7
|
+
children: Category;
|
|
8
|
+
parent: Category;
|
|
9
|
+
}
|
|
10
|
+
export interface CategoryMedia {
|
|
11
|
+
id: string;
|
|
12
|
+
url: string;
|
|
13
|
+
alt: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Facility } from './facility';
|
|
2
|
+
import { Media } from './media';
|
|
3
|
+
export interface Partner {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
export interface PartnerClassroom {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
capacity: number;
|
|
11
|
+
area: number;
|
|
12
|
+
contact: string;
|
|
13
|
+
phone: string;
|
|
14
|
+
notes: string;
|
|
15
|
+
facilities?: Facility[];
|
|
16
|
+
media: Media[];
|
|
17
|
+
isUploading?: boolean;
|
|
18
|
+
variants: Variant[];
|
|
19
|
+
productId: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Variant {
|
|
22
|
+
id: string;
|
|
23
|
+
period: {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
startTime: string;
|
|
27
|
+
endTime: string;
|
|
28
|
+
};
|
|
29
|
+
pricing: {
|
|
30
|
+
total: number;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Booking } from './booking';
|
|
2
|
+
import { Category } from './category';
|
|
3
|
+
import { Facility } from './facility';
|
|
4
|
+
import { Media } from './media';
|
|
5
|
+
export interface Resource {
|
|
6
|
+
id: string;
|
|
7
|
+
createdAt: string;
|
|
8
|
+
updatedAt: string;
|
|
9
|
+
name: number;
|
|
10
|
+
description: string;
|
|
11
|
+
status: ResourceStatus;
|
|
12
|
+
type: ResourceType;
|
|
13
|
+
price: number;
|
|
14
|
+
partnerId: string;
|
|
15
|
+
location?: ResourceLocation;
|
|
16
|
+
bookings: Booking[];
|
|
17
|
+
sessions: ResourceSession[];
|
|
18
|
+
media: Media[];
|
|
19
|
+
categories: Category[];
|
|
20
|
+
details: ResourceDetail[];
|
|
21
|
+
facilities?: Facility[];
|
|
22
|
+
periods: any;
|
|
23
|
+
}
|
|
24
|
+
export declare enum ResourceStatus {
|
|
25
|
+
DRAFT,
|
|
26
|
+
AWAITING,
|
|
27
|
+
PENDING,
|
|
28
|
+
ACTIVE,
|
|
29
|
+
ACCEPTED,
|
|
30
|
+
DELETED
|
|
31
|
+
}
|
|
32
|
+
export declare enum ResourceType {
|
|
33
|
+
CLASSROOM
|
|
34
|
+
}
|
|
35
|
+
export interface ResourceSession {
|
|
36
|
+
id?: string;
|
|
37
|
+
name: string;
|
|
38
|
+
startDate: string;
|
|
39
|
+
endDate: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ResourcePeriod {
|
|
42
|
+
id?: string;
|
|
43
|
+
name: string;
|
|
44
|
+
startTime: string;
|
|
45
|
+
endTime: string;
|
|
46
|
+
}
|
|
47
|
+
export interface ResourceRate {
|
|
48
|
+
userId: string;
|
|
49
|
+
rate: number;
|
|
50
|
+
}
|
|
51
|
+
export interface ResourceLocation {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
contact: string;
|
|
55
|
+
phone: string;
|
|
56
|
+
province: string;
|
|
57
|
+
city: string;
|
|
58
|
+
county: string;
|
|
59
|
+
town: string;
|
|
60
|
+
address: string;
|
|
61
|
+
detail: string;
|
|
62
|
+
latitude: string;
|
|
63
|
+
longitude: string;
|
|
64
|
+
}
|
|
65
|
+
export interface ResourceDetail {
|
|
66
|
+
id: string;
|
|
67
|
+
title: string;
|
|
68
|
+
description: string;
|
|
69
|
+
content: string;
|
|
70
|
+
media: Media[];
|
|
71
|
+
isUploading?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface ResourceClassroom {
|
|
74
|
+
id: string;
|
|
75
|
+
name: string;
|
|
76
|
+
capacity: number;
|
|
77
|
+
area: number;
|
|
78
|
+
contact: string;
|
|
79
|
+
phone: string;
|
|
80
|
+
notes: string;
|
|
81
|
+
facilities?: Facility[];
|
|
82
|
+
media: Media[];
|
|
83
|
+
productId?: string;
|
|
84
|
+
isUploading?: boolean;
|
|
85
|
+
}
|
|
86
|
+
export declare const PeriodDate: string[];
|