@yelon/bis 13.5.1 → 14.0.0-beta.0
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/esm2020/layout/act.guard.mjs +4 -4
- package/esm2020/layout/contact/contact.component.mjs +16 -16
- package/esm2020/layout/contact/contact.service.mjs +4 -4
- package/esm2020/layout/layout.module.mjs +6 -6
- package/esm2020/layout/path-to-regexp.service.mjs +4 -4
- package/esm2020/layout/widgets/yz.application.component.mjs +9 -9
- package/esm2020/layout/widgets/yz.clear-storage.component.mjs +5 -5
- package/esm2020/layout/widgets/yz.fullscreen.component.mjs +5 -5
- package/esm2020/layout/widgets/yz.i18n.component.mjs +10 -10
- package/esm2020/layout/widgets/yz.notify.component.mjs +5 -5
- package/esm2020/layout/widgets/yz.them-btn.component.mjs +9 -9
- package/esm2020/layout/widgets/yz.user.component.mjs +10 -10
- package/esm2020/layout/yz.auth.service.mjs +4 -4
- package/esm2020/layout/yz.basic.component.mjs +22 -23
- package/esm2020/layout/yz.default.interceptor.mjs +7 -5
- package/esm2020/layout/yz.i18n.service.mjs +4 -4
- package/esm2020/layout/yz.startup.service.mjs +4 -4
- package/esm2020/layout/yz.stomp.service.mjs +4 -4
- package/esm2020/shared/shared-yelon.module.mjs +1 -3
- package/esm2020/shared/shared.module.mjs +78 -79
- package/fesm2015/layout.mjs +94 -93
- package/fesm2015/layout.mjs.map +1 -1
- package/fesm2015/shared.mjs +77 -80
- package/fesm2015/shared.mjs.map +1 -1
- package/fesm2020/layout.mjs +94 -93
- package/fesm2020/layout.mjs.map +1 -1
- package/fesm2020/shared.mjs +77 -80
- package/fesm2020/shared.mjs.map +1 -1
- package/{bis.d.ts → index.d.ts} +0 -0
- package/layout/contact/contact.component.d.ts +1 -1
- package/layout/{layout.d.ts → index.d.ts} +0 -0
- package/layout/widgets/yz.application.component.d.ts +1 -1
- package/layout/widgets/yz.clear-storage.component.d.ts +1 -1
- package/layout/widgets/yz.fullscreen.component.d.ts +1 -1
- package/layout/widgets/yz.i18n.component.d.ts +1 -1
- package/layout/widgets/yz.notify.component.d.ts +1 -1
- package/layout/widgets/yz.them-btn.component.d.ts +1 -1
- package/layout/widgets/yz.user.component.d.ts +1 -1
- package/layout/yz.basic.component.d.ts +1 -1
- package/package.json +15 -15
- package/shared/{shared.d.ts → index.d.ts} +0 -0
- package/shared/shared-yelon.module.d.ts +2 -2
- package/shared/shared.module.d.ts +74 -75
- package/layout/package.json +0 -10
- package/shared/package.json +0 -10
package/fesm2020/layout.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.mjs","sources":["../../../../packages/bis/layout/yz.i18n.service.ts","../../../../packages/bis/layout/widgets/yz.application.component.ts","../../../../packages/bis/layout/widgets/yz.i18n.component.ts","../../../../packages/bis/layout/widgets/yz.notify.component.ts","../../../../packages/bis/layout/widgets/yz.them-btn.component.ts","../../../../packages/bis/layout/bis.config.ts","../../../../packages/bis/layout/widgets/yz.user.component.ts","../../../../packages/bis/layout/widgets/yz.clear-storage.component.ts","../../../../packages/bis/layout/widgets/yz.fullscreen.component.ts","../../../../packages/bis/layout/contact/contact.service.ts","../../../../packages/bis/layout/contact/contact.component.ts","../../../../packages/bis/layout/contact/contact.component.html","../../../../packages/bis/layout/stomp.config.ts","../../../../packages/bis/layout/yz.stomp.service.ts","../../../../packages/bis/layout/yz.basic.component.ts","../../../../packages/bis/layout/layout.module.ts","../../../../packages/bis/layout/yz.auth.service.ts","../../../../packages/bis/layout/yz.default.interceptor.ts","../../../../packages/bis/layout/yz.startup.service.ts","../../../../packages/bis/layout/path-to-regexp.service.ts","../../../../packages/bis/layout/act.guard.ts","../../../../packages/bis/layout/layout.ts"],"sourcesContent":["// 请参考:https://ng.yunzainfo.com/docs/i18n\nimport { Platform } from '@angular/cdk/platform';\nimport { registerLocaleData } from '@angular/common';\nimport ngEn from '@angular/common/locales/en';\nimport ngZh from '@angular/common/locales/zh';\nimport ngZhTw from '@angular/common/locales/zh-Hant';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw } from 'date-fns/locale';\n\nimport {\n YelonLocaleService,\n en_US as yelonEnUS,\n SettingsService,\n zh_CN as yelonZhCn,\n zh_TW as yelonZhTw,\n _HttpClient,\n YunzaiI18nBaseService\n} from '@yelon/theme';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { en_US as zorroEnUS, NzI18nService, zh_CN as zorroZhCN, zh_TW as zorroZhTW } from 'ng-zorro-antd/i18n';\n\ninterface LangConfigData {\n abbr: string;\n text: string;\n ng: NzSafeAny;\n zorro: NzSafeAny;\n date: NzSafeAny;\n yelon: NzSafeAny;\n}\n\nconst DEFAULT = 'zh-CN';\nconst LANGS: { [key: string]: LangConfigData } = {\n 'zh-CN': {\n text: '简体中文',\n ng: ngZh,\n zorro: zorroZhCN,\n date: dfZhCn,\n yelon: yelonZhCn,\n abbr: '🇨🇳'\n },\n 'zh-TW': {\n text: '繁体中文',\n ng: ngZhTw,\n zorro: zorroZhTW,\n date: dfZhTw,\n yelon: yelonZhTw,\n abbr: '🇭🇰'\n },\n 'en-US': {\n text: 'English',\n ng: ngEn,\n zorro: zorroEnUS,\n date: dfEn,\n yelon: yelonEnUS,\n abbr: '🇬🇧'\n }\n};\n\n@Injectable({ providedIn: 'root' })\nexport class YzI18NService extends YunzaiI18nBaseService {\n protected _defaultLang = DEFAULT;\n private _langs = Object.keys(LANGS).map(code => {\n const item = LANGS[code];\n return { code, text: item.text, abbr: item.abbr };\n });\n\n constructor(\n private http: _HttpClient,\n private settings: SettingsService,\n private nzI18nService: NzI18nService,\n private yelonLocaleService: YelonLocaleService,\n private platform: Platform,\n cogSrv: YunzaiConfigService\n ) {\n super(cogSrv);\n const defaultLang = this.getDefaultLang();\n this._defaultLang = this._langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;\n }\n\n private getDefaultLang(): string {\n if (!this.platform.isBrowser) {\n return DEFAULT;\n }\n if (this.settings.layout.lang) {\n return this.settings.layout.lang;\n }\n let res = (navigator.languages ? navigator.languages[0] : null) || navigator.language;\n const arr = res.split('-');\n return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;\n }\n\n loadLangData(lang: string): Observable<NzSafeAny> {\n return this.http.get(`assets/tmp/i18n/${lang}.json`);\n }\n\n use(lang: string, data: Record<string, unknown>): void {\n if (this._currentLang === lang) return;\n\n this._data = this.flatData(data, []);\n\n const item = LANGS[lang];\n registerLocaleData(item.ng);\n this.nzI18nService.setLocale(item.zorro);\n this.nzI18nService.setDateLocale(item.date);\n this.yelonLocaleService.setLocale(item.yelon);\n this._currentLang = lang;\n\n this._change$.next(lang);\n }\n\n getLangs(): Array<{ code: string; text: string; abbr: string }> {\n return this._langs;\n }\n}\n","import { ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\nexport enum TOPIC {\n FULL,\n OWN,\n EVERY\n}\n\nexport interface HeaderTopic {\n // 忘了\n attribute: any;\n // 子菜单\n children: HeaderTopic[];\n // 描述\n intro: string;\n // key\n key: string;\n // 名称\n name: string;\n // 打开方式\n target: string;\n // 是否有权限打开\n auth: boolean;\n // 路径\n url: string;\n // 版本\n version: string;\n}\n\n@Component({\n selector: 'yz-header-application',\n template: `\n <!-- template start-->\n <ng-template #search>\n <div nz-row class=\"yz-application-list-search\">\n <nz-input-group [nzPrefix]=\"prefixTemplate\">\n <input\n type=\"text\"\n nz-input\n placeholder=\"{{ 'application.search' | i18n }}\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"onSearch()\"\n />\n <ng-template #prefixTemplate>\n <i nz-icon nzType=\"search\" nzTheme=\"outline\"></i>\n </ng-template>\n </nz-input-group>\n </div>\n </ng-template>\n <ng-template #ld>\n <div class=\"yz-application-list\">\n <ul>\n <li *ngFor=\"let d of listData\">\n <h5>{{ d.name }}</h5>\n <a href=\"javascript:;\" *ngFor=\"let cd of d.children\" (click)=\"open(cd)\">{{ cd.name }}</a>\n </li>\n </ul>\n </div>\n </ng-template>\n <!-- template end-->\n\n <!-- button start-->\n <div class=\"yunzai-default__nav-item\" (click)=\"diffChange()\"> {{ 'application.button' | i18n }}</div>\n <!-- button end-->\n\n <!-- header start-->\n <div class=\"yz-application\" nz-row *ngIf=\"active\">\n <div nz-col [nzSpan]=\"3\" class=\"yz-application-topic\">\n <div class=\"yz-application-text\" (click)=\"full()\">{{ 'application.all' | i18n }}</div>\n <div class=\"yz-application-text\" (click)=\"own()\">{{ 'application.mine' | i18n }}</div>\n <div class=\"yz-application-text\" *ngFor=\"let d of topicData\" (click)=\"every(d)\">\n {{ d.name }}\n </div>\n </div>\n <div nz-col [nzSpan]=\"21\" [ngSwitch]=\"topic\" class=\"yz-application-container\">\n <div *ngSwitchCase=\"T.FULL\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"ld\"></ng-template>\n </div>\n <div *ngSwitchCase=\"T.OWN\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"ld\"></ng-template>\n </div>\n <div *ngSwitchCase=\"T.EVERY\" class=\"yz-application-list\">\n <div class=\"yz-application-list-item\">\n <ul>\n <li *ngFor=\"let d of listData\" (click)=\"open(d)\">\n <a href=\"javascript:;\">\n <h4>{{ d.name }}</h4>\n <p>{{ d.intro }}</p>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <!-- header end-->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderApplicationComponent implements OnInit, OnDestroy {\n T = TOPIC;\n active: boolean = false;\n topicData: HeaderTopic[] = [];\n listData: HeaderTopic[] = [];\n topic: TOPIC = TOPIC.FULL;\n choosed: HeaderTopic | undefined;\n searchValue: string | null = null;\n subs: Subscription[] = [];\n\n constructor(\n private inject: Injector,\n private cacheService: CacheService,\n private i18n: YzI18NService,\n private http: _HttpClient\n ) {}\n\n ngOnInit(): void {\n this.topicData = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(f => f.unsubscribe());\n }\n\n diffChange(flag?: boolean) {\n if (flag) {\n this.active = flag;\n } else {\n this.active = !this.active;\n }\n }\n\n initTopic(topic: TOPIC) {\n this.searchValue = null;\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n this.topic = topic;\n }\n\n full() {\n this.initTopic(TOPIC.FULL);\n }\n\n own() {\n this.initTopic(TOPIC.OWN);\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = temp\n .filter((topic: HeaderTopic) => {\n topic.children = topic.children.filter((child: HeaderTopic) => {\n return child.auth;\n });\n return topic;\n })\n .filter((topic: HeaderTopic) => {\n return topic.children.length > 0;\n });\n }\n\n every(e: HeaderTopic) {\n this.initTopic(TOPIC.EVERY);\n this.choosed = e;\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = [...temp.filter(t => t.key === e.key)[0].children];\n }\n\n onSearch() {\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n // 如果搜索输入的有值\n if (this.searchValue) {\n // 过滤菜单过滤出搜索的值\n this.listData = temp\n .filter((topic: HeaderTopic) => {\n if (this.i18n.fanyi(topic.name).includes(this.searchValue!)) {\n return topic;\n } else {\n topic.children = topic.children.filter((child: HeaderTopic) => {\n return this.i18n.fanyi(child.name).includes(this.searchValue!);\n });\n return topic;\n }\n })\n .filter((topic: HeaderTopic) => {\n return topic.children.length > 0;\n });\n } else {\n // 如果没有值,取消搜索\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n }\n }\n\n open(topic: HeaderTopic) {\n if (topic.key) {\n this.subs.push(\n this.http\n .post(`/app-manager/web-scan/save`, {\n appId: topic.key,\n createDate: new Date()\n })\n .subscribe()\n );\n }\n switch (topic.target) {\n case 'href':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n case 'blank':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n case 'target':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n default:\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';\n\nimport { YUNZAI_I18N_TOKEN, SettingsService } from '@yelon/theme';\nimport { BooleanInput, InputBoolean } from '@yelon/util/decorator';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\n@Component({\n selector: 'yz-header-i18n',\n template: `\n <div *ngIf=\"showLangText\" nz-dropdown [nzDropdownMenu]=\"langMenu\" nzPlacement=\"bottomRight\">\n <i nz-icon nzType=\"global\"></i>\n {{ 'menu.lang' | i18n }}\n <i nz-icon nzType=\"down\"></i>\n </div>\n <i\n *ngIf=\"!showLangText\"\n nz-dropdown\n [nzDropdownMenu]=\"langMenu\"\n nzPlacement=\"bottomRight\"\n nz-icon\n nzType=\"global\"\n ></i>\n <nz-dropdown-menu #langMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li\n nz-menu-item\n *ngFor=\"let item of langs\"\n [nzSelected]=\"item.code === curLangCode\"\n (click)=\"change(item.code)\"\n >\n <span role=\"img\" [attr.aria-label]=\"item.text\" class=\"pr-xs\">{{ item.abbr }}</span>\n {{ item.text }}\n </li>\n </ul>\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderI18NComponent {\n static ngAcceptInputType_showLangText: BooleanInput;\n /** Whether to display language text */\n @Input() @InputBoolean() showLangText = true;\n\n get langs(): Array<{ code: string; text: string; abbr: string }> {\n return this.i18n.getLangs();\n }\n\n get curLangCode(): string {\n return this.settings.layout.lang;\n }\n\n constructor(\n private settings: SettingsService,\n @Inject(YUNZAI_I18N_TOKEN) private i18n: YzI18NService,\n @Inject(DOCUMENT) private doc: any\n ) {}\n\n change(lang: string): void {\n const spinEl = this.doc.createElement('div');\n spinEl.setAttribute('class', `page-loading ant-spin ant-spin-lg ant-spin-spinning`);\n spinEl.innerHTML = `<span class=\"ant-spin-dot ant-spin-dot-spin\"><i></i><i></i><i></i><i></i></span>`;\n this.doc.body.appendChild(spinEl);\n\n this.i18n.loadLangData(lang).subscribe(res => {\n this.i18n.use(lang, res);\n this.settings.setLayout('lang', lang);\n setTimeout(() => this.doc.location.reload());\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Injector,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { forkJoin, Observable, Subscription, map } from 'rxjs';\n\nimport { formatDistanceToNow } from 'date-fns';\n\nimport { NoticeIconSelect, NoticeItem } from '@yelon/abc/notice-icon';\nimport { YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\nimport { log } from '@yelon/util/other';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzI18nService } from 'ng-zorro-antd/i18n';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\n@Component({\n selector: 'yz-header-notify',\n template: `\n <notice-icon\n [data]=\"data\"\n [count]=\"count\"\n [loading]=\"loading\"\n btnClass=\"yunzai-default__nav-item\"\n btnIconClass=\"yunzai-default__nav-item-icon\"\n (select)=\"select($event)\"\n (clear)=\"clear($event)\"\n ></notice-icon>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderNotifyComponent implements OnInit, OnDestroy {\n data: NoticeItem[] = [\n {\n key: 'msg',\n title: this.y18n.fanyi('notify.message'),\n list: [],\n emptyText: this.y18n.fanyi('notify.message.emptyText'),\n emptyImage: './assets/tmp/img/message.svg',\n clearText: this.y18n.fanyi('notify.message.clearText')\n },\n {\n key: 'todo',\n title: this.y18n.fanyi('notify.todo'),\n list: [],\n emptyText: this.y18n.fanyi('notify.todo.emptyText'),\n emptyImage: './assets/tmp/img/todo.svg',\n clearText: this.y18n.fanyi('notify.todo.clearText')\n },\n {\n key: 'notice',\n title: this.y18n.fanyi('notify.notice'),\n list: [],\n emptyText: this.y18n.fanyi('notify.notice.emptyText'),\n emptyImage: './assets/tmp/img/notice.svg',\n clearText: this.y18n.fanyi('notify.notice.clearText')\n }\n ];\n loading = false;\n count = 0;\n subs: Subscription[] = [];\n\n constructor(\n private injector: Injector,\n private msg: NzMessageService,\n @Inject(YUNZAI_I18N_TOKEN) private y18n: YzI18NService,\n private nzI18n: NzI18nService,\n private cdr: ChangeDetectorRef,\n private httpClient: _HttpClient\n ) {}\n\n ngOnInit(): void {\n this.loadData();\n }\n\n loadData(): void {\n this.count = 0;\n this.loading = true;\n this.subs.push(\n forkJoin(this.loadTodo(), this.loadMessage()).subscribe(() => {\n this.loading = false;\n this.cdr.detectChanges();\n })\n );\n }\n\n loadMessage(): Observable<void> {\n log('notify.component: ', 'fetch message list');\n const formatMessageStatus = (status: string): NzSafeAny => {\n switch (status) {\n case '0':\n return { extra: this.y18n.fanyi('notify.unread'), color: 'red' };\n case '1':\n return { extra: this.y18n.fanyi('notify.readed'), color: 'green' };\n default:\n return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };\n }\n };\n return this.httpClient\n .post(`/message-center-3/my-msg-and-todo/msg-list`, {\n pageNum: 1,\n pageSize: 10,\n status: '0'\n })\n .pipe(\n map((response: NzSafeAny) => {\n const viewMessage = this.data.filter(d => d.key === 'msg')[0];\n viewMessage.list = response.data.list.map((m: NzSafeAny) => {\n return {\n ...m,\n avatar: m?.imgUrl || './assets/tmp/img/message.png',\n title: m.systemName,\n description: m.content,\n extra: formatMessageStatus(m.status).extra,\n color: formatMessageStatus(m.status).color,\n datetime: formatDistanceToNow(new Date(m.date), { locale: this.nzI18n.getDateLocale() })\n };\n });\n this.count += viewMessage.list.length;\n })\n );\n }\n\n loadTodo(): Observable<void> {\n log('notify.component: ', 'fetch todo list');\n const formatTodoStatus = (status: string): NzSafeAny => {\n switch (status) {\n case '0':\n return { extra: this.y18n.fanyi('notify.unstart'), color: 'red' };\n case '1':\n return { extra: this.y18n.fanyi('notify.started'), color: 'green' };\n default:\n return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };\n }\n };\n return this.httpClient\n .post(`/message-center-3/my-msg-and-todo/todo-list`, {\n pageNum: 1,\n pageSize: 10,\n status: '0'\n })\n .pipe(\n map((response: NzSafeAny) => {\n const viewTodo = this.data.filter(d => d.key === 'todo')[0];\n viewTodo.list = response.data.list.map((t: NzSafeAny) => {\n return {\n ...t,\n avatar: t?.imgUrl || './assets/tmp/img/todo.png',\n title: t.systemName,\n description: t.content,\n datetime: formatDistanceToNow(new Date(t.date), { locale: this.nzI18n.getDateLocale() }),\n extra: formatTodoStatus(t.status).extra,\n color: formatTodoStatus(t.status).color\n };\n });\n this.count += viewTodo.list.length;\n })\n );\n }\n\n clear(type: string): void {\n const t = this.data.filter(d => d.title === type)[0];\n if (t.key == 'msg' || t.key == 'notice') {\n this.subs.push(\n this.httpClient.post(`/message-center-3/my-msg-and-todo/msg-clear`, {}).subscribe(_ => {\n this.msg.success(`${this.y18n.fanyi('notify.clear')} ${type}`);\n this.loadData();\n })\n );\n }\n if (t.key == 'todo') {\n this.loadData();\n }\n }\n\n select(res: NoticeIconSelect): void {\n this.injector.get(WINDOW).open(res.item.url);\n this.loadData();\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(a => a.unsubscribe());\n }\n}\n","import { Direction, Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n Inject,\n Optional\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { ThemeBtnType, YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface YzThemeBtnType extends ThemeBtnType {\n color?: string;\n}\n\n@Component({\n selector: 'yz-header-theme-btn',\n template: `\n <div\n class=\"yunzai-default__nav-item\"\n nz-dropdown\n [nzDropdownMenu]=\"iconMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n >\n <svg nz-tooltip class=\"anticon\" role=\"img\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"currentColor\">\n <g fill-rule=\"evenodd\">\n <g fill-rule=\"nonzero\">\n <path\n d=\"M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z\"\n ></path>\n </g>\n </g>\n </svg>\n </div>\n <nz-dropdown-menu #iconMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li\n nz-menu-item\n *ngFor=\"let theme of types\"\n (click)=\"onThemeChange(theme.key)\"\n [style]=\"{ color: theme.color }\"\n >\n <i nz-icon nzType=\"bg-colors\"></i>\n {{ theme.text | i18n }}\n </li>\n </ul>\n <!-- <div nz-menu class=\"wd-xl animated jello\">-->\n <!-- <div nz-row [nzJustify]=\"'space-between'\" [nzAlign]=\"'middle'\" class=\"app-icons\">-->\n <!-- <div nz-col [nzSpan]=\"4\" *ngFor=\"let theme of types\" (click)=\"onThemeChange(theme.key)\">-->\n <!-- <i nz-icon nzType=\"bg-colors\" class=\"text-white\" [style]=\"{ backgroundColor: theme.color }\"></i>-->\n <!-- <span [ngStyle]=\"{ color: theme.color }\">{{ theme.text | i18n }}</span>-->\n <!-- </div>-->\n <!-- </div>-->\n <!-- </div>-->\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderThemBtnComponent implements OnInit, OnDestroy {\n private theme = 'default';\n @Input() types: YzThemeBtnType[] = [\n { key: 'default', text: 'theme.default', color: '#2163ff' },\n { key: 'compact', text: 'theme.compact', color: '#2163ff' },\n { key: 'dark', text: 'theme.dark', color: '#020202' },\n { key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },\n { key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },\n { key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },\n { key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },\n { key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },\n { key: 'youlan', text: 'theme.youlan', color: '#1781B5' },\n { key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },\n { key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },\n { key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }\n ];\n @Input() devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;\n @Input() deployUrl = '';\n private destroy$ = new Subject<void>();\n dir: Direction = 'ltr';\n\n constructor(\n private renderer: Renderer2,\n private configSrv: YunzaiConfigService,\n private platform: Platform,\n @Inject(DOCUMENT) private doc: NzSafeAny,\n @Optional() private directionality: Directionality,\n @Inject(YUNZAI_THEME_BTN_KEYS) private KEYS: string\n ) {}\n\n ngOnInit(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n this.initTheme();\n }\n\n private initTheme(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.theme = localStorage.getItem(this.KEYS) || 'default';\n this.updateChartTheme();\n this.onThemeChange(this.theme);\n }\n\n private updateChartTheme(): void {\n this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });\n }\n\n onThemeChange(theme: string): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.theme = theme;\n this.renderer.setAttribute(this.doc.body, 'data-theme', theme);\n const dom = this.doc.getElementById(this.KEYS);\n if (dom) {\n dom.remove();\n }\n localStorage.removeItem(this.KEYS);\n if (theme !== 'default') {\n const el = this.doc.createElement('link');\n el.type = 'text/css';\n el.rel = 'stylesheet';\n el.id = this.KEYS;\n el.href = `${this.deployUrl}assets/style.${theme}.css`;\n\n localStorage.setItem(this.KEYS, theme);\n this.doc.body.append(el);\n }\n this.updateChartTheme();\n }\n\n ngOnDestroy(): void {\n const el = this.doc.getElementById(this.KEYS);\n if (el != null) {\n this.doc.body.removeChild(el);\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\n\nexport const BUSINESS_DEFAULT_CONFIG: YunzaiBusinessConfig = {\n baseUrl: '/backstage',\n systemCode: 'portal',\n loginForm: null,\n refreshTokenEnabled: true,\n refreshTokenType: 're-request'\n};\n\nexport function mergeBisConfig(srv: YunzaiConfigService): YunzaiBusinessConfig {\n return srv.merge('bis', BUSINESS_DEFAULT_CONFIG)!;\n}\n","import { ChangeDetectionStrategy, Component, Inject, Injector, OnInit } from '@angular/core';\n\nimport { YA_SERVICE_TOKEN, ITokenService } from '@yelon/auth';\nimport { CacheService } from '@yelon/cache';\nimport { WINDOW, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\nimport { mergeBisConfig } from '../bis.config';\n\nexport interface UserLink {\n icon: string;\n name: string;\n url: string;\n}\n\n@Component({\n selector: 'yz-header-user',\n template: `\n <div\n class=\"yunzai-default__nav-item d-flex align-items-center px-sm\"\n nz-dropdown\n nzPlacement=\"bottomRight\"\n [nzDropdownMenu]=\"userMenu\"\n >\n <nz-avatar [nzSrc]=\"icon\" nzSize=\"small\" class=\"mr-sm\"></nz-avatar>\n {{ username }}\n </div>\n <nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <div nz-menu class=\"width-sm\">\n <div nz-menu-item *ngFor=\"let m of menus\" (click)=\"to(m.url)\">\n <i nz-icon [nzType]=\"m.icon\" class=\"mr-sm\"></i>\n {{ m.name | i18n }}\n </div>\n <li nz-menu-divider></li>\n <div nz-menu-item (click)=\"logout()\">\n <i nz-icon nzType=\"logout\" class=\"mr-sm\"></i>\n {{ 'menu.account.logout' | i18n }}\n </div>\n </div>\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderUserComponent implements OnInit {\n private config: YunzaiBusinessConfig;\n\n constructor(\n private injector: Injector,\n private msg: NzMessageService,\n @Inject(YA_SERVICE_TOKEN) private tokenService: ITokenService,\n // @ts-ignore\n private configService: YunzaiConfigService,\n private cacheService: CacheService\n ) {\n this.config = mergeBisConfig(configService);\n }\n\n icon: string = '';\n username: string = '';\n menus: UserLink[] = [];\n\n ngOnInit(): void {\n const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });\n const user = this.cacheService.get('_yz_user', { mode: 'none' });\n this.username = user.realname ? user.realname : '未命名';\n this.icon = user.avatarId\n ? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`\n : `./assets/tmp/img/avatar.jpg`;\n this.menus = projectInfo.profileList;\n }\n\n logout(): void {\n localStorage.clear();\n this.tokenService.clear();\n this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;\n }\n\n to(href: string): void {\n if (href) {\n this.injector.get(WINDOW).open(href);\n } else {\n this.msg.error('该菜单没有配置链接!');\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';\n\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { NzModalService } from 'ng-zorro-antd/modal';\n\n@Component({\n selector: 'yz-header-clear-storage',\n template: `\n <i nz-icon nzType=\"tool\"></i>\n {{ 'menu.clear.local.storage' | i18n }}\n `,\n host: {\n '[class.d-block]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderClearStorageComponent {\n constructor(private modalSrv: NzModalService, private messageSrv: NzMessageService) {}\n\n @HostListener('click')\n _click(): void {\n this.modalSrv.confirm({\n nzTitle: 'Make sure clear all local storage?',\n nzOnOk: () => {\n localStorage.clear();\n this.messageSrv.success('Clear Finished!');\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';\n\nimport screenfull from 'screenfull';\n\n@Component({\n selector: 'yz-header-fullscreen',\n template: `\n <i nz-icon [nzType]=\"status ? 'fullscreen-exit' : 'fullscreen'\"></i>\n {{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | i18n }}\n `,\n host: {\n '[class.d-block]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderFullScreenComponent {\n status = false;\n\n @HostListener('window:resize')\n _resize(): void {\n this.status = screenfull.isFullscreen;\n }\n\n @HostListener('click')\n _click(): void {\n if (screenfull.isEnabled) {\n screenfull.toggle();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTreeNodeOptions } from 'ng-zorro-antd/tree';\n\nexport interface BaseUserParam {\n realName?: string;\n userCode?: string;\n deptId?: string;\n roleId?: string;\n friendGroupId?: string;\n userTypes?: string;\n buildId?: string;\n floor?: string;\n roomId?: string;\n // FIXME: fix that use personType or peopleType or anything type\n rylb?: string;\n}\n\nexport interface Page<T> {\n pageNum: number;\n pageSize: number;\n pageParam?: T;\n}\n\nexport interface PageRes<T> {\n endRow: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n isFirstPage: boolean;\n isLastPage: boolean;\n list: T[];\n navigateFirstPage: number;\n navigateLastPage: number;\n navigatePages: number;\n navigatepageNums: number[];\n nextPage: number;\n pageNum: number;\n pageSize: number;\n pages: number;\n prePage: number;\n size: number;\n startRow: number;\n total: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContactService {\n constructor(private http: _HttpClient, private cache: CacheService) {}\n\n // TIPS: How to write an override function in typescript\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @returns 可观察部门树\n */\n dept(clas: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean, grade: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @param gradeID 系部ID\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean, grade: boolean, gradeID: string | null): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @param gradeID 系部ID\n * @returns 可观察部门树\n */\n dept(clas?: boolean, his?: boolean, grade?: boolean, gradeID?: string | null): Observable<NzTreeNodeOptions[]> {\n let baseUrl = `/auth/baseDepartMent/tree?debug=false`;\n\n if (clas) {\n baseUrl += `&includeClass=true`;\n } else {\n baseUrl += `&includeClass=false`;\n }\n\n if (his) {\n baseUrl += `&includeHisClass=true`;\n } else {\n baseUrl += `&includeHisClass=false`;\n }\n\n if (grade) {\n baseUrl += `&deptTypes=2,class`;\n }\n\n if (gradeID) {\n baseUrl += `&gradeId=${gradeID}`;\n }\n\n return this.http.get(baseUrl).pipe(\n map((response: NzSafeAny) => {\n return response.data || [];\n })\n );\n }\n\n page<U, T>(uri: string, page: Page<U>): Observable<PageRes<T>> {\n return this.http.post(`${uri}/queryListForPage`, page);\n }\n\n pageBaseUser(page: Page<BaseUserParam>): Observable<PageRes<NzSafeAny>> {\n return this.page<BaseUserParam, NzSafeAny>('/auth/baseUser', page);\n }\n\n getUserByIds(ids: string[]): Observable<any[]> {\n return this.http\n .post('/auth/baseUser/users', {\n userIds: ids\n })\n .pipe((response: NzSafeAny) => {\n return response.data || [];\n });\n }\n\n /**\n * 查询人员信息\n *\n * @param userIds[] 用户id数组,[\"aaa\",\"bbb\",\"ccc\"]\n */\n getUserByUserIds(userIds: any): Observable<any[]> {\n return this.http\n .post(`/auth/baseUser/users`, {\n userIds: userIds\n })\n .pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 获取角色组角色\n *\n * @param roleGroupCode 角色组code\n */\n getGroupRole(roleGroupCode: string): Observable<NzTreeNodeOptions[]> {\n return this.http\n .post(`/auth/baseRole/findGroupRole`, {\n roleGroupCode: roleGroupCode\n })\n .pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询当前用户好友分组\n */\n getFriendGroup(): Observable<any[]> {\n return this.http.post(`/contact/appcontact/findGroup`, {}).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询年级\n */\n getGrade(): Observable<any[]> {\n return this.http.get(`/auth/gradeYear/queryListForPage`).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询人员类别列表\n */\n getRylbs(): Observable<any[]> {\n return this.http.post(`/auth/baseTeacher/queryRylbs`, {}).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 获取学生公寓树\n *\n * @param isPower 是否带有权限,默认false\n * @param treeType 树类型 0:宿舍楼 1:宿舍楼+层 2:宿舍楼+层+房间\n */\n getDormTree(isPower: boolean, treeType: number): Observable<any[]> {\n const user = this.cache.get('_yz_user', { mode: 'none' });\n let params = {};\n if (isPower) {\n params = {\n isPower: isPower,\n userId: user.userId,\n treeType: treeType\n };\n } else {\n params = {\n isPower: isPower,\n treeType: treeType\n };\n }\n\n return this.http.post(`/auth/dorm/tree`, params).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Optional,\n ViewChild,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { STComponent } from '@yelon/abc/st';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTreeNodeOptions, NzFormatEmitEvent } from 'ng-zorro-antd/tree';\n\nimport { ContactService } from './contact.service';\n\n@Component({\n selector: 'contact',\n templateUrl: './contact.component.html',\n styleUrls: ['./contact.component.less']\n})\nexport class ContactComponent implements OnInit, OnDestroy, AfterViewInit {\n subs: Subscription[] = [];\n\n /**\n * tabset\n */\n @Optional() @Input() nzTabsetSearch: string | null = null;\n @Optional() @Input() nzTabsetLoading: boolean = false;\n\n /**\n * 树展开状态\n */\n @Optional() @Input() nzExpandAll: boolean = true;\n\n /**\n * 部门树和部门查询的一些选项/可传可不传\n */\n @Optional() @Input() nzDepts: NzTreeNodeOptions[] = [];\n private _nzDeptsCopy: NzTreeNodeOptions[] = [];\n @Optional() @Input() nzDeptTreeVirtualHeight: string | null = null;\n @Optional() @Input() nzDeptClass: boolean = true;\n @Optional() @Input() nzDeptClassHistory: boolean = true;\n @Optional() @Input() nzDeptGrade: boolean = false;\n @Optional() @Input() nzDeptGradeID: string | null = null;\n\n /**\n * 角色树\n */\n @Optional() @Input() nzRoles: NzTreeNodeOptions[] = [];\n private _nzRolesCopy: NzTreeNodeOptions[] = [];\n @Optional() @Input() nzRoleTreeVirtualHeight: string | null = null;\n\n /**\n * 好友分组\n */\n @Optional() @Input() nzFriendGroups: NzSafeAny[] = [];\n _nzFriendGroupsCopy: NzSafeAny[] = [];\n\n /**\n * table组件,帮助文档: https://ng.yunzainfo.com/components/st/zh?#API\n */\n @ViewChild('st', { static: false }) st!: STComponent;\n\n /**\n * 联系人\n */\n @Optional() @Input() defaultContacts: string[] = [];\n @Optional() @Input() nzContacts: NzSafeAny[] = [];\n @Optional() @Input() nzContactLoading: boolean = false;\n\n /**\n * 提交和提交按钮\n */\n @Optional() @Input() button: boolean = true;\n @Output() readonly confirmed: EventEmitter<NzSafeAny[]> = new EventEmitter();\n\n constructor(private contact: ContactService, private changeDetectorRef: ChangeDetectorRef) {}\n\n /**\n * 初始化,首先加载部门树和默认选中的人的数据\n */\n ngOnInit(): void {\n this.onTabsetDept();\n this.onContactsInit();\n }\n\n /**\n * 视图初始化完毕后进行table初始化\n */\n ngAfterViewInit(): void {\n this.onTableInit();\n }\n\n /**\n * 初始化默认选中联系人\n */\n onContactsInit(): void {\n if (this.defaultContacts && this.defaultContacts.length > 0) {\n this.nzContactLoading = true;\n this.subs.push(\n this.contact.getUserByUserIds(this.defaultContacts).subscribe(contacts => {\n this.nzContacts = contacts;\n this.nzContactLoading = false;\n this.refresh();\n })\n );\n }\n }\n\n /**\n * table初始化\n */\n onTableInit(): void {\n // 设置表头\n this.st.resetColumns({\n columns: [\n { title: '选择', type: 'checkbox' },\n { title: '序号', type: 'no' },\n { title: '姓名', index: 'realName' },\n { title: '学号/工号', index: 'userCode' },\n { title: '部门', index: 'dept.deptName' }\n ]\n });\n // 订阅table点击checkbox事件变化\n this.subs.push(\n this.st.change.subscribe(e => {\n if (e.type === 'checkbox') {\n // 点击checkbox新增联系人\n const contactIds = this.nzContacts.map(c => c.userId);\n this.nzContacts = this.nzContacts.concat(e.checkbox!.filter(c => !contactIds.includes(c.userId)));\n // 取消checkbox取消联系人\n const cancelIds = this.st.list.filter(d => !d.checked).map(d => d.userId);\n this.nzContacts = this.nzContacts.filter(d => !cancelIds.includes(d.userId));\n }\n })\n );\n }\n\n /**\n * tabset进入加载状态\n */\n onTabsetLoadStart(): void {\n this.nzTabsetLoading = true;\n }\n\n /**\n * tabset取消加载状态\n */\n onTabsetLoadEnd(): void {\n this.nzTabsetLoading = false;\n }\n\n /**\n * tabset搜索框清除\n */\n onTabsetSearchClean(): void {\n this.nzDepts = this._nzDeptsCopy;\n this.nzRoles = this._nzRolesCopy;\n this.nzFriendGroups = this._nzFriendGroupsCopy;\n this.nzTabsetSearch = null;\n }\n\n /**\n * tabset搜索框输入\n *\n * @param type 类型\n * @param value 值\n */\n onTabsetSearchChange(type: 'dept' | 'role' | 'friendGroup', value: string): void {\n this.onTabsetLoadStart();\n if (!value || value === '') {\n this.nzDepts = this._nzDeptsCopy;\n this.nzRoles = this._nzRolesCopy;\n this.nzFriendGroups = this._nzFriendGroupsCopy;\n } else {\n const trees: NzTreeNodeOptions[] = [];\n if (type === 'dept') {\n this.searchTree(value, this._nzDeptsCopy, trees);\n this.nzDepts = trees;\n }\n if (type === 'role') {\n this.searchTree(value, this._nzRolesCopy, trees);\n this.nzRoles = trees;\n }\n if (type === 'friendGroup') {\n this.nzFriendGroups = this._nzFriendGroupsCopy.filter(f => {\n return !f.name.indexOf(value);\n });\n }\n }\n this.onTabsetLoadEnd();\n this.refresh();\n }\n\n /**\n * tabset切换到部门\n */\n onTabsetDept(): void {\n this.onTabsetSearchClean();\n if (!this.nzDepts || this.nzDepts.length === 0) {\n this.onTabsetDeptFlush();\n }\n }\n\n /**\n * tabset切换到角色\n */\n onTabsetRole(): void {\n this.onTabsetSearchClean();\n if (!this.nzRoles || this.nzRoles.length === 0) {\n this.onTabsetRoleFlush(null as NzSafeAny);\n }\n }\n\n /**\n * tabset切换到好友分组\n */\n onTabsetFriendGroup(): void {\n this.onTabsetSearchClean();\n if (!this.nzFriendGroups || this.nzFriendGroups.length === 0) {\n this.onTabsetFriendGroupFlush();\n }\n }\n\n /**\n * 获取部门树\n */\n onTabsetDeptFlush(): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact\n .dept(this.nzDeptClass, this.nzDeptClassHistory, this.nzDeptGrade, this.nzDeptGradeID)\n .subscribe((trees: NzTreeNodeOptions[]) => {\n this.expandTree(trees);\n this.nzDepts = trees;\n this._nzDeptsCopy = trees;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n // 获取角色树\n onTabsetRoleFlush(groupRoleCode: string): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact.getGroupRole(groupRoleCode).subscribe((roles: NzTreeNodeOptions[]) => {\n this.expandTree(roles);\n this.nzRoles = roles;\n this._nzRolesCopy = roles;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n // 获取好友分组列表\n onTabsetFriendGroupFlush(): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact.getFriendGroup().subscribe((group: NzSafeAny[]) => {\n this.nzFriendGroups = group;\n this._nzFriendGroupsCopy = group;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n /**\n * 部门树点击\n *\n * @param e 节点\n */\n onDeptClick(e: NzFormatEmitEvent): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n deptId: e.keys?.pop()\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 角色树点击\n *\n * @param e 节点\n */\n onRoleClick(e: NzFormatEmitEvent): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n roleId: e.keys?.pop()\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 好友分组点击\n *\n * @param e 分组\n */\n onFriendGroupClick(e: NzSafeAny): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n friendGroupId: e.id\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 点击右侧联系人进行删除\n *\n * @param c 点击的联系人\n */\n onContactRemove(c: NzSafeAny): void {\n this.nzContacts = this.nzContacts.filter(contact => {\n return contact.userId != c.userId;\n });\n this.st.reload();\n }\n\n /**\n * 预处理table当前页数据,和nzContat对比,确定checkbox状态\n *\n * @param data 预处理数据\n */\n onTableCheck(data: NzSafeAny[]): void {\n const ids = this.nzContacts.map(u => u.userId);\n data.forEach(d => {\n if (ids.includes(d.userId)) {\n d.checked = true;\n } else {\n d.checked = false;\n }\n });\n }\n\n /**\n * 递归树寻找name相同节点\n *\n * @param name 名称\n * @param trees 需要递归的树\n * @param list 搜索结果\n */\n searchTree(name: string, trees: NzTreeNodeOptions[], list: NzTreeNodeOptions[]): void {\n if (trees && trees.length && trees.length > 0) {\n trees.forEach((tree: NzTreeNodeOptions) => {\n if (tree.title.indexOf(name) != -1) {\n list.push(tree);\n }\n if (tree.children) {\n this.searchTree(name, tree.children, list);\n }\n });\n }\n }\n\n /**\n * 递归树展开所有有子节点的节点\n *\n * @param trees 需要展开的树\n */\n expandTree(trees: NzTreeNodeOptions[]): void {\n if (trees && trees.length && trees.length > 0) {\n trees.forEach(tree => {\n if (!tree.children || tree.children.length === 0) {\n tree.expanded = false;\n tree.isLeaf = true;\n }\n if (tree.children) {\n tree.expanded = this.nzExpandAll;\n tree.isLeaf = false;\n this.expandTree(tree.children);\n }\n });\n }\n }\n\n /**\n * 刷新当前页面\n */\n refresh(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * 确认按钮output数据\n */\n confirm(): void {\n this.confirmed.next(this.nzContacts);\n }\n\n /**\n * 销毁函数\n */\n ngOnDestroy(): void {\n this.nzDepts = [];\n this.nzRoles = [];\n this.nzContacts = [];\n this.subs.forEach(s => s.unsubscribe());\n }\n}\n","<nz-row [nzGutter]=\"16\">\n <nz-col [nzXs]=\"24\" [nzSm]=\"24\" [nzMd]=\"24\" [nzLg]=\"8\" [nzXl]=\"6\" [nzXXl]=\"6\">\n <nz-tabset nzCentered>\n <nz-tab nzTitle=\"部门\" (nzSelect)=\"onTabsetDept()\">\n <div sg-container=\"2\">\n <sg col=\"1\" class=\"nz-tabset-sg\">\n <nz-input-group class=\"nz-tabset-input\" [nzSuffix]=\"searchInputTpl\">\n <input\n nz-input\n [(ngModel)]=\"nzTabsetSearch\"\n (ngModelChange)=\"onTabsetSearchChange('dept', $event)\"\n type=\"text\"\n placeholder=\"请输入部门名称\"\n />\n </nz-input-group>\n </sg>\n <sg col=\"1\">\n <nz-spin [nzSpinning]=\"nzTabsetLoading\">\n <nz-tree\n class=\"nz-tabset-content\"\n (nzClick)=\"onDeptClick($event)\"\n [nzBlockNode]=\"true\"\n [nzShowLine]=\"true\"\n [nzHideUnMatched]=\"true\"\n [nzVirtualHeight]=\"nzDeptTreeVirtualHeight\"\n [nzData]=\"nzDepts\"\n ></nz-tree>\n </nz-spin>\n </sg>\n </div>\n </nz-tab>\n <nz-tab nzTitle=\"角色\" (nzSelect)=\"onTabsetRole()\">\n <div sg-container=\"2\">\n <sg col=\"1\" class=\"nz-tabset-sg\">\n <nz-input-group class=\"nz-tabset-input\" [nzSuffix]=\"searchInputTpl\">\n <input\n nz-input\n [(ngModel)]=\"nzTabsetSearch\"\n (ngModelChange)=\"onTabsetSearchChange('role', $event)\"\n type=\"text\"\n placeholder=\"请输入角色名称\"\n />\n </nz-input-group>\n </sg>\n <sg col=\"1\">\n <nz-spin [nzSpinning]=\"nzTabsetLoading\">\n <nz-tree\n class=\"nz-tabset-content\"\n (nzClick)=\"onRoleClick($event)\"\n [nzBlockNode]=\"true\"\n [nzShowLine]=\"true\"\n [nzHideUnMatched]=\"true\"\n [nzVirtualHeight]=\"nzRoleTreeVirtualHeight\"\n [nzData]=\"nzRoles\"\n ></nz-tree>\n </nz-spin>\n </sg>\n </div>\n </nz-tab>\n <nz-tab nzTitle=\"好友\" (nzSelect)=\"onTabsetFriendGroup()\">\n <div sg-container=\"2\">\n <sg col=\"1\" class=\"nz-tabset-sg\">\n <nz-input-group class=\"nz-tabset-input\" [nzSuffix]=\"searchInputTpl\">\n <input\n nz-input\n [(ngModel)]=\"nzTabsetSearch\"\n (ngModelChange)=\"onTabsetSearchChange('friendGroup', $event)\"\n type=\"text\"\n placeholder=\"请输入好友名称\"\n />\n </nz-input-group>\n </sg>\n <sg col=\"1\">\n <nz-spin [nzSpinning]=\"nzTabsetLoading\">\n <nz-list class=\"nz-tabset-content\" nzItemLayout=\"horizontal\" [nzSplit]=\"false\" nzSize=\"small\">\n <nz-list-item\n class=\"nz-tabset-content-item\"\n *ngFor=\"let group of nzFriendGroups\"\n (click)=\"onFriendGroupClick(group)\"\n >\n <nz-list-item-meta>\n <nz-list-item-meta-title>\n {{ group.name }}\n </nz-list-item-meta-title>\n </nz-list-item-meta>\n </nz-list-item>\n </nz-list>\n </nz-spin>\n </sg>\n </div>\n </nz-tab>\n </nz-tabset>\n </nz-col>\n\n <nz-col [nzXs]=\"24\" [nzSm]=\"24\" [nzMd]=\"24\" [nzLg]=\"16\" [nzXl]=\"13\" [nzXXl]=\"13\">\n <st #st responsiveHideHeaderFooter></st>\n </nz-col>\n\n <nz-col [nzXs]=\"24\" [nzSm]=\"24\" [nzMd]=\"24\" [nzLg]=\"24\" [nzXl]=\"5\" [nzXXl]=\"5\">\n <nz-spin [nzSpinning]=\"nzContactLoading\">\n <nz-list nzItemLayout=\"horizontal\" [nzSplit]=\"false\" nzSize=\"small\">\n <nz-list-item\n class=\"nz-tabset-content-item\"\n *ngFor=\"let contact of nzContacts\"\n (click)=\"onContactRemove(contact)\"\n >\n <nz-list-item-meta>\n <nz-list-item-meta-title>\n {{ contact.realName }}\n </nz-list-item-meta-title>\n </nz-list-item-meta>\n </nz-list-item>\n </nz-list>\n </nz-spin>\n </nz-col>\n</nz-row>\n\n<nz-row *ngIf=\"button\">\n <nz-col [nzSpan]=\"4\" [nzOffset]=\"20\">\n <button nz-button nzType=\"primary\" (click)=\"confirm()\">确定</button>\n </nz-col>\n</nz-row>\n\n<ng-template #searchInputTpl>\n <i nz-icon nzType=\"close\" nzTheme=\"outline\" *ngIf=\"nzTabsetSearch\" (click)=\"onTabsetSearchClean()\"></i>\n <i nz-icon nzType=\"search\" nzTheme=\"outline\" *ngIf=\"!nzTabsetSearch\"></i>\n</ng-template>\n","import { log, YunzaiConfigService, YunzaiStompConfig } from '@yelon/util';\n\nexport const STOMP_DEFAULT_CONFIG: YunzaiStompConfig = {\n connectHeaders: {\n login: 'guest',\n passcode: 'guest'\n },\n brokerURL: '/websocket/ws/',\n heartbeatIncoming: 1000 * 60,\n heartbeatOutgoing: 1000 * 60,\n reconnectDelay: 30000000,\n debug: msg => {\n log(msg);\n }\n};\n\nexport function mergeStompConfig(srv: YunzaiConfigService): YunzaiStompConfig {\n return srv.merge('stomp', STOMP_DEFAULT_CONFIG)!;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Injector, isDevMode } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { RxStomp } from '@stomp/rx-stomp';\nimport { IRxStompPublishParams } from '@stomp/rx-stomp/esm6/i-rx-stomp-publish-params';\nimport { IMessage, StompHeaders } from '@stomp/stompjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { log, WINDOW, YunzaiBusinessConfig, YunzaiConfigService, YunzaiStompConfig } from '@yelon/util';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nimport { mergeBisConfig } from './bis.config';\nimport { mergeStompConfig } from './stomp.config';\n\nexport interface StompMessage {\n title?: string;\n content?: string;\n href?: string;\n type?: string;\n}\n\nexport interface IconStompMessage extends StompMessage {\n icon?: string;\n}\n\nexport interface UserStompMessage extends StompMessage {\n useruri?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class YzStompService {\n config: YunzaiStompConfig | null = null;\n bisConfig: YunzaiBusinessConfig | null = null;\n rxStomp: RxStomp | null = null;\n user: NzSafeAny;\n subs: Subscription[] = [];\n\n constructor(\n private csr: YunzaiConfigService,\n private cache: CacheService,\n private injector: Injector,\n private notification: NzNotificationService\n ) {\n if (!this.user) {\n this.user = this.cache.get('_yz_user', { mode: 'none' });\n }\n if (!this.config) {\n this.config = mergeStompConfig(this.csr);\n }\n if (!this.bisConfig) {\n this.bisConfig = mergeBisConfig(csr);\n }\n if (!this.rxStomp) {\n this.rxStomp = new RxStomp();\n if (isDevMode()) {\n log('yz.stomp.service: is dev mode');\n log('yz.stomp.service: ', `config is ${JSON.stringify(this.config)}`);\n this.rxStomp.configure(this.config);\n return;\n }\n const { location } = this.injector.get(DOCUMENT);\n const { protocol, host } = location;\n log('yz.stomp.service: ', `protocol is ${protocol},host is ${host}`);\n if (protocol.includes('http') && !protocol.includes('https')) {\n this.config.brokerURL = `ws://${host}${this.config.brokerURL}`;\n }\n if (protocol.includes('https')) {\n this.config.brokerURL = `wss://${host}${this.config.brokerURL}`;\n }\n log('yz.stomp.service: ', `config is ${this.config}`);\n this.rxStomp.configure(this.config);\n }\n }\n\n listen(): void {\n this.subs.push(\n this.rxStomp!.watch(`/topic/layout_${this.user.username}`).subscribe(message => {\n this.createNotification(JSON.parse(message.body));\n })\n );\n this.subs.push(\n this.rxStomp!.watch(`/topic/layout_xx_${this.user.username}`).subscribe((message: any) => {\n this.logoutNotification(JSON.parse(message.body));\n })\n );\n this.rxStomp!.activate();\n }\n\n createNotification(message: StompMessage): void {\n this.notification.create(message.type!, message.title!, `<a href=${message.href}>${message.content}</a>`);\n }\n\n logoutNotification(message: StompMessage): void {\n this.notification.create(message.type!, message.title!, `${message.content},剩余时间5秒`);\n setTimeout(() => {\n this.cache.clear();\n localStorage.clear();\n this.injector.get(WINDOW).location.href = `${this.bisConfig!.baseUrl}/cas-proxy/app/logout`;\n }, 5000);\n }\n\n unListen(): void {\n this.subs.forEach(s => s.unsubscribe());\n this.rxStomp!.deactivate().then();\n }\n\n publish(parameters: IRxStompPublishParams): void {\n this.rxStomp!.publish(parameters);\n }\n\n watch(destination: string, headers?: StompHeaders): Observable<IMessage> {\n return this.rxStomp!.watch(destination, headers);\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { CacheService } from '@yelon/cache';\nimport { LayoutDefaultOptions, LayoutService } from '@yelon/theme/layout-default';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { YzStompService } from './yz.stomp.service';\n\n@Component({\n selector: 'yz-layout-basic',\n template: `\n <layout-default [options]=\"options\" [asideUser]=\"asideUserTpl\" [content]=\"showReuseTab ? contentTpl : noneTpl\">\n <layout-default-header-item direction=\"left\">\n <yz-header-application></yz-header-application>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <yz-header-notify></yz-header-notify>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <yz-header-theme-btn></yz-header-theme-btn>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <div\n layout-default-header-item-trigger\n nz-dropdown\n [nzDropdownMenu]=\"settingsMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n >\n <i nz-icon nzType=\"setting\"></i>\n </div>\n <nz-dropdown-menu #settingsMenu=\"nzDropdownMenu\">\n <div nz-menu style=\"width: 200px;\">\n <div nz-menu-item>\n <yz-header-fullscreen></yz-header-fullscreen>\n </div>\n <div nz-menu-item>\n <yz-header-clear-storage></yz-header-clear-storage>\n </div>\n <div nz-menu-item>\n <yz-header-i18n></yz-header-i18n>\n </div>\n </div>\n </nz-dropdown-menu>\n </layout-default-header-item>\n <layout-default-header-item direction=\"right\">\n <yz-header-user></yz-header-user>\n </layout-default-header-item>\n <ng-template #asideUserTpl>\n <div nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"userMenu\" class=\"yunzai-default__aside-user\">\n <nz-avatar class=\"yunzai-default__aside-user-avatar\" [nzSrc]=\"icon\"></nz-avatar>\n <div class=\"yunzai-default__aside-user-info\">\n <strong>{{ text }}</strong>\n <p class=\"mb0\">{{ intro }}</p>\n </div>\n </div>\n <nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li nz-menu-item routerLink=\"/\">{{ 'menu.backtohome' | i18n }}</li>\n </ul>\n </nz-dropdown-menu>\n </ng-template>\n <ng-template #contentTpl>\n <reuse-tab #reuseTab [ngStyle]=\"reuseStyleSheet\"></reuse-tab>\n <router-outlet (activate)=\"reuseTab.activate($event)\"></router-outlet>\n </ng-template>\n <ng-template #noneTpl>\n <router-outlet></router-outlet>\n </ng-template>\n </layout-default>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzLayoutBasicComponent implements OnInit, OnDestroy {\n options: LayoutDefaultOptions = {\n logoExpanded: `./assets/logo-full.svg`,\n logoCollapsed: `./assets/logo.svg`\n };\n\n intro: string = '';\n text: string = '';\n icon: string = '';\n\n showReuseTab: boolean = true;\n showHeader: boolean = true;\n showSider: boolean = true;\n\n get reuseStyleSheet(): NzSafeAny {\n let cascadingStyleSheet = {};\n if (!this.showHeader) {\n cascadingStyleSheet = {\n ...cascadingStyleSheet,\n top: 0\n };\n }\n if (!this.showSider) {\n cascadingStyleSheet = {\n ...cascadingStyleSheet,\n left: '24px'\n };\n }\n return cascadingStyleSheet;\n }\n\n constructor(\n private cacheService: CacheService,\n private yzStompService: YzStompService,\n private layoutService: LayoutService\n ) {}\n\n ngOnInit(): void {\n const current: NzSafeAny = this.cacheService.get('_yz_current', { mode: 'none' });\n const project: NzSafeAny = this.cacheService.get('_yz_project_info', { mode: 'none' });\n this.text = current.text ? current.text : '应用名称';\n this.intro = current.intro ? current.intro : '应用描述';\n this.icon = current.icon ? current.icon : `./assets/tmp/img/avatar.jpg`;\n this.options.logoExpanded = project.maxLogoUrl ? project.maxLogoUrl : `./assets/logo-full.svg`;\n this.options.logoCollapsed = project.miniLogoUrl ? project.miniLogoUrl : `./assets/logo.svg`;\n this.yzStompService.listen();\n this.layoutService.reuseTab.asObservable().subscribe(show => (this.showReuseTab = show));\n this.layoutService.header.asObservable().subscribe(show => (this.showHeader = show));\n this.layoutService.sidebar.asObservable().subscribe(show => (this.showSider = show));\n }\n\n ngOnDestroy(): void {\n this.yzStompService.unListen();\n }\n}\n","/*\n * @Author: cui <devcui@outlook.com>\n * @Editor: microsoft vscode\n * @Date: 2021-11-27 11:30:50\n * @LastEditTime: 2021-11-27 14:38:46\n * @LastEditors: cui <devcui@outlook.com>\n * @Description: empty description\n * @FilePath: \\yelon\\packages\\bis\\layout\\layout.module.ts\n * LICENSE HERE\n */\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { YzSharedModule } from '@yelon/bis/shared';\nimport { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';\n\nimport { ContactComponent } from './contact/contact.component';\nimport {\n YzHeaderApplicationComponent,\n YzHeaderNotifyComponent,\n YzHeaderThemBtnComponent,\n YzHeaderUserComponent,\n YzHeaderClearStorageComponent,\n YzHeaderFullScreenComponent,\n YzHeaderI18NComponent\n} from './widgets';\nimport { YzLayoutBasicComponent } from './yz.basic.component';\nconst COMPONENTS = [\n ContactComponent,\n YzLayoutBasicComponent,\n YzHeaderApplicationComponent,\n YzHeaderNotifyComponent,\n YzHeaderThemBtnComponent,\n YzHeaderUserComponent,\n YzHeaderFullScreenComponent,\n YzHeaderClearStorageComponent,\n YzHeaderI18NComponent\n];\n\n@NgModule({\n imports: [HttpClientModule, CommonModule, FormsModule, RouterModule, ReactiveFormsModule, YzSharedModule],\n providers: [\n {\n provide: YUNZAI_THEME_BTN_KEYS,\n useValue: 'site-theme'\n }\n ],\n declarations: [...COMPONENTS],\n exports: [...COMPONENTS]\n})\nexport class YunzaiLayoutModule {}\n","import { Injectable, Injector } from '@angular/core';\nimport { forkJoin, Observable, of, map, mergeAll, mergeMap } from 'rxjs';\n\nimport { ITokenModel, ITokenService, mergeConfig as mergeAuthConfig, YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { WINDOW, YunzaiAuthConfig, YunzaiBusinessConfig } from '@yelon/util';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { log } from '@yelon/util/other';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { mergeBisConfig } from './bis.config';\n\n@Injectable({ providedIn: 'root' })\nexport class YzAuthService {\n protected option: YunzaiAuthConfig;\n protected bis: YunzaiBusinessConfig;\n\n constructor(private injector: Injector) {\n this.option = mergeAuthConfig(this.csr);\n this.bis = mergeBisConfig(this.csr);\n }\n\n private get csr(): YunzaiConfigService {\n return this.injector.get(YunzaiConfigService);\n }\n\n private get tokenService(): ITokenService {\n return this.injector.get(YA_SERVICE_TOKEN);\n }\n\n private get httpClient(): _HttpClient {\n return this.injector.get(_HttpClient);\n }\n\n private get cacheService(): CacheService {\n return this.injector.get(CacheService);\n }\n\n askToken(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'askToken');\n if (this.tokenService.get()?.token) {\n return of(this.tokenService.get()!);\n } else {\n if (this.bis.loginForm) {\n return this.fetchTokenByUP();\n } else {\n return this.fetchTokenByCas();\n }\n }\n }\n\n fetchTokenByUP(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'fetchTokenByUP');\n return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.bis.loginForm).pipe(\n map((response: NzSafeAny) => {\n const { access_token, expires_in, refresh_token, scope, token_type } = response;\n return {\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n };\n })\n );\n }\n\n fetchTokenByCas(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'fetchTokenByCas');\n const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);\n return this.httpClient\n .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)\n .pipe(\n map((response: NzSafeAny) => {\n switch (response.errcode) {\n case 2000:\n const { access_token, expires_in, refresh_token, scope, token_type } = response.data;\n return {\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n } as ITokenModel;\n case 2001:\n this.injector.get(WINDOW).location.href = response.msg;\n throw Error(\"Cookie Error: Can't find Cas Cookie,So jump to login!\");\n default:\n if (response.data) {\n console.error(response.data);\n throw Error(response.data);\n } else if (response.msg) {\n console.error(response.msg);\n throw Error(response.msg);\n } else {\n console.error('cas unknown error');\n throw Error('Unknown Error: Cas auth exception!');\n }\n }\n })\n );\n }\n\n login(): Observable<void> {\n log('yz.auth.service: ', 'login white login form->', this.bis.loginForm);\n return this.askToken().pipe(\n mergeMap(token => {\n log('yz.auth.service: get token->', token);\n this.csr.set('auth', {\n token_send_key: 'Authorization',\n token_send_template: `${token.tokenType} \\${token}`,\n token_send_place: 'header'\n });\n log('yz.auth.service: ', 'set token');\n this.tokenService.set(token);\n return this.cacheInit();\n }),\n mergeAll()\n );\n }\n\n cacheInit(): Observable<void[]> {\n log('yz.auth.service: ', 'cacheInit');\n const user = this.cacheService.get('_yz_user', { mode: 'none' });\n const header = this.cacheService.get('_yz_header', { mode: 'none' });\n const project = this.cacheService.get('_yz_project_info', { mode: 'none' });\n return forkJoin(of(user), of(header), of(project)).pipe(\n mergeMap(([u, h, p]) => {\n let list = [];\n // user cache\n if (!u) {\n log('yz.auth.service: ', 'fetch user cache');\n list.push(\n this.httpClient.get(`/auth/user`).pipe(\n map((user: NzSafeAny) => {\n this.cacheService.set('_yz_user', user.principal);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'user recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n // header cache\n if (!h) {\n log('yz.auth.service: ', 'fetch header cache');\n list.push(\n this.httpClient.get(`/auth/allheader/v2`).pipe(\n map((header: NzSafeAny) => {\n this.cacheService.set('_yz_header', header.data);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'header recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n // project cache\n if (!p) {\n log('yz.auth.service: ', 'fetch project cache');\n list.push(\n this.httpClient.get(`/app-manager/project/info`).pipe(\n map((info: NzSafeAny) => {\n this.cacheService.set('_yz_project_info', info.data);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'project recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n return forkJoin(list);\n })\n );\n }\n}\n","import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpHeaders,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n HttpResponseBase\n} from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Observable, of, throwError, catchError, filter, mergeMap, switchMap, take } from 'rxjs';\n\nimport { YA_SERVICE_TOKEN, ITokenService } from '@yelon/auth';\nimport { YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\nimport { YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util/config';\nimport { log } from '@yelon/util/other';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nimport { mergeBisConfig } from './bis.config';\n\nconst CODEMESSAGE: { [key: number]: string } = {\n 200: '服务器成功返回请求的数据。',\n 201: '新建或修改数据成功。',\n 202: '一个请求已经进入后台排队(异步任务)。',\n 204: '删除数据成功。',\n 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',\n 401: '用户没有权限(令牌、用户名、密码错误)。',\n 403: '用户得到授权,但是访问是被禁止的。',\n 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',\n 406: '请求的格式不可得。',\n 410: '请求的资源被永久删除,且不会再得到的。',\n 422: '当创建一个对象时,发生一个验证错误。',\n 500: '服务器发生错误,请检查服务器。',\n 502: '网关错误。',\n 503: '服务不可用,服务器暂时过载或维护。',\n 504: '网关超时。'\n};\n\n/**\n * 默认HTTP拦截器,其注册细节见 `app.module.ts`\n */\n@Injectable()\nexport class YzDefaultInterceptor implements HttpInterceptor {\n private jump = false;\n private refreshToking = false;\n private refreshToken$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n private get notification(): NzNotificationService {\n return this.injector.get(NzNotificationService);\n }\n\n private get tokenSrv(): ITokenService {\n return this.injector.get(YA_SERVICE_TOKEN);\n }\n\n private get http(): _HttpClient {\n return this.injector.get(_HttpClient);\n }\n\n private get config(): YunzaiBusinessConfig {\n return mergeBisConfig(this.injector.get(YunzaiConfigService));\n }\n\n private goTo(url: string): void {\n setTimeout(() => this.injector.get(Router).navigateByUrl(url));\n }\n\n constructor(private injector: Injector) {\n if (this.config.refreshTokenType === 'auth-refresh') {\n console.error(\"can't use auth-refresh, please change yz.default.interceptor to default.interceptor!\");\n }\n }\n\n private checkStatus(ev: HttpResponseBase): void {\n if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {\n return;\n }\n\n if (ev instanceof HttpErrorResponse && (ev.error.message || ev.error.errorMessage)) {\n if (ev.error.errorMessage) {\n this.notification.error(`发生了一些错误 `, ev.error.errorMessage);\n } else {\n this.notification.error(`发生了一些错误 `, ev.error.message);\n }\n return;\n }\n\n if (ev instanceof HttpResponse && ev.body.errorMessage) {\n this.notification.error(`发生了一些错误 `, ev.body.errorMessage);\n return;\n }\n const errortext = CODEMESSAGE[ev.status] || ev.statusText;\n this.notification.error(`请求错误 ${ev.status}: ${ev.url}`, errortext);\n }\n\n private ToLogin() {\n this.notification.error(`未登录或登录状态已过期,5秒后将跳转到登录页面。`, ``);\n setTimeout(() => {\n localStorage.clear();\n this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;\n }, 5000);\n }\n\n private reAttachToken(req: HttpRequest<any>): HttpRequest<any> {\n const token = this.tokenSrv.get()?.token;\n return req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n private refreshTokenRequest(): Observable<any> {\n const model = this.tokenSrv.get();\n const form = new FormData();\n form.set('refresh_token', model?.refreshToken);\n log('yz.default.interceptor: use the refresh token to request a new token', model?.refreshToken);\n return this.http.post(`/auth/user/token/refresh?_allow_anonymous=true`, form);\n }\n\n private tryRefreshToken(ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandler): Observable<any> {\n // 连刷新Token的请求都错了,那就是真错了\n if (['/auth/oauth/token'].some(url => req.url.includes(url))) {\n this.ToLogin();\n return throwError(ev);\n }\n\n // 正在刷新token,所有其他请求排队\n if (this.refreshToking) {\n return this.refreshToken$.pipe(\n filter(v => !!v),\n take(1),\n switchMap(() => next.handle(this.reAttachToken(req)))\n );\n }\n\n //尝试调用刷新 Token\n this.refreshToking = true;\n this.refreshToken$.next(null);\n\n // 处理Token\n return this.refreshTokenRequest().pipe(\n switchMap(res => {\n log('yz.default.interceptor: refresh token accessed -> ', res);\n // 重新保存新 token\n const { access_token, expires_in, refresh_token, scope, token_type } = res;\n this.tokenSrv.set({\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n });\n // 通知后续请求继续执行\n this.refreshToking = false;\n this.refreshToken$.next(res);\n // 重新发起请求\n return next.handle(this.reAttachToken(req));\n }),\n catchError(err => {\n this.refreshToking = false;\n this.ToLogin();\n return throwError(err);\n })\n );\n }\n\n private getAdditionalHeaders(headers?: HttpHeaders): { [name: string]: string } {\n const res: { [name: string]: string } = {};\n const lang = this.injector.get(YUNZAI_I18N_TOKEN).currentLang;\n if (!headers?.has('Accept-Language') && lang) {\n res['Accept-Language'] = lang;\n }\n return res;\n }\n\n private handleData(ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandler): Observable<any> {\n this.checkStatus(ev);\n switch (ev.status) {\n case 200:\n return of(ev);\n case 401:\n if (this.config.refreshTokenEnabled && this.config.refreshTokenType === 're-request') {\n return this.tryRefreshToken(ev, req, next);\n }\n this.ToLogin();\n break;\n case 403:\n case 404:\n case 500:\n if (this.jump) {\n this.goTo(`/exception/${ev.status}`);\n }\n break;\n default:\n if (ev instanceof HttpErrorResponse) {\n console.warn(\n '未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起,请参考 https://ng.yunzainfo.com/docs/server 解决跨域问题',\n ev\n );\n }\n break;\n }\n if (ev instanceof HttpErrorResponse) {\n return throwError(ev);\n } else {\n return of(ev);\n }\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n log('yz.default.interceptor.ts: ', 'request ', req);\n // 统一加前缀\n let url = req.url;\n if (!url.startsWith('https://') && !url.startsWith('http://')) {\n url = this.config.baseUrl + url;\n }\n if (url.includes('.json') && url.includes('assets')) {\n url = req.url;\n }\n // 加入语言头\n const newReq = req.clone({ url, setHeaders: this.getAdditionalHeaders(req.headers) });\n return next.handle(newReq).pipe(\n mergeMap(ev => {\n // 允许统一对请求错误处理\n if (ev instanceof HttpResponseBase) {\n return this.handleData(ev, newReq, next);\n }\n // 若一切都正常,则后续操作\n return of(ev);\n }),\n catchError((err: HttpErrorResponse) => this.handleData(err, newReq, next))\n );\n }\n}\n","import { APP_INITIALIZER, Inject, Injectable } from '@angular/core';\nimport { Observable, of, mergeMap } from 'rxjs';\n\nimport { ACLService } from '@yelon/acl';\nimport { ICONS } from '@yelon/bis/shared';\nimport { CacheService } from '@yelon/cache';\nimport { Menu, MenuService, SettingsService, TitleService, User, YUNZAI_I18N_TOKEN } from '@yelon/theme';\nimport { deepCopy, log, WINDOW, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzIconService } from 'ng-zorro-antd/icon';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';\nimport { YzAuthService } from './yz.auth.service';\nimport { YzI18NService } from './yz.i18n.service';\n\nexport function mapYzSideToYelonMenu(menus: Menu[]): void {\n menus.forEach(menu => {\n menu.badgeDot = menu.badge_dot || null;\n menu.badgeStatus = menu.badge_status || null;\n menu.shortcutRoot = menu.shortcut_root || null;\n menu.reuse = true;\n if (menu.children) {\n mapYzSideToYelonMenu(menu.children);\n }\n });\n}\n\nexport function generateAbility(menus: Menu[], abilities: string[], prefix: string): void {\n menus.forEach(menu => {\n if (menu.link) {\n prefix += menu.link;\n } else {\n prefix += '';\n }\n if (menu.menuAuths) {\n menu.menuAuths.forEach((a: string) => {\n abilities.push(`${prefix}:${a}`);\n abilities.push(a);\n });\n }\n\n if (menu.children) {\n generateAbility(menu.children, abilities, prefix);\n }\n });\n}\n\n@Injectable()\nexport class YzStartupService {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n\n constructor(\n iconSrv: NzIconService,\n private menuService: MenuService,\n @Inject(YUNZAI_I18N_TOKEN) private i18n: YzI18NService,\n @Inject(WINDOW) private win: NzSafeAny,\n private settingService: SettingsService,\n private aclService: ACLService,\n private titleService: TitleService,\n private yzAuthService: YzAuthService,\n private cacheService: CacheService,\n private configService: YunzaiConfigService\n ) {\n this.bis = mergeBisConfig(this.configService);\n iconSrv.addIcon(...ICONS);\n }\n\n load(): Observable<void> {\n log('startup.service: ', 'load');\n const defaultLang = this.i18n.defaultLang;\n return this.i18n.loadLangData(defaultLang).pipe(\n mergeMap(langData => {\n log('startup.service: ', 'set i18n, defaultLang->', defaultLang, ' langData->', langData);\n this.i18n.use(defaultLang, langData);\n return of(null);\n }),\n mergeMap(() => {\n return this.yzAuthService.login();\n }),\n mergeMap(v => {\n // preloader finish\n this.systemInit();\n log('startup.service: preloader finish');\n if (this.win && this.win.appBootstrap) {\n this.win.appBootstrap();\n }\n return of(v);\n })\n );\n }\n\n systemInit(): void {\n log('startup.service: system init');\n // user\n const user: User = this.cacheService.get('_yz_user', { mode: 'none' });\n // menu\n const ms = deepCopy(user.menu).filter((m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode) as Menu[];\n mapYzSideToYelonMenu(ms);\n const currentMenu = ms.pop() || [];\n this.menuService.add([currentMenu]);\n\n // logo app\n this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });\n this.settingService.setUser({\n name: user.realname || 'no name',\n avatar: `${this.bis.baseUrl}/filecenter/file/${user.avatarId}` || '',\n email: user.email || 'no email'\n });\n\n // title\n this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';\n this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');\n\n // acl\n const abilities: string[] = [];\n generateAbility([currentMenu], abilities, '');\n this.aclService.attachRole(\n user?.roles\n .map((role: NzSafeAny) => {\n return role.roleValue;\n })\n .filter((a: NzSafeAny) => !!a) || []\n );\n this.aclService.attachAbility(abilities);\n\n // cache current\n this.cacheService.set('_yz_current', {\n text: currentMenu.text,\n intro: currentMenu.intro,\n icon: currentMenu.appIconUrl\n });\n }\n}\n\nexport function YzStartupServiceFactory(startupService: YzStartupService): () => Observable<void> {\n return () => startupService.load();\n}\n\n//@ts-ignore\nexport const YZ_APPINIT_PROVIDES = [\n YzStartupService,\n {\n provide: APP_INITIALIZER,\n useFactory: YzStartupServiceFactory,\n deps: [YzStartupService],\n multi: true\n }\n];\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PathToRegexpService {\n constructor() {}\n DEFAULT_DELIMITER = '/';\n\n PATH_REGEXP = new RegExp(\n ['(\\\\\\\\.)', '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'].join('|'),\n 'g'\n );\n\n parse(str: any, options: any) {\n const tokens = [];\n let key = 0;\n let index = 0;\n let path = '';\n const defaultDelimiter = (options && options.delimiter) || this.DEFAULT_DELIMITER;\n const whitelist = (options && options.whitelist) || undefined;\n let pathEscaped = false;\n let res;\n\n while ((res = this.PATH_REGEXP.exec(str)) !== null) {\n const m = res[0];\n const escaped = res[1];\n const offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue;\n }\n\n let prev = '';\n const name = res[2];\n const capture = res[3];\n const group = res[4];\n const modifier = res[5];\n\n if (!pathEscaped && path.length) {\n const k = path.length - 1;\n const c = path[k];\n const matches = whitelist ? whitelist.indexOf(c) > -1 : true;\n\n if (matches) {\n prev = c;\n path = path.slice(0, k);\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n\n const repeat = modifier === '+' || modifier === '*';\n const optional = modifier === '?' || modifier === '*';\n const pattern = capture || group;\n const delimiter = prev || defaultDelimiter;\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? this.escapeGroup(pattern)\n : `[^${this.escapeString(delimiter === defaultDelimiter ? delimiter : delimiter + defaultDelimiter)}]+?`\n });\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n\n return tokens;\n }\n compile(str: any, options: any) {\n return this.tokensToFunction(this.parse(str, options), options);\n }\n\n tokensToFunction(tokens: any, options: any) {\n const matches = new Array(tokens.length);\n\n for (let i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp(`^(?:${tokens[i].pattern})$`, this.flags(options));\n }\n }\n\n return function (data: any, options: any) {\n let path = '';\n const encode = (options && options.encode) || encodeURIComponent;\n const validate = options ? options.validate !== false : true;\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n\n const value = data ? data[token.name] : undefined;\n let segment;\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError(`Expected \"${token.name}\" to not repeat, but got array`);\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue;\n }\n\n throw new TypeError(`Expected \"${token.name}\" to not be empty`);\n }\n\n for (let j = 0; j < value.length; j++) {\n segment = encode(value[j], token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(`Expected all \"${token.name}\" to match \"${token.pattern}\"`);\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue;\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(`Expected \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`);\n }\n\n path += token.prefix + segment;\n continue;\n }\n\n if (token.optional) {\n continue;\n }\n\n throw new TypeError(`Expected \"${token.name}\" to be ${token.repeat ? 'an array' : 'a string'}`);\n }\n\n return path;\n };\n }\n\n escapeString(str: any) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n }\n\n escapeGroup(group: any) {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n }\n\n flags(options: any) {\n return options && options.sensitive ? '' : 'i';\n }\n\n regexpToRegexp(path: any, keys: any) {\n if (!keys) {\n return path;\n }\n\n const groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (let i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n });\n }\n }\n\n return path;\n }\n\n arrayToRegexp(path: any, keys: any, options: any): RegExp {\n const parts = [];\n\n for (let i = 0; i < path.length; i++) {\n parts.push(this.pathToRegexp(path[i], keys, options).source);\n }\n\n return new RegExp(`(?:${parts.join('|')})`, this.flags(options));\n }\n\n stringToRegexp(path: any, keys: any, options: any) {\n return this.tokensToRegExp(this.parse(path, options), keys, options);\n }\n\n tokensToRegExp(tokens: any, keys: any, options: any) {\n options = options || {};\n\n const strict = options.strict;\n const start = options.start !== false;\n const end = options.end !== false;\n const delimiter = options.delimiter || this.DEFAULT_DELIMITER;\n const endsWith = []\n .concat(options.endsWith || [])\n .map(this.escapeString)\n .concat('$')\n .join('|');\n let route = start ? '^' : '';\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === 'string') {\n route += this.escapeString(token);\n } else {\n const capture = token.repeat\n ? `(?:${token.pattern})(?:${this.escapeString(token.delimiter)}(?:${token.pattern}))*`\n : token.pattern;\n\n if (keys) {\n keys.push(token);\n }\n\n if (token.optional) {\n if (!token.prefix) {\n route += `(${capture})?`;\n } else {\n route += `(?:${this.escapeString(token.prefix)}(${capture}))?`;\n }\n } else {\n route += `${this.escapeString(token.prefix)}(${capture})`;\n }\n }\n }\n\n if (end) {\n if (!strict) {\n route += `(?:${this.escapeString(delimiter)})?`;\n }\n\n route += endsWith === '$' ? '$' : `(?=${endsWith})`;\n } else {\n const endToken = tokens[tokens.length - 1];\n const isEndDelimited =\n typeof endToken === 'string' ? endToken[endToken.length - 1] === delimiter : endToken === undefined;\n\n if (!strict) {\n route += `(?:${this.escapeString(delimiter)}(?=${endsWith}))?`;\n }\n if (!isEndDelimited) {\n route += `(?=${this.escapeString(delimiter)}|${endsWith})`;\n }\n }\n\n return new RegExp(route, this.flags(options));\n }\n\n pathToRegexp(path: any, keys: any, options: any) {\n if (path instanceof RegExp) {\n return this.regexpToRegexp(path, keys);\n }\n\n if (Array.isArray(path)) {\n return this.arrayToRegexp(/** @type {!Array} */ path, keys, options);\n }\n\n return this.stringToRegexp(/** @type {string} */ path, keys, options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanActivateChild,\n Router,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { Menu, User } from '@yelon/theme';\nimport { deepCopy, log, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';\nimport { PathToRegexpService } from './path-to-regexp.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActGuard implements CanActivate, CanActivateChild {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n private menus: NzSafeAny[] = [];\n private links: string[] = [];\n\n constructor(\n private configService: YunzaiConfigService,\n private cacheService: CacheService,\n private pathToRegexp: PathToRegexpService,\n private router: Router\n ) {\n log('act: ');\n this.bis = mergeBisConfig(this.configService);\n log('act: config ', this.bis);\n const user: User = this.cacheService.get('_yz_user', { mode: 'none' });\n log('act: user ', user);\n this.menus = deepCopy(user.menu).filter(\n (m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode\n ) as Menu[];\n log('act: menus ', this.menus);\n this.getAllLinks(this.menus, this.links);\n log('act: links ', this.links);\n }\n\n canActivate(\n _: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n log('act: can activate ', state);\n if (this.preHandle(state)) {\n return true;\n }\n log('act: can activate child prehandle success');\n let canactivate = false;\n this.links.forEach((link: string) => {\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n log(`act: ${link} test ${state.url.split('?')[0]}`);\n if (regexp.test(state.url.split('?')[0])) {\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n canActivateChild(\n _: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n log('act: can activate child ', state);\n if (this.preHandle(state)) {\n return true;\n }\n log('act: can activate child prehandle success');\n\n let canactivate = false;\n this.links.forEach((link: string) => {\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n if (regexp.test(state.url.split('?')[0])) {\n log(`act: ${link} test ${state.url.split('?')[0]}`);\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n preHandle(state: RouterStateSnapshot): boolean {\n return (\n state.url.includes('error') ||\n state.url.includes('exception') ||\n state.url.includes('displayIndex') ||\n state.url === '' ||\n state.url === null ||\n state.url === '/' ||\n state.url.includes('iframePage')\n );\n }\n\n getAllLinks(menu: Menu[], links: string[]): void {\n menu.forEach((sider: Menu) => {\n if (sider.link) {\n links.push(sider.link);\n }\n if (sider.children && sider.children.length > 0) {\n this.getAllLinks(sider.children, links);\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["zorroZhCN","dfZhCn","yelonZhCn","zorroZhTW","dfZhTw","yelonZhTw","zorroEnUS","dfEn","yelonEnUS","i1","i2.YzI18NService","i3","i4","i6","i8","i9","i2","i5","i7","i10","i1.ContactService","i11","i12","i13","i15","log","i2.YzStompService","i4.YzHeaderApplicationComponent","i5.YzHeaderNotifyComponent","i6.YzHeaderThemBtnComponent","i8.YzHeaderFullScreenComponent","i9.YzHeaderClearStorageComponent","i10.YzHeaderI18NComponent","i11.YzHeaderUserComponent","i14","i16","i18","i19","mergeAuthConfig","i4.YzAuthService","i3.PathToRegexpService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout.mjs","sources":["../../../../packages/bis/layout/yz.i18n.service.ts","../../../../packages/bis/layout/widgets/yz.application.component.ts","../../../../packages/bis/layout/widgets/yz.i18n.component.ts","../../../../packages/bis/layout/widgets/yz.notify.component.ts","../../../../packages/bis/layout/widgets/yz.them-btn.component.ts","../../../../packages/bis/layout/bis.config.ts","../../../../packages/bis/layout/widgets/yz.user.component.ts","../../../../packages/bis/layout/widgets/yz.clear-storage.component.ts","../../../../packages/bis/layout/widgets/yz.fullscreen.component.ts","../../../../packages/bis/layout/contact/contact.service.ts","../../../../packages/bis/layout/contact/contact.component.ts","../../../../packages/bis/layout/contact/contact.component.html","../../../../packages/bis/layout/stomp.config.ts","../../../../packages/bis/layout/yz.stomp.service.ts","../../../../packages/bis/layout/yz.basic.component.ts","../../../../packages/bis/layout/layout.module.ts","../../../../packages/bis/layout/yz.auth.service.ts","../../../../packages/bis/layout/yz.default.interceptor.ts","../../../../packages/bis/layout/yz.startup.service.ts","../../../../packages/bis/layout/path-to-regexp.service.ts","../../../../packages/bis/layout/act.guard.ts","../../../../packages/bis/layout/layout.ts"],"sourcesContent":["// 请参考:https://ng.yunzainfo.com/docs/i18n\nimport { Platform } from '@angular/cdk/platform';\nimport { registerLocaleData } from '@angular/common';\nimport ngEn from '@angular/common/locales/en';\nimport ngZh from '@angular/common/locales/zh';\nimport ngZhTw from '@angular/common/locales/zh-Hant';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw } from 'date-fns/locale';\n\nimport {\n YelonLocaleService,\n en_US as yelonEnUS,\n SettingsService,\n zh_CN as yelonZhCn,\n zh_TW as yelonZhTw,\n _HttpClient,\n YunzaiI18nBaseService\n} from '@yelon/theme';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { en_US as zorroEnUS, NzI18nService, zh_CN as zorroZhCN, zh_TW as zorroZhTW } from 'ng-zorro-antd/i18n';\n\ninterface LangConfigData {\n abbr: string;\n text: string;\n ng: NzSafeAny;\n zorro: NzSafeAny;\n date: NzSafeAny;\n yelon: NzSafeAny;\n}\n\nconst DEFAULT = 'zh-CN';\nconst LANGS: { [key: string]: LangConfigData } = {\n 'zh-CN': {\n text: '简体中文',\n ng: ngZh,\n zorro: zorroZhCN,\n date: dfZhCn,\n yelon: yelonZhCn,\n abbr: '🇨🇳'\n },\n 'zh-TW': {\n text: '繁体中文',\n ng: ngZhTw,\n zorro: zorroZhTW,\n date: dfZhTw,\n yelon: yelonZhTw,\n abbr: '🇭🇰'\n },\n 'en-US': {\n text: 'English',\n ng: ngEn,\n zorro: zorroEnUS,\n date: dfEn,\n yelon: yelonEnUS,\n abbr: '🇬🇧'\n }\n};\n\n@Injectable({ providedIn: 'root' })\nexport class YzI18NService extends YunzaiI18nBaseService {\n protected _defaultLang = DEFAULT;\n private _langs = Object.keys(LANGS).map(code => {\n const item = LANGS[code];\n return { code, text: item.text, abbr: item.abbr };\n });\n\n constructor(\n private http: _HttpClient,\n private settings: SettingsService,\n private nzI18nService: NzI18nService,\n private yelonLocaleService: YelonLocaleService,\n private platform: Platform,\n cogSrv: YunzaiConfigService\n ) {\n super(cogSrv);\n const defaultLang = this.getDefaultLang();\n this._defaultLang = this._langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;\n }\n\n private getDefaultLang(): string {\n if (!this.platform.isBrowser) {\n return DEFAULT;\n }\n if (this.settings.layout.lang) {\n return this.settings.layout.lang;\n }\n let res = (navigator.languages ? navigator.languages[0] : null) || navigator.language;\n const arr = res.split('-');\n return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;\n }\n\n loadLangData(lang: string): Observable<NzSafeAny> {\n return this.http.get(`assets/tmp/i18n/${lang}.json`);\n }\n\n use(lang: string, data: Record<string, unknown>): void {\n if (this._currentLang === lang) return;\n\n this._data = this.flatData(data, []);\n\n const item = LANGS[lang];\n registerLocaleData(item.ng);\n this.nzI18nService.setLocale(item.zorro);\n this.nzI18nService.setDateLocale(item.date);\n this.yelonLocaleService.setLocale(item.yelon);\n this._currentLang = lang;\n\n this._change$.next(lang);\n }\n\n getLangs(): Array<{ code: string; text: string; abbr: string }> {\n return this._langs;\n }\n}\n","import { ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\nexport enum TOPIC {\n FULL,\n OWN,\n EVERY\n}\n\nexport interface HeaderTopic {\n // 忘了\n attribute: any;\n // 子菜单\n children: HeaderTopic[];\n // 描述\n intro: string;\n // key\n key: string;\n // 名称\n name: string;\n // 打开方式\n target: string;\n // 是否有权限打开\n auth: boolean;\n // 路径\n url: string;\n // 版本\n version: string;\n}\n\n@Component({\n selector: 'yz-header-application',\n template: `\n <!-- template start-->\n <ng-template #search>\n <div nz-row class=\"yz-application-list-search\">\n <nz-input-group [nzPrefix]=\"prefixTemplate\">\n <input\n type=\"text\"\n nz-input\n placeholder=\"{{ 'application.search' | i18n }}\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"onSearch()\"\n />\n <ng-template #prefixTemplate>\n <i nz-icon nzType=\"search\" nzTheme=\"outline\"></i>\n </ng-template>\n </nz-input-group>\n </div>\n </ng-template>\n <ng-template #ld>\n <div class=\"yz-application-list\">\n <ul>\n <li *ngFor=\"let d of listData\">\n <h5>{{ d.name }}</h5>\n <a href=\"javascript:;\" *ngFor=\"let cd of d.children\" (click)=\"open(cd)\">{{ cd.name }}</a>\n </li>\n </ul>\n </div>\n </ng-template>\n <!-- template end-->\n\n <!-- button start-->\n <div class=\"yunzai-default__nav-item\" (click)=\"diffChange()\"> {{ 'application.button' | i18n }}</div>\n <!-- button end-->\n\n <!-- header start-->\n <div class=\"yz-application\" nz-row *ngIf=\"active\">\n <div nz-col [nzSpan]=\"3\" class=\"yz-application-topic\">\n <div class=\"yz-application-text\" (click)=\"full()\">{{ 'application.all' | i18n }}</div>\n <div class=\"yz-application-text\" (click)=\"own()\">{{ 'application.mine' | i18n }}</div>\n <div class=\"yz-application-text\" *ngFor=\"let d of topicData\" (click)=\"every(d)\">\n {{ d.name }}\n </div>\n </div>\n <div nz-col [nzSpan]=\"21\" [ngSwitch]=\"topic\" class=\"yz-application-container\">\n <div *ngSwitchCase=\"T.FULL\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"ld\"></ng-template>\n </div>\n <div *ngSwitchCase=\"T.OWN\">\n <ng-template [ngTemplateOutlet]=\"search\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"ld\"></ng-template>\n </div>\n <div *ngSwitchCase=\"T.EVERY\" class=\"yz-application-list\">\n <div class=\"yz-application-list-item\">\n <ul>\n <li *ngFor=\"let d of listData\" (click)=\"open(d)\">\n <a href=\"javascript:;\">\n <h4>{{ d.name }}</h4>\n <p>{{ d.intro }}</p>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <!-- header end-->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderApplicationComponent implements OnInit, OnDestroy {\n T = TOPIC;\n active: boolean = false;\n topicData: HeaderTopic[] = [];\n listData: HeaderTopic[] = [];\n topic: TOPIC = TOPIC.FULL;\n choosed: HeaderTopic | undefined;\n searchValue: string | null = null;\n subs: Subscription[] = [];\n\n constructor(\n private inject: Injector,\n private cacheService: CacheService,\n private i18n: YzI18NService,\n private http: _HttpClient\n ) {}\n\n ngOnInit(): void {\n this.topicData = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(f => f.unsubscribe());\n }\n\n diffChange(flag?: boolean) {\n if (flag) {\n this.active = flag;\n } else {\n this.active = !this.active;\n }\n }\n\n initTopic(topic: TOPIC) {\n this.searchValue = null;\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n this.topic = topic;\n }\n\n full() {\n this.initTopic(TOPIC.FULL);\n }\n\n own() {\n this.initTopic(TOPIC.OWN);\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = temp\n .filter((topic: HeaderTopic) => {\n topic.children = topic.children.filter((child: HeaderTopic) => {\n return child.auth;\n });\n return topic;\n })\n .filter((topic: HeaderTopic) => {\n return topic.children.length > 0;\n });\n }\n\n every(e: HeaderTopic) {\n this.initTopic(TOPIC.EVERY);\n this.choosed = e;\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n this.listData = [...temp.filter(t => t.key === e.key)[0].children];\n }\n\n onSearch() {\n const temp: HeaderTopic[] = this.cacheService.get('_yz_header', { mode: 'none' });\n // 如果搜索输入的有值\n if (this.searchValue) {\n // 过滤菜单过滤出搜索的值\n this.listData = temp\n .filter((topic: HeaderTopic) => {\n if (this.i18n.fanyi(topic.name).includes(this.searchValue!)) {\n return topic;\n } else {\n topic.children = topic.children.filter((child: HeaderTopic) => {\n return this.i18n.fanyi(child.name).includes(this.searchValue!);\n });\n return topic;\n }\n })\n .filter((topic: HeaderTopic) => {\n return topic.children.length > 0;\n });\n } else {\n // 如果没有值,取消搜索\n this.listData = this.cacheService.get('_yz_header', { mode: 'none' });\n }\n }\n\n open(topic: HeaderTopic) {\n if (topic.key) {\n this.subs.push(\n this.http\n .post(`/app-manager/web-scan/save`, {\n appId: topic.key,\n createDate: new Date()\n })\n .subscribe()\n );\n }\n switch (topic.target) {\n case 'href':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n case 'blank':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n case 'target':\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n default:\n this.inject.get(WINDOW).location.href = topic.url;\n break;\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';\n\nimport { YUNZAI_I18N_TOKEN, SettingsService } from '@yelon/theme';\nimport { BooleanInput, InputBoolean } from '@yelon/util/decorator';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\n@Component({\n selector: 'yz-header-i18n',\n template: `\n <div *ngIf=\"showLangText\" nz-dropdown [nzDropdownMenu]=\"langMenu\" nzPlacement=\"bottomRight\">\n <i nz-icon nzType=\"global\"></i>\n {{ 'menu.lang' | i18n }}\n <i nz-icon nzType=\"down\"></i>\n </div>\n <i\n *ngIf=\"!showLangText\"\n nz-dropdown\n [nzDropdownMenu]=\"langMenu\"\n nzPlacement=\"bottomRight\"\n nz-icon\n nzType=\"global\"\n ></i>\n <nz-dropdown-menu #langMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li\n nz-menu-item\n *ngFor=\"let item of langs\"\n [nzSelected]=\"item.code === curLangCode\"\n (click)=\"change(item.code)\"\n >\n <span role=\"img\" [attr.aria-label]=\"item.text\" class=\"pr-xs\">{{ item.abbr }}</span>\n {{ item.text }}\n </li>\n </ul>\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderI18NComponent {\n static ngAcceptInputType_showLangText: BooleanInput;\n /** Whether to display language text */\n @Input() @InputBoolean() showLangText = true;\n\n get langs(): Array<{ code: string; text: string; abbr: string }> {\n return this.i18n.getLangs();\n }\n\n get curLangCode(): string {\n return this.settings.layout.lang;\n }\n\n constructor(\n private settings: SettingsService,\n @Inject(YUNZAI_I18N_TOKEN) private i18n: YzI18NService,\n @Inject(DOCUMENT) private doc: any\n ) {}\n\n change(lang: string): void {\n const spinEl = this.doc.createElement('div');\n spinEl.setAttribute('class', `page-loading ant-spin ant-spin-lg ant-spin-spinning`);\n spinEl.innerHTML = `<span class=\"ant-spin-dot ant-spin-dot-spin\"><i></i><i></i><i></i><i></i></span>`;\n this.doc.body.appendChild(spinEl);\n\n this.i18n.loadLangData(lang).subscribe(res => {\n this.i18n.use(lang, res);\n this.settings.setLayout('lang', lang);\n setTimeout(() => this.doc.location.reload());\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Injector,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { forkJoin, Observable, Subscription, map } from 'rxjs';\n\nimport { formatDistanceToNow } from 'date-fns';\n\nimport { NoticeIconSelect, NoticeItem } from '@yelon/abc/notice-icon';\nimport { YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\nimport { log } from '@yelon/util/other';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzI18nService } from 'ng-zorro-antd/i18n';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\nimport { YzI18NService } from '../yz.i18n.service';\n\n@Component({\n selector: 'yz-header-notify',\n template: `\n <notice-icon\n [data]=\"data\"\n [count]=\"count\"\n [loading]=\"loading\"\n btnClass=\"yunzai-default__nav-item\"\n btnIconClass=\"yunzai-default__nav-item-icon\"\n (select)=\"select($event)\"\n (clear)=\"clear($event)\"\n ></notice-icon>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderNotifyComponent implements OnInit, OnDestroy {\n data: NoticeItem[] = [\n {\n key: 'msg',\n title: this.y18n.fanyi('notify.message'),\n list: [],\n emptyText: this.y18n.fanyi('notify.message.emptyText'),\n emptyImage: './assets/tmp/img/message.svg',\n clearText: this.y18n.fanyi('notify.message.clearText')\n },\n {\n key: 'todo',\n title: this.y18n.fanyi('notify.todo'),\n list: [],\n emptyText: this.y18n.fanyi('notify.todo.emptyText'),\n emptyImage: './assets/tmp/img/todo.svg',\n clearText: this.y18n.fanyi('notify.todo.clearText')\n },\n {\n key: 'notice',\n title: this.y18n.fanyi('notify.notice'),\n list: [],\n emptyText: this.y18n.fanyi('notify.notice.emptyText'),\n emptyImage: './assets/tmp/img/notice.svg',\n clearText: this.y18n.fanyi('notify.notice.clearText')\n }\n ];\n loading = false;\n count = 0;\n subs: Subscription[] = [];\n\n constructor(\n private injector: Injector,\n private msg: NzMessageService,\n @Inject(YUNZAI_I18N_TOKEN) private y18n: YzI18NService,\n private nzI18n: NzI18nService,\n private cdr: ChangeDetectorRef,\n private httpClient: _HttpClient\n ) {}\n\n ngOnInit(): void {\n this.loadData();\n }\n\n loadData(): void {\n this.count = 0;\n this.loading = true;\n this.subs.push(\n forkJoin(this.loadTodo(), this.loadMessage()).subscribe(() => {\n this.loading = false;\n this.cdr.detectChanges();\n })\n );\n }\n\n loadMessage(): Observable<void> {\n log('notify.component: ', 'fetch message list');\n const formatMessageStatus = (status: string): NzSafeAny => {\n switch (status) {\n case '0':\n return { extra: this.y18n.fanyi('notify.unread'), color: 'red' };\n case '1':\n return { extra: this.y18n.fanyi('notify.readed'), color: 'green' };\n default:\n return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };\n }\n };\n return this.httpClient\n .post(`/message-center-3/my-msg-and-todo/msg-list`, {\n pageNum: 1,\n pageSize: 10,\n status: '0'\n })\n .pipe(\n map((response: NzSafeAny) => {\n const viewMessage = this.data.filter(d => d.key === 'msg')[0];\n viewMessage.list = response.data.list.map((m: NzSafeAny) => {\n return {\n ...m,\n avatar: m?.imgUrl || './assets/tmp/img/message.png',\n title: m.systemName,\n description: m.content,\n extra: formatMessageStatus(m.status).extra,\n color: formatMessageStatus(m.status).color,\n datetime: formatDistanceToNow(new Date(m.date), { locale: this.nzI18n.getDateLocale() })\n };\n });\n this.count += viewMessage.list.length;\n })\n );\n }\n\n loadTodo(): Observable<void> {\n log('notify.component: ', 'fetch todo list');\n const formatTodoStatus = (status: string): NzSafeAny => {\n switch (status) {\n case '0':\n return { extra: this.y18n.fanyi('notify.unstart'), color: 'red' };\n case '1':\n return { extra: this.y18n.fanyi('notify.started'), color: 'green' };\n default:\n return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };\n }\n };\n return this.httpClient\n .post(`/message-center-3/my-msg-and-todo/todo-list`, {\n pageNum: 1,\n pageSize: 10,\n status: '0'\n })\n .pipe(\n map((response: NzSafeAny) => {\n const viewTodo = this.data.filter(d => d.key === 'todo')[0];\n viewTodo.list = response.data.list.map((t: NzSafeAny) => {\n return {\n ...t,\n avatar: t?.imgUrl || './assets/tmp/img/todo.png',\n title: t.systemName,\n description: t.content,\n datetime: formatDistanceToNow(new Date(t.date), { locale: this.nzI18n.getDateLocale() }),\n extra: formatTodoStatus(t.status).extra,\n color: formatTodoStatus(t.status).color\n };\n });\n this.count += viewTodo.list.length;\n })\n );\n }\n\n clear(type: string): void {\n const t = this.data.filter(d => d.title === type)[0];\n if (t.key == 'msg' || t.key == 'notice') {\n this.subs.push(\n this.httpClient.post(`/message-center-3/my-msg-and-todo/msg-clear`, {}).subscribe(_ => {\n this.msg.success(`${this.y18n.fanyi('notify.clear')} ${type}`);\n this.loadData();\n })\n );\n }\n if (t.key == 'todo') {\n this.loadData();\n }\n }\n\n select(res: NoticeIconSelect): void {\n this.injector.get(WINDOW).open(res.item.url);\n this.loadData();\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(a => a.unsubscribe());\n }\n}\n","import { Direction, Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n Inject,\n Optional\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { ThemeBtnType, YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport interface YzThemeBtnType extends ThemeBtnType {\n color?: string;\n}\n\n@Component({\n selector: 'yz-header-theme-btn',\n template: `\n <div\n class=\"yunzai-default__nav-item\"\n nz-dropdown\n [nzDropdownMenu]=\"iconMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n >\n <svg nz-tooltip class=\"anticon\" role=\"img\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"currentColor\">\n <g fill-rule=\"evenodd\">\n <g fill-rule=\"nonzero\">\n <path\n d=\"M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z\"\n ></path>\n </g>\n </g>\n </svg>\n </div>\n <nz-dropdown-menu #iconMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li\n nz-menu-item\n *ngFor=\"let theme of types\"\n (click)=\"onThemeChange(theme.key)\"\n [style]=\"{ color: theme.color }\"\n >\n <i nz-icon nzType=\"bg-colors\"></i>\n {{ theme.text | i18n }}\n </li>\n </ul>\n <!-- <div nz-menu class=\"wd-xl animated jello\">-->\n <!-- <div nz-row [nzJustify]=\"'space-between'\" [nzAlign]=\"'middle'\" class=\"app-icons\">-->\n <!-- <div nz-col [nzSpan]=\"4\" *ngFor=\"let theme of types\" (click)=\"onThemeChange(theme.key)\">-->\n <!-- <i nz-icon nzType=\"bg-colors\" class=\"text-white\" [style]=\"{ backgroundColor: theme.color }\"></i>-->\n <!-- <span [ngStyle]=\"{ color: theme.color }\">{{ theme.text | i18n }}</span>-->\n <!-- </div>-->\n <!-- </div>-->\n <!-- </div>-->\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderThemBtnComponent implements OnInit, OnDestroy {\n private theme = 'default';\n @Input() types: YzThemeBtnType[] = [\n { key: 'default', text: 'theme.default', color: '#2163ff' },\n { key: 'compact', text: 'theme.compact', color: '#2163ff' },\n { key: 'dark', text: 'theme.dark', color: '#020202' },\n { key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },\n { key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },\n { key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },\n { key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },\n { key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },\n { key: 'youlan', text: 'theme.youlan', color: '#1781B5' },\n { key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },\n { key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },\n { key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }\n ];\n @Input() devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;\n @Input() deployUrl = '';\n private destroy$ = new Subject<void>();\n dir: Direction = 'ltr';\n\n constructor(\n private renderer: Renderer2,\n private configSrv: YunzaiConfigService,\n private platform: Platform,\n @Inject(DOCUMENT) private doc: NzSafeAny,\n @Optional() private directionality: Directionality,\n @Inject(YUNZAI_THEME_BTN_KEYS) private KEYS: string\n ) {}\n\n ngOnInit(): void {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n });\n this.initTheme();\n }\n\n private initTheme(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.theme = localStorage.getItem(this.KEYS) || 'default';\n this.updateChartTheme();\n this.onThemeChange(this.theme);\n }\n\n private updateChartTheme(): void {\n this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });\n }\n\n onThemeChange(theme: string): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.theme = theme;\n this.renderer.setAttribute(this.doc.body, 'data-theme', theme);\n const dom = this.doc.getElementById(this.KEYS);\n if (dom) {\n dom.remove();\n }\n localStorage.removeItem(this.KEYS);\n if (theme !== 'default') {\n const el = this.doc.createElement('link');\n el.type = 'text/css';\n el.rel = 'stylesheet';\n el.id = this.KEYS;\n el.href = `${this.deployUrl}assets/style.${theme}.css`;\n\n localStorage.setItem(this.KEYS, theme);\n this.doc.body.append(el);\n }\n this.updateChartTheme();\n }\n\n ngOnDestroy(): void {\n const el = this.doc.getElementById(this.KEYS);\n if (el != null) {\n this.doc.body.removeChild(el);\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\n\nexport const BUSINESS_DEFAULT_CONFIG: YunzaiBusinessConfig = {\n baseUrl: '/backstage',\n systemCode: 'portal',\n loginForm: null,\n refreshTokenEnabled: true,\n refreshTokenType: 're-request'\n};\n\nexport function mergeBisConfig(srv: YunzaiConfigService): YunzaiBusinessConfig {\n return srv.merge('bis', BUSINESS_DEFAULT_CONFIG)!;\n}\n","import { ChangeDetectionStrategy, Component, Inject, Injector, OnInit } from '@angular/core';\n\nimport { YA_SERVICE_TOKEN, ITokenService } from '@yelon/auth';\nimport { CacheService } from '@yelon/cache';\nimport { WINDOW, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\nimport { mergeBisConfig } from '../bis.config';\n\nexport interface UserLink {\n icon: string;\n name: string;\n url: string;\n}\n\n@Component({\n selector: 'yz-header-user',\n template: `\n <div\n class=\"yunzai-default__nav-item d-flex align-items-center px-sm\"\n nz-dropdown\n nzPlacement=\"bottomRight\"\n [nzDropdownMenu]=\"userMenu\"\n >\n <nz-avatar [nzSrc]=\"icon\" nzSize=\"small\" class=\"mr-sm\"></nz-avatar>\n {{ username }}\n </div>\n <nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <div nz-menu class=\"width-sm\">\n <div nz-menu-item *ngFor=\"let m of menus\" (click)=\"to(m.url)\">\n <i nz-icon [nzType]=\"m.icon\" class=\"mr-sm\"></i>\n {{ m.name | i18n }}\n </div>\n <li nz-menu-divider></li>\n <div nz-menu-item (click)=\"logout()\">\n <i nz-icon nzType=\"logout\" class=\"mr-sm\"></i>\n {{ 'menu.account.logout' | i18n }}\n </div>\n </div>\n </nz-dropdown-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderUserComponent implements OnInit {\n private config: YunzaiBusinessConfig;\n\n constructor(\n private injector: Injector,\n private msg: NzMessageService,\n @Inject(YA_SERVICE_TOKEN) private tokenService: ITokenService,\n // @ts-ignore\n private configService: YunzaiConfigService,\n private cacheService: CacheService\n ) {\n this.config = mergeBisConfig(configService);\n }\n\n icon: string = '';\n username: string = '';\n menus: UserLink[] = [];\n\n ngOnInit(): void {\n const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });\n const user = this.cacheService.get('_yz_user', { mode: 'none' });\n this.username = user.realname ? user.realname : '未命名';\n this.icon = user.avatarId\n ? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`\n : `./assets/tmp/img/avatar.jpg`;\n this.menus = projectInfo.profileList;\n }\n\n logout(): void {\n localStorage.clear();\n this.tokenService.clear();\n this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;\n }\n\n to(href: string): void {\n if (href) {\n this.injector.get(WINDOW).open(href);\n } else {\n this.msg.error('该菜单没有配置链接!');\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';\n\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { NzModalService } from 'ng-zorro-antd/modal';\n\n@Component({\n selector: 'yz-header-clear-storage',\n template: `\n <i nz-icon nzType=\"tool\"></i>\n {{ 'menu.clear.local.storage' | i18n }}\n `,\n host: {\n '[class.d-block]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderClearStorageComponent {\n constructor(private modalSrv: NzModalService, private messageSrv: NzMessageService) {}\n\n @HostListener('click')\n _click(): void {\n this.modalSrv.confirm({\n nzTitle: 'Make sure clear all local storage?',\n nzOnOk: () => {\n localStorage.clear();\n this.messageSrv.success('Clear Finished!');\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, HostListener } from '@angular/core';\n\nimport screenfull from 'screenfull';\n\n@Component({\n selector: 'yz-header-fullscreen',\n template: `\n <i nz-icon [nzType]=\"status ? 'fullscreen-exit' : 'fullscreen'\"></i>\n {{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | i18n }}\n `,\n host: {\n '[class.d-block]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class YzHeaderFullScreenComponent {\n status = false;\n\n @HostListener('window:resize')\n _resize(): void {\n this.status = screenfull.isFullscreen;\n }\n\n @HostListener('click')\n _click(): void {\n if (screenfull.isEnabled) {\n screenfull.toggle();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTreeNodeOptions } from 'ng-zorro-antd/tree';\n\nexport interface BaseUserParam {\n realName?: string;\n userCode?: string;\n deptId?: string;\n roleId?: string;\n friendGroupId?: string;\n userTypes?: string;\n buildId?: string;\n floor?: string;\n roomId?: string;\n // FIXME: fix that use personType or peopleType or anything type\n rylb?: string;\n}\n\nexport interface Page<T> {\n pageNum: number;\n pageSize: number;\n pageParam?: T;\n}\n\nexport interface PageRes<T> {\n endRow: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n isFirstPage: boolean;\n isLastPage: boolean;\n list: T[];\n navigateFirstPage: number;\n navigateLastPage: number;\n navigatePages: number;\n navigatepageNums: number[];\n nextPage: number;\n pageNum: number;\n pageSize: number;\n pages: number;\n prePage: number;\n size: number;\n startRow: number;\n total: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContactService {\n constructor(private http: _HttpClient, private cache: CacheService) {}\n\n // TIPS: How to write an override function in typescript\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @returns 可观察部门树\n */\n dept(clas: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean, grade: boolean): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @param gradeID 系部ID\n * @returns 可观察部门树\n */\n dept(clas: boolean, his: boolean, grade: boolean, gradeID: string | null): Observable<NzTreeNodeOptions[]>;\n /**\n * 部门树查询\n *\n * @param clas 包含班级\n * @param his 包含历史班级\n * @param grade 系部\n * @param gradeID 系部ID\n * @returns 可观察部门树\n */\n dept(clas?: boolean, his?: boolean, grade?: boolean, gradeID?: string | null): Observable<NzTreeNodeOptions[]> {\n let baseUrl = `/auth/baseDepartMent/tree?debug=false`;\n\n if (clas) {\n baseUrl += `&includeClass=true`;\n } else {\n baseUrl += `&includeClass=false`;\n }\n\n if (his) {\n baseUrl += `&includeHisClass=true`;\n } else {\n baseUrl += `&includeHisClass=false`;\n }\n\n if (grade) {\n baseUrl += `&deptTypes=2,class`;\n }\n\n if (gradeID) {\n baseUrl += `&gradeId=${gradeID}`;\n }\n\n return this.http.get(baseUrl).pipe(\n map((response: NzSafeAny) => {\n return response.data || [];\n })\n );\n }\n\n page<U, T>(uri: string, page: Page<U>): Observable<PageRes<T>> {\n return this.http.post(`${uri}/queryListForPage`, page);\n }\n\n pageBaseUser(page: Page<BaseUserParam>): Observable<PageRes<NzSafeAny>> {\n return this.page<BaseUserParam, NzSafeAny>('/auth/baseUser', page);\n }\n\n getUserByIds(ids: string[]): Observable<any[]> {\n return this.http\n .post('/auth/baseUser/users', {\n userIds: ids\n })\n .pipe((response: NzSafeAny) => {\n return response.data || [];\n });\n }\n\n /**\n * 查询人员信息\n *\n * @param userIds[] 用户id数组,[\"aaa\",\"bbb\",\"ccc\"]\n */\n getUserByUserIds(userIds: any): Observable<any[]> {\n return this.http\n .post(`/auth/baseUser/users`, {\n userIds: userIds\n })\n .pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 获取角色组角色\n *\n * @param roleGroupCode 角色组code\n */\n getGroupRole(roleGroupCode: string): Observable<NzTreeNodeOptions[]> {\n return this.http\n .post(`/auth/baseRole/findGroupRole`, {\n roleGroupCode: roleGroupCode\n })\n .pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询当前用户好友分组\n */\n getFriendGroup(): Observable<any[]> {\n return this.http.post(`/contact/appcontact/findGroup`, {}).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询年级\n */\n getGrade(): Observable<any[]> {\n return this.http.get(`/auth/gradeYear/queryListForPage`).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 查询人员类别列表\n */\n getRylbs(): Observable<any[]> {\n return this.http.post(`/auth/baseTeacher/queryRylbs`, {}).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n\n /**\n * 获取学生公寓树\n *\n * @param isPower 是否带有权限,默认false\n * @param treeType 树类型 0:宿舍楼 1:宿舍楼+层 2:宿舍楼+层+房间\n */\n getDormTree(isPower: boolean, treeType: number): Observable<any[]> {\n const user = this.cache.get('_yz_user', { mode: 'none' });\n let params = {};\n if (isPower) {\n params = {\n isPower: isPower,\n userId: user.userId,\n treeType: treeType\n };\n } else {\n params = {\n isPower: isPower,\n treeType: treeType\n };\n }\n\n return this.http.post(`/auth/dorm/tree`, params).pipe(\n map((response: NzSafeAny) => {\n return response.data ? response.data : [];\n })\n );\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Optional,\n ViewChild,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { STComponent } from '@yelon/abc/st';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTreeNodeOptions, NzFormatEmitEvent } from 'ng-zorro-antd/tree';\n\nimport { ContactService } from './contact.service';\n\n@Component({\n selector: 'contact',\n templateUrl: './contact.component.html',\n styleUrls: ['./contact.component.less']\n})\nexport class ContactComponent implements OnInit, OnDestroy, AfterViewInit {\n subs: Subscription[] = [];\n\n /**\n * tabset\n */\n @Optional() @Input() nzTabsetSearch: string | null = null;\n @Optional() @Input() nzTabsetLoading: boolean = false;\n\n /**\n * 树展开状态\n */\n @Optional() @Input() nzExpandAll: boolean = true;\n\n /**\n * 部门树和部门查询的一些选项/可传可不传\n */\n @Optional() @Input() nzDepts: NzTreeNodeOptions[] = [];\n private _nzDeptsCopy: NzTreeNodeOptions[] = [];\n @Optional() @Input() nzDeptTreeVirtualHeight: string | null = null;\n @Optional() @Input() nzDeptClass: boolean = true;\n @Optional() @Input() nzDeptClassHistory: boolean = true;\n @Optional() @Input() nzDeptGrade: boolean = false;\n @Optional() @Input() nzDeptGradeID: string | null = null;\n\n /**\n * 角色树\n */\n @Optional() @Input() nzRoles: NzTreeNodeOptions[] = [];\n private _nzRolesCopy: NzTreeNodeOptions[] = [];\n @Optional() @Input() nzRoleTreeVirtualHeight: string | null = null;\n\n /**\n * 好友分组\n */\n @Optional() @Input() nzFriendGroups: NzSafeAny[] = [];\n _nzFriendGroupsCopy: NzSafeAny[] = [];\n\n /**\n * table组件,帮助文档: https://ng.yunzainfo.com/components/st/zh?#API\n */\n @ViewChild('st', { static: false }) st!: STComponent;\n\n /**\n * 联系人\n */\n @Optional() @Input() defaultContacts: string[] = [];\n @Optional() @Input() nzContacts: NzSafeAny[] = [];\n @Optional() @Input() nzContactLoading: boolean = false;\n\n /**\n * 提交和提交按钮\n */\n @Optional() @Input() button: boolean = true;\n @Output() readonly confirmed: EventEmitter<NzSafeAny[]> = new EventEmitter();\n\n constructor(private contact: ContactService, private changeDetectorRef: ChangeDetectorRef) {}\n\n /**\n * 初始化,首先加载部门树和默认选中的人的数据\n */\n ngOnInit(): void {\n this.onTabsetDept();\n this.onContactsInit();\n }\n\n /**\n * 视图初始化完毕后进行table初始化\n */\n ngAfterViewInit(): void {\n this.onTableInit();\n }\n\n /**\n * 初始化默认选中联系人\n */\n onContactsInit(): void {\n if (this.defaultContacts && this.defaultContacts.length > 0) {\n this.nzContactLoading = true;\n this.subs.push(\n this.contact.getUserByUserIds(this.defaultContacts).subscribe(contacts => {\n this.nzContacts = contacts;\n this.nzContactLoading = false;\n this.refresh();\n })\n );\n }\n }\n\n /**\n * table初始化\n */\n onTableInit(): void {\n // 设置表头\n this.st.resetColumns({\n columns: [\n { title: '选择', type: 'checkbox' },\n { title: '序号', type: 'no' },\n { title: '姓名', index: 'realName' },\n { title: '学号/工号', index: 'userCode' },\n { title: '部门', index: 'dept.deptName' }\n ]\n });\n // 订阅table点击checkbox事件变化\n this.subs.push(\n this.st.change.subscribe(e => {\n if (e.type === 'checkbox') {\n // 点击checkbox新增联系人\n const contactIds = this.nzContacts.map(c => c.userId);\n this.nzContacts = this.nzContacts.concat(e.checkbox!.filter(c => !contactIds.includes(c.userId)));\n // 取消checkbox取消联系人\n const cancelIds = this.st.list.filter(d => !d.checked).map(d => d.userId);\n this.nzContacts = this.nzContacts.filter(d => !cancelIds.includes(d.userId));\n }\n })\n );\n }\n\n /**\n * tabset进入加载状态\n */\n onTabsetLoadStart(): void {\n this.nzTabsetLoading = true;\n }\n\n /**\n * tabset取消加载状态\n */\n onTabsetLoadEnd(): void {\n this.nzTabsetLoading = false;\n }\n\n /**\n * tabset搜索框清除\n */\n onTabsetSearchClean(): void {\n this.nzDepts = this._nzDeptsCopy;\n this.nzRoles = this._nzRolesCopy;\n this.nzFriendGroups = this._nzFriendGroupsCopy;\n this.nzTabsetSearch = null;\n }\n\n /**\n * tabset搜索框输入\n *\n * @param type 类型\n * @param value 值\n */\n onTabsetSearchChange(type: 'dept' | 'role' | 'friendGroup', value: string): void {\n this.onTabsetLoadStart();\n if (!value || value === '') {\n this.nzDepts = this._nzDeptsCopy;\n this.nzRoles = this._nzRolesCopy;\n this.nzFriendGroups = this._nzFriendGroupsCopy;\n } else {\n const trees: NzTreeNodeOptions[] = [];\n if (type === 'dept') {\n this.searchTree(value, this._nzDeptsCopy, trees);\n this.nzDepts = trees;\n }\n if (type === 'role') {\n this.searchTree(value, this._nzRolesCopy, trees);\n this.nzRoles = trees;\n }\n if (type === 'friendGroup') {\n this.nzFriendGroups = this._nzFriendGroupsCopy.filter(f => {\n return !f.name.indexOf(value);\n });\n }\n }\n this.onTabsetLoadEnd();\n this.refresh();\n }\n\n /**\n * tabset切换到部门\n */\n onTabsetDept(): void {\n this.onTabsetSearchClean();\n if (!this.nzDepts || this.nzDepts.length === 0) {\n this.onTabsetDeptFlush();\n }\n }\n\n /**\n * tabset切换到角色\n */\n onTabsetRole(): void {\n this.onTabsetSearchClean();\n if (!this.nzRoles || this.nzRoles.length === 0) {\n this.onTabsetRoleFlush(null as NzSafeAny);\n }\n }\n\n /**\n * tabset切换到好友分组\n */\n onTabsetFriendGroup(): void {\n this.onTabsetSearchClean();\n if (!this.nzFriendGroups || this.nzFriendGroups.length === 0) {\n this.onTabsetFriendGroupFlush();\n }\n }\n\n /**\n * 获取部门树\n */\n onTabsetDeptFlush(): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact\n .dept(this.nzDeptClass, this.nzDeptClassHistory, this.nzDeptGrade, this.nzDeptGradeID)\n .subscribe((trees: NzTreeNodeOptions[]) => {\n this.expandTree(trees);\n this.nzDepts = trees;\n this._nzDeptsCopy = trees;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n // 获取角色树\n onTabsetRoleFlush(groupRoleCode: string): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact.getGroupRole(groupRoleCode).subscribe((roles: NzTreeNodeOptions[]) => {\n this.expandTree(roles);\n this.nzRoles = roles;\n this._nzRolesCopy = roles;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n // 获取好友分组列表\n onTabsetFriendGroupFlush(): void {\n this.onTabsetLoadStart();\n this.subs.push(\n this.contact.getFriendGroup().subscribe((group: NzSafeAny[]) => {\n this.nzFriendGroups = group;\n this._nzFriendGroupsCopy = group;\n this.onTabsetLoadEnd();\n this.refresh();\n })\n );\n }\n\n /**\n * 部门树点击\n *\n * @param e 节点\n */\n onDeptClick(e: NzFormatEmitEvent): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n deptId: e.keys?.pop()\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 角色树点击\n *\n * @param e 节点\n */\n onRoleClick(e: NzFormatEmitEvent): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n roleId: e.keys?.pop()\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 好友分组点击\n *\n * @param e 分组\n */\n onFriendGroupClick(e: NzSafeAny): void {\n // 构造分页请求,直接传入stTable组件,剩下的所有交给组件自己完成\n this.st.data = '/auth/baseUser/queryListForPage';\n this.st.req = {\n allInBody: true,\n method: 'POST',\n type: 'page',\n reName: {\n pi: 'pageNum',\n ps: 'pageSize'\n },\n body: {\n pageParam: {\n friendGroupId: e.id\n }\n }\n };\n // table数据预处理\n this.st.res = {\n process: data => {\n this.onTableCheck(data);\n return data;\n }\n };\n // 加载第一页\n this.st.load(1);\n }\n\n /**\n * 点击右侧联系人进行删除\n *\n * @param c 点击的联系人\n */\n onContactRemove(c: NzSafeAny): void {\n this.nzContacts = this.nzContacts.filter(contact => {\n return contact.userId != c.userId;\n });\n this.st.reload();\n }\n\n /**\n * 预处理table当前页数据,和nzContat对比,确定checkbox状态\n *\n * @param data 预处理数据\n */\n onTableCheck(data: NzSafeAny[]): void {\n const ids = this.nzContacts.map(u => u.userId);\n data.forEach(d => {\n if (ids.includes(d.userId)) {\n d.checked = true;\n } else {\n d.checked = false;\n }\n });\n }\n\n /**\n * 递归树寻找name相同节点\n *\n * @param name 名称\n * @param trees 需要递归的树\n * @param list 搜索结果\n */\n searchTree(name: string, trees: NzTreeNodeOptions[], list: NzTreeNodeOptions[]): void {\n if (trees && trees.length && trees.length > 0) {\n trees.forEach((tree: NzTreeNodeOptions) => {\n if (tree.title.indexOf(name) != -1) {\n list.push(tree);\n }\n if (tree.children) {\n this.searchTree(name, tree.children, list);\n }\n });\n }\n }\n\n /**\n * 递归树展开所有有子节点的节点\n *\n * @param trees 需要展开的树\n */\n expandTree(trees: NzTreeNodeOptions[]): void {\n if (trees && trees.length && trees.length > 0) {\n trees.forEach(tree => {\n if (!tree.children || tree.children.length === 0) {\n tree.expanded = false;\n tree.isLeaf = true;\n }\n if (tree.children) {\n tree.expanded = this.nzExpandAll;\n tree.isLeaf = false;\n this.expandTree(tree.children);\n }\n });\n }\n }\n\n /**\n * 刷新当前页面\n */\n refresh(): void {\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * 确认按钮output数据\n */\n confirm(): void {\n this.confirmed.next(this.nzContacts);\n }\n\n /**\n * 销毁函数\n */\n ngOnDestroy(): void {\n this.nzDepts = [];\n this.nzRoles = [];\n this.nzContacts = [];\n this.subs.forEach(s => s.unsubscribe());\n }\n}\n","<nz-row [nzGutter]=\"16\">\n <nz-col [nzXs]=\"24\" [nzSm]=\"24\" [nzMd]=\"24\" [nzLg]=\"8\" [nzXl]=\"6\" [nzXXl]=\"6\">\n <nz-tabset nzCentered>\n <nz-tab nzTitle=\"部门\" (nzSelect)=\"onTabsetDept()\">\n <div sg-container=\"2\">\n <sg col=\"1\" class=\"nz-tabset-sg\">\n <nz-input-group class=\"nz-tabset-input\" [nzSuffix]=\"searchInputTpl\">\n <input\n nz-input\n [(ngModel)]=\"nzTabsetSearch\"\n (ngModelChange)=\"onTabsetSearchChange('dept', $event)\"\n type=\"text\"\n placeholder=\"请输入部门名称\"\n />\n </nz-input-group>\n </sg>\n <sg col=\"1\">\n <nz-spin [nzSpinning]=\"nzTabsetLoading\">\n <nz-tree\n class=\"nz-tabset-content\"\n (nzClick)=\"onDeptClick($event)\"\n [nzBlockNode]=\"true\"\n [nzShowLine]=\"true\"\n [nzHideUnMatched]=\"true\"\n [nzVirtualHeight]=\"nzDeptTreeVirtualHeight\"\n [nzData]=\"nzDepts\"\n ></nz-tree>\n </nz-spin>\n </sg>\n </div>\n </nz-tab>\n <nz-tab nzTitle=\"角色\" (nzSelect)=\"onTabsetRole()\">\n <div sg-container=\"2\">\n <sg col=\"1\" class=\"nz-tabset-sg\">\n <nz-input-group class=\"nz-tabset-input\" [nzSuffix]=\"searchInputTpl\">\n <input\n nz-input\n [(ngModel)]=\"nzTabsetSearch\"\n (ngModelChange)=\"onTabsetSearchChange('role', $event)\"\n type=\"text\"\n placeholder=\"请输入角色名称\"\n />\n </nz-input-group>\n </sg>\n <sg col=\"1\">\n <nz-spin [nzSpinning]=\"nzTabsetLoading\">\n <nz-tree\n class=\"nz-tabset-content\"\n (nzClick)=\"onRoleClick($event)\"\n [nzBlockNode]=\"true\"\n [nzShowLine]=\"true\"\n [nzHideUnMatched]=\"true\"\n [nzVirtualHeight]=\"nzRoleTreeVirtualHeight\"\n [nzData]=\"nzRoles\"\n ></nz-tree>\n </nz-spin>\n </sg>\n </div>\n </nz-tab>\n <nz-tab nzTitle=\"好友\" (nzSelect)=\"onTabsetFriendGroup()\">\n <div sg-container=\"2\">\n <sg col=\"1\" class=\"nz-tabset-sg\">\n <nz-input-group class=\"nz-tabset-input\" [nzSuffix]=\"searchInputTpl\">\n <input\n nz-input\n [(ngModel)]=\"nzTabsetSearch\"\n (ngModelChange)=\"onTabsetSearchChange('friendGroup', $event)\"\n type=\"text\"\n placeholder=\"请输入好友名称\"\n />\n </nz-input-group>\n </sg>\n <sg col=\"1\">\n <nz-spin [nzSpinning]=\"nzTabsetLoading\">\n <nz-list class=\"nz-tabset-content\" nzItemLayout=\"horizontal\" [nzSplit]=\"false\" nzSize=\"small\">\n <nz-list-item\n class=\"nz-tabset-content-item\"\n *ngFor=\"let group of nzFriendGroups\"\n (click)=\"onFriendGroupClick(group)\"\n >\n <nz-list-item-meta>\n <nz-list-item-meta-title>\n {{ group.name }}\n </nz-list-item-meta-title>\n </nz-list-item-meta>\n </nz-list-item>\n </nz-list>\n </nz-spin>\n </sg>\n </div>\n </nz-tab>\n </nz-tabset>\n </nz-col>\n\n <nz-col [nzXs]=\"24\" [nzSm]=\"24\" [nzMd]=\"24\" [nzLg]=\"16\" [nzXl]=\"13\" [nzXXl]=\"13\">\n <st #st responsiveHideHeaderFooter></st>\n </nz-col>\n\n <nz-col [nzXs]=\"24\" [nzSm]=\"24\" [nzMd]=\"24\" [nzLg]=\"24\" [nzXl]=\"5\" [nzXXl]=\"5\">\n <nz-spin [nzSpinning]=\"nzContactLoading\">\n <nz-list nzItemLayout=\"horizontal\" [nzSplit]=\"false\" nzSize=\"small\">\n <nz-list-item\n class=\"nz-tabset-content-item\"\n *ngFor=\"let contact of nzContacts\"\n (click)=\"onContactRemove(contact)\"\n >\n <nz-list-item-meta>\n <nz-list-item-meta-title>\n {{ contact.realName }}\n </nz-list-item-meta-title>\n </nz-list-item-meta>\n </nz-list-item>\n </nz-list>\n </nz-spin>\n </nz-col>\n</nz-row>\n\n<nz-row *ngIf=\"button\">\n <nz-col [nzSpan]=\"4\" [nzOffset]=\"20\">\n <button nz-button nzType=\"primary\" (click)=\"confirm()\">确定</button>\n </nz-col>\n</nz-row>\n\n<ng-template #searchInputTpl>\n <i nz-icon nzType=\"close\" nzTheme=\"outline\" *ngIf=\"nzTabsetSearch\" (click)=\"onTabsetSearchClean()\"></i>\n <i nz-icon nzType=\"search\" nzTheme=\"outline\" *ngIf=\"!nzTabsetSearch\"></i>\n</ng-template>\n","import { log, YunzaiConfigService, YunzaiStompConfig } from '@yelon/util';\n\nexport const STOMP_DEFAULT_CONFIG: YunzaiStompConfig = {\n connectHeaders: {\n login: 'guest',\n passcode: 'guest'\n },\n brokerURL: '/websocket/ws/',\n heartbeatIncoming: 1000 * 60,\n heartbeatOutgoing: 1000 * 60,\n reconnectDelay: 30000000,\n debug: msg => {\n log(msg);\n }\n};\n\nexport function mergeStompConfig(srv: YunzaiConfigService): YunzaiStompConfig {\n return srv.merge('stomp', STOMP_DEFAULT_CONFIG)!;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Injector, isDevMode } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { RxStomp } from '@stomp/rx-stomp';\nimport { IRxStompPublishParams } from '@stomp/rx-stomp/esm6/i-rx-stomp-publish-params';\nimport { IMessage, StompHeaders } from '@stomp/stompjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { log, WINDOW, YunzaiBusinessConfig, YunzaiConfigService, YunzaiStompConfig } from '@yelon/util';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nimport { mergeBisConfig } from './bis.config';\nimport { mergeStompConfig } from './stomp.config';\n\nexport interface StompMessage {\n title?: string;\n content?: string;\n href?: string;\n type?: string;\n}\n\nexport interface IconStompMessage extends StompMessage {\n icon?: string;\n}\n\nexport interface UserStompMessage extends StompMessage {\n useruri?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class YzStompService {\n config: YunzaiStompConfig | null = null;\n bisConfig: YunzaiBusinessConfig | null = null;\n rxStomp: RxStomp | null = null;\n user: NzSafeAny;\n subs: Subscription[] = [];\n\n constructor(\n private csr: YunzaiConfigService,\n private cache: CacheService,\n private injector: Injector,\n private notification: NzNotificationService\n ) {\n if (!this.user) {\n this.user = this.cache.get('_yz_user', { mode: 'none' });\n }\n if (!this.config) {\n this.config = mergeStompConfig(this.csr);\n }\n if (!this.bisConfig) {\n this.bisConfig = mergeBisConfig(csr);\n }\n if (!this.rxStomp) {\n this.rxStomp = new RxStomp();\n if (isDevMode()) {\n log('yz.stomp.service: is dev mode');\n log('yz.stomp.service: ', `config is ${JSON.stringify(this.config)}`);\n this.rxStomp.configure(this.config);\n return;\n }\n const { location } = this.injector.get(DOCUMENT);\n const { protocol, host } = location;\n log('yz.stomp.service: ', `protocol is ${protocol},host is ${host}`);\n if (protocol.includes('http') && !protocol.includes('https')) {\n this.config.brokerURL = `ws://${host}${this.config.brokerURL}`;\n }\n if (protocol.includes('https')) {\n this.config.brokerURL = `wss://${host}${this.config.brokerURL}`;\n }\n log('yz.stomp.service: ', `config is ${this.config}`);\n this.rxStomp.configure(this.config);\n }\n }\n\n listen(): void {\n this.subs.push(\n this.rxStomp!.watch(`/topic/layout_${this.user.username}`).subscribe(message => {\n this.createNotification(JSON.parse(message.body));\n })\n );\n this.subs.push(\n this.rxStomp!.watch(`/topic/layout_xx_${this.user.username}`).subscribe((message: any) => {\n this.logoutNotification(JSON.parse(message.body));\n })\n );\n this.rxStomp!.activate();\n }\n\n createNotification(message: StompMessage): void {\n this.notification.create(message.type!, message.title!, `<a href=${message.href}>${message.content}</a>`);\n }\n\n logoutNotification(message: StompMessage): void {\n this.notification.create(message.type!, message.title!, `${message.content},剩余时间5秒`);\n setTimeout(() => {\n this.cache.clear();\n localStorage.clear();\n this.injector.get(WINDOW).location.href = `${this.bisConfig!.baseUrl}/cas-proxy/app/logout`;\n }, 5000);\n }\n\n unListen(): void {\n this.subs.forEach(s => s.unsubscribe());\n this.rxStomp!.deactivate().then();\n }\n\n publish(parameters: IRxStompPublishParams): void {\n this.rxStomp!.publish(parameters);\n }\n\n watch(destination: string, headers?: StompHeaders): Observable<IMessage> {\n return this.rxStomp!.watch(destination, headers);\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { CacheService } from '@yelon/cache';\nimport { LayoutDefaultOptions, LayoutService } from '@yelon/theme/layout-default';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { YzStompService } from './yz.stomp.service';\n\n@Component({\n selector: 'yz-layout-basic',\n template: `\n <layout-default [options]=\"options\" [asideUser]=\"asideUserTpl\" [content]=\"showReuseTab ? contentTpl : noneTpl\">\n <layout-default-header-item direction=\"left\">\n <yz-header-application></yz-header-application>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <yz-header-notify></yz-header-notify>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <yz-header-theme-btn></yz-header-theme-btn>\n </layout-default-header-item>\n\n <layout-default-header-item direction=\"right\" hidden=\"mobile\">\n <div\n layout-default-header-item-trigger\n nz-dropdown\n [nzDropdownMenu]=\"settingsMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n >\n <i nz-icon nzType=\"setting\"></i>\n </div>\n <nz-dropdown-menu #settingsMenu=\"nzDropdownMenu\">\n <div nz-menu style=\"width: 200px;\">\n <div nz-menu-item>\n <yz-header-fullscreen></yz-header-fullscreen>\n </div>\n <div nz-menu-item>\n <yz-header-clear-storage></yz-header-clear-storage>\n </div>\n <div nz-menu-item>\n <yz-header-i18n></yz-header-i18n>\n </div>\n </div>\n </nz-dropdown-menu>\n </layout-default-header-item>\n <layout-default-header-item direction=\"right\">\n <yz-header-user></yz-header-user>\n </layout-default-header-item>\n <ng-template #asideUserTpl>\n <div nz-dropdown nzTrigger=\"click\" [nzDropdownMenu]=\"userMenu\" class=\"yunzai-default__aside-user\">\n <nz-avatar class=\"yunzai-default__aside-user-avatar\" [nzSrc]=\"icon\"></nz-avatar>\n <div class=\"yunzai-default__aside-user-info\">\n <strong>{{ text }}</strong>\n <p class=\"mb0\">{{ intro }}</p>\n </div>\n </div>\n <nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li nz-menu-item routerLink=\"/\">{{ 'menu.backtohome' | i18n }}</li>\n </ul>\n </nz-dropdown-menu>\n </ng-template>\n <ng-template #contentTpl>\n <reuse-tab #reuseTab [ngStyle]=\"reuseStyleSheet\"></reuse-tab>\n <router-outlet (activate)=\"reuseTab.activate($event)\"></router-outlet>\n </ng-template>\n <ng-template #noneTpl>\n <router-outlet></router-outlet>\n </ng-template>\n </layout-default>\n `\n})\nexport class YzLayoutBasicComponent implements OnInit, OnDestroy {\n options: LayoutDefaultOptions = {\n logoExpanded: `./assets/logo-full.svg`,\n logoCollapsed: `./assets/logo.svg`\n };\n\n intro: string = '';\n text: string = '';\n icon: string = '';\n\n showReuseTab: boolean = true;\n showHeader: boolean = true;\n showSider: boolean = true;\n\n get reuseStyleSheet(): NzSafeAny {\n let cascadingStyleSheet = {};\n if (!this.showHeader) {\n cascadingStyleSheet = {\n ...cascadingStyleSheet,\n top: 0\n };\n }\n if (!this.showSider) {\n cascadingStyleSheet = {\n ...cascadingStyleSheet,\n left: '24px'\n };\n }\n return cascadingStyleSheet;\n }\n\n constructor(\n private cacheService: CacheService,\n private yzStompService: YzStompService,\n private layoutService: LayoutService\n ) {}\n\n ngOnInit(): void {\n const current: NzSafeAny = this.cacheService.get('_yz_current', { mode: 'none' });\n const project: NzSafeAny = this.cacheService.get('_yz_project_info', { mode: 'none' });\n this.text = current.text ? current.text : '应用名称';\n this.intro = current.intro ? current.intro : '应用描述';\n this.icon = current.icon ? current.icon : `./assets/tmp/img/avatar.jpg`;\n this.options.logoExpanded = project.maxLogoUrl ? project.maxLogoUrl : `./assets/logo-full.svg`;\n this.options.logoCollapsed = project.miniLogoUrl ? project.miniLogoUrl : `./assets/logo.svg`;\n this.yzStompService.listen();\n this.layoutService.reuseTab.asObservable().subscribe(show => (this.showReuseTab = show));\n this.layoutService.header.asObservable().subscribe(show => (this.showHeader = show));\n this.layoutService.sidebar.asObservable().subscribe(show => (this.showSider = show));\n }\n\n ngOnDestroy(): void {\n this.yzStompService.unListen();\n }\n}\n","/*\n * @Author: cui <devcui@outlook.com>\n * @Editor: microsoft vscode\n * @Date: 2021-11-27 11:30:50\n * @LastEditTime: 2021-11-27 14:38:46\n * @LastEditors: cui <devcui@outlook.com>\n * @Description: empty description\n * @FilePath: \\yelon\\packages\\bis\\layout\\layout.module.ts\n * LICENSE HERE\n */\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { YzSharedModule } from '@yelon/bis/shared';\nimport { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';\n\nimport { ContactComponent } from './contact/contact.component';\nimport {\n YzHeaderApplicationComponent,\n YzHeaderNotifyComponent,\n YzHeaderThemBtnComponent,\n YzHeaderUserComponent,\n YzHeaderClearStorageComponent,\n YzHeaderFullScreenComponent,\n YzHeaderI18NComponent\n} from './widgets';\nimport { YzLayoutBasicComponent } from './yz.basic.component';\nconst COMPONENTS = [\n ContactComponent,\n YzLayoutBasicComponent,\n YzHeaderApplicationComponent,\n YzHeaderNotifyComponent,\n YzHeaderThemBtnComponent,\n YzHeaderUserComponent,\n YzHeaderFullScreenComponent,\n YzHeaderClearStorageComponent,\n YzHeaderI18NComponent\n];\n\n@NgModule({\n imports: [HttpClientModule, CommonModule, FormsModule, RouterModule, ReactiveFormsModule, YzSharedModule],\n providers: [\n {\n provide: YUNZAI_THEME_BTN_KEYS,\n useValue: 'site-theme'\n }\n ],\n declarations: [...COMPONENTS],\n exports: [...COMPONENTS]\n})\nexport class YunzaiLayoutModule {}\n","import { Injectable, Injector } from '@angular/core';\nimport { forkJoin, Observable, of, map, mergeAll, mergeMap } from 'rxjs';\n\nimport { ITokenModel, ITokenService, mergeConfig as mergeAuthConfig, YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { CacheService } from '@yelon/cache';\nimport { _HttpClient } from '@yelon/theme';\nimport { WINDOW, YunzaiAuthConfig, YunzaiBusinessConfig } from '@yelon/util';\nimport { YunzaiConfigService } from '@yelon/util/config';\nimport { log } from '@yelon/util/other';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { mergeBisConfig } from './bis.config';\n\n@Injectable({ providedIn: 'root' })\nexport class YzAuthService {\n protected option: YunzaiAuthConfig;\n protected bis: YunzaiBusinessConfig;\n\n constructor(private injector: Injector) {\n this.option = mergeAuthConfig(this.csr);\n this.bis = mergeBisConfig(this.csr);\n }\n\n private get csr(): YunzaiConfigService {\n return this.injector.get(YunzaiConfigService);\n }\n\n private get tokenService(): ITokenService {\n return this.injector.get(YA_SERVICE_TOKEN);\n }\n\n private get httpClient(): _HttpClient {\n return this.injector.get(_HttpClient);\n }\n\n private get cacheService(): CacheService {\n return this.injector.get(CacheService);\n }\n\n askToken(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'askToken');\n if (this.tokenService.get()?.token) {\n return of(this.tokenService.get()!);\n } else {\n if (this.bis.loginForm) {\n return this.fetchTokenByUP();\n } else {\n return this.fetchTokenByCas();\n }\n }\n }\n\n fetchTokenByUP(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'fetchTokenByUP');\n return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.bis.loginForm).pipe(\n map((response: NzSafeAny) => {\n const { access_token, expires_in, refresh_token, scope, token_type } = response;\n return {\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n };\n })\n );\n }\n\n fetchTokenByCas(): Observable<ITokenModel> {\n log('yz.auth.service: ', 'fetchTokenByCas');\n const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);\n return this.httpClient\n .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)\n .pipe(\n map((response: NzSafeAny) => {\n switch (response.errcode) {\n case 2000:\n const { access_token, expires_in, refresh_token, scope, token_type } = response.data;\n return {\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n } as ITokenModel;\n case 2001:\n this.injector.get(WINDOW).location.href = response.msg;\n throw Error(\"Cookie Error: Can't find Cas Cookie,So jump to login!\");\n default:\n if (response.data) {\n console.error(response.data);\n throw Error(response.data);\n } else if (response.msg) {\n console.error(response.msg);\n throw Error(response.msg);\n } else {\n console.error('cas unknown error');\n throw Error('Unknown Error: Cas auth exception!');\n }\n }\n })\n );\n }\n\n login(): Observable<void> {\n log('yz.auth.service: ', 'login white login form->', this.bis.loginForm);\n return this.askToken().pipe(\n mergeMap(token => {\n log('yz.auth.service: get token->', token);\n this.csr.set('auth', {\n token_send_key: 'Authorization',\n token_send_template: `${token.tokenType} \\${token}`,\n token_send_place: 'header'\n });\n log('yz.auth.service: ', 'set token');\n this.tokenService.set(token);\n return this.cacheInit();\n }),\n mergeAll()\n );\n }\n\n cacheInit(): Observable<void[]> {\n log('yz.auth.service: ', 'cacheInit');\n const user = this.cacheService.get('_yz_user', { mode: 'none' });\n const header = this.cacheService.get('_yz_header', { mode: 'none' });\n const project = this.cacheService.get('_yz_project_info', { mode: 'none' });\n return forkJoin(of(user), of(header), of(project)).pipe(\n mergeMap(([u, h, p]) => {\n let list = [];\n // user cache\n if (!u) {\n log('yz.auth.service: ', 'fetch user cache');\n list.push(\n this.httpClient.get(`/auth/user`).pipe(\n map((user: NzSafeAny) => {\n this.cacheService.set('_yz_user', user.principal);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'user recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n // header cache\n if (!h) {\n log('yz.auth.service: ', 'fetch header cache');\n list.push(\n this.httpClient.get(`/auth/allheader/v2`).pipe(\n map((header: NzSafeAny) => {\n this.cacheService.set('_yz_header', header.data);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'header recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n // project cache\n if (!p) {\n log('yz.auth.service: ', 'fetch project cache');\n list.push(\n this.httpClient.get(`/app-manager/project/info`).pipe(\n map((info: NzSafeAny) => {\n this.cacheService.set('_yz_project_info', info.data);\n })\n )\n );\n } else {\n log('yz.auth.service: ', 'project recache');\n list.push(of<NzSafeAny>(() => {}));\n }\n return forkJoin(list);\n })\n );\n }\n}\n","import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpHeaders,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n HttpResponseBase\n} from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Observable, of, throwError, catchError, filter, mergeMap, switchMap, take } from 'rxjs';\n\nimport {YA_SERVICE_TOKEN, ITokenService, ALLOW_ANONYMOUS} from '@yelon/auth';\nimport { YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';\nimport { WINDOW } from '@yelon/util';\nimport { YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util/config';\nimport { log } from '@yelon/util/other';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nimport { mergeBisConfig } from './bis.config';\n\nconst CODEMESSAGE: { [key: number]: string } = {\n 200: '服务器成功返回请求的数据。',\n 201: '新建或修改数据成功。',\n 202: '一个请求已经进入后台排队(异步任务)。',\n 204: '删除数据成功。',\n 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',\n 401: '用户没有权限(令牌、用户名、密码错误)。',\n 403: '用户得到授权,但是访问是被禁止的。',\n 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',\n 406: '请求的格式不可得。',\n 410: '请求的资源被永久删除,且不会再得到的。',\n 422: '当创建一个对象时,发生一个验证错误。',\n 500: '服务器发生错误,请检查服务器。',\n 502: '网关错误。',\n 503: '服务不可用,服务器暂时过载或维护。',\n 504: '网关超时。'\n};\n\n/**\n * 默认HTTP拦截器,其注册细节见 `app.module.ts`\n */\n@Injectable()\nexport class YzDefaultInterceptor implements HttpInterceptor {\n private jump = false;\n private refreshToking = false;\n private refreshToken$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n private get notification(): NzNotificationService {\n return this.injector.get(NzNotificationService);\n }\n\n private get tokenSrv(): ITokenService {\n return this.injector.get(YA_SERVICE_TOKEN);\n }\n\n private get http(): _HttpClient {\n return this.injector.get(_HttpClient);\n }\n\n private get config(): YunzaiBusinessConfig {\n return mergeBisConfig(this.injector.get(YunzaiConfigService));\n }\n\n private goTo(url: string): void {\n setTimeout(() => this.injector.get(Router).navigateByUrl(url));\n }\n\n constructor(private injector: Injector) {\n if (this.config.refreshTokenType === 'auth-refresh') {\n console.error(\"can't use auth-refresh, please change yz.default.interceptor to default.interceptor!\");\n }\n }\n\n private checkStatus(ev: HttpResponseBase): void {\n if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {\n return;\n }\n\n if (ev instanceof HttpErrorResponse && (ev.error.message || ev.error.errorMessage)) {\n if (ev.error.errorMessage) {\n this.notification.error(`发生了一些错误 `, ev.error.errorMessage);\n } else {\n this.notification.error(`发生了一些错误 `, ev.error.message);\n }\n return;\n }\n\n if (ev instanceof HttpResponse && ev.body.errorMessage) {\n this.notification.error(`发生了一些错误 `, ev.body.errorMessage);\n return;\n }\n const errortext = CODEMESSAGE[ev.status] || ev.statusText;\n this.notification.error(`请求错误 ${ev.status}: ${ev.url}`, errortext);\n }\n\n private ToLogin() {\n this.notification.error(`未登录或登录状态已过期,5秒后将跳转到登录页面。`, ``);\n setTimeout(() => {\n localStorage.clear();\n this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;\n }, 5000);\n }\n\n private reAttachToken(req: HttpRequest<any>): HttpRequest<any> {\n const token = this.tokenSrv.get()?.token;\n return req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n private refreshTokenRequest(): Observable<any> {\n const model = this.tokenSrv.get();\n const form = new FormData();\n form.set('refresh_token', model?.refreshToken);\n log('yz.default.interceptor: use the refresh token to request a new token', model?.refreshToken);\n return this.http.post(`/auth/user/token/refresh?_allow_anonymous=true`, form);\n }\n\n private tryRefreshToken(ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandler): Observable<any> {\n // 连刷新Token的请求都错了,那就是真错了\n if (['/auth/oauth/token'].some(url => req.url.includes(url))) {\n this.ToLogin();\n return throwError(ev);\n }\n\n // 正在刷新token,所有其他请求排队\n if (this.refreshToking) {\n return this.refreshToken$.pipe(\n filter(v => !!v),\n take(1),\n switchMap(() => next.handle(this.reAttachToken(req)))\n );\n }\n\n //尝试调用刷新 Token\n this.refreshToking = true;\n this.refreshToken$.next(null);\n\n // 处理Token\n return this.refreshTokenRequest().pipe(\n switchMap(res => {\n log('yz.default.interceptor: refresh token accessed -> ', res);\n // 重新保存新 token\n const { access_token, expires_in, refresh_token, scope, token_type } = res;\n this.tokenSrv.set({\n token: access_token,\n expired: expires_in,\n refreshToken: refresh_token,\n tokenType: token_type,\n scope\n });\n // 通知后续请求继续执行\n this.refreshToking = false;\n this.refreshToken$.next(res);\n // 重新发起请求\n return next.handle(this.reAttachToken(req));\n }),\n catchError(err => {\n this.refreshToking = false;\n this.ToLogin();\n return throwError(err);\n })\n );\n }\n\n private getAdditionalHeaders(headers?: HttpHeaders): { [name: string]: string } {\n const res: { [name: string]: string } = {};\n const lang = this.injector.get(YUNZAI_I18N_TOKEN).currentLang;\n if (!headers?.has('Accept-Language') && lang) {\n res['Accept-Language'] = lang;\n }\n return res;\n }\n\n private handleData(ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandler): Observable<any> {\n this.checkStatus(ev);\n switch (ev.status) {\n case 200:\n return of(ev);\n case 401:\n if (this.config.refreshTokenEnabled && this.config.refreshTokenType === 're-request') {\n return this.tryRefreshToken(ev, req, next);\n }\n this.ToLogin();\n break;\n case 403:\n case 404:\n case 500:\n if (this.jump) {\n this.goTo(`/exception/${ev.status}`);\n }\n break;\n default:\n if (ev instanceof HttpErrorResponse) {\n console.warn(\n '未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起,请参考 https://ng.yunzainfo.com/docs/server 解决跨域问题',\n ev\n );\n }\n break;\n }\n if (ev instanceof HttpErrorResponse) {\n return throwError(ev);\n } else {\n return of(ev);\n }\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (req.context.get(ALLOW_ANONYMOUS)) return next.handle(req);\n log('yz.default.interceptor.ts: ', 'request ', req);\n // 统一加前缀\n let url = req.url;\n if (!url.startsWith('https://') && !url.startsWith('http://')) {\n url = this.config.baseUrl + url;\n }\n if (url.includes('.json') && url.includes('assets')) {\n url = req.url;\n }\n // 加入语言头\n const newReq = req.clone({ url, setHeaders: this.getAdditionalHeaders(req.headers) });\n return next.handle(newReq).pipe(\n mergeMap(ev => {\n // 允许统一对请求错误处理\n if (ev instanceof HttpResponseBase) {\n return this.handleData(ev, newReq, next);\n }\n // 若一切都正常,则后续操作\n return of(ev);\n }),\n catchError((err: HttpErrorResponse) => this.handleData(err, newReq, next))\n );\n }\n}\n","import { APP_INITIALIZER, Inject, Injectable } from '@angular/core';\nimport { Observable, of, mergeMap } from 'rxjs';\n\nimport { ACLService } from '@yelon/acl';\nimport { ICONS } from '@yelon/bis/shared';\nimport { CacheService } from '@yelon/cache';\nimport { Menu, MenuService, SettingsService, TitleService, User, YUNZAI_I18N_TOKEN } from '@yelon/theme';\nimport { deepCopy, log, WINDOW, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzIconService } from 'ng-zorro-antd/icon';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';\nimport { YzAuthService } from './yz.auth.service';\nimport { YzI18NService } from './yz.i18n.service';\n\nexport function mapYzSideToYelonMenu(menus: Menu[]): void {\n menus.forEach(menu => {\n menu.badgeDot = menu.badge_dot || null;\n menu.badgeStatus = menu.badge_status || null;\n menu.shortcutRoot = menu.shortcut_root || null;\n menu.reuse = true;\n if (menu.children) {\n mapYzSideToYelonMenu(menu.children);\n }\n });\n}\n\nexport function generateAbility(menus: Menu[], abilities: string[], prefix: string): void {\n menus.forEach(menu => {\n if (menu.link) {\n prefix += menu.link;\n } else {\n prefix += '';\n }\n if (menu.menuAuths) {\n menu.menuAuths.forEach((a: string) => {\n abilities.push(`${prefix}:${a}`);\n abilities.push(a);\n });\n }\n\n if (menu.children) {\n generateAbility(menu.children, abilities, prefix);\n }\n });\n}\n\n@Injectable()\nexport class YzStartupService {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n\n constructor(\n iconSrv: NzIconService,\n private menuService: MenuService,\n @Inject(YUNZAI_I18N_TOKEN) private i18n: YzI18NService,\n @Inject(WINDOW) private win: NzSafeAny,\n private settingService: SettingsService,\n private aclService: ACLService,\n private titleService: TitleService,\n private yzAuthService: YzAuthService,\n private cacheService: CacheService,\n private configService: YunzaiConfigService\n ) {\n this.bis = mergeBisConfig(this.configService);\n iconSrv.addIcon(...ICONS);\n }\n\n load(): Observable<void> {\n log('startup.service: ', 'load');\n const defaultLang = this.i18n.defaultLang;\n return this.i18n.loadLangData(defaultLang).pipe(\n mergeMap(langData => {\n log('startup.service: ', 'set i18n, defaultLang->', defaultLang, ' langData->', langData);\n this.i18n.use(defaultLang, langData);\n return of(null);\n }),\n mergeMap(() => {\n return this.yzAuthService.login();\n }),\n mergeMap(v => {\n // preloader finish\n this.systemInit();\n log('startup.service: preloader finish');\n if (this.win && this.win.appBootstrap) {\n this.win.appBootstrap();\n }\n return of(v);\n })\n );\n }\n\n systemInit(): void {\n log('startup.service: system init');\n // user\n const user: User = this.cacheService.get('_yz_user', { mode: 'none' });\n // menu\n const ms = deepCopy(user.menu).filter((m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode) as Menu[];\n mapYzSideToYelonMenu(ms);\n const currentMenu = ms.pop() || [];\n this.menuService.add([currentMenu]);\n\n // logo app\n this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });\n this.settingService.setUser({\n name: user.realname || 'no name',\n avatar: `${this.bis.baseUrl}/filecenter/file/${user.avatarId}` || '',\n email: user.email || 'no email'\n });\n\n // title\n this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';\n this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');\n\n // acl\n const abilities: string[] = [];\n generateAbility([currentMenu], abilities, '');\n this.aclService.attachRole(\n user?.roles\n .map((role: NzSafeAny) => {\n return role.roleValue;\n })\n .filter((a: NzSafeAny) => !!a) || []\n );\n this.aclService.attachAbility(abilities);\n\n // cache current\n this.cacheService.set('_yz_current', {\n text: currentMenu.text,\n intro: currentMenu.intro,\n icon: currentMenu.appIconUrl\n });\n }\n}\n\nexport function YzStartupServiceFactory(startupService: YzStartupService): () => Observable<void> {\n return () => startupService.load();\n}\n\n//@ts-ignore\nexport const YZ_APPINIT_PROVIDES = [\n YzStartupService,\n {\n provide: APP_INITIALIZER,\n useFactory: YzStartupServiceFactory,\n deps: [YzStartupService],\n multi: true\n }\n];\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PathToRegexpService {\n constructor() {}\n DEFAULT_DELIMITER = '/';\n\n PATH_REGEXP = new RegExp(\n ['(\\\\\\\\.)', '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'].join('|'),\n 'g'\n );\n\n parse(str: any, options: any) {\n const tokens = [];\n let key = 0;\n let index = 0;\n let path = '';\n const defaultDelimiter = (options && options.delimiter) || this.DEFAULT_DELIMITER;\n const whitelist = (options && options.whitelist) || undefined;\n let pathEscaped = false;\n let res;\n\n while ((res = this.PATH_REGEXP.exec(str)) !== null) {\n const m = res[0];\n const escaped = res[1];\n const offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue;\n }\n\n let prev = '';\n const name = res[2];\n const capture = res[3];\n const group = res[4];\n const modifier = res[5];\n\n if (!pathEscaped && path.length) {\n const k = path.length - 1;\n const c = path[k];\n const matches = whitelist ? whitelist.indexOf(c) > -1 : true;\n\n if (matches) {\n prev = c;\n path = path.slice(0, k);\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n\n const repeat = modifier === '+' || modifier === '*';\n const optional = modifier === '?' || modifier === '*';\n const pattern = capture || group;\n const delimiter = prev || defaultDelimiter;\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n pattern: pattern\n ? this.escapeGroup(pattern)\n : `[^${this.escapeString(delimiter === defaultDelimiter ? delimiter : delimiter + defaultDelimiter)}]+?`\n });\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n\n return tokens;\n }\n compile(str: any, options: any) {\n return this.tokensToFunction(this.parse(str, options), options);\n }\n\n tokensToFunction(tokens: any, options: any) {\n const matches = new Array(tokens.length);\n\n for (let i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp(`^(?:${tokens[i].pattern})$`, this.flags(options));\n }\n }\n\n return function (data: any, options: any) {\n let path = '';\n const encode = (options && options.encode) || encodeURIComponent;\n const validate = options ? options.validate !== false : true;\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n\n const value = data ? data[token.name] : undefined;\n let segment;\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError(`Expected \"${token.name}\" to not repeat, but got array`);\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue;\n }\n\n throw new TypeError(`Expected \"${token.name}\" to not be empty`);\n }\n\n for (let j = 0; j < value.length; j++) {\n segment = encode(value[j], token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(`Expected all \"${token.name}\" to match \"${token.pattern}\"`);\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue;\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(`Expected \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`);\n }\n\n path += token.prefix + segment;\n continue;\n }\n\n if (token.optional) {\n continue;\n }\n\n throw new TypeError(`Expected \"${token.name}\" to be ${token.repeat ? 'an array' : 'a string'}`);\n }\n\n return path;\n };\n }\n\n escapeString(str: any) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n }\n\n escapeGroup(group: any) {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n }\n\n flags(options: any) {\n return options && options.sensitive ? '' : 'i';\n }\n\n regexpToRegexp(path: any, keys: any) {\n if (!keys) {\n return path;\n }\n\n const groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (let i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n pattern: null\n });\n }\n }\n\n return path;\n }\n\n arrayToRegexp(path: any, keys: any, options: any): RegExp {\n const parts = [];\n\n for (let i = 0; i < path.length; i++) {\n parts.push(this.pathToRegexp(path[i], keys, options).source);\n }\n\n return new RegExp(`(?:${parts.join('|')})`, this.flags(options));\n }\n\n stringToRegexp(path: any, keys: any, options: any) {\n return this.tokensToRegExp(this.parse(path, options), keys, options);\n }\n\n tokensToRegExp(tokens: any, keys: any, options: any) {\n options = options || {};\n\n const strict = options.strict;\n const start = options.start !== false;\n const end = options.end !== false;\n const delimiter = options.delimiter || this.DEFAULT_DELIMITER;\n const endsWith = []\n .concat(options.endsWith || [])\n .map(this.escapeString)\n .concat('$')\n .join('|');\n let route = start ? '^' : '';\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n if (typeof token === 'string') {\n route += this.escapeString(token);\n } else {\n const capture = token.repeat\n ? `(?:${token.pattern})(?:${this.escapeString(token.delimiter)}(?:${token.pattern}))*`\n : token.pattern;\n\n if (keys) {\n keys.push(token);\n }\n\n if (token.optional) {\n if (!token.prefix) {\n route += `(${capture})?`;\n } else {\n route += `(?:${this.escapeString(token.prefix)}(${capture}))?`;\n }\n } else {\n route += `${this.escapeString(token.prefix)}(${capture})`;\n }\n }\n }\n\n if (end) {\n if (!strict) {\n route += `(?:${this.escapeString(delimiter)})?`;\n }\n\n route += endsWith === '$' ? '$' : `(?=${endsWith})`;\n } else {\n const endToken = tokens[tokens.length - 1];\n const isEndDelimited =\n typeof endToken === 'string' ? endToken[endToken.length - 1] === delimiter : endToken === undefined;\n\n if (!strict) {\n route += `(?:${this.escapeString(delimiter)}(?=${endsWith}))?`;\n }\n if (!isEndDelimited) {\n route += `(?=${this.escapeString(delimiter)}|${endsWith})`;\n }\n }\n\n return new RegExp(route, this.flags(options));\n }\n\n pathToRegexp(path: any, keys: any, options: any) {\n if (path instanceof RegExp) {\n return this.regexpToRegexp(path, keys);\n }\n\n if (Array.isArray(path)) {\n return this.arrayToRegexp(/** @type {!Array} */ path, keys, options);\n }\n\n return this.stringToRegexp(/** @type {string} */ path, keys, options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanActivateChild,\n Router,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { CacheService } from '@yelon/cache';\nimport { Menu, User } from '@yelon/theme';\nimport { deepCopy, log, YunzaiBusinessConfig, YunzaiConfigService } from '@yelon/util';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';\nimport { PathToRegexpService } from './path-to-regexp.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActGuard implements CanActivate, CanActivateChild {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n private menus: NzSafeAny[] = [];\n private links: string[] = [];\n\n constructor(\n private configService: YunzaiConfigService,\n private cacheService: CacheService,\n private pathToRegexp: PathToRegexpService,\n private router: Router\n ) {\n log('act: ');\n this.bis = mergeBisConfig(this.configService);\n log('act: config ', this.bis);\n const user: User = this.cacheService.get('_yz_user', { mode: 'none' });\n log('act: user ', user);\n this.menus = deepCopy(user.menu).filter(\n (m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode\n ) as Menu[];\n log('act: menus ', this.menus);\n this.getAllLinks(this.menus, this.links);\n log('act: links ', this.links);\n }\n\n canActivate(\n _: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n log('act: can activate ', state);\n if (this.preHandle(state)) {\n return true;\n }\n log('act: can activate child prehandle success');\n let canactivate = false;\n this.links.forEach((link: string) => {\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n log(`act: ${link} test ${state.url.split('?')[0]}`);\n if (regexp.test(state.url.split('?')[0])) {\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n canActivateChild(\n _: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n log('act: can activate child ', state);\n if (this.preHandle(state)) {\n return true;\n }\n log('act: can activate child prehandle success');\n\n let canactivate = false;\n this.links.forEach((link: string) => {\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n if (regexp.test(state.url.split('?')[0])) {\n log(`act: ${link} test ${state.url.split('?')[0]}`);\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n preHandle(state: RouterStateSnapshot): boolean {\n return (\n state.url.includes('error') ||\n state.url.includes('exception') ||\n state.url.includes('displayIndex') ||\n state.url === '' ||\n state.url === null ||\n state.url === '/' ||\n state.url.includes('iframePage')\n );\n }\n\n getAllLinks(menu: Menu[], links: string[]): void {\n menu.forEach((sider: Menu) => {\n if (sider.link) {\n links.push(sider.link);\n }\n if (sider.children && sider.children.length > 0) {\n this.getAllLinks(sider.children, links);\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["zorroZhCN","dfZhCn","yelonZhCn","zorroZhTW","dfZhTw","yelonZhTw","zorroEnUS","dfEn","yelonEnUS","i1","i2.YzI18NService","i3","i4","i6","i2","i5","i7","i8","i9","i10","i1.ContactService","i11","i13","log","i2.YzStompService","i12.YzHeaderApplicationComponent","i13.YzHeaderNotifyComponent","i14.YzHeaderThemBtnComponent","i15.YzHeaderUserComponent","i16.YzHeaderFullScreenComponent","i17.YzHeaderClearStorageComponent","i18.YzHeaderI18NComponent","i19","mergeAuthConfig","i4.YzAuthService","i3.PathToRegexpService"],"mappings":"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"}
|