@hkyhy/marsun-components-core 0.1.98 → 0.1.100

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 (234) hide show
  1. package/README.md +5 -4
  2. package/dist/components/Disposition/AlertDispositionPanel/LevelLegend.d.ts +13 -0
  3. package/dist/components/Disposition/AlertDispositionPanel/LevelLegend.js +36 -0
  4. package/dist/components/Disposition/AlertDispositionPanel/LevelLegend.js.map +1 -0
  5. package/dist/components/Disposition/AlertDispositionPanel/index.d.ts +21 -0
  6. package/dist/components/Disposition/AlertDispositionPanel/index.js +80 -0
  7. package/dist/components/Disposition/AlertDispositionPanel/index.js.map +1 -0
  8. package/dist/components/Disposition/AlertDispositionPanel/levelLegend.module.scss.js +10 -0
  9. package/dist/components/Disposition/AlertDispositionPanel/levelLegend.module.scss.js.map +1 -0
  10. package/dist/components/Disposition/AlertDispositionPanel/style.module.scss.js +11 -0
  11. package/dist/components/Disposition/AlertDispositionPanel/types.d.ts +51 -0
  12. package/dist/components/Disposition/AlertDispositionPanel/types.js +26 -0
  13. package/dist/components/Disposition/AlertDispositionPanel/types.js.map +1 -0
  14. package/dist/components/Disposition/DispositionBar/index.js.map +1 -0
  15. package/dist/components/Disposition/DispositionBar/style.module.scss.js.map +1 -0
  16. package/dist/components/Disposition/index.d.ts +4 -0
  17. package/dist/components/Editor/RichTextEditor/RichTextEditor.js +36 -45
  18. package/dist/components/Editor/RichTextEditor/RichTextEditor.js.map +1 -1
  19. package/dist/components/Editor/msgVarTokenPlugin.js +14 -19
  20. package/dist/components/Editor/msgVarTokenPlugin.js.map +1 -1
  21. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js +193 -145
  22. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js.map +1 -1
  23. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.d.ts +18 -0
  24. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js +315 -0
  25. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.js.map +1 -0
  26. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.d.ts +14 -0
  27. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js +183 -0
  28. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.js.map +1 -0
  29. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/index.d.ts +1 -1
  30. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.d.ts +26 -0
  31. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js +5 -3
  32. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js.map +1 -1
  33. package/dist/components/Tools/MessageCenter/index.d.ts +1 -1
  34. package/dist/components/Tools/MessageCenter/utils/adminGuards.d.ts +14 -0
  35. package/dist/components/Tools/MessageCenter/utils/adminGuards.js +12 -0
  36. package/dist/components/Tools/MessageCenter/utils/adminGuards.js.map +1 -0
  37. package/dist/components/index.d.ts +2 -2
  38. package/dist/index.d.ts +2 -2
  39. package/dist/index.js +715 -707
  40. package/dist/index.js.map +1 -1
  41. package/dist/marsun-components-core.css +1 -1
  42. package/dist/styles/global.css +1 -1
  43. package/package.json +4 -3
  44. package/dist/components/DispositionBar/index.js.map +0 -1
  45. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +0 -301
  46. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js.map +0 -1
  47. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +0 -1256
  48. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js.map +0 -1
  49. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js +0 -2107
  50. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js.map +0 -1
  51. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +0 -259
  52. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js.map +0 -1
  53. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +0 -23990
  54. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js.map +0 -1
  55. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +0 -249
  56. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js.map +0 -1
  57. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +0 -47
  58. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js.map +0 -1
  59. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js +0 -100
  60. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js.map +0 -1
  61. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +0 -31
  62. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js.map +0 -1
  63. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js +0 -194
  64. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js.map +0 -1
  65. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js +0 -2042
  66. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js.map +0 -1
  67. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +0 -9
  68. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js.map +0 -1
  69. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +0 -167
  70. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js.map +0 -1
  71. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js +0 -471
  72. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js.map +0 -1
  73. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +0 -139
  74. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js.map +0 -1
  75. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +0 -755
  76. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js.map +0 -1
  77. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +0 -7838
  78. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js.map +0 -1
  79. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js +0 -422
  80. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js.map +0 -1
  81. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js +0 -33
  82. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js.map +0 -1
  83. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js +0 -47
  84. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js.map +0 -1
  85. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js +0 -156
  86. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js.map +0 -1
  87. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +0 -313
  88. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js.map +0 -1
  89. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +0 -2942
  90. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js.map +0 -1
  91. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +0 -892
  92. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js.map +0 -1
  93. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +0 -1047
  94. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js.map +0 -1
  95. package/dist/node_modules/color-parse/node_modules/color-name/index.js +0 -153
  96. package/dist/node_modules/color-parse/node_modules/color-name/index.js.map +0 -1
  97. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js +0 -7
  98. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js.map +0 -1
  99. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +0 -7
  100. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js.map +0 -1
  101. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js +0 -7
  102. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js.map +0 -1
  103. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +0 -9
  104. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js.map +0 -1
  105. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +0 -7
  106. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js.map +0 -1
  107. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js +0 -7
  108. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js.map +0 -1
  109. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +0 -16
  110. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js.map +0 -1
  111. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js +0 -15
  112. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js.map +0 -1
  113. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js +0 -9
  114. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js.map +0 -1
  115. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +0 -8
  116. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js.map +0 -1
  117. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js +0 -30
  118. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js.map +0 -1
  119. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js +0 -8
  120. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js.map +0 -1
  121. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js +0 -17
  122. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js.map +0 -1
  123. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js +0 -13
  124. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js.map +0 -1
  125. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js +0 -17
  126. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js.map +0 -1
  127. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js +0 -102
  128. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js.map +0 -1
  129. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +0 -8
  130. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js.map +0 -1
  131. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +0 -33
  132. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js.map +0 -1
  133. package/dist/node_modules/es-toolkit/dist/compat/object/get.js +0 -39
  134. package/dist/node_modules/es-toolkit/dist/compat/object/get.js.map +0 -1
  135. package/dist/node_modules/es-toolkit/dist/compat/object/has.js +0 -21
  136. package/dist/node_modules/es-toolkit/dist/compat/object/has.js.map +0 -1
  137. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js +0 -33
  138. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js.map +0 -1
  139. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js +0 -10
  140. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js.map +0 -1
  141. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js +0 -9
  142. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js.map +0 -1
  143. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js +0 -53
  144. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js.map +0 -1
  145. package/dist/node_modules/es-toolkit/dist/compat/object/property.js +0 -10
  146. package/dist/node_modules/es-toolkit/dist/compat/object/property.js.map +0 -1
  147. package/dist/node_modules/es-toolkit/dist/compat/object/set.js +0 -9
  148. package/dist/node_modules/es-toolkit/dist/compat/object/set.js.map +0 -1
  149. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js +0 -31
  150. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js.map +0 -1
  151. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +0 -8
  152. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js.map +0 -1
  153. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js +0 -7
  154. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js.map +0 -1
  155. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +0 -8
  156. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js.map +0 -1
  157. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +0 -9
  158. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js.map +0 -1
  159. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js +0 -9
  160. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js.map +0 -1
  161. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +0 -15
  162. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js.map +0 -1
  163. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +0 -7
  164. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js.map +0 -1
  165. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js +0 -9
  166. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js.map +0 -1
  167. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +0 -81
  168. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js.map +0 -1
  169. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js +0 -7
  170. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js.map +0 -1
  171. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +0 -7
  172. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js.map +0 -1
  173. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +0 -16
  174. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js.map +0 -1
  175. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js +0 -7
  176. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js.map +0 -1
  177. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js +0 -7
  178. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js.map +0 -1
  179. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +0 -8
  180. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js.map +0 -1
  181. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js +0 -9
  182. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js.map +0 -1
  183. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +0 -23
  184. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js.map +0 -1
  185. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js +0 -7
  186. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js.map +0 -1
  187. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js +0 -19
  188. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js.map +0 -1
  189. package/dist/node_modules/es-toolkit/dist/compat/util/times.js +0 -11
  190. package/dist/node_modules/es-toolkit/dist/compat/util/times.js.map +0 -1
  191. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js +0 -8
  192. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js.map +0 -1
  193. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js +0 -9
  194. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js.map +0 -1
  195. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js +0 -8
  196. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js.map +0 -1
  197. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js +0 -37
  198. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js.map +0 -1
  199. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js +0 -15
  200. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js.map +0 -1
  201. package/dist/node_modules/es-toolkit/dist/function/after.js +0 -11
  202. package/dist/node_modules/es-toolkit/dist/function/after.js.map +0 -1
  203. package/dist/node_modules/es-toolkit/dist/function/debounce.js +0 -30
  204. package/dist/node_modules/es-toolkit/dist/function/debounce.js.map +0 -1
  205. package/dist/node_modules/es-toolkit/dist/function/identity.js +0 -7
  206. package/dist/node_modules/es-toolkit/dist/function/identity.js.map +0 -1
  207. package/dist/node_modules/es-toolkit/dist/function/noop.js +0 -6
  208. package/dist/node_modules/es-toolkit/dist/function/noop.js.map +0 -1
  209. package/dist/node_modules/es-toolkit/dist/object/clone.js +0 -27
  210. package/dist/node_modules/es-toolkit/dist/object/clone.js.map +0 -1
  211. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js +0 -8
  212. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js.map +0 -1
  213. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js +0 -121
  214. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js.map +0 -1
  215. package/dist/node_modules/es-toolkit/dist/object/mapValues.js +0 -12
  216. package/dist/node_modules/es-toolkit/dist/object/mapValues.js.map +0 -1
  217. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js +0 -8
  218. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js.map +0 -1
  219. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js +0 -9
  220. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js.map +0 -1
  221. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js +0 -110
  222. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js.map +0 -1
  223. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js +0 -7
  224. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js.map +0 -1
  225. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js +0 -9
  226. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js.map +0 -1
  227. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js +0 -7
  228. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js.map +0 -1
  229. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js +0 -7
  230. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js.map +0 -1
  231. /package/dist/components/{DispositionBar → Disposition/AlertDispositionPanel}/style.module.scss.js.map +0 -0
  232. /package/dist/components/{DispositionBar → Disposition/DispositionBar}/index.d.ts +0 -0
  233. /package/dist/components/{DispositionBar → Disposition/DispositionBar}/index.js +0 -0
  234. /package/dist/components/{DispositionBar → Disposition/DispositionBar}/style.module.scss.js +0 -0
