smart-admin-web 10.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (718) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +78 -0
  3. package/dist/App.vue.d.ts +3 -0
  4. package/dist/App.vue.js +54 -0
  5. package/dist/App.vue.js.map +1 -0
  6. package/dist/App2.vue.js +5 -0
  7. package/dist/App2.vue.js.map +1 -0
  8. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  9. package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
  10. package/dist/api/client.d.ts +29 -0
  11. package/dist/api/client.js +139 -0
  12. package/dist/api/client.js.map +1 -0
  13. package/dist/api/index.d.ts +672 -0
  14. package/dist/api/index.js +638 -0
  15. package/dist/api/index.js.map +1 -0
  16. package/dist/api/reauthGate.d.ts +16 -0
  17. package/dist/api/reauthGate.js +21 -0
  18. package/dist/api/reauthGate.js.map +1 -0
  19. package/dist/api/schema.d.ts +10230 -0
  20. package/dist/assets/icons/ph-subset.json.js +16 -0
  21. package/dist/assets/icons/ph-subset.json.js.map +1 -0
  22. package/dist/assets/oauth/dingtalk.svg.js +5 -0
  23. package/dist/assets/oauth/dingtalk.svg.js.map +1 -0
  24. package/dist/assets/oauth/gitee.svg.js +5 -0
  25. package/dist/assets/oauth/gitee.svg.js.map +1 -0
  26. package/dist/assets/oauth/github.svg.js +5 -0
  27. package/dist/assets/oauth/github.svg.js.map +1 -0
  28. package/dist/assets/oauth/qq.svg.js +5 -0
  29. package/dist/assets/oauth/qq.svg.js.map +1 -0
  30. package/dist/assets/oauth/wechat.svg.js +5 -0
  31. package/dist/assets/oauth/wechat.svg.js.map +1 -0
  32. package/dist/assets/oauth/wecom.svg.js +5 -0
  33. package/dist/assets/oauth/wecom.svg.js.map +1 -0
  34. package/dist/assets/svg/star.svg.js +6 -0
  35. package/dist/assets/svg/star.svg.js.map +1 -0
  36. package/dist/components/ApiSelect/index.vue.d.ts +22 -0
  37. package/dist/components/ApiSelect/index.vue.js +50 -0
  38. package/dist/components/ApiSelect/index.vue.js.map +1 -0
  39. package/dist/components/ApiSelect/index2.vue.js +5 -0
  40. package/dist/components/ApiSelect/index2.vue.js.map +1 -0
  41. package/dist/components/AppIcon.vue.d.ts +7 -0
  42. package/dist/components/AppIcon.vue.js +33 -0
  43. package/dist/components/AppIcon.vue.js.map +1 -0
  44. package/dist/components/AppIcon2.vue.js +5 -0
  45. package/dist/components/AppIcon2.vue.js.map +1 -0
  46. package/dist/components/Chart/BarChart.vue.d.ts +13 -0
  47. package/dist/components/Chart/BarChart.vue.js +27 -0
  48. package/dist/components/Chart/BarChart.vue.js.map +1 -0
  49. package/dist/components/Chart/BarChart2.vue.js +5 -0
  50. package/dist/components/Chart/BarChart2.vue.js.map +1 -0
  51. package/dist/components/Chart/LineChart.vue.d.ts +15 -0
  52. package/dist/components/Chart/LineChart.vue.js +33 -0
  53. package/dist/components/Chart/LineChart.vue.js.map +1 -0
  54. package/dist/components/Chart/LineChart2.vue.js +5 -0
  55. package/dist/components/Chart/LineChart2.vue.js.map +1 -0
  56. package/dist/components/Chart/PieChart.vue.d.ts +14 -0
  57. package/dist/components/Chart/PieChart.vue.js +31 -0
  58. package/dist/components/Chart/PieChart.vue.js.map +1 -0
  59. package/dist/components/Chart/PieChart2.vue.js +5 -0
  60. package/dist/components/Chart/PieChart2.vue.js.map +1 -0
  61. package/dist/components/Chart/echarts.d.ts +57 -0
  62. package/dist/components/Chart/echarts.js +47 -0
  63. package/dist/components/Chart/echarts.js.map +1 -0
  64. package/dist/components/Chart/index.vue.d.ts +12 -0
  65. package/dist/components/Chart/index.vue.js +8 -0
  66. package/dist/components/Chart/index.vue.js.map +1 -0
  67. package/dist/components/Chart/index2.vue.js +27 -0
  68. package/dist/components/Chart/index2.vue.js.map +1 -0
  69. package/dist/components/CodeBlock/index.vue.d.ts +17 -0
  70. package/dist/components/CodeBlock/index.vue.js +8 -0
  71. package/dist/components/CodeBlock/index.vue.js.map +1 -0
  72. package/dist/components/CodeBlock/index2.vue.js +48 -0
  73. package/dist/components/CodeBlock/index2.vue.js.map +1 -0
  74. package/dist/components/CronEditor/index.vue.d.ts +15 -0
  75. package/dist/components/CronEditor/index.vue.js +8 -0
  76. package/dist/components/CronEditor/index.vue.js.map +1 -0
  77. package/dist/components/CronEditor/index2.vue.js +528 -0
  78. package/dist/components/CronEditor/index2.vue.js.map +1 -0
  79. package/dist/components/DetailPage/index.vue.d.ts +26 -0
  80. package/dist/components/DetailPage/index.vue.js +8 -0
  81. package/dist/components/DetailPage/index.vue.js.map +1 -0
  82. package/dist/components/DetailPage/index2.vue.js +51 -0
  83. package/dist/components/DetailPage/index2.vue.js.map +1 -0
  84. package/dist/components/DictCheckbox/index.vue.d.ts +6 -0
  85. package/dist/components/DictCheckbox/index.vue.js +43 -0
  86. package/dist/components/DictCheckbox/index.vue.js.map +1 -0
  87. package/dist/components/DictCheckbox/index2.vue.js +5 -0
  88. package/dist/components/DictCheckbox/index2.vue.js.map +1 -0
  89. package/dist/components/DictRadio/index.vue.d.ts +6 -0
  90. package/dist/components/DictRadio/index.vue.js +38 -0
  91. package/dist/components/DictRadio/index.vue.js.map +1 -0
  92. package/dist/components/DictRadio/index2.vue.js +5 -0
  93. package/dist/components/DictRadio/index2.vue.js.map +1 -0
  94. package/dist/components/DictSelect/index.vue.d.ts +6 -0
  95. package/dist/components/DictSelect/index.vue.js +37 -0
  96. package/dist/components/DictSelect/index.vue.js.map +1 -0
  97. package/dist/components/DictSelect/index2.vue.js +5 -0
  98. package/dist/components/DictSelect/index2.vue.js.map +1 -0
  99. package/dist/components/DictTag/index.vue.d.ts +10 -0
  100. package/dist/components/DictTag/index.vue.js +48 -0
  101. package/dist/components/DictTag/index.vue.js.map +1 -0
  102. package/dist/components/DictTag/index2.vue.js +5 -0
  103. package/dist/components/DictTag/index2.vue.js.map +1 -0
  104. package/dist/components/ErrorBoundary/index.vue.d.ts +13 -0
  105. package/dist/components/ErrorBoundary/index.vue.js +8 -0
  106. package/dist/components/ErrorBoundary/index.vue.js.map +1 -0
  107. package/dist/components/ErrorBoundary/index2.vue.js +61 -0
  108. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -0
  109. package/dist/components/ExportColumnsModal/index.vue.d.ts +19 -0
  110. package/dist/components/ExportColumnsModal/index.vue.js +8 -0
  111. package/dist/components/ExportColumnsModal/index.vue.js.map +1 -0
  112. package/dist/components/ExportColumnsModal/index2.vue.js +121 -0
  113. package/dist/components/ExportColumnsModal/index2.vue.js.map +1 -0
  114. package/dist/components/FileUpload/index.vue.d.ts +24 -0
  115. package/dist/components/FileUpload/index.vue.js +42 -0
  116. package/dist/components/FileUpload/index.vue.js.map +1 -0
  117. package/dist/components/FileUpload/index2.vue.js +5 -0
  118. package/dist/components/FileUpload/index2.vue.js.map +1 -0
  119. package/dist/components/FormContainer/index.vue.d.ts +51 -0
  120. package/dist/components/FormContainer/index.vue.js +160 -0
  121. package/dist/components/FormContainer/index.vue.js.map +1 -0
  122. package/dist/components/FormContainer/index3.vue.js +6 -0
  123. package/dist/components/FormContainer/index3.vue.js.map +1 -0
  124. package/dist/components/IconPicker/index.vue.d.ts +18 -0
  125. package/dist/components/IconPicker/index.vue.js +43 -0
  126. package/dist/components/IconPicker/index.vue.js.map +1 -0
  127. package/dist/components/IconPicker/index2.vue.js +5 -0
  128. package/dist/components/IconPicker/index2.vue.js.map +1 -0
  129. package/dist/components/ImportWizard/index.vue.d.ts +39 -0
  130. package/dist/components/ImportWizard/index.vue.js +8 -0
  131. package/dist/components/ImportWizard/index.vue.js.map +1 -0
  132. package/dist/components/ImportWizard/index2.vue.js +634 -0
  133. package/dist/components/ImportWizard/index2.vue.js.map +1 -0
  134. package/dist/components/JsonEditor/index.vue.d.ts +12 -0
  135. package/dist/components/JsonEditor/index.vue.js +87 -0
  136. package/dist/components/JsonEditor/index.vue.js.map +1 -0
  137. package/dist/components/JsonEditor/index2.vue.js +5 -0
  138. package/dist/components/JsonEditor/index2.vue.js.map +1 -0
  139. package/dist/components/MarkdownEditor/MarkdownView.vue.d.ts +6 -0
  140. package/dist/components/MarkdownEditor/MarkdownView.vue.js +33 -0
  141. package/dist/components/MarkdownEditor/MarkdownView.vue.js.map +1 -0
  142. package/dist/components/MarkdownEditor/MarkdownView2.vue.js +5 -0
  143. package/dist/components/MarkdownEditor/MarkdownView2.vue.js.map +1 -0
  144. package/dist/components/MarkdownEditor/index.vue.d.ts +10 -0
  145. package/dist/components/MarkdownEditor/index.vue.js +35 -0
  146. package/dist/components/MarkdownEditor/index.vue.js.map +1 -0
  147. package/dist/components/MarkdownEditor/index2.vue.js +5 -0
  148. package/dist/components/MarkdownEditor/index2.vue.js.map +1 -0
  149. package/dist/components/MenuSearch.vue.d.ts +10 -0
  150. package/dist/components/MenuSearch.vue.js +8 -0
  151. package/dist/components/MenuSearch.vue.js.map +1 -0
  152. package/dist/components/MenuSearch2.vue.js +121 -0
  153. package/dist/components/MenuSearch2.vue.js.map +1 -0
  154. package/dist/components/OrgTreeSelect/index.vue.d.ts +6 -0
  155. package/dist/components/OrgTreeSelect/index.vue.js +42 -0
  156. package/dist/components/OrgTreeSelect/index.vue.js.map +1 -0
  157. package/dist/components/OrgTreeSelect/index2.vue.js +5 -0
  158. package/dist/components/OrgTreeSelect/index2.vue.js.map +1 -0
  159. package/dist/components/PasswordStrength/index.vue.d.ts +6 -0
  160. package/dist/components/PasswordStrength/index.vue.js +8 -0
  161. package/dist/components/PasswordStrength/index.vue.js.map +1 -0
  162. package/dist/components/PasswordStrength/index2.vue.js +91 -0
  163. package/dist/components/PasswordStrength/index2.vue.js.map +1 -0
  164. package/dist/components/ReauthModal.vue.d.ts +3 -0
  165. package/dist/components/ReauthModal.vue.js +8 -0
  166. package/dist/components/ReauthModal.vue.js.map +1 -0
  167. package/dist/components/ReauthModal2.vue.js +139 -0
  168. package/dist/components/ReauthModal2.vue.js.map +1 -0
  169. package/dist/components/RoleSelect/index.vue.d.ts +8 -0
  170. package/dist/components/RoleSelect/index.vue.js +26 -0
  171. package/dist/components/RoleSelect/index.vue.js.map +1 -0
  172. package/dist/components/RoleSelect/index2.vue.js +5 -0
  173. package/dist/components/RoleSelect/index2.vue.js.map +1 -0
  174. package/dist/components/SelectTable/index.vue.d.ts +76 -0
  175. package/dist/components/SelectTable/index.vue.js +8 -0
  176. package/dist/components/SelectTable/index.vue.js.map +1 -0
  177. package/dist/components/SelectTable/index2.vue.js +256 -0
  178. package/dist/components/SelectTable/index2.vue.js.map +1 -0
  179. package/dist/components/SmartLogo.vue.d.ts +8 -0
  180. package/dist/components/SmartLogo.vue.js +8 -0
  181. package/dist/components/SmartLogo.vue.js.map +1 -0
  182. package/dist/components/SmartLogo2.vue.js +74 -0
  183. package/dist/components/SmartLogo2.vue.js.map +1 -0
  184. package/dist/components/StatusSwitch/index.vue.d.ts +21 -0
  185. package/dist/components/StatusSwitch/index.vue.js +45 -0
  186. package/dist/components/StatusSwitch/index.vue.js.map +1 -0
  187. package/dist/components/StatusSwitch/index2.vue.js +5 -0
  188. package/dist/components/StatusSwitch/index2.vue.js.map +1 -0
  189. package/dist/components/TableZoomButton/index.vue.d.ts +13 -0
  190. package/dist/components/TableZoomButton/index.vue.js +42 -0
  191. package/dist/components/TableZoomButton/index.vue.js.map +1 -0
  192. package/dist/components/TableZoomButton/index2.vue.js +5 -0
  193. package/dist/components/TableZoomButton/index2.vue.js.map +1 -0
  194. package/dist/components/UserPicker/index.vue.d.ts +13 -0
  195. package/dist/components/UserPicker/index.vue.js +8 -0
  196. package/dist/components/UserPicker/index.vue.js.map +1 -0
  197. package/dist/components/UserPicker/index2.vue.js +214 -0
  198. package/dist/components/UserPicker/index2.vue.js.map +1 -0
  199. package/dist/components/UserSelect/index.vue.d.ts +9 -0
  200. package/dist/components/UserSelect/index.vue.js +32 -0
  201. package/dist/components/UserSelect/index.vue.js.map +1 -0
  202. package/dist/components/UserSelect/index2.vue.js +5 -0
  203. package/dist/components/UserSelect/index2.vue.js.map +1 -0
  204. package/dist/components/oauth/BrandIcon.vue.d.ts +12 -0
  205. package/dist/components/oauth/BrandIcon.vue.js +8 -0
  206. package/dist/components/oauth/BrandIcon.vue.js.map +1 -0
  207. package/dist/components/oauth/BrandIcon2.vue.js +95 -0
  208. package/dist/components/oauth/BrandIcon2.vue.js.map +1 -0
  209. package/dist/composables/authMenuRoute.d.ts +32 -0
  210. package/dist/composables/authMenuRoute.js +37 -0
  211. package/dist/composables/authMenuRoute.js.map +1 -0
  212. package/dist/composables/clearClientCache.d.ts +10 -0
  213. package/dist/composables/clearClientCache.js +17 -0
  214. package/dist/composables/clearClientCache.js.map +1 -0
  215. package/dist/composables/useAuthMenu.d.ts +3 -0
  216. package/dist/composables/useAuthMenu.js +61 -0
  217. package/dist/composables/useAuthMenu.js.map +1 -0
  218. package/dist/composables/useBatchDelete.d.ts +18 -0
  219. package/dist/composables/useBatchDelete.js +21 -0
  220. package/dist/composables/useBatchDelete.js.map +1 -0
  221. package/dist/composables/useCompactScreen.d.ts +12 -0
  222. package/dist/composables/useCompactScreen.js +17 -0
  223. package/dist/composables/useCompactScreen.js.map +1 -0
  224. package/dist/composables/useConfirm.d.ts +18 -0
  225. package/dist/composables/useConfirm.js +61 -0
  226. package/dist/composables/useConfirm.js.map +1 -0
  227. package/dist/composables/useFullscreenToggle.d.ts +11 -0
  228. package/dist/composables/useFullscreenToggle.js +64 -0
  229. package/dist/composables/useFullscreenToggle.js.map +1 -0
  230. package/dist/composables/useHeaderTools.d.ts +31 -0
  231. package/dist/composables/useHeaderTools.js +15 -0
  232. package/dist/composables/useHeaderTools.js.map +1 -0
  233. package/dist/composables/useLayoutMenu.d.ts +17 -0
  234. package/dist/composables/useLayoutMenu.js +93 -0
  235. package/dist/composables/useLayoutMenu.js.map +1 -0
  236. package/dist/composables/useMenuBadge.d.ts +11 -0
  237. package/dist/composables/useMenuBadge.js +17 -0
  238. package/dist/composables/useMenuBadge.js.map +1 -0
  239. package/dist/composables/useMenuFlat.d.ts +8 -0
  240. package/dist/composables/useMenuFlat.js +29 -0
  241. package/dist/composables/useMenuFlat.js.map +1 -0
  242. package/dist/composables/useModule.d.ts +16 -0
  243. package/dist/composables/useModule.js +44 -0
  244. package/dist/composables/useModule.js.map +1 -0
  245. package/dist/composables/useNoticeAction.d.ts +8 -0
  246. package/dist/composables/useNoticeAction.js +79 -0
  247. package/dist/composables/useNoticeAction.js.map +1 -0
  248. package/dist/composables/usePageTitle.d.ts +1 -0
  249. package/dist/composables/usePageTitle.js +20 -0
  250. package/dist/composables/usePageTitle.js.map +1 -0
  251. package/dist/composables/useRealtime.d.ts +31 -0
  252. package/dist/composables/useRealtime.js +59 -0
  253. package/dist/composables/useRealtime.js.map +1 -0
  254. package/dist/composables/useSite.d.ts +24 -0
  255. package/dist/composables/useSite.js +27 -0
  256. package/dist/composables/useSite.js.map +1 -0
  257. package/dist/composables/useTabTitle.d.ts +1 -0
  258. package/dist/composables/useTabTitle.js +10 -0
  259. package/dist/composables/useTabTitle.js.map +1 -0
  260. package/dist/composables/useTableRowSort.d.ts +20 -0
  261. package/dist/composables/useTableRowSort.js +59 -0
  262. package/dist/composables/useTableRowSort.js.map +1 -0
  263. package/dist/composables/useTableZoom.d.ts +5 -0
  264. package/dist/composables/useTableZoom.js +30 -0
  265. package/dist/composables/useTableZoom.js.map +1 -0
  266. package/dist/composables/useTheme.d.ts +13 -0
  267. package/dist/composables/useTheme.js +30 -0
  268. package/dist/composables/useTheme.js.map +1 -0
  269. package/dist/composables/useVisualViewportHeight.d.ts +3 -0
  270. package/dist/composables/useVisualViewportHeight.js +16 -0
  271. package/dist/composables/useVisualViewportHeight.js.map +1 -0
  272. package/dist/createSmartAdmin.d.ts +56 -0
  273. package/dist/createSmartAdmin.js +76 -0
  274. package/dist/createSmartAdmin.js.map +1 -0
  275. package/dist/directives/auth.d.ts +16 -0
  276. package/dist/directives/auth.js +19 -0
  277. package/dist/directives/auth.js.map +1 -0
  278. package/dist/env.d.ts +10 -0
  279. package/dist/index.d.ts +90 -0
  280. package/dist/index.js +273 -0
  281. package/dist/index.js.map +1 -0
  282. package/dist/layouts/AppHeader.vue.d.ts +12 -0
  283. package/dist/layouts/AppHeader.vue.js +8 -0
  284. package/dist/layouts/AppHeader.vue.js.map +1 -0
  285. package/dist/layouts/AppHeader2.vue.js +352 -0
  286. package/dist/layouts/AppHeader2.vue.js.map +1 -0
  287. package/dist/layouts/LayoutModeCards.vue.d.ts +3 -0
  288. package/dist/layouts/LayoutModeCards.vue.js +8 -0
  289. package/dist/layouts/LayoutModeCards.vue.js.map +1 -0
  290. package/dist/layouts/LayoutModeCards2.vue.js +67 -0
  291. package/dist/layouts/LayoutModeCards2.vue.js.map +1 -0
  292. package/dist/layouts/NoticeBell.vue.d.ts +3 -0
  293. package/dist/layouts/NoticeBell.vue.js +8 -0
  294. package/dist/layouts/NoticeBell.vue.js.map +1 -0
  295. package/dist/layouts/NoticeBell2.vue.js +292 -0
  296. package/dist/layouts/NoticeBell2.vue.js.map +1 -0
  297. package/dist/layouts/PersonalLayout.vue.d.ts +3 -0
  298. package/dist/layouts/PersonalLayout.vue.js +8 -0
  299. package/dist/layouts/PersonalLayout.vue.js.map +1 -0
  300. package/dist/layouts/PersonalLayout2.vue.js +65 -0
  301. package/dist/layouts/PersonalLayout2.vue.js.map +1 -0
  302. package/dist/layouts/SettingRow.vue.d.ts +16 -0
  303. package/dist/layouts/SettingRow.vue.js +8 -0
  304. package/dist/layouts/SettingRow.vue.js.map +1 -0
  305. package/dist/layouts/SettingRow2.vue.js +23 -0
  306. package/dist/layouts/SettingRow2.vue.js.map +1 -0
  307. package/dist/layouts/SettingsDrawer.vue.d.ts +10 -0
  308. package/dist/layouts/SettingsDrawer.vue.js +8 -0
  309. package/dist/layouts/SettingsDrawer.vue.js.map +1 -0
  310. package/dist/layouts/SettingsDrawer2.vue.js +380 -0
  311. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -0
  312. package/dist/layouts/TabsBar.vue.d.ts +3 -0
  313. package/dist/layouts/TabsBar.vue.js +8 -0
  314. package/dist/layouts/TabsBar.vue.js.map +1 -0
  315. package/dist/layouts/TabsBar2.vue.js +132 -0
  316. package/dist/layouts/TabsBar2.vue.js.map +1 -0
  317. package/dist/layouts/components/SideNav.vue.d.ts +15 -0
  318. package/dist/layouts/components/SideNav.vue.js +8 -0
  319. package/dist/layouts/components/SideNav.vue.js.map +1 -0
  320. package/dist/layouts/components/SideNav2.vue.js +49 -0
  321. package/dist/layouts/components/SideNav2.vue.js.map +1 -0
  322. package/dist/layouts/default.vue.d.ts +3 -0
  323. package/dist/layouts/default.vue.js +8 -0
  324. package/dist/layouts/default.vue.js.map +1 -0
  325. package/dist/layouts/default2.vue.js +213 -0
  326. package/dist/layouts/default2.vue.js.map +1 -0
  327. package/dist/lib/chunkReload.d.ts +9 -0
  328. package/dist/lib/chunkReload.js +24 -0
  329. package/dist/lib/chunkReload.js.map +1 -0
  330. package/dist/lib/icons.d.ts +2 -0
  331. package/dist/lib/icons.js +39 -0
  332. package/dist/lib/icons.js.map +1 -0
  333. package/dist/lib/loadingBar.d.ts +7 -0
  334. package/dist/lib/loadingBar.js +18 -0
  335. package/dist/lib/loadingBar.js.map +1 -0
  336. package/dist/lib/markdown.d.ts +8 -0
  337. package/dist/lib/markdown.js +16 -0
  338. package/dist/lib/markdown.js.map +1 -0
  339. package/dist/lib/markdownLinks.d.ts +26 -0
  340. package/dist/lib/markdownLinks.js +21 -0
  341. package/dist/lib/markdownLinks.js.map +1 -0
  342. package/dist/lib/noticeActions.d.ts +13 -0
  343. package/dist/lib/noticeActions.js +16 -0
  344. package/dist/lib/noticeActions.js.map +1 -0
  345. package/dist/lib/runtime.d.ts +21 -0
  346. package/dist/lib/runtime.js +13 -0
  347. package/dist/lib/runtime.js.map +1 -0
  348. package/dist/locales/en-US.d.ts +1358 -0
  349. package/dist/locales/en-US.js +1362 -0
  350. package/dist/locales/en-US.js.map +1 -0
  351. package/dist/locales/index.d.ts +30 -0
  352. package/dist/locales/index.js +46 -0
  353. package/dist/locales/index.js.map +1 -0
  354. package/dist/locales/menuTitle.d.ts +8 -0
  355. package/dist/locales/menuTitle.js +19 -0
  356. package/dist/locales/menuTitle.js.map +1 -0
  357. package/dist/locales/zh-CN.d.ts +1358 -0
  358. package/dist/locales/zh-CN.js +1368 -0
  359. package/dist/locales/zh-CN.js.map +1 -0
  360. package/dist/router/bootFailure.d.ts +8 -0
  361. package/dist/router/bootFailure.js +11 -0
  362. package/dist/router/bootFailure.js.map +1 -0
  363. package/dist/router/detailRoutes.d.ts +2 -0
  364. package/dist/router/detailRoutes.js +19 -0
  365. package/dist/router/detailRoutes.js.map +1 -0
  366. package/dist/router/index.d.ts +3 -0
  367. package/dist/router/index.js +58 -0
  368. package/dist/router/index.js.map +1 -0
  369. package/dist/router/namedPage.d.ts +13 -0
  370. package/dist/router/namedPage.js +12 -0
  371. package/dist/router/namedPage.js.map +1 -0
  372. package/dist/router/routes.d.ts +2 -0
  373. package/dist/router/routes.js +121 -0
  374. package/dist/router/routes.js.map +1 -0
  375. package/dist/router/viewRegistry.d.ts +18 -0
  376. package/dist/router/viewRegistry.js +26 -0
  377. package/dist/router/viewRegistry.js.map +1 -0
  378. package/dist/stores/app.d.ts +83 -0
  379. package/dist/stores/app.js +82 -0
  380. package/dist/stores/app.js.map +1 -0
  381. package/dist/stores/auth.d.ts +106 -0
  382. package/dist/stores/auth.js +59 -0
  383. package/dist/stores/auth.js.map +1 -0
  384. package/dist/stores/dict.d.ts +11 -0
  385. package/dist/stores/dict.js +36 -0
  386. package/dist/stores/dict.js.map +1 -0
  387. package/dist/stores/tabs.d.ts +53 -0
  388. package/dist/stores/tabs.js +88 -0
  389. package/dist/stores/tabs.js.map +1 -0
  390. package/dist/stores/user.d.ts +64 -0
  391. package/dist/stores/user.js +64 -0
  392. package/dist/stores/user.js.map +1 -0
  393. package/dist/style.css +1 -0
  394. package/dist/theme/accents.d.ts +2 -0
  395. package/dist/theme/accents.js +5 -0
  396. package/dist/theme/accents.js.map +1 -0
  397. package/dist/theme/mix.d.ts +26 -0
  398. package/dist/theme/mix.js +43 -0
  399. package/dist/theme/mix.js.map +1 -0
  400. package/dist/theme/naive-theme.d.ts +9 -0
  401. package/dist/theme/naive-theme.js +89 -0
  402. package/dist/theme/naive-theme.js.map +1 -0
  403. package/dist/types/api.d.ts +714 -0
  404. package/dist/types/api.js +15 -0
  405. package/dist/types/api.js.map +1 -0
  406. package/dist/types/menu.d.ts +67 -0
  407. package/dist/types/menu.js +26 -0
  408. package/dist/types/menu.js.map +1 -0
  409. package/dist/utils/chunkUpload.d.ts +6 -0
  410. package/dist/utils/chunkUpload.js +35 -0
  411. package/dist/utils/chunkUpload.js.map +1 -0
  412. package/dist/utils/download.d.ts +8 -0
  413. package/dist/utils/download.js +8 -0
  414. package/dist/utils/download.js.map +1 -0
  415. package/dist/utils/error.d.ts +14 -0
  416. package/dist/utils/error.js +50 -0
  417. package/dist/utils/error.js.map +1 -0
  418. package/dist/utils/format.d.ts +20 -0
  419. package/dist/utils/format.js +19 -0
  420. package/dist/utils/format.js.map +1 -0
  421. package/dist/utils/importDup.d.ts +17 -0
  422. package/dist/utils/importDup.js +18 -0
  423. package/dist/utils/importDup.js.map +1 -0
  424. package/dist/utils/oauthBrand.d.ts +100 -0
  425. package/dist/utils/oauthBrand.js +97 -0
  426. package/dist/utils/oauthBrand.js.map +1 -0
  427. package/dist/utils/tree.d.ts +33 -0
  428. package/dist/utils/tree.js +47 -0
  429. package/dist/utils/tree.js.map +1 -0
  430. package/dist/utils/ua.d.ts +7 -0
  431. package/dist/utils/ua.js +33 -0
  432. package/dist/utils/ua.js.map +1 -0
  433. package/dist/utils/url.d.ts +16 -0
  434. package/dist/utils/url.js +13 -0
  435. package/dist/utils/url.js.map +1 -0
  436. package/dist/views/dashboard/biz.vue.d.ts +3 -0
  437. package/dist/views/dashboard/biz.vue.js +8 -0
  438. package/dist/views/dashboard/biz.vue.js.map +1 -0
  439. package/dist/views/dashboard/biz2.vue.js +136 -0
  440. package/dist/views/dashboard/biz2.vue.js.map +1 -0
  441. package/dist/views/dashboard/workbench.vue.d.ts +3 -0
  442. package/dist/views/dashboard/workbench.vue.js +8 -0
  443. package/dist/views/dashboard/workbench.vue.js.map +1 -0
  444. package/dist/views/dashboard/workbench2.vue.js +195 -0
  445. package/dist/views/dashboard/workbench2.vue.js.map +1 -0
  446. package/dist/views/embed/iframe.vue.d.ts +3 -0
  447. package/dist/views/embed/iframe.vue.js +8 -0
  448. package/dist/views/embed/iframe.vue.js.map +1 -0
  449. package/dist/views/embed/iframe2.vue.js +21 -0
  450. package/dist/views/embed/iframe2.vue.js.map +1 -0
  451. package/dist/views/error/404.vue.d.ts +3 -0
  452. package/dist/views/error/404.vue.js +8 -0
  453. package/dist/views/error/404.vue.js.map +1 -0
  454. package/dist/views/error/4042.vue.js +31 -0
  455. package/dist/views/error/4042.vue.js.map +1 -0
  456. package/dist/views/error/BootError.vue.d.ts +3 -0
  457. package/dist/views/error/BootError.vue.js +8 -0
  458. package/dist/views/error/BootError.vue.js.map +1 -0
  459. package/dist/views/error/BootError2.vue.js +57 -0
  460. package/dist/views/error/BootError2.vue.js.map +1 -0
  461. package/dist/views/error/MissingRoute.vue.d.ts +3 -0
  462. package/dist/views/error/MissingRoute.vue.js +8 -0
  463. package/dist/views/error/MissingRoute.vue.js.map +1 -0
  464. package/dist/views/error/MissingRoute2.vue.js +23 -0
  465. package/dist/views/error/MissingRoute2.vue.js.map +1 -0
  466. package/dist/views/login/LoginForm.vue.d.ts +12 -0
  467. package/dist/views/login/LoginForm.vue.js +8 -0
  468. package/dist/views/login/LoginForm.vue.js.map +1 -0
  469. package/dist/views/login/LoginForm2.vue.js +642 -0
  470. package/dist/views/login/LoginForm2.vue.js.map +1 -0
  471. package/dist/views/login/index.vue.d.ts +3 -0
  472. package/dist/views/login/index.vue.js +8 -0
  473. package/dist/views/login/index.vue.js.map +1 -0
  474. package/dist/views/login/index2.vue.js +79 -0
  475. package/dist/views/login/index2.vue.js.map +1 -0
  476. package/dist/views/login/skins/AuroraGlass.vue.d.ts +3 -0
  477. package/dist/views/login/skins/AuroraGlass.vue.js +8 -0
  478. package/dist/views/login/skins/AuroraGlass.vue.js.map +1 -0
  479. package/dist/views/login/skins/AuroraGlass2.vue.js +80 -0
  480. package/dist/views/login/skins/AuroraGlass2.vue.js.map +1 -0
  481. package/dist/views/login/skins/SplitPanel.vue.d.ts +3 -0
  482. package/dist/views/login/skins/SplitPanel.vue.js +8 -0
  483. package/dist/views/login/skins/SplitPanel.vue.js.map +1 -0
  484. package/dist/views/login/skins/SplitPanel2.vue.js +85 -0
  485. package/dist/views/login/skins/SplitPanel2.vue.js.map +1 -0
  486. package/dist/views/login/skins/Spotlight.vue.d.ts +3 -0
  487. package/dist/views/login/skins/Spotlight.vue.js +8 -0
  488. package/dist/views/login/skins/Spotlight.vue.js.map +1 -0
  489. package/dist/views/login/skins/Spotlight2.vue.js +36 -0
  490. package/dist/views/login/skins/Spotlight2.vue.js.map +1 -0
  491. package/dist/views/login/skins.d.ts +8 -0
  492. package/dist/views/login/skins.js +13 -0
  493. package/dist/views/login/skins.js.map +1 -0
  494. package/dist/views/mfa/bindComplete.d.ts +7 -0
  495. package/dist/views/mfa/bindComplete.js +8 -0
  496. package/dist/views/mfa/bindComplete.js.map +1 -0
  497. package/dist/views/mfa/index.vue.d.ts +3 -0
  498. package/dist/views/mfa/index.vue.js +8 -0
  499. package/dist/views/mfa/index.vue.js.map +1 -0
  500. package/dist/views/mfa/index2.vue.js +425 -0
  501. package/dist/views/mfa/index2.vue.js.map +1 -0
  502. package/dist/views/module/index.vue.d.ts +3 -0
  503. package/dist/views/module/index.vue.js +8 -0
  504. package/dist/views/module/index.vue.js.map +1 -0
  505. package/dist/views/module/index2.vue.js +142 -0
  506. package/dist/views/module/index2.vue.js.map +1 -0
  507. package/dist/views/oauth/callback.vue.d.ts +3 -0
  508. package/dist/views/oauth/callback.vue.js +8 -0
  509. package/dist/views/oauth/callback.vue.js.map +1 -0
  510. package/dist/views/oauth/callback2.vue.js +86 -0
  511. package/dist/views/oauth/callback2.vue.js.map +1 -0
  512. package/dist/views/personal/bindings.vue.d.ts +3 -0
  513. package/dist/views/personal/bindings.vue.js +8 -0
  514. package/dist/views/personal/bindings.vue.js.map +1 -0
  515. package/dist/views/personal/bindings2.vue.js +220 -0
  516. package/dist/views/personal/bindings2.vue.js.map +1 -0
  517. package/dist/views/personal/notice.vue.d.ts +3 -0
  518. package/dist/views/personal/notice.vue.js +5 -0
  519. package/dist/views/personal/notice.vue.js.map +1 -0
  520. package/dist/views/personal/notice2.vue.js +163 -0
  521. package/dist/views/personal/notice2.vue.js.map +1 -0
  522. package/dist/views/personal/password.vue.d.ts +3 -0
  523. package/dist/views/personal/password.vue.js +5 -0
  524. package/dist/views/personal/password.vue.js.map +1 -0
  525. package/dist/views/personal/password2.vue.js +147 -0
  526. package/dist/views/personal/password2.vue.js.map +1 -0
  527. package/dist/views/personal/profile.vue.d.ts +3 -0
  528. package/dist/views/personal/profile.vue.js +8 -0
  529. package/dist/views/personal/profile.vue.js.map +1 -0
  530. package/dist/views/personal/profile2.vue.js +264 -0
  531. package/dist/views/personal/profile2.vue.js.map +1 -0
  532. package/dist/views/personal/security.vue.d.ts +3 -0
  533. package/dist/views/personal/security.vue.js +8 -0
  534. package/dist/views/personal/security.vue.js.map +1 -0
  535. package/dist/views/personal/security2.vue.js +82 -0
  536. package/dist/views/personal/security2.vue.js.map +1 -0
  537. package/dist/views/personal/sessions.vue.d.ts +3 -0
  538. package/dist/views/personal/sessions.vue.js +8 -0
  539. package/dist/views/personal/sessions.vue.js.map +1 -0
  540. package/dist/views/personal/sessions2.vue.js +101 -0
  541. package/dist/views/personal/sessions2.vue.js.map +1 -0
  542. package/dist/views/system/cache/index.vue.d.ts +3 -0
  543. package/dist/views/system/cache/index.vue.js +8 -0
  544. package/dist/views/system/cache/index.vue.js.map +1 -0
  545. package/dist/views/system/cache/index2.vue.js +113 -0
  546. package/dist/views/system/cache/index2.vue.js.map +1 -0
  547. package/dist/views/system/config/components/ConfigFormModal.vue.d.ts +16 -0
  548. package/dist/views/system/config/components/ConfigFormModal.vue.js +5 -0
  549. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -0
  550. package/dist/views/system/config/components/ConfigFormModal2.vue.js +177 -0
  551. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -0
  552. package/dist/views/system/config/components/ExternalAuthConfig.vue.d.ts +3 -0
  553. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +8 -0
  554. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +1 -0
  555. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +218 -0
  556. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +1 -0
  557. package/dist/views/system/config/components/GroupExtraConfig.vue.d.ts +9 -0
  558. package/dist/views/system/config/components/GroupExtraConfig.vue.js +8 -0
  559. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +1 -0
  560. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +108 -0
  561. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +1 -0
  562. package/dist/views/system/config/components/HighSensConfig.vue.d.ts +3 -0
  563. package/dist/views/system/config/components/HighSensConfig.vue.js +5 -0
  564. package/dist/views/system/config/components/HighSensConfig.vue.js.map +1 -0
  565. package/dist/views/system/config/components/HighSensConfig2.vue.js +134 -0
  566. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +1 -0
  567. package/dist/views/system/config/components/JobConfig.vue.d.ts +3 -0
  568. package/dist/views/system/config/components/JobConfig.vue.js +5 -0
  569. package/dist/views/system/config/components/JobConfig.vue.js.map +1 -0
  570. package/dist/views/system/config/components/JobConfig2.vue.js +116 -0
  571. package/dist/views/system/config/components/JobConfig2.vue.js.map +1 -0
  572. package/dist/views/system/config/components/OtherConfig.vue.d.ts +3 -0
  573. package/dist/views/system/config/components/OtherConfig.vue.js +5 -0
  574. package/dist/views/system/config/components/OtherConfig.vue.js.map +1 -0
  575. package/dist/views/system/config/components/OtherConfig2.vue.js +121 -0
  576. package/dist/views/system/config/components/OtherConfig2.vue.js.map +1 -0
  577. package/dist/views/system/config/components/SecurityConfig.vue.d.ts +3 -0
  578. package/dist/views/system/config/components/SecurityConfig.vue.js +8 -0
  579. package/dist/views/system/config/components/SecurityConfig.vue.js.map +1 -0
  580. package/dist/views/system/config/components/SecurityConfig2.vue.js +456 -0
  581. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +1 -0
  582. package/dist/views/system/config/components/SysBaseConfig.vue.d.ts +3 -0
  583. package/dist/views/system/config/components/SysBaseConfig.vue.js +5 -0
  584. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +1 -0
  585. package/dist/views/system/config/components/SysBaseConfig2.vue.js +107 -0
  586. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +1 -0
  587. package/dist/views/system/config/components/UploadConfig.vue.d.ts +3 -0
  588. package/dist/views/system/config/components/UploadConfig.vue.js +5 -0
  589. package/dist/views/system/config/components/UploadConfig.vue.js.map +1 -0
  590. package/dist/views/system/config/components/UploadConfig2.vue.js +135 -0
  591. package/dist/views/system/config/components/UploadConfig2.vue.js.map +1 -0
  592. package/dist/views/system/config/groups.d.ts +9 -0
  593. package/dist/views/system/config/groups.js +18 -0
  594. package/dist/views/system/config/groups.js.map +1 -0
  595. package/dist/views/system/config/index.vue.d.ts +3 -0
  596. package/dist/views/system/config/index.vue.js +5 -0
  597. package/dist/views/system/config/index.vue.js.map +1 -0
  598. package/dist/views/system/config/index2.vue.js +127 -0
  599. package/dist/views/system/config/index2.vue.js.map +1 -0
  600. package/dist/views/system/dict/index.vue.d.ts +3 -0
  601. package/dist/views/system/dict/index.vue.js +8 -0
  602. package/dist/views/system/dict/index.vue.js.map +1 -0
  603. package/dist/views/system/dict/index2.vue.js +560 -0
  604. package/dist/views/system/dict/index2.vue.js.map +1 -0
  605. package/dist/views/system/file/index.vue.d.ts +3 -0
  606. package/dist/views/system/file/index.vue.js +5 -0
  607. package/dist/views/system/file/index.vue.js.map +1 -0
  608. package/dist/views/system/file/index2.vue.js +186 -0
  609. package/dist/views/system/file/index2.vue.js.map +1 -0
  610. package/dist/views/system/job/index.vue.d.ts +3 -0
  611. package/dist/views/system/job/index.vue.js +8 -0
  612. package/dist/views/system/job/index.vue.js.map +1 -0
  613. package/dist/views/system/job/index2.vue.js +1167 -0
  614. package/dist/views/system/job/index2.vue.js.map +1 -0
  615. package/dist/views/system/job-log/index.vue.d.ts +3 -0
  616. package/dist/views/system/job-log/index.vue.js +8 -0
  617. package/dist/views/system/job-log/index.vue.js.map +1 -0
  618. package/dist/views/system/job-log/index2.vue.js +411 -0
  619. package/dist/views/system/job-log/index2.vue.js.map +1 -0
  620. package/dist/views/system/job-monitor/index.vue.d.ts +3 -0
  621. package/dist/views/system/job-monitor/index.vue.js +8 -0
  622. package/dist/views/system/job-monitor/index.vue.js.map +1 -0
  623. package/dist/views/system/job-monitor/index2.vue.js +253 -0
  624. package/dist/views/system/job-monitor/index2.vue.js.map +1 -0
  625. package/dist/views/system/log/exception/index.vue.d.ts +3 -0
  626. package/dist/views/system/log/exception/index.vue.js +8 -0
  627. package/dist/views/system/log/exception/index.vue.js.map +1 -0
  628. package/dist/views/system/log/exception/index2.vue.js +216 -0
  629. package/dist/views/system/log/exception/index2.vue.js.map +1 -0
  630. package/dist/views/system/log/login/index.vue.d.ts +3 -0
  631. package/dist/views/system/log/login/index.vue.js +5 -0
  632. package/dist/views/system/log/login/index.vue.js.map +1 -0
  633. package/dist/views/system/log/login/index2.vue.js +113 -0
  634. package/dist/views/system/log/login/index2.vue.js.map +1 -0
  635. package/dist/views/system/log/op/index.vue.d.ts +3 -0
  636. package/dist/views/system/log/op/index.vue.js +8 -0
  637. package/dist/views/system/log/op/index.vue.js.map +1 -0
  638. package/dist/views/system/log/op/index2.vue.js +332 -0
  639. package/dist/views/system/log/op/index2.vue.js.map +1 -0
  640. package/dist/views/system/menu/components/ButtonManager.vue.d.ts +21 -0
  641. package/dist/views/system/menu/components/ButtonManager.vue.js +8 -0
  642. package/dist/views/system/menu/components/ButtonManager.vue.js.map +1 -0
  643. package/dist/views/system/menu/components/ButtonManager2.vue.js +498 -0
  644. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -0
  645. package/dist/views/system/menu/components/MenuFormModal.vue.d.ts +22 -0
  646. package/dist/views/system/menu/components/MenuFormModal.vue.js +8 -0
  647. package/dist/views/system/menu/components/MenuFormModal.vue.js.map +1 -0
  648. package/dist/views/system/menu/components/MenuFormModal2.vue.js +259 -0
  649. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -0
  650. package/dist/views/system/menu/index.vue.d.ts +3 -0
  651. package/dist/views/system/menu/index.vue.js +8 -0
  652. package/dist/views/system/menu/index.vue.js.map +1 -0
  653. package/dist/views/system/menu/index2.vue.js +391 -0
  654. package/dist/views/system/menu/index2.vue.js.map +1 -0
  655. package/dist/views/system/module/index.vue.d.ts +3 -0
  656. package/dist/views/system/module/index.vue.js +8 -0
  657. package/dist/views/system/module/index.vue.js.map +1 -0
  658. package/dist/views/system/module/index2.vue.js +344 -0
  659. package/dist/views/system/module/index2.vue.js.map +1 -0
  660. package/dist/views/system/monitor/index.vue.d.ts +3 -0
  661. package/dist/views/system/monitor/index.vue.js +8 -0
  662. package/dist/views/system/monitor/index.vue.js.map +1 -0
  663. package/dist/views/system/monitor/index2.vue.js +184 -0
  664. package/dist/views/system/monitor/index2.vue.js.map +1 -0
  665. package/dist/views/system/notice/index.vue.d.ts +3 -0
  666. package/dist/views/system/notice/index.vue.js +8 -0
  667. package/dist/views/system/notice/index.vue.js.map +1 -0
  668. package/dist/views/system/notice/index2.vue.js +401 -0
  669. package/dist/views/system/notice/index2.vue.js.map +1 -0
  670. package/dist/views/system/org/index.vue.d.ts +3 -0
  671. package/dist/views/system/org/index.vue.js +8 -0
  672. package/dist/views/system/org/index.vue.js.map +1 -0
  673. package/dist/views/system/org/index2.vue.js +397 -0
  674. package/dist/views/system/org/index2.vue.js.map +1 -0
  675. package/dist/views/system/position/index.vue.d.ts +3 -0
  676. package/dist/views/system/position/index.vue.js +5 -0
  677. package/dist/views/system/position/index.vue.js.map +1 -0
  678. package/dist/views/system/position/index2.vue.js +211 -0
  679. package/dist/views/system/position/index2.vue.js.map +1 -0
  680. package/dist/views/system/recycle/index.vue.d.ts +3 -0
  681. package/dist/views/system/recycle/index.vue.js +8 -0
  682. package/dist/views/system/recycle/index.vue.js.map +1 -0
  683. package/dist/views/system/recycle/index2.vue.js +121 -0
  684. package/dist/views/system/recycle/index2.vue.js.map +1 -0
  685. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +18 -0
  686. package/dist/views/system/role/components/GrantMenuTable.vue.js +8 -0
  687. package/dist/views/system/role/components/GrantMenuTable.vue.js.map +1 -0
  688. package/dist/views/system/role/components/GrantMenuTable2.vue.js +212 -0
  689. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -0
  690. package/dist/views/system/role/components/grantMenuGroups.d.ts +31 -0
  691. package/dist/views/system/role/components/grantMenuGroups.js +76 -0
  692. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -0
  693. package/dist/views/system/role/index.vue.d.ts +3 -0
  694. package/dist/views/system/role/index.vue.js +5 -0
  695. package/dist/views/system/role/index.vue.js.map +1 -0
  696. package/dist/views/system/role/index2.vue.js +476 -0
  697. package/dist/views/system/role/index2.vue.js.map +1 -0
  698. package/dist/views/system/session/index.vue.d.ts +3 -0
  699. package/dist/views/system/session/index.vue.js +5 -0
  700. package/dist/views/system/session/index.vue.js.map +1 -0
  701. package/dist/views/system/session/index2.vue.js +80 -0
  702. package/dist/views/system/session/index2.vue.js.map +1 -0
  703. package/dist/views/system/user/components/ResetPasswordModal.vue.d.ts +10 -0
  704. package/dist/views/system/user/components/ResetPasswordModal.vue.js +8 -0
  705. package/dist/views/system/user/components/ResetPasswordModal.vue.js.map +1 -0
  706. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +111 -0
  707. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -0
  708. package/dist/views/system/user/components/UserFormModal.vue.d.ts +30 -0
  709. package/dist/views/system/user/components/UserFormModal.vue.js +8 -0
  710. package/dist/views/system/user/components/UserFormModal.vue.js.map +1 -0
  711. package/dist/views/system/user/components/UserFormModal2.vue.js +415 -0
  712. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -0
  713. package/dist/views/system/user/index.vue.d.ts +3 -0
  714. package/dist/views/system/user/index.vue.js +8 -0
  715. package/dist/views/system/user/index.vue.js.map +1 -0
  716. package/dist/views/system/user/index2.vue.js +427 -0
  717. package/dist/views/system/user/index2.vue.js.map +1 -0
  718. package/package.json +99 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.vue.js","sources":["../../../src/components/ImportWizard/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 四步导入向导:①上传 ②列映射 ③预览改错(裸 n-data-table)④结果。\n// API 由父级注入(用户导入走 userApi 六方法),组件对资源无感知,可复用到其他档案。\nimport { computed, h, ref, shallowRef, watch } from 'vue'\nimport {\n NModal,\n NSteps,\n NStep,\n NUpload,\n NUploadDragger,\n NText,\n NButton,\n NSpace,\n NSelect,\n NDataTable,\n NInput,\n NSwitch,\n NRadioGroup,\n NRadio,\n NAlert,\n NTooltip,\n NTag,\n useMessage,\n type DataTableColumns,\n type UploadFileInfo,\n} from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport AppIcon from '#/components/AppIcon.vue'\nimport DictSelect from '#/components/DictSelect/index.vue'\nimport { translateError } from '#/utils/error'\nimport { triggerBlobDownload } from '#/utils/download'\nimport { hardErrorsOf as hardErrors, isDuplicateOnly, isHardError } from '#/utils/importDup'\nimport type {\n CellError,\n DuplicateStrategy as DupStrategyNum,\n ImportColumn,\n ImportCommitResult,\n ImportPreview,\n ImportRow,\n} from '#/types/api'\nimport { DuplicateStrategy } from '#/types/api'\n\nexport interface ImportWizardApi {\n downloadTemplate: () => Promise<Blob>\n preview: (file: File, mapping?: Record<string, string>) => Promise<ImportPreview>\n validate: (rows: ImportRow[]) => Promise<ImportPreview>\n commit: (rows: ImportRow[], strategy: DupStrategyNum) => Promise<ImportCommitResult>\n errorReport: (rows: ImportRow[]) => Promise<Blob>\n}\n\nconst show = defineModel<boolean>('show', { default: false })\n\nconst props = defineProps<{\n api: ImportWizardApi\n /**\n * 弹窗标题。缺省是 `import.wizardTitle`(「导入用户」)——那是内核用户导入的文案,\n * 本组件被别的档案复用时必须传自己的标题,否则会顶着「导入用户」导别的东西。\n */\n title?: string\n /** 模板下载默认文件名 */\n templateFileName?: string\n /** 错误报告默认文件名 */\n errorReportFileName?: string\n /**\n * 可选的重复策略,按给定顺序渲染;缺省三种都给。\n * 用于档案本身不支持某种策略的场景 —— 例如条码储位只允许「跳过已存在」,\n * 覆盖会把条码挪到别的库位,不是导入该干的事。\n */\n strategies?: DupStrategyNum[]\n}>()\n\nconst emit = defineEmits<{\n /** 提交成功(含部分成功)后触发,父级通常 refresh 列表 */\n done: []\n}>()\n\nconst { t } = useI18n()\nconst message = useMessage()\n\n// ── 状态 ──\nconst step = ref(1) // n-steps 1-based\nconst loading = ref(false)\nconst file = ref<File | null>(null)\nconst fileList = ref<UploadFileInfo[]>([])\nconst headers = shallowRef<string[]>([])\n/** 表头 → 列 Key(空串 = 不映射) */\nconst mapping = ref<Record<string, string>>({})\nconst columns = shallowRef<ImportColumn[]>([])\n// rows 刻意保持深响应:setCell 是就地改 row.cells / row.errors(可编辑预览表),\n// 换成 shallowRef 后单元格改完不会重渲,红底也不会消 —— 要改得先把编辑改成不可变替换。\nconst rows = ref<ImportRow[]>([])\nconst columnErrors = ref<ImportPreview['columnErrors']>([])\nconst onlyErrors = ref(false)\nconst strategy = ref<DupStrategyNum>(DuplicateStrategy.Skip)\nconst commitResult = ref<ImportCommitResult | null>(null)\n\n/** 策略标签用函数形式,切换语言即时生效(与 SmartTable 列 title 同理)。 */\nconst strategyLabels: Record<DupStrategyNum, () => string> = {\n [DuplicateStrategy.Skip]: () => t('import.strategySkip'),\n [DuplicateStrategy.Overwrite]: () => t('import.strategyOverwrite'),\n [DuplicateStrategy.Error]: () => t('import.strategyError'),\n}\n/** 未指定 strategies 时三种都给,保持既有页面的行为不变。 */\nconst strategyOptions = computed(() =>\n (\n props.strategies ?? [\n DuplicateStrategy.Skip,\n DuplicateStrategy.Overwrite,\n DuplicateStrategy.Error,\n ]\n ).map(value => ({ value, label: strategyLabels[value] })),\n)\n\n// 「已存在」按策略呈现的判定见 utils/importDup(那里也记着与后端的镜像关系)\nconst isHard = (e: CellError) => isHardError(e, strategy.value)\nconst hardErrorsOf = (r: ImportRow) => hardErrors(r, strategy.value)\n/** 需要用户动手改的行数(不含「已存在」——那些按策略自动处理)。 */\nconst errorRows = computed(() => rows.value.filter(r => hardErrorsOf(r).length > 0).length)\n/** 只是「已存在」、会被策略正常处理的行数。 */\nconst duplicateRows = computed(\n () => rows.value.filter(r => isDuplicateOnly(r, strategy.value)).length,\n)\n\nfunction reset() {\n step.value = 1\n loading.value = false\n file.value = null\n fileList.value = []\n headers.value = []\n mapping.value = {}\n columns.value = []\n rows.value = []\n columnErrors.value = []\n onlyErrors.value = false\n // 默认选 Skip;调用方限制了可选策略且不含 Skip 时退到第一个可选项,避免选中一个没渲染的值。\n strategy.value = strategyOptions.value.some(o => o.value === DuplicateStrategy.Skip)\n ? DuplicateStrategy.Skip\n : (strategyOptions.value[0]?.value ?? DuplicateStrategy.Skip)\n commitResult.value = null\n}\n\nwatch(show, v => {\n if (v) reset()\n})\n\nfunction applyPreview(p: ImportPreview) {\n headers.value = [...p.headers]\n mapping.value = { ...p.mapping }\n columns.value = p.columns\n rows.value = p.rows.map(r => ({\n index: r.index,\n cells: { ...r.cells },\n errors: [...r.errors],\n }))\n columnErrors.value = p.columnErrors\n}\n\nasync function onDownloadTemplate() {\n loading.value = true\n try {\n const blob = await props.api.downloadTemplate()\n triggerBlobDownload(blob, props.templateFileName ?? 'import-template.xlsx')\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nfunction onFileChange(list: UploadFileInfo[]) {\n // 只保留最后选中的一个 xlsx\n fileList.value = list.slice(-1)\n const f = list[list.length - 1]?.file\n file.value = f instanceof File ? f : null\n}\n\nfunction onFileRemove() {\n fileList.value = []\n file.value = null\n}\n\n/** ①→②:带文件预览(mapping 空 = 服务端自动匹配) */\nasync function goMapping() {\n if (!file.value) {\n message.warning(t('import.needFile'))\n return\n }\n loading.value = true\n try {\n const p = await props.api.preview(file.value)\n applyPreview(p)\n // 确保每个表头在 mapping 里有键(未匹配的给空串,便于 n-select 显示「不映射」)\n for (const header of p.headers) {\n if (!(header in mapping.value)) mapping.value[header] = ''\n }\n step.value = 2\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\n/** ②→③:按用户调整后的映射重新预览 */\nasync function goPreview() {\n if (!file.value) return\n // 去掉「不映射」空串,只传有效映射\n const map: Record<string, string> = {}\n for (const [header, key] of Object.entries(mapping.value)) {\n if (key) map[header] = key\n }\n loading.value = true\n try {\n const p = await props.api.preview(file.value, map)\n applyPreview(p)\n step.value = 3\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nconst targetColumnOptions = computed(() => [\n { label: t('import.unmap'), value: '' },\n ...columns.value.map(c => ({\n label: c.required ? `${c.title} *` : c.title,\n value: c.key,\n })),\n])\n\nfunction cellError(row: ImportRow, key: string) {\n return row.errors.find(e => e.columnKey === key)\n}\n\nfunction setCell(row: ImportRow, key: string, value: string | null) {\n row.cells[key] = value\n // 就地改后清该列旧错误,等重验;否则红底会误导\n row.errors = row.errors.filter(e => e.columnKey !== key)\n}\n\nconst displayRows = computed(() =>\n onlyErrors.value ? rows.value.filter(r => hardErrorsOf(r).length > 0) : rows.value,\n)\n\nconst previewColumns = computed<DataTableColumns<ImportRow>>(() => {\n const cols: DataTableColumns<ImportRow> = [\n {\n title: '#',\n key: '_index',\n width: 56,\n fixed: 'left',\n render: r => r.index,\n },\n ]\n for (const col of columns.value) {\n cols.push({\n title: () => (col.required ? `${col.title} *` : col.title),\n key: col.key,\n minWidth: 120,\n ellipsis: { tooltip: false },\n render: row => {\n const err = cellError(row, col.key)\n // 「已存在」在跳过/覆盖策略下不算错:走警示底色,输入框也不置 error 态\n const soft = err !== undefined && !isHard(err)\n const val = row.cells[col.key] ?? null\n const editor = col.dictTypeCode\n ? h(DictSelect, {\n typeCode: col.dictTypeCode,\n value: val,\n clearable: !col.required,\n size: 'small',\n // 弹层不跟随触发器宽度:向导的列很窄(minWidth 120,实测触发器约 66px),\n // 跟随会把「启用」「停用」截成「启..」「停..」。普通表单里下拉够宽,\n // 跟随反而更整齐 —— 所以只在向导关掉,不动共用的 DictSelect。\n consistentMenuWidth: false,\n style: { width: '100%' },\n status: err && !soft ? 'error' : undefined,\n 'onUpdate:value': (v: string | null) => setCell(row, col.key, v),\n })\n : h(NInput, {\n value: val ?? '',\n size: 'small',\n status: err && !soft ? 'error' : undefined,\n onUpdateValue: (v: string) => setCell(row, col.key, v),\n })\n const cell = h(\n 'div',\n {\n class: !err\n ? 'import-cell'\n : soft\n ? 'import-cell import-cell--dup'\n : 'import-cell import-cell--error',\n },\n [editor],\n )\n if (!err) return cell\n return h(\n NTooltip,\n { trigger: 'hover' },\n {\n trigger: () => cell,\n default: () =>\n soft ? t(`import.dupHint.${strategy.value}`) : translateError(err.code),\n },\n )\n },\n })\n }\n cols.push({\n title: () => t('import.errors'),\n key: '_errors',\n width: 160,\n fixed: 'right',\n render: r => {\n if (r.errors.length === 0)\n return h(NTag, { size: 'small', type: 'success', bordered: false }, () => t('import.ok'))\n const hard = hardErrorsOf(r)\n // 只剩「已存在」:不是要用户改的错,给警示标签 +「将按策略处理」而非红色错误数\n if (hard.length === 0) {\n return h(\n NTooltip,\n { trigger: 'hover' },\n {\n trigger: () =>\n h(NTag, { size: 'small', type: 'warning', bordered: false }, () =>\n t('import.dupTag'),\n ),\n default: () => t(`import.dupHint.${strategy.value}`),\n },\n )\n }\n return h(\n NTooltip,\n { trigger: 'hover' },\n {\n trigger: () =>\n h(NTag, { size: 'small', type: 'error', bordered: false }, () =>\n t('import.errorCount', { n: hard.length }),\n ),\n default: () => hard.map(e => `${e.columnKey}: ${translateError(e.code)}`).join('\\n'),\n },\n )\n },\n })\n return cols\n})\n\nasync function revalidate() {\n // 变异判据:请求必须带 rows;空数组也是明确失败路径(服务端会返回 0 行)\n loading.value = true\n try {\n const p = await props.api.validate(rows.value)\n // 保留当前列定义(重验不回传 headers/mapping;columns 仍有)\n rows.value = p.rows.map(r => ({\n index: r.index,\n cells: { ...r.cells },\n errors: [...r.errors],\n }))\n columns.value = p.columns.length ? p.columns : columns.value\n // 用本地按策略算出的硬错误数,不用 p.errorRows —— 后端不知道当前策略,会把「已存在」也计进去\n message.success(t('import.revalidated', { errors: errorRows.value, total: p.total }))\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nasync function doCommit() {\n loading.value = true\n try {\n const result = await props.api.commit(rows.value, strategy.value)\n commitResult.value = result\n step.value = 4\n if (result.inserted + result.updated > 0) emit('done')\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\n/** ④ 失败行接回 ③ 继续改 */\nfunction backToEditFailures() {\n if (!commitResult.value) return\n rows.value = commitResult.value.failures.map(r => ({\n index: r.index,\n cells: { ...r.cells },\n errors: [...r.errors],\n }))\n onlyErrors.value = true\n commitResult.value = null\n step.value = 3\n}\n\nasync function downloadErrorReport() {\n const source =\n step.value === 4 && commitResult.value\n ? commitResult.value.failures\n : rows.value.filter(r => r.errors.length > 0)\n if (source.length === 0) {\n message.warning(t('import.noErrorRows'))\n return\n }\n loading.value = true\n try {\n const blob = await props.api.errorReport(source)\n triggerBlobDownload(blob, props.errorReportFileName ?? 'import-errors.xlsx')\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nfunction close() {\n show.value = false\n}\n</script>\n\n<template>\n <n-modal\n v-model:show=\"show\"\n preset=\"card\"\n :title=\"props.title ?? t('import.wizardTitle')\"\n :style=\"{ width: 'min(1100px, 96vw)' }\"\n :mask-closable=\"false\"\n :closable=\"!loading\"\n :close-on-esc=\"!loading\"\n >\n <n-steps :current=\"step\" size=\"small\" class=\"import-steps\">\n <n-step :title=\"t('import.stepUpload')\" />\n <n-step :title=\"t('import.stepMapping')\" />\n <n-step :title=\"t('import.stepPreview')\" />\n <n-step :title=\"t('import.stepResult')\" />\n </n-steps>\n\n <!-- ① 上传 -->\n <div v-show=\"step === 1\" class=\"import-pane\">\n <n-space vertical :size=\"12\">\n <n-button secondary :loading=\"loading\" @click=\"onDownloadTemplate\">\n <template #icon><AppIcon icon=\"ph:download-simple\" :size=\"16\" /></template>\n {{ t('import.downloadTemplate') }}\n </n-button>\n <n-upload\n :file-list=\"fileList\"\n :max=\"1\"\n accept=\".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n :default-upload=\"false\"\n @update:file-list=\"onFileChange\"\n @remove=\"onFileRemove\"\n >\n <n-upload-dragger>\n <div class=\"import-upload-icon\">\n <AppIcon icon=\"ph:file-xls\" :size=\"40\" />\n </div>\n <n-text style=\"font-size: 16px\">{{ t('import.dropHint') }}</n-text>\n <n-text depth=\"3\" style=\"display: block; margin-top: 8px\">\n {{ t('import.dropSub') }}\n </n-text>\n </n-upload-dragger>\n </n-upload>\n </n-space>\n </div>\n\n <!-- ② 列映射 -->\n <div v-show=\"step === 2\" class=\"import-pane\">\n <n-alert v-if=\"columnErrors.length\" type=\"warning\" style=\"margin-bottom: 12px\">\n {{ columnErrors.map(e => `${e.columnKey}: ${translateError(e.code)}`).join('; ') }}\n </n-alert>\n <n-text depth=\"3\" style=\"display: block; margin-bottom: 12px\">\n {{ t('import.mappingHint') }}\n </n-text>\n <div class=\"import-mapping\">\n <div class=\"import-mapping-head\">\n <span>{{ t('import.fileHeader') }}</span>\n <span>{{ t('import.targetColumn') }}</span>\n </div>\n <div v-for=\"hdr in headers\" :key=\"hdr\" class=\"import-mapping-row\">\n <span class=\"import-mapping-header\" :title=\"hdr\">{{ hdr }}</span>\n <n-select\n v-model:value=\"mapping[hdr]\"\n :options=\"targetColumnOptions\"\n :consistent-menu-width=\"false\"\n size=\"small\"\n />\n </div>\n </div>\n </div>\n\n <!-- ③ 预览改错(裸 n-data-table,不用 SmartTable) -->\n <div v-show=\"step === 3\" class=\"import-pane\">\n <n-space justify=\"space-between\" align=\"center\" style=\"margin-bottom: 12px\" wrap>\n <n-space align=\"center\">\n <n-text>\n {{ t('import.summary', { total: rows.length, errors: errorRows }) }}\n <template v-if=\"duplicateRows\">\n {{ t('import.summaryDup', { n: duplicateRows }) }}\n </template>\n </n-text>\n <n-switch v-model:value=\"onlyErrors\" size=\"small\">\n <template #checked>{{ t('import.onlyErrors') }}</template>\n <template #unchecked>{{ t('import.onlyErrors') }}</template>\n </n-switch>\n </n-space>\n <n-space>\n <n-button size=\"small\" :loading=\"loading\" @click=\"revalidate\">\n <template #icon><AppIcon icon=\"ph:arrows-clockwise\" :size=\"14\" /></template>\n {{ t('import.revalidate') }}\n </n-button>\n </n-space>\n </n-space>\n <n-data-table\n size=\"small\"\n :columns=\"previewColumns\"\n :data=\"displayRows\"\n :row-key=\"(r: ImportRow) => r.index\"\n :max-height=\"420\"\n :scroll-x=\"Math.max(800, columns.length * 140 + 220)\"\n />\n <div class=\"import-strategy\">\n <n-text strong style=\"margin-right: 12px\">{{ t('import.strategy') }}</n-text>\n <n-radio-group v-model:value=\"strategy\" name=\"dup-strategy\">\n <n-space>\n <n-radio v-for=\"option in strategyOptions\" :key=\"option.value\" :value=\"option.value\">\n {{ option.label() }}\n </n-radio>\n </n-space>\n </n-radio-group>\n </div>\n </div>\n\n <!-- ④ 结果 -->\n <div v-show=\"step === 4\" class=\"import-pane\">\n <n-alert\n v-if=\"commitResult\"\n :type=\"commitResult.failed > 0 ? 'warning' : 'success'\"\n :title=\"t('import.resultTitle')\"\n >\n <div>{{ t('import.resultTotal', { n: commitResult.total }) }}</div>\n <div>{{ t('import.resultInserted', { n: commitResult.inserted }) }}</div>\n <div>{{ t('import.resultUpdated', { n: commitResult.updated }) }}</div>\n <div>{{ t('import.resultSkipped', { n: commitResult.skipped }) }}</div>\n <div>{{ t('import.resultFailed', { n: commitResult.failed }) }}</div>\n </n-alert>\n <n-space style=\"margin-top: 16px\">\n <n-button\n v-if=\"commitResult && commitResult.failed > 0\"\n type=\"warning\"\n @click=\"backToEditFailures\"\n >\n {{ t('import.editFailures') }}\n </n-button>\n <n-button\n v-if=\"commitResult && commitResult.failed > 0\"\n secondary\n :loading=\"loading\"\n @click=\"downloadErrorReport\"\n >\n <template #icon><AppIcon icon=\"ph:download-simple\" :size=\"16\" /></template>\n {{ t('import.downloadErrorReport') }}\n </n-button>\n </n-space>\n </div>\n\n <template #footer>\n <n-space justify=\"end\">\n <n-button :disabled=\"loading\" @click=\"close\">\n {{ step === 4 ? t('common.close') : t('common.cancel') }}\n </n-button>\n <n-button v-if=\"step === 3\" secondary :disabled=\"loading\" @click=\"downloadErrorReport\">\n {{ t('import.downloadErrorReport') }}\n </n-button>\n <n-button v-if=\"step > 1 && step < 4\" :disabled=\"loading\" @click=\"step = step - 1\">\n {{ t('import.prev') }}\n </n-button>\n <n-button\n v-if=\"step === 1\"\n type=\"primary\"\n :loading=\"loading\"\n :disabled=\"!file\"\n @click=\"goMapping\"\n >\n {{ t('import.next') }}\n </n-button>\n <n-button v-if=\"step === 2\" type=\"primary\" :loading=\"loading\" @click=\"goPreview\">\n {{ t('import.next') }}\n </n-button>\n <n-button v-if=\"step === 3\" type=\"primary\" :loading=\"loading\" @click=\"doCommit\">\n {{ t('import.commit') }}\n </n-button>\n </n-space>\n </template>\n </n-modal>\n</template>\n\n<style scoped>\n.import-steps {\n margin-bottom: 20px;\n}\n.import-pane {\n min-height: 200px;\n}\n.import-upload-icon {\n margin-bottom: 12px;\n color: var(--n-text-color-3);\n}\n.import-mapping-head,\n.import-mapping-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n align-items: center;\n}\n.import-mapping-head {\n font-weight: 600;\n font-size: 13px;\n margin-bottom: 8px;\n color: var(--n-text-color-2);\n}\n.import-mapping-row {\n margin-bottom: 8px;\n}\n.import-mapping-header {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n.import-strategy {\n margin-top: 16px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n}\n:deep(.import-cell) {\n padding: 2px;\n border-radius: 4px;\n}\n:deep(.import-cell--error) {\n /* 用仓库自己的语义令牌(亮/暗都有定义)。别写 --n-error-color:那是 naive 组件内部的变量,\n 在这层普通 div 上未定义,整条 color-mix() 会被判无效丢弃 —— 红底静默不渲染,而 tsc/lint/build 全绿。 */\n background: var(--color-danger-bg);\n}\n:deep(.import-cell--dup) {\n /* 「库里已存在」在跳过/覆盖策略下会被正常处理,用警示色而非错误红——同上,只用语义令牌 */\n background: var(--color-warning-bg);\n}\n</style>\n"],"names":["show","_useModel","__props","props","emit","__emit","t","useI18n","message","useMessage","step","ref","loading","file","fileList","headers","shallowRef","mapping","columns","rows","columnErrors","onlyErrors","strategy","DuplicateStrategy","commitResult","strategyLabels","strategyOptions","computed","value","isHard","isHardError","hardErrorsOf","r","hardErrors","errorRows","duplicateRows","isDuplicateOnly","reset","o","_a","watch","v","applyPreview","p","onDownloadTemplate","blob","triggerBlobDownload","translateError","onFileChange","list","f","onFileRemove","goMapping","header","goPreview","map","key","e","targetColumnOptions","c","cellError","row","setCell","displayRows","previewColumns","cols","col","err","soft","val","editor","h","DictSelect","NInput","cell","NTooltip","NTag","hard","revalidate","doCommit","result","backToEditFailures","downloadErrorReport","source","close","_createBlock","_unref","NModal","$event","_createVNode","NSpace","NButton","_cache","NSteps","NStep","_withDirectives","_createElementVNode","_hoisted_1","AppIcon","_createTextVNode","NUpload","NUploadDragger","_hoisted_2","NText","_hoisted_3","NAlert","_toDisplayString","_hoisted_4","_hoisted_5","_createElementBlock","_Fragment","_renderList","hdr","_hoisted_6","NSelect","_hoisted_7","NSwitch","NDataTable","_hoisted_8","NRadioGroup","option","NRadio","_hoisted_9"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkDA,UAAMA,IAAOC,GAAoBC,GAAC,MAA0B,GAEtDC,IAAQD,GAmBRE,KAAOC,IAKP,EAAE,GAAAC,EAAA,IAAMC,GAAA,GACRC,IAAUC,GAAA,GAGVC,IAAOC,EAAI,CAAC,GACZC,IAAUD,EAAI,EAAK,GACnBE,IAAOF,EAAiB,IAAI,GAC5BG,IAAWH,EAAsB,EAAE,GACnCI,IAAUC,GAAqB,EAAE,GAEjCC,IAAUN,EAA4B,EAAE,GACxCO,IAAUF,GAA2B,EAAE,GAGvCG,IAAOR,EAAiB,EAAE,GAC1BS,IAAeT,EAAmC,EAAE,GACpDU,IAAaV,EAAI,EAAK,GACtBW,IAAWX,EAAoBY,EAAkB,IAAI,GACrDC,IAAeb,EAA+B,IAAI,GAGlDc,KAAuD;AAAA,MAC3D,CAACF,EAAkB,IAAI,GAAG,MAAMjB,EAAE,qBAAqB;AAAA,MACvD,CAACiB,EAAkB,SAAS,GAAG,MAAMjB,EAAE,0BAA0B;AAAA,MACjE,CAACiB,EAAkB,KAAK,GAAG,MAAMjB,EAAE,sBAAsB;AAAA,IAAA,GAGrDoB,IAAkBC;AAAA,MAAS,OAE7BxB,EAAM,cAAc;AAAA,QAClBoB,EAAkB;AAAA,QAClBA,EAAkB;AAAA,QAClBA,EAAkB;AAAA,MAAA,GAEpB,IAAI,CAAAK,OAAU,EAAE,OAAAA,GAAO,OAAOH,GAAeG,CAAK,IAAI;AAAA,IAAA,GAIpDC,KAAS,CAAC,MAAiBC,GAAY,GAAGR,EAAS,KAAK,GACxDS,IAAe,CAACC,MAAiBC,GAAWD,GAAGV,EAAS,KAAK,GAE7DY,IAAYP,EAAS,MAAMR,EAAK,MAAM,OAAO,CAAAa,MAAKD,EAAaC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAEpFG,IAAgBR;AAAA,MACpB,MAAMR,EAAK,MAAM,OAAO,CAAAa,MAAKI,GAAgBJ,GAAGV,EAAS,KAAK,CAAC,EAAE;AAAA,IAAA;AAGnE,aAASe,KAAQ;;AACf,MAAA3B,EAAK,QAAQ,GACbE,EAAQ,QAAQ,IAChBC,EAAK,QAAQ,MACbC,EAAS,QAAQ,CAAA,GACjBC,EAAQ,QAAQ,CAAA,GAChBE,EAAQ,QAAQ,CAAA,GAChBC,EAAQ,QAAQ,CAAA,GAChBC,EAAK,QAAQ,CAAA,GACbC,EAAa,QAAQ,CAAA,GACrBC,EAAW,QAAQ,IAEnBC,EAAS,QAAQI,EAAgB,MAAM,KAAK,CAAAY,MAAKA,EAAE,UAAUf,EAAkB,IAAI,IAC/EA,EAAkB,SACjBgB,IAAAb,EAAgB,MAAM,CAAC,MAAvB,gBAAAa,EAA0B,UAAShB,EAAkB,MAC1DC,EAAa,QAAQ;AAAA,IACvB;AAEA,IAAAgB,GAAMxC,GAAM,CAAAyC,MAAK;AACf,MAAIA,KAAGJ,GAAA;AAAA,IACT,CAAC;AAED,aAASK,EAAaC,GAAkB;AACtC,MAAA5B,EAAQ,QAAQ,CAAC,GAAG4B,EAAE,OAAO,GAC7B1B,EAAQ,QAAQ,EAAE,GAAG0B,EAAE,QAAA,GACvBzB,EAAQ,QAAQyB,EAAE,SAClBxB,EAAK,QAAQwB,EAAE,KAAK,IAAI,CAAAX,OAAM;AAAA,QAC5B,OAAOA,EAAE;AAAA,QACT,OAAO,EAAE,GAAGA,EAAE,MAAA;AAAA,QACd,QAAQ,CAAC,GAAGA,EAAE,MAAM;AAAA,MAAA,EACpB,GACFZ,EAAa,QAAQuB,EAAE;AAAA,IACzB;AAEA,mBAAeC,KAAqB;AAClC,MAAAhC,EAAQ,QAAQ;AAChB,UAAI;AACF,cAAMiC,IAAO,MAAM1C,EAAM,IAAI,iBAAA;AAC7B,QAAA2C,GAAoBD,GAAM1C,EAAM,oBAAoB,sBAAsB;AAAA,MAC5E,SAAS,GAAG;AACV,QAAAK,EAAQ,MAAMuC,EAAe,CAAC,CAAC;AAAA,MACjC,UAAA;AACE,QAAAnC,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,aAASoC,GAAaC,GAAwB;;AAE5C,MAAAnC,EAAS,QAAQmC,EAAK,MAAM,EAAE;AAC9B,YAAMC,KAAIX,IAAAU,EAAKA,EAAK,SAAS,CAAC,MAApB,gBAAAV,EAAuB;AACjC,MAAA1B,EAAK,QAAQqC,aAAa,OAAOA,IAAI;AAAA,IACvC;AAEA,aAASC,KAAe;AACtB,MAAArC,EAAS,QAAQ,CAAA,GACjBD,EAAK,QAAQ;AAAA,IACf;AAGA,mBAAeuC,KAAY;AACzB,UAAI,CAACvC,EAAK,OAAO;AACf,QAAAL,EAAQ,QAAQF,EAAE,iBAAiB,CAAC;AACpC;AAAA,MACF;AACA,MAAAM,EAAQ,QAAQ;AAChB,UAAI;AACF,cAAM+B,IAAI,MAAMxC,EAAM,IAAI,QAAQU,EAAK,KAAK;AAC5C,QAAA6B,EAAaC,CAAC;AAEd,mBAAWU,KAAUV,EAAE;AACrB,UAAMU,KAAUpC,EAAQ,UAAQA,EAAQ,MAAMoC,CAAM,IAAI;AAE1D,QAAA3C,EAAK,QAAQ;AAAA,MACf,SAAS,GAAG;AACV,QAAAF,EAAQ,MAAMuC,EAAe,CAAC,CAAC;AAAA,MACjC,UAAA;AACE,QAAAnC,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAGA,mBAAe0C,KAAY;AACzB,UAAI,CAACzC,EAAK,MAAO;AAEjB,YAAM0C,IAA8B,CAAA;AACpC,iBAAW,CAACF,GAAQG,CAAG,KAAK,OAAO,QAAQvC,EAAQ,KAAK;AACtD,QAAIuC,MAAKD,EAAIF,CAAM,IAAIG;AAEzB,MAAA5C,EAAQ,QAAQ;AAChB,UAAI;AACF,cAAM+B,IAAI,MAAMxC,EAAM,IAAI,QAAQU,EAAK,OAAO0C,CAAG;AACjD,QAAAb,EAAaC,CAAC,GACdjC,EAAK,QAAQ;AAAA,MACf,SAAS+C,GAAG;AACV,QAAAjD,EAAQ,MAAMuC,EAAeU,CAAC,CAAC;AAAA,MACjC,UAAA;AACE,QAAA7C,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,UAAM8C,KAAsB/B,EAAS,MAAM;AAAA,MACzC,EAAE,OAAOrB,EAAE,cAAc,GAAG,OAAO,GAAA;AAAA,MACnC,GAAGY,EAAQ,MAAM,IAAI,CAAAyC,OAAM;AAAA,QACzB,OAAOA,EAAE,WAAW,GAAGA,EAAE,KAAK,OAAOA,EAAE;AAAA,QACvC,OAAOA,EAAE;AAAA,MAAA,EACT;AAAA,IAAA,CACH;AAED,aAASC,GAAUC,GAAgBL,GAAa;AAC9C,aAAOK,EAAI,OAAO,KAAK,CAAAJ,MAAKA,EAAE,cAAcD,CAAG;AAAA,IACjD;AAEA,aAASM,EAAQD,GAAgBL,GAAa5B,GAAsB;AAClE,MAAAiC,EAAI,MAAML,CAAG,IAAI5B,GAEjBiC,EAAI,SAASA,EAAI,OAAO,OAAO,CAAAJ,MAAKA,EAAE,cAAcD,CAAG;AAAA,IACzD;AAEA,UAAMO,KAAcpC;AAAA,MAAS,MAC3BN,EAAW,QAAQF,EAAK,MAAM,OAAO,CAAAa,MAAKD,EAAaC,CAAC,EAAE,SAAS,CAAC,IAAIb,EAAK;AAAA,IAAA,GAGzE6C,KAAiBrC,EAAsC,MAAM;AACjE,YAAMsC,IAAoC;AAAA,QACxC;AAAA,UACE,OAAO;AAAA,UACP,KAAK;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ,OAAKjC,EAAE;AAAA,QAAA;AAAA,MACjB;AAEF,iBAAWkC,KAAOhD,EAAQ;AACxB,QAAA+C,EAAK,KAAK;AAAA,UACR,OAAO,MAAOC,EAAI,WAAW,GAAGA,EAAI,KAAK,OAAOA,EAAI;AAAA,UACpD,KAAKA,EAAI;AAAA,UACT,UAAU;AAAA,UACV,UAAU,EAAE,SAAS,GAAA;AAAA,UACrB,QAAQ,CAAAL,MAAO;AACb,kBAAMM,IAAMP,GAAUC,GAAKK,EAAI,GAAG,GAE5BE,IAAOD,MAAQ,UAAa,CAACtC,GAAOsC,CAAG,GACvCE,KAAMR,EAAI,MAAMK,EAAI,GAAG,KAAK,MAC5BI,KAASJ,EAAI,eACfK,EAAEC,IAAY;AAAA,cACZ,UAAUN,EAAI;AAAA,cACd,OAAOG;AAAA,cACP,WAAW,CAACH,EAAI;AAAA,cAChB,MAAM;AAAA;AAAA;AAAA;AAAA,cAIN,qBAAqB;AAAA,cACrB,OAAO,EAAE,OAAO,OAAA;AAAA,cAChB,QAAQC,KAAO,CAACC,IAAO,UAAU;AAAA,cACjC,kBAAkB,CAAC3B,MAAqBqB,EAAQD,GAAKK,EAAI,KAAKzB,CAAC;AAAA,YAAA,CAChE,IACD8B,EAAEE,IAAQ;AAAA,cACR,OAAOJ,MAAO;AAAA,cACd,MAAM;AAAA,cACN,QAAQF,KAAO,CAACC,IAAO,UAAU;AAAA,cACjC,eAAe,CAAC3B,MAAcqB,EAAQD,GAAKK,EAAI,KAAKzB,CAAC;AAAA,YAAA,CACtD,GACCiC,KAAOH;AAAA,cACX;AAAA,cACA;AAAA,gBACE,OAAQJ,IAEJC,IACE,iCACA,mCAHF;AAAA,cAGE;AAAA,cAER,CAACE,EAAM;AAAA,YAAA;AAET,mBAAKH,IACEI;AAAA,cACLI;AAAA,cACA,EAAE,SAAS,QAAA;AAAA,cACX;AAAA,gBACE,SAAS,MAAMD;AAAA,gBACf,SAAS,MACPN,IAAO9D,EAAE,kBAAkBgB,EAAS,KAAK,EAAE,IAAIyB,EAAeoB,EAAI,IAAI;AAAA,cAAA;AAAA,YAC1E,IAReO;AAAA,UAUnB;AAAA,QAAA,CACD;AAEH,aAAAT,EAAK,KAAK;AAAA,QACR,OAAO,MAAM3D,EAAE,eAAe;AAAA,QAC9B,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ,CAAA0B,MAAK;AACX,cAAIA,EAAE,OAAO,WAAW;AACtB,mBAAOuC,EAAEK,GAAM,EAAE,MAAM,SAAS,MAAM,WAAW,UAAU,GAAA,GAAS,MAAMtE,EAAE,WAAW,CAAC;AAC1F,gBAAMuE,IAAO9C,EAAaC,CAAC;AAE3B,iBAAI6C,EAAK,WAAW,IACXN;AAAA,YACLI;AAAA,YACA,EAAE,SAAS,QAAA;AAAA,YACX;AAAA,cACE,SAAS,MACPJ;AAAA,gBAAEK;AAAA,gBAAM,EAAE,MAAM,SAAS,MAAM,WAAW,UAAU,GAAA;AAAA,gBAAS,MAC3DtE,EAAE,eAAe;AAAA,cAAA;AAAA,cAErB,SAAS,MAAMA,EAAE,kBAAkBgB,EAAS,KAAK,EAAE;AAAA,YAAA;AAAA,UACrD,IAGGiD;AAAA,YACLI;AAAA,YACA,EAAE,SAAS,QAAA;AAAA,YACX;AAAA,cACE,SAAS,MACPJ;AAAA,gBAAEK;AAAA,gBAAM,EAAE,MAAM,SAAS,MAAM,SAAS,UAAU,GAAA;AAAA,gBAAS,MACzDtE,EAAE,qBAAqB,EAAE,GAAGuE,EAAK,QAAQ;AAAA,cAAA;AAAA,cAE7C,SAAS,MAAMA,EAAK,IAAI,CAAApB,MAAK,GAAGA,EAAE,SAAS,KAAKV,EAAeU,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK;AAAA,CAAI;AAAA,YAAA;AAAA,UACrF;AAAA,QAEJ;AAAA,MAAA,CACD,GACMQ;AAAA,IACT,CAAC;AAED,mBAAea,KAAa;AAE1B,MAAAlE,EAAQ,QAAQ;AAChB,UAAI;AACF,cAAM+B,IAAI,MAAMxC,EAAM,IAAI,SAASgB,EAAK,KAAK;AAE7C,QAAAA,EAAK,QAAQwB,EAAE,KAAK,IAAI,CAAAX,OAAM;AAAA,UAC5B,OAAOA,EAAE;AAAA,UACT,OAAO,EAAE,GAAGA,EAAE,MAAA;AAAA,UACd,QAAQ,CAAC,GAAGA,EAAE,MAAM;AAAA,QAAA,EACpB,GACFd,EAAQ,QAAQyB,EAAE,QAAQ,SAASA,EAAE,UAAUzB,EAAQ,OAEvDV,EAAQ,QAAQF,EAAE,sBAAsB,EAAE,QAAQ4B,EAAU,OAAO,OAAOS,EAAE,MAAA,CAAO,CAAC;AAAA,MACtF,SAAS,GAAG;AACV,QAAAnC,EAAQ,MAAMuC,EAAe,CAAC,CAAC;AAAA,MACjC,UAAA;AACE,QAAAnC,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,mBAAemE,KAAW;AACxB,MAAAnE,EAAQ,QAAQ;AAChB,UAAI;AACF,cAAMoE,IAAS,MAAM7E,EAAM,IAAI,OAAOgB,EAAK,OAAOG,EAAS,KAAK;AAChE,QAAAE,EAAa,QAAQwD,GACrBtE,EAAK,QAAQ,GACTsE,EAAO,WAAWA,EAAO,UAAU,QAAQ,MAAM;AAAA,MACvD,SAAS,GAAG;AACV,QAAAxE,EAAQ,MAAMuC,EAAe,CAAC,CAAC;AAAA,MACjC,UAAA;AACE,QAAAnC,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAGA,aAASqE,KAAqB;AAC5B,MAAKzD,EAAa,UAClBL,EAAK,QAAQK,EAAa,MAAM,SAAS,IAAI,CAAAQ,OAAM;AAAA,QACjD,OAAOA,EAAE;AAAA,QACT,OAAO,EAAE,GAAGA,EAAE,MAAA;AAAA,QACd,QAAQ,CAAC,GAAGA,EAAE,MAAM;AAAA,MAAA,EACpB,GACFX,EAAW,QAAQ,IACnBG,EAAa,QAAQ,MACrBd,EAAK,QAAQ;AAAA,IACf;AAEA,mBAAewE,KAAsB;AACnC,YAAMC,IACJzE,EAAK,UAAU,KAAKc,EAAa,QAC7BA,EAAa,MAAM,WACnBL,EAAK,MAAM,OAAO,CAAAa,MAAKA,EAAE,OAAO,SAAS,CAAC;AAChD,UAAImD,EAAO,WAAW,GAAG;AACvB,QAAA3E,EAAQ,QAAQF,EAAE,oBAAoB,CAAC;AACvC;AAAA,MACF;AACA,MAAAM,EAAQ,QAAQ;AAChB,UAAI;AACF,cAAMiC,IAAO,MAAM1C,EAAM,IAAI,YAAYgF,CAAM;AAC/C,QAAArC,GAAoBD,GAAM1C,EAAM,uBAAuB,oBAAoB;AAAA,MAC7E,SAASsD,GAAG;AACV,QAAAjD,EAAQ,MAAMuC,EAAeU,CAAC,CAAC;AAAA,MACjC,UAAA;AACE,QAAA7C,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,aAASwE,KAAQ;AACf,MAAApF,EAAK,QAAQ;AAAA,IACf;2BAIEqF,EA4KUC,EAAAC,EAAA,GAAA;AAAA,MA3KA,MAAMvF,EAAA;AAAA,8CAAAA,EAAI,QAAAwF;AAAA,MAClB,QAAO;AAAA,MACN,OAAOrF,EAAM,SAASmF,EAAAhF,CAAA,EAAC,oBAAA;AAAA,MACvB,OAAO,EAAA,OAAA,oBAAA;AAAA,MACP,iBAAe;AAAA,MACf,WAAWM,EAAA;AAAA,MACX,iBAAeA,EAAA;AAAA,IAAA;MAyIL,UACT,MAyBU;AAAA,QAzBV6E,EAyBUH,EAAAI,CAAA,GAAA,EAzBD,SAAQ,SAAK;AAAA,qBACpB,MAEW;AAAA,YAFXD,EAEWH,EAAAK,CAAA,GAAA;AAAA,cAFA,UAAU/E,EAAA;AAAA,cAAU,SAAOwE;AAAA,YAAA;yBACpC,MAAyD;AAAA,oBAAtD1E,EAAA,UAAI,IAAS4E,EAAAhF,CAAA,EAAC,cAAA,IAAmBgF,EAAAhF,CAAA,EAAC,eAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAEvBI,EAAA,UAAI,UAApB2E,EAEWC,EAAAK,CAAA,GAAA;AAAA;cAFiB,WAAA;AAAA,cAAW,UAAU/E,EAAA;AAAA,cAAU,SAAOsE;AAAA,YAAA;yBAChE,MAAqC;AAAA,oBAAlCI,EAAAhF,CAAA,EAAC,4BAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAEUI,EAAA,aAAYA,EAAA,QAAI,UAAhC2E,EAEWC,EAAAK,CAAA,GAAA;AAAA;cAF4B,UAAU/E,EAAA;AAAA,cAAU,SAAKgF,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAE9E,EAAA,QAAOA,EAAA,QAAI;AAAA,YAAA;yBAC3E,MAAsB;AAAA,oBAAnB4E,EAAAhF,CAAA,EAAC,aAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAGEI,EAAA,UAAI,UADZ2E,EAQWC,EAAAK,CAAA,GAAA;AAAA;cANT,MAAK;AAAA,cACJ,SAAS/E,EAAA;AAAA,cACT,WAAWC,EAAA;AAAA,cACX,SAAOuC;AAAA,YAAA;yBAER,MAAsB;AAAA,oBAAnBkC,EAAAhF,CAAA,EAAC,aAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAEUI,EAAA,UAAI,UAApB2E,EAEWC,EAAAK,CAAA,GAAA;AAAA;cAFiB,MAAK;AAAA,cAAW,SAAS/E,EAAA;AAAA,cAAU,SAAO0C;AAAA,YAAA;yBACpE,MAAsB;AAAA,oBAAnBgC,EAAAhF,CAAA,EAAC,aAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAEUI,EAAA,UAAI,UAApB2E,EAEWC,EAAAK,CAAA,GAAA;AAAA;cAFiB,MAAK;AAAA,cAAW,SAAS/E,EAAA;AAAA,cAAU,SAAOmE;AAAA,YAAA;yBACpE,MAAwB;AAAA,oBAArBO,EAAAhF,CAAA,EAAC,eAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;;;;;iBA/JV,MAKU;AAAA,QALVmF,EAKUH,EAAAO,EAAA,GAAA;AAAA,UALA,SAASnF,EAAA;AAAA,UAAM,MAAK;AAAA,UAAQ,OAAM;AAAA,QAAA;qBAC1C,MAA0C;AAAA,YAA1C+E,EAA0CH,EAAAQ,CAAA,GAAA;AAAA,cAAjC,OAAOR,EAAAhF,CAAA,EAAC,mBAAA;AAAA,YAAA;YACjBmF,EAA2CH,EAAAQ,CAAA,GAAA;AAAA,cAAlC,OAAOR,EAAAhF,CAAA,EAAC,oBAAA;AAAA,YAAA;YACjBmF,EAA2CH,EAAAQ,CAAA,GAAA;AAAA,cAAlC,OAAOR,EAAAhF,CAAA,EAAC,oBAAA;AAAA,YAAA;YACjBmF,EAA0CH,EAAAQ,CAAA,GAAA;AAAA,cAAjC,OAAOR,EAAAhF,CAAA,EAAC,mBAAA;AAAA,YAAA;;;;QAInByF,EAAAC,EAyBM,OAzBNC,IAyBM;AAAA,UAxBJR,EAuBUH,EAAAI,CAAA,GAAA;AAAA,YAvBD,UAAA;AAAA,YAAU,MAAM;AAAA,UAAA;uBACvB,MAGW;AAAA,cAHXD,EAGWH,EAAAK,CAAA,GAAA;AAAA,gBAHD,WAAA;AAAA,gBAAW,SAAS/E,EAAA;AAAA,gBAAU,SAAOgC;AAAA,cAAA;gBAClC,QAAK,MAAgD;AAAA,kBAAhD6C,EAAgDS,GAAA;AAAA,oBAAvC,MAAK;AAAA,oBAAsB,MAAM;AAAA,kBAAA;;2BAAiB,MAC3E;AAAA,kBAD2EC,EAAA,QACxEb,EAAAhF,CAAA,EAAC,yBAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;cAENmF,EAiBWH,EAAAc,EAAA,GAAA;AAAA,gBAhBR,aAAWtF,EAAA;AAAA,gBACX,KAAK;AAAA,gBACN,QAAO;AAAA,gBACN,kBAAgB;AAAA,gBAChB,qBAAkBkC;AAAA,gBAClB,UAAQG;AAAA,cAAA;2BAET,MAQmB;AAAA,kBARnBsC,EAQmBH,EAAAe,EAAA,GAAA,MAAA;AAAA,+BAPjB,MAEM;AAAA,sBAFNL,EAEM,OAFNM,IAEM;AAAA,wBADJb,EAAyCS,GAAA;AAAA,0BAAhC,MAAK;AAAA,0BAAe,MAAM;AAAA,wBAAA;;sBAErCT,EAAmEH,EAAAiB,CAAA,GAAA,EAA3D,OAAA,EAAA,aAAA,OAAA,KAAuB;AAAA,mCAAC,MAA0B;AAAA,8BAAvBjB,EAAAhF,CAAA,EAAC,iBAAA,CAAA,GAAA,CAAA;AAAA,wBAAA;;;sBACpCmF,EAESH,EAAAiB,CAAA,GAAA;AAAA,wBAFD,OAAM;AAAA,wBAAI,OAAA,EAAA,SAAA,SAAA,cAAA,MAAA;AAAA,sBAAA;mCAChB,MAAyB;AAAA,8BAAtBjB,EAAAhF,CAAA,EAAC,gBAAA,CAAA,GAAA,CAAA;AAAA,wBAAA;;;;;;;;;;;;;cApBDI,EAAA,UAAI,CAAA;AAAA,QAAA;QA4BjBqF,EAAAC,EAsBM,OAtBNQ,IAsBM;AAAA,UArBWpF,EAAA,MAAa,eAA5BiE,EAEUC,EAAAmB,EAAA,GAAA;AAAA;YAF0B,MAAK;AAAA,YAAU,OAAA,EAAA,iBAAA,OAAA;AAAA,UAAA;uBACjD,MAAmF;AAAA,cAAhFN,EAAAO,EAAAtF,EAAA,MAAa,IAAI,CAAAqC,SAAQA,EAAE,SAAS,KAAK6B,KAAe7B,EAAE,IAAI,KAAK,KAAI,IAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;UAE5EgC,EAESH,EAAAiB,CAAA,GAAA;AAAA,YAFD,OAAM;AAAA,YAAI,OAAA,EAAA,SAAA,SAAA,iBAAA,OAAA;AAAA,UAAA;uBAChB,MAA6B;AAAA,kBAA1BjB,EAAAhF,CAAA,EAAC,oBAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;UAEN0F,EAcM,OAdNW,IAcM;AAAA,YAbJX,EAGM,OAHNY,IAGM;AAAA,cAFJZ,EAAyC,gBAAhCV,EAAAhF,CAAA,EAAC,mBAAA,CAAA,GAAA,CAAA;AAAA,cACV0F,EAA2C,gBAAlCV,EAAAhF,CAAA,EAAC,qBAAA,CAAA,GAAA,CAAA;AAAA,YAAA;oBAEZuG,EAQMC,GAAA,MAAAC,GARahG,EAAA,OAAO,CAAdiG,YAAZH,EAQM,OAAA;AAAA,cARuB,KAAKG;AAAA,cAAK,OAAM;AAAA,YAAA;cAC3ChB,EAAiE,QAAA;AAAA,gBAA3D,OAAM;AAAA,gBAAyB,OAAOgB;AAAA,cAAA,KAAQA,CAAG,GAAA,GAAAC,EAAA;AAAA,cACvDxB,EAKEH,EAAA4B,EAAA,GAAA;AAAA,gBAJQ,OAAOjG,EAAA,MAAQ+F,CAAG;AAAA,gBAAX,kBAAA,CAAAxB,MAAAvE,EAAA,MAAQ+F,CAAG,IAAAxB;AAAA,gBACzB,SAAS9B,GAAA;AAAA,gBACT,yBAAuB;AAAA,gBACxB,MAAK;AAAA,cAAA;;;;cAlBAhD,EAAA,UAAI,CAAA;AAAA,QAAA;QAyBjBqF,EAAAC,EAuCM,OAvCNmB,IAuCM;AAAA,UAtCJ1B,EAmBUH,EAAAI,CAAA,GAAA;AAAA,YAnBD,SAAQ;AAAA,YAAgB,OAAM;AAAA,YAAS,OAAA,EAAA,iBAAA,OAAA;AAAA,YAA4B,MAAA;AAAA,UAAA;uBAC1E,MAWU;AAAA,cAXVD,EAWUH,EAAAI,CAAA,GAAA,EAXD,OAAM,YAAQ;AAAA,2BACrB,MAKS;AAAA,kBALTD,EAKSH,EAAAiB,CAAA,GAAA,MAAA;AAAA,+BAJP,MAAoE;AAAA,sBAAjEJ,EAAAO,EAAApB,EAAAhF,CAAA,6BAA6Ba,EAAA,MAAK,QAAM,QAAUe,EAAA,MAAA,MAAe,KACpE,CAAA;AAAA,sBAAgBC,EAAA,cAAhB0E,EAEWC,GAAA,EAAA,KAAA,KAAA;AAAA,wBADNX,EAAAO,EAAApB,EAAAhF,CAAA,4BAA4B6B,EAAA,MAAA,CAAa,CAAA,GAAA,CAAA;AAAA,sBAAA;;;;kBAGhDsD,EAGWH,EAAA8B,EAAA,GAAA;AAAA,oBAHO,OAAO/F,EAAA;AAAA,6DAAAA,EAAU,QAAAmE;AAAA,oBAAE,MAAK;AAAA,kBAAA;oBAC7B,WAAQ,MAA4B;AAAA,0BAAzBF,EAAAhF,CAAA,EAAC,mBAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;oBACZ,aAAU,MAA4B;AAAA,0BAAzBgF,EAAAhF,CAAA,EAAC,mBAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;;;;;cAG7BmF,EAKUH,EAAAI,CAAA,GAAA,MAAA;AAAA,2BAJR,MAGW;AAAA,kBAHXD,EAGWH,EAAAK,CAAA,GAAA;AAAA,oBAHD,MAAK;AAAA,oBAAS,SAAS/E,EAAA;AAAA,oBAAU,SAAOkE;AAAA,kBAAA;oBACrC,QAAK,MAAiD;AAAA,sBAAjDW,EAAiDS,GAAA;AAAA,wBAAxC,MAAK;AAAA,wBAAuB,MAAM;AAAA,sBAAA;;+BAAiB,MAC5E;AAAA,sBAD4EC,EAAA,QACzEb,EAAAhF,CAAA,EAAC,mBAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;;;;;;;;UAIVmF,EAOEH,EAAA+B,EAAA,GAAA;AAAA,YANA,MAAK;AAAA,YACJ,SAASrD,GAAA;AAAA,YACT,MAAMD,GAAA;AAAA,YACN,WAAO,CAAG,MAAiB,EAAE;AAAA,YAC7B,cAAY;AAAA,YACZ,YAAU,KAAK,IAAG,KAAM7C,EAAA,MAAQ,SAAM,MAAA,GAAA;AAAA,UAAA;UAEzC8E,EASM,OATNsB,IASM;AAAA,YARJ7B,EAA6EH,EAAAiB,CAAA,GAAA;AAAA,cAArE,QAAA;AAAA,cAAO,OAAA,EAAA,gBAAA,OAAA;AAAA,YAAA;yBAA2B,MAA0B;AAAA,oBAAvBjB,EAAAhF,CAAA,EAAC,iBAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAC9CmF,EAMgBH,EAAAiC,EAAA,GAAA;AAAA,cANO,OAAOjG,EAAA;AAAA,uDAAAA,EAAQ,QAAAkE;AAAA,cAAE,MAAK;AAAA,YAAA;yBAC3C,MAIU;AAAA,gBAJVC,EAIUH,EAAAI,CAAA,GAAA,MAAA;AAAA,6BAHC,MAAiC;AAAA,4BAA1CmB,EAEUC,GAAA,MAAAC,GAFgBrF,EAAA,OAAe,CAAzB8F,YAAhBnC,EAEUC,EAAAmC,EAAA,GAAA;AAAA,sBAFkC,KAAKD,EAAO;AAAA,sBAAQ,OAAOA,EAAO;AAAA,oBAAA;iCAC5E,MAAoB;AAAA,wBAAjBrB,EAAAO,EAAAc,EAAO,MAAA,CAAK,GAAA,CAAA;AAAA,sBAAA;;;;;;;;;;;cAlCZ9G,EAAA,UAAI,CAAA;AAAA,QAAA;QA0CjBqF,EAAAC,EA8BM,OA9BN0B,IA8BM;AAAA,UA5BIlG,EAAA,cADR6D,EAUUC,EAAAmB,EAAA,GAAA;AAAA;YARP,MAAMjF,EAAA,MAAa,SAAM,IAAA,YAAA;AAAA,YACzB,OAAO8D,EAAAhF,CAAA,EAAC,oBAAA;AAAA,UAAA;uBAET,MAAmE;AAAA,cAAnE0F,EAAmE,OAAA,MAAAU,EAA3DpB,EAAAhF,CAAA,EAAC,sBAAA,EAAA,GAA4BkB,EAAA,MAAa,MAAA,CAAK,CAAA,GAAA,CAAA;AAAA,cACvDwE,EAAyE,OAAA,MAAAU,EAAjEpB,EAAAhF,CAAA,EAAC,yBAAA,EAAA,GAA+BkB,EAAA,MAAa,SAAA,CAAQ,CAAA,GAAA,CAAA;AAAA,cAC7DwE,EAAuE,OAAA,MAAAU,EAA/DpB,EAAAhF,CAAA,EAAC,wBAAA,EAAA,GAA8BkB,EAAA,MAAa,QAAA,CAAO,CAAA,GAAA,CAAA;AAAA,cAC3DwE,EAAuE,OAAA,MAAAU,EAA/DpB,EAAAhF,CAAA,EAAC,wBAAA,EAAA,GAA8BkB,EAAA,MAAa,QAAA,CAAO,CAAA,GAAA,CAAA;AAAA,cAC3DwE,EAAqE,OAAA,MAAAU,EAA7DpB,EAAAhF,CAAA,EAAC,uBAAA,EAAA,GAA6BkB,EAAA,MAAa,OAAA,CAAM,CAAA,GAAA,CAAA;AAAA,YAAA;;;UAE3DiE,EAiBUH,EAAAI,CAAA,GAAA,EAjBD,OAAA,EAAA,cAAA,OAAA,KAAwB;AAAA,uBAC/B,MAMW;AAAA,cALHlE,EAAA,SAAgBA,EAAA,MAAa,SAAM,UAD3C6D,EAMWC,EAAAK,CAAA,GAAA;AAAA;gBAJT,MAAK;AAAA,gBACJ,SAAOV;AAAA,cAAA;2BAER,MAA8B;AAAA,sBAA3BK,EAAAhF,CAAA,EAAC,qBAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;cAGEkB,EAAA,SAAgBA,EAAA,MAAa,SAAM,UAD3C6D,EAQWC,EAAAK,CAAA,GAAA;AAAA;gBANT,WAAA;AAAA,gBACC,SAAS/E,EAAA;AAAA,gBACT,SAAOsE;AAAA,cAAA;gBAEG,QAAK,MAAgD;AAAA,kBAAhDO,EAAgDS,GAAA;AAAA,oBAAvC,MAAK;AAAA,oBAAsB,MAAM;AAAA,kBAAA;;2BAAiB,MAC3E;AAAA,kBAD2EC,EAAA,QACxEb,EAAAhF,CAAA,EAAC,4BAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;;;;;cA3BGI,EAAA,UAAI,CAAA;AAAA,QAAA;;;;;;"}
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ value?: string | null;
3
+ };
4
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {
5
+ valid: () => boolean;
6
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "update:value": (v: string) => any;
8
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ "onUpdate:value"?: ((v: string) => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,87 @@
1
+ import { defineComponent as N, computed as g, ref as w, watch as z, openBlock as l, createBlock as i, unref as r, withCtx as s, createVNode as u, mergeProps as S, createTextVNode as c, toDisplayString as p, createElementBlock as B } from "vue";
2
+ import { NSpace as m, NInput as C, NText as J, NButton as O } from "naive-ui";
3
+ import { useI18n as b } from "vue-i18n";
4
+ import I from "../AppIcon.vue.js";
5
+ const R = { key: 1 }, A = /* @__PURE__ */ N({
6
+ inheritAttrs: !1,
7
+ __name: "index",
8
+ props: {
9
+ value: {}
10
+ },
11
+ emits: ["update:value"],
12
+ setup(f, { expose: v, emit: d }) {
13
+ const { t: y } = b(), _ = f, x = d, a = g({ get: () => _.value ?? "", set: (t) => x("update:value", t) }), e = w("");
14
+ function n(t) {
15
+ if (!t.trim())
16
+ return e.value = "", !0;
17
+ try {
18
+ return JSON.parse(t), e.value = "", !0;
19
+ } catch (o) {
20
+ return e.value = o.message, !1;
21
+ }
22
+ }
23
+ function h() {
24
+ try {
25
+ a.value = JSON.stringify(JSON.parse(a.value), null, 2), e.value = "";
26
+ } catch (t) {
27
+ e.value = t.message;
28
+ }
29
+ }
30
+ return z(a, n, { immediate: !0 }), v({ valid: () => n(a.value) }), (t, o) => (l(), i(r(m), {
31
+ vertical: "",
32
+ size: 4,
33
+ style: { width: "100%" }
34
+ }, {
35
+ default: s(() => [
36
+ u(r(C), S({
37
+ value: a.value,
38
+ "onUpdate:value": o[0] || (o[0] = (k) => a.value = k),
39
+ type: "textarea",
40
+ autosize: { minRows: 4, maxRows: 16 },
41
+ status: e.value ? "error" : void 0,
42
+ spellcheck: "false"
43
+ }, t.$attrs), null, 16, ["value", "status"]),
44
+ u(r(m), {
45
+ justify: "space-between",
46
+ align: "center",
47
+ wrap: !1
48
+ }, {
49
+ default: s(() => [
50
+ e.value ? (l(), i(r(J), {
51
+ key: 0,
52
+ type: "error",
53
+ style: { "font-size": "12px" }
54
+ }, {
55
+ default: s(() => [
56
+ c(p(e.value), 1)
57
+ ]),
58
+ _: 1
59
+ })) : (l(), B("span", R)),
60
+ u(r(O), {
61
+ size: "tiny",
62
+ tertiary: "",
63
+ onClick: h
64
+ }, {
65
+ icon: s(() => [
66
+ u(I, {
67
+ icon: "ph:brackets-curly",
68
+ size: 14
69
+ })
70
+ ]),
71
+ default: s(() => [
72
+ c(" " + p(r(y)("common.format")), 1)
73
+ ]),
74
+ _: 1
75
+ })
76
+ ]),
77
+ _: 1
78
+ })
79
+ ]),
80
+ _: 1
81
+ }));
82
+ }
83
+ });
84
+ export {
85
+ A as default
86
+ };
87
+ //# sourceMappingURL=index.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.vue.js","sources":["../../../src/components/JsonEditor/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// JSON 值编辑:textarea + 实时校验 + 一键格式化。零依赖(不引 Monaco/CodeMirror)。\n// v-model:value 绑 JSON 文本;非法时红边框 + 原生 parse 错误提示。给「值是 JSON」的配置用。\n// 注:通用配置值是自由文本,别无脑套在所有值上——纯字符串会被判非法。仅对约定为 JSON 的字段用。\nimport { computed, ref, watch } from 'vue'\nimport { NInput, NButton, NText, NSpace } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport AppIcon from '#/components/AppIcon.vue'\n\ndefineOptions({ inheritAttrs: false })\nconst { t } = useI18n()\nconst props = defineProps<{ value?: string | null }>()\nconst emit = defineEmits<{ 'update:value': [v: string] }>()\n\nconst text = computed({ get: () => props.value ?? '', set: v => emit('update:value', v) })\nconst error = ref('')\n\nfunction check(v: string): boolean {\n if (!v.trim()) {\n error.value = ''\n return true\n }\n try {\n JSON.parse(v)\n error.value = ''\n return true\n } catch (e) {\n error.value = (e as Error).message\n return false\n }\n}\nfunction format() {\n try {\n text.value = JSON.stringify(JSON.parse(text.value), null, 2)\n error.value = ''\n } catch (e) {\n error.value = (e as Error).message\n }\n}\nwatch(text, check, { immediate: true })\n// 父表单可调用做提交前校验。\ndefineExpose({ valid: () => check(text.value) })\n</script>\n\n<template>\n <n-space vertical :size=\"4\" style=\"width: 100%\">\n <n-input\n v-model:value=\"text\"\n type=\"textarea\"\n :autosize=\"{ minRows: 4, maxRows: 16 }\"\n :status=\"error ? 'error' : undefined\"\n spellcheck=\"false\"\n v-bind=\"$attrs\"\n />\n <n-space justify=\"space-between\" align=\"center\" :wrap=\"false\">\n <n-text v-if=\"error\" type=\"error\" style=\"font-size: 12px\">{{ error }}</n-text>\n <span v-else />\n <n-button size=\"tiny\" tertiary @click=\"format\">\n <template #icon><AppIcon icon=\"ph:brackets-curly\" :size=\"14\" /></template>\n {{ t('common.format') }}\n </n-button>\n </n-space>\n </n-space>\n</template>\n"],"names":["t","useI18n","props","__props","emit","__emit","text","computed","v","error","ref","check","e","format","watch","__expose","_createBlock","_unref","NSpace","_createVNode","_mergeProps","$event","$attrs","NText","_createElementBlock","_hoisted_1","NButton","AppIcon","_createTextVNode"],"mappings":";;;;;;;;;;;;AAUA,UAAM,EAAE,GAAAA,EAAA,IAAMC,EAAA,GACRC,IAAQC,GACRC,IAAOC,GAEPC,IAAOC,EAAS,EAAE,KAAK,MAAML,EAAM,SAAS,IAAI,KAAK,CAAAM,MAAKJ,EAAK,gBAAgBI,CAAC,GAAG,GACnFC,IAAQC,EAAI,EAAE;AAEpB,aAASC,EAAMH,GAAoB;AACjC,UAAI,CAACA,EAAE;AACL,eAAAC,EAAM,QAAQ,IACP;AAET,UAAI;AACF,oBAAK,MAAMD,CAAC,GACZC,EAAM,QAAQ,IACP;AAAA,MACT,SAASG,GAAG;AACV,eAAAH,EAAM,QAASG,EAAY,SACpB;AAAA,MACT;AAAA,IACF;AACA,aAASC,IAAS;AAChB,UAAI;AACF,QAAAP,EAAK,QAAQ,KAAK,UAAU,KAAK,MAAMA,EAAK,KAAK,GAAG,MAAM,CAAC,GAC3DG,EAAM,QAAQ;AAAA,MAChB,SAASG,GAAG;AACV,QAAAH,EAAM,QAASG,EAAY;AAAA,MAC7B;AAAA,IACF;AACA,WAAAE,EAAMR,GAAMK,GAAO,EAAE,WAAW,IAAM,GAEtCI,EAAa,EAAE,OAAO,MAAMJ,EAAML,EAAK,KAAK,GAAG,mBAI7CU,EAiBUC,EAAAC,CAAA,GAAA;AAAA,MAjBD,UAAA;AAAA,MAAU,MAAM;AAAA,MAAG,OAAA,EAAA,OAAA,OAAA;AAAA,IAAA;iBAC1B,MAOE;AAAA,QAPFC,EAOEF,MAPFG,EAOE;AAAA,UANQ,OAAOd,EAAA;AAAA,mDAAAA,EAAI,QAAAe;AAAA,UACnB,MAAK;AAAA,UACJ,UAAU,EAAA,SAAA,GAAA,SAAA,GAAA;AAAA,UACV,QAAQZ,EAAA,QAAK,UAAa;AAAA,UAC3B,YAAW;AAAA,QAAA,GACHa,EAAAA,MAAM,GAAA,MAAA,IAAA,CAAA,SAAA,QAAA,CAAA;AAAA,QAEhBH,EAOUF,EAAAC,CAAA,GAAA;AAAA,UAPD,SAAQ;AAAA,UAAgB,OAAM;AAAA,UAAU,MAAM;AAAA,QAAA;qBACrD,MAA8E;AAAA,YAAhET,EAAA,cAAdO,EAA8EC,EAAAM,CAAA,GAAA;AAAA;cAAzD,MAAK;AAAA,cAAQ,OAAA,EAAA,aAAA,OAAA;AAAA,YAAA;yBAAwB,MAAW;AAAA,oBAARd,EAAA,KAAK,GAAA,CAAA;AAAA,cAAA;;wBAClEe,EAAe,QAAAC,CAAA;AAAA,YACfN,EAGWF,EAAAS,CAAA,GAAA;AAAA,cAHD,MAAK;AAAA,cAAO,UAAA;AAAA,cAAU,SAAOb;AAAA,YAAA;cAC1B,QAAK,MAA+C;AAAA,gBAA/CM,EAA+CQ,GAAA;AAAA,kBAAtC,MAAK;AAAA,kBAAqB,MAAM;AAAA,gBAAA;;yBAAiB,MAC1E;AAAA,gBAD0EC,EAAA,QACvEX,EAAAjB,CAAA,EAAC,eAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;;;;;;;;;"}
@@ -0,0 +1,5 @@
1
+ import f from "./index.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=index2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ value?: string | null;
3
+ };
4
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
@@ -0,0 +1,33 @@
1
+ import { defineComponent as i, computed as u, openBlock as l, createElementBlock as c, createVNode as s, unref as d } from "vue";
2
+ import { useRouter as f } from "vue-router";
3
+ import { MdPreview as k } from "md-editor-v3";
4
+ import "md-editor-v3/lib/style.css";
5
+ import { useAppStore as h } from "../../stores/app.js";
6
+ import { setupMarkdown as v } from "../../lib/markdown.js";
7
+ import { handleMarkdownLinkClick as _ } from "../../lib/markdownLinks.js";
8
+ const A = /* @__PURE__ */ i({
9
+ __name: "MarkdownView",
10
+ props: {
11
+ value: {}
12
+ },
13
+ setup(r) {
14
+ v();
15
+ const t = r, n = h(), m = f(), p = u(() => n.isDark ? "dark" : "light");
16
+ function a(e) {
17
+ _(e, (o) => m.push(o));
18
+ }
19
+ return (e, o) => (l(), c("div", { onClick: a }, [
20
+ s(d(k), {
21
+ "model-value": t.value ?? "",
22
+ theme: p.value,
23
+ "no-katex": "",
24
+ "no-mermaid": "",
25
+ "no-highlight": ""
26
+ }, null, 8, ["model-value", "theme"])
27
+ ]));
28
+ }
29
+ });
30
+ export {
31
+ A as default
32
+ };
33
+ //# sourceMappingURL=MarkdownView.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownView.vue.js","sources":["../../../src/components/MarkdownEditor/MarkdownView.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 只读渲染 Markdown(MdPreview,较 MdEditor 轻)。跟随应用明暗主题。通知详情/列表展示用。\n// XSS 过滤由 setup 首行的 setupMarkdown() 兜底(#/lib/markdown)—— MdPreview 默认会渲染正文里的内联 HTML,\n// 必须过滤。no-* 关掉会从 unpkg 懒加载的扩展,气隙下零触网。\n// 正文里的链接在容器上做一次 click 委托(#/lib/markdownLinks):站内相对路径走 vue-router 不整页刷新,\n// http(s) 外链新标签打开;Ctrl/Cmd + 点击仍交给浏览器。\nimport { computed } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { MdPreview } from 'md-editor-v3'\nimport 'md-editor-v3/lib/style.css'\nimport { useAppStore } from '#/stores/app'\nimport { setupMarkdown } from '#/lib/markdown'\nimport { handleMarkdownLinkClick } from '#/lib/markdownLinks'\n\n// 与编辑器同理:全局配置在组件里挂,别把 md-editor-v3 拖进首屏 chunk。setupMarkdown 幂等。\nsetupMarkdown()\n\nconst props = defineProps<{ value?: string | null }>()\nconst app = useAppStore()\nconst router = useRouter()\nconst theme = computed(() => (app.isDark ? 'dark' : 'light'))\n\nfunction onClick(ev: MouseEvent) {\n handleMarkdownLinkClick(ev, to => router.push(to))\n}\n</script>\n\n<template>\n <div @click=\"onClick\">\n <MdPreview :model-value=\"props.value ?? ''\" :theme=\"theme\" no-katex no-mermaid no-highlight />\n </div>\n</template>\n"],"names":["setupMarkdown","props","__props","app","useAppStore","router","useRouter","theme","computed","onClick","ev","handleMarkdownLinkClick","to","_createElementBlock","_createVNode","_unref","MdPreview"],"mappings":";;;;;;;;;;;;;AAeA,IAAAA,EAAA;AAEA,UAAMC,IAAQC,GACRC,IAAMC,EAAA,GACNC,IAASC,EAAA,GACTC,IAAQC,EAAS,MAAOL,EAAI,SAAS,SAAS,OAAQ;AAE5D,aAASM,EAAQC,GAAgB;AAC/B,MAAAC,EAAwBD,GAAI,CAAAE,MAAMP,EAAO,KAAKO,CAAE,CAAC;AAAA,IACnD;2BAIEC,EAEM,OAAA,EAFA,SAAAJ,KAAc;AAAA,MAClBK,EAA8FC,EAAAC,CAAA,GAAA;AAAA,QAAlF,eAAaf,EAAM,SAAK;AAAA,QAAS,OAAOM,EAAA;AAAA,QAAO,YAAA;AAAA,QAAS,cAAA;AAAA,QAAW,gBAAA;AAAA,MAAA;;;;"}
@@ -0,0 +1,5 @@
1
+ import f from "./MarkdownView.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=MarkdownView2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownView2.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,10 @@
1
+ type __VLS_Props = {
2
+ value?: string | null;
3
+ };
4
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
5
+ "update:value": (v: string) => any;
6
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
7
+ "onUpdate:value"?: ((v: string) => any) | undefined;
8
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
@@ -0,0 +1,35 @@
1
+ import { defineComponent as c, computed as n, openBlock as f, createBlock as v, unref as g } from "vue";
2
+ import { MdEditor as h } from "md-editor-v3";
3
+ import "md-editor-v3/lib/style.css";
4
+ import { useAppStore as k } from "../../stores/app.js";
5
+ import { setupMarkdown as x } from "../../lib/markdown.js";
6
+ import { fileApi as U } from "../../api/index.js";
7
+ const M = /* @__PURE__ */ c({
8
+ __name: "index",
9
+ props: {
10
+ value: {}
11
+ },
12
+ emits: ["update:value"],
13
+ setup(p, { emit: r }) {
14
+ x();
15
+ const l = p, i = r, u = k(), m = n({ get: () => l.value ?? "", set: (e) => i("update:value", e) }), s = n(() => u.isDark ? "dark" : "light");
16
+ async function d(e, o) {
17
+ const t = await Promise.all(e.map((a) => U.upload(a)));
18
+ o(t.map((a) => a.viewUrl ?? ""));
19
+ }
20
+ return (e, o) => (f(), v(g(h), {
21
+ modelValue: m.value,
22
+ "onUpdate:modelValue": o[0] || (o[0] = (t) => m.value = t),
23
+ theme: s.value,
24
+ "no-katex": "",
25
+ "no-mermaid": "",
26
+ "no-highlight": "",
27
+ "no-prettier": "",
28
+ onOnUploadImg: d
29
+ }, null, 8, ["modelValue", "theme"]));
30
+ }
31
+ });
32
+ export {
33
+ M as default
34
+ };
35
+ //# sourceMappingURL=index.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.vue.js","sources":["../../../src/components/MarkdownEditor/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 通知公告 Markdown 编辑器:封 md-editor-v3,跟随应用明暗主题。存 Markdown 源文本 —— 注意 Markdown\n// **天然放行内联 HTML**,不等于无 XSS 面;渲染安全由本文件 setup 首行 setupMarkdown() 挂的 XSSPlugin 兜底\n//(见 #/lib/markdown)。no-* 关掉会从 unpkg 懒加载的扩展(见 lib/markdown),气隙下零触网。\nimport { computed } from 'vue'\nimport { MdEditor } from 'md-editor-v3'\nimport 'md-editor-v3/lib/style.css'\nimport { useAppStore } from '#/stores/app'\nimport { setupMarkdown } from '#/lib/markdown'\nimport { fileApi } from '#/api'\n\n// 在这里(而不是启动入口 createSmartAdmin)挂全局配置:放入口会把 md-editor-v3 + js-xss 整份拖进首屏 chunk。\n// setupMarkdown 幂等,编辑器/只读视图谁先挂载都行。\nsetupMarkdown()\n\nconst props = defineProps<{ value?: string | null }>()\nconst emit = defineEmits<{ 'update:value': [v: string] }>()\nconst app = useAppStore()\n\nconst text = computed({ get: () => props.value ?? '', set: v => emit('update:value', v) })\nconst theme = computed(() => (app.isDark ? 'dark' : 'light'))\n\n// 图片插的是后端签发的**签名直链**(viewUrl),不是 storagePath —— 后端默认不静态托管上传目录\n//(那等于鉴权绕过),storagePath 当 src 必然是坏链。viewUrl 匿名可取但不可伪造,<img> 直接能加载。\nasync function onUploadImg(files: File[], callback: (urls: string[]) => void) {\n const outs = await Promise.all(files.map(f => fileApi.upload(f)))\n callback(outs.map(o => o.viewUrl ?? ''))\n}\n</script>\n\n<template>\n <MdEditor\n v-model=\"text\"\n :theme=\"theme\"\n no-katex\n no-mermaid\n no-highlight\n no-prettier\n @on-upload-img=\"onUploadImg\"\n />\n</template>\n"],"names":["setupMarkdown","props","__props","emit","__emit","app","useAppStore","text","computed","v","theme","onUploadImg","files","callback","outs","f","fileApi","o","_createBlock","_unref","MdEditor","$event"],"mappings":";;;;;;;;;;;;;AAaA,IAAAA,EAAA;AAEA,UAAMC,IAAQC,GACRC,IAAOC,GACPC,IAAMC,EAAA,GAENC,IAAOC,EAAS,EAAE,KAAK,MAAMP,EAAM,SAAS,IAAI,KAAK,CAAAQ,MAAKN,EAAK,gBAAgBM,CAAC,GAAG,GACnFC,IAAQF,EAAS,MAAOH,EAAI,SAAS,SAAS,OAAQ;AAI5D,mBAAeM,EAAYC,GAAeC,GAAoC;AAC5E,YAAMC,IAAO,MAAM,QAAQ,IAAIF,EAAM,IAAI,CAAAG,MAAKC,EAAQ,OAAOD,CAAC,CAAC,CAAC;AAChE,MAAAF,EAASC,EAAK,IAAI,CAAAG,MAAKA,EAAE,WAAW,EAAE,CAAC;AAAA,IACzC;2BAIEC,EAQEC,EAAAC,CAAA,GAAA;AAAA,kBAPSb,EAAA;AAAA,oDAAAA,EAAI,QAAAc;AAAA,MACZ,OAAOX,EAAA;AAAA,MACR,YAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,eAAA;AAAA,MACC,eAAeC;AAAA,IAAA;;;"}
@@ -0,0 +1,5 @@
1
+ import f from "./index.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=index2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,10 @@
1
+ type __VLS_ModelProps = {
2
+ 'show'?: boolean;
3
+ };
4
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
5
+ "update:show": (value: boolean) => any;
6
+ }, string, import('vue').PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
7
+ "onUpdate:show"?: ((value: boolean) => any) | undefined;
8
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import o from "./MenuSearch2.vue.js";
2
+ /* empty css */
3
+ import r from "../_virtual/_plugin-vue_export-helper.js";
4
+ const f = /* @__PURE__ */ r(o, [["__scopeId", "data-v-7f4fa2eb"]]);
5
+ export {
6
+ f as default
7
+ };
8
+ //# sourceMappingURL=MenuSearch.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuSearch.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,121 @@
1
+ import { defineComponent as E, useModel as B, ref as v, computed as H, watch as y, nextTick as S, openBlock as i, createBlock as d, unref as s, withCtx as M, createElementVNode as p, createVNode as m, createElementBlock as w, Fragment as T, renderList as U, normalizeClass as z, createCommentVNode as F, toDisplayString as C } from "vue";
2
+ import { useRouter as I } from "vue-router";
3
+ import { NModal as K, NInput as R, NScrollbar as V, NEmpty as $ } from "naive-ui";
4
+ import { Icon as q } from "@iconify/vue";
5
+ import A from "./AppIcon.vue.js";
6
+ import { onKeyStroke as f } from "@vueuse/core";
7
+ import { useI18n as P } from "vue-i18n";
8
+ import { useMenuFlat as j } from "../composables/useMenuFlat.js";
9
+ import { translateMenuTitle as O } from "../locales/menuTitle.js";
10
+ import { isHttpUrl as G, isFullscreenPath as J } from "../utils/url.js";
11
+ const Q = { class: "palette" }, W = { class: "search" }, X = {
12
+ key: 0,
13
+ class: "list"
14
+ }, Y = ["onClick", "onMouseenter"], Z = ["innerHTML"], ee = { class: "ipath" }, te = { class: "hint" }, fe = /* @__PURE__ */ E({
15
+ __name: "MenuSearch",
16
+ props: {
17
+ show: { type: Boolean, default: !1 },
18
+ showModifiers: {}
19
+ },
20
+ emits: ["update:show"],
21
+ setup(L) {
22
+ const n = B(L, "show"), x = I(), { t: h } = P(), N = j(), u = v(""), r = v(0), _ = v();
23
+ function b(e) {
24
+ return O(e.title);
25
+ }
26
+ const c = H(() => {
27
+ const e = N.value.map((t) => ({ ...t, display: b(t) })), o = u.value.trim().toLowerCase();
28
+ return o ? e.filter((t) => t.display.toLowerCase().includes(o) || t.path.toLowerCase().includes(o)) : e;
29
+ });
30
+ y(c, () => r.value = 0), y(n, (e) => {
31
+ e && (u.value = "", r.value = 0, S(() => {
32
+ var o;
33
+ return (o = _.value) == null ? void 0 : o.focus();
34
+ }));
35
+ });
36
+ function g(e) {
37
+ e && (G(e.path) || J(e.path) ? window.open(e.path, "_blank", "noopener,noreferrer") : x.push(e.path)), n.value = !1;
38
+ }
39
+ function k(e) {
40
+ return e.replace(
41
+ /[&<>"]/g,
42
+ (o) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;" })[o] ?? o
43
+ );
44
+ }
45
+ function D(e) {
46
+ const o = u.value.trim(), t = k(e);
47
+ if (!o) return t;
48
+ const l = k(o), a = t.toLowerCase().indexOf(l.toLowerCase());
49
+ return a === -1 ? t : t.slice(0, a) + "<mark>" + t.slice(a, a + l.length) + "</mark>" + t.slice(a + l.length);
50
+ }
51
+ return f("k", (e) => {
52
+ (e.ctrlKey || e.metaKey) && (e.preventDefault(), n.value = !n.value);
53
+ }), f("ArrowDown", (e) => {
54
+ n.value && (e.preventDefault(), r.value = Math.min(r.value + 1, c.value.length - 1));
55
+ }), f("ArrowUp", (e) => {
56
+ n.value && (e.preventDefault(), r.value = Math.max(r.value - 1, 0));
57
+ }), f("Enter", (e) => {
58
+ n.value && (e.preventDefault(), g(c.value[r.value]));
59
+ }), (e, o) => (i(), d(s(K), {
60
+ show: n.value,
61
+ "onUpdate:show": o[1] || (o[1] = (t) => n.value = t),
62
+ "transform-origin": "center"
63
+ }, {
64
+ default: M(() => [
65
+ p("div", Q, [
66
+ p("div", W, [
67
+ m(s(q), {
68
+ icon: "ph:magnifying-glass",
69
+ width: 18,
70
+ class: "sicon"
71
+ }),
72
+ m(s(R), {
73
+ ref_key: "inputRef",
74
+ ref: _,
75
+ value: u.value,
76
+ "onUpdate:value": o[0] || (o[0] = (t) => u.value = t),
77
+ placeholder: s(h)("settings.searchPlaceholder"),
78
+ bordered: !1,
79
+ size: "large"
80
+ }, null, 8, ["value", "placeholder"])
81
+ ]),
82
+ m(s(V), { style: { "max-height": "52vh" } }, {
83
+ default: M(() => [
84
+ c.value.length ? (i(), w("div", X, [
85
+ (i(!0), w(T, null, U(c.value, (t, l) => (i(), w("div", {
86
+ key: t.path,
87
+ class: z(["item", { active: l === r.value }]),
88
+ onClick: (a) => g(t),
89
+ onMouseenter: (a) => r.value = l
90
+ }, [
91
+ t.icon ? (i(), d(A, {
92
+ key: 0,
93
+ icon: t.icon,
94
+ size: 18,
95
+ class: "iicon"
96
+ }, null, 8, ["icon"])) : F("", !0),
97
+ p("span", {
98
+ class: "ititle",
99
+ innerHTML: D(t.display)
100
+ }, null, 8, Z),
101
+ p("span", ee, C(t.breadcrumb.join(" / ")), 1)
102
+ ], 42, Y))), 128))
103
+ ])) : (i(), d(s($), {
104
+ key: 1,
105
+ description: s(h)("settings.searchEmpty"),
106
+ class: "empty"
107
+ }, null, 8, ["description"]))
108
+ ]),
109
+ _: 1
110
+ }),
111
+ p("div", te, C(s(h)("settings.searchHint")), 1)
112
+ ])
113
+ ]),
114
+ _: 1
115
+ }, 8, ["show"]));
116
+ }
117
+ });
118
+ export {
119
+ fe as default
120
+ };
121
+ //# sourceMappingURL=MenuSearch2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuSearch2.vue.js","sources":["../../src/components/MenuSearch.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { NModal, NInput, NScrollbar, NEmpty } from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport AppIcon from '#/components/AppIcon.vue'\nimport { onKeyStroke } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n'\nimport { useMenuFlat, type MenuLeaf } from '#/composables/useMenuFlat'\nimport { translateMenuTitle } from '#/locales/menuTitle'\nimport { isFullscreenPath, isHttpUrl } from '#/utils/url'\n\ntype Hit = MenuLeaf & { display: string }\n\nconst show = defineModel<boolean>('show', { default: false })\nconst router = useRouter()\nconst { t } = useI18n()\nconst leaves = useMenuFlat()\n\nconst q = ref('')\nconst cursor = ref(0)\nconst inputRef = ref<InstanceType<typeof NInput>>()\n\n// 标题翻译走单源(locales/menuTitle):侧栏 / 面包屑 / 多标签 / 浏览器标题必须同一条规则。\nfunction label(item: MenuLeaf) {\n return translateMenuTitle(item.title)\n}\n\nconst results = computed<Hit[]>(() => {\n const list: Hit[] = leaves.value.map(l => ({ ...l, display: label(l) }))\n const kw = q.value.trim().toLowerCase()\n if (!kw) return list\n return list.filter(l => l.display.toLowerCase().includes(kw) || l.path.toLowerCase().includes(kw))\n})\n\nwatch(results, () => (cursor.value = 0))\nwatch(show, v => {\n if (v) {\n q.value = ''\n cursor.value = 0\n nextTick(() => inputRef.value?.focus())\n }\n})\n\nfunction go(item?: Hit) {\n if (item) {\n // 外链与站内整屏页(/fullscreen/*,如大屏看板)一律新标签打开,与侧栏点击行为一致\n if (isHttpUrl(item.path) || isFullscreenPath(item.path))\n window.open(item.path, '_blank', 'noopener,noreferrer')\n else router.push(item.path)\n }\n show.value = false\n}\n\n// esc/highlight 产物走模板 v-html:必须先转义原文、再插 <mark>,顺序颠倒即 XSS。\nfunction esc(s: string) {\n return s.replace(\n /[&<>\"]/g,\n c => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' })[c] ?? c,\n )\n}\nfunction highlight(text: string) {\n const kw = q.value.trim()\n const safe = esc(text)\n if (!kw) return safe\n const k = esc(kw)\n const i = safe.toLowerCase().indexOf(k.toLowerCase())\n if (i === -1) return safe\n return (\n safe.slice(0, i) + '<mark>' + safe.slice(i, i + k.length) + '</mark>' + safe.slice(i + k.length)\n )\n}\n\n// 全局热键 Ctrl/Cmd+K 开关面板\nonKeyStroke('k', e => {\n if (e.ctrlKey || e.metaKey) {\n e.preventDefault()\n show.value = !show.value\n }\n})\nonKeyStroke('ArrowDown', e => {\n if (!show.value) return\n e.preventDefault()\n cursor.value = Math.min(cursor.value + 1, results.value.length - 1)\n})\nonKeyStroke('ArrowUp', e => {\n if (!show.value) return\n e.preventDefault()\n cursor.value = Math.max(cursor.value - 1, 0)\n})\nonKeyStroke('Enter', e => {\n if (!show.value) return\n e.preventDefault()\n go(results.value[cursor.value])\n})\n</script>\n\n<template>\n <n-modal v-model:show=\"show\" transform-origin=\"center\">\n <div class=\"palette\">\n <div class=\"search\">\n <Icon icon=\"ph:magnifying-glass\" :width=\"18\" class=\"sicon\" />\n <n-input\n ref=\"inputRef\"\n v-model:value=\"q\"\n :placeholder=\"t('settings.searchPlaceholder')\"\n :bordered=\"false\"\n size=\"large\"\n />\n </div>\n <n-scrollbar style=\"max-height: 52vh\">\n <div v-if=\"results.length\" class=\"list\">\n <div\n v-for=\"(item, i) in results\"\n :key=\"item.path\"\n class=\"item\"\n :class=\"{ active: i === cursor }\"\n @click=\"go(item)\"\n @mouseenter=\"cursor = i\"\n >\n <!-- 菜单图标来自库里配的名字,可能不在离线子集内 → 走 AppIcon 的懒加载兜底 -->\n <AppIcon v-if=\"item.icon\" :icon=\"item.icon\" :size=\"18\" class=\"iicon\" />\n <span class=\"ititle\" v-html=\"highlight(item.display)\" />\n <span class=\"ipath\">{{ item.breadcrumb.join(' / ') }}</span>\n </div>\n </div>\n <n-empty v-else :description=\"t('settings.searchEmpty')\" class=\"empty\" />\n </n-scrollbar>\n <div class=\"hint\">{{ t('settings.searchHint') }}</div>\n </div>\n </n-modal>\n</template>\n\n<style scoped>\n.palette {\n width: 560px;\n max-width: 92vw;\n background: var(--color-bg-container);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-3);\n overflow: hidden;\n}\n.search {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 16px;\n border-bottom: 1px solid var(--color-border);\n}\n.sicon {\n color: var(--color-text-tertiary);\n flex-shrink: 0;\n}\n.list {\n padding: 8px;\n}\n.item {\n display: flex;\n align-items: center;\n gap: 10px;\n height: 44px;\n padding: 0 12px;\n border-radius: var(--radius-md);\n cursor: pointer;\n color: var(--color-text-primary);\n}\n.item.active {\n background: var(--color-primary-light);\n color: var(--color-primary);\n}\n.iicon {\n flex-shrink: 0;\n}\n.ititle {\n font-size: var(--font-size-md);\n}\n.ititle :deep(mark) {\n background: transparent;\n color: var(--color-primary);\n font-weight: 600;\n}\n.ipath {\n margin-left: auto;\n font-size: var(--font-size-sm);\n color: var(--color-text-tertiary);\n}\n.empty {\n padding: 32px 0;\n}\n.hint {\n padding: 8px 16px;\n border-top: 1px solid var(--color-border);\n font-size: var(--font-size-sm);\n color: var(--color-text-tertiary);\n}\n</style>\n"],"names":["show","_useModel","__props","router","useRouter","t","useI18n","leaves","useMenuFlat","q","ref","cursor","inputRef","label","item","translateMenuTitle","results","computed","list","l","kw","watch","v","nextTick","_a","go","isHttpUrl","isFullscreenPath","esc","s","c","highlight","text","safe","k","i","onKeyStroke","_createBlock","_unref","NModal","$event","_createElementVNode","_hoisted_1","_hoisted_2","_createVNode","Icon","NInput","NScrollbar","_openBlock","_createElementBlock","_hoisted_3","_Fragment","_renderList","_normalizeClass","AppIcon","_hoisted_6","_toDisplayString","NEmpty","_hoisted_7"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ excludeSubtreeOf?: number | null;
3
+ };
4
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
@@ -0,0 +1,42 @@
1
+ import { defineComponent as c, ref as n, onMounted as s, computed as d, openBlock as f, createBlock as p, unref as m, mergeProps as v } from "vue";
2
+ import { NTreeSelect as b } from "naive-ui";
3
+ import { orgApi as h } from "../../api/index.js";
4
+ import { collectSubtreeIds as x, buildTree as g } from "../../utils/tree.js";
5
+ const O = /* @__PURE__ */ c({
6
+ inheritAttrs: !1,
7
+ __name: "index",
8
+ props: {
9
+ excludeSubtreeOf: {}
10
+ },
11
+ setup(a) {
12
+ const r = a, e = n([]), l = n(!1);
13
+ s(async () => {
14
+ l.value = !0;
15
+ try {
16
+ e.value = await h.list();
17
+ } catch {
18
+ } finally {
19
+ l.value = !1;
20
+ }
21
+ });
22
+ const u = d(() => {
23
+ const t = r.excludeSubtreeOf == null ? e.value : (() => {
24
+ const o = x(e.value, r.excludeSubtreeOf);
25
+ return e.value.filter((i) => !o.has(i.id));
26
+ })();
27
+ return g(t);
28
+ });
29
+ return (t, o) => (f(), p(m(b), v({
30
+ options: u.value,
31
+ loading: l.value,
32
+ "key-field": "id",
33
+ "label-field": "name",
34
+ "children-field": "children",
35
+ clearable: ""
36
+ }, t.$attrs), null, 16, ["options", "loading"]));
37
+ }
38
+ });
39
+ export {
40
+ O as default
41
+ };
42
+ //# sourceMappingURL=index.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.vue.js","sources":["../../../src/components/OrgTreeSelect/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 机构树下拉:onMounted 拉 orgApi.list()(平铺)→ buildTree 拼树;value/placeholder/size… 一切经 $attrs 透传 n-tree-select。\n// excludeSubtreeOf:编辑机构选上级时剪掉自身子树(防把自己挂到自己后代下成环)——用户页传 null(不剪),机构页传 editingId。\nimport { computed, onMounted, ref } from 'vue'\nimport { NTreeSelect } from 'naive-ui'\nimport { orgApi } from '#/api'\nimport { buildTree, collectSubtreeIds } from '#/utils/tree'\nimport type { SysOrg } from '#/types/api'\n\ndefineOptions({ inheritAttrs: false })\nconst props = defineProps<{ excludeSubtreeOf?: number | null }>()\n\nconst flat = ref<SysOrg[]>([])\nconst loading = ref(false)\nonMounted(async () => {\n loading.value = true\n try {\n flat.value = await orgApi.list()\n } catch {\n // 静默留空:机构是配角,不打断主流程\n } finally {\n loading.value = false\n }\n})\n\nconst options = computed(() => {\n const rows =\n props.excludeSubtreeOf == null\n ? flat.value\n : (() => {\n const excluded = collectSubtreeIds(flat.value, props.excludeSubtreeOf!)\n return flat.value.filter(o => !excluded.has(o.id))\n })()\n return buildTree(rows)\n})\n</script>\n\n<template>\n <n-tree-select\n :options=\"options\"\n :loading=\"loading\"\n key-field=\"id\"\n label-field=\"name\"\n children-field=\"children\"\n clearable\n v-bind=\"$attrs\"\n />\n</template>\n"],"names":["props","__props","flat","ref","loading","onMounted","orgApi","options","computed","rows","excluded","collectSubtreeIds","o","buildTree","_openBlock","_createBlock","_unref","_mergeProps","$attrs"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAQC,GAERC,IAAOC,EAAc,EAAE,GACvBC,IAAUD,EAAI,EAAK;AACzB,IAAAE,EAAU,YAAY;AACpB,MAAAD,EAAQ,QAAQ;AAChB,UAAI;AACF,QAAAF,EAAK,QAAQ,MAAMI,EAAO,KAAA;AAAA,MAC5B,QAAQ;AAAA,MAER,UAAA;AACE,QAAAF,EAAQ,QAAQ;AAAA,MAClB;AAAA,IACF,CAAC;AAED,UAAMG,IAAUC,EAAS,MAAM;AAC7B,YAAMC,IACJT,EAAM,oBAAoB,OACtBE,EAAK,SACJ,MAAM;AACL,cAAMQ,IAAWC,EAAkBT,EAAK,OAAOF,EAAM,gBAAiB;AACtE,eAAOE,EAAK,MAAM,OAAO,CAAAU,MAAK,CAACF,EAAS,IAAIE,EAAE,EAAE,CAAC;AAAA,MACnD,GAAA;AACN,aAAOC,EAAUJ,CAAI;AAAA,IACvB,CAAC;sBAICK,KAAAC,EAQEC,MARFC,EAQE;AAAA,MAPC,SAASV,EAAA;AAAA,MACT,SAASH,EAAA;AAAA,MACV,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,kBAAe;AAAA,MACf,WAAA;AAAA,IAAA,GACQc,EAAAA,MAAM,GAAA,MAAA,IAAA,CAAA,WAAA,SAAA,CAAA;AAAA;;"}
@@ -0,0 +1,5 @@
1
+ import f from "./index.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=index2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ value: string;
3
+ };
4
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import o from "./index2.vue.js";
2
+ /* empty css */
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const a = /* @__PURE__ */ t(o, [["__scopeId", "data-v-81b0f6bf"]]);
5
+ export {
6
+ a as default
7
+ };
8
+ //# sourceMappingURL=index.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}