@reskin/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/bundles/reskin-core-classes.umd.js +48 -0
- package/bundles/reskin-core-classes.umd.js.map +1 -0
- package/bundles/reskin-core-directives.umd.js +147 -0
- package/bundles/reskin-core-directives.umd.js.map +1 -0
- package/bundles/reskin-core-entity-dictionary.umd.js +11 -0
- package/bundles/reskin-core-entity-dictionary.umd.js.map +1 -0
- package/bundles/reskin-core-entity-field.umd.js +49 -0
- package/bundles/reskin-core-entity-field.umd.js.map +1 -0
- package/bundles/reskin-core-entity-file.umd.js +11 -0
- package/bundles/reskin-core-entity-file.umd.js.map +1 -0
- package/bundles/reskin-core-entity-menu.umd.js +40 -0
- package/bundles/reskin-core-entity-menu.umd.js.map +1 -0
- package/bundles/reskin-core-entity-org.umd.js +50 -0
- package/bundles/reskin-core-entity-org.umd.js.map +1 -0
- package/bundles/reskin-core-entity-scheme.umd.js +63 -0
- package/bundles/reskin-core-entity-scheme.umd.js.map +1 -0
- package/bundles/reskin-core-entity-user.umd.js +11 -0
- package/bundles/reskin-core-entity-user.umd.js.map +1 -0
- package/bundles/reskin-core-entity.umd.js +11 -0
- package/bundles/reskin-core-entity.umd.js.map +1 -0
- package/bundles/reskin-core-guards.umd.js +89 -0
- package/bundles/reskin-core-guards.umd.js.map +1 -0
- package/bundles/reskin-core-interceptors.umd.js +702 -0
- package/bundles/reskin-core-interceptors.umd.js.map +1 -0
- package/bundles/reskin-core-services.umd.js +1188 -0
- package/bundles/reskin-core-services.umd.js.map +1 -0
- package/bundles/reskin-core-utils.umd.js +130 -0
- package/bundles/reskin-core-utils.umd.js.map +1 -0
- package/bundles/reskin-core.umd.js +13 -0
- package/bundles/reskin-core.umd.js.map +1 -0
- package/classes/package.json +10 -0
- package/classes/public-api.d.ts +1 -0
- package/classes/reskin-core-classes.d.ts +5 -0
- package/classes/table.helper.d.ts +23 -0
- package/directives/auth.directive.d.ts +27 -0
- package/directives/directives.module.d.ts +7 -0
- package/directives/package.json +10 -0
- package/directives/public-api.d.ts +2 -0
- package/directives/reskin-core-directives.d.ts +5 -0
- package/entity/Env.d.ts +66 -0
- package/entity/IPage.d.ts +35 -0
- package/entity/R.d.ts +25 -0
- package/entity/WC.d.ts +51 -0
- package/entity/dictionary/IDictionaryBaseInfo.d.ts +29 -0
- package/entity/dictionary/IDictionaryItem.d.ts +50 -0
- package/entity/dictionary/package.json +10 -0
- package/entity/dictionary/public-api.d.ts +2 -0
- package/entity/dictionary/reskin-core-entity-dictionary.d.ts +5 -0
- package/entity/field/ColumnTypeEnum.d.ts +33 -0
- package/entity/field/ITableField.d.ts +27 -0
- package/entity/field/package.json +10 -0
- package/entity/field/public-api.d.ts +2 -0
- package/entity/field/reskin-core-entity-field.d.ts +5 -0
- package/entity/file/IUploadFileData.d.ts +25 -0
- package/entity/file/package.json +10 -0
- package/entity/file/public-api.d.ts +1 -0
- package/entity/file/reskin-core-entity-file.d.ts +5 -0
- package/entity/menu/IMenu.d.ts +57 -0
- package/entity/menu/MenuTypeEnum.d.ts +24 -0
- package/entity/menu/package.json +10 -0
- package/entity/menu/public-api.d.ts +2 -0
- package/entity/menu/reskin-core-entity-menu.d.ts +5 -0
- package/entity/org/IOrgTreeNode.d.ts +58 -0
- package/entity/org/OrgTypeEnum.d.ts +31 -0
- package/entity/org/package.json +10 -0
- package/entity/org/public-api.d.ts +2 -0
- package/entity/org/reskin-core-entity-org.d.ts +5 -0
- package/entity/package.json +10 -0
- package/entity/public-api.d.ts +4 -0
- package/entity/reskin-core-entity.d.ts +5 -0
- package/entity/scheme/IFieldScheme.d.ts +97 -0
- package/entity/scheme/IScheme.d.ts +200 -0
- package/entity/scheme/SchemeEditTypeEnum.d.ts +25 -0
- package/entity/scheme/package.json +10 -0
- package/entity/scheme/public-api.d.ts +3 -0
- package/entity/scheme/reskin-core-entity-scheme.d.ts +5 -0
- package/entity/user/IAuth.d.ts +13 -0
- package/entity/user/IAuthAccount.d.ts +126 -0
- package/entity/user/package.json +10 -0
- package/entity/user/public-api.d.ts +2 -0
- package/entity/user/reskin-core-entity-user.d.ts +5 -0
- package/esm2015/classes/public-api.js +2 -0
- package/esm2015/classes/reskin-core-classes.js +5 -0
- package/esm2015/classes/table.helper.js +32 -0
- package/esm2015/directives/auth.directive.js +83 -0
- package/esm2015/directives/directives.module.js +16 -0
- package/esm2015/directives/public-api.js +3 -0
- package/esm2015/directives/reskin-core-directives.js +5 -0
- package/esm2015/entity/Env.js +2 -0
- package/esm2015/entity/IPage.js +2 -0
- package/esm2015/entity/R.js +2 -0
- package/esm2015/entity/WC.js +2 -0
- package/esm2015/entity/dictionary/IDictionaryBaseInfo.js +2 -0
- package/esm2015/entity/dictionary/IDictionaryItem.js +2 -0
- package/esm2015/entity/dictionary/public-api.js +3 -0
- package/esm2015/entity/dictionary/reskin-core-entity-dictionary.js +5 -0
- package/esm2015/entity/field/ColumnTypeEnum.js +35 -0
- package/esm2015/entity/field/ITableField.js +2 -0
- package/esm2015/entity/field/public-api.js +3 -0
- package/esm2015/entity/field/reskin-core-entity-field.js +5 -0
- package/esm2015/entity/file/IUploadFileData.js +2 -0
- package/esm2015/entity/file/public-api.js +2 -0
- package/esm2015/entity/file/reskin-core-entity-file.js +5 -0
- package/esm2015/entity/menu/IMenu.js +2 -0
- package/esm2015/entity/menu/MenuTypeEnum.js +26 -0
- package/esm2015/entity/menu/public-api.js +3 -0
- package/esm2015/entity/menu/reskin-core-entity-menu.js +5 -0
- package/esm2015/entity/org/IOrgTreeNode.js +2 -0
- package/esm2015/entity/org/OrgTypeEnum.js +33 -0
- package/esm2015/entity/org/public-api.js +3 -0
- package/esm2015/entity/org/reskin-core-entity-org.js +5 -0
- package/esm2015/entity/public-api.js +5 -0
- package/esm2015/entity/reskin-core-entity.js +5 -0
- package/esm2015/entity/scheme/IFieldScheme.js +2 -0
- package/esm2015/entity/scheme/IScheme.js +22 -0
- package/esm2015/entity/scheme/SchemeEditTypeEnum.js +27 -0
- package/esm2015/entity/scheme/public-api.js +4 -0
- package/esm2015/entity/scheme/reskin-core-entity-scheme.js +5 -0
- package/esm2015/entity/user/IAuth.js +2 -0
- package/esm2015/entity/user/IAuthAccount.js +2 -0
- package/esm2015/entity/user/public-api.js +3 -0
- package/esm2015/entity/user/reskin-core-entity-user.js +5 -0
- package/esm2015/guards/auth.guard.js +53 -0
- package/esm2015/guards/public-api.js +2 -0
- package/esm2015/guards/reskin-core-guards.js +5 -0
- package/esm2015/interceptors/blob.interceptor.js +66 -0
- package/esm2015/interceptors/cache.interceptor.js +36 -0
- package/esm2015/interceptors/error.interceptor.js +35 -0
- package/esm2015/interceptors/public-api.js +5 -0
- package/esm2015/interceptors/reskin-core-interceptors.js +5 -0
- package/esm2015/interceptors/token.interceptor.js +48 -0
- package/esm2015/public-api.js +2 -0
- package/esm2015/reskin-core.js +5 -0
- package/esm2015/services/account.service.js +58 -0
- package/esm2015/services/app.config.js +60 -0
- package/esm2015/services/auth.service.js +56 -0
- package/esm2015/services/cache.http.service.js +58 -0
- package/esm2015/services/destroy.service.js +15 -0
- package/esm2015/services/dictionary.service.js +107 -0
- package/esm2015/services/down.file.service.js +79 -0
- package/esm2015/services/field.scheme.service.js +37 -0
- package/esm2015/services/file.service.js +57 -0
- package/esm2015/services/menu.service.js +36 -0
- package/esm2015/services/org.service.js +46 -0
- package/esm2015/services/public-api.js +13 -0
- package/esm2015/services/reskin-core-services.js +5 -0
- package/esm2015/services/scheme.service.js +37 -0
- package/esm2015/utils/array.js +29 -0
- package/esm2015/utils/dom.js +18 -0
- package/esm2015/utils/public-api.js +4 -0
- package/esm2015/utils/reskin-core-utils.js +5 -0
- package/esm2015/utils/store.js +64 -0
- package/fesm2015/reskin-core-classes.js +39 -0
- package/fesm2015/reskin-core-classes.js.map +1 -0
- package/fesm2015/reskin-core-directives.js +103 -0
- package/fesm2015/reskin-core-directives.js.map +1 -0
- package/fesm2015/reskin-core-entity-dictionary.js +4 -0
- package/fesm2015/reskin-core-entity-dictionary.js.map +1 -0
- package/fesm2015/reskin-core-entity-field.js +41 -0
- package/fesm2015/reskin-core-entity-field.js.map +1 -0
- package/fesm2015/reskin-core-entity-file.js +4 -0
- package/fesm2015/reskin-core-entity-file.js.map +1 -0
- package/fesm2015/reskin-core-entity-menu.js +32 -0
- package/fesm2015/reskin-core-entity-menu.js.map +1 -0
- package/fesm2015/reskin-core-entity-org.js +39 -0
- package/fesm2015/reskin-core-entity-org.js.map +1 -0
- package/fesm2015/reskin-core-entity-scheme.js +55 -0
- package/fesm2015/reskin-core-entity-scheme.js.map +1 -0
- package/fesm2015/reskin-core-entity-user.js +4 -0
- package/fesm2015/reskin-core-entity-user.js.map +1 -0
- package/fesm2015/reskin-core-entity.js +4 -0
- package/fesm2015/reskin-core-entity.js.map +1 -0
- package/fesm2015/reskin-core-guards.js +60 -0
- package/fesm2015/reskin-core-guards.js.map +1 -0
- package/fesm2015/reskin-core-interceptors.js +179 -0
- package/fesm2015/reskin-core-interceptors.js.map +1 -0
- package/fesm2015/reskin-core-services.js +605 -0
- package/fesm2015/reskin-core-services.js.map +1 -0
- package/fesm2015/reskin-core-utils.js +118 -0
- package/fesm2015/reskin-core-utils.js.map +1 -0
- package/fesm2015/reskin-core.js +6 -0
- package/fesm2015/reskin-core.js.map +1 -0
- package/guards/auth.guard.d.ts +15 -0
- package/guards/package.json +10 -0
- package/guards/public-api.d.ts +1 -0
- package/guards/reskin-core-guards.d.ts +5 -0
- package/interceptors/blob.interceptor.d.ts +20 -0
- package/interceptors/cache.interceptor.d.ts +19 -0
- package/interceptors/error.interceptor.d.ts +19 -0
- package/interceptors/package.json +10 -0
- package/interceptors/public-api.d.ts +4 -0
- package/interceptors/reskin-core-interceptors.d.ts +5 -0
- package/interceptors/token.interceptor.d.ts +28 -0
- package/package.json +22 -0
- package/public-api.d.ts +2 -0
- package/reskin-core.d.ts +5 -0
- package/services/account.service.d.ts +33 -0
- package/services/app.config.d.ts +40 -0
- package/services/auth.service.d.ts +26 -0
- package/services/cache.http.service.d.ts +37 -0
- package/services/destroy.service.d.ts +8 -0
- package/services/dictionary.service.d.ts +57 -0
- package/services/down.file.service.d.ts +29 -0
- package/services/field.scheme.service.d.ts +17 -0
- package/services/file.service.d.ts +33 -0
- package/services/menu.service.d.ts +16 -0
- package/services/org.service.d.ts +31 -0
- package/services/package.json +10 -0
- package/services/public-api.d.ts +12 -0
- package/services/reskin-core-services.d.ts +5 -0
- package/services/scheme.service.d.ts +17 -0
- package/utils/array.d.ts +5 -0
- package/utils/dom.d.ts +6 -0
- package/utils/package.json +10 -0
- package/utils/public-api.d.ts +3 -0
- package/utils/reskin-core-utils.d.ts +5 -0
- package/utils/store.d.ts +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reskin-core-services.js","sources":["../../../library/core/services/app.config.ts","../../../library/core/services/auth.service.ts","../../../library/core/services/account.service.ts","../../../library/core/services/cache.http.service.ts","../../../library/core/services/menu.service.ts","../../../library/core/services/down.file.service.ts","../../../library/core/services/file.service.ts","../../../library/core/services/org.service.ts","../../../library/core/services/dictionary.service.ts","../../../library/core/services/scheme.service.ts","../../../library/core/services/field.scheme.service.ts","../../../library/core/services/destroy.service.ts","../../../library/core/services/reskin-core-services.ts"],"sourcesContent":["import { APP_INITIALIZER, Inject, Injectable, InjectionToken } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Env, R, WC } from '@reskin/core/entity';\r\n\r\n/**\r\n * 项目环境变量配置 Token\r\n */\r\nexport const RK_ENVIRONMENT = new InjectionToken('environment');\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AppConfig {\r\n /**\r\n * 项目配置项\r\n */\r\n static settings: WC;\r\n\r\n constructor(\r\n @Inject(RK_ENVIRONMENT) private env: Env,\r\n private title: Title,\r\n ) {}\r\n\r\n /**\r\n * 加载配置\r\n */\r\n async onLoad(): Promise<WC> {\r\n const url = `api/gl-service-sys-core/v1/core/system/parameter/getOneByCode/${this.env.config.PROJECT_CONFIG_KEY}`;\r\n const response = await fetch(url);\r\n const json: R = await response.json();\r\n if (json.code !== 0) {\r\n throw new Error(json.msg);\r\n }\r\n const config = json.data.SYSTEM_PARAMETER_VALUE && JSON.parse(json.data.SYSTEM_PARAMETER_VALUE);\r\n config.production = config.production === 'true';\r\n AppConfig.settings = config;\r\n this.title.setTitle(config.insights.PROJECT_NAME);\r\n return config;\r\n }\r\n}\r\n\r\n/**\r\n * 项目初始化配置\r\n * @param environment\r\n */\r\nexport function providerAppConfig(environment: Env) {\r\n return [\r\n { provide: RK_ENVIRONMENT, useValue: environment },\r\n AppConfig,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (appConfig: AppConfig) => () => appConfig.onLoad(),\r\n deps: [AppConfig],\r\n multi: true,\r\n },\r\n ];\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Store } from '@reskin/core/utils';\r\nimport { IAuth } from '@reskin/core/entity/user';\r\nimport { RK_ENVIRONMENT } from './app.config';\r\nimport { Env, R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAuthService {\r\n private auth = new Store<IAuth>('auth', <IAuth>{});\r\n constructor(\r\n @Inject(RK_ENVIRONMENT) private env: Env,\r\n private http: HttpClient,\r\n ) {}\r\n\r\n /**\r\n * 系统登录\r\n * @param data 验证信息\r\n * @returns\r\n */\r\n onLogin(data: string) {\r\n const url = 'api/gl-service-sys-user/v1/user/system/auth/login';\r\n const headers = new HttpHeaders({\r\n 'ProjectNo': this.env.config.PROJECT_TYPE,\r\n 'Token-Control': 'no-token',\r\n });\r\n return this.http.post<R>(url, { data }, { headers }).pipe(\r\n tap((json) => {\r\n if (json.code === 0) {\r\n this.auth.set(json.data);\r\n }\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * 注销系统\r\n */\r\n onLogout() {\r\n const url = 'api/gl-service-sys-user/v1/user/system/auth/logoutByAuthId';\r\n return this.http.post<R>(url, { AUTH_ID: this.token.id });\r\n }\r\n\r\n /**\r\n * 获得 token\r\n */\r\n get token(): IAuth {\r\n return this.auth.get();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { tap } from 'rxjs/operators';\r\nimport { RkAuthService } from './auth.service';\r\nimport { IAccountProfile, IAuthAccount, IAuthOrgGroup, IAuthPersonnelPool, IAuthWorkflow } from '@reskin/core/entity/user';\r\nimport { Store } from '@reskin/core/utils';\r\nimport { R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAccountService {\r\n private account = new Store<IAuthAccount>('account', <IAuthAccount>{});\r\n constructor(\r\n private http: HttpClient,\r\n private auth: RkAuthService,\r\n ) {}\r\n\r\n /**\r\n * 加载人员权限\r\n */\r\n onLoadAuth() {\r\n const url = 'api/gl-service-sys-user/v1/user/system/user/loadAuthData';\r\n return this.http.post<R>(url, { SYSTEM_USER_ID: this.auth.token?.id }).pipe(\r\n tap((json) => {\r\n if (json.code === 0) {\r\n this.account.set(json.data);\r\n }\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * 获得账号基本信息\r\n */\r\n get userInfo(): IAccountProfile {\r\n return this.account.get().UserInfo;\r\n }\r\n\r\n /**\r\n * 获得账号人员库权限\r\n */\r\n get personnelPool(): IAuthPersonnelPool {\r\n return this.account.get().AuthPersonnelPool;\r\n }\r\n\r\n /**\r\n * 获得账号业务权限\r\n */\r\n get workflowAuth(): IAuthWorkflow {\r\n return this.account.get().AuthWfId;\r\n }\r\n\r\n /**\r\n * 获得账号机构分组权限\r\n */\r\n get authOrgGroup(): Array<IAuthOrgGroup> {\r\n return this.account.get().AuthOrgGroup;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkCacheHttpService {\r\n private cache: Map<string, Observable<HttpEvent<unknown>>> = new Map<string, Observable<HttpEvent<unknown>>>();\r\n\r\n /**\r\n * 获得已缓存的请求\r\n * @param url GET请求地址\r\n */\r\n get<T>(url: string): Observable<HttpEvent<unknown>> | undefined {\r\n return this.cache.get(url);\r\n }\r\n\r\n /**\r\n * 缓存请求\r\n * @param url GET请求地址\r\n * @param response 响应内容\r\n */\r\n set<T>(url: string, response: Observable<HttpEvent<T>>) {\r\n this.cache.set(url, response);\r\n }\r\n\r\n /**\r\n * 删除指定已缓存的请求\r\n * @param url GET请求地址\r\n */\r\n delete(url: string): void {\r\n this.cache.delete(url);\r\n }\r\n\r\n /**\r\n * 删除所有已缓存的请求\r\n */\r\n clear(): void {\r\n this.cache.clear();\r\n }\r\n}\r\n\r\n/**\r\n * 设置为缓存请求\r\n * 使用方法:http.get(...CacheHttpTemplate`api/response.json`)\r\n * @param urls 请求地址\r\n * @param params 模板参数\r\n */\r\nexport function CacheHttpTemplate(urls: TemplateStringsArray, ...params: any[]): [string, { headers: HttpHeaders }] {\r\n let [url] = urls;\r\n if (params.length > 0) {\r\n url = String.raw(urls, ...params);\r\n }\r\n return [url, { headers: new HttpHeaders({ 'Cache-Map': 'Storage' }) }];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AppConfig } from './app.config';\r\nimport { Observable } from 'rxjs';\r\nimport { CacheHttpTemplate } from './cache.http.service';\r\nimport { tap } from 'rxjs/operators';\r\nimport { IMenu } from '@reskin/core/entity/menu';\r\nimport { R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkMenuService {\r\n private appSettings = AppConfig.settings;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n /**\r\n * 获得系统导航列表\r\n */\r\n public requestData(): Observable<R<Array<IMenu>>> {\r\n const url = 'api/gl-service-sys-core/v1/core/system/resource/tree/selectListNav';\r\n return this.http.get<R>(...CacheHttpTemplate`${url}/${this.appSettings.servers.RESOURCE_GROUP_ID}`).pipe(\r\n tap((json) => {\r\n if (json.code !== 0) {\r\n throw new Error(`获得系统导航列表 ${url} 出现错误: ${json.msg}`);\r\n }\r\n const menus = json.data;\r\n menus.forEach((menu) => {\r\n menu.children = menus.filter((v) => menu.SYSTEM_RESOURCE_TREE_ID === v.SYS_PARENT) || [];\r\n });\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkDownFileService {\r\n constructor(private http: HttpClient) {}\r\n\r\n /**\r\n * 使用GET方法下载文件\r\n * @param url 请求链接; url可以传递自定义文件名优先级最高;如:api/file/down?fileName=身份证.jpg\r\n * @param params 请求参数\r\n */\r\n get(url: string, params?: Record<string, any>): Observable<HttpResponse<Blob>> {\r\n return this.http\r\n .get(url, { params, responseType: 'blob', observe: 'response' })\r\n .pipe(tap((response) => this.handleResponse(response, url)));\r\n }\r\n\r\n /**\r\n * 使用POST方法下载文件\r\n * @param url 请求链接; url可以传递自定义文件名优先级最高;如:api/file/down?fileName=身份证.jpg\r\n * @param params 请求参数\r\n */\r\n post(url: string, params?: Record<string, any>): Observable<HttpResponse<Blob>> {\r\n return this.http\r\n .post(url, params, { responseType: 'blob', observe: 'response' })\r\n .pipe(tap((response) => this.handleResponse(response, url)));\r\n }\r\n\r\n private handleResponse(response: HttpResponse<Blob>, url: string): void {\r\n const filename = this.getFileName(response.headers, url);\r\n this.saveAs(response.body!, filename);\r\n }\r\n\r\n private getFileName(headers: HttpHeaders, url: string): string {\r\n const urlParams = new URLSearchParams(url.split('?')[1]);\r\n const fileNameFromParams = urlParams.get('fileName');\r\n if (fileNameFromParams) {\r\n return decodeURIComponent(fileNameFromParams);\r\n }\r\n\r\n const disposition = headers.get('content-disposition');\r\n if (disposition) {\r\n const filenameMatch = disposition.match(/filename=([^;]+)/);\r\n if (filenameMatch) {\r\n return decodeURIComponent(filenameMatch[1]);\r\n }\r\n }\r\n\r\n const filenameFromHeaders = headers.get('filename');\r\n if (filenameFromHeaders) {\r\n return decodeURIComponent(filenameFromHeaders);\r\n }\r\n\r\n const urlSegments = url.split('/');\r\n return decodeURIComponent(urlSegments[urlSegments.length - 1].split('?')[0]);\r\n }\r\n\r\n /**\r\n * 文件另存为\r\n * @param body 二进制内容\r\n * @param filename 文件名\r\n */\r\n private saveAs(body: Blob, filename: string): void {\r\n const blob = new Blob([body], { type: 'application/x-msdownload' });\r\n const blobURL = URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = blobURL;\r\n link.download = filename;\r\n link.style.display = 'none';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n URL.revokeObjectURL(blobURL);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IUploadFileData } from '@reskin/core/entity/file';\r\nimport { R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkFileService {\r\n constructor(private http: HttpClient) {}\r\n\r\n /**\r\n * 获得人员照片静态路径\r\n * @param fileId 文件编码\r\n * @param fileName 文件名称\r\n */\r\n staticPhotoUrl(fileId: string, fileName?: string): string {\r\n let url = `api/gl-file-service/static/photo/${fileId}`;\r\n if (fileName) {\r\n url += `?fileName=${encodeURI(fileName)}`;\r\n }\r\n return url;\r\n }\r\n\r\n /**\r\n * 上传人员照片\r\n * @param data 文件\r\n */\r\n photoUpload(data: FormData): Observable<R<IUploadFileData>> {\r\n const url = 'api/gl-file-service/photo/upload';\r\n return this.http.post<R>(url, data);\r\n }\r\n\r\n /**\r\n * 获得附件静态路径\r\n * @param fileId 文件编码\r\n * @param fileName 文件名称\r\n */\r\n staticFileUrl(fileId: string, fileName?: string): string {\r\n let url = `api/gl-file-service/static/attachment/${fileId}`;\r\n if (fileName) {\r\n url += `?fileName=${encodeURI(fileName)}`;\r\n }\r\n return url;\r\n }\r\n\r\n /**\r\n * 上传附件\r\n * @param data 文件\r\n */\r\n fileUpload(data: FormData): Observable<R<IUploadFileData>> {\r\n const url = 'api/gl-file-service/attachment/upload';\r\n return this.http.post<R>(url, data);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IOrgTreeNode } from '@reskin/core/entity/org';\r\nimport { R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkOrgService {\r\n constructor(private http: HttpClient) {}\r\n\r\n /**\r\n * 通过父节点编码获得单位列表\r\n * @param groupId 机构分组\r\n * @param parentId 父节点编码;默认 -1\r\n * @param isAll 是否显示全部单位(不受权限控制);默认 false\r\n * @returns 单位列表\r\n */\r\n getChildren(groupId: string, parentId = '-1', isAll = false): Observable<R<Array<IOrgTreeNode>>> {\r\n const url = 'api/gl-service-data/v1/data/unit/org/selectListByParent';\r\n return this.http.post<R>(url, { ORG_GROUP_ID: groupId, SYS_PARENT: parentId, IS_ALL: isAll });\r\n }\r\n\r\n /**\r\n * 搜索机构\r\n * @param groupId 机构分组\r\n * @param keyName 搜索关键字\r\n * @returns 返回匹配项节点列表\r\n */\r\n requestKeywordList(groupId: string, keyName: string): Observable<R<Array<Record<string, any>>>> {\r\n const url = 'api/gl-service-data/v1/data/unit/org/selectListByQuery';\r\n return this.http.post<R>(url, { ORG_GROUP_ID: groupId, ORG_NAME: keyName });\r\n }\r\n\r\n /**\r\n * 通过单位编码获得所有父节点\r\n * @param id\r\n */\r\n requestParentList(id: string): Observable<R<Array<IOrgTreeNode>>> {\r\n const url = 'api/gl-service-data/v1/data/unit/org/selectListAllParentById';\r\n return this.http.post<R>(url, { DATA_UNIT_ORG_ID: id });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { CacheHttpTemplate } from './cache.http.service';\r\nimport { IDictionaryBaseInfo, IDictionaryItem } from '@reskin/core/entity/dictionary';\r\nimport { Store } from '@reskin/core/utils';\r\nimport { R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkDictionaryService {\r\n private useItems = new Store<Record<string, IDictionaryItem[]>>('dictionary_use_items', {}, { expires: 1000 * 60 * 60 * 24 * 7 });\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n /**\r\n * 通过字典编码获得常用项\r\n * @param code 字典编码\r\n * @returns 常用项\r\n */\r\n getUseItems(code: string): IDictionaryItem[] {\r\n return this.useItems.get()[code] || [];\r\n }\r\n\r\n /**\r\n * 通过字典编码设置常用项\r\n * @param code 字典编码\r\n * @param item 常用项\r\n */\r\n setUseItems(code: string, item: IDictionaryItem) {\r\n const data = this.useItems.get();\r\n if (!data[code]) {\r\n data[code] = [item];\r\n } else {\r\n if (data[code].find((v) => v.DICTIONARY_ITEM_CODE === item.DICTIONARY_ITEM_CODE)) {\r\n return;\r\n }\r\n if (data[code].length > 9) {\r\n data[code].pop();\r\n }\r\n data[code].unshift(item);\r\n }\r\n this.useItems.set(data);\r\n }\r\n\r\n /**\r\n * 通过字典编码获得字典基本信息\r\n * @param code 字典编码\r\n * @returns 字典基本信息\r\n */\r\n getBaseInfo(code: string): Observable<IDictionaryBaseInfo> {\r\n const url = `api/gl-service-sys-core/v1/core/system/dictionary/selectOneByDictionaryCode`;\r\n return this.http.get<R>(...CacheHttpTemplate`${url}/${this.codeReplace(code)}`).pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n );\r\n }\r\n\r\n /**\r\n * 通过字典编码获得获得字典项\r\n * @param code 字典编码\r\n * @returns 字典项列表\r\n */\r\n getData(code: string): Observable<IDictionaryItem[]> {\r\n const url = `api/gl-service-sys-core/v1/core/system/dictionary/item/selectListByDictionaryCode`;\r\n return this.http.get<R>(...CacheHttpTemplate`${url}/${this.codeReplace(code)}`).pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n );\r\n }\r\n\r\n /**\r\n * 通过父节点获得字典项编码\r\n * @param code 字典编码\r\n * @param parentId 父节点编码\r\n * @returns 字典项列表\r\n */\r\n getChildData(code: string, parentId = '-1'): Observable<IDictionaryItem[]> {\r\n const url = `api/gl-service-sys-core/v1/core/system/dictionary/item/selectListByDictionaryCode`;\r\n return this.http.post<R>(url, { DICTIONARY_CODE: code, SYS_PARENT: parentId }).pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n );\r\n }\r\n\r\n private codeReplace(code: string): string {\r\n return code.replace(/\\//g, '_');\r\n }\r\n\r\n /**\r\n * 通过字典编码获得获得字典项\r\n * @param code 字典编码\r\n * @param keyword 关键字\r\n * @returns 字典项列表\r\n */\r\n requestSearchData(code: string, keyword: string) {\r\n const url = 'api/gl-service-sys-core/v1/core/system/dictionary/item/selectListByQuery';\r\n return this.http.post<R>(url, { DICTIONARY_CODE: code, DICTIONARY_ITEM_NAME: keyword }).pipe(\r\n filter((json) => json.code === 0),\r\n map((json) =>\r\n json.data\r\n .filter((item: any, index: number) => index < 10)\r\n .map((item: any) => ({\r\n label: item.DICTIONARY_ITEM_NAME,\r\n key: item.SYSTEM_DICTIONARY_ITEM_ID,\r\n value: item.DICTIONARY_ITEM_CODE,\r\n })),\r\n ),\r\n );\r\n }\r\n\r\n /**\r\n * 获得字典项的所有父节点\r\n * @param code 字典编码\r\n * @param id 字典项编码\r\n * @returns 字典项列表\r\n */\r\n requestParentList(code: string, id: string): Observable<IDictionaryItem[]> {\r\n const url = 'api/gl-service-sys-core/v1/core/system/dictionary/item/selectListInfoAllParentByCode';\r\n return this.http.post<R>(url, { DICTIONARY_CODE: code, DICTIONARY_ITEM_CODE: id }).pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AppConfig } from './app.config';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, tap } from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { CacheHttpTemplate } from './cache.http.service';\r\nimport { IScheme } from '@reskin/core/entity/scheme';\r\nimport { R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkSchemeService {\r\n private appSettings = AppConfig.settings;\r\n constructor(private http: HttpClient) {}\r\n\r\n /**\r\n * 通过界面方案标识符获得界面方案内容\r\n * @param permission 界面方案标识符\r\n * @returns 界面方案\r\n */\r\n getData(permission: string): Observable<IScheme> {\r\n if (this.appSettings && this.appSettings.servers.AREA_CODE) {\r\n permission = `${this.appSettings.servers.AREA_CODE}_${permission}`;\r\n }\r\n const url = `api/gl-service-sys-core/v1/core/system/scheme/selectSchemeByPermission`;\r\n return this.http.get<R>(...CacheHttpTemplate`${url}/${permission}`).pipe(\r\n tap((json) => {\r\n if (json.code !== 0) {\r\n throw new Error(`通过界面方案标识符获得界面方案内容 ${url} 出现错误: ${json.msg}`);\r\n }\r\n }),\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AppConfig } from './app.config';\r\nimport { CacheHttpTemplate } from './cache.http.service';\r\nimport { filter, map, tap } from 'rxjs/operators';\r\nimport { IFieldScheme } from '@reskin/core/entity/scheme';\r\nimport { R } from '@reskin/core/entity';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkFieldSchemeService {\r\n private appSettings = AppConfig.settings;\r\n constructor(private http: HttpClient) {}\r\n\r\n /**\r\n * 通过字段方案标识符获得字段方案内容\r\n * @param permission 字段方案标识符\r\n * @returns 字段方案\r\n */\r\n getData(permission: string): Observable<IFieldScheme> {\r\n if (this.appSettings && this.appSettings.servers.AREA_CODE) {\r\n permission = `${this.appSettings.servers.AREA_CODE}_${permission}`;\r\n }\r\n const url = `api/gl-service-sys-core/v1/core/system/field/scheme/selectSchemeByIdentifier`;\r\n return this.http.get<R>(...CacheHttpTemplate`${url}/${permission}`).pipe(\r\n tap((json) => {\r\n if (json.code !== 0) {\r\n throw new Error(`通过字段方案标识符获得字段方案内容 ${url} 出现错误: ${json.msg}`);\r\n }\r\n }),\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n );\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class RkDestroyService extends Subject<void> implements OnDestroy {\r\n ngOnDestroy(): void {\r\n this.next();\r\n this.complete();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.RkAuthService"],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 默认前缀
|
|
5
|
+
*/
|
|
6
|
+
let prefix = 'SK_';
|
|
7
|
+
/**
|
|
8
|
+
* 用于设置缓存值保存时key的前缀
|
|
9
|
+
* @param newPrefix 前缀
|
|
10
|
+
*/
|
|
11
|
+
function setStorePrefix(newPrefix) {
|
|
12
|
+
prefix = newPrefix;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 创建缓存值
|
|
16
|
+
*/
|
|
17
|
+
class Store {
|
|
18
|
+
constructor(key, defaultValue, options) {
|
|
19
|
+
this.value = defaultValue;
|
|
20
|
+
// 进行初始设置
|
|
21
|
+
this.storageKey = () => `@${prefix}_${key}`.toLocaleUpperCase();
|
|
22
|
+
const { storageEngine = sessionStorage, expires } = options !== null && options !== void 0 ? options : {};
|
|
23
|
+
this.storage = storageEngine;
|
|
24
|
+
this.expires = expires;
|
|
25
|
+
const storedValue = this.storage.getItem(this.storageKey());
|
|
26
|
+
if (storedValue) {
|
|
27
|
+
const { data, expiry } = JSON.parse(storedValue);
|
|
28
|
+
// 判断是否过期,过期后删除key
|
|
29
|
+
if (!expiry || expiry > Date.now()) {
|
|
30
|
+
this.value = data;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.storage.removeItem(this.storageKey());
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 获取值
|
|
39
|
+
*/
|
|
40
|
+
get() {
|
|
41
|
+
return this.value;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 设置值
|
|
45
|
+
* @param newValue
|
|
46
|
+
*/
|
|
47
|
+
set(newValue) {
|
|
48
|
+
this.value = newValue;
|
|
49
|
+
// 设置值时进行Storage设置
|
|
50
|
+
const value = JSON.stringify({
|
|
51
|
+
data: newValue,
|
|
52
|
+
expiry: this.expires ? Date.now() + this.expires : null,
|
|
53
|
+
});
|
|
54
|
+
this.storage.setItem(this.storageKey(), value);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 更新值
|
|
58
|
+
* @param updateFn
|
|
59
|
+
*/
|
|
60
|
+
update(updateFn) {
|
|
61
|
+
if (typeof updateFn === 'function') {
|
|
62
|
+
this.set(updateFn(this.value));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* 对象深拷贝
|
|
69
|
+
* @param source
|
|
70
|
+
*/
|
|
71
|
+
function deepClone(source) {
|
|
72
|
+
if (source === null || typeof source !== 'object') {
|
|
73
|
+
return source;
|
|
74
|
+
}
|
|
75
|
+
if (Array.isArray(source)) {
|
|
76
|
+
const clonedArray = [];
|
|
77
|
+
for (let i = 0; i < source.length; i++) {
|
|
78
|
+
clonedArray[i] = deepClone(source[i]);
|
|
79
|
+
}
|
|
80
|
+
// @ts-ignore
|
|
81
|
+
return clonedArray;
|
|
82
|
+
}
|
|
83
|
+
if (typeof source === 'object') {
|
|
84
|
+
const clonedObject = {};
|
|
85
|
+
for (const key in source) {
|
|
86
|
+
// @ts-ignore
|
|
87
|
+
if (source.hasOwnProperty(key)) {
|
|
88
|
+
clonedObject[key] = deepClone(source[key]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return clonedObject;
|
|
92
|
+
}
|
|
93
|
+
return source;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* 监听DOM元素的大小变化
|
|
98
|
+
* @param element
|
|
99
|
+
*/
|
|
100
|
+
function observeResize(element) {
|
|
101
|
+
return new Observable((observer) => {
|
|
102
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
103
|
+
observer.next(entries);
|
|
104
|
+
});
|
|
105
|
+
resizeObserver.observe(element);
|
|
106
|
+
return () => {
|
|
107
|
+
resizeObserver.unobserve(element);
|
|
108
|
+
resizeObserver.disconnect();
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Generated bundle index. Do not edit.
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
export { Store, deepClone, observeResize, setStorePrefix };
|
|
118
|
+
//# sourceMappingURL=reskin-core-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reskin-core-utils.js","sources":["../../../library/core/utils/store.ts","../../../library/core/utils/array.ts","../../../library/core/utils/dom.ts","../../../library/core/utils/reskin-core-utils.ts"],"sourcesContent":["/**\r\n * 缓存配置信息\r\n */\r\nexport interface StoreOptions {\r\n /**\r\n * 缓存存储方式\r\n */\r\n storageEngine?: Storage;\r\n /**\r\n * 过期时间(毫秒)\r\n */\r\n expires?: number;\r\n}\r\n\r\n/**\r\n * 默认前缀\r\n */\r\nlet prefix: string = 'SK_';\r\n\r\n/**\r\n * 用于设置缓存值保存时key的前缀\r\n * @param newPrefix 前缀\r\n */\r\nexport function setStorePrefix(newPrefix: string) {\r\n prefix = newPrefix;\r\n}\r\n\r\n/**\r\n * 创建缓存值\r\n */\r\nexport class Store<T> {\r\n private value: T;\r\n private readonly storage: Storage;\r\n private readonly expires?: number;\r\n private readonly storageKey: () => string;\r\n\r\n constructor(key: string, defaultValue: T, options?: StoreOptions) {\r\n this.value = defaultValue;\r\n\r\n // 进行初始设置\r\n this.storageKey = () => `@${prefix}_${key}`.toLocaleUpperCase();\r\n const { storageEngine = sessionStorage, expires } = options ?? {};\r\n this.storage = storageEngine;\r\n this.expires = expires;\r\n\r\n const storedValue = this.storage.getItem(this.storageKey());\r\n if (storedValue) {\r\n const { data, expiry } = JSON.parse(storedValue);\r\n // 判断是否过期,过期后删除key\r\n if (!expiry || expiry > Date.now()) {\r\n this.value = data;\r\n } else {\r\n this.storage.removeItem(this.storageKey());\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 获取值\r\n */\r\n get(): T {\r\n return this.value;\r\n }\r\n\r\n /**\r\n * 设置值\r\n * @param newValue\r\n */\r\n set(newValue: T): void {\r\n this.value = newValue;\r\n\r\n // 设置值时进行Storage设置\r\n const value = JSON.stringify({\r\n data: newValue,\r\n expiry: this.expires ? Date.now() + this.expires : null,\r\n });\r\n this.storage.setItem(this.storageKey(), value);\r\n }\r\n\r\n /**\r\n * 更新值\r\n * @param updateFn\r\n */\r\n update(updateFn: (currentValue: T) => T): void {\r\n if (typeof updateFn === 'function') {\r\n this.set(updateFn(this.value));\r\n }\r\n }\r\n}\r\n","/**\r\n * 对象深拷贝\r\n * @param source\r\n */\r\nexport function deepClone<T>(source: T): T {\r\n if (source === null || typeof source !== 'object') {\r\n return source;\r\n }\r\n\r\n if (Array.isArray(source)) {\r\n const clonedArray = [];\r\n for (let i = 0; i < source.length; i++) {\r\n clonedArray[i] = deepClone(source[i]);\r\n }\r\n // @ts-ignore\r\n return clonedArray as T;\r\n }\r\n\r\n if (typeof source === 'object') {\r\n const clonedObject: Record<string, any> = {};\r\n for (const key in source) {\r\n // @ts-ignore\r\n if (source.hasOwnProperty(key)) {\r\n clonedObject[key] = deepClone(source[key]);\r\n }\r\n }\r\n return clonedObject as T;\r\n }\r\n\r\n return source;\r\n}\r\n","import { Observable } from 'rxjs';\r\n\r\n/**\r\n * 监听DOM元素的大小变化\r\n * @param element\r\n */\r\nexport function observeResize(element: HTMLElement): Observable<ResizeObserverEntry[]> {\r\n return new Observable((observer) => {\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n observer.next(entries);\r\n });\r\n resizeObserver.observe(element);\r\n return () => {\r\n resizeObserver.unobserve(element);\r\n resizeObserver.disconnect();\r\n };\r\n });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reskin-core.js","sources":["../../../library/core/public-api.ts","../../../library/core/reskin-core.ts"],"sourcesContent":["export default void 0;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA,gBAAe,KAAK,CAAC;;ACArB;;AAEG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RkMenuService } from '@reskin/core/services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class RkAuthGuard implements CanActivateChild {
|
|
6
|
+
private menu;
|
|
7
|
+
private router;
|
|
8
|
+
constructor(menu: RkMenuService, router: Router);
|
|
9
|
+
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
10
|
+
private checkAccess;
|
|
11
|
+
private match;
|
|
12
|
+
private handleNoAccess;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RkAuthGuard, never>;
|
|
14
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RkAuthGuard>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"main": "../bundles/reskin-core-guards.umd.js",
|
|
3
|
+
"module": "../fesm2015/reskin-core-guards.js",
|
|
4
|
+
"es2015": "../fesm2015/reskin-core-guards.js",
|
|
5
|
+
"esm2015": "../esm2015/guards/reskin-core-guards.js",
|
|
6
|
+
"fesm2015": "../fesm2015/reskin-core-guards.js",
|
|
7
|
+
"typings": "reskin-core-guards.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"name": "@reskin/core/guards"
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './auth.guard';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class BlobInterceptor implements HttpInterceptor {
|
|
5
|
+
intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>>;
|
|
6
|
+
private handleBlobResponse;
|
|
7
|
+
private handleBlobError;
|
|
8
|
+
private blobToJson;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BlobInterceptor, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BlobInterceptor>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 下载文件拦截器
|
|
14
|
+
* blob类型的请求会被处理
|
|
15
|
+
*/
|
|
16
|
+
export declare function providerDownBlob(): {
|
|
17
|
+
provide: import("@angular/core").InjectionToken<HttpInterceptor[]>;
|
|
18
|
+
useClass: typeof BlobInterceptor;
|
|
19
|
+
multi: boolean;
|
|
20
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RkCacheHttpService } from '@reskin/core/services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class CacheInterceptor implements HttpInterceptor {
|
|
6
|
+
private cacheHttp;
|
|
7
|
+
constructor(cacheHttp: RkCacheHttpService);
|
|
8
|
+
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CacheInterceptor, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CacheInterceptor>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* GET请求缓存拦截器
|
|
14
|
+
*/
|
|
15
|
+
export declare function providerHttpCache(): {
|
|
16
|
+
provide: import("@angular/core").InjectionToken<HttpInterceptor[]>;
|
|
17
|
+
useClass: typeof CacheInterceptor;
|
|
18
|
+
multi: boolean;
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class ErrorInterceptor implements HttpInterceptor {
|
|
6
|
+
private router;
|
|
7
|
+
constructor(router: Router);
|
|
8
|
+
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ErrorInterceptor, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ErrorInterceptor>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 请求错误拦截器
|
|
14
|
+
*/
|
|
15
|
+
export declare function providerHttpError(): {
|
|
16
|
+
provide: import("@angular/core").InjectionToken<HttpInterceptor[]>;
|
|
17
|
+
useClass: typeof ErrorInterceptor;
|
|
18
|
+
multi: boolean;
|
|
19
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"main": "../bundles/reskin-core-interceptors.umd.js",
|
|
3
|
+
"module": "../fesm2015/reskin-core-interceptors.js",
|
|
4
|
+
"es2015": "../fesm2015/reskin-core-interceptors.js",
|
|
5
|
+
"esm2015": "../esm2015/interceptors/reskin-core-interceptors.js",
|
|
6
|
+
"fesm2015": "../fesm2015/reskin-core-interceptors.js",
|
|
7
|
+
"typings": "reskin-core-interceptors.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"name": "@reskin/core/interceptors"
|
|
10
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpHeaders } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RkAuthService } from '@reskin/core/services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class TokenInterceptor implements HttpInterceptor {
|
|
6
|
+
private service;
|
|
7
|
+
constructor(service: RkAuthService);
|
|
8
|
+
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TokenInterceptor, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TokenInterceptor>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 请求头增加token验证拦截器
|
|
14
|
+
*/
|
|
15
|
+
export declare function providerAuthToken(): {
|
|
16
|
+
provide: import("@angular/core").InjectionToken<HttpInterceptor[]>;
|
|
17
|
+
useClass: typeof TokenInterceptor;
|
|
18
|
+
multi: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* 不带token验证信息请求
|
|
22
|
+
* @param urls 地址
|
|
23
|
+
* @param params 参数
|
|
24
|
+
* @constructor
|
|
25
|
+
*/
|
|
26
|
+
export declare function NoAuthTokenTemplate(urls: TemplateStringsArray, ...params: any[]): [string, {
|
|
27
|
+
headers: HttpHeaders;
|
|
28
|
+
}];
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reskin/core",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public",
|
|
6
|
+
"registry": "https://registry.npmjs.org/"
|
|
7
|
+
},
|
|
8
|
+
"peerDependencies": {
|
|
9
|
+
"@angular/common": "^12.2.0",
|
|
10
|
+
"@angular/core": "^12.2.0"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"tslib": "^2.3.0"
|
|
14
|
+
},
|
|
15
|
+
"main": "bundles/reskin-core.umd.js",
|
|
16
|
+
"module": "fesm2015/reskin-core.js",
|
|
17
|
+
"es2015": "fesm2015/reskin-core.js",
|
|
18
|
+
"esm2015": "esm2015/reskin-core.js",
|
|
19
|
+
"fesm2015": "fesm2015/reskin-core.js",
|
|
20
|
+
"typings": "reskin-core.d.ts",
|
|
21
|
+
"sideEffects": false
|
|
22
|
+
}
|
package/public-api.d.ts
ADDED
package/reskin-core.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { RkAuthService } from './auth.service';
|
|
3
|
+
import { IAccountProfile, IAuthOrgGroup, IAuthPersonnelPool, IAuthWorkflow } from '@reskin/core/entity/user';
|
|
4
|
+
import { R } from '@reskin/core/entity';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class RkAccountService {
|
|
7
|
+
private http;
|
|
8
|
+
private auth;
|
|
9
|
+
private account;
|
|
10
|
+
constructor(http: HttpClient, auth: RkAuthService);
|
|
11
|
+
/**
|
|
12
|
+
* 加载人员权限
|
|
13
|
+
*/
|
|
14
|
+
onLoadAuth(): import("rxjs").Observable<R<any>>;
|
|
15
|
+
/**
|
|
16
|
+
* 获得账号基本信息
|
|
17
|
+
*/
|
|
18
|
+
get userInfo(): IAccountProfile;
|
|
19
|
+
/**
|
|
20
|
+
* 获得账号人员库权限
|
|
21
|
+
*/
|
|
22
|
+
get personnelPool(): IAuthPersonnelPool;
|
|
23
|
+
/**
|
|
24
|
+
* 获得账号业务权限
|
|
25
|
+
*/
|
|
26
|
+
get workflowAuth(): IAuthWorkflow;
|
|
27
|
+
/**
|
|
28
|
+
* 获得账号机构分组权限
|
|
29
|
+
*/
|
|
30
|
+
get authOrgGroup(): Array<IAuthOrgGroup>;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RkAccountService, never>;
|
|
32
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RkAccountService>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { Title } from '@angular/platform-browser';
|
|
3
|
+
import { Env, WC } from '@reskin/core/entity';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* 项目环境变量配置 Token
|
|
7
|
+
*/
|
|
8
|
+
export declare const RK_ENVIRONMENT: InjectionToken<unknown>;
|
|
9
|
+
export declare class AppConfig {
|
|
10
|
+
private env;
|
|
11
|
+
private title;
|
|
12
|
+
/**
|
|
13
|
+
* 项目配置项
|
|
14
|
+
*/
|
|
15
|
+
static settings: WC;
|
|
16
|
+
constructor(env: Env, title: Title);
|
|
17
|
+
/**
|
|
18
|
+
* 加载配置
|
|
19
|
+
*/
|
|
20
|
+
onLoad(): Promise<WC>;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppConfig, never>;
|
|
22
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AppConfig>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 项目初始化配置
|
|
26
|
+
* @param environment
|
|
27
|
+
*/
|
|
28
|
+
export declare function providerAppConfig(environment: Env): (typeof AppConfig | {
|
|
29
|
+
provide: InjectionToken<unknown>;
|
|
30
|
+
useValue: Env;
|
|
31
|
+
useFactory?: undefined;
|
|
32
|
+
deps?: undefined;
|
|
33
|
+
multi?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
provide: InjectionToken<readonly (() => void | import("rxjs").Observable<unknown> | Promise<unknown>)[]>;
|
|
36
|
+
useFactory: (appConfig: AppConfig) => () => Promise<WC>;
|
|
37
|
+
deps: (typeof AppConfig)[];
|
|
38
|
+
multi: boolean;
|
|
39
|
+
useValue?: undefined;
|
|
40
|
+
})[];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { IAuth } from '@reskin/core/entity/user';
|
|
3
|
+
import { Env, R } from '@reskin/core/entity';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class RkAuthService {
|
|
6
|
+
private env;
|
|
7
|
+
private http;
|
|
8
|
+
private auth;
|
|
9
|
+
constructor(env: Env, http: HttpClient);
|
|
10
|
+
/**
|
|
11
|
+
* 系统登录
|
|
12
|
+
* @param data 验证信息
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
onLogin(data: string): import("rxjs").Observable<R<any>>;
|
|
16
|
+
/**
|
|
17
|
+
* 注销系统
|
|
18
|
+
*/
|
|
19
|
+
onLogout(): import("rxjs").Observable<R<any>>;
|
|
20
|
+
/**
|
|
21
|
+
* 获得 token
|
|
22
|
+
*/
|
|
23
|
+
get token(): IAuth;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RkAuthService, never>;
|
|
25
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RkAuthService>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { HttpEvent, HttpHeaders } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class RkCacheHttpService {
|
|
5
|
+
private cache;
|
|
6
|
+
/**
|
|
7
|
+
* 获得已缓存的请求
|
|
8
|
+
* @param url GET请求地址
|
|
9
|
+
*/
|
|
10
|
+
get<T>(url: string): Observable<HttpEvent<unknown>> | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* 缓存请求
|
|
13
|
+
* @param url GET请求地址
|
|
14
|
+
* @param response 响应内容
|
|
15
|
+
*/
|
|
16
|
+
set<T>(url: string, response: Observable<HttpEvent<T>>): void;
|
|
17
|
+
/**
|
|
18
|
+
* 删除指定已缓存的请求
|
|
19
|
+
* @param url GET请求地址
|
|
20
|
+
*/
|
|
21
|
+
delete(url: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* 删除所有已缓存的请求
|
|
24
|
+
*/
|
|
25
|
+
clear(): void;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RkCacheHttpService, never>;
|
|
27
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RkCacheHttpService>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 设置为缓存请求
|
|
31
|
+
* 使用方法:http.get(...CacheHttpTemplate`api/response.json`)
|
|
32
|
+
* @param urls 请求地址
|
|
33
|
+
* @param params 模板参数
|
|
34
|
+
*/
|
|
35
|
+
export declare function CacheHttpTemplate(urls: TemplateStringsArray, ...params: any[]): [string, {
|
|
36
|
+
headers: HttpHeaders;
|
|
37
|
+
}];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class RkDestroyService extends Subject<void> implements OnDestroy {
|
|
5
|
+
ngOnDestroy(): void;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RkDestroyService, never>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RkDestroyService>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { IDictionaryBaseInfo, IDictionaryItem } from '@reskin/core/entity/dictionary';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class RkDictionaryService {
|
|
6
|
+
private http;
|
|
7
|
+
private useItems;
|
|
8
|
+
constructor(http: HttpClient);
|
|
9
|
+
/**
|
|
10
|
+
* 通过字典编码获得常用项
|
|
11
|
+
* @param code 字典编码
|
|
12
|
+
* @returns 常用项
|
|
13
|
+
*/
|
|
14
|
+
getUseItems(code: string): IDictionaryItem[];
|
|
15
|
+
/**
|
|
16
|
+
* 通过字典编码设置常用项
|
|
17
|
+
* @param code 字典编码
|
|
18
|
+
* @param item 常用项
|
|
19
|
+
*/
|
|
20
|
+
setUseItems(code: string, item: IDictionaryItem): void;
|
|
21
|
+
/**
|
|
22
|
+
* 通过字典编码获得字典基本信息
|
|
23
|
+
* @param code 字典编码
|
|
24
|
+
* @returns 字典基本信息
|
|
25
|
+
*/
|
|
26
|
+
getBaseInfo(code: string): Observable<IDictionaryBaseInfo>;
|
|
27
|
+
/**
|
|
28
|
+
* 通过字典编码获得获得字典项
|
|
29
|
+
* @param code 字典编码
|
|
30
|
+
* @returns 字典项列表
|
|
31
|
+
*/
|
|
32
|
+
getData(code: string): Observable<IDictionaryItem[]>;
|
|
33
|
+
/**
|
|
34
|
+
* 通过父节点获得字典项编码
|
|
35
|
+
* @param code 字典编码
|
|
36
|
+
* @param parentId 父节点编码
|
|
37
|
+
* @returns 字典项列表
|
|
38
|
+
*/
|
|
39
|
+
getChildData(code: string, parentId?: string): Observable<IDictionaryItem[]>;
|
|
40
|
+
private codeReplace;
|
|
41
|
+
/**
|
|
42
|
+
* 通过字典编码获得获得字典项
|
|
43
|
+
* @param code 字典编码
|
|
44
|
+
* @param keyword 关键字
|
|
45
|
+
* @returns 字典项列表
|
|
46
|
+
*/
|
|
47
|
+
requestSearchData(code: string, keyword: string): Observable<any>;
|
|
48
|
+
/**
|
|
49
|
+
* 获得字典项的所有父节点
|
|
50
|
+
* @param code 字典编码
|
|
51
|
+
* @param id 字典项编码
|
|
52
|
+
* @returns 字典项列表
|
|
53
|
+
*/
|
|
54
|
+
requestParentList(code: string, id: string): Observable<IDictionaryItem[]>;
|
|
55
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RkDictionaryService, never>;
|
|
56
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RkDictionaryService>;
|
|
57
|
+
}
|