@@ -0,0 +1,315 @@
1
+ import { jsx as o, jsxs as u } from "react/jsx-runtime";
2
+ import { message as r, Switch as T, Space as Q, Button as z, Select as q } from "antd";
3
+ import { useState as b, useCallback as $, useEffect as A, useMemo as v } from "react";
4
+ import { resolveTemplateCodeAfterEventChange as G } from "../../utils/adminGuards.js";
5
+ import J from "../style.module.scss.js";
6
+ import O from "../../../../Alert/Alert.js";
7
+ import U from "../../../../Layout/PageSpin/index.js";
8
+ import V from "../../../../Empty/Empty.js";
9
+ import X from "../../../../Table/Table.js";
10
+ import Y from "../../../../FormInfo/FormModal.js";
11
+ import Z from "../../../../FormInfo/FormInfo.js";
12
+ import { Input as R, Select as P, InputNumber as W } from "../../../../FormInfo/fields.js";
13
+ const k = P, ee = R, B = W, be = ({
14
+ canWrite: s,
15
+ catalog: m,
16
+ templates: y,
17
+ roleOptions: N,
18
+ fetchPushRules: w,
19
+ savePushRule: C,
20
+ setPushRuleEnabled: c,
21
+ deletePushRule: d,
22
+ createNonce: S = 0
23
+ }) => {
24
+ const [K, h] = b([]), [L, I] = b(!1), [g, x] = b(""), [l, p] = b(null), [f, D] = b(!1), i = $(async () => {
25
+ I(!0), x("");
26
+ try {
27
+ const e = await w();
28
+ h(Array.isArray(e) ? e : []);
29
+ } catch (e) {
30
+ x(e instanceof Error ? e.message : String(e)), h([]);
31
+ } finally {
32
+ I(!1);
33
+ }
34
+ }, [w]);
35
+ A(() => {
36
+ i();
37
+ }, [i]), A(() => {
38
+ if (!S || !s) return;
39
+ const e = m[0], a = y.find((n) => n.eventKey === (e == null ? void 0 : e.eventKey));
40
+ D(!0), p({
41
+ label: (e == null ? void 0 : e.label) || "新建推送规则",
42
+ eventKey: (e == null ? void 0 : e.eventKey) || "",
43
+ templateCode: (a == null ? void 0 : a.code) || "",
44
+ levels: ["L2"],
45
+ audienceRoles: [],
46
+ channels: ["in_app"],
47
+ slaHours: 36,
48
+ scanLookbackDays: 7,
49
+ enabled: !0
50
+ });
51
+ }, [S, s, m, y]);
52
+ const F = $(
53
+ (e) => y.filter((a) => !e || a.eventKey === e).map((a) => ({
54
+ value: String(a.code || ""),
55
+ label: `${a.label || a.code || ""}(${a.code || ""})`
56
+ })).filter((a) => a.value),
57
+ [y]
58
+ ), E = v(
59
+ () => ({
60
+ label: l == null ? void 0 : l.label,
61
+ eventKey: l == null ? void 0 : l.eventKey,
62
+ templateCode: l == null ? void 0 : l.templateCode,
63
+ levels: (l == null ? void 0 : l.levels) || [],
64
+ audienceRoles: (l == null ? void 0 : l.audienceRoles) || [],
65
+ slaHours: (l == null ? void 0 : l.slaHours) ?? 0,
66
+ scanLookbackDays: (l == null ? void 0 : l.scanLookbackDays) ?? 0
67
+ }),
68
+ [l]
69
+ ), M = v(
70
+ () => ({
71
+ data: E,
72
+ onSubmit: async (e) => {
73
+ if (!s || !l)
74
+ return r.warning("当前为只读"), !1;
75
+ const a = String(l.eventKey || e.eventKey || "").trim(), n = String(e.templateCode || "").trim();
76
+ if (!a)
77
+ return r.warning("请选择事件"), !1;
78
+ if (!n)
79
+ return r.warning("请关联模板编号"), !1;
80
+ try {
81
+ await C({
82
+ ...l,
83
+ label: String(e.label || l.label || "").trim() || a,
84
+ eventKey: a,
85
+ templateCode: n,
86
+ levels: e.levels || [],
87
+ audienceRoles: e.audienceRoles || [],
88
+ channels: ["in_app"],
89
+ slaHours: Number(e.slaHours ?? 0),
90
+ scanLookbackDays: Number(e.scanLookbackDays ?? 0),
91
+ enabled: f ? !0 : l.enabled !== !1
92
+ }), r.success("已保存"), p(null), await i();
93
+ } catch (t) {
94
+ return r.error(t instanceof Error ? t.message : String(t)), !1;
95
+ }
96
+ }
97
+ }),
98
+ [s, l, E, f, i, C]
99
+ ), _ = v(
100
+ () => [
101
+ { title: "名称", dataIndex: "label", key: "label", ellipsis: !0 },
102
+ {
103
+ title: "事件",
104
+ dataIndex: "eventKey",
105
+ key: "eventKey",
106
+ render: (e) => {
107
+ var a;
108
+ return ((a = m.find((n) => n.eventKey === e)) == null ? void 0 : a.label) || e || "—";
109
+ }
110
+ },
111
+ { title: "关联模板", dataIndex: "templateCode", key: "templateCode", width: 140 },
112
+ {
113
+ title: "级别",
114
+ dataIndex: "levels",
115
+ key: "levels",
116
+ width: 100,
117
+ render: (e) => (e || []).join(",") || "—"
118
+ },
119
+ {
120
+ title: "启用",
121
+ dataIndex: "enabled",
122
+ key: "enabled",
123
+ width: 80,
124
+ render: (e, a) => /* @__PURE__ */ o(
125
+ T,
126
+ {
127
+ size: "small",
128
+ checked: a.enabled !== !1,
129
+ disabled: !s || !c,
130
+ onChange: (n) => {
131
+ (async () => {
132
+ try {
133
+ await (c == null ? void 0 : c(a, n)), r.success(n ? "已启用" : "已停用"), await i();
134
+ } catch (t) {
135
+ r.error(t instanceof Error ? t.message : String(t));
136
+ }
137
+ })();
138
+ }
139
+ }
140
+ )
141
+ },
142
+ {
143
+ title: "操作",
144
+ key: "actions",
145
+ width: 140,
146
+ render: (e, a) => /* @__PURE__ */ u(Q, { size: 4, children: [
147
+ /* @__PURE__ */ o(
148
+ z,
149
+ {
150
+ type: "link",
151
+ size: "small",
152
+ disabled: !s,
153
+ onClick: () => {
154
+ D(!1), p({ ...a });
155
+ },
156
+ children: "编辑"
157
+ }
158
+ ),
159
+ /* @__PURE__ */ o(
160
+ z,
161
+ {
162
+ type: "link",
163
+ size: "small",
164
+ danger: !0,
165
+ disabled: !s || !d,
166
+ onClick: () => {
167
+ (async () => {
168
+ try {
169
+ await (d == null ? void 0 : d(a)), r.success("已删除"), await i();
170
+ } catch (n) {
171
+ r.error(n instanceof Error ? n.message : String(n));
172
+ }
173
+ })();
174
+ },
175
+ children: "删除"
176
+ }
177
+ )
178
+ ] })
179
+ }
180
+ ],
181
+ [s, m, d, i, c]
182
+ );
183
+ return /* @__PURE__ */ u("div", { className: J.pane, children: [
184
+ g ? /* @__PURE__ */ o(O, { type: "error", showIcon: !0, message: g, style: { marginBottom: 12 } }) : null,
185
+ /* @__PURE__ */ o(U, { spinning: L, children: K.length === 0 && !L ? /* @__PURE__ */ o(V, { description: "暂无推送规则" }) : /* @__PURE__ */ o(
186
+ X,
187
+ {
188
+ rowKey: (e) => e.id || e.code || `${e.eventKey}-${e.templateCode}`,
189
+ tableName: "msg-center-push-rules",
190
+ columnConfigEnabled: !1,
191
+ columnResizeEnabled: !1,
192
+ columns: _,
193
+ dataSource: K,
194
+ pagination: !1,
195
+ size: "small"
196
+ }
197
+ ) }),
198
+ /* @__PURE__ */ u(
199
+ Y,
200
+ {
201
+ title: f ? "新建推送规则" : "编辑推送规则",
202
+ open: !!l,
203
+ onCancel: () => p(null),
204
+ width: 560,
205
+ okText: "保存",
206
+ autoClose: !1,
207
+ formProps: M,
208
+ children: [
209
+ /* @__PURE__ */ u("div", { style: { marginBottom: 16 }, children: [
210
+ /* @__PURE__ */ o("div", { style: { marginBottom: 8 }, children: "事件" }),
211
+ /* @__PURE__ */ o(
212
+ q,
213
+ {
214
+ style: { width: "100%" },
215
+ disabled: !s,
216
+ value: (l == null ? void 0 : l.eventKey) || void 0,
217
+ options: m.map((e) => ({
218
+ value: e.eventKey,
219
+ label: e.label || e.eventKey
220
+ })),
221
+ onChange: (e) => {
222
+ const a = String(e || ""), n = F(a);
223
+ p(
224
+ (t) => {
225
+ var H;
226
+ return t && {
227
+ ...t,
228
+ eventKey: a,
229
+ templateCode: G(t.templateCode, n),
230
+ label: ((H = m.find((j) => j.eventKey === a)) == null ? void 0 : H.label) || t.label
231
+ };
232
+ }
233
+ );
234
+ },
235
+ showSearch: !0,
236
+ optionFilterProp: "label"
237
+ }
238
+ )
239
+ ] }),
240
+ /* @__PURE__ */ o(
241
+ Z,
242
+ {
243
+ column: 1,
244
+ list: [
245
+ /* @__PURE__ */ o(ee, { name: "label", label: "名称", rule: "REQ", disabled: !s }, "label"),
246
+ /* @__PURE__ */ o(
247
+ k,
248
+ {
249
+ name: "templateCode",
250
+ label: "关联模板",
251
+ rule: "REQ",
252
+ disabled: !s,
253
+ options: F(l == null ? void 0 : l.eventKey),
254
+ showSearch: !0,
255
+ optionFilterProp: "label"
256
+ },
257
+ `tpl-${(l == null ? void 0 : l.eventKey) || ""}`
258
+ ),
259
+ /* @__PURE__ */ o(
260
+ k,
261
+ {
262
+ name: "levels",
263
+ label: "级别",
264
+ mode: "multiple",
265
+ disabled: !s,
266
+ options: ["L1", "L2", "L3"].map((e) => ({ value: e, label: e }))
267
+ },
268
+ "levels"
269
+ ),
270
+ /* @__PURE__ */ o(
271
+ k,
272
+ {
273
+ name: "audienceRoles",
274
+ label: "受众角色",
275
+ mode: "multiple",
276
+ disabled: !s,
277
+ options: N.map((e) => ({ value: e.code, label: e.name || e.code })),
278
+ optionFilterProp: "label"
279
+ },
280
+ "audienceRoles"
281
+ ),
282
+ /* @__PURE__ */ o(
283
+ B,
284
+ {
285
+ name: "slaHours",
286
+ label: "SLA(小时)",
287
+ disabled: !s,
288
+ min: 0,
289
+ style: { width: "100%" }
290
+ },
291
+ "slaHours"
292
+ ),
293
+ /* @__PURE__ */ o(
294
+ B,
295
+ {
296
+ name: "scanLookbackDays",
297
+ label: "回看(天)",
298
+ disabled: !s,
299
+ min: 0,
300
+ style: { width: "100%" }
301
+ },
302
+ "scanLookbackDays"
303
+ )
304
+ ]
305
+ }
306
+ )
307
+ ]
308
+ }
309
+ )
310
+ ] });
311
+ };
312
+ export {
313
+ be as PushRulesPanel
314
+ };
315
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/Tools/MessageCenter/MessageTemplateAdmin/PushRulesPanel/index.tsx"],"sourcesContent":["import { FormInfo, FormModal, Input, InputNumber, Select } from '@/components/FormInfo';\nimport { Alert } from '@/components/Alert';\nimport { Empty } from '@/components/Empty';\nimport { PageSpin } from '@/components/Layout';\nimport { Table } from '@/components/Table';\nimport { Button, Select as AntSelect, Space, Switch, message } from 'antd';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport type {\n MessageAudienceRoleOption,\n MessageEventCatalogItem,\n MessageTemplateAdminItem,\n PushRuleAdminItem,\n} from '../types';\nimport { resolveTemplateCodeAfterEventChange } from '../../utils/adminGuards';\nimport styles from '../style.module.scss';\n\n/** CI tsc:kne Select 重载与 FieldProps 交叉时误匹配 FormItem children;宽化为任意 props */\nconst FiSelect = Select as unknown as React.ComponentType<Record<string, unknown>>;\nconst FiInput = Input as unknown as React.ComponentType<Record<string, unknown>>;\nconst FiInputNumber = InputNumber as unknown as React.ComponentType<Record<string, unknown>>;\n\nexport type PushRulesPanelProps = {\n canWrite: boolean;\n catalog: MessageEventCatalogItem[];\n templates: MessageTemplateAdminItem[];\n roleOptions: MessageAudienceRoleOption[];\n fetchPushRules: () => Promise<PushRuleAdminItem[]>;\n savePushRule: (item: PushRuleAdminItem) => Promise<void>;\n setPushRuleEnabled?: (item: PushRuleAdminItem, enabled: boolean) => Promise<void>;\n deletePushRule?: (item: PushRuleAdminItem) => Promise<void>;\n createNonce?: number;\n};\n\ntype FormShape = {\n label?: string;\n eventKey?: string;\n templateCode?: string;\n levels?: string[];\n audienceRoles?: string[];\n slaHours?: number;\n scanLookbackDays?: number;\n};\n\n/**\n * 推送规则 CRUD:必含 eventKey + templateCode;channels 默认 in_app。\n */\nexport const PushRulesPanel: React.FC<PushRulesPanelProps> = ({\n canWrite,\n catalog,\n templates,\n roleOptions,\n fetchPushRules,\n savePushRule,\n setPushRuleEnabled,\n deletePushRule,\n createNonce = 0,\n}) => {\n const [rows, setRows] = useState<PushRuleAdminItem[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [editing, setEditing] = useState<PushRuleAdminItem | null>(null);\n const [isCreate, setIsCreate] = useState(false);\n\n const reload = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const list = await fetchPushRules();\n setRows(Array.isArray(list) ? list : []);\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n setRows([]);\n } finally {\n setLoading(false);\n }\n }, [fetchPushRules]);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n useEffect(() => {\n if (!createNonce || !canWrite) return;\n const first = catalog[0];\n const tplForEvent = templates.find((t) => t.eventKey === first?.eventKey);\n setIsCreate(true);\n setEditing({\n label: first?.label || '新建推送规则',\n eventKey: first?.eventKey || '',\n templateCode: tplForEvent?.code || '',\n levels: ['L2'],\n audienceRoles: [],\n channels: ['in_app'],\n slaHours: 36,\n scanLookbackDays: 7,\n enabled: true,\n });\n }, [createNonce, canWrite, catalog, templates]);\n\n const templatesForEvent = useCallback(\n (eventKey?: string) =>\n templates\n .filter((t) => !eventKey || t.eventKey === eventKey)\n .map((t) => ({\n value: String(t.code || ''),\n label: `${t.label || t.code || ''}(${t.code || ''})`,\n }))\n .filter((o) => o.value),\n [templates],\n );\n\n const formData = useMemo(\n () => ({\n label: editing?.label,\n eventKey: editing?.eventKey,\n templateCode: editing?.templateCode,\n levels: editing?.levels || [],\n audienceRoles: editing?.audienceRoles || [],\n slaHours: editing?.slaHours ?? 0,\n scanLookbackDays: editing?.scanLookbackDays ?? 0,\n }),\n [editing],\n );\n\n const formProps = useMemo(\n () => ({\n data: formData,\n onSubmit: async (data: FormShape) => {\n if (!canWrite || !editing) {\n message.warning('当前为只读');\n return false;\n }\n const eventKey = String(editing.eventKey || data.eventKey || '').trim();\n const templateCode = String(data.templateCode || '').trim();\n if (!eventKey) {\n message.warning('请选择事件');\n return false;\n }\n if (!templateCode) {\n message.warning('请关联模板编号');\n return false;\n }\n try {\n await savePushRule({\n ...editing,\n label: String(data.label || editing.label || '').trim() || eventKey,\n eventKey,\n templateCode,\n levels: data.levels || [],\n audienceRoles: data.audienceRoles || [],\n channels: ['in_app'],\n slaHours: Number(data.slaHours ?? 0),\n scanLookbackDays: Number(data.scanLookbackDays ?? 0),\n enabled: isCreate ? true : editing.enabled !== false,\n });\n message.success('已保存');\n setEditing(null);\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n return false;\n }\n },\n }),\n [canWrite, editing, formData, isCreate, reload, savePushRule],\n );\n\n const columns = useMemo(\n () => [\n { title: '名称', dataIndex: 'label', key: 'label', ellipsis: true },\n {\n title: '事件',\n dataIndex: 'eventKey',\n key: 'eventKey',\n render: (v: string) => catalog.find((c) => c.eventKey === v)?.label || v || '—',\n },\n { title: '关联模板', dataIndex: 'templateCode', key: 'templateCode', width: 140 },\n {\n title: '级别',\n dataIndex: 'levels',\n key: 'levels',\n width: 100,\n render: (lv: string[] | undefined) => (lv || []).join(',') || '—',\n },\n {\n title: '启用',\n dataIndex: 'enabled',\n key: 'enabled',\n width: 80,\n render: (_: unknown, r: PushRuleAdminItem) => (\n <Switch\n size=\"small\"\n checked={r.enabled !== false}\n disabled={!canWrite || !setPushRuleEnabled}\n onChange={(checked) => {\n void (async () => {\n try {\n await setPushRuleEnabled?.(r, checked);\n message.success(checked ? '已启用' : '已停用');\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n }\n })();\n }}\n />\n ),\n },\n {\n title: '操作',\n key: 'actions',\n width: 140,\n render: (_: unknown, r: PushRuleAdminItem) => (\n <Space size={4}>\n <Button\n type=\"link\"\n size=\"small\"\n disabled={!canWrite}\n onClick={() => {\n setIsCreate(false);\n setEditing({ ...r });\n }}\n >\n 编辑\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n disabled={!canWrite || !deletePushRule}\n onClick={() => {\n void (async () => {\n try {\n await deletePushRule?.(r);\n message.success('已删除');\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n }\n })();\n }}\n >\n 删除\n </Button>\n </Space>\n ),\n },\n ],\n [canWrite, catalog, deletePushRule, reload, setPushRuleEnabled],\n );\n\n return (\n <div className={styles.pane}>\n {error ? <Alert type=\"error\" showIcon message={error} style={{ marginBottom: 12 }} /> : null}\n <PageSpin spinning={loading}>\n {rows.length === 0 && !loading ? (\n <Empty description=\"暂无推送规则\" />\n ) : (\n <Table<PushRuleAdminItem>\n rowKey={(r) => r.id || r.code || `${r.eventKey}-${r.templateCode}`}\n tableName=\"msg-center-push-rules\"\n columnConfigEnabled={false}\n columnResizeEnabled={false}\n columns={columns}\n dataSource={rows}\n pagination={false}\n size=\"small\"\n />\n )}\n </PageSpin>\n <FormModal\n title={isCreate ? '新建推送规则' : '编辑推送规则'}\n open={Boolean(editing)}\n onCancel={() => setEditing(null)}\n width={560}\n okText=\"保存\"\n autoClose={false}\n formProps={formProps}\n >\n {/* 事件用 antd Select:FormInfo Select + onChange 在 CI tsc 下与 kne 重载冲突 */}\n <div style={{ marginBottom: 16 }}>\n <div style={{ marginBottom: 8 }}>事件</div>\n <AntSelect\n style={{ width: '100%' }}\n disabled={!canWrite}\n value={editing?.eventKey || undefined}\n options={catalog.map((c) => ({\n value: c.eventKey,\n label: c.label || c.eventKey,\n }))}\n onChange={(ek) => {\n const next = String(ek || '');\n const opts = templatesForEvent(next);\n setEditing((prev) =>\n prev\n ? {\n ...prev,\n eventKey: next,\n templateCode: resolveTemplateCodeAfterEventChange(prev.templateCode, opts),\n label: catalog.find((c) => c.eventKey === next)?.label || prev.label,\n }\n : prev,\n );\n }}\n showSearch\n optionFilterProp=\"label\"\n />\n </div>\n <FormInfo\n column={1}\n list={[\n <FiInput key=\"label\" name=\"label\" label=\"名称\" rule=\"REQ\" disabled={!canWrite} />,\n <FiSelect\n key={`tpl-${editing?.eventKey || ''}`}\n name=\"templateCode\"\n label=\"关联模板\"\n rule=\"REQ\"\n disabled={!canWrite}\n options={templatesForEvent(editing?.eventKey)}\n showSearch\n optionFilterProp=\"label\"\n />,\n <FiSelect\n key=\"levels\"\n name=\"levels\"\n label=\"级别\"\n mode=\"multiple\"\n disabled={!canWrite}\n options={['L1', 'L2', 'L3'].map((x) => ({ value: x, label: x }))}\n />,\n <FiSelect\n key=\"audienceRoles\"\n name=\"audienceRoles\"\n label=\"受众角色\"\n mode=\"multiple\"\n disabled={!canWrite}\n options={roleOptions.map((r) => ({ value: r.code, label: r.name || r.code }))}\n optionFilterProp=\"label\"\n />,\n <FiInputNumber\n key=\"slaHours\"\n name=\"slaHours\"\n label=\"SLA(小时)\"\n disabled={!canWrite}\n min={0}\n style={{ width: '100%' }}\n />,\n <FiInputNumber\n key=\"scanLookbackDays\"\n name=\"scanLookbackDays\"\n label=\"回看(天)\"\n disabled={!canWrite}\n min={0}\n style={{ width: '100%' }}\n />,\n ]}\n />\n </FormModal>\n </div>\n );\n};\n\nexport default PushRulesPanel;\n"],"names":["FiSelect","Select","FiInput","Input","FiInputNumber","InputNumber","PushRulesPanel","canWrite","catalog","templates","roleOptions","fetchPushRules","savePushRule","setPushRuleEnabled","deletePushRule","createNonce","rows","setRows","useState","loading","setLoading","error","setError","editing","setEditing","isCreate","setIsCreate","reload","useCallback","list","useEffect","first","tplForEvent","t","templatesForEvent","eventKey","o","formData","useMemo","formProps","data","message","templateCode","e","columns","v","_a","c","lv","_","r","jsx","Switch","checked","jsxs","Space","Button","styles","Alert","PageSpin","Empty","Table","FormModal","AntSelect","ek","next","opts","prev","resolveTemplateCodeAfterEventChange","FormInfo","x"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ import { MessageTemplateVariableAdmin } from '../types';
3
+ export type VariablesPanelProps = {
4
+ canWrite: boolean;
5
+ fetchVariables: () => Promise<MessageTemplateVariableAdmin[]>;
6
+ saveVariable: (item: MessageTemplateVariableAdmin) => Promise<void>;
7
+ deleteVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;
8
+ createNonce?: number;
9
+ };
10
+ /**
11
+ * 租户变量管理:可增改;基线 key 不可删(source=catalog 或 baseline)。
12
+ */
13
+ export declare const VariablesPanel: React.FC<VariablesPanelProps>;
14
+ export default VariablesPanel;
@@ -0,0 +1,183 @@
1
+ import { jsx as s, jsxs as x } from "react/jsx-runtime";
2
+ import { message as i, Tag as M, Space as T, Button as C } from "antd";
3
+ import { useState as m, useCallback as A, useEffect as v, useMemo as y } from "react";
4
+ import { canDeleteTenantVariable as P } from "../../utils/adminGuards.js";
5
+ import R from "../style.module.scss.js";
6
+ import j from "../../../../Alert/Alert.js";
7
+ import D from "../../../../Layout/PageSpin/index.js";
8
+ import _ from "../../../../Empty/Empty.js";
9
+ import K from "../../../../Table/Table.js";
10
+ import L from "../../../../FormInfo/FormModal.js";
11
+ import N from "../../../../FormInfo/FormInfo.js";
12
+ import { Input as Q, Select as q } from "../../../../FormInfo/fields.js";
13
+ const G = q, z = Q, se = ({
14
+ canWrite: l,
15
+ fetchVariables: u,
16
+ saveVariable: p,
17
+ deleteVariable: a,
18
+ createNonce: f = 0
19
+ }) => {
20
+ const [d, k] = m([]), [g, b] = m(!1), [h, w] = m(""), [e, c] = m(null), [S, E] = m(!1), n = A(async () => {
21
+ b(!0), w("");
22
+ try {
23
+ const t = await u();
24
+ k(Array.isArray(t) ? t : []);
25
+ } catch (t) {
26
+ w(t instanceof Error ? t.message : String(t)), k([]);
27
+ } finally {
28
+ b(!1);
29
+ }
30
+ }, [u]);
31
+ v(() => {
32
+ n();
33
+ }, [n]), v(() => {
34
+ !f || !l || (E(!0), c({ key: "", label: "", type: "string", source: "tenant" }));
35
+ }, [f, l]);
36
+ const I = y(
37
+ () => ({
38
+ key: e == null ? void 0 : e.key,
39
+ label: e == null ? void 0 : e.label,
40
+ type: (e == null ? void 0 : e.type) || "string"
41
+ }),
42
+ [e]
43
+ ), F = y(
44
+ () => ({
45
+ data: I,
46
+ onSubmit: async (t) => {
47
+ if (!l || !e) return !1;
48
+ const r = String(t.key || e.key || "").trim();
49
+ if (!r)
50
+ return i.warning("请填写变量 key"), !1;
51
+ try {
52
+ await p({
53
+ ...e,
54
+ key: r,
55
+ label: String(t.label || "").trim(),
56
+ type: String(t.type || "string"),
57
+ source: "tenant"
58
+ }), i.success("已保存"), c(null), await n();
59
+ } catch (o) {
60
+ return i.error(o instanceof Error ? o.message : String(o)), !1;
61
+ }
62
+ }
63
+ }),
64
+ [l, e, I, n, p]
65
+ ), B = y(
66
+ () => [
67
+ { title: "key", dataIndex: "key", key: "key", width: 140 },
68
+ { title: "中文", dataIndex: "label", key: "label", ellipsis: !0 },
69
+ { title: "类型", dataIndex: "type", key: "type", width: 90 },
70
+ {
71
+ title: "来源",
72
+ dataIndex: "source",
73
+ key: "source",
74
+ width: 100,
75
+ render: (t, r) => /* @__PURE__ */ s(M, { children: r.source === "tenant" ? r.baseline ? "覆盖基线" : "租户" : "基线" })
76
+ },
77
+ {
78
+ title: "操作",
79
+ key: "actions",
80
+ width: 140,
81
+ render: (t, r) => /* @__PURE__ */ x(T, { size: 4, children: [
82
+ /* @__PURE__ */ s(
83
+ C,
84
+ {
85
+ type: "link",
86
+ size: "small",
87
+ disabled: !l,
88
+ onClick: () => {
89
+ E(!1), c({ ...r });
90
+ },
91
+ children: "编辑"
92
+ }
93
+ ),
94
+ /* @__PURE__ */ s(
95
+ C,
96
+ {
97
+ type: "link",
98
+ size: "small",
99
+ danger: !0,
100
+ disabled: !l || !a || !P(r),
101
+ onClick: () => {
102
+ (async () => {
103
+ try {
104
+ await (a == null ? void 0 : a(r)), i.success("已删除"), await n();
105
+ } catch (o) {
106
+ i.error(o instanceof Error ? o.message : String(o));
107
+ }
108
+ })();
109
+ },
110
+ children: "删除"
111
+ }
112
+ )
113
+ ] })
114
+ }
115
+ ],
116
+ [l, a, n]
117
+ );
118
+ return /* @__PURE__ */ x("div", { className: R.pane, children: [
119
+ h ? /* @__PURE__ */ s(j, { type: "error", showIcon: !0, message: h, style: { marginBottom: 12 } }) : null,
120
+ /* @__PURE__ */ s(D, { spinning: g, children: d.length === 0 && !g ? /* @__PURE__ */ s(_, { description: "暂无变量。基线来自 catalog;可新建租户变量。catalog 为空时模板「插入变量」不可用。" }) : /* @__PURE__ */ s(
121
+ K,
122
+ {
123
+ rowKey: (t) => t.key,
124
+ tableName: "msg-center-variables",
125
+ columnConfigEnabled: !1,
126
+ columnResizeEnabled: !1,
127
+ columns: B,
128
+ dataSource: d,
129
+ pagination: !1,
130
+ size: "small"
131
+ }
132
+ ) }),
133
+ /* @__PURE__ */ s(
134
+ L,
135
+ {
136
+ title: S ? "新建变量" : "编辑变量",
137
+ open: !!e,
138
+ onCancel: () => c(null),
139
+ width: 480,
140
+ okText: "保存",
141
+ autoClose: !1,
142
+ formProps: F,
143
+ children: /* @__PURE__ */ s(
144
+ N,
145
+ {
146
+ column: 1,
147
+ list: [
148
+ /* @__PURE__ */ s(
149
+ z,
150
+ {
151
+ name: "key",
152
+ label: "key",
153
+ rule: "REQ",
154
+ disabled: !l || !S && !!(e != null && e.key),
155
+ placeholder: "如 customField"
156
+ },
157
+ "key"
158
+ ),
159
+ /* @__PURE__ */ s(z, { name: "label", label: "中文名", disabled: !l }, "label"),
160
+ /* @__PURE__ */ s(
161
+ G,
162
+ {
163
+ name: "type",
164
+ label: "类型",
165
+ disabled: !l,
166
+ options: [
167
+ { value: "string", label: "string" },
168
+ { value: "number", label: "number" }
169
+ ]
170
+ },
171
+ "type"
172
+ )
173
+ ]
174
+ }
175
+ )
176
+ }
177
+ )
178
+ ] });
179
+ };
180
+ export {
181
+ se as VariablesPanel
182
+ };
183
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/Tools/MessageCenter/MessageTemplateAdmin/VariablesPanel/index.tsx"],"sourcesContent":["import { FormInfo, FormModal, Input, Select } from '@/components/FormInfo';\nimport { Alert } from '@/components/Alert';\nimport { Empty } from '@/components/Empty';\nimport { PageSpin } from '@/components/Layout';\nimport { Table } from '@/components/Table';\nimport { Button, Space, Tag, message } from 'antd';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { MessageTemplateVariableAdmin } from '../types';\nimport { canDeleteTenantVariable } from '../../utils/adminGuards';\nimport styles from '../style.module.scss';\n\n/** CI tsc:kne Field 重载误匹配 FormItem children */\nconst FiSelect = Select as unknown as React.ComponentType<Record<string, unknown>>;\nconst FiInput = Input as unknown as React.ComponentType<Record<string, unknown>>;\n\nexport type VariablesPanelProps = {\n canWrite: boolean;\n fetchVariables: () => Promise<MessageTemplateVariableAdmin[]>;\n saveVariable: (item: MessageTemplateVariableAdmin) => Promise<void>;\n deleteVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;\n createNonce?: number;\n};\n\ntype FormShape = { key?: string; label?: string; type?: string };\n\n/**\n * 租户变量管理:可增改;基线 key 不可删(source=catalog 或 baseline)。\n */\nexport const VariablesPanel: React.FC<VariablesPanelProps> = ({\n canWrite,\n fetchVariables,\n saveVariable,\n deleteVariable,\n createNonce = 0,\n}) => {\n const [rows, setRows] = useState<MessageTemplateVariableAdmin[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState('');\n const [editing, setEditing] = useState<MessageTemplateVariableAdmin | null>(null);\n const [isCreate, setIsCreate] = useState(false);\n\n const reload = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const list = await fetchVariables();\n setRows(Array.isArray(list) ? list : []);\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n setRows([]);\n } finally {\n setLoading(false);\n }\n }, [fetchVariables]);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n useEffect(() => {\n if (!createNonce || !canWrite) return;\n setIsCreate(true);\n setEditing({ key: '', label: '', type: 'string', source: 'tenant' });\n }, [createNonce, canWrite]);\n\n const formData = useMemo(\n () => ({\n key: editing?.key,\n label: editing?.label,\n type: editing?.type || 'string',\n }),\n [editing],\n );\n\n const formProps = useMemo(\n () => ({\n data: formData,\n onSubmit: async (data: FormShape) => {\n if (!canWrite || !editing) return false;\n const key = String(data.key || editing.key || '').trim();\n if (!key) {\n message.warning('请填写变量 key');\n return false;\n }\n try {\n await saveVariable({\n ...editing,\n key,\n label: String(data.label || '').trim(),\n type: String(data.type || 'string'),\n source: 'tenant',\n });\n message.success('已保存');\n setEditing(null);\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n return false;\n }\n },\n }),\n [canWrite, editing, formData, reload, saveVariable],\n );\n\n const columns = useMemo(\n () => [\n { title: 'key', dataIndex: 'key', key: 'key', width: 140 },\n { title: '中文', dataIndex: 'label', key: 'label', ellipsis: true },\n { title: '类型', dataIndex: 'type', key: 'type', width: 90 },\n {\n title: '来源',\n dataIndex: 'source',\n key: 'source',\n width: 100,\n render: (_: unknown, r: MessageTemplateVariableAdmin) => (\n <Tag>{r.source === 'tenant' ? (r.baseline ? '覆盖基线' : '租户') : '基线'}</Tag>\n ),\n },\n {\n title: '操作',\n key: 'actions',\n width: 140,\n render: (_: unknown, r: MessageTemplateVariableAdmin) => (\n <Space size={4}>\n <Button\n type=\"link\"\n size=\"small\"\n disabled={!canWrite}\n onClick={() => {\n setIsCreate(false);\n setEditing({ ...r });\n }}\n >\n 编辑\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n disabled={!canWrite || !deleteVariable || !canDeleteTenantVariable(r)}\n onClick={() => {\n void (async () => {\n try {\n await deleteVariable?.(r);\n message.success('已删除');\n await reload();\n } catch (e) {\n message.error(e instanceof Error ? e.message : String(e));\n }\n })();\n }}\n >\n 删除\n </Button>\n </Space>\n ),\n },\n ],\n [canWrite, deleteVariable, reload],\n );\n\n return (\n <div className={styles.pane}>\n {error ? <Alert type=\"error\" showIcon message={error} style={{ marginBottom: 12 }} /> : null}\n <PageSpin spinning={loading}>\n {rows.length === 0 && !loading ? (\n <Empty description=\"暂无变量。基线来自 catalog;可新建租户变量。catalog 为空时模板「插入变量」不可用。\" />\n ) : (\n <Table<MessageTemplateVariableAdmin>\n rowKey={(r) => r.key}\n tableName=\"msg-center-variables\"\n columnConfigEnabled={false}\n columnResizeEnabled={false}\n columns={columns}\n dataSource={rows}\n pagination={false}\n size=\"small\"\n />\n )}\n </PageSpin>\n <FormModal\n title={isCreate ? '新建变量' : '编辑变量'}\n open={Boolean(editing)}\n onCancel={() => setEditing(null)}\n width={480}\n okText=\"保存\"\n autoClose={false}\n formProps={formProps}\n >\n <FormInfo\n column={1}\n list={[\n <FiInput\n key=\"key\"\n name=\"key\"\n label=\"key\"\n rule=\"REQ\"\n disabled={!canWrite || (!isCreate && Boolean(editing?.key))}\n placeholder=\"如 customField\"\n />,\n <FiInput key=\"label\" name=\"label\" label=\"中文名\" disabled={!canWrite} />,\n <FiSelect\n key=\"type\"\n name=\"type\"\n label=\"类型\"\n disabled={!canWrite}\n options={[\n { value: 'string', label: 'string' },\n { value: 'number', label: 'number' },\n ]}\n />,\n ]}\n />\n </FormModal>\n </div>\n );\n};\n\nexport default VariablesPanel;\n"],"names":["FiSelect","Select","FiInput","Input","VariablesPanel","canWrite","fetchVariables","saveVariable","deleteVariable","createNonce","rows","setRows","useState","loading","setLoading","error","setError","editing","setEditing","isCreate","setIsCreate","reload","useCallback","list","e","useEffect","formData","useMemo","formProps","data","key","message","columns","_","jsx","Tag","jsxs","Space","Button","canDeleteTenantVariable","styles","Alert","PageSpin","Empty","Table","r","FormModal","FormInfo"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { MessageTemplateAdmin } from './MessageTemplateAdmin';
2
- export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, } from './types';
2
+ export type { MessageTemplateAdminProps, MessageTemplateAdminItem, MessageEventCatalogItem, MessageEventCatalogPayload, MessageAudienceRoleOption, MessageTemplateVariable, MessageTemplateVariableAdmin, PushRuleAdminItem, } from './types';
3
3
  export { variablesFromCatalog, previewVarsFromVariables } from './types';
@@ -40,6 +40,24 @@ export type MessageTemplateVariable = {
40
40
  /** 可选中文说明;无则下拉只显示 code */
41
41
  label?: string;
42
42
  type?: string;
43
+ source?: 'catalog' | 'tenant';
44
+ baseline?: boolean;
45
+ };
46
+ /** 变量管理行 */
47
+ export type MessageTemplateVariableAdmin = MessageTemplateVariable;
48
+ export type PushRuleAdminItem = {
49
+ id?: string;
50
+ code?: string;
51
+ label?: string;
52
+ eventKey?: string;
53
+ levels?: string[];
54
+ templateCode?: string;
55
+ audienceRoles?: string[];
56
+ audienceUserIds?: string[];
57
+ channels?: string[];
58
+ slaHours?: number;
59
+ scanLookbackDays?: number;
60
+ enabled?: boolean;
43
61
  };
44
62
  export type MessageTemplateAdminProps = {
45
63
  fetchTemplates: () => Promise<MessageTemplateAdminItem[]>;
@@ -66,7 +84,15 @@ export type MessageTemplateAdminProps = {
66
84
  roles: string[];
67
85
  onChange: (roles: string[]) => void;
68
86
  }) => ReactNode;
87
+ /** @deprecated 优先传 fetchPushRules */
69
88
  pushRulesSlot?: ReactNode;
89
+ fetchPushRules?: () => Promise<PushRuleAdminItem[]>;
90
+ savePushRule?: (item: PushRuleAdminItem) => Promise<void>;
91
+ setPushRuleEnabled?: (item: PushRuleAdminItem, enabled: boolean) => Promise<void>;
92
+ deletePushRule?: (item: PushRuleAdminItem) => Promise<void>;
93
+ fetchVariables?: () => Promise<MessageTemplateVariableAdmin[]>;
94
+ saveVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;
95
+ deleteVariable?: (item: MessageTemplateVariableAdmin) => Promise<void>;
70
96
  emptyText?: string;
71
97
  className?: string;
72
98
  /** 自动编号前缀,默认 MEQ */
@@ -4,7 +4,9 @@ function i(t) {
4
4
  return t.variables.map((e) => ({
5
5
  key: String(e.key || "").trim(),
6
6
  label: e.label,
7
- type: e.type
7
+ type: e.type,
8
+ source: e.source,
9
+ baseline: e.baseline
8
10
  })).filter((e) => e.key);
9
11
  const r = t.contextSchema;
10
12
  return !r || typeof r != "object" ? [] : Object.entries(r).map(([e, n]) => typeof n == "string" ? { key: e, type: n } : n && typeof n == "object" ? {
@@ -13,14 +15,14 @@ function i(t) {
13
15
  label: n.label
14
16
  } : { key: e }).filter((e) => e.key);
15
17
  }
16
- function l(t) {
18
+ function s(t) {
17
19
  const r = {};
18
20
  for (const e of t)
19
21
  r[e.key] = e.type === "number" ? "1" : e.label || e.key;
20
22
  return r;
21
23
  }
22
24
  export {
23
- l as previewVarsFromVariables,
25
+ s as previewVarsFromVariables,
24
26
  i as variablesFromCatalog
25
27
  };
26
28
  //# sourceMappingURL=types.js.map