@ebuilding/runtime 3.1.2 → 3.1.5
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/e-web-report-table.mjs +1 -1
- package/fesm2022/e-web-report-table.mjs.map +1 -1
- package/fesm2022/e-web.mjs +1 -1
- package/fesm2022/e-web.mjs.map +1 -1
- package/fesm2022/home.mjs +2 -2
- package/fesm2022/home.mjs.map +1 -1
- package/fesm2022/layout.mjs +243 -64
- package/fesm2022/layout.mjs.map +1 -1
- package/fesm2022/user-center.mjs +318 -0
- package/fesm2022/user-center.mjs.map +1 -0
- package/package.json +48 -44
- package/user-center/index.d.ts +3 -0
- package/user-center/src/detail/user-center-detail.component.d.ts +32 -0
- package/user-center/src/user-center-main.component.d.ts +43 -0
- package/user-center/src/user-center.constants.d.ts +6 -0
- package/user-center/src/user-center.module.d.ts +8 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, Input, Component, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
import * as i4$1 from '@angular/router';
|
|
4
|
+
import { Router, ActivatedRoute, RouterModule } from '@angular/router';
|
|
5
|
+
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
6
|
+
import { finalize } from 'rxjs';
|
|
7
|
+
import { NzDrawerRef } from '@ebuilding/base/components/drawer';
|
|
8
|
+
import { UserCenterService } from '@ebuilding/base/shared.srv/user-center.service';
|
|
9
|
+
import { RuntimeSharedImportsModule } from '@ebuilding/runtime/shared-imports';
|
|
10
|
+
import * as i2 from '@angular/common';
|
|
11
|
+
import * as i2$1 from 'ng-zorro-antd/button';
|
|
12
|
+
import * as i3 from 'ng-zorro-antd/core/transition-patch';
|
|
13
|
+
import * as i4 from 'ng-zorro-antd/core/wave';
|
|
14
|
+
import * as i5 from 'ng-zorro-antd/tag';
|
|
15
|
+
import * as i6 from 'ng-zorro-antd/spin';
|
|
16
|
+
import { GramBaseDialogService } from '@ebuilding/base/shared.srv/base-dialog.service';
|
|
17
|
+
import * as i1 from '@ebuilding/abc/empty';
|
|
18
|
+
import { GramDeonEmptyModule } from '@ebuilding/abc/empty';
|
|
19
|
+
import { GramPipeModule } from '@ebuilding/base/shared.pipe';
|
|
20
|
+
import * as i3$1 from '@angular/forms';
|
|
21
|
+
import * as i5$1 from '@delon/abc/page-header';
|
|
22
|
+
import * as i9 from 'ng-zorro-antd/icon';
|
|
23
|
+
import * as i10 from 'ng-zorro-antd/table';
|
|
24
|
+
import * as i11 from 'ng-zorro-antd/tabs';
|
|
25
|
+
import * as i12 from 'ng-zorro-antd/input';
|
|
26
|
+
import * as i14 from 'ng-zorro-antd/breadcrumb';
|
|
27
|
+
import * as i15 from 'ng-zorro-antd/pagination';
|
|
28
|
+
|
|
29
|
+
class UserCenterDetailComponent {
|
|
30
|
+
userCenter = inject(UserCenterService);
|
|
31
|
+
router = inject(Router);
|
|
32
|
+
message = inject(NzMessageService);
|
|
33
|
+
drawerRef = inject((NzDrawerRef));
|
|
34
|
+
loading = false;
|
|
35
|
+
acknowledging = false;
|
|
36
|
+
detail = null;
|
|
37
|
+
detailType = 'message';
|
|
38
|
+
set config(value) {
|
|
39
|
+
if (!value?.id)
|
|
40
|
+
return;
|
|
41
|
+
this.detailType = value.type;
|
|
42
|
+
this.load(value.id);
|
|
43
|
+
}
|
|
44
|
+
content() {
|
|
45
|
+
return this.detail?.body ?? this.detail?.content ?? '';
|
|
46
|
+
}
|
|
47
|
+
isRichContent() {
|
|
48
|
+
return /<\/?[a-z][^>]*>/i.test(this.content());
|
|
49
|
+
}
|
|
50
|
+
time() {
|
|
51
|
+
return (this.detail?.publishTime ??
|
|
52
|
+
this.detail?.dueTime ??
|
|
53
|
+
this.detail?.createDate);
|
|
54
|
+
}
|
|
55
|
+
needAcknowledge() {
|
|
56
|
+
return (this.detailType === 'notice' &&
|
|
57
|
+
Boolean(this.detail?.needAck) &&
|
|
58
|
+
Boolean(this.detail?.read) &&
|
|
59
|
+
!Boolean(this.detail?.acked));
|
|
60
|
+
}
|
|
61
|
+
acknowledge() {
|
|
62
|
+
if (!this.detail?.id || this.acknowledging || !this.needAcknowledge())
|
|
63
|
+
return;
|
|
64
|
+
this.acknowledging = true;
|
|
65
|
+
this.userCenter
|
|
66
|
+
.acknowledgeNotice(this.detail.id)
|
|
67
|
+
.pipe(finalize(() => (this.acknowledging = false)))
|
|
68
|
+
.subscribe(() => {
|
|
69
|
+
if (this.detail) {
|
|
70
|
+
this.detail.read = true;
|
|
71
|
+
this.detail.acked = true;
|
|
72
|
+
this.detail.ackTime = new Date().toISOString();
|
|
73
|
+
}
|
|
74
|
+
this.message.success('确认成功');
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
hasActionUrl() {
|
|
78
|
+
return this.internalRoute(this.detail?.actionUrl) != null;
|
|
79
|
+
}
|
|
80
|
+
goToBusiness() {
|
|
81
|
+
const actionUrl = this.internalRoute(this.detail?.actionUrl);
|
|
82
|
+
if (!actionUrl)
|
|
83
|
+
return;
|
|
84
|
+
this.drawerRef.close({ type: 'navigate' });
|
|
85
|
+
void this.router.navigateByUrl(actionUrl);
|
|
86
|
+
}
|
|
87
|
+
load(id) {
|
|
88
|
+
this.loading = true;
|
|
89
|
+
const request = (this.detailType === 'notice'
|
|
90
|
+
? this.userCenter.noticeDetail(id)
|
|
91
|
+
: this.detailType === 'waiting'
|
|
92
|
+
? this.userCenter.waitingDetail(id)
|
|
93
|
+
: this.userCenter.messageDetail(id));
|
|
94
|
+
request
|
|
95
|
+
.pipe(finalize(() => (this.loading = false)))
|
|
96
|
+
.subscribe((response) => {
|
|
97
|
+
this.detail = response.result;
|
|
98
|
+
this.recordRead(id);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
recordRead(id) {
|
|
102
|
+
if (this.detail?.read)
|
|
103
|
+
return;
|
|
104
|
+
const request = this.detailType === 'notice'
|
|
105
|
+
? this.userCenter.readNotice(id)
|
|
106
|
+
: this.detailType === 'waiting'
|
|
107
|
+
? this.userCenter.readWaiting(id)
|
|
108
|
+
: this.userCenter.readMessage(id);
|
|
109
|
+
request.subscribe(() => {
|
|
110
|
+
if (this.detail)
|
|
111
|
+
this.detail.read = true;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
internalRoute(value) {
|
|
115
|
+
if (!value || !value.startsWith('/') || value.startsWith('//'))
|
|
116
|
+
return null;
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserCenterDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UserCenterDetailComponent, isStandalone: true, selector: "user-center-detail", inputs: { config: "config" }, ngImport: i0, template: "<nz-spin [nzSpinning]=\"loading\">\n <div *ngIf=\"detail\" class=\"detail-page\">\n <h2 class=\"detail-title\">{{ detail.title || \"\u8BE6\u60C5\" }}</h2>\n\n <div class=\"detail-meta\">\n <span>{{ time() | date: \"yyyy-MM-dd HH:mm\" }}</span>\n <nz-tag *ngIf=\"detailType === 'notice' && detail.read\">\u5DF2\u8BFB</nz-tag>\n <nz-tag *ngIf=\"detailType === 'notice' && detail.acked\" nzColor=\"green\">\u5DF2\u786E\u8BA4</nz-tag>\n </div>\n\n <div class=\"detail-scroll\">\n <div *ngIf=\"isRichContent(); else plainContent\" class=\"detail-content rich-content\"\n [innerHTML]=\"content()\"></div>\n <ng-template #plainContent>\n <div class=\"detail-content plain-content\">{{ content() }}</div>\n </ng-template>\n </div>\n <div *ngIf=\"hasActionUrl() || needAcknowledge()\" class=\"detail-actions\">\n <button *ngIf=\"hasActionUrl()\" nz-button nzType=\"default\" (click)=\"goToBusiness()\">\n \u524D\u5F80\u5904\u7406\n </button>\n <button *ngIf=\"needAcknowledge()\" nz-button nzType=\"primary\" [nzLoading]=\"acknowledging\" (click)=\"acknowledge()\">\n \u786E\u8BA4\u5DF2\u9605\u8BFB\n </button>\n </div>\n </div>\n</nz-spin>\n", styles: [":host{display:flex;height:100%;min-height:0;padding:0 15px 15px;box-sizing:border-box}:host ::ng-deep>nz-spin,:host ::ng-deep .ant-spin-nested-loading,:host ::ng-deep .ant-spin-container{display:block;height:100%}:host .detail-page{display:flex;flex-direction:column;height:100%;min-height:0;padding:8px 4px 0}:host .detail-scroll{flex:1;min-height:0;padding:0 0 16px;overflow:auto;overflow-x:overlay;overflow-y:overlay}:host .detail-scroll::-webkit-scrollbar{width:8px}:host .detail-scroll::-webkit-scrollbar-thumb{background-color:#94949475;border-radius:7px}:host .detail-scroll::-webkit-scrollbar-track{background-color:#fff}:host .detail-title{margin-bottom:12px}:host .detail-meta{display:flex;align-items:center;gap:8px;margin-bottom:20px;color:#8c8c8c}:host .detail-content{min-height:120px;line-height:1.8}:host .plain-content{white-space:pre-wrap}:host .detail-actions{flex:none;display:flex;justify-content:flex-end;gap:8px;padding:16px 4px 4px;border-top:1px solid #f0f0f0;background:#fff}\n"], dependencies: [{ kind: "ngmodule", type: RuntimeSharedImportsModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "component", type: i2$1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "component", type: i5.NzTagComponent, selector: "nz-tag", inputs: ["nzMode", "nzColor", "nzChecked", "nzBordered"], outputs: ["nzOnClose", "nzCheckedChange"], exportAs: ["nzTag"] }, { kind: "component", type: i6.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }] });
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserCenterDetailComponent, decorators: [{
|
|
123
|
+
type: Component,
|
|
124
|
+
args: [{ selector: 'user-center-detail', imports: [RuntimeSharedImportsModule], template: "<nz-spin [nzSpinning]=\"loading\">\n <div *ngIf=\"detail\" class=\"detail-page\">\n <h2 class=\"detail-title\">{{ detail.title || \"\u8BE6\u60C5\" }}</h2>\n\n <div class=\"detail-meta\">\n <span>{{ time() | date: \"yyyy-MM-dd HH:mm\" }}</span>\n <nz-tag *ngIf=\"detailType === 'notice' && detail.read\">\u5DF2\u8BFB</nz-tag>\n <nz-tag *ngIf=\"detailType === 'notice' && detail.acked\" nzColor=\"green\">\u5DF2\u786E\u8BA4</nz-tag>\n </div>\n\n <div class=\"detail-scroll\">\n <div *ngIf=\"isRichContent(); else plainContent\" class=\"detail-content rich-content\"\n [innerHTML]=\"content()\"></div>\n <ng-template #plainContent>\n <div class=\"detail-content plain-content\">{{ content() }}</div>\n </ng-template>\n </div>\n <div *ngIf=\"hasActionUrl() || needAcknowledge()\" class=\"detail-actions\">\n <button *ngIf=\"hasActionUrl()\" nz-button nzType=\"default\" (click)=\"goToBusiness()\">\n \u524D\u5F80\u5904\u7406\n </button>\n <button *ngIf=\"needAcknowledge()\" nz-button nzType=\"primary\" [nzLoading]=\"acknowledging\" (click)=\"acknowledge()\">\n \u786E\u8BA4\u5DF2\u9605\u8BFB\n </button>\n </div>\n </div>\n</nz-spin>\n", styles: [":host{display:flex;height:100%;min-height:0;padding:0 15px 15px;box-sizing:border-box}:host ::ng-deep>nz-spin,:host ::ng-deep .ant-spin-nested-loading,:host ::ng-deep .ant-spin-container{display:block;height:100%}:host .detail-page{display:flex;flex-direction:column;height:100%;min-height:0;padding:8px 4px 0}:host .detail-scroll{flex:1;min-height:0;padding:0 0 16px;overflow:auto;overflow-x:overlay;overflow-y:overlay}:host .detail-scroll::-webkit-scrollbar{width:8px}:host .detail-scroll::-webkit-scrollbar-thumb{background-color:#94949475;border-radius:7px}:host .detail-scroll::-webkit-scrollbar-track{background-color:#fff}:host .detail-title{margin-bottom:12px}:host .detail-meta{display:flex;align-items:center;gap:8px;margin-bottom:20px;color:#8c8c8c}:host .detail-content{min-height:120px;line-height:1.8}:host .plain-content{white-space:pre-wrap}:host .detail-actions{flex:none;display:flex;justify-content:flex-end;gap:8px;padding:16px 4px 4px;border-top:1px solid #f0f0f0;background:#fff}\n"] }]
|
|
125
|
+
}], propDecorators: { config: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}] } });
|
|
128
|
+
|
|
129
|
+
const USER_CENTER_DEFINITIONS = {
|
|
130
|
+
notice: { label: '公告通知' },
|
|
131
|
+
message: { label: '站内消息' },
|
|
132
|
+
waiting: { label: '待办事项' },
|
|
133
|
+
};
|
|
134
|
+
const USER_CENTER_ORDER = [
|
|
135
|
+
'notice',
|
|
136
|
+
'message',
|
|
137
|
+
'waiting',
|
|
138
|
+
];
|
|
139
|
+
|
|
140
|
+
class UserCenterMainComponent {
|
|
141
|
+
elementRef;
|
|
142
|
+
dialogService = inject(GramBaseDialogService);
|
|
143
|
+
route = inject(ActivatedRoute);
|
|
144
|
+
router = inject(Router);
|
|
145
|
+
userCenter = inject(UserCenterService);
|
|
146
|
+
message = inject(NzMessageService);
|
|
147
|
+
tabs = USER_CENTER_ORDER;
|
|
148
|
+
activeType = 'message';
|
|
149
|
+
selectedIndex = 0;
|
|
150
|
+
unreadOnly = false;
|
|
151
|
+
loading = false;
|
|
152
|
+
list = [];
|
|
153
|
+
keyWord = '';
|
|
154
|
+
pageIndex = 1;
|
|
155
|
+
listTotal = 0;
|
|
156
|
+
pageSize = 20;
|
|
157
|
+
constructor(elementRef) {
|
|
158
|
+
this.elementRef = elementRef;
|
|
159
|
+
}
|
|
160
|
+
ngOnInit() {
|
|
161
|
+
const requestedType = this.route.snapshot.queryParamMap.get('type');
|
|
162
|
+
if (this.isUserCenterType(requestedType)) {
|
|
163
|
+
this.activeType = requestedType;
|
|
164
|
+
this.selectedIndex = this.tabs.indexOf(requestedType);
|
|
165
|
+
}
|
|
166
|
+
this.loadPage();
|
|
167
|
+
this.resizeTable();
|
|
168
|
+
}
|
|
169
|
+
deonTableContentHG = null;
|
|
170
|
+
resize() {
|
|
171
|
+
this.resizeTable();
|
|
172
|
+
}
|
|
173
|
+
resizeTable() {
|
|
174
|
+
setTimeout(() => {
|
|
175
|
+
let content = 0; //this.elementRef.nativeElement.clientHeight;
|
|
176
|
+
let tableHeader = 0;
|
|
177
|
+
if (this.elementRef.nativeElement.querySelector('.default-work')) {
|
|
178
|
+
content = this.elementRef.nativeElement.querySelector('.default-work').clientHeight;
|
|
179
|
+
console.log("total", content);
|
|
180
|
+
}
|
|
181
|
+
if (this.elementRef.nativeElement.querySelector('.ant-tabs')) {
|
|
182
|
+
content = content - this.elementRef.nativeElement.querySelector('.ant-tabs').clientHeight;
|
|
183
|
+
console.log("ant-tabs", this.elementRef.nativeElement.querySelector('.ant-tabs').clientHeight);
|
|
184
|
+
}
|
|
185
|
+
if (this.elementRef.nativeElement.querySelector('.content-info-header')) {
|
|
186
|
+
content = content - this.elementRef.nativeElement.querySelector('.content-info-header').clientHeight;
|
|
187
|
+
console.log("header", this.elementRef.nativeElement.querySelector('.content-info-header').clientHeight);
|
|
188
|
+
}
|
|
189
|
+
if (this.elementRef.nativeElement.querySelector('.content-info-footer')) {
|
|
190
|
+
content = content - this.elementRef.nativeElement.querySelector('.content-info-footer').clientHeight;
|
|
191
|
+
console.log("footer", this.elementRef.nativeElement.querySelector('.content-info-footer').clientHeight);
|
|
192
|
+
}
|
|
193
|
+
if (this.elementRef.nativeElement.querySelector('.ant-table-thead')) {
|
|
194
|
+
tableHeader = +this.elementRef.nativeElement.querySelector('.ant-table-thead').clientHeight;
|
|
195
|
+
}
|
|
196
|
+
if (tableHeader == 0 || tableHeader <= 50) {
|
|
197
|
+
tableHeader = 50;
|
|
198
|
+
}
|
|
199
|
+
this.deonTableContentHG = {
|
|
200
|
+
y: content - tableHeader - 24 + 'px',
|
|
201
|
+
};
|
|
202
|
+
}, 200);
|
|
203
|
+
}
|
|
204
|
+
tabLabel(type) {
|
|
205
|
+
return USER_CENTER_DEFINITIONS[type].label;
|
|
206
|
+
}
|
|
207
|
+
tabChanged(index) {
|
|
208
|
+
this.selectedIndex = index;
|
|
209
|
+
this.activeType = this.tabs[index] ?? 'message';
|
|
210
|
+
this.unreadOnly = false;
|
|
211
|
+
this.pageIndex = 1;
|
|
212
|
+
void this.router.navigate([], {
|
|
213
|
+
relativeTo: this.route,
|
|
214
|
+
queryParams: { type: this.activeType },
|
|
215
|
+
replaceUrl: true,
|
|
216
|
+
});
|
|
217
|
+
this.loadPage();
|
|
218
|
+
}
|
|
219
|
+
unreadChanged() {
|
|
220
|
+
this.pageIndex = 1;
|
|
221
|
+
this.loadPage();
|
|
222
|
+
}
|
|
223
|
+
pageChanged(pageIndex) {
|
|
224
|
+
this.pageIndex = pageIndex;
|
|
225
|
+
this.loadPage();
|
|
226
|
+
}
|
|
227
|
+
queryClick() {
|
|
228
|
+
this.pageIndex = 1;
|
|
229
|
+
this.loadPage();
|
|
230
|
+
}
|
|
231
|
+
listPageIndexChange(pageIndex) {
|
|
232
|
+
this.pageIndex = pageIndex;
|
|
233
|
+
this.loadPage();
|
|
234
|
+
}
|
|
235
|
+
listPageSizeChange(pageSize) {
|
|
236
|
+
this.pageSize = pageSize;
|
|
237
|
+
this.pageIndex = 1;
|
|
238
|
+
this.loadPage();
|
|
239
|
+
}
|
|
240
|
+
displayContent(item) {
|
|
241
|
+
return 'body' in item ? item.body : item.content;
|
|
242
|
+
}
|
|
243
|
+
displayTime(item) {
|
|
244
|
+
return 'publishTime' in item
|
|
245
|
+
? item.publishTime
|
|
246
|
+
: 'dueTime' in item
|
|
247
|
+
? (item.dueTime ?? item.createDate)
|
|
248
|
+
: item.createDate;
|
|
249
|
+
}
|
|
250
|
+
openDetail(id) {
|
|
251
|
+
const definition = USER_CENTER_DEFINITIONS[this.activeType];
|
|
252
|
+
this.dialogService.CreateDrawerDialog({
|
|
253
|
+
nzTitle: definition.label,
|
|
254
|
+
nzContent: UserCenterDetailComponent,
|
|
255
|
+
}, { config: { type: this.activeType, id } }, () => this.loadPage());
|
|
256
|
+
}
|
|
257
|
+
loadPage() {
|
|
258
|
+
this.loading = true;
|
|
259
|
+
let request;
|
|
260
|
+
if (this.activeType === 'message') {
|
|
261
|
+
request = this.userCenter.messagePage(this.pageIndex, this.pageSize, this.unreadOnly, this.keyWord);
|
|
262
|
+
}
|
|
263
|
+
else if (this.activeType === 'waiting') {
|
|
264
|
+
request = this.userCenter.waitingPage(this.pageIndex, this.pageSize, this.keyWord);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
request = this.userCenter.noticePage(this.pageIndex, this.pageSize, this.keyWord);
|
|
268
|
+
}
|
|
269
|
+
request.pipe(finalize(() => (this.loading = false))).subscribe({
|
|
270
|
+
next: (response) => {
|
|
271
|
+
const page = response.result;
|
|
272
|
+
this.list = page?.list ?? [];
|
|
273
|
+
this.listTotal = page?.total ?? 0;
|
|
274
|
+
},
|
|
275
|
+
error: () => {
|
|
276
|
+
this.list = [];
|
|
277
|
+
this.listTotal = 0;
|
|
278
|
+
this.message.error('加载消息中心数据失败');
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
isUserCenterType(value) {
|
|
283
|
+
return value != null && this.tabs.includes(value);
|
|
284
|
+
}
|
|
285
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserCenterMainComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
286
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UserCenterMainComponent, isStandalone: true, selector: "user-center-main", host: { listeners: { "window:resize": "resize($event)" } }, ngImport: i0, template: "<page-header [title]=\"'\u6D88\u606F\u4E2D\u5FC3'\" class=\"header_hide\" [syncTitle]=\"true\" [breadcrumb]=\"breadcrumb\">\n <ng-template #breadcrumb>\n <nz-breadcrumb>\n <nz-breadcrumb-item><a [routerLink]=\"['/home']\">\u9996\u9875</a></nz-breadcrumb-item>\n <nz-breadcrumb-item>\u6D88\u606F\u4E2D\u5FC3</nz-breadcrumb-item>\n </nz-breadcrumb>\n </ng-template>\n</page-header>\n\n<div class=\"default-work user-center-page\">\n <nz-tabset [nzSelectedIndex]=\"selectedIndex\" (nzSelectedIndexChange)=\"tabChanged($event)\">\n <nz-tab *ngFor=\"let type of tabs\" [nzTitle]=\"tabLabel(type)\"></nz-tab>\n </nz-tabset>\n <div class=\"content-info\">\n <div class=\"content-info-header\">\n <div class=\"search\">\n <nz-input-group nzSearch [nzAddOnAfter]=\"suffixButton\">\n <input type=\"text\" [(ngModel)]=\"keyWord\" nz-input placeholder=\"\u8BF7\u8F93\u5165\u6807\u9898\u5173\u952E\u5B57\" />\n </nz-input-group>\n <ng-template #suffixButton>\n <button nz-button nzType=\"primary\" type=\"button\" nzSearch (click)=\"queryClick()\"><i nz-icon\n nzType=\"search\"></i>\u67E5\u8BE2</button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"content-info-body\">\n <nz-table class=\"default-table\" [nzData]=\"list\" [nzLoading]=\"loading\" [nzFrontPagination]=\"false\"\n [nzShowPagination]=\"false\" [nzNoResult]=\"noResult\" [nzScroll]=\"deonTableContentHG\">\n <thead>\n <tr>\n <th>\u6807\u9898</th>\n <!-- <th>\u5185\u5BB9</th> -->\n <th nzWidth=\"120px\">\u65E5\u671F</th>\n <th nzWidth=\"80px\">\u72B6\u6001</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of list\">\n <td>\n <a (click)=\"openDetail(item.id)\">{{ item.title }}</a>\n </td>\n <!-- <td class=\"content-cell\">\n <div [innerHtml]=\"displayContent(item) | safeHtml\">\n </div>\n </td> -->\n <td>{{ displayTime(item) | date: \"yyyy-MM-dd HH:mm\" }}</td>\n <td>\n <nz-tag *ngIf=\"item.read === false\" nzColor=\"blue\">\u672A\u8BFB</nz-tag>\n <nz-tag *ngIf=\"item.read !== false\" nzColor=\"default\">\u5DF2\u8BFB</nz-tag>\n </td>\n </tr>\n </tbody>\n </nz-table>\n </div>\n\n <div class=\"content-info-footer\">\n <nz-pagination [nzPageIndex]=\"pageIndex\" [nzTotal]=\"listTotal\" nzShowSizeChanger [nzPageSize]=\"pageSize\"\n (nzPageIndexChange)=\"listPageIndexChange($event)\" (nzPageSizeChange)=\"listPageSizeChange($event)\">\n </nz-pagination>\n </div>\n\n </div>\n</div>\n\n<ng-template #noResult>\n <div class=\"result-empty\">\n <gram-empty></gram-empty>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex:1;min-height:0}:host ::ng-deep{display:flex;flex:1;flex-direction:column;width:100%;height:100%;padding:15px 0 0 15px}:host ::ng-deep .ant-tabs-nav-wrap{padding:0 0 0 15px}:host ::ng-deep .content-info{width:100%;height:100%;display:flex;flex-direction:column}:host ::ng-deep .content-info-header{padding:12px 12px 0}:host ::ng-deep .content-info-header nz-input-group{width:100%;max-width:300px;min-width:250px}:host ::ng-deep .content-info-body{flex:1;padding:12px}:host ::ng-deep .content-info-footer{padding:0 12px 12px;text-align:right}:host ::ng-deep .user-center-page{display:flex;flex:1;flex-direction:column;min-height:0}:host ::ng-deep .ant-tabs-nav{margin-bottom:8px}:host ::ng-deep .center-table{flex:1;min-height:0}:host ::ng-deep .unread-filter{margin-left:8px;margin-bottom:8px}:host ::ng-deep .content-cell{max-width:480px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: GramDeonEmptyModule }, { kind: "component", type: i1.GramDeonEmptyComponent, selector: "gram-empty", inputs: ["desc", "state"], outputs: ["emptyClick"] }, { kind: "ngmodule", type: GramPipeModule }, { kind: "ngmodule", type: RuntimeSharedImportsModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "directive", type: i3$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5$1.PageHeaderComponent, selector: "page-header", inputs: ["title", "titleSub", "loading", "wide", "home", "homeLink", "homeI18n", "autoBreadcrumb", "autoTitle", "syncTitle", "fixed", "fixedOffsetTop", "breadcrumb", "recursiveBreadcrumb", "logo", "action", "content", "extra", "tab"], exportAs: ["pageHeader"] }, { kind: "component", type: i2$1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i9.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "directive", type: i10.NzTableCellDirective, selector: "th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])" }, { kind: "directive", type: i10.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i10.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i10.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i10.NzTrDirective, selector: "tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "component", type: i11.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact", "nzDestroyInactiveTabPane"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i11.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "directive", type: i12.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i12.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "component", type: i5.NzTagComponent, selector: "nz-tag", inputs: ["nzMode", "nzColor", "nzChecked", "nzBordered"], outputs: ["nzOnClose", "nzCheckedChange"], exportAs: ["nzTag"] }, { kind: "component", type: i14.NzBreadCrumbComponent, selector: "nz-breadcrumb", inputs: ["nzAutoGenerate", "nzSeparator", "nzRouteLabel", "nzRouteLabelFn", "nzRouteFn"], exportAs: ["nzBreadcrumb"] }, { kind: "component", type: i14.NzBreadCrumbItemComponent, selector: "nz-breadcrumb-item", inputs: ["nzOverlay"], exportAs: ["nzBreadcrumbItem"] }, { kind: "component", type: i15.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }] });
|
|
287
|
+
}
|
|
288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserCenterMainComponent, decorators: [{
|
|
289
|
+
type: Component,
|
|
290
|
+
args: [{ selector: 'user-center-main', imports: [GramDeonEmptyModule, GramPipeModule, RuntimeSharedImportsModule], template: "<page-header [title]=\"'\u6D88\u606F\u4E2D\u5FC3'\" class=\"header_hide\" [syncTitle]=\"true\" [breadcrumb]=\"breadcrumb\">\n <ng-template #breadcrumb>\n <nz-breadcrumb>\n <nz-breadcrumb-item><a [routerLink]=\"['/home']\">\u9996\u9875</a></nz-breadcrumb-item>\n <nz-breadcrumb-item>\u6D88\u606F\u4E2D\u5FC3</nz-breadcrumb-item>\n </nz-breadcrumb>\n </ng-template>\n</page-header>\n\n<div class=\"default-work user-center-page\">\n <nz-tabset [nzSelectedIndex]=\"selectedIndex\" (nzSelectedIndexChange)=\"tabChanged($event)\">\n <nz-tab *ngFor=\"let type of tabs\" [nzTitle]=\"tabLabel(type)\"></nz-tab>\n </nz-tabset>\n <div class=\"content-info\">\n <div class=\"content-info-header\">\n <div class=\"search\">\n <nz-input-group nzSearch [nzAddOnAfter]=\"suffixButton\">\n <input type=\"text\" [(ngModel)]=\"keyWord\" nz-input placeholder=\"\u8BF7\u8F93\u5165\u6807\u9898\u5173\u952E\u5B57\" />\n </nz-input-group>\n <ng-template #suffixButton>\n <button nz-button nzType=\"primary\" type=\"button\" nzSearch (click)=\"queryClick()\"><i nz-icon\n nzType=\"search\"></i>\u67E5\u8BE2</button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"content-info-body\">\n <nz-table class=\"default-table\" [nzData]=\"list\" [nzLoading]=\"loading\" [nzFrontPagination]=\"false\"\n [nzShowPagination]=\"false\" [nzNoResult]=\"noResult\" [nzScroll]=\"deonTableContentHG\">\n <thead>\n <tr>\n <th>\u6807\u9898</th>\n <!-- <th>\u5185\u5BB9</th> -->\n <th nzWidth=\"120px\">\u65E5\u671F</th>\n <th nzWidth=\"80px\">\u72B6\u6001</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of list\">\n <td>\n <a (click)=\"openDetail(item.id)\">{{ item.title }}</a>\n </td>\n <!-- <td class=\"content-cell\">\n <div [innerHtml]=\"displayContent(item) | safeHtml\">\n </div>\n </td> -->\n <td>{{ displayTime(item) | date: \"yyyy-MM-dd HH:mm\" }}</td>\n <td>\n <nz-tag *ngIf=\"item.read === false\" nzColor=\"blue\">\u672A\u8BFB</nz-tag>\n <nz-tag *ngIf=\"item.read !== false\" nzColor=\"default\">\u5DF2\u8BFB</nz-tag>\n </td>\n </tr>\n </tbody>\n </nz-table>\n </div>\n\n <div class=\"content-info-footer\">\n <nz-pagination [nzPageIndex]=\"pageIndex\" [nzTotal]=\"listTotal\" nzShowSizeChanger [nzPageSize]=\"pageSize\"\n (nzPageIndexChange)=\"listPageIndexChange($event)\" (nzPageSizeChange)=\"listPageSizeChange($event)\">\n </nz-pagination>\n </div>\n\n </div>\n</div>\n\n<ng-template #noResult>\n <div class=\"result-empty\">\n <gram-empty></gram-empty>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex:1;min-height:0}:host ::ng-deep{display:flex;flex:1;flex-direction:column;width:100%;height:100%;padding:15px 0 0 15px}:host ::ng-deep .ant-tabs-nav-wrap{padding:0 0 0 15px}:host ::ng-deep .content-info{width:100%;height:100%;display:flex;flex-direction:column}:host ::ng-deep .content-info-header{padding:12px 12px 0}:host ::ng-deep .content-info-header nz-input-group{width:100%;max-width:300px;min-width:250px}:host ::ng-deep .content-info-body{flex:1;padding:12px}:host ::ng-deep .content-info-footer{padding:0 12px 12px;text-align:right}:host ::ng-deep .user-center-page{display:flex;flex:1;flex-direction:column;min-height:0}:host ::ng-deep .ant-tabs-nav{margin-bottom:8px}:host ::ng-deep .center-table{flex:1;min-height:0}:host ::ng-deep .unread-filter{margin-left:8px;margin-bottom:8px}:host ::ng-deep .content-cell{max-width:480px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
|
|
291
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { resize: [{
|
|
292
|
+
type: HostListener,
|
|
293
|
+
args: ['window:resize', ['$event']]
|
|
294
|
+
}] } });
|
|
295
|
+
|
|
296
|
+
const routes = [
|
|
297
|
+
{ path: '', pathMatch: 'full', redirectTo: 'list' },
|
|
298
|
+
{ path: 'list', component: UserCenterMainComponent },
|
|
299
|
+
];
|
|
300
|
+
class UserCenterModule {
|
|
301
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserCenterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
302
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: UserCenterModule, imports: [i4$1.RouterModule, UserCenterMainComponent], exports: [RouterModule] });
|
|
303
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserCenterModule, imports: [RouterModule.forChild(routes), UserCenterMainComponent, RouterModule] });
|
|
304
|
+
}
|
|
305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserCenterModule, decorators: [{
|
|
306
|
+
type: NgModule,
|
|
307
|
+
args: [{
|
|
308
|
+
imports: [RouterModule.forChild(routes), UserCenterMainComponent],
|
|
309
|
+
exports: [RouterModule],
|
|
310
|
+
}]
|
|
311
|
+
}] });
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Generated bundle index. Do not edit.
|
|
315
|
+
*/
|
|
316
|
+
|
|
317
|
+
export { USER_CENTER_DEFINITIONS, USER_CENTER_ORDER, UserCenterDetailComponent, UserCenterModule };
|
|
318
|
+
//# sourceMappingURL=user-center.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-center.mjs","sources":["../../../../packages/runtime/user-center/src/detail/user-center-detail.component.ts","../../../../packages/runtime/user-center/src/detail/user-center-detail.component.html","../../../../packages/runtime/user-center/src/user-center.constants.ts","../../../../packages/runtime/user-center/src/user-center-main.component.ts","../../../../packages/runtime/user-center/src/user-center-main.component.html","../../../../packages/runtime/user-center/src/user-center.module.ts","../../../../packages/runtime/user-center/user-center.ts"],"sourcesContent":["import { Component, Input, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { Observable, finalize } from 'rxjs';\n\nimport { NzDrawerRef } from '@ebuilding/base/components/drawer';\nimport {\n UserCenterApiResult,\n UserCenterMessageItem,\n UserCenterNoticeItem,\n UserCenterService,\n UserCenterWaitingItem,\n} from '@ebuilding/base/shared.srv/user-center.service';\nimport { RuntimeSharedImportsModule } from '@ebuilding/runtime/shared-imports';\n\nimport { UserCenterType } from '../user-center.constants';\n\ntype UserCenterDetail = UserCenterMessageItem &\n Partial<UserCenterWaitingItem> &\n Partial<UserCenterNoticeItem>;\n\nexport interface UserCenterDetailConfig {\n type: UserCenterType;\n id: string;\n}\n\n@Component({\n selector: 'user-center-detail',\n templateUrl: './user-center-detail.component.html',\n styleUrls: ['./user-center-detail.component.less'],\n imports: [RuntimeSharedImportsModule],\n})\nexport class UserCenterDetailComponent {\n private readonly userCenter = inject(UserCenterService);\n private readonly router = inject(Router);\n private readonly message = inject(NzMessageService);\n private readonly drawerRef = inject(NzDrawerRef<unknown>);\n\n loading = false;\n acknowledging = false;\n detail: UserCenterDetail | null = null;\n detailType: UserCenterType = 'message';\n\n @Input()\n set config(value: UserCenterDetailConfig | null) {\n if (!value?.id) return;\n this.detailType = value.type;\n this.load(value.id);\n }\n\n content(): string {\n return this.detail?.body ?? this.detail?.content ?? '';\n }\n\n isRichContent(): boolean {\n return /<\\/?[a-z][^>]*>/i.test(this.content());\n }\n\n time(): string | undefined {\n return (\n this.detail?.publishTime ??\n this.detail?.dueTime ??\n this.detail?.createDate\n );\n }\n\n needAcknowledge(): boolean {\n return (\n this.detailType === 'notice' &&\n Boolean(this.detail?.needAck) &&\n Boolean(this.detail?.read) &&\n !Boolean(this.detail?.acked)\n );\n }\n\n acknowledge(): void {\n if (!this.detail?.id || this.acknowledging || !this.needAcknowledge())\n return;\n this.acknowledging = true;\n this.userCenter\n .acknowledgeNotice(this.detail.id)\n .pipe(finalize(() => (this.acknowledging = false)))\n .subscribe(() => {\n if (this.detail) {\n this.detail.read = true;\n this.detail.acked = true;\n this.detail.ackTime = new Date().toISOString();\n }\n this.message.success('确认成功');\n });\n }\n\n hasActionUrl(): boolean {\n return this.internalRoute(this.detail?.actionUrl) != null;\n }\n\n goToBusiness(): void {\n const actionUrl = this.internalRoute(this.detail?.actionUrl);\n if (!actionUrl) return;\n this.drawerRef.close({ type: 'navigate' });\n void this.router.navigateByUrl(actionUrl);\n }\n\n private load(id: string): void {\n this.loading = true;\n const request = (\n this.detailType === 'notice'\n ? this.userCenter.noticeDetail(id)\n : this.detailType === 'waiting'\n ? this.userCenter.waitingDetail(id)\n : this.userCenter.messageDetail(id)\n ) as Observable<UserCenterApiResult<UserCenterDetail>>;\n\n request\n .pipe(finalize(() => (this.loading = false)))\n .subscribe((response) => {\n this.detail = response.result;\n this.recordRead(id);\n });\n }\n\n private recordRead(id: string): void {\n if (this.detail?.read) return;\n const request =\n this.detailType === 'notice'\n ? this.userCenter.readNotice(id)\n : this.detailType === 'waiting'\n ? this.userCenter.readWaiting(id)\n : this.userCenter.readMessage(id);\n request.subscribe(() => {\n if (this.detail) this.detail.read = true;\n });\n }\n\n private internalRoute(value?: string): string | null {\n if (!value || !value.startsWith('/') || value.startsWith('//')) return null;\n return value;\n }\n}\n","<nz-spin [nzSpinning]=\"loading\">\n <div *ngIf=\"detail\" class=\"detail-page\">\n <h2 class=\"detail-title\">{{ detail.title || \"详情\" }}</h2>\n\n <div class=\"detail-meta\">\n <span>{{ time() | date: \"yyyy-MM-dd HH:mm\" }}</span>\n <nz-tag *ngIf=\"detailType === 'notice' && detail.read\">已读</nz-tag>\n <nz-tag *ngIf=\"detailType === 'notice' && detail.acked\" nzColor=\"green\">已确认</nz-tag>\n </div>\n\n <div class=\"detail-scroll\">\n <div *ngIf=\"isRichContent(); else plainContent\" class=\"detail-content rich-content\"\n [innerHTML]=\"content()\"></div>\n <ng-template #plainContent>\n <div class=\"detail-content plain-content\">{{ content() }}</div>\n </ng-template>\n </div>\n <div *ngIf=\"hasActionUrl() || needAcknowledge()\" class=\"detail-actions\">\n <button *ngIf=\"hasActionUrl()\" nz-button nzType=\"default\" (click)=\"goToBusiness()\">\n 前往处理\n </button>\n <button *ngIf=\"needAcknowledge()\" nz-button nzType=\"primary\" [nzLoading]=\"acknowledging\" (click)=\"acknowledge()\">\n 确认已阅读\n </button>\n </div>\n </div>\n</nz-spin>\n","export type UserCenterType = 'message' | 'waiting' | 'notice';\n\nexport interface UserCenterDefinition {\n label: string;\n}\n\nexport const USER_CENTER_DEFINITIONS: Record<\n UserCenterType,\n UserCenterDefinition\n> = {\n notice: { label: '公告通知' },\n message: { label: '站内消息' },\n waiting: { label: '待办事项' },\n};\n\nexport const USER_CENTER_ORDER: readonly UserCenterType[] = [\n 'notice',\n 'message',\n 'waiting',\n];\n","import {\n Component, OnInit, inject,\n HostListener,\n ElementRef,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { Observable, finalize } from 'rxjs';\n\nimport { GramBaseDialogService } from '@ebuilding/base/shared.srv/base-dialog.service';\nimport {\n UserCenterApiResult,\n UserCenterMessageItem,\n UserCenterNoticeItem,\n UserCenterPageResult,\n UserCenterService,\n UserCenterWaitingItem,\n} from '@ebuilding/base/shared.srv/user-center.service';\nimport { RuntimeSharedImportsModule } from '@ebuilding/runtime/shared-imports';\nimport { GramDeonEmptyModule } from '@ebuilding/abc/empty';\nimport { GramPipeModule } from \"@ebuilding/base/shared.pipe\";\n\nimport { UserCenterDetailComponent } from './detail/user-center-detail.component';\nimport {\n USER_CENTER_DEFINITIONS,\n USER_CENTER_ORDER,\n UserCenterType,\n} from './user-center.constants';\n\ntype UserCenterListItem =\n | UserCenterMessageItem\n | UserCenterWaitingItem\n | UserCenterNoticeItem;\n\n@Component({\n selector: 'user-center-main',\n templateUrl: './user-center-main.component.html',\n styleUrls: ['./user-center-main.component.less'],\n imports: [GramDeonEmptyModule, GramPipeModule, RuntimeSharedImportsModule],\n})\nexport class UserCenterMainComponent implements OnInit {\n private readonly dialogService = inject(GramBaseDialogService);\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly userCenter = inject(UserCenterService);\n private readonly message = inject(NzMessageService);\n\n readonly tabs = USER_CENTER_ORDER;\n activeType: UserCenterType = 'message';\n selectedIndex = 0;\n unreadOnly = false;\n loading = false;\n list: UserCenterListItem[] = [];\n\n keyWord = '';\n pageIndex: number = 1;\n listTotal: number = 0;\n pageSize: number = 20;\n\n constructor(\n public elementRef: ElementRef) {\n\n }\n\n ngOnInit(): void {\n const requestedType = this.route.snapshot.queryParamMap.get('type');\n if (this.isUserCenterType(requestedType)) {\n this.activeType = requestedType;\n this.selectedIndex = this.tabs.indexOf(requestedType);\n }\n this.loadPage();\n this.resizeTable();\n }\n\n\n deonTableContentHG: any = null;\n @HostListener('window:resize', ['$event'])\n resize() {\n this.resizeTable();\n }\n resizeTable() {\n\n setTimeout(() => {\n let content = 0;//this.elementRef.nativeElement.clientHeight;\n\n let tableHeader = 0;\n\n if (this.elementRef.nativeElement.querySelector('.default-work')) {\n content = this.elementRef.nativeElement.querySelector('.default-work').clientHeight;\n console.log(\"total\", content);\n }\n if (this.elementRef.nativeElement.querySelector('.ant-tabs')) {\n content = content - this.elementRef.nativeElement.querySelector('.ant-tabs').clientHeight;\n console.log(\"ant-tabs\", this.elementRef.nativeElement.querySelector('.ant-tabs').clientHeight);\n }\n if (this.elementRef.nativeElement.querySelector('.content-info-header')) {\n content = content - this.elementRef.nativeElement.querySelector('.content-info-header').clientHeight;\n console.log(\"header\", this.elementRef.nativeElement.querySelector('.content-info-header').clientHeight);\n }\n\n if (this.elementRef.nativeElement.querySelector('.content-info-footer')) {\n content = content - this.elementRef.nativeElement.querySelector('.content-info-footer').clientHeight;\n console.log(\"footer\", this.elementRef.nativeElement.querySelector('.content-info-footer').clientHeight);\n }\n\n if (this.elementRef.nativeElement.querySelector('.ant-table-thead')) {\n tableHeader = +this.elementRef.nativeElement.querySelector('.ant-table-thead').clientHeight;\n }\n\n if (tableHeader == 0 || tableHeader <= 50) {\n tableHeader = 50;\n }\n this.deonTableContentHG = {\n y: content - tableHeader - 24 + 'px',\n };\n }, 200);\n }\n\n tabLabel(type: UserCenterType): string {\n return USER_CENTER_DEFINITIONS[type].label;\n }\n\n tabChanged(index: number): void {\n this.selectedIndex = index;\n this.activeType = this.tabs[index] ?? 'message';\n this.unreadOnly = false;\n this.pageIndex = 1;\n void this.router.navigate([], {\n relativeTo: this.route,\n queryParams: { type: this.activeType },\n replaceUrl: true,\n });\n this.loadPage();\n }\n\n unreadChanged(): void {\n this.pageIndex = 1;\n this.loadPage();\n }\n\n pageChanged(pageIndex: number): void {\n this.pageIndex = pageIndex;\n this.loadPage();\n }\n\n queryClick(): void {\n this.pageIndex = 1;\n this.loadPage();\n }\n\n listPageIndexChange(pageIndex: number): void {\n this.pageIndex = pageIndex;\n this.loadPage();\n }\n\n listPageSizeChange(pageSize: number): void {\n this.pageSize = pageSize;\n this.pageIndex = 1;\n this.loadPage();\n }\n\n displayContent(item: UserCenterListItem): string {\n return 'body' in item ? item.body : item.content;\n }\n\n displayTime(item: UserCenterListItem): string | undefined {\n return 'publishTime' in item\n ? item.publishTime\n : 'dueTime' in item\n ? (item.dueTime ?? item.createDate)\n : (item as UserCenterMessageItem).createDate;\n }\n\n openDetail(id: string): void {\n const definition = USER_CENTER_DEFINITIONS[this.activeType];\n this.dialogService.CreateDrawerDialog(\n {\n nzTitle: definition.label,\n nzContent: UserCenterDetailComponent,\n },\n { config: { type: this.activeType, id } },\n () => this.loadPage(),\n );\n }\n\n private loadPage(): void {\n this.loading = true;\n let request: Observable<\n UserCenterApiResult<UserCenterPageResult<UserCenterListItem>>\n >;\n if (this.activeType === 'message') {\n request = this.userCenter.messagePage(\n this.pageIndex,\n this.pageSize,\n this.unreadOnly,\n this.keyWord,\n );\n } else if (this.activeType === 'waiting') {\n request = this.userCenter.waitingPage(\n this.pageIndex,\n this.pageSize,\n this.keyWord,\n );\n } else {\n request = this.userCenter.noticePage(\n this.pageIndex,\n this.pageSize,\n this.keyWord,\n );\n }\n\n request.pipe(finalize(() => (this.loading = false))).subscribe({\n next: (response) => {\n const page = response.result;\n this.list = page?.list ?? [];\n this.listTotal = page?.total ?? 0;\n },\n error: () => {\n this.list = [];\n this.listTotal = 0;\n this.message.error('加载消息中心数据失败');\n },\n });\n }\n\n private isUserCenterType(value: string | null): value is UserCenterType {\n return value != null && this.tabs.includes(value as UserCenterType);\n }\n}\n","<page-header [title]=\"'消息中心'\" class=\"header_hide\" [syncTitle]=\"true\" [breadcrumb]=\"breadcrumb\">\n <ng-template #breadcrumb>\n <nz-breadcrumb>\n <nz-breadcrumb-item><a [routerLink]=\"['/home']\">首页</a></nz-breadcrumb-item>\n <nz-breadcrumb-item>消息中心</nz-breadcrumb-item>\n </nz-breadcrumb>\n </ng-template>\n</page-header>\n\n<div class=\"default-work user-center-page\">\n <nz-tabset [nzSelectedIndex]=\"selectedIndex\" (nzSelectedIndexChange)=\"tabChanged($event)\">\n <nz-tab *ngFor=\"let type of tabs\" [nzTitle]=\"tabLabel(type)\"></nz-tab>\n </nz-tabset>\n <div class=\"content-info\">\n <div class=\"content-info-header\">\n <div class=\"search\">\n <nz-input-group nzSearch [nzAddOnAfter]=\"suffixButton\">\n <input type=\"text\" [(ngModel)]=\"keyWord\" nz-input placeholder=\"请输入标题关键字\" />\n </nz-input-group>\n <ng-template #suffixButton>\n <button nz-button nzType=\"primary\" type=\"button\" nzSearch (click)=\"queryClick()\"><i nz-icon\n nzType=\"search\"></i>查询</button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"content-info-body\">\n <nz-table class=\"default-table\" [nzData]=\"list\" [nzLoading]=\"loading\" [nzFrontPagination]=\"false\"\n [nzShowPagination]=\"false\" [nzNoResult]=\"noResult\" [nzScroll]=\"deonTableContentHG\">\n <thead>\n <tr>\n <th>标题</th>\n <!-- <th>内容</th> -->\n <th nzWidth=\"120px\">日期</th>\n <th nzWidth=\"80px\">状态</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of list\">\n <td>\n <a (click)=\"openDetail(item.id)\">{{ item.title }}</a>\n </td>\n <!-- <td class=\"content-cell\">\n <div [innerHtml]=\"displayContent(item) | safeHtml\">\n </div>\n </td> -->\n <td>{{ displayTime(item) | date: \"yyyy-MM-dd HH:mm\" }}</td>\n <td>\n <nz-tag *ngIf=\"item.read === false\" nzColor=\"blue\">未读</nz-tag>\n <nz-tag *ngIf=\"item.read !== false\" nzColor=\"default\">已读</nz-tag>\n </td>\n </tr>\n </tbody>\n </nz-table>\n </div>\n\n <div class=\"content-info-footer\">\n <nz-pagination [nzPageIndex]=\"pageIndex\" [nzTotal]=\"listTotal\" nzShowSizeChanger [nzPageSize]=\"pageSize\"\n (nzPageIndexChange)=\"listPageIndexChange($event)\" (nzPageSizeChange)=\"listPageSizeChange($event)\">\n </nz-pagination>\n </div>\n\n </div>\n</div>\n\n<ng-template #noResult>\n <div class=\"result-empty\">\n <gram-empty></gram-empty>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { UserCenterMainComponent } from './user-center-main.component';\n\nconst routes: Routes = [\n { path: '', pathMatch: 'full', redirectTo: 'list' },\n { path: 'list', component: UserCenterMainComponent },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes), UserCenterMainComponent],\n exports: [RouterModule],\n})\nexport class UserCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4","i5","i6","i7","i8","i13"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ebuilding/runtime",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.5",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@ebuilding/base": "3.1.
|
|
6
|
-
"@ebuilding/abc": "3.1.
|
|
7
|
-
"@ebuilding/biz-comm": "3.1.
|
|
8
|
-
"@ebuilding/biz-form": "3.1.
|
|
9
|
-
"@ebuilding/biz-list": "3.1.
|
|
10
|
-
"@ebuilding/chart": "3.1.
|
|
11
|
-
"@ebuilding/report": "3.1.
|
|
5
|
+
"@ebuilding/base": "3.1.5",
|
|
6
|
+
"@ebuilding/abc": "3.1.5",
|
|
7
|
+
"@ebuilding/biz-comm": "3.1.5",
|
|
8
|
+
"@ebuilding/biz-form": "3.1.5",
|
|
9
|
+
"@ebuilding/biz-list": "3.1.5",
|
|
10
|
+
"@ebuilding/chart": "3.1.5",
|
|
11
|
+
"@ebuilding/report": "3.1.5",
|
|
12
12
|
"@ebuilding-form/core": "20.0.0",
|
|
13
13
|
"screenfull": "^6.0.2",
|
|
14
14
|
"tslib": "^2.3.0"
|
|
@@ -27,18 +27,14 @@
|
|
|
27
27
|
"types": "./auth/index.d.ts",
|
|
28
28
|
"default": "./fesm2022/auth.mjs"
|
|
29
29
|
},
|
|
30
|
-
"./comm": {
|
|
31
|
-
"types": "./comm/index.d.ts",
|
|
32
|
-
"default": "./fesm2022/comm.mjs"
|
|
33
|
-
},
|
|
34
|
-
"./core": {
|
|
35
|
-
"types": "./core/index.d.ts",
|
|
36
|
-
"default": "./fesm2022/core.mjs"
|
|
37
|
-
},
|
|
38
30
|
"./e-web": {
|
|
39
31
|
"types": "./e-web/index.d.ts",
|
|
40
32
|
"default": "./fesm2022/e-web.mjs"
|
|
41
33
|
},
|
|
34
|
+
"./comm": {
|
|
35
|
+
"types": "./comm/index.d.ts",
|
|
36
|
+
"default": "./fesm2022/comm.mjs"
|
|
37
|
+
},
|
|
42
38
|
"./dynamic": {
|
|
43
39
|
"types": "./dynamic/index.d.ts",
|
|
44
40
|
"default": "./fesm2022/dynamic.mjs"
|
|
@@ -47,9 +43,9 @@
|
|
|
47
43
|
"types": "./exception/index.d.ts",
|
|
48
44
|
"default": "./fesm2022/exception.mjs"
|
|
49
45
|
},
|
|
50
|
-
"./
|
|
51
|
-
"types": "./
|
|
52
|
-
"default": "./fesm2022/
|
|
46
|
+
"./core": {
|
|
47
|
+
"types": "./core/index.d.ts",
|
|
48
|
+
"default": "./fesm2022/core.mjs"
|
|
53
49
|
},
|
|
54
50
|
"./external": {
|
|
55
51
|
"types": "./external/index.d.ts",
|
|
@@ -59,29 +55,17 @@
|
|
|
59
55
|
"types": "./layout/index.d.ts",
|
|
60
56
|
"default": "./fesm2022/layout.mjs"
|
|
61
57
|
},
|
|
58
|
+
"./home": {
|
|
59
|
+
"types": "./home/index.d.ts",
|
|
60
|
+
"default": "./fesm2022/home.mjs"
|
|
61
|
+
},
|
|
62
62
|
"./shared-imports": {
|
|
63
63
|
"types": "./shared-imports/index.d.ts",
|
|
64
64
|
"default": "./fesm2022/shared-imports.mjs"
|
|
65
65
|
},
|
|
66
|
-
"./
|
|
67
|
-
"types": "./
|
|
68
|
-
"default": "./fesm2022/
|
|
69
|
-
},
|
|
70
|
-
"./comm/form": {
|
|
71
|
-
"types": "./comm/form/index.d.ts",
|
|
72
|
-
"default": "./fesm2022/comm.form.mjs"
|
|
73
|
-
},
|
|
74
|
-
"./comm/list": {
|
|
75
|
-
"types": "./comm/list/index.d.ts",
|
|
76
|
-
"default": "./fesm2022/comm.list.mjs"
|
|
77
|
-
},
|
|
78
|
-
"./comm/tree": {
|
|
79
|
-
"types": "./comm/tree/index.d.ts",
|
|
80
|
-
"default": "./fesm2022/comm.tree.mjs"
|
|
81
|
-
},
|
|
82
|
-
"./comm/page": {
|
|
83
|
-
"types": "./comm/page/index.d.ts",
|
|
84
|
-
"default": "./fesm2022/comm.page.mjs"
|
|
66
|
+
"./user-center": {
|
|
67
|
+
"types": "./user-center/index.d.ts",
|
|
68
|
+
"default": "./fesm2022/user-center.mjs"
|
|
85
69
|
},
|
|
86
70
|
"./e-web/extend": {
|
|
87
71
|
"types": "./e-web/extend/index.d.ts",
|
|
@@ -99,21 +83,41 @@
|
|
|
99
83
|
"types": "./e-web/report/index.d.ts",
|
|
100
84
|
"default": "./fesm2022/e-web-report.mjs"
|
|
101
85
|
},
|
|
86
|
+
"./e-web/tab": {
|
|
87
|
+
"types": "./e-web/tab/index.d.ts",
|
|
88
|
+
"default": "./fesm2022/e-web-tab.mjs"
|
|
89
|
+
},
|
|
90
|
+
"./e-web/single": {
|
|
91
|
+
"types": "./e-web/single/index.d.ts",
|
|
92
|
+
"default": "./fesm2022/e-web-single.mjs"
|
|
93
|
+
},
|
|
102
94
|
"./e-web/report-table": {
|
|
103
95
|
"types": "./e-web/report-table/index.d.ts",
|
|
104
96
|
"default": "./fesm2022/e-web-report-table.mjs"
|
|
105
97
|
},
|
|
98
|
+
"./comm/default": {
|
|
99
|
+
"types": "./comm/default/index.d.ts",
|
|
100
|
+
"default": "./fesm2022/comm.default.mjs"
|
|
101
|
+
},
|
|
106
102
|
"./e-web/tree": {
|
|
107
103
|
"types": "./e-web/tree/index.d.ts",
|
|
108
104
|
"default": "./fesm2022/e-web-tree.mjs"
|
|
109
105
|
},
|
|
110
|
-
"./
|
|
111
|
-
"types": "./
|
|
112
|
-
"default": "./fesm2022/
|
|
106
|
+
"./comm/form": {
|
|
107
|
+
"types": "./comm/form/index.d.ts",
|
|
108
|
+
"default": "./fesm2022/comm.form.mjs"
|
|
113
109
|
},
|
|
114
|
-
"./
|
|
115
|
-
"types": "./
|
|
116
|
-
"default": "./fesm2022/
|
|
110
|
+
"./comm/list": {
|
|
111
|
+
"types": "./comm/list/index.d.ts",
|
|
112
|
+
"default": "./fesm2022/comm.list.mjs"
|
|
113
|
+
},
|
|
114
|
+
"./comm/page": {
|
|
115
|
+
"types": "./comm/page/index.d.ts",
|
|
116
|
+
"default": "./fesm2022/comm.page.mjs"
|
|
117
|
+
},
|
|
118
|
+
"./comm/tree": {
|
|
119
|
+
"types": "./comm/tree/index.d.ts",
|
|
120
|
+
"default": "./fesm2022/comm.tree.mjs"
|
|
117
121
|
}
|
|
118
122
|
},
|
|
119
123
|
"sideEffects": false
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { UserCenterMessageItem, UserCenterNoticeItem, UserCenterWaitingItem } from '@ebuilding/base/shared.srv/user-center.service';
|
|
2
|
+
import { UserCenterType } from '../user-center.constants';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
type UserCenterDetail = UserCenterMessageItem & Partial<UserCenterWaitingItem> & Partial<UserCenterNoticeItem>;
|
|
5
|
+
export interface UserCenterDetailConfig {
|
|
6
|
+
type: UserCenterType;
|
|
7
|
+
id: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class UserCenterDetailComponent {
|
|
10
|
+
private readonly userCenter;
|
|
11
|
+
private readonly router;
|
|
12
|
+
private readonly message;
|
|
13
|
+
private readonly drawerRef;
|
|
14
|
+
loading: boolean;
|
|
15
|
+
acknowledging: boolean;
|
|
16
|
+
detail: UserCenterDetail | null;
|
|
17
|
+
detailType: UserCenterType;
|
|
18
|
+
set config(value: UserCenterDetailConfig | null);
|
|
19
|
+
content(): string;
|
|
20
|
+
isRichContent(): boolean;
|
|
21
|
+
time(): string | undefined;
|
|
22
|
+
needAcknowledge(): boolean;
|
|
23
|
+
acknowledge(): void;
|
|
24
|
+
hasActionUrl(): boolean;
|
|
25
|
+
goToBusiness(): void;
|
|
26
|
+
private load;
|
|
27
|
+
private recordRead;
|
|
28
|
+
private internalRoute;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UserCenterDetailComponent, never>;
|
|
30
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UserCenterDetailComponent, "user-center-detail", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
|
|
31
|
+
}
|
|
32
|
+
export {};
|