@reskin/core 0.0.1 → 0.0.2

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.
Files changed (105) hide show
  1. package/README.md +1 -25
  2. package/bundles/reskin-core-classes.umd.js +3 -0
  3. package/bundles/reskin-core-classes.umd.js.map +1 -1
  4. package/bundles/reskin-core-directives.umd.js.map +1 -1
  5. package/bundles/reskin-core-entity-field.umd.js.map +1 -1
  6. package/bundles/reskin-core-entity-menu.umd.js.map +1 -1
  7. package/bundles/reskin-core-entity-org.umd.js +3 -3
  8. package/bundles/reskin-core-entity-org.umd.js.map +1 -1
  9. package/bundles/reskin-core-entity-scheme.umd.js.map +1 -1
  10. package/bundles/reskin-core-guards.umd.js.map +1 -1
  11. package/bundles/reskin-core-interceptors.umd.js +1 -1
  12. package/bundles/reskin-core-interceptors.umd.js.map +1 -1
  13. package/bundles/reskin-core-services.umd.js +231 -56
  14. package/bundles/reskin-core-services.umd.js.map +1 -1
  15. package/bundles/reskin-core-utils.umd.js +45 -12
  16. package/bundles/reskin-core-utils.umd.js.map +1 -1
  17. package/classes/table.helper.d.ts +0 -9
  18. package/entity/file/IUploadFileData.d.ts +1 -1
  19. package/entity/org/OrgTypeEnum.d.ts +3 -3
  20. package/esm2015/classes/public-api.js +1 -1
  21. package/esm2015/classes/table.helper.js +4 -1
  22. package/esm2015/directives/auth.directive.js +1 -1
  23. package/esm2015/directives/directives.module.js +1 -1
  24. package/esm2015/directives/public-api.js +1 -1
  25. package/esm2015/entity/Env.js +1 -1
  26. package/esm2015/entity/IPage.js +1 -1
  27. package/esm2015/entity/R.js +1 -1
  28. package/esm2015/entity/WC.js +1 -1
  29. package/esm2015/entity/dictionary/IDictionaryBaseInfo.js +1 -1
  30. package/esm2015/entity/dictionary/IDictionaryItem.js +1 -1
  31. package/esm2015/entity/dictionary/public-api.js +1 -1
  32. package/esm2015/entity/field/ColumnTypeEnum.js +1 -1
  33. package/esm2015/entity/field/ITableField.js +1 -1
  34. package/esm2015/entity/field/public-api.js +1 -1
  35. package/esm2015/entity/file/IUploadFileData.js +1 -1
  36. package/esm2015/entity/file/public-api.js +1 -1
  37. package/esm2015/entity/menu/IMenu.js +1 -1
  38. package/esm2015/entity/menu/MenuTypeEnum.js +1 -1
  39. package/esm2015/entity/menu/public-api.js +1 -1
  40. package/esm2015/entity/org/IOrgTreeNode.js +1 -1
  41. package/esm2015/entity/org/OrgTypeEnum.js +4 -4
  42. package/esm2015/entity/org/public-api.js +1 -1
  43. package/esm2015/entity/public-api.js +1 -1
  44. package/esm2015/entity/scheme/IFieldScheme.js +1 -1
  45. package/esm2015/entity/scheme/IScheme.js +1 -1
  46. package/esm2015/entity/scheme/SchemeEditTypeEnum.js +1 -1
  47. package/esm2015/entity/scheme/public-api.js +1 -1
  48. package/esm2015/entity/user/IAuth.js +1 -1
  49. package/esm2015/entity/user/IAuthAccount.js +1 -1
  50. package/esm2015/entity/user/public-api.js +1 -1
  51. package/esm2015/guards/auth.guard.js +1 -1
  52. package/esm2015/guards/public-api.js +1 -1
  53. package/esm2015/interceptors/blob.interceptor.js +1 -1
  54. package/esm2015/interceptors/cache.interceptor.js +1 -1
  55. package/esm2015/interceptors/error.interceptor.js +2 -2
  56. package/esm2015/interceptors/public-api.js +1 -1
  57. package/esm2015/interceptors/token.interceptor.js +1 -1
  58. package/esm2015/services/account.service.js +15 -2
  59. package/esm2015/services/app.config.js +27 -5
  60. package/esm2015/services/auth.service.js +11 -2
  61. package/esm2015/services/cache.http.service.js +34 -12
  62. package/esm2015/services/destroy.service.js +10 -1
  63. package/esm2015/services/dictionary.service.js +20 -13
  64. package/esm2015/services/down.file.service.js +15 -7
  65. package/esm2015/services/field.scheme.service.js +19 -6
  66. package/esm2015/services/file.service.js +54 -11
  67. package/esm2015/services/menu.service.js +18 -1
  68. package/esm2015/services/org.service.js +4 -2
  69. package/esm2015/services/public-api.js +1 -1
  70. package/esm2015/services/scheme.service.js +20 -6
  71. package/esm2015/utils/array.js +14 -3
  72. package/esm2015/utils/dom.js +13 -3
  73. package/esm2015/utils/public-api.js +1 -1
  74. package/esm2015/utils/store.js +21 -9
  75. package/fesm2015/reskin-core-classes.js +3 -0
  76. package/fesm2015/reskin-core-classes.js.map +1 -1
  77. package/fesm2015/reskin-core-directives.js.map +1 -1
  78. package/fesm2015/reskin-core-entity-field.js.map +1 -1
  79. package/fesm2015/reskin-core-entity-menu.js.map +1 -1
  80. package/fesm2015/reskin-core-entity-org.js +3 -3
  81. package/fesm2015/reskin-core-entity-org.js.map +1 -1
  82. package/fesm2015/reskin-core-entity-scheme.js.map +1 -1
  83. package/fesm2015/reskin-core-guards.js.map +1 -1
  84. package/fesm2015/reskin-core-interceptors.js +1 -1
  85. package/fesm2015/reskin-core-interceptors.js.map +1 -1
  86. package/fesm2015/reskin-core-services.js +235 -56
  87. package/fesm2015/reskin-core-services.js.map +1 -1
  88. package/fesm2015/reskin-core-utils.js +45 -12
  89. package/fesm2015/reskin-core-utils.js.map +1 -1
  90. package/package.json +1 -1
  91. package/services/account.service.d.ts +13 -1
  92. package/services/app.config.d.ts +12 -3
  93. package/services/auth.service.d.ts +2 -1
  94. package/services/cache.http.service.d.ts +30 -11
  95. package/services/destroy.service.d.ts +9 -0
  96. package/services/dictionary.service.d.ts +12 -12
  97. package/services/down.file.service.d.ts +14 -6
  98. package/services/field.scheme.service.d.ts +7 -3
  99. package/services/file.service.d.ts +45 -10
  100. package/services/menu.service.d.ts +4 -0
  101. package/services/org.service.d.ts +2 -1
  102. package/services/scheme.service.d.ts +8 -3
  103. package/utils/array.d.ts +6 -2
  104. package/utils/dom.d.ts +7 -2
  105. package/utils/store.d.ts +20 -8
@@ -3,16 +3,27 @@
3
3
  */
4
4
  let prefix = 'SK_';
5
5
  /**
6
- * 用于设置缓存值保存时key的前缀
7
- * @param newPrefix 前缀
6
+ * 设置存储前缀
7
+ *
8
+ * 该函数用于更改全局存储前缀,影响后续所有存储操作的键名前缀。
9
+ * 存储前缀的更改可能会影响已存储的数据被正确识别和访问。
10
+ *
11
+ * @param newPrefix 新的存储前缀字符串
8
12
  */
9
13
  export function setStorePrefix(newPrefix) {
10
14
  prefix = newPrefix;
11
15
  }
12
16
  /**
13
- * 创建缓存值
17
+ * 提供了一个用于缓存值的类,值可以被存储在浏览器的localStorage或sessionStorage中。
18
+ * 如果提供了过期时间,存储的值会在过期后自动移除。
14
19
  */
15
20
  export class Store {
21
+ /**
22
+ * 初始化Store类的实例。
23
+ * @param key 缓存值的键名。
24
+ * @param defaultValue 初始值,默认值会被存储并返回直到设置新的值。
25
+ * @param options 配置选项,包括存储引擎和过期时间。
26
+ */
16
27
  constructor(key, defaultValue, options) {
17
28
  this.value = defaultValue;
18
29
  // 进行初始设置
@@ -33,14 +44,15 @@ export class Store {
33
44
  }
34
45
  }
35
46
  /**
36
- * 获取值
47
+ * 获取当前缓存的值。
48
+ * @returns 缓存的值。
37
49
  */
38
50
  get() {
39
51
  return this.value;
40
52
  }
41
53
  /**
42
- * 设置值
43
- * @param newValue
54
+ * 设置新的缓存值。
55
+ * @param newValue 新的值。
44
56
  */
45
57
  set(newValue) {
46
58
  this.value = newValue;
@@ -52,8 +64,8 @@ export class Store {
52
64
  this.storage.setItem(this.storageKey(), value);
53
65
  }
54
66
  /**
55
- * 更新值
56
- * @param updateFn
67
+ * 使用提供的函数更新缓存的值。
68
+ * @param updateFn 一个接受当前值并返回新值的函数。
57
69
  */
58
70
  update(updateFn) {
59
71
  if (typeof updateFn === 'function') {
@@ -61,4 +73,4 @@ export class Store {
61
73
  }
62
74
  }
63
75
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJyYXJ5L2NvcmUvdXRpbHMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0E7O0dBRUc7QUFDSCxJQUFJLE1BQU0sR0FBVyxLQUFLLENBQUM7QUFFM0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUFpQjtJQUM1QyxNQUFNLEdBQUcsU0FBUyxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxLQUFLO0lBTWQsWUFBWSxHQUFXLEVBQUUsWUFBZSxFQUFFLE9BQXNCO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO1FBRTFCLFNBQVM7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEUsTUFBTSxFQUFFLGFBQWEsR0FBRyxjQUFjLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksRUFBRSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksV0FBVyxFQUFFO1lBQ2IsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pELGtCQUFrQjtZQUNsQixJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2FBQzlDO1NBQ0o7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHO1FBQ0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsUUFBVztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBRXRCLGtCQUFrQjtRQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLElBQUksRUFBRSxRQUFRO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQzFELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFFBQWdDO1FBQ25DLElBQUksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOe8k+WtmOmFjee9ruS/oeaBr1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTdG9yZU9wdGlvbnMge1xyXG4gICAgLyoqXHJcbiAgICAgKiDnvJPlrZjlrZjlgqjmlrnlvI9cclxuICAgICAqL1xyXG4gICAgc3RvcmFnZUVuZ2luZT86IFN0b3JhZ2U7XHJcbiAgICAvKipcclxuICAgICAqIOi/h+acn+aXtumXtCjmr6vnp5IpXHJcbiAgICAgKi9cclxuICAgIGV4cGlyZXM/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDpu5jorqTliY3nvIBcclxuICovXHJcbmxldCBwcmVmaXg6IHN0cmluZyA9ICdTS18nO1xyXG5cclxuLyoqXHJcbiAqIOeUqOS6juiuvue9rue8k+WtmOWAvOS/neWtmOaXtmtleeeahOWJjee8gFxyXG4gKiBAcGFyYW0gbmV3UHJlZml4IOWJjee8gFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNldFN0b3JlUHJlZml4KG5ld1ByZWZpeDogc3RyaW5nKSB7XHJcbiAgICBwcmVmaXggPSBuZXdQcmVmaXg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDliJvlu7rnvJPlrZjlgLxcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTdG9yZTxUPiB7XHJcbiAgICBwcml2YXRlIHZhbHVlOiBUO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlOiBTdG9yYWdlO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBleHBpcmVzPzogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlS2V5OiAoKSA9PiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogVCwgb3B0aW9ucz86IFN0b3JlT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBkZWZhdWx0VmFsdWU7XHJcblxyXG4gICAgICAgIC8vIOi/m+ihjOWIneWni+iuvue9rlxyXG4gICAgICAgIHRoaXMuc3RvcmFnZUtleSA9ICgpID0+IGBAJHtwcmVmaXh9XyR7a2V5fWAudG9Mb2NhbGVVcHBlckNhc2UoKTtcclxuICAgICAgICBjb25zdCB7IHN0b3JhZ2VFbmdpbmUgPSBzZXNzaW9uU3RvcmFnZSwgZXhwaXJlcyB9ID0gb3B0aW9ucyA/PyB7fTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlRW5naW5lO1xyXG4gICAgICAgIHRoaXMuZXhwaXJlcyA9IGV4cGlyZXM7XHJcblxyXG4gICAgICAgIGNvbnN0IHN0b3JlZFZhbHVlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KCkpO1xyXG4gICAgICAgIGlmIChzdG9yZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGRhdGEsIGV4cGlyeSB9ID0gSlNPTi5wYXJzZShzdG9yZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIC8vIOWIpOaWreaYr+WQpui/h+acn++8jOi/h+acn+WQjuWIoOmZpGtleVxyXG4gICAgICAgICAgICBpZiAoIWV4cGlyeSB8fCBleHBpcnkgPiBEYXRlLm5vdygpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0YTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuc3RvcmFnZUtleSgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOiOt+WPluWAvFxyXG4gICAgICovXHJcbiAgICBnZXQoKTogVCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva7lgLxcclxuICAgICAqIEBwYXJhbSBuZXdWYWx1ZVxyXG4gICAgICovXHJcbiAgICBzZXQobmV3VmFsdWU6IFQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XHJcblxyXG4gICAgICAgIC8vIOiuvue9ruWAvOaXtui/m+ihjFN0b3JhZ2Xorr7nva5cclxuICAgICAgICBjb25zdCB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgZGF0YTogbmV3VmFsdWUsXHJcbiAgICAgICAgICAgIGV4cGlyeTogdGhpcy5leHBpcmVzID8gRGF0ZS5ub3coKSArIHRoaXMuZXhwaXJlcyA6IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5KCksIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOabtOaWsOWAvFxyXG4gICAgICogQHBhcmFtIHVwZGF0ZUZuXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZSh1cGRhdGVGbjogKGN1cnJlbnRWYWx1ZTogVCkgPT4gVCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXQodXBkYXRlRm4odGhpcy52YWx1ZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJyYXJ5L2NvcmUvdXRpbHMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0E7O0dBRUc7QUFDSCxJQUFJLE1BQU0sR0FBVyxLQUFLLENBQUM7QUFFM0I7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBaUI7SUFDNUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUN2QixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLEtBQUs7SUFNZDs7Ozs7T0FLRztJQUNILFlBQVksR0FBVyxFQUFFLFlBQWUsRUFBRSxPQUFzQjtRQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUUxQixTQUFTO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sRUFBRSxhQUFhLEdBQUcsY0FBYyxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLFdBQVcsRUFBRTtZQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqRCxrQkFBa0I7WUFDbEIsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzthQUNyQjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzthQUM5QztTQUNKO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUc7UUFDQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxRQUFXO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFFdEIsa0JBQWtCO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDekIsSUFBSSxFQUFFLFFBQVE7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDMUQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsUUFBZ0M7UUFDbkMsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog57yT5a2Y6YWN572u5L+h5oGvXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlT3B0aW9ucyB7XHJcbiAgICAvKipcclxuICAgICAqIOe8k+WtmOWtmOWCqOaWueW8j1xyXG4gICAgICovXHJcbiAgICBzdG9yYWdlRW5naW5lPzogU3RvcmFnZTtcclxuICAgIC8qKlxyXG4gICAgICog6L+H5pyf5pe26Ze0KOavq+enkilcclxuICAgICAqL1xyXG4gICAgZXhwaXJlcz86IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIOm7mOiupOWJjee8gFxyXG4gKi9cclxubGV0IHByZWZpeDogc3RyaW5nID0gJ1NLXyc7XHJcblxyXG4vKipcclxuICog6K6+572u5a2Y5YKo5YmN57yAXHJcbiAqXHJcbiAqIOivpeWHveaVsOeUqOS6juabtOaUueWFqOWxgOWtmOWCqOWJjee8gO+8jOW9seWTjeWQjue7reaJgOacieWtmOWCqOaTjeS9nOeahOmUruWQjeWJjee8gOOAglxyXG4gKiDlrZjlgqjliY3nvIDnmoTmm7TmlLnlj6/og73kvJrlvbHlk43lt7LlrZjlgqjnmoTmlbDmja7ooqvmraPnoa7or4bliKvlkozorr/pl67jgIJcclxuICpcclxuICogQHBhcmFtIG5ld1ByZWZpeCDmlrDnmoTlrZjlgqjliY3nvIDlrZfnrKbkuLJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRTdG9yZVByZWZpeChuZXdQcmVmaXg6IHN0cmluZykge1xyXG4gICAgcHJlZml4ID0gbmV3UHJlZml4O1xyXG59XHJcblxyXG4vKipcclxuICog5o+Q5L6b5LqG5LiA5Liq55So5LqO57yT5a2Y5YC855qE57G777yM5YC85Y+v5Lul6KKr5a2Y5YKo5Zyo5rWP6KeI5Zmo55qEbG9jYWxTdG9yYWdl5oiWc2Vzc2lvblN0b3JhZ2XkuK3jgIJcclxuICog5aaC5p6c5o+Q5L6b5LqG6L+H5pyf5pe26Ze077yM5a2Y5YKo55qE5YC85Lya5Zyo6L+H5pyf5ZCO6Ieq5Yqo56e76Zmk44CCXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RvcmU8VD4ge1xyXG4gICAgcHJpdmF0ZSB2YWx1ZTogVDtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZTogU3RvcmFnZTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhwaXJlcz86IG51bWJlcjtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZUtleTogKCkgPT4gc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yid5aeL5YyWU3RvcmXnsbvnmoTlrp7kvovjgIJcclxuICAgICAqIEBwYXJhbSBrZXkg57yT5a2Y5YC855qE6ZSu5ZCN44CCXHJcbiAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIOWIneWni+WAvO+8jOm7mOiupOWAvOS8muiiq+WtmOWCqOW5tui/lOWbnuebtOWIsOiuvue9ruaWsOeahOWAvOOAglxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMg6YWN572u6YCJ6aG577yM5YyF5ous5a2Y5YKo5byV5pOO5ZKM6L+H5pyf5pe26Ze044CCXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQsIG9wdGlvbnM/OiBTdG9yZU9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG5cclxuICAgICAgICAvLyDov5vooYzliJ3lp4vorr7nva5cclxuICAgICAgICB0aGlzLnN0b3JhZ2VLZXkgPSAoKSA9PiBgQCR7cHJlZml4fV8ke2tleX1gLnRvTG9jYWxlVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgeyBzdG9yYWdlRW5naW5lID0gc2Vzc2lvblN0b3JhZ2UsIGV4cGlyZXMgfSA9IG9wdGlvbnMgPz8ge307XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZUVuZ2luZTtcclxuICAgICAgICB0aGlzLmV4cGlyZXMgPSBleHBpcmVzO1xyXG5cclxuICAgICAgICBjb25zdCBzdG9yZWRWYWx1ZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSgpKTtcclxuICAgICAgICBpZiAoc3RvcmVkVmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBkYXRhLCBleHBpcnkgfSA9IEpTT04ucGFyc2Uoc3RvcmVkVmFsdWUpO1xyXG4gICAgICAgICAgICAvLyDliKTmlq3mmK/lkKbov4fmnJ/vvIzov4fmnJ/lkI7liKDpmaRrZXlcclxuICAgICAgICAgICAgaWYgKCFleHBpcnkgfHwgZXhwaXJ5ID4gRGF0ZS5ub3coKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGE7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnN0b3JhZ2VLZXkoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5blvZPliY3nvJPlrZjnmoTlgLzjgIJcclxuICAgICAqIEByZXR1cm5zIOe8k+WtmOeahOWAvOOAglxyXG4gICAgICovXHJcbiAgICBnZXQoKTogVCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva7mlrDnmoTnvJPlrZjlgLzjgIJcclxuICAgICAqIEBwYXJhbSBuZXdWYWx1ZSDmlrDnmoTlgLzjgIJcclxuICAgICAqL1xyXG4gICAgc2V0KG5ld1ZhbHVlOiBUKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgICAgICAvLyDorr7nva7lgLzml7bov5vooYxTdG9yYWdl6K6+572uXHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgIGRhdGE6IG5ld1ZhbHVlLFxyXG4gICAgICAgICAgICBleHBpcnk6IHRoaXMuZXhwaXJlcyA/IERhdGUubm93KCkgKyB0aGlzLmV4cGlyZXMgOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleSgpLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDkvb/nlKjmj5DkvpvnmoTlh73mlbDmm7TmlrDnvJPlrZjnmoTlgLzjgIJcclxuICAgICAqIEBwYXJhbSB1cGRhdGVGbiDkuIDkuKrmjqXlj5flvZPliY3lgLzlubbov5Tlm57mlrDlgLznmoTlh73mlbDjgIJcclxuICAgICAqL1xyXG4gICAgdXBkYXRlKHVwZGF0ZUZuOiAoY3VycmVudFZhbHVlOiBUKSA9PiBUKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVGbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLnNldCh1cGRhdGVGbih0aGlzLnZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -12,8 +12,11 @@ class RkTableHelper {
12
12
  this.shortCode = shortCode;
13
13
  const { TABLE_CODE } = AppConfig.settings.servers;
14
14
  let type = '';
15
+ // 获取短表名首字符
15
16
  const firstChar = this.shortCode.charAt(0);
17
+ // 检查短表名是否为空
16
18
  const isNotEmpty = Boolean(this.shortCode);
19
+ // 根据首字符判断表类型
17
20
  if (isNotEmpty && ['A', 'B'].includes(firstChar)) {
18
21
  type = firstChar === 'A' ? 'PERSON' : 'UNIT';
19
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-classes.js","sources":["../../../library/core/classes/table.helper.ts","../../../library/core/classes/reskin-core-classes.ts"],"sourcesContent":["import { AppConfig } from '@reskin/core/services';\r\n\r\n/**\r\n * 通过短表名构造完整表名;主要用于区分不同项目\r\n */\r\nexport class RkTableHelper {\r\n /**\r\n * 表名\r\n */\r\n name!: string;\r\n /**\r\n * 对应主键\r\n */\r\n key!: string;\r\n /**\r\n * 对应外键\r\n */\r\n fKey!: string;\r\n\r\n /**\r\n * 构造完整表名\r\n * @param shortCode 短表名(A01,B02...)\r\n */\r\n constructor(private shortCode: string) {\r\n const { TABLE_CODE } = AppConfig.settings.servers;\r\n let type = '';\r\n\r\n const firstChar = this.shortCode.charAt(0);\r\n const isNotEmpty = Boolean(this.shortCode);\r\n if (isNotEmpty && ['A', 'B'].includes(firstChar)) {\r\n type = firstChar === 'A' ? 'PERSON' : 'UNIT';\r\n } else {\r\n throw 'new TableCode() 参数非A,B开头';\r\n }\r\n\r\n // 构造表名\r\n this.name = `DATA_${TABLE_CODE}_${type}_${this.shortCode}`;\r\n\r\n // 构造主键\r\n this.key = `${this.name}_ID`;\r\n\r\n // 构造外键\r\n if (isNotEmpty && this.shortCode !== `${firstChar}01`) {\r\n this.fKey = `${this.name}_${firstChar}01_ID`;\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAEA;;AAEG;MACU,aAAa,CAAA;AActB;;;AAGG;AACH,IAAA,WAAA,CAAoB,SAAiB,EAAA;QAAjB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,IAAI,GAAG,SAAS,KAAK,GAAG,GAAG,QAAQ,GAAG,MAAM,CAAC;AAChD,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,0BAA0B,CAAC;AACpC,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,KAAA,EAAQ,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC;;QAG3D,IAAI,CAAC,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,KAAK,CAAC;;QAG7B,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI,EAAE;YACnD,IAAI,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,KAAA,CAAO,CAAC;AAChD,SAAA;KACJ;AACJ;;AC9CD;;AAEG;;;;"}
1
+ {"version":3,"file":"reskin-core-classes.js","sources":["../../../library/core/classes/table.helper.ts","../../../library/core/classes/reskin-core-classes.ts"],"sourcesContent":["import { AppConfig } from '@reskin/core/services';\r\n\r\n/**\r\n * 通过短表名构造完整表名;主要用于区分不同项目\r\n */\r\nexport class RkTableHelper {\r\n // 表名\r\n name!: string;\r\n // 对应主键\r\n key!: string;\r\n // 对应外键\r\n fKey!: string;\r\n\r\n /**\r\n * 构造完整表名\r\n * @param shortCode 短表名(A01,B02...)\r\n */\r\n constructor(private shortCode: string) {\r\n const { TABLE_CODE } = AppConfig.settings.servers;\r\n let type = '';\r\n\r\n // 获取短表名首字符\r\n const firstChar = this.shortCode.charAt(0);\r\n // 检查短表名是否为空\r\n const isNotEmpty = Boolean(this.shortCode);\r\n // 根据首字符判断表类型\r\n if (isNotEmpty && ['A', 'B'].includes(firstChar)) {\r\n type = firstChar === 'A' ? 'PERSON' : 'UNIT';\r\n } else {\r\n throw 'new TableCode() 参数非A,B开头';\r\n }\r\n\r\n // 构造表名\r\n this.name = `DATA_${TABLE_CODE}_${type}_${this.shortCode}`;\r\n\r\n // 构造主键\r\n this.key = `${this.name}_ID`;\r\n\r\n // 构造外键\r\n if (isNotEmpty && this.shortCode !== `${firstChar}01`) {\r\n this.fKey = `${this.name}_${firstChar}01_ID`;\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAEA;;AAEG;MACU,aAAa,CAAA;AAQtB;;;AAGG;AACH,IAAA,WAAA,CAAoB,SAAiB,EAAA;QAAjB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,IAAI,IAAI,GAAG,EAAE,CAAC;;QAGd,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;QAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;AAE3C,QAAA,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,IAAI,GAAG,SAAS,KAAK,GAAG,GAAG,QAAQ,GAAG,MAAM,CAAC;AAChD,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,0BAA0B,CAAC;AACpC,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,KAAA,EAAQ,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC;;QAG3D,IAAI,CAAC,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,KAAK,CAAC;;QAG7B,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI,EAAE;YACnD,IAAI,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,KAAA,CAAO,CAAC;AAChD,SAAA;KACJ;AACJ;;AC3CD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-directives.js","sources":["../../../library/core/directives/auth.directive.ts","../../../library/core/directives/directives.module.ts","../../../library/core/directives/reskin-core-directives.ts"],"sourcesContent":["import { Directive, EmbeddedViewRef, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { RkMenuService } from '@reskin/core/services';\r\n\r\n@Directive({\r\n selector: '[auth]',\r\n})\r\nexport class RkAuthDirective implements OnDestroy {\r\n /**\r\n * 传递多个标识符时,逗号分隔,匹配按\"或者\"运算\r\n * @param condition\r\n */\r\n @Input()\r\n set auth(condition: string | string[]) {\r\n this.condition = condition;\r\n this.updateView();\r\n }\r\n\r\n @Input()\r\n set authThen(templateRef: TemplateRef<any> | null) {\r\n this.thenTemplateRef = templateRef;\r\n this.thenViewRef = null;\r\n this.updateView();\r\n }\r\n\r\n @Input()\r\n set authElse(templateRef: TemplateRef<any> | null) {\r\n this.elseTemplateRef = templateRef;\r\n this.elseViewRef = null;\r\n this.updateView();\r\n }\r\n\r\n constructor(\r\n private menu: RkMenuService,\r\n private viewContainerRef: ViewContainerRef,\r\n public templateRef: TemplateRef<any>,\r\n ) {\r\n this.thenTemplateRef = templateRef;\r\n }\r\n\r\n private condition: string | string[] = '';\r\n private thenTemplateRef: TemplateRef<any> | null = null;\r\n private elseTemplateRef: TemplateRef<any> | null = null;\r\n private thenViewRef: EmbeddedViewRef<any> | null = null;\r\n private elseViewRef: EmbeddedViewRef<any> | null = null;\r\n private authSubscription?: Subscription;\r\n\r\n ngOnDestroy() {\r\n this.authSubscription?.unsubscribe();\r\n }\r\n\r\n private updateView() {\r\n this.authSubscription?.unsubscribe();\r\n this.authSubscription = this.hasAuth(this.condition).subscribe((context) => {\r\n this.viewContainerRef.clear();\r\n if (context.status) {\r\n if (this.thenTemplateRef) {\r\n this.thenViewRef = this.viewContainerRef.createEmbeddedView(this.thenTemplateRef, context);\r\n }\r\n } else {\r\n if (this.elseTemplateRef) {\r\n this.elseViewRef = this.viewContainerRef.createEmbeddedView(this.elseTemplateRef, context);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private hasAuth(tags: string | string[]) {\r\n const tagList: string[] = typeof tags === 'string' ? [tags] : tags;\r\n return this.menu.requestData().pipe(\r\n map((json) => {\r\n const menus = json.data.filter((menu) => tagList.includes(menu.SYSTEM_RESOURCE_GUARD_ID));\r\n if (!menus.length) return { $implicit: [], status: false };\r\n return {\r\n $implicit: typeof tags === 'string' ? menus[0] : menus,\r\n status: !!menus.length,\r\n };\r\n }),\r\n );\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RkAuthDirective } from './auth.directive';\r\n\r\n@NgModule({\r\n declarations: [RkAuthDirective],\r\n exports: [RkAuthDirective],\r\n})\r\nexport class RkDirectivesModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAQa,eAAe,CAAA;AAyBxB,IAAA,WAAA,CACY,IAAmB,EACnB,gBAAkC,EACnC,WAA6B,EAAA;QAF5B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAe;QACnB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACnC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;QAKhC,IAAS,CAAA,SAAA,GAAsB,EAAE,CAAC;QAClC,IAAe,CAAA,eAAA,GAA4B,IAAI,CAAC;QAChD,IAAe,CAAA,eAAA,GAA4B,IAAI,CAAC;QAChD,IAAW,CAAA,WAAA,GAAgC,IAAI,CAAC;QAChD,IAAW,CAAA,WAAA,GAAgC,IAAI,CAAC;AAPpD,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;KACtC;AA9BD;;;AAGG;IACH,IACI,IAAI,CAAC,SAA4B,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,IACI,QAAQ,CAAC,WAAoC,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,IACI,QAAQ,CAAC,WAAoC,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAiBD,WAAW,GAAA;;AACP,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;KACxC;IAEO,UAAU,GAAA;;AACd,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACvE,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChB,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAC9F,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAC9F,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,OAAO,CAAC,IAAuB,EAAA;AACnC,QAAA,MAAM,OAAO,GAAa,OAAO,IAAI,KAAK,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,IAAI,KAAI;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC3D,OAAO;AACH,gBAAA,SAAS,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AACtD,gBAAA,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;aACzB,CAAC;SACL,CAAC,CACL,CAAC;KACL;;6GAxEQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAf,eAAe,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA,CAAA;6JAOO,IAAI,EAAA,CAAA;sBADP,KAAK;gBAOF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAQF,QAAQ,EAAA,CAAA;sBADX,KAAK;;;MCnBG,kBAAkB,CAAA;;gHAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;iHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAHZ,eAAe,CAAA,EAAA,OAAA,EAAA,CACpB,eAAe,CAAA,EAAA,CAAA,CAAA;iHAEhB,kBAAkB,EAAA,CAAA,CAAA;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,eAAe,CAAC;oBAC/B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC7B,iBAAA,CAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"reskin-core-directives.js","sources":["../../../library/core/directives/auth.directive.ts","../../../library/core/directives/directives.module.ts","../../../library/core/directives/reskin-core-directives.ts"],"sourcesContent":["import { Directive, EmbeddedViewRef, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { RkMenuService } from '@reskin/core/services';\n\n@Directive({\n selector: '[auth]',\n})\nexport class RkAuthDirective implements OnDestroy {\n /**\n * 传递多个标识符时,逗号分隔,匹配按\"或者\"运算\n * @param condition\n */\n @Input()\n set auth(condition: string | string[]) {\n this.condition = condition;\n this.updateView();\n }\n\n @Input()\n set authThen(templateRef: TemplateRef<any> | null) {\n this.thenTemplateRef = templateRef;\n this.thenViewRef = null;\n this.updateView();\n }\n\n @Input()\n set authElse(templateRef: TemplateRef<any> | null) {\n this.elseTemplateRef = templateRef;\n this.elseViewRef = null;\n this.updateView();\n }\n\n constructor(\n private menu: RkMenuService,\n private viewContainerRef: ViewContainerRef,\n public templateRef: TemplateRef<any>,\n ) {\n this.thenTemplateRef = templateRef;\n }\n\n private condition: string | string[] = '';\n private thenTemplateRef: TemplateRef<any> | null = null;\n private elseTemplateRef: TemplateRef<any> | null = null;\n private thenViewRef: EmbeddedViewRef<any> | null = null;\n private elseViewRef: EmbeddedViewRef<any> | null = null;\n private authSubscription?: Subscription;\n\n ngOnDestroy() {\n this.authSubscription?.unsubscribe();\n }\n\n private updateView() {\n this.authSubscription?.unsubscribe();\n this.authSubscription = this.hasAuth(this.condition).subscribe((context) => {\n this.viewContainerRef.clear();\n if (context.status) {\n if (this.thenTemplateRef) {\n this.thenViewRef = this.viewContainerRef.createEmbeddedView(this.thenTemplateRef, context);\n }\n } else {\n if (this.elseTemplateRef) {\n this.elseViewRef = this.viewContainerRef.createEmbeddedView(this.elseTemplateRef, context);\n }\n }\n });\n }\n\n private hasAuth(tags: string | string[]) {\n const tagList: string[] = typeof tags === 'string' ? [tags] : tags;\n return this.menu.requestData().pipe(\n map((json) => {\n const menus = json.data.filter((menu) => tagList.includes(menu.SYSTEM_RESOURCE_GUARD_ID));\n if (!menus.length) return { $implicit: [], status: false };\n return {\n $implicit: typeof tags === 'string' ? menus[0] : menus,\n status: !!menus.length,\n };\n }),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RkAuthDirective } from './auth.directive';\n\n@NgModule({\n declarations: [RkAuthDirective],\n exports: [RkAuthDirective],\n})\nexport class RkDirectivesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-entity-field.js","sources":["../../../library/core/entity/field/ColumnTypeEnum.ts","../../../library/core/entity/field/reskin-core-entity-field.ts"],"sourcesContent":["/**\r\n * 字段类型状态\r\n */\r\nexport enum ColumnTypeEnum {\r\n /**\r\n * 主键ID类型\r\n */\r\n ID = 0,\r\n /**\r\n * 不可变字符串\r\n */\r\n CHAR = 1,\r\n /**\r\n * 可变字符串\r\n */\r\n VARCHAR = 2,\r\n /**\r\n * 数字型\r\n */\r\n NUMBER = 3,\r\n /**\r\n * 时间日期\r\n */\r\n DATE = 4,\r\n /**\r\n * 是否\r\n */\r\n BOOLEAN = 5,\r\n /**\r\n * 备注\r\n */\r\n CLOB = 6,\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG;IACS,eA6BX;AA7BD,CAAA,UAAY,cAAc,EAAA;AACtB;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAM,CAAA;AACN;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACZ,CAAC,EA7BW,cAAc,KAAd,cAAc,GA6BzB,EAAA,CAAA,CAAA;;AChCD;;AAEG;;;;"}
1
+ {"version":3,"file":"reskin-core-entity-field.js","sources":["../../../library/core/entity/field/ColumnTypeEnum.ts","../../../library/core/entity/field/reskin-core-entity-field.ts"],"sourcesContent":["/**\n * 字段类型状态\n */\nexport enum ColumnTypeEnum {\n /**\n * 主键ID类型\n */\n ID = 0,\n /**\n * 不可变字符串\n */\n CHAR = 1,\n /**\n * 可变字符串\n */\n VARCHAR = 2,\n /**\n * 数字型\n */\n NUMBER = 3,\n /**\n * 时间日期\n */\n DATE = 4,\n /**\n * 是否\n */\n BOOLEAN = 5,\n /**\n * 备注\n */\n CLOB = 6,\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG;IACS,eA6BX;AA7BD,CAAA,UAAY,cAAc,EAAA;AACtB;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAM,CAAA;AACN;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACZ,CAAC,EA7BW,cAAc,KAAd,cAAc,GA6BzB,EAAA,CAAA,CAAA;;AChCD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-entity-menu.js","sources":["../../../library/core/entity/menu/MenuTypeEnum.ts","../../../library/core/entity/menu/reskin-core-entity-menu.ts"],"sourcesContent":["/**\r\n * 系统菜单\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum MenuTypeEnum {\r\n /**\r\n * 目录\r\n */\r\n CATALOG = 0,\r\n /**\r\n * 菜单\r\n */\r\n MENU = 1,\r\n /**\r\n * 按钮\r\n */\r\n BUTTON = 2,\r\n /**\r\n * 元素\r\n */\r\n ELEMENT = 3,\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;;;;AAKG;IACS,aAiBX;AAjBD,CAAA,UAAY,YAAY,EAAA;AACpB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACf,CAAC,EAjBW,YAAY,KAAZ,YAAY,GAiBvB,EAAA,CAAA,CAAA;;ACvBD;;AAEG;;;;"}
1
+ {"version":3,"file":"reskin-core-entity-menu.js","sources":["../../../library/core/entity/menu/MenuTypeEnum.ts","../../../library/core/entity/menu/reskin-core-entity-menu.ts"],"sourcesContent":["/**\n * 系统菜单\n *\n * @export\n * @enum {number}\n */\nexport enum MenuTypeEnum {\n /**\n * 目录\n */\n CATALOG = 0,\n /**\n * 菜单\n */\n MENU = 1,\n /**\n * 按钮\n */\n BUTTON = 2,\n /**\n * 元素\n */\n ELEMENT = 3,\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;;;;AAKG;IACS,aAiBX;AAjBD,CAAA,UAAY,YAAY,EAAA;AACpB;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV;;AAEG;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACf,CAAC,EAjBW,YAAY,KAAZ,YAAY,GAiBvB,EAAA,CAAA,CAAA;;ACvBD;;AAEG;;;;"}
@@ -21,13 +21,13 @@ var OrgTypeEnum;
21
21
  */
22
22
  const OrgTypeCName = {
23
23
  [OrgTypeEnum.VIRTUAL_NODE]: {
24
- label: '虚拟节点',
24
+ name: '虚拟节点',
25
25
  },
26
26
  [OrgTypeEnum.UNIT]: {
27
- label: '单位',
27
+ name: '单位',
28
28
  },
29
29
  [OrgTypeEnum.DEPARTMENT]: {
30
- label: '部门',
30
+ name: '部门',
31
31
  },
32
32
  };
33
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-entity-org.js","sources":["../../../library/core/entity/org/OrgTypeEnum.ts","../../../library/core/entity/org/reskin-core-entity-org.ts"],"sourcesContent":["/**\r\n * 机构类型\r\n */\r\nexport enum OrgTypeEnum {\r\n /**\r\n * 虚拟节点\r\n */\r\n VIRTUAL_NODE = 0,\r\n /**\r\n * 单位\r\n */\r\n UNIT = 1,\r\n /**\r\n * 部门\r\n */\r\n DEPARTMENT = 2,\r\n}\r\n\r\n/**\r\n * 机构类型对应中文\r\n */\r\nexport const OrgTypeCName = {\r\n [OrgTypeEnum.VIRTUAL_NODE]: {\r\n label: '虚拟节点',\r\n },\r\n [OrgTypeEnum.UNIT]: {\r\n label: '单位',\r\n },\r\n [OrgTypeEnum.DEPARTMENT]: {\r\n label: '部门',\r\n },\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG;IACS,YAaX;AAbD,CAAA,UAAY,WAAW,EAAA;AACnB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EAbW,WAAW,KAAX,WAAW,GAatB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACU,MAAA,YAAY,GAAG;AACxB,IAAA,CAAC,WAAW,CAAC,YAAY,GAAG;AACxB,QAAA,KAAK,EAAE,MAAM;AAChB,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,IAAI,GAAG;AAChB,QAAA,KAAK,EAAE,IAAI;AACd,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,UAAU,GAAG;AACtB,QAAA,KAAK,EAAE,IAAI;AACd,KAAA;;;AC9BL;;AAEG;;;;"}
1
+ {"version":3,"file":"reskin-core-entity-org.js","sources":["../../../library/core/entity/org/OrgTypeEnum.ts","../../../library/core/entity/org/reskin-core-entity-org.ts"],"sourcesContent":["/**\n * 机构类型\n */\nexport enum OrgTypeEnum {\n /**\n * 虚拟节点\n */\n VIRTUAL_NODE = 0,\n /**\n * 单位\n */\n UNIT = 1,\n /**\n * 部门\n */\n DEPARTMENT = 2,\n}\n\n/**\n * 机构类型对应中文\n */\nexport const OrgTypeCName = {\n [OrgTypeEnum.VIRTUAL_NODE]: {\n name: '虚拟节点',\n },\n [OrgTypeEnum.UNIT]: {\n name: '单位',\n },\n [OrgTypeEnum.DEPARTMENT]: {\n name: '部门',\n },\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAA;;AAEG;IACS,YAaX;AAbD,CAAA,UAAY,WAAW,EAAA;AACnB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EAbW,WAAW,KAAX,WAAW,GAatB,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACU,MAAA,YAAY,GAAG;AACxB,IAAA,CAAC,WAAW,CAAC,YAAY,GAAG;AACxB,QAAA,IAAI,EAAE,MAAM;AACf,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,IAAI,GAAG;AAChB,QAAA,IAAI,EAAE,IAAI;AACb,KAAA;AACD,IAAA,CAAC,WAAW,CAAC,UAAU,GAAG;AACtB,QAAA,IAAI,EAAE,IAAI;AACb,KAAA;;;AC9BL;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-entity-scheme.js","sources":["../../../library/core/entity/scheme/IScheme.ts","../../../library/core/entity/scheme/SchemeEditTypeEnum.ts","../../../library/core/entity/scheme/reskin-core-entity-scheme.ts"],"sourcesContent":["import { SchemeEditTypeEnum } from './SchemeEditTypeEnum';\r\nimport { ITableField } from '@reskin/core/entity/field';\r\n\r\n/**\r\n * 界面方案\r\n */\r\nexport interface IScheme {\r\n /**\r\n * 界面方案基本信息\r\n */\r\n sysPageScheme: IPageScheme;\r\n /**\r\n * 界面方案配置内容\r\n */\r\n systemSchemeList: ISchemeListItem[];\r\n}\r\n\r\n/**\r\n * 界面方案基本信息\r\n */\r\nexport interface IPageScheme {\r\n /**\r\n * 列数\r\n */\r\n SCHEME_COLUMN_COUNT: number;\r\n /**\r\n * 说明\r\n */\r\n SCHEME_DESC: string;\r\n /**\r\n * 说明\r\n */\r\n SCHEME_NAME: string;\r\n /**\r\n * 标识符\r\n */\r\n SCHEME_PERMISSION: string;\r\n /**\r\n * 方案类型\r\n */\r\n SCHEME_TYPE: number;\r\n}\r\n\r\n/**\r\n * 界面方案配置内容项\r\n */\r\nexport interface ISchemeListItem {\r\n /**\r\n * 界面方案字段编辑配置\r\n */\r\n systemSchemeEdit: ISchemeEditItem[];\r\n /**\r\n * 界面方案字段列头配置\r\n */\r\n systemSchemeHeader: ISchemeHeaderItem[];\r\n /**\r\n * 界面方案指标集信息\r\n */\r\n systemSchemeTable: ISchemeTable;\r\n}\r\n\r\n/**\r\n * 界面方案字段编辑配置项\r\n */\r\nexport interface ISchemeEditItem extends ITableField {\r\n /**\r\n * 校验脚本\r\n */\r\n SCHEME_EDIT_CHECK_SCRIPT: string;\r\n /**\r\n * 触发脚本\r\n */\r\n SCHEME_EDIT_TRIGGER_SCRIPT: string;\r\n /**\r\n * 列编码\r\n */\r\n SCHEME_EDIT_COLUMN_ID: string;\r\n /**\r\n * 显示标题\r\n */\r\n SCHEME_EDIT_DISPLAY_NAME: string;\r\n /**\r\n * 编辑框宽度\r\n */\r\n SCHEME_EDIT_EDIT_WIDTH: number;\r\n /**\r\n * 是否必录\r\n */\r\n SCHEME_EDIT_IS_MUST_INPUT: boolean;\r\n /**\r\n * 是否只读\r\n */\r\n SCHEME_EDIT_IS_READONLY: boolean;\r\n /**\r\n * 标题宽度\r\n */\r\n SCHEME_EDIT_LABEL_WIDTH: number;\r\n /**\r\n * 界面方案ID\r\n */\r\n SCHEME_EDIT_SCHEME_ID: string;\r\n /**\r\n * 表编码\r\n */\r\n SCHEME_EDIT_TABLE_ID: string;\r\n /**\r\n * 显示类型\r\n */\r\n SCHEME_EDIT_VIEW_TYPE: SchemeEditTypeEnum;\r\n /**\r\n * 配置信息\r\n */\r\n SCHEME_EDIT_CONFIG: string;\r\n /**\r\n * 主键ID\r\n */\r\n SYSTEM_SCHEME_EDIT_ID: string;\r\n}\r\n\r\n/**\r\n * 界面方案字段列头配置项\r\n */\r\nexport interface ISchemeHeaderItem extends ITableField {\r\n /**\r\n * 对齐方式\r\n */\r\n SCHEME_HEADER_ALIGN_TYPE: AlignTypeEnum;\r\n /**\r\n * 列编码\r\n */\r\n SCHEME_HEADER_COLUMN_ID: string;\r\n /**\r\n * 显示名称\r\n */\r\n SCHEME_HEADER_DISPLAY_NAME: string;\r\n /**\r\n * 显示宽度\r\n */\r\n SCHEME_HEADER_DISPLAY_WIDTH: number;\r\n /**\r\n * 界面方案ID\r\n */\r\n SCHEME_HEADER_SCHEME_ID: string;\r\n /**\r\n * 表编码\r\n */\r\n SCHEME_HEADER_TABLE_ID: string;\r\n}\r\n\r\n/**\r\n * 界面方案指标集信息\r\n */\r\nexport interface ISchemeTable {\r\n /**\r\n * 备注\r\n */\r\n SCHEME_TABLE_DESC: string;\r\n /**\r\n * 显示名称\r\n */\r\n SCHEME_TABLE_DISPLAY_NAME: string;\r\n /**\r\n * 显示方式\r\n */\r\n SCHEME_TABLE_DISPLAY_TYPE: number;\r\n /**\r\n * 界面方案ID\r\n */\r\n SCHEME_TABLE_SCHEME_ID: string;\r\n /**\r\n * 表编码\r\n */\r\n SCHEME_TABLE_TABLE_ID: string;\r\n /**\r\n * 指标集编码\r\n */\r\n TABLE_CODE: string;\r\n /**\r\n * 指标集名称\r\n */\r\n TABLE_NAME: string;\r\n /**\r\n * 指标集对应主集\r\n */\r\n TABLE_PARENT_CODES: string;\r\n}\r\n\r\n/**\r\n * 对齐方式\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum AlignTypeEnum {\r\n /**\r\n * 左对齐\r\n */\r\n LEFT,\r\n /**\r\n * 居中对齐\r\n */\r\n CENTER,\r\n /**\r\n * 右对齐\r\n */\r\n RIGHT,\r\n}\r\n","/**\r\n * 字段显示类型\r\n */\r\nexport enum SchemeEditTypeEnum {\r\n /**\r\n * 文本\r\n */\r\n TEXT = 1,\r\n /**\r\n * 数字\r\n */\r\n INT = 2,\r\n /**\r\n * 时间\r\n */\r\n DATE = 3,\r\n /**\r\n * 备注\r\n */\r\n MEMO = 4,\r\n /**\r\n * 下拉代码\r\n */\r\n SELECT = 5,\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AA2LA;;;;;AAKG;IACS,cAaX;AAbD,CAAA,UAAY,aAAa,EAAA;AACrB;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACT,CAAC,EAbW,aAAa,KAAb,aAAa,GAaxB,EAAA,CAAA,CAAA;;AC9MD;;AAEG;IACS,mBAqBX;AArBD,CAAA,UAAY,kBAAkB,EAAA;AAC1B;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACd,CAAC,EArBW,kBAAkB,KAAlB,kBAAkB,GAqB7B,EAAA,CAAA,CAAA;;ACxBD;;AAEG;;;;"}
1
+ {"version":3,"file":"reskin-core-entity-scheme.js","sources":["../../../library/core/entity/scheme/IScheme.ts","../../../library/core/entity/scheme/SchemeEditTypeEnum.ts","../../../library/core/entity/scheme/reskin-core-entity-scheme.ts"],"sourcesContent":["import { SchemeEditTypeEnum } from './SchemeEditTypeEnum';\nimport { ITableField } from '@reskin/core/entity/field';\n\n/**\n * 界面方案\n */\nexport interface IScheme {\n /**\n * 界面方案基本信息\n */\n sysPageScheme: IPageScheme;\n /**\n * 界面方案配置内容\n */\n systemSchemeList: ISchemeListItem[];\n}\n\n/**\n * 界面方案基本信息\n */\nexport interface IPageScheme {\n /**\n * 列数\n */\n SCHEME_COLUMN_COUNT: number;\n /**\n * 说明\n */\n SCHEME_DESC: string;\n /**\n * 说明\n */\n SCHEME_NAME: string;\n /**\n * 标识符\n */\n SCHEME_PERMISSION: string;\n /**\n * 方案类型\n */\n SCHEME_TYPE: number;\n}\n\n/**\n * 界面方案配置内容项\n */\nexport interface ISchemeListItem {\n /**\n * 界面方案字段编辑配置\n */\n systemSchemeEdit: ISchemeEditItem[];\n /**\n * 界面方案字段列头配置\n */\n systemSchemeHeader: ISchemeHeaderItem[];\n /**\n * 界面方案指标集信息\n */\n systemSchemeTable: ISchemeTable;\n}\n\n/**\n * 界面方案字段编辑配置项\n */\nexport interface ISchemeEditItem extends ITableField {\n /**\n * 校验脚本\n */\n SCHEME_EDIT_CHECK_SCRIPT: string;\n /**\n * 触发脚本\n */\n SCHEME_EDIT_TRIGGER_SCRIPT: string;\n /**\n * 列编码\n */\n SCHEME_EDIT_COLUMN_ID: string;\n /**\n * 显示标题\n */\n SCHEME_EDIT_DISPLAY_NAME: string;\n /**\n * 编辑框宽度\n */\n SCHEME_EDIT_EDIT_WIDTH: number;\n /**\n * 是否必录\n */\n SCHEME_EDIT_IS_MUST_INPUT: boolean;\n /**\n * 是否只读\n */\n SCHEME_EDIT_IS_READONLY: boolean;\n /**\n * 标题宽度\n */\n SCHEME_EDIT_LABEL_WIDTH: number;\n /**\n * 界面方案ID\n */\n SCHEME_EDIT_SCHEME_ID: string;\n /**\n * 表编码\n */\n SCHEME_EDIT_TABLE_ID: string;\n /**\n * 显示类型\n */\n SCHEME_EDIT_VIEW_TYPE: SchemeEditTypeEnum;\n /**\n * 配置信息\n */\n SCHEME_EDIT_CONFIG: string;\n /**\n * 主键ID\n */\n SYSTEM_SCHEME_EDIT_ID: string;\n}\n\n/**\n * 界面方案字段列头配置项\n */\nexport interface ISchemeHeaderItem extends ITableField {\n /**\n * 对齐方式\n */\n SCHEME_HEADER_ALIGN_TYPE: AlignTypeEnum;\n /**\n * 列编码\n */\n SCHEME_HEADER_COLUMN_ID: string;\n /**\n * 显示名称\n */\n SCHEME_HEADER_DISPLAY_NAME: string;\n /**\n * 显示宽度\n */\n SCHEME_HEADER_DISPLAY_WIDTH: number;\n /**\n * 界面方案ID\n */\n SCHEME_HEADER_SCHEME_ID: string;\n /**\n * 表编码\n */\n SCHEME_HEADER_TABLE_ID: string;\n}\n\n/**\n * 界面方案指标集信息\n */\nexport interface ISchemeTable {\n /**\n * 备注\n */\n SCHEME_TABLE_DESC: string;\n /**\n * 显示名称\n */\n SCHEME_TABLE_DISPLAY_NAME: string;\n /**\n * 显示方式\n */\n SCHEME_TABLE_DISPLAY_TYPE: number;\n /**\n * 界面方案ID\n */\n SCHEME_TABLE_SCHEME_ID: string;\n /**\n * 表编码\n */\n SCHEME_TABLE_TABLE_ID: string;\n /**\n * 指标集编码\n */\n TABLE_CODE: string;\n /**\n * 指标集名称\n */\n TABLE_NAME: string;\n /**\n * 指标集对应主集\n */\n TABLE_PARENT_CODES: string;\n}\n\n/**\n * 对齐方式\n *\n * @export\n * @enum {number}\n */\nexport enum AlignTypeEnum {\n /**\n * 左对齐\n */\n LEFT,\n /**\n * 居中对齐\n */\n CENTER,\n /**\n * 右对齐\n */\n RIGHT,\n}\n","/**\n * 字段显示类型\n */\nexport enum SchemeEditTypeEnum {\n /**\n * 文本\n */\n TEXT = 1,\n /**\n * 数字\n */\n INT = 2,\n /**\n * 时间\n */\n DATE = 3,\n /**\n * 备注\n */\n MEMO = 4,\n /**\n * 下拉代码\n */\n SELECT = 5,\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AA2LA;;;;;AAKG;IACS,cAaX;AAbD,CAAA,UAAY,aAAa,EAAA;AACrB;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACT,CAAC,EAbW,aAAa,KAAb,aAAa,GAaxB,EAAA,CAAA,CAAA;;AC9MD;;AAEG;IACS,mBAqBX;AArBD,CAAA,UAAY,kBAAkB,EAAA;AAC1B;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR;;AAEG;AACH,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACd,CAAC,EArBW,kBAAkB,KAAlB,kBAAkB,GAqB7B,EAAA,CAAA,CAAA;;ACxBD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-guards.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, catchError } from 'rxjs/operators';\r\nimport { RkMenuService } from '@reskin/core/services';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAuthGuard implements CanActivateChild {\r\n constructor(\r\n private menu: RkMenuService,\r\n private router: Router,\r\n ) {}\r\n\r\n canActivateChild(\r\n childRoute: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return this.menu.requestData().pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n map((menus) => this.checkAccess(menus, childRoute, state.url)),\r\n catchError(() => {\r\n this.handleNoAccess(state.url);\r\n return [false];\r\n }),\r\n );\r\n }\r\n\r\n private checkAccess(menus: any[], childRoute: ActivatedRouteSnapshot, url: string): boolean | UrlTree {\r\n if (!menus.length) {\r\n throw new Error(`此账号无任何功能权限.`);\r\n }\r\n\r\n const cleanUrl = url.replace(/\\?.*/, '');\r\n const authRoutes = new Set<string>(menus.map((m) => m.SYSTEM_RESOURCE_URL));\r\n\r\n if (authRoutes.has(cleanUrl)) {\r\n return true;\r\n }\r\n\r\n const { extendAuth, extendRoutes } = childRoute.data;\r\n if (extendAuth && extendRoutes) {\r\n const hasWildcardMatch = extendRoutes.some((route: string) =>\r\n route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl,\r\n );\r\n if (hasWildcardMatch) {\r\n return true;\r\n }\r\n }\r\n\r\n this.handleNoAccess(url);\r\n return false;\r\n }\r\n\r\n private match(pattern: string, path: string): boolean {\r\n const regexPattern = pattern.replace(/\\*\\*/g, '.*');\r\n return new RegExp(`^${regexPattern}$`).test(path);\r\n }\r\n\r\n private handleNoAccess(url: string): void {\r\n console.error(`无权限访问路由地址: ${url}`);\r\n this.router.navigate(['/errors/401']).then();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MASa,WAAW,CAAA;IACpB,WACY,CAAA,IAAmB,EACnB,MAAc,EAAA;QADd,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAe;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACtB;IAEJ,gBAAgB,CACZ,UAAkC,EAClC,KAA0B,EAAA;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAC/B,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EACjC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EACxB,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAC9D,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,CAAC;SAClB,CAAC,CACL,CAAC;KACL;AAEO,IAAA,WAAW,CAAC,KAAY,EAAE,UAAkC,EAAE,GAAW,EAAA;AAC7E,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,WAAA,CAAa,CAAC,CAAC;AAClC,SAAA;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAE5E,QAAA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;QACrD,IAAI,UAAU,IAAI,YAAY,EAAE;AAC5B,YAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAa,KACrD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,CAC1E,CAAC;AACF,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACzB,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,KAAK,CAAC,OAAe,EAAE,IAAY,EAAA;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrD;AAEO,IAAA,cAAc,CAAC,GAAW,EAAA;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,CAAA,CAAE,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAChD;;yGAvDQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFR,MAAM,EAAA,CAAA,CAAA;4FAET,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"reskin-core-guards.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { filter, map, catchError } from 'rxjs/operators';\nimport { RkMenuService } from '@reskin/core/services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RkAuthGuard implements CanActivateChild {\n constructor(\n private menu: RkMenuService,\n private router: Router,\n ) {}\n\n canActivateChild(\n childRoute: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.menu.requestData().pipe(\n filter((json) => json.code === 0),\n map((json) => json.data),\n map((menus) => this.checkAccess(menus, childRoute, state.url)),\n catchError(() => {\n this.handleNoAccess(state.url);\n return [false];\n }),\n );\n }\n\n private checkAccess(menus: any[], childRoute: ActivatedRouteSnapshot, url: string): boolean | UrlTree {\n if (!menus.length) {\n throw new Error(`此账号无任何功能权限.`);\n }\n\n const cleanUrl = url.replace(/\\?.*/, '');\n const authRoutes = new Set<string>(menus.map((m) => m.SYSTEM_RESOURCE_URL));\n\n if (authRoutes.has(cleanUrl)) {\n return true;\n }\n\n const { extendAuth, extendRoutes } = childRoute.data;\n if (extendAuth && extendRoutes) {\n const hasWildcardMatch = extendRoutes.some((route: string) =>\n route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl,\n );\n if (hasWildcardMatch) {\n return true;\n }\n }\n\n this.handleNoAccess(url);\n return false;\n }\n\n private match(pattern: string, path: string): boolean {\n const regexPattern = pattern.replace(/\\*\\*/g, '.*');\n return new RegExp(`^${regexPattern}$`).test(path);\n }\n\n private handleNoAccess(url: string): void {\n console.error(`无权限访问路由地址: ${url}`);\n this.router.navigate(['/errors/401']).then();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MASa,WAAW,CAAA;IACpB,WACY,CAAA,IAAmB,EACnB,MAAc,EAAA;QADd,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAe;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACtB;IAEJ,gBAAgB,CACZ,UAAkC,EAClC,KAA0B,EAAA;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAC/B,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EACjC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EACxB,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAC9D,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,CAAC;SAClB,CAAC,CACL,CAAC;KACL;AAEO,IAAA,WAAW,CAAC,KAAY,EAAE,UAAkC,EAAE,GAAW,EAAA;AAC7E,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,WAAA,CAAa,CAAC,CAAC;AAClC,SAAA;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAE5E,QAAA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;QACrD,IAAI,UAAU,IAAI,YAAY,EAAE;AAC5B,YAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAa,KACrD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK,QAAQ,CAC1E,CAAC;AACF,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACzB,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,KAAK,CAAC,OAAe,EAAE,IAAY,EAAA;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrD;AAEO,IAAA,cAAc,CAAC,GAAW,EAAA;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,CAAA,CAAE,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAChD;;yGAvDQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFR,MAAM,EAAA,CAAA,CAAA;4FAET,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
@@ -58,7 +58,7 @@ class ErrorInterceptor {
58
58
  return next.handle(request).pipe(catchError((result) => {
59
59
  var _a;
60
60
  if (result.status === 401) {
61
- this.router.navigateByUrl('/').then();
61
+ this.router.navigate(['/errors/401']).then();
62
62
  }
63
63
  if (result.error.code) {
64
64
  return of(result.error);
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-interceptors.js","sources":["../../../library/core/interceptors/token.interceptor.ts","../../../library/core/interceptors/error.interceptor.ts","../../../library/core/interceptors/cache.interceptor.ts","../../../library/core/interceptors/blob.interceptor.ts","../../../library/core/interceptors/reskin-core-interceptors.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { RkAuthService } from '@reskin/core/services';\r\nimport { IAuth } from '@reskin/core/entity/user';\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n constructor(private service: RkAuthService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n const tc = request.headers.get('Token-Control');\r\n const auth: IAuth = this.service.token;\r\n // 当 header 中 Token-Control 为 no-token 时不携带 token\r\n if (tc !== 'no-token' && auth.token) {\r\n request = request.clone({\r\n setHeaders: {\r\n 'Authorization': auth.token,\r\n 'X-Auth-Id': auth.id,\r\n },\r\n });\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n\r\n/**\r\n * 请求头增加token验证拦截器\r\n */\r\nexport function providerAuthToken() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true };\r\n}\r\n\r\n/**\r\n * 不带token验证信息请求\r\n * @param urls 地址\r\n * @param params 参数\r\n * @constructor\r\n */\r\nexport function NoAuthTokenTemplate(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({ 'Token-Control': 'no-token' }) }];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private router: Router) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n catchError((result) => {\r\n if (result.status === 401) {\r\n this.router.navigateByUrl('/').then();\r\n }\r\n if (result.error.code) {\r\n return of(result.error);\r\n }\r\n throw result.error.msg ?? result.message;\r\n }),\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 请求错误拦截器\r\n */\r\nexport function providerHttpError() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\nimport { RkCacheHttpService } from '@reskin/core/services';\r\n\r\n@Injectable()\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n constructor(private cacheHttp: RkCacheHttpService) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n // 1.判断是GET\r\n // 2.header中添加 Cache-Map: Storage\r\n const cacheMap = request.headers.get('Cache-Map');\r\n if (request.method === 'GET' && cacheMap === 'Storage') {\r\n let response = this.cacheHttp.get(request.url);\r\n if (!response) {\r\n response = next.handle(request).pipe(shareReplay(1));\r\n this.cacheHttp.set(request.url, response);\r\n }\r\n return response;\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n\r\n/**\r\n * GET请求缓存拦截器\r\n */\r\nexport function providerHttpCache() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpEventType,\r\n HttpResponse,\r\n HttpErrorResponse,\r\n HTTP_INTERCEPTORS,\r\n} from '@angular/common/http';\r\nimport { Observable, Subscriber } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class BlobInterceptor implements HttpInterceptor {\r\n intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\r\n if (request.responseType !== 'blob') {\r\n return next.handle(request);\r\n }\r\n return next.handle(request).pipe(\r\n switchMap((response: HttpEvent<any>) => this.handleBlobResponse(response)),\r\n catchError((response: HttpErrorResponse) => this.handleBlobError(response)),\r\n );\r\n }\r\n\r\n private handleBlobResponse<T>(response: HttpEvent<any>): Observable<HttpEvent<any>> {\r\n if (response.type !== HttpEventType.Response) {\r\n return new Observable((subscriber) => {\r\n subscriber.next(response);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n if (response instanceof HttpResponse && response.body && response.body.type === 'application/json') {\r\n return new Observable((subscriber) => this.blobToJson<T>(response.body, subscriber));\r\n }\r\n\r\n return new Observable((subscriber) => {\r\n subscriber.next(response);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n private handleBlobError<T>(response: HttpErrorResponse): Observable<HttpEvent<any>> {\r\n if (response.error && response.error.type === 'application/json') {\r\n return new Observable((subscriber) => this.blobToJson<T>(response.error, subscriber));\r\n }\r\n\r\n return new Observable((subscriber) => {\r\n subscriber.error(response);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n private blobToJson<T>(blob: Blob, subscriber: Subscriber<HttpEvent<T>>) {\r\n const reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n try {\r\n const json: T = JSON.parse(reader.result as string);\r\n subscriber.error(json);\r\n } catch (error) {\r\n subscriber.error(error);\r\n } finally {\r\n subscriber.complete();\r\n }\r\n });\r\n reader.readAsText(blob, 'utf-8');\r\n }\r\n}\r\n\r\n/**\r\n * 下载文件拦截器\r\n * blob类型的请求会被处理\r\n */\r\nexport function providerDownBlob() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: BlobInterceptor, multi: true };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"reskin-core-interceptors.js","sources":["../../../library/core/interceptors/token.interceptor.ts","../../../library/core/interceptors/error.interceptor.ts","../../../library/core/interceptors/cache.interceptor.ts","../../../library/core/interceptors/blob.interceptor.ts","../../../library/core/interceptors/reskin-core-interceptors.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { RkAuthService } from '@reskin/core/services';\nimport { IAuth } from '@reskin/core/entity/user';\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n constructor(private service: RkAuthService) {}\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n const tc = request.headers.get('Token-Control');\n const auth: IAuth = this.service.token;\n // 当 header 中 Token-Control 为 no-token 时不携带 token\n if (tc !== 'no-token' && auth.token) {\n request = request.clone({\n setHeaders: {\n 'Authorization': auth.token,\n 'X-Auth-Id': auth.id,\n },\n });\n }\n return next.handle(request);\n }\n}\n\n/**\n * 请求头增加token验证拦截器\n */\nexport function providerAuthToken() {\n return { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true };\n}\n\n/**\n * 不带token验证信息请求\n * @param urls 地址\n * @param params 参数\n * @constructor\n */\nexport function NoAuthTokenTemplate(urls: TemplateStringsArray, ...params: any[]): [string, { headers: HttpHeaders }] {\n let [url] = urls;\n if (params.length > 0) {\n url = String.raw(urls, ...params);\n }\n return [url, { headers: new HttpHeaders({ 'Token-Control': 'no-token' }) }];\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private router: Router) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(request).pipe(\r\n catchError((result) => {\r\n if (result.status === 401) {\r\n this.router.navigate(['/errors/401']).then();\r\n }\r\n if (result.error.code) {\r\n return of(result.error);\r\n }\r\n throw result.error.msg ?? result.message;\r\n }),\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 请求错误拦截器\r\n */\r\nexport function providerHttpError() {\r\n return { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true };\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport { RkCacheHttpService } from '@reskin/core/services';\n\n@Injectable()\nexport class CacheInterceptor implements HttpInterceptor {\n constructor(private cacheHttp: RkCacheHttpService) {}\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n // 1.判断是GET\n // 2.header中添加 Cache-Map: Storage\n const cacheMap = request.headers.get('Cache-Map');\n if (request.method === 'GET' && cacheMap === 'Storage') {\n let response = this.cacheHttp.get(request.url);\n if (!response) {\n response = next.handle(request).pipe(shareReplay(1));\n this.cacheHttp.set(request.url, response);\n }\n return response;\n }\n return next.handle(request);\n }\n}\n\n/**\n * GET请求缓存拦截器\n */\nexport function providerHttpCache() {\n return { provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true };\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpEventType,\n HttpResponse,\n HttpErrorResponse,\n HTTP_INTERCEPTORS,\n} from '@angular/common/http';\nimport { Observable, Subscriber } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\n\n@Injectable()\nexport class BlobInterceptor implements HttpInterceptor {\n intercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n if (request.responseType !== 'blob') {\n return next.handle(request);\n }\n return next.handle(request).pipe(\n switchMap((response: HttpEvent<any>) => this.handleBlobResponse(response)),\n catchError((response: HttpErrorResponse) => this.handleBlobError(response)),\n );\n }\n\n private handleBlobResponse<T>(response: HttpEvent<any>): Observable<HttpEvent<any>> {\n if (response.type !== HttpEventType.Response) {\n return new Observable((subscriber) => {\n subscriber.next(response);\n subscriber.complete();\n });\n }\n\n if (response instanceof HttpResponse && response.body && response.body.type === 'application/json') {\n return new Observable((subscriber) => this.blobToJson<T>(response.body, subscriber));\n }\n\n return new Observable((subscriber) => {\n subscriber.next(response);\n subscriber.complete();\n });\n }\n\n private handleBlobError<T>(response: HttpErrorResponse): Observable<HttpEvent<any>> {\n if (response.error && response.error.type === 'application/json') {\n return new Observable((subscriber) => this.blobToJson<T>(response.error, subscriber));\n }\n\n return new Observable((subscriber) => {\n subscriber.error(response);\n subscriber.complete();\n });\n }\n\n private blobToJson<T>(blob: Blob, subscriber: Subscriber<HttpEvent<T>>) {\n const reader = new FileReader();\n reader.addEventListener('loadend', () => {\n try {\n const json: T = JSON.parse(reader.result as string);\n subscriber.error(json);\n } catch (error) {\n subscriber.error(error);\n } finally {\n subscriber.complete();\n }\n });\n reader.readAsText(blob, 'utf-8');\n }\n}\n\n/**\n * 下载文件拦截器\n * blob类型的请求会被处理\n */\nexport function providerDownBlob() {\n return { provide: HTTP_INTERCEPTORS, useClass: BlobInterceptor, multi: true };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}