atr-components 0.2.417 → 2.0.1
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/atr-components.module.d.ts +9 -9
- package/atr-public-api.d.ts +53 -53
- package/core/animations/animations.d.ts +1 -1
- package/core/animations/fly-in.d.ts +1 -1
- package/core/animations/scroll-screen.d.ts +1 -1
- package/core/auth/auth.guard.d.ts +11 -11
- package/core/base/atr-common.d.ts +347 -347
- package/core/directive/error-img.directive.d.ts +10 -10
- package/core/directive/hq-spin.directive.d.ts +13 -13
- package/core/directive/role.directive.d.ts +16 -16
- package/core/interceptor/base.interceptor.d.ts +17 -17
- package/core/ngz-module/cus-zorro-antd.module.d.ts +75 -75
- package/core/pipe/china-num.pipe.d.ts +7 -7
- package/core/pipe/count.pipe.d.ts +7 -7
- package/core/pipe/day.pipe.d.ts +8 -8
- package/core/pipe/defaultVal.pipe.d.ts +7 -7
- package/core/pipe/dicts.pipe.d.ts +10 -10
- package/core/pipe/image-pipe.pipe.d.ts +8 -8
- package/core/pipe/is-empty.pipe.d.ts +7 -7
- package/core/pipe/is-not-empty.pipe.d.ts +7 -7
- package/core/pipe/oss.pipe.d.ts +7 -7
- package/core/pipe/ossStatic.pipe.d.ts +7 -7
- package/core/pipe/pipe-module.module.d.ts +21 -21
- package/core/pipe/remove-html.pipe.d.ts +10 -10
- package/core/pipe/safe-compute.pipe.d.ts +7 -7
- package/core/pipe/safe-html.pipe.d.ts +10 -10
- package/core/pipe/safe-url.pipe.d.ts +10 -10
- package/core/routereuse/atr-reuse-strategy.d.ts +19 -19
- package/core/services/dict/dict.service.d.ts +20 -20
- package/core/services/http.service.d.ts +31 -31
- package/core/services/menu.service.d.ts +29 -29
- package/core/services/upload-oss.service.d.ts +14 -14
- package/core/utils/ToolsUtil.d.ts +180 -180
- package/core/utils/localstorage.util.d.ts +15 -15
- package/core/utils/sessionstorage.util.d.ts +15 -15
- package/{esm2020 → esm2022}/atr-components.mjs +4 -4
- package/esm2022/atr-components.module.mjs +36 -0
- package/{esm2020 → esm2022}/atr-public-api.mjs +54 -54
- package/{esm2020 → esm2022}/core/animations/animations.mjs +9 -9
- package/{esm2020 → esm2022}/core/animations/fly-in.mjs +18 -18
- package/{esm2020 → esm2022}/core/animations/scroll-screen.mjs +22 -22
- package/{esm2020 → esm2022}/core/auth/auth.guard.mjs +37 -37
- package/esm2022/core/base/atr-common.mjs +47 -0
- package/{esm2020 → esm2022}/core/directive/error-img.directive.mjs +31 -31
- package/{esm2020 → esm2022}/core/directive/hq-spin.directive.mjs +48 -48
- package/esm2022/core/directive/role.directive.mjs +69 -0
- package/{esm2020 → esm2022}/core/interceptor/base.interceptor.mjs +165 -165
- package/{esm2020 → esm2022}/core/ngz-module/cus-zorro-antd.module.mjs +292 -292
- package/{esm2020 → esm2022}/core/pipe/china-num.pipe.mjs +36 -36
- package/{esm2020 → esm2022}/core/pipe/count.pipe.mjs +34 -34
- package/{esm2020 → esm2022}/core/pipe/day.pipe.mjs +24 -24
- package/{esm2020 → esm2022}/core/pipe/defaultVal.pipe.mjs +23 -23
- package/{esm2020 → esm2022}/core/pipe/dicts.pipe.mjs +28 -28
- package/{esm2020 → esm2022}/core/pipe/image-pipe.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/is-empty.pipe.mjs +20 -20
- package/{esm2020 → esm2022}/core/pipe/is-not-empty.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/oss.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/ossStatic.pipe.mjs +17 -17
- package/esm2022/core/pipe/pipe-module.module.mjs +38 -0
- package/{esm2020 → esm2022}/core/pipe/remove-html.pipe.mjs +21 -21
- package/{esm2020 → esm2022}/core/pipe/safe-compute.pipe.mjs +23 -23
- package/{esm2020 → esm2022}/core/pipe/safe-html.pipe.mjs +20 -20
- package/{esm2020 → esm2022}/core/pipe/safe-url.pipe.mjs +20 -20
- package/esm2022/core/routereuse/atr-reuse-strategy.mjs +79 -0
- package/esm2022/core/services/dict/dict.service.mjs +152 -0
- package/{esm2020 → esm2022}/core/services/http.service.mjs +306 -306
- package/{esm2020 → esm2022}/core/services/menu.service.mjs +130 -130
- package/{esm2020 → esm2022}/core/services/upload-oss.service.mjs +74 -74
- package/esm2022/core/utils/ToolsUtil.mjs +622 -0
- package/{esm2020 → esm2022}/core/utils/localstorage.util.mjs +94 -94
- package/{esm2020 → esm2022}/core/utils/sessionstorage.util.mjs +72 -72
- package/{esm2020 → esm2022}/lib/hello/hello.component.mjs +15 -15
- package/esm2022/lib/hello/hello.module.mjs +20 -0
- package/esm2022/lib/shared/atr-shared.module.mjs +204 -0
- package/esm2022/lib/shared/echarts/echarts.component.mjs +77 -0
- package/esm2022/lib/shared/form/form.component.mjs +574 -0
- package/esm2022/lib/shared/img-canvas/img-canvas.component.mjs +132 -0
- package/esm2022/lib/shared/local-upload/local-upload.component.mjs +68 -0
- package/esm2022/lib/shared/quill-editor/quill-editor.component.mjs +248 -0
- package/esm2022/lib/shared/select-icons/select-icons.component.mjs +90 -0
- package/{esm2020 → esm2022}/lib/shared/select-tree/select-tree.component.mjs +55 -55
- package/{esm2020 → esm2022}/lib/shared/service/busi.service.mjs +69 -69
- package/{esm2020 → esm2022}/lib/shared/share.service.mjs +107 -107
- package/esm2022/lib/shared/table/table-form-item/table-form-item.component.mjs +96 -0
- package/esm2022/lib/shared/table/table-td/table-td.component.mjs +165 -0
- package/esm2022/lib/shared/table/table.component.mjs +749 -0
- package/{esm2020 → esm2022}/lib/shared/upload/upload.component.mjs +274 -274
- package/{esm2020 → esm2022}/lib/shared/validators/atr-validtors.mjs +8 -8
- package/esm2022/lib/shared/video/video.component.mjs +16 -0
- package/esm2022/lib/shared/view-form/view-form.component.mjs +181 -0
- package/{fesm2020 → fesm2022}/atr-components.mjs +5311 -5312
- package/fesm2022/atr-components.mjs.map +1 -0
- package/{atr-components.d.ts → index.d.ts} +5 -5
- package/lib/hello/hello.component.d.ts +8 -8
- package/lib/hello/hello.module.d.ts +8 -8
- package/lib/shared/atr-shared.module.d.ts +36 -33
- package/lib/shared/echarts/echarts.component.d.ts +34 -34
- package/lib/shared/form/form.component.d.ts +45 -45
- package/lib/shared/img-canvas/img-canvas.component.d.ts +28 -28
- package/lib/shared/local-upload/local-upload.component.d.ts +22 -22
- package/lib/shared/quill-editor/quill-editor.component.d.ts +45 -45
- package/lib/shared/select-icons/select-icons.component.d.ts +24 -24
- package/lib/shared/select-tree/select-tree.component.d.ts +23 -23
- package/lib/shared/service/busi.service.d.ts +20 -20
- package/lib/shared/share.service.d.ts +14 -14
- package/lib/shared/table/table-form-item/table-form-item.component.d.ts +25 -25
- package/lib/shared/table/table-td/table-td.component.d.ts +26 -26
- package/lib/shared/table/table.component.d.ts +94 -94
- package/lib/shared/upload/upload.component.d.ts +53 -53
- package/lib/shared/validators/atr-validtors.d.ts +2 -2
- package/lib/shared/video/video.component.d.ts +7 -7
- package/lib/shared/view-form/view-form.component.d.ts +28 -28
- package/package.json +14 -22
- package/esm2020/atr-components.module.mjs +0 -38
- package/esm2020/core/base/atr-common.mjs +0 -47
- package/esm2020/core/directive/role.directive.mjs +0 -69
- package/esm2020/core/pipe/pipe-module.module.mjs +0 -40
- package/esm2020/core/routereuse/atr-reuse-strategy.mjs +0 -79
- package/esm2020/core/services/dict/dict.service.mjs +0 -152
- package/esm2020/core/utils/ToolsUtil.mjs +0 -622
- package/esm2020/lib/hello/hello.module.mjs +0 -22
- package/esm2020/lib/shared/atr-shared.module.mjs +0 -199
- package/esm2020/lib/shared/echarts/echarts.component.mjs +0 -77
- package/esm2020/lib/shared/form/form.component.mjs +0 -574
- package/esm2020/lib/shared/img-canvas/img-canvas.component.mjs +0 -132
- package/esm2020/lib/shared/local-upload/local-upload.component.mjs +0 -68
- package/esm2020/lib/shared/quill-editor/quill-editor.component.mjs +0 -248
- package/esm2020/lib/shared/select-icons/select-icons.component.mjs +0 -90
- package/esm2020/lib/shared/table/table-form-item/table-form-item.component.mjs +0 -96
- package/esm2020/lib/shared/table/table-td/table-td.component.mjs +0 -165
- package/esm2020/lib/shared/table/table.component.mjs +0 -749
- package/esm2020/lib/shared/video/video.component.mjs +0 -15
- package/esm2020/lib/shared/view-form/view-form.component.mjs +0 -181
- package/fesm2015/atr-components.mjs +0 -5522
- package/fesm2015/atr-components.mjs.map +0 -1
- package/fesm2020/atr-components.mjs.map +0 -1
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class HqSpinDirective {
|
|
4
|
-
constructor(el, render) {
|
|
5
|
-
this.el = el;
|
|
6
|
-
this.render = render;
|
|
7
|
-
this.spinLoading = false;
|
|
8
|
-
this.text = null;
|
|
9
|
-
this.render.addClass(this.el.nativeElement, 'hq-spin-container');
|
|
10
|
-
this.loadingEle = this.render.createElement('div');
|
|
11
|
-
let dom1 = document.createElement('div');
|
|
12
|
-
this.loadingEle.append(dom1);
|
|
13
|
-
this.render.addClass(dom1, 'loader-03');
|
|
14
|
-
// this.render.addClass(this.loadingEle, 'loader-04');
|
|
15
|
-
}
|
|
16
|
-
ngOnChanges(changes) {
|
|
17
|
-
const { spinLoading, text } = changes;
|
|
18
|
-
if (text && text.currentValue) {
|
|
19
|
-
let dom = document.createElement('div');
|
|
20
|
-
dom.innerText = text.currentValue;
|
|
21
|
-
this.loadingEle.append(dom);
|
|
22
|
-
this.render.addClass(dom, 'loader-04');
|
|
23
|
-
}
|
|
24
|
-
if (spinLoading) {
|
|
25
|
-
if (spinLoading.currentValue) {
|
|
26
|
-
this.render.addClass(this.el.nativeElement, 'hq-spin-blur');
|
|
27
|
-
this.render.appendChild(this.el.nativeElement, this.loadingEle);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
this.render.removeClass(this.el.nativeElement, 'hq-spin-blur');
|
|
31
|
-
this.render.removeChild(this.el.nativeElement, this.loadingEle);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
39
|
-
type: Directive,
|
|
40
|
-
args: [{
|
|
41
|
-
selector: '[HqSpin]'
|
|
42
|
-
}]
|
|
43
|
-
}], ctorParameters:
|
|
44
|
-
type: Input
|
|
45
|
-
}], text: [{
|
|
46
|
-
type: Input
|
|
47
|
-
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class HqSpinDirective {
|
|
4
|
+
constructor(el, render) {
|
|
5
|
+
this.el = el;
|
|
6
|
+
this.render = render;
|
|
7
|
+
this.spinLoading = false;
|
|
8
|
+
this.text = null;
|
|
9
|
+
this.render.addClass(this.el.nativeElement, 'hq-spin-container');
|
|
10
|
+
this.loadingEle = this.render.createElement('div');
|
|
11
|
+
let dom1 = document.createElement('div');
|
|
12
|
+
this.loadingEle.append(dom1);
|
|
13
|
+
this.render.addClass(dom1, 'loader-03');
|
|
14
|
+
// this.render.addClass(this.loadingEle, 'loader-04');
|
|
15
|
+
}
|
|
16
|
+
ngOnChanges(changes) {
|
|
17
|
+
const { spinLoading, text } = changes;
|
|
18
|
+
if (text && text.currentValue) {
|
|
19
|
+
let dom = document.createElement('div');
|
|
20
|
+
dom.innerText = text.currentValue;
|
|
21
|
+
this.loadingEle.append(dom);
|
|
22
|
+
this.render.addClass(dom, 'loader-04');
|
|
23
|
+
}
|
|
24
|
+
if (spinLoading) {
|
|
25
|
+
if (spinLoading.currentValue) {
|
|
26
|
+
this.render.addClass(this.el.nativeElement, 'hq-spin-blur');
|
|
27
|
+
this.render.appendChild(this.el.nativeElement, this.loadingEle);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.render.removeClass(this.el.nativeElement, 'hq-spin-blur');
|
|
31
|
+
this.render.removeChild(this.el.nativeElement, this.loadingEle);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: HqSpinDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
36
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: HqSpinDirective, selector: "[HqSpin]", inputs: { spinLoading: "spinLoading", text: "text" }, usesOnChanges: true, ngImport: i0 }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: HqSpinDirective, decorators: [{
|
|
39
|
+
type: Directive,
|
|
40
|
+
args: [{
|
|
41
|
+
selector: '[HqSpin]'
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { spinLoading: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], text: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHEtc3Bpbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9jb3JlL2RpcmVjdGl2ZS9ocS1zcGluLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBa0QsTUFBTSxlQUFlLENBQUM7O0FBS2hHLE1BQU0sT0FBTyxlQUFlO0lBTzFCLFlBQW9CLEVBQWMsRUFBVSxNQUFpQjtRQUF6QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUxwRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBTW5CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRCxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4QyxzREFBc0Q7SUFDeEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsV0FBVyxFQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNyQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzdCLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFBO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksV0FBVyxFQUFFO1lBRWYsSUFBSSxXQUFXLENBQUMsWUFBWSxFQUFFO2dCQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2pFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDakU7U0FDRjtJQUNILENBQUM7OEdBcENVLGVBQWU7a0dBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFIM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtpQkFDckI7dUdBR1UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW0hxU3Bpbl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIcVNwaW5EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBzcGluTG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRleHQgPSBudWxsO1xyXG5cclxuICBsb2FkaW5nRWxlOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyOiBSZW5kZXJlcjIpIHtcclxuXHJcbiAgICB0aGlzLnJlbmRlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdocS1zcGluLWNvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5sb2FkaW5nRWxlID0gdGhpcy5yZW5kZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgbGV0IGRvbTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMubG9hZGluZ0VsZS5hcHBlbmQoZG9tMSlcclxuICAgIHRoaXMucmVuZGVyLmFkZENsYXNzKGRvbTEsICdsb2FkZXItMDMnKTtcclxuICAgIC8vIHRoaXMucmVuZGVyLmFkZENsYXNzKHRoaXMubG9hZGluZ0VsZSwgJ2xvYWRlci0wNCcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgeyBzcGluTG9hZGluZyx0ZXh0IH0gPSBjaGFuZ2VzO1xyXG4gICAgaWYgKHRleHQgJiYgdGV4dC5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgbGV0IGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBkb20uaW5uZXJUZXh0ID0gdGV4dC5jdXJyZW50VmFsdWVcclxuICAgICAgdGhpcy5sb2FkaW5nRWxlLmFwcGVuZChkb20pXHJcbiAgICAgIHRoaXMucmVuZGVyLmFkZENsYXNzKGRvbSwgJ2xvYWRlci0wNCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKHNwaW5Mb2FkaW5nKSB7XHJcblxyXG4gICAgICBpZiAoc3BpbkxvYWRpbmcuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaHEtc3Bpbi1ibHVyJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXIuYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmxvYWRpbmdFbGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVuZGVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2hxLXNwaW4tYmx1cicpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyLnJlbW92ZUNoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5sb2FkaW5nRWxlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { MenuService } from "../services/menu.service";
|
|
4
|
+
import { ToolsUtil } from "../utils/ToolsUtil";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AtrRoleDirective {
|
|
7
|
+
set atrRole(condition) {
|
|
8
|
+
if (ToolsUtil.isNull(condition)) {
|
|
9
|
+
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
10
|
+
this.hasView = true;
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (condition == "any") {
|
|
14
|
+
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
15
|
+
this.hasView = true;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let curPath = this.getRouterUrl();
|
|
19
|
+
this.menuService.getCurMenu(curPath).subscribe(result => {
|
|
20
|
+
let curMenu = result;
|
|
21
|
+
let isExited = false;
|
|
22
|
+
if (curMenu && curMenu != null && curMenu.operation) {
|
|
23
|
+
let operations = curMenu.operation.split(",");
|
|
24
|
+
for (let operation of operations) {
|
|
25
|
+
if (operation == condition) {
|
|
26
|
+
isExited = true;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (isExited && !this.hasView) {
|
|
32
|
+
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
33
|
+
this.hasView = true;
|
|
34
|
+
}
|
|
35
|
+
else if (!condition && this.hasView) {
|
|
36
|
+
this.viewContainer.clear();
|
|
37
|
+
this.hasView = false;
|
|
38
|
+
}
|
|
39
|
+
}, error => {
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
constructor(injector, render, templateRef, viewContainer) {
|
|
43
|
+
this.injector = injector;
|
|
44
|
+
this.render = render;
|
|
45
|
+
this.templateRef = templateRef;
|
|
46
|
+
this.viewContainer = viewContainer;
|
|
47
|
+
this.hasView = false;
|
|
48
|
+
}
|
|
49
|
+
ngOnInit() {
|
|
50
|
+
}
|
|
51
|
+
get menuService() {
|
|
52
|
+
return this.injector.get(MenuService);
|
|
53
|
+
}
|
|
54
|
+
getRouterUrl() {
|
|
55
|
+
return this.injector.get(Router).url;
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AtrRoleDirective, deps: [{ token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AtrRoleDirective, selector: "[atrRole]", inputs: { atrRole: "atrRole" }, ngImport: i0 }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AtrRoleDirective, decorators: [{
|
|
61
|
+
type: Directive,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: '[atrRole]'
|
|
64
|
+
}]
|
|
65
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { atrRole: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: ['atrRole']
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9jb3JlL2RpcmVjdGl2ZS9yb2xlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBNkQsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7O0FBSzdDLE1BQU0sT0FBTyxnQkFBZ0I7SUFJM0IsSUFDSSxPQUFPLENBQUMsU0FBaUI7UUFDM0IsSUFBRyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE9BQU07U0FDUDtRQUVELElBQUcsU0FBUyxJQUFJLEtBQUssRUFBQztZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPO1NBQ1I7UUFDRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUM1QyxNQUFNLENBQUMsRUFBRTtZQUNQLElBQUksT0FBTyxHQUFTLE1BQU0sQ0FBQztZQUMzQixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBRyxPQUFPLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFDO2dCQUNqRCxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUMsS0FBSSxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUM7b0JBQzVCLElBQUcsU0FBUyxJQUFJLFNBQVMsRUFBQzt3QkFDeEIsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDaEIsTUFBTTtxQkFDUDtpQkFDSjthQUNGO1lBQ0QsSUFBRyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFDO2dCQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDckI7aUJBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFDO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN0QjtRQUNILENBQUMsRUFBQyxLQUFLLENBQUMsRUFBRTtRQUVWLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELFlBQW9CLFFBQWtCLEVBQVMsTUFBaUIsRUFBVSxXQUE2QixFQUM3RixhQUErQjtRQURyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3RixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUEzQ2pDLFlBQU8sR0FBRyxLQUFLLENBQUM7SUE2Q3hCLENBQUM7SUFDRCxRQUFRO0lBQ1IsQ0FBQztJQUNELElBQVksV0FBVztRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLENBQUM7OEdBeERVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO2lCQUN0Qjs4SkFNSyxPQUFPO3NCQURWLEtBQUs7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIEluamVjdG9yICxPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge01lbnVTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TWVudX0gZnJvbSBcIi4uL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uL3V0aWxzL1Rvb2xzVXRpbFwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXRyUm9sZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHJSb2xlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuICBwcml2YXRlIGhhc1ZpZXcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCdhdHJSb2xlJylcclxuICBzZXQgYXRyUm9sZShjb25kaXRpb246IHN0cmluZykge1xyXG4gICAgaWYoVG9vbHNVdGlsLmlzTnVsbChjb25kaXRpb24pKXtcclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgdGhpcy5oYXNWaWV3ID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgaWYoY29uZGl0aW9uID09IFwiYW55XCIpe1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xyXG4gICAgICB0aGlzLmhhc1ZpZXcgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgY3VyUGF0aCA9IHRoaXMuZ2V0Um91dGVyVXJsKCk7XHJcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmdldEN1ck1lbnUoY3VyUGF0aCkuc3Vic2NyaWJlKFxyXG4gICAgICByZXN1bHQgPT4ge1xyXG4gICAgICAgIGxldCBjdXJNZW51Ok1lbnUgPSAgcmVzdWx0O1xyXG4gICAgICAgIGxldCBpc0V4aXRlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGN1ck1lbnUgJiYgY3VyTWVudSAhPSBudWxsICYmIGN1ck1lbnUub3BlcmF0aW9uKXtcclxuICAgICAgICAgIGxldCBvcGVyYXRpb25zID0gY3VyTWVudS5vcGVyYXRpb24uc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgZm9yKGxldCBvcGVyYXRpb24gb2Ygb3BlcmF0aW9ucyl7XHJcbiAgICAgICAgICAgICAgaWYob3BlcmF0aW9uID09IGNvbmRpdGlvbil7XHJcbiAgICAgICAgICAgICAgICBpc0V4aXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGlzRXhpdGVkICYmICF0aGlzLmhhc1ZpZXcpe1xyXG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgICAgIHRoaXMuaGFzVmlldyA9IHRydWU7XHJcbiAgICAgICAgfWVsc2UgaWYgKCFjb25kaXRpb24gJiYgdGhpcy5oYXNWaWV3KXtcclxuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgICAgdGhpcy5oYXNWaWV3ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LGVycm9yID0+e1xyXG5cclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IscHJpdmF0ZSByZW5kZXIgOlJlbmRlcmVyMiAscHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xyXG5cclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0IG1lbnVTZXJ2aWNlKCk6IE1lbnVTZXJ2aWNle1xyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KE1lbnVTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3V0ZXJVcmwoKTpzdHJpbmd7XHJcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKS51cmw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,165 +1,165 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpErrorResponse, HttpResponseBase, HttpResponse } from '@angular/common/http';
|
|
3
|
-
import { Observable, of, throwError } from 'rxjs';
|
|
4
|
-
import { mergeMap, catchError } from 'rxjs/operators';
|
|
5
|
-
import { Router } from '@angular/router';
|
|
6
|
-
import { NzNotificationService } from 'ng-zorro-antd/notification';
|
|
7
|
-
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
8
|
-
import { LocalStorageUtil } from "../utils/localstorage.util";
|
|
9
|
-
import { AtrReuseStrategy } from "../routereuse/atr-reuse-strategy";
|
|
10
|
-
import { MenuService } from "../services/menu.service";
|
|
11
|
-
import { atr_static_datas } from "../base/atr-common";
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
const CODEMESSAGE = {
|
|
14
|
-
200: '服务器成功返回请求的数据。',
|
|
15
|
-
201: '新建或修改数据成功。',
|
|
16
|
-
202: '一个请求已经进入后台排队(异步任务)。',
|
|
17
|
-
204: '删除数据成功。',
|
|
18
|
-
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
|
|
19
|
-
401: '用户没有权限(令牌、用户名、密码错误)。',
|
|
20
|
-
403: '用户得到授权,但是访问是被禁止的。',
|
|
21
|
-
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
|
|
22
|
-
406: '请求的格式不可得。',
|
|
23
|
-
410: '请求的资源被永久删除,且不会再得到的。',
|
|
24
|
-
422: '当创建一个对象时,发生一个验证错误。',
|
|
25
|
-
500: '服务器发生错误,请检查服务器。',
|
|
26
|
-
502: '网关错误。',
|
|
27
|
-
503: '服务不可用,服务器暂时过载或维护。',
|
|
28
|
-
504: '网关超时。',
|
|
29
|
-
};
|
|
30
|
-
export class BaseInterceptor {
|
|
31
|
-
constructor(injector) {
|
|
32
|
-
this.injector = injector;
|
|
33
|
-
}
|
|
34
|
-
get notification() {
|
|
35
|
-
return this.injector.get(NzNotificationService);
|
|
36
|
-
}
|
|
37
|
-
get message() {
|
|
38
|
-
return this.injector.get(NzMessageService);
|
|
39
|
-
}
|
|
40
|
-
get menuService() {
|
|
41
|
-
return this.injector.get(MenuService);
|
|
42
|
-
}
|
|
43
|
-
goTo(url, isClearCache) {
|
|
44
|
-
// console.log("需要跳转到页面:")
|
|
45
|
-
// console.log(url);
|
|
46
|
-
setTimeout(() => this.injector.get(Router).navigateByUrl(url));
|
|
47
|
-
if (isClearCache) {
|
|
48
|
-
setTimeout(() => AtrReuseStrategy.deleteAll(), 50);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
checkStatus(ev) {
|
|
52
|
-
if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
// console.log(ev.status);
|
|
56
|
-
// const errortext = CODEMESSAGE[ev.status] || ev.statusText;
|
|
57
|
-
this.message.error('网络错误,请稍后重试:' + ev.status);
|
|
58
|
-
}
|
|
59
|
-
handleData(ev, noTip = false) {
|
|
60
|
-
this.checkStatus(ev);
|
|
61
|
-
// 业务处理:一些通用操作
|
|
62
|
-
switch (ev.status) {
|
|
63
|
-
case 200:
|
|
64
|
-
// TODO status
|
|
65
|
-
// 业务层级错误处理,以下是假定restful有一套统一输出格式(指不管成功与否都有相应的数据格式)情况下进行处理
|
|
66
|
-
// 例如响应内容:
|
|
67
|
-
// 错误内容:{ status: 1, msg: '非法参数' }
|
|
68
|
-
// 正确内容:{ status: 0, response: { } }
|
|
69
|
-
// 则以下代码片断可直接适用
|
|
70
|
-
if (ev instanceof HttpResponse) {
|
|
71
|
-
const body = ev.body;
|
|
72
|
-
if (body && body.status === 401) {
|
|
73
|
-
if (!noTip) {
|
|
74
|
-
this.notification.error(`未登录或登录已过期,请重新登录。`, ``, {
|
|
75
|
-
nzKey: 'outTime'
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
// TODO 清空 token 信息
|
|
79
|
-
LocalStorageUtil.clearUs();
|
|
80
|
-
this.menuService.clear();
|
|
81
|
-
this.goTo('/p/login', true);
|
|
82
|
-
}
|
|
83
|
-
else if (body && body.status === 1024) {
|
|
84
|
-
// 或者依然保持完整的格式
|
|
85
|
-
if (!noTip) {
|
|
86
|
-
this.message.error(body.message);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else if (body && body.status === 1025) {
|
|
90
|
-
// 或者依然保持完整的格式
|
|
91
|
-
if (!noTip) {
|
|
92
|
-
this.message.error(`参数为空。`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
else if (body && body.status === 503) {
|
|
96
|
-
// 或者依然保持完整的格式
|
|
97
|
-
if (!noTip) {
|
|
98
|
-
this.message.error(body.message);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else if (body && body.status === 204) {
|
|
102
|
-
// 或者依然保持完整的格式
|
|
103
|
-
if (!noTip) {
|
|
104
|
-
this.message.success(body.message);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else if (body && body.status === 201) {
|
|
108
|
-
// 或者依然保持完整的格式
|
|
109
|
-
if (!noTip) {
|
|
110
|
-
this.message.success(body.message);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
return of(ev);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
break;
|
|
118
|
-
case 401:
|
|
119
|
-
this.notification.error(`未登录或登录已过期,请重新登录。`, ``, {
|
|
120
|
-
nzKey: 'outTime'
|
|
121
|
-
});
|
|
122
|
-
// TODO 清空 token 信息
|
|
123
|
-
// this.goTo('/p/login',false);
|
|
124
|
-
break;
|
|
125
|
-
case 403:
|
|
126
|
-
case 404:
|
|
127
|
-
case 500:
|
|
128
|
-
this.goTo(`/exception/${ev.status}`, false);
|
|
129
|
-
break;
|
|
130
|
-
default:
|
|
131
|
-
if (ev instanceof HttpErrorResponse) {
|
|
132
|
-
// console.warn('未可知错误,大部分是由于后端不支持CORS或无效配置引起', ev);
|
|
133
|
-
return throwError(ev);
|
|
134
|
-
}
|
|
135
|
-
break;
|
|
136
|
-
}
|
|
137
|
-
return of(ev);
|
|
138
|
-
}
|
|
139
|
-
intercept(req, next) {
|
|
140
|
-
if (!atr_static_datas.SERVER_URL) {
|
|
141
|
-
alert('请配置ip atr_static_datas.SERVER_URL');
|
|
142
|
-
return new Observable();
|
|
143
|
-
}
|
|
144
|
-
// 统一加上服务端前缀
|
|
145
|
-
let url = req.url;
|
|
146
|
-
if (!url.startsWith('https://') && !url.startsWith('http://')) {
|
|
147
|
-
url = atr_static_datas.SERVER_URL + url;
|
|
148
|
-
req = req.clone({ url });
|
|
149
|
-
}
|
|
150
|
-
let noTip = req.headers.get("noTip");
|
|
151
|
-
return next.handle(req).pipe(mergeMap((event) => {
|
|
152
|
-
// 允许统一对请求错误处理
|
|
153
|
-
if (event instanceof HttpResponseBase)
|
|
154
|
-
return this.handleData(event, noTip == "1");
|
|
155
|
-
// 若一切都正常,则后续操作
|
|
156
|
-
return of(event);
|
|
157
|
-
}), catchError((err) => this.handleData(err, noTip == "1")));
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
-
type: Injectable
|
|
164
|
-
}], ctorParameters:
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvaW50ZXJjZXB0b3IvYmFzZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBd0QsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDNUosT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFHLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFcEQsTUFBTSxXQUFXLEdBQUc7SUFDaEIsR0FBRyxFQUFFLGVBQWU7SUFDcEIsR0FBRyxFQUFFLFlBQVk7SUFDakIsR0FBRyxFQUFFLHFCQUFxQjtJQUMxQixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSw2QkFBNkI7SUFDbEMsR0FBRyxFQUFFLHNCQUFzQjtJQUMzQixHQUFHLEVBQUUsbUJBQW1CO0lBQ3hCLEdBQUcsRUFBRSw0QkFB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QUFDO1lBQ2xGLGVBQWU7WUFDZixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7OzZHQTdITSxlQUFlO2lIQUFmLGVBQWU7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUmVzcG9uc2VCYXNlLCBIdHRwUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiAsdGhyb3dFcnJvciAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWVyZ2VNYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE56Tm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHtOek1lc3NhZ2VTZXJ2aWNlfSBmcm9tICduZy16b3Jyby1hbnRkL21lc3NhZ2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gXCIuLi91dGlscy9sb2NhbHN0b3JhZ2UudXRpbFwiO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tIFwibmctem9ycm8tYW50ZC9jb3JlL2Vudmlyb25tZW50c1wiO1xyXG5pbXBvcnQge0F0clJldXNlU3RyYXRlZ3l9IGZyb20gXCIuLi9yb3V0ZXJldXNlL2F0ci1yZXVzZS1zdHJhdGVneVwiO1xyXG5pbXBvcnQge01lbnVTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7YXRyX3N0YXRpY19kYXRhc30gZnJvbSBcIi4uL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5cclxuY29uc3QgQ09ERU1FU1NBR0UgPSB7XHJcbiAgICAyMDA6ICfmnI3liqHlmajmiJDlip/ov5Tlm57or7fmsYLnmoTmlbDmja7jgIInLFxyXG4gICAgMjAxOiAn5paw5bu65oiW5L+u5pS55pWw5o2u5oiQ5Yqf44CCJyxcclxuICAgIDIwMjogJ+S4gOS4quivt+axguW3sue7j+i/m+WFpeWQjuWPsOaOkumYn++8iOW8guatpeS7u+WKoe+8ieOAgicsXHJcbiAgICAyMDQ6ICfliKDpmaTmlbDmja7miJDlip/jgIInLFxyXG4gICAgNDAwOiAn5Y+R5Ye655qE6K+35rGC5pyJ6ZSZ6K+v77yM5pyN5Yqh5Zmo5rKh5pyJ6L+b6KGM5paw5bu65oiW5L+u5pS55pWw5o2u55qE5pON5L2c44CCJyxcclxuICAgIDQwMTogJ+eUqOaIt+ayoeacieadg+mZkO+8iOS7pOeJjOOAgeeUqOaIt+WQjeOAgeWvhueggemUmeivr++8ieOAgicsXHJcbiAgICA0MDM6ICfnlKjmiLflvpfliLDmjojmnYPvvIzkvYbmmK/orr/pl67mmK/ooqvnpoHmraLnmoTjgIInLFxyXG4gICAgNDA0OiAn5Y+R5Ye655qE6K+35rGC6ZKI5a+555qE5piv5LiN5a2Y5Zyo55qE6K6w5b2V77yM5pyN5Yqh5Zmo5rKh5pyJ6L+b6KGM5pON5L2c44CCJyxcclxuICAgIDQwNjogJ+ivt+axgueahOagvOW8j+S4jeWPr+W+l+OAgicsXHJcbiAgICA0MTA6ICfor7fmsYLnmoTotYTmupDooqvmsLjkuYXliKDpmaTvvIzkuJTkuI3kvJrlho3lvpfliLDnmoTjgIInLFxyXG4gICAgNDIyOiAn5b2T5Yib5bu65LiA5Liq5a+56LGh5pe277yM5Y+R55Sf5LiA5Liq6aqM6K+B6ZSZ6K+v44CCJyxcclxuICAgIDUwMDogJ+acjeWKoeWZqOWPkeeUn+mUmeivr++8jOivt+ajgOafpeacjeWKoeWZqOOAgicsXHJcbiAgICA1MDI6ICfnvZHlhbPplJnor6/jgIInLFxyXG4gICAgNTAzOiAn5pyN5Yqh5LiN5Y+v55So77yM5pyN5Yqh5Zmo5pqC5pe26L+H6L295oiW57u05oqk44CCJyxcclxuICAgIDUwNDogJ+e9keWFs+i2heaXtuOAgicsXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3J7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cclxuICAgIHByaXZhdGUgZ2V0IG5vdGlmaWNhdGlvbigpOiBOek5vdGlmaWNhdGlvblNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOek5vdGlmaWNhdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBnZXQgbWVzc2FnZSgpOiBOek1lc3NhZ2VTZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTnpNZXNzYWdlU2VydmljZSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGdldCBtZW51U2VydmljZSgpOiBNZW51U2VydmljZXtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTWVudVNlcnZpY2UpXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnb1RvKHVybDogc3RyaW5nLGlzQ2xlYXJDYWNoZTpib29sZWFuKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwi6ZyA6KaB6Lez6L2s5Yiw6aG16Z2i77yaXCIpXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHVybCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKS5uYXZpZ2F0ZUJ5VXJsKHVybCkpO1xyXG4gICAgICBpZihpc0NsZWFyQ2FjaGUpe1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCk9PiAgQXRyUmV1c2VTdHJhdGVneS5kZWxldGVBbGwoKSw1MCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrU3RhdHVzKGV2OiBIdHRwUmVzcG9uc2VCYXNlKSB7XHJcbiAgICAgICAgaWYgKChldi5zdGF0dXMgPj0gMjAwICYmIGV2LnN0YXR1cyA8IDMwMCkgfHwgZXYuc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZXYuc3RhdHVzKTtcclxuICAgICAgICAvLyBjb25zdCBlcnJvcnRleHQgPSBDT0RFTUVTU0FHRVtldi5zdGF0dXNdIHx8IGV2LnN0YXR1c1RleHQ7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlLmVycm9yKCfnvZHnu5zplJnor68s6K+356iN5ZCO6YeN6K+V77yaJyArIGV2LnN0YXR1cyk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGhhbmRsZURhdGEoZXY6IEh0dHBSZXNwb25zZUJhc2Usbm9UaXAgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1N0YXR1cyhldik7XHJcbiAgICAgICAgLy8g5Lia5Yqh5aSE55CG77ya5LiA5Lqb6YCa55So5pON5L2cXHJcbiAgICAgICAgc3dpdGNoIChldi5zdGF0dXMpIHtcclxuICAgICAgICAgIGNhc2UgMjAwOlxyXG4gICAgICAgICAgICAvLyBUT0RPIHN0YXR1c1xyXG4gICAgICAgICAgICAvLyDkuJrliqHlsYLnuqfplJnor6/lpITnkIbvvIzku6XkuIvmmK/lgYflrppyZXN0ZnVs5pyJ5LiA5aWX57uf5LiA6L6T5Ye65qC85byP77yI5oyH5LiN566h5oiQ5Yqf5LiO5ZCm6YO95pyJ55u45bqU55qE5pWw5o2u5qC85byP77yJ5oOF5Ya15LiL6L+b6KGM5aSE55CGXHJcbiAgICAgICAgICAgIC8vIOS+i+WmguWTjeW6lOWGheWuue+8mlxyXG4gICAgICAgICAgICAvLyAg6ZSZ6K+v5YaF5a6577yaeyBzdGF0dXM6IDEsIG1zZzogJ+mdnuazleWPguaVsCcgfVxyXG4gICAgICAgICAgICAvLyAg5q2j56Gu5YaF5a6577yaeyBzdGF0dXM6IDAsIHJlc3BvbnNlOiB7ICB9IH1cclxuICAgICAgICAgICAgLy8g5YiZ5Lul5LiL5Luj56CB54mH5pat5Y+v55u05o6l6YCC55SoXHJcbiAgICAgICAgICAgIGlmIChldiBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm9keTogYW55ID0gZXYuYm9keTtcclxuICAgICAgICAgICAgICAgIGlmIChib2R5ICYmIGJvZHkuc3RhdHVzID09PSA0MDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoYOacqueZu+W9leaIlueZu+W9leW3sui/h+acn++8jOivt+mHjeaWsOeZu+W9leOAgmAsIGBgLHtcclxuICAgICAgICAgICAgICAgICAgICAgIG56S2V5OiAnb3V0VGltZSdcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyBUT0RPIOa4heepuiB0b2tlbiDkv6Hmga9cclxuICAgICAgICAgICAgICAgICAgTG9jYWxTdG9yYWdlVXRpbC5jbGVhclVzKClcclxuICAgICAgICAgICAgICAgICAgdGhpcy5tZW51U2VydmljZS5jbGVhcigpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdvVG8oJy9wL2xvZ2luJyx0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZihib2R5ICYmIGJvZHkuc3RhdHVzID09PSAxMDI0KXtcclxuICAgICAgICAgICAgICAgICAgLy8g5oiW6ICF5L6d54S25L+d5oyB5a6M5pW055qE5qC85byPXHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5lcnJvcihib2R5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gMTAyNSl7XHJcbiAgICAgICAgICAgICAgICAgIC8vIOaIluiAheS+neeEtuS/neaMgeWujOaVtOeahOagvOW8j1xyXG4gICAgICAgICAgICAgICAgICBpZighbm9UaXApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoYOWPguaVsOS4uuepuuOAgmApO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gNTAzKXtcclxuICAgICAgICAgICAgICAgICAgLy8g5oiW6ICF5L6d54S25L+d5oyB5a6M5pW055qE5qC85byPXHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5lcnJvcihib2R5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZihib2R5ICYmIGJvZHkuc3RhdHVzID09PSAyMDQpe1xyXG4gICAgICAgICAgICAgICAgICAvLyDmiJbogIXkvp3nhLbkv53mjIHlrozmlbTnmoTmoLzlvI9cclxuICAgICAgICAgICAgICAgICAgaWYoIW5vVGlwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlLnN1Y2Nlc3MoYm9keS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gMjAxKXtcclxuICAgICAgICAgICAgICAgICAgLy8g5oiW6ICF5L6d54S25L+d5oyB5a6M5pW055qE5qC85byPXHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdWNjZXNzKGJvZHkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZXYpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKGDmnKrnmbvlvZXmiJbnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZXjgIJgLCBgYCx7XHJcbiAgICAgICAgICAgICAgbnpLZXk6ICdvdXRUaW1lJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gVE9ETyDmuIXnqbogdG9rZW4g5L+h5oGvXHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLmdvVG8oJy9wL2xvZ2luJyxmYWxzZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICBjYXNlIDQwNDpcclxuICAgICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgICB0aGlzLmdvVG8oYC9leGNlcHRpb24vJHtldi5zdGF0dXN9YCxmYWxzZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKGV2IGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oJ+acquWPr+efpemUmeivr++8jOWkp+mDqOWIhuaYr+eUseS6juWQjuerr+S4jeaUr+aMgUNPUlPmiJbml6DmlYjphY3nva7lvJXotbcnLCBldik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2YoZXYpO1xyXG4gICAgICB9XHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgaWYoIWF0cl9zdGF0aWNfZGF0YXMuU0VSVkVSX1VSTCl7XHJcbiAgICAgICAgYWxlcnQoJ+ivt+mFjee9rmlwIGF0cl9zdGF0aWNfZGF0YXMuU0VSVkVSX1VSTCcpXHJcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKCk7XHJcbiAgICAgIH1cclxuICAgICAgICAvLyDnu5/kuIDliqDkuIrmnI3liqHnq6/liY3nvIBcclxuICAgICAgICBsZXQgdXJsID0gcmVxLnVybDtcclxuICAgICAgICBpZiAoIXVybC5zdGFydHNXaXRoKCdodHRwczovLycpICYmICF1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpKSB7XHJcbiAgICAgICAgICB1cmwgPSBhdHJfc3RhdGljX2RhdGFzLlNFUlZFUl9VUkwgKyB1cmw7XHJcbiAgICAgICAgICByZXEgPSByZXEuY2xvbmUoeyB1cmwgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICBsZXQgbm9UaXAgPSByZXEuaGVhZGVycy5nZXQoXCJub1RpcFwiKTtcclxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxyXG4gICAgICAgICAgbWVyZ2VNYXAoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy8g5YWB6K6457uf5LiA5a+56K+35rGC6ZSZ6K+v5aSE55CGXHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpIHJldHVybiB0aGlzLmhhbmRsZURhdGEoZXZlbnQsbm9UaXAgPT0gXCIxXCIpO1xyXG4gICAgICAgICAgICAvLyDoi6XkuIDliIfpg73mraPluLjvvIzliJnlkI7nu63mk43kvZxcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGV2ZW50KTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVEYXRhKGVycixub1RpcCA9PSBcIjFcIikpLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxufVxyXG4iXX0=
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpErrorResponse, HttpResponseBase, HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { Observable, of, throwError } from 'rxjs';
|
|
4
|
+
import { mergeMap, catchError } from 'rxjs/operators';
|
|
5
|
+
import { Router } from '@angular/router';
|
|
6
|
+
import { NzNotificationService } from 'ng-zorro-antd/notification';
|
|
7
|
+
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
8
|
+
import { LocalStorageUtil } from "../utils/localstorage.util";
|
|
9
|
+
import { AtrReuseStrategy } from "../routereuse/atr-reuse-strategy";
|
|
10
|
+
import { MenuService } from "../services/menu.service";
|
|
11
|
+
import { atr_static_datas } from "../base/atr-common";
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
const CODEMESSAGE = {
|
|
14
|
+
200: '服务器成功返回请求的数据。',
|
|
15
|
+
201: '新建或修改数据成功。',
|
|
16
|
+
202: '一个请求已经进入后台排队(异步任务)。',
|
|
17
|
+
204: '删除数据成功。',
|
|
18
|
+
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
|
|
19
|
+
401: '用户没有权限(令牌、用户名、密码错误)。',
|
|
20
|
+
403: '用户得到授权,但是访问是被禁止的。',
|
|
21
|
+
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
|
|
22
|
+
406: '请求的格式不可得。',
|
|
23
|
+
410: '请求的资源被永久删除,且不会再得到的。',
|
|
24
|
+
422: '当创建一个对象时,发生一个验证错误。',
|
|
25
|
+
500: '服务器发生错误,请检查服务器。',
|
|
26
|
+
502: '网关错误。',
|
|
27
|
+
503: '服务不可用,服务器暂时过载或维护。',
|
|
28
|
+
504: '网关超时。',
|
|
29
|
+
};
|
|
30
|
+
export class BaseInterceptor {
|
|
31
|
+
constructor(injector) {
|
|
32
|
+
this.injector = injector;
|
|
33
|
+
}
|
|
34
|
+
get notification() {
|
|
35
|
+
return this.injector.get(NzNotificationService);
|
|
36
|
+
}
|
|
37
|
+
get message() {
|
|
38
|
+
return this.injector.get(NzMessageService);
|
|
39
|
+
}
|
|
40
|
+
get menuService() {
|
|
41
|
+
return this.injector.get(MenuService);
|
|
42
|
+
}
|
|
43
|
+
goTo(url, isClearCache) {
|
|
44
|
+
// console.log("需要跳转到页面:")
|
|
45
|
+
// console.log(url);
|
|
46
|
+
setTimeout(() => this.injector.get(Router).navigateByUrl(url));
|
|
47
|
+
if (isClearCache) {
|
|
48
|
+
setTimeout(() => AtrReuseStrategy.deleteAll(), 50);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
checkStatus(ev) {
|
|
52
|
+
if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// console.log(ev.status);
|
|
56
|
+
// const errortext = CODEMESSAGE[ev.status] || ev.statusText;
|
|
57
|
+
this.message.error('网络错误,请稍后重试:' + ev.status);
|
|
58
|
+
}
|
|
59
|
+
handleData(ev, noTip = false) {
|
|
60
|
+
this.checkStatus(ev);
|
|
61
|
+
// 业务处理:一些通用操作
|
|
62
|
+
switch (ev.status) {
|
|
63
|
+
case 200:
|
|
64
|
+
// TODO status
|
|
65
|
+
// 业务层级错误处理,以下是假定restful有一套统一输出格式(指不管成功与否都有相应的数据格式)情况下进行处理
|
|
66
|
+
// 例如响应内容:
|
|
67
|
+
// 错误内容:{ status: 1, msg: '非法参数' }
|
|
68
|
+
// 正确内容:{ status: 0, response: { } }
|
|
69
|
+
// 则以下代码片断可直接适用
|
|
70
|
+
if (ev instanceof HttpResponse) {
|
|
71
|
+
const body = ev.body;
|
|
72
|
+
if (body && body.status === 401) {
|
|
73
|
+
if (!noTip) {
|
|
74
|
+
this.notification.error(`未登录或登录已过期,请重新登录。`, ``, {
|
|
75
|
+
nzKey: 'outTime'
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
// TODO 清空 token 信息
|
|
79
|
+
LocalStorageUtil.clearUs();
|
|
80
|
+
this.menuService.clear();
|
|
81
|
+
this.goTo('/p/login', true);
|
|
82
|
+
}
|
|
83
|
+
else if (body && body.status === 1024) {
|
|
84
|
+
// 或者依然保持完整的格式
|
|
85
|
+
if (!noTip) {
|
|
86
|
+
this.message.error(body.message);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (body && body.status === 1025) {
|
|
90
|
+
// 或者依然保持完整的格式
|
|
91
|
+
if (!noTip) {
|
|
92
|
+
this.message.error(`参数为空。`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (body && body.status === 503) {
|
|
96
|
+
// 或者依然保持完整的格式
|
|
97
|
+
if (!noTip) {
|
|
98
|
+
this.message.error(body.message);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (body && body.status === 204) {
|
|
102
|
+
// 或者依然保持完整的格式
|
|
103
|
+
if (!noTip) {
|
|
104
|
+
this.message.success(body.message);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (body && body.status === 201) {
|
|
108
|
+
// 或者依然保持完整的格式
|
|
109
|
+
if (!noTip) {
|
|
110
|
+
this.message.success(body.message);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return of(ev);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
case 401:
|
|
119
|
+
this.notification.error(`未登录或登录已过期,请重新登录。`, ``, {
|
|
120
|
+
nzKey: 'outTime'
|
|
121
|
+
});
|
|
122
|
+
// TODO 清空 token 信息
|
|
123
|
+
// this.goTo('/p/login',false);
|
|
124
|
+
break;
|
|
125
|
+
case 403:
|
|
126
|
+
case 404:
|
|
127
|
+
case 500:
|
|
128
|
+
this.goTo(`/exception/${ev.status}`, false);
|
|
129
|
+
break;
|
|
130
|
+
default:
|
|
131
|
+
if (ev instanceof HttpErrorResponse) {
|
|
132
|
+
// console.warn('未可知错误,大部分是由于后端不支持CORS或无效配置引起', ev);
|
|
133
|
+
return throwError(ev);
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
return of(ev);
|
|
138
|
+
}
|
|
139
|
+
intercept(req, next) {
|
|
140
|
+
if (!atr_static_datas.SERVER_URL) {
|
|
141
|
+
alert('请配置ip atr_static_datas.SERVER_URL');
|
|
142
|
+
return new Observable();
|
|
143
|
+
}
|
|
144
|
+
// 统一加上服务端前缀
|
|
145
|
+
let url = req.url;
|
|
146
|
+
if (!url.startsWith('https://') && !url.startsWith('http://')) {
|
|
147
|
+
url = atr_static_datas.SERVER_URL + url;
|
|
148
|
+
req = req.clone({ url });
|
|
149
|
+
}
|
|
150
|
+
let noTip = req.headers.get("noTip");
|
|
151
|
+
return next.handle(req).pipe(mergeMap((event) => {
|
|
152
|
+
// 允许统一对请求错误处理
|
|
153
|
+
if (event instanceof HttpResponseBase)
|
|
154
|
+
return this.handleData(event, noTip == "1");
|
|
155
|
+
// 若一切都正常,则后续操作
|
|
156
|
+
return of(event);
|
|
157
|
+
}), catchError((err) => this.handleData(err, noTip == "1")));
|
|
158
|
+
}
|
|
159
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BaseInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
160
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BaseInterceptor }); }
|
|
161
|
+
}
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BaseInterceptor, decorators: [{
|
|
163
|
+
type: Injectable
|
|
164
|
+
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvaW50ZXJjZXB0b3IvYmFzZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBd0QsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDNUosT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFHLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFcEQsTUFBTSxXQUFXLEdBQUc7SUFDaEIsR0FBRyxFQUFFLGVBQWU7SUFDcEIsR0FBRyxFQUFFLFlBQVk7SUFDakIsR0FBRyxFQUFFLHFCQUFxQjtJQUMxQixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSw2QkFBNkI7SUFDbEMsR0FBRyxFQUFFLHNCQUFzQjtJQUMzQixHQUFHLEVBQUUsbUJBQW1CO0lBQ3hCLEdBQUcsRUFBRSw0QkFB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QUFDO1lBQ2xGLGVBQWU7WUFDZixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FDMUUsQ0FBQztJQUNKLENBQUM7OEdBN0hNLGVBQWU7a0hBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUmVzcG9uc2VCYXNlLCBIdHRwUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiAsdGhyb3dFcnJvciAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWVyZ2VNYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE56Tm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHtOek1lc3NhZ2VTZXJ2aWNlfSBmcm9tICduZy16b3Jyby1hbnRkL21lc3NhZ2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gXCIuLi91dGlscy9sb2NhbHN0b3JhZ2UudXRpbFwiO1xyXG5pbXBvcnQge0F0clJldXNlU3RyYXRlZ3l9IGZyb20gXCIuLi9yb3V0ZXJldXNlL2F0ci1yZXVzZS1zdHJhdGVneVwiO1xyXG5pbXBvcnQge01lbnVTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7YXRyX3N0YXRpY19kYXRhc30gZnJvbSBcIi4uL2Jhc2UvYXRyLWNvbW1vblwiO1xyXG5cclxuY29uc3QgQ09ERU1FU1NBR0UgPSB7XHJcbiAgICAyMDA6ICfmnI3liqHlmajmiJDlip/ov5Tlm57or7fmsYLnmoTmlbDmja7jgIInLFxyXG4gICAgMjAxOiAn5paw5bu65oiW5L+u5pS55pWw5o2u5oiQ5Yqf44CCJyxcclxuICAgIDIwMjogJ+S4gOS4quivt+axguW3sue7j+i/m+WFpeWQjuWPsOaOkumYn++8iOW8guatpeS7u+WKoe+8ieOAgicsXHJcbiAgICAyMDQ6ICfliKDpmaTmlbDmja7miJDlip/jgIInLFxyXG4gICAgNDAwOiAn5Y+R5Ye655qE6K+35rGC5pyJ6ZSZ6K+v77yM5pyN5Yqh5Zmo5rKh5pyJ6L+b6KGM5paw5bu65oiW5L+u5pS55pWw5o2u55qE5pON5L2c44CCJyxcclxuICAgIDQwMTogJ+eUqOaIt+ayoeacieadg+mZkO+8iOS7pOeJjOOAgeeUqOaIt+WQjeOAgeWvhueggemUmeivr++8ieOAgicsXHJcbiAgICA0MDM6ICfnlKjmiLflvpfliLDmjojmnYPvvIzkvYbmmK/orr/pl67mmK/ooqvnpoHmraLnmoTjgIInLFxyXG4gICAgNDA0OiAn5Y+R5Ye655qE6K+35rGC6ZKI5a+555qE5piv5LiN5a2Y5Zyo55qE6K6w5b2V77yM5pyN5Yqh5Zmo5rKh5pyJ6L+b6KGM5pON5L2c44CCJyxcclxuICAgIDQwNjogJ+ivt+axgueahOagvOW8j+S4jeWPr+W+l+OAgicsXHJcbiAgICA0MTA6ICfor7fmsYLnmoTotYTmupDooqvmsLjkuYXliKDpmaTvvIzkuJTkuI3kvJrlho3lvpfliLDnmoTjgIInLFxyXG4gICAgNDIyOiAn5b2T5Yib5bu65LiA5Liq5a+56LGh5pe277yM5Y+R55Sf5LiA5Liq6aqM6K+B6ZSZ6K+v44CCJyxcclxuICAgIDUwMDogJ+acjeWKoeWZqOWPkeeUn+mUmeivr++8jOivt+ajgOafpeacjeWKoeWZqOOAgicsXHJcbiAgICA1MDI6ICfnvZHlhbPplJnor6/jgIInLFxyXG4gICAgNTAzOiAn5pyN5Yqh5LiN5Y+v55So77yM5pyN5Yqh5Zmo5pqC5pe26L+H6L295oiW57u05oqk44CCJyxcclxuICAgIDUwNDogJ+e9keWFs+i2heaXtuOAgicsXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3J7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cclxuICAgIHByaXZhdGUgZ2V0IG5vdGlmaWNhdGlvbigpOiBOek5vdGlmaWNhdGlvblNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOek5vdGlmaWNhdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBnZXQgbWVzc2FnZSgpOiBOek1lc3NhZ2VTZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTnpNZXNzYWdlU2VydmljZSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGdldCBtZW51U2VydmljZSgpOiBNZW51U2VydmljZXtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTWVudVNlcnZpY2UpXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnb1RvKHVybDogc3RyaW5nLGlzQ2xlYXJDYWNoZTpib29sZWFuKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwi6ZyA6KaB6Lez6L2s5Yiw6aG16Z2i77yaXCIpXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHVybCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKS5uYXZpZ2F0ZUJ5VXJsKHVybCkpO1xyXG4gICAgICBpZihpc0NsZWFyQ2FjaGUpe1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCk9PiAgQXRyUmV1c2VTdHJhdGVneS5kZWxldGVBbGwoKSw1MCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrU3RhdHVzKGV2OiBIdHRwUmVzcG9uc2VCYXNlKSB7XHJcbiAgICAgICAgaWYgKChldi5zdGF0dXMgPj0gMjAwICYmIGV2LnN0YXR1cyA8IDMwMCkgfHwgZXYuc3RhdHVzID09PSA0MDEpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZXYuc3RhdHVzKTtcclxuICAgICAgICAvLyBjb25zdCBlcnJvcnRleHQgPSBDT0RFTUVTU0FHRVtldi5zdGF0dXNdIHx8IGV2LnN0YXR1c1RleHQ7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlLmVycm9yKCfnvZHnu5zplJnor68s6K+356iN5ZCO6YeN6K+V77yaJyArIGV2LnN0YXR1cyk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGhhbmRsZURhdGEoZXY6IEh0dHBSZXNwb25zZUJhc2Usbm9UaXAgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1N0YXR1cyhldik7XHJcbiAgICAgICAgLy8g5Lia5Yqh5aSE55CG77ya5LiA5Lqb6YCa55So5pON5L2cXHJcbiAgICAgICAgc3dpdGNoIChldi5zdGF0dXMpIHtcclxuICAgICAgICAgIGNhc2UgMjAwOlxyXG4gICAgICAgICAgICAvLyBUT0RPIHN0YXR1c1xyXG4gICAgICAgICAgICAvLyDkuJrliqHlsYLnuqfplJnor6/lpITnkIbvvIzku6XkuIvmmK/lgYflrppyZXN0ZnVs5pyJ5LiA5aWX57uf5LiA6L6T5Ye65qC85byP77yI5oyH5LiN566h5oiQ5Yqf5LiO5ZCm6YO95pyJ55u45bqU55qE5pWw5o2u5qC85byP77yJ5oOF5Ya15LiL6L+b6KGM5aSE55CGXHJcbiAgICAgICAgICAgIC8vIOS+i+WmguWTjeW6lOWGheWuue+8mlxyXG4gICAgICAgICAgICAvLyAg6ZSZ6K+v5YaF5a6577yaeyBzdGF0dXM6IDEsIG1zZzogJ+mdnuazleWPguaVsCcgfVxyXG4gICAgICAgICAgICAvLyAg5q2j56Gu5YaF5a6577yaeyBzdGF0dXM6IDAsIHJlc3BvbnNlOiB7ICB9IH1cclxuICAgICAgICAgICAgLy8g5YiZ5Lul5LiL5Luj56CB54mH5pat5Y+v55u05o6l6YCC55SoXHJcbiAgICAgICAgICAgIGlmIChldiBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm9keTogYW55ID0gZXYuYm9keTtcclxuICAgICAgICAgICAgICAgIGlmIChib2R5ICYmIGJvZHkuc3RhdHVzID09PSA0MDEgKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoYOacqueZu+W9leaIlueZu+W9leW3sui/h+acn++8jOivt+mHjeaWsOeZu+W9leOAgmAsIGBgLHtcclxuICAgICAgICAgICAgICAgICAgICAgIG56S2V5OiAnb3V0VGltZSdcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyBUT0RPIOa4heepuiB0b2tlbiDkv6Hmga9cclxuICAgICAgICAgICAgICAgICAgTG9jYWxTdG9yYWdlVXRpbC5jbGVhclVzKClcclxuICAgICAgICAgICAgICAgICAgdGhpcy5tZW51U2VydmljZS5jbGVhcigpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdvVG8oJy9wL2xvZ2luJyx0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZihib2R5ICYmIGJvZHkuc3RhdHVzID09PSAxMDI0KXtcclxuICAgICAgICAgICAgICAgICAgLy8g5oiW6ICF5L6d54S25L+d5oyB5a6M5pW055qE5qC85byPXHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5lcnJvcihib2R5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gMTAyNSl7XHJcbiAgICAgICAgICAgICAgICAgIC8vIOaIluiAheS+neeEtuS/neaMgeWujOaVtOeahOagvOW8j1xyXG4gICAgICAgICAgICAgICAgICBpZighbm9UaXApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoYOWPguaVsOS4uuepuuOAgmApO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gNTAzKXtcclxuICAgICAgICAgICAgICAgICAgLy8g5oiW6ICF5L6d54S25L+d5oyB5a6M5pW055qE5qC85byPXHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5lcnJvcihib2R5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZihib2R5ICYmIGJvZHkuc3RhdHVzID09PSAyMDQpe1xyXG4gICAgICAgICAgICAgICAgICAvLyDmiJbogIXkvp3nhLbkv53mjIHlrozmlbTnmoTmoLzlvI9cclxuICAgICAgICAgICAgICAgICAgaWYoIW5vVGlwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlLnN1Y2Nlc3MoYm9keS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gMjAxKXtcclxuICAgICAgICAgICAgICAgICAgLy8g5oiW6ICF5L6d54S25L+d5oyB5a6M5pW055qE5qC85byPXHJcbiAgICAgICAgICAgICAgICAgIGlmKCFub1RpcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdWNjZXNzKGJvZHkubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZXYpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKGDmnKrnmbvlvZXmiJbnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZXjgIJgLCBgYCx7XHJcbiAgICAgICAgICAgICAgbnpLZXk6ICdvdXRUaW1lJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gVE9ETyDmuIXnqbogdG9rZW4g5L+h5oGvXHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLmdvVG8oJy9wL2xvZ2luJyxmYWxzZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICBjYXNlIDQwNDpcclxuICAgICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgICB0aGlzLmdvVG8oYC9leGNlcHRpb24vJHtldi5zdGF0dXN9YCxmYWxzZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKGV2IGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oJ+acquWPr+efpemUmeivr++8jOWkp+mDqOWIhuaYr+eUseS6juWQjuerr+S4jeaUr+aMgUNPUlPmiJbml6DmlYjphY3nva7lvJXotbcnLCBldik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2YoZXYpO1xyXG4gICAgICB9XHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgaWYoIWF0cl9zdGF0aWNfZGF0YXMuU0VSVkVSX1VSTCl7XHJcbiAgICAgICAgYWxlcnQoJ+ivt+mFjee9rmlwIGF0cl9zdGF0aWNfZGF0YXMuU0VSVkVSX1VSTCcpXHJcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKCk7XHJcbiAgICAgIH1cclxuICAgICAgICAvLyDnu5/kuIDliqDkuIrmnI3liqHnq6/liY3nvIBcclxuICAgICAgICBsZXQgdXJsID0gcmVxLnVybDtcclxuICAgICAgICBpZiAoIXVybC5zdGFydHNXaXRoKCdodHRwczovLycpICYmICF1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpKSB7XHJcbiAgICAgICAgICB1cmwgPSBhdHJfc3RhdGljX2RhdGFzLlNFUlZFUl9VUkwgKyB1cmw7XHJcbiAgICAgICAgICByZXEgPSByZXEuY2xvbmUoeyB1cmwgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICBsZXQgbm9UaXAgPSByZXEuaGVhZGVycy5nZXQoXCJub1RpcFwiKTtcclxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxyXG4gICAgICAgICAgbWVyZ2VNYXAoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy8g5YWB6K6457uf5LiA5a+56K+35rGC6ZSZ6K+v5aSE55CGXHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpIHJldHVybiB0aGlzLmhhbmRsZURhdGEoZXZlbnQsbm9UaXAgPT0gXCIxXCIpO1xyXG4gICAgICAgICAgICAvLyDoi6XkuIDliIfpg73mraPluLjvvIzliJnlkI7nu63mk43kvZxcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGV2ZW50KTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVEYXRhKGVycixub1RpcCA9PSBcIjFcIikpLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxufVxyXG4iXX0=
|