foucui 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +43 -0
  2. package/components/QiuAffix/index.vue +186 -0
  3. package/components/QiuAlert/index.vue +208 -0
  4. package/components/QiuAnchor/context.ts +18 -0
  5. package/components/QiuAnchor/index.vue +180 -0
  6. package/components/QiuAnchorLink/index.vue +67 -0
  7. package/components/QiuApp/index.vue +9 -0
  8. package/components/QiuAutocomplete/index.vue +408 -0
  9. package/components/QiuAvatar/index.vue +140 -0
  10. package/components/QiuBacktop/index.vue +121 -0
  11. package/components/QiuBadge/api/index.ts +389 -0
  12. package/components/QiuBadge/components/BadgeImagePickerDialog.vue +243 -0
  13. package/components/QiuBadge/components/BadgeLibraryManagerDialog.vue +30 -0
  14. package/components/QiuBadge/components/BadgeLibraryPanel.vue +182 -0
  15. package/components/QiuBadge/composables/useTableHostHeight.ts +53 -0
  16. package/components/QiuBadge/index.ts +18 -0
  17. package/components/QiuBadge/shared/BadgeTemplateRenderer.vue +32 -0
  18. package/components/QiuBadge/shared/assetUrl.ts +26 -0
  19. package/components/QiuBadge/shared/badgeTemplate.ts +309 -0
  20. package/components/QiuBadge/utils/chinaAreaData.ts +44 -0
  21. package/components/QiuBadge/utils/hostRegion.ts +22 -0
  22. package/components/QiuBadge/utils/pca-code.json +1 -0
  23. package/components/QiuBadge/utils/pdfFromElement.ts +348 -0
  24. package/components/QiuBadge/views/BadgeLibraryView.vue +32 -0
  25. package/components/QiuBadge/views/BadgeManageView.vue +1364 -0
  26. package/components/QiuBadge/views/BadgeTemplateEditorView.vue +10 -0
  27. package/components/QiuBadge/views/BadgeTemplateListView.vue +229 -0
  28. package/components/QiuBadge/views/DeskLabelTemplateListView.vue +227 -0
  29. package/components/QiuBadge/views/DeskLabelView.vue +683 -0
  30. package/components/QiuBadgeDot/index.vue +87 -0
  31. package/components/QiuButton/index.vue +247 -0
  32. package/components/QiuButtonGroup/index.vue +63 -0
  33. package/components/QiuCanvasKit/QiuCanvasEditor.vue +5503 -0
  34. package/components/QiuCanvasKit/QiuCanvasRenderer.vue +348 -0
  35. package/components/QiuCanvasKit/assetUrl.ts +11 -0
  36. package/components/QiuCanvasKit/components/DataModulesPanel.vue +352 -0
  37. package/components/QiuCanvasKit/export/html.ts +132 -0
  38. package/components/QiuCanvasKit/export/pdf.ts +48 -0
  39. package/components/QiuCanvasKit/export/png.ts +50 -0
  40. package/components/QiuCanvasKit/index.ts +20 -0
  41. package/components/QiuCanvasKit/modules/badgeCompat.ts +84 -0
  42. package/components/QiuCanvasKit/modules/dataRegistry.ts +207 -0
  43. package/components/QiuCanvasKit/modules/merge.ts +71 -0
  44. package/components/QiuCanvasKit/presets/badge.ts +67 -0
  45. package/components/QiuCanvasKit/presets/banner.ts +79 -0
  46. package/components/QiuCanvasKit/types.ts +138 -0
  47. package/components/QiuCard/index.vue +104 -0
  48. package/components/QiuCarousel/context.ts +16 -0
  49. package/components/QiuCarousel/index.vue +343 -0
  50. package/components/QiuCarouselItem/index.vue +47 -0
  51. package/components/QiuCascader/index.vue +879 -0
  52. package/components/QiuCascader/types.ts +48 -0
  53. package/components/QiuCheckbox/QiuCheckboxGroup.vue +78 -0
  54. package/components/QiuCheckbox/index.vue +231 -0
  55. package/components/QiuCheckbox/types.ts +8 -0
  56. package/components/QiuCode/index.vue +64 -0
  57. package/components/QiuCol/col.scss +55 -0
  58. package/components/QiuCol/index.vue +64 -0
  59. package/components/QiuCollapse/context.ts +10 -0
  60. package/components/QiuCollapse/index.vue +70 -0
  61. package/components/QiuCollapseItem/index.vue +167 -0
  62. package/components/QiuColorField/index.vue +296 -0
  63. package/components/QiuColorPicker/README.md +118 -0
  64. package/components/QiuColorPicker/index.vue +60 -0
  65. package/components/QiuColorfulCard/index.vue +101 -0
  66. package/components/QiuCombobox/index.vue +277 -0
  67. package/components/QiuConfigProvider/index.vue +31 -0
  68. package/components/QiuContextMenu/index.vue +209 -0
  69. package/components/QiuDate/index.vue +1134 -0
  70. package/components/QiuDescriptions/context.ts +20 -0
  71. package/components/QiuDescriptions/index.vue +115 -0
  72. package/components/QiuDescriptionsItem/index.vue +103 -0
  73. package/components/QiuDialog/index.vue +828 -0
  74. package/components/QiuDigitalCard/index.vue +159 -0
  75. package/components/QiuDivider/index.vue +185 -0
  76. package/components/QiuDot/index.vue +83 -0
  77. package/components/QiuDrawer/index.vue +350 -0
  78. package/components/QiuDropdown/QiuDropdownItem.vue +74 -0
  79. package/components/QiuDropdown/QiuDropdownMenu.vue +22 -0
  80. package/components/QiuDropdown/context.ts +9 -0
  81. package/components/QiuDropdown/index.vue +189 -0
  82. package/components/QiuEmpty/index.vue +73 -0
  83. package/components/QiuForm/index.vue +172 -0
  84. package/components/QiuForm/types.ts +39 -0
  85. package/components/QiuFormItem/index.vue +276 -0
  86. package/components/QiuFullscreen/index.vue +11 -0
  87. package/components/QiuGrid/index.vue +408 -0
  88. package/components/QiuHoverCard/index.vue +192 -0
  89. package/components/QiuIcon/index.vue +117 -0
  90. package/components/QiuIconPicker/iconify.libraries.ts +182 -0
  91. package/components/QiuIconPicker/icons.catalog.ts +3072 -0
  92. package/components/QiuIconPicker/index.vue +488 -0
  93. package/components/QiuImage/index.vue +177 -0
  94. package/components/QiuInput/index.vue +328 -0
  95. package/components/QiuInputNumber/index.vue +295 -0
  96. package/components/QiuInputOtp/index.vue +190 -0
  97. package/components/QiuKbd/index.vue +57 -0
  98. package/components/QiuLayoutContainer/index.vue +50 -0
  99. package/components/QiuLinkPreview/index.vue +224 -0
  100. package/components/QiuLoading/index.ts +176 -0
  101. package/components/QiuLoading/spinner.vue +820 -0
  102. package/components/QiuLoading/types.ts +44 -0
  103. package/components/QiuMention/index.vue +299 -0
  104. package/components/QiuMenu/QiuMenuRoot.vue +241 -0
  105. package/components/QiuMenu/components/QiuMenuItem.vue +340 -0
  106. package/components/QiuMenu/components/QiuSubMenu.vue +504 -0
  107. package/components/QiuMenu/context.ts +21 -0
  108. package/components/QiuMenu/index.vue +43 -0
  109. package/components/QiuMenuNav/QiuMenuNavItem.vue +100 -0
  110. package/components/QiuMenuNav/QiuMenuNavSub.vue +120 -0
  111. package/components/QiuMenuNav/context.ts +14 -0
  112. package/components/QiuMenuNav/index.vue +148 -0
  113. package/components/QiuMsg/QiuMsgItem.vue +180 -0
  114. package/components/QiuMsg/index.ts +158 -0
  115. package/components/QiuMsg/types.ts +23 -0
  116. package/components/QiuMsgBox/index.ts +147 -0
  117. package/components/QiuNotification/QiuNotificationItem.vue +168 -0
  118. package/components/QiuNotification/index.ts +155 -0
  119. package/components/QiuNotification/types.ts +14 -0
  120. package/components/QiuPage/index.vue +12 -0
  121. package/components/QiuPageHeader/index.vue +115 -0
  122. package/components/QiuPageMain/index.vue +78 -0
  123. package/components/QiuPagination/index.vue +421 -0
  124. package/components/QiuPasswordStrength/index.vue +101 -0
  125. package/components/QiuPopconfirm/index.vue +196 -0
  126. package/components/QiuPopover/index.vue +277 -0
  127. package/components/QiuProgress/index.vue +235 -0
  128. package/components/QiuQrcode/index.vue +302 -0
  129. package/components/QiuQueryForm/components/QiuQueryFormBottomPanel.vue +13 -0
  130. package/components/QiuQueryForm/components/QiuQueryFormLeftPanel.vue +37 -0
  131. package/components/QiuQueryForm/components/QiuQueryFormRightPanel.vue +37 -0
  132. package/components/QiuQueryForm/components/QiuQueryFormTopPanel.vue +13 -0
  133. package/components/QiuQueryForm/index.vue +117 -0
  134. package/components/QiuRadio/QiuRadioGroup.vue +75 -0
  135. package/components/QiuRadio/index.vue +191 -0
  136. package/components/QiuRadio/types.ts +9 -0
  137. package/components/QiuRate/index.vue +184 -0
  138. package/components/QiuRefresh/index.vue +32 -0
  139. package/components/QiuResult/index.vue +103 -0
  140. package/components/QiuRow/index.vue +60 -0
  141. package/components/QiuRow/types.ts +5 -0
  142. package/components/QiuScrollbar/index.vue +107 -0
  143. package/components/QiuSearchBar/index.vue +154 -0
  144. package/components/QiuSegmented/index.vue +120 -0
  145. package/components/QiuSelect/QiuOption.vue +93 -0
  146. package/components/QiuSelect/index.vue +452 -0
  147. package/components/QiuSelect/types.ts +15 -0
  148. package/components/QiuSkeleton/index.vue +78 -0
  149. package/components/QiuSlider/index.vue +266 -0
  150. package/components/QiuSpace/index.vue +95 -0
  151. package/components/QiuSparkline/index.vue +92 -0
  152. package/components/QiuStatistic/index.vue +4 -0
  153. package/components/QiuStatistics/index.vue +123 -0
  154. package/components/QiuStep/index.vue +220 -0
  155. package/components/QiuSteps/context.ts +25 -0
  156. package/components/QiuSteps/index.vue +84 -0
  157. package/components/QiuSwitch/index.vue +145 -0
  158. package/components/QiuTabBar/index.vue +218 -0
  159. package/components/QiuTabBar/types.ts +19 -0
  160. package/components/QiuTabPane/index.vue +82 -0
  161. package/components/QiuTable/columns.ts +16 -0
  162. package/components/QiuTable/export.ts +102 -0
  163. package/components/QiuTable/index.ts +24 -0
  164. package/components/QiuTable/index.vue +3503 -0
  165. package/components/QiuTable/registry.ts +75 -0
  166. package/components/QiuTable/styles/table.scss +1230 -0
  167. package/components/QiuTable/types.ts +413 -0
  168. package/components/QiuTable/useArea.ts +202 -0
  169. package/components/QiuTable/useColumns.ts +325 -0
  170. package/components/QiuTable/useEdit.ts +136 -0
  171. package/components/QiuTable/useExtras.ts +115 -0
  172. package/components/QiuTable/useHistory.ts +77 -0
  173. package/components/QiuTable/useMerge.ts +105 -0
  174. package/components/QiuTable/useResize.ts +86 -0
  175. package/components/QiuTable/useScrollSync.ts +152 -0
  176. package/components/QiuTable/useVirtual.ts +97 -0
  177. package/components/QiuTable/utils.ts +165 -0
  178. package/components/QiuTableColumn/index.vue +101 -0
  179. package/components/QiuTag/index.vue +143 -0
  180. package/components/QiuText/index.vue +99 -0
  181. package/components/QiuTime/index.vue +548 -0
  182. package/components/QiuTimeAgo/index.vue +103 -0
  183. package/components/QiuTimeline/index.vue +54 -0
  184. package/components/QiuTimelineItem/index.vue +140 -0
  185. package/components/QiuTips/index.vue +323 -0
  186. package/components/QiuTooltip/index.vue +237 -0
  187. package/components/QiuTransfer/index.vue +277 -0
  188. package/components/QiuTree/QiuTreeNode.vue +146 -0
  189. package/components/QiuTree/index.vue +143 -0
  190. package/components/QiuTree/types.ts +30 -0
  191. package/components/QiuTreeSelect/index.vue +259 -0
  192. package/components/QiuTrend/index.vue +92 -0
  193. package/components/QiuUpload/index.vue +628 -0
  194. package/components/QiuUploadCrop/index.vue +1267 -0
  195. package/components/QiuWatermark/index.vue +121 -0
  196. package/components/useBodyScrollLock.ts +28 -0
  197. package/dist/components/QiuAnchor/context.d.ts +15 -0
  198. package/dist/components/QiuAnchorLink/index.vue.d.ts +23 -0
  199. package/dist/components/QiuBadge/api/index.d.ts +110 -0
  200. package/dist/components/QiuBadge/components/BadgeImagePickerDialog.vue.d.ts +16 -0
  201. package/dist/components/QiuBadge/components/BadgeLibraryManagerDialog.vue.d.ts +9 -0
  202. package/dist/components/QiuBadge/components/BadgeLibraryPanel.vue.d.ts +5 -0
  203. package/dist/components/QiuBadge/composables/useTableHostHeight.d.ts +7 -0
  204. package/dist/components/QiuBadge/index.d.ts +18 -0
  205. package/dist/components/QiuBadge/shared/BadgeTemplateRenderer.vue.d.ts +14 -0
  206. package/dist/components/QiuBadge/shared/assetUrl.d.ts +1 -0
  207. package/dist/components/QiuBadge/shared/badgeTemplate.d.ts +132 -0
  208. package/dist/components/QiuBadge/utils/chinaAreaData.d.ts +9 -0
  209. package/dist/components/QiuBadge/utils/hostRegion.d.ts +3 -0
  210. package/dist/components/QiuBadge/utils/pca-code.json.d.ts +3 -0
  211. package/dist/components/QiuBadge/utils/pdfFromElement.d.ts +14 -0
  212. package/dist/components/QiuBadge/views/BadgeLibraryView.vue.d.ts +2 -0
  213. package/dist/components/QiuBadge/views/BadgeManageView.vue.d.ts +7 -0
  214. package/dist/components/QiuBadge/views/BadgeTemplateListView.vue.d.ts +4 -0
  215. package/dist/components/QiuBadge/views/DeskLabelTemplateListView.vue.d.ts +4 -0
  216. package/dist/components/QiuBadge/views/DeskLabelView.vue.d.ts +4 -0
  217. package/dist/components/QiuButton/index.vue.d.ts +52 -0
  218. package/dist/components/QiuCanvasKit/QiuCanvasEditor.vue.d.ts +24 -0
  219. package/dist/components/QiuCanvasKit/QiuCanvasRenderer.vue.d.ts +13 -0
  220. package/dist/components/QiuCanvasKit/assetUrl.d.ts +7 -0
  221. package/dist/components/QiuCanvasKit/components/DataModulesPanel.vue.d.ts +23 -0
  222. package/dist/components/QiuCanvasKit/export/html.d.ts +12 -0
  223. package/dist/components/QiuCanvasKit/export/pdf.d.ts +9 -0
  224. package/dist/components/QiuCanvasKit/export/png.d.ts +8 -0
  225. package/dist/components/QiuCanvasKit/index.d.ts +19 -0
  226. package/dist/components/QiuCanvasKit/modules/badgeCompat.d.ts +8 -0
  227. package/dist/components/QiuCanvasKit/modules/dataRegistry.d.ts +23 -0
  228. package/dist/components/QiuCanvasKit/modules/merge.d.ts +12 -0
  229. package/dist/components/QiuCanvasKit/presets/badge.d.ts +12 -0
  230. package/dist/components/QiuCanvasKit/presets/banner.d.ts +4 -0
  231. package/dist/components/QiuCanvasKit/types.d.ts +119 -0
  232. package/dist/components/QiuCarousel/context.d.ts +13 -0
  233. package/dist/components/QiuCarouselItem/index.vue.d.ts +20 -0
  234. package/dist/components/QiuCascader/types.d.ts +25 -0
  235. package/dist/components/QiuCheckbox/QiuCheckboxGroup.vue.d.ts +33 -0
  236. package/dist/components/QiuCheckbox/index.vue.d.ts +38 -0
  237. package/dist/components/QiuCheckbox/types.d.ts +7 -0
  238. package/dist/components/QiuCode/index.vue.d.ts +15 -0
  239. package/dist/components/QiuCollapse/context.d.ts +8 -0
  240. package/dist/components/QiuCollapseItem/index.vue.d.ts +30 -0
  241. package/dist/components/QiuColorField/index.vue.d.ts +23 -0
  242. package/dist/components/QiuColorPicker/index.vue.d.ts +21 -0
  243. package/dist/components/QiuCombobox/index.vue.d.ts +54 -0
  244. package/dist/components/QiuContextMenu/index.vue.d.ts +46 -0
  245. package/dist/components/QiuDescriptions/context.d.ts +16 -0
  246. package/dist/components/QiuDescriptionsItem/index.vue.d.ts +25 -0
  247. package/dist/components/QiuDigitalCard/index.vue.d.ts +45 -0
  248. package/dist/components/QiuDropdown/QiuDropdownItem.vue.d.ts +30 -0
  249. package/dist/components/QiuDropdown/QiuDropdownMenu.vue.d.ts +17 -0
  250. package/dist/components/QiuDropdown/context.d.ts +7 -0
  251. package/dist/components/QiuDropdown/index.vue.d.ts +46 -0
  252. package/dist/components/QiuForm/types.d.ts +31 -0
  253. package/dist/components/QiuHoverCard/index.vue.d.ts +44 -0
  254. package/dist/components/QiuIcon/index.vue.d.ts +18 -0
  255. package/dist/components/QiuIconPicker/iconify.libraries.d.ts +18 -0
  256. package/dist/components/QiuIconPicker/icons.catalog.d.ts +12 -0
  257. package/dist/components/QiuInput/index.vue.d.ts +71 -0
  258. package/dist/components/QiuInputNumber/index.vue.d.ts +38 -0
  259. package/dist/components/QiuInputOtp/index.vue.d.ts +28 -0
  260. package/dist/components/QiuKbd/index.vue.d.ts +22 -0
  261. package/dist/components/QiuLayoutContainer/index.vue.d.ts +29 -0
  262. package/dist/components/QiuLinkPreview/index.vue.d.ts +43 -0
  263. package/dist/components/QiuLoading/index.d.ts +26 -0
  264. package/dist/components/QiuLoading/spinner.vue.d.ts +14 -0
  265. package/dist/components/QiuLoading/types.d.ts +2 -0
  266. package/dist/components/QiuMention/index.vue.d.ts +35 -0
  267. package/dist/components/QiuMenu/QiuMenuRoot.vue.d.ts +36 -0
  268. package/dist/components/QiuMenu/context.d.ts +19 -0
  269. package/dist/components/QiuMenuNav/QiuMenuNavItem.vue.d.ts +26 -0
  270. package/dist/components/QiuMenuNav/QiuMenuNavSub.vue.d.ts +25 -0
  271. package/dist/components/QiuMenuNav/context.d.ts +12 -0
  272. package/dist/components/QiuMenuNav/index.vue.d.ts +35 -0
  273. package/dist/components/QiuMsg/QiuMsgItem.vue.d.ts +15 -0
  274. package/dist/components/QiuMsg/index.d.ts +30 -0
  275. package/dist/components/QiuMsg/types.d.ts +12 -0
  276. package/dist/components/QiuMsgBox/index.d.ts +14 -0
  277. package/dist/components/QiuNotification/QiuNotificationItem.vue.d.ts +16 -0
  278. package/dist/components/QiuNotification/index.d.ts +30 -0
  279. package/dist/components/QiuNotification/types.d.ts +12 -0
  280. package/dist/components/QiuPageMain/index.vue.d.ts +27 -0
  281. package/dist/components/QiuPagination/index.vue.d.ts +44 -0
  282. package/dist/components/QiuPasswordStrength/index.vue.d.ts +9 -0
  283. package/dist/components/QiuQrcode/index.vue.d.ts +20 -0
  284. package/dist/components/QiuRadio/QiuRadioGroup.vue.d.ts +33 -0
  285. package/dist/components/QiuRadio/types.d.ts +8 -0
  286. package/dist/components/QiuRow/types.d.ts +4 -0
  287. package/dist/components/QiuSearchBar/index.vue.d.ts +38 -0
  288. package/dist/components/QiuSelect/QiuOption.vue.d.ts +24 -0
  289. package/dist/components/QiuSelect/index.vue.d.ts +52 -0
  290. package/dist/components/QiuSelect/types.d.ts +13 -0
  291. package/dist/components/QiuSparkline/index.vue.d.ts +18 -0
  292. package/dist/components/QiuStep/index.vue.d.ts +31 -0
  293. package/dist/components/QiuSteps/context.d.ts +21 -0
  294. package/dist/components/QiuSwitch/index.vue.d.ts +25 -0
  295. package/dist/components/QiuTabBar/index.vue.d.ts +32 -0
  296. package/dist/components/QiuTabBar/types.d.ts +16 -0
  297. package/dist/components/QiuTabPane/index.vue.d.ts +25 -0
  298. package/dist/components/QiuTable/columns.d.ts +1 -0
  299. package/dist/components/QiuTable/export.d.ts +18 -0
  300. package/dist/components/QiuTable/index.d.ts +3 -0
  301. package/dist/components/QiuTable/index.vue.d.ts +322 -0
  302. package/dist/components/QiuTable/registry.d.ts +39 -0
  303. package/dist/components/QiuTable/types.d.ts +353 -0
  304. package/dist/components/QiuTable/useArea.d.ts +51 -0
  305. package/dist/components/QiuTable/useColumns.d.ts +67 -0
  306. package/dist/components/QiuTable/useEdit.d.ts +36 -0
  307. package/dist/components/QiuTable/useExtras.d.ts +38 -0
  308. package/dist/components/QiuTable/useHistory.d.ts +44 -0
  309. package/dist/components/QiuTable/useMerge.d.ts +28 -0
  310. package/dist/components/QiuTable/useResize.d.ts +19 -0
  311. package/dist/components/QiuTable/useScrollSync.d.ts +25 -0
  312. package/dist/components/QiuTable/useVirtual.d.ts +30 -0
  313. package/dist/components/QiuTable/utils.d.ts +54 -0
  314. package/dist/components/QiuTime/index.vue.d.ts +43 -0
  315. package/dist/components/QiuTimeAgo/index.vue.d.ts +35 -0
  316. package/dist/components/QiuTimelineItem/index.vue.d.ts +35 -0
  317. package/dist/components/QiuTooltip/index.vue.d.ts +38 -0
  318. package/dist/components/QiuTree/types.d.ts +13 -0
  319. package/dist/components/QiuTrend/index.vue.d.ts +34 -0
  320. package/dist/components/QiuUpload/index.vue.d.ts +86 -0
  321. package/dist/components/QiuUploadCrop/index.vue.d.ts +136 -0
  322. package/dist/components/useBodyScrollLock.d.ts +4 -0
  323. package/dist/foucui.css +1 -0
  324. package/dist/foucui.js +26509 -0
  325. package/dist/foucui.umd.cjs +125 -0
  326. package/dist/index.d.ts +46 -0
  327. package/dist/src/bridge/@/api/media.d.ts +7 -0
  328. package/dist/src/bridge/@/api/notice.d.ts +5 -0
  329. package/dist/src/bridge/@/config/index.d.ts +29 -0
  330. package/dist/src/bridge/@/config/media.config.d.ts +15 -0
  331. package/dist/src/bridge/@/config/security.config.d.ts +7 -0
  332. package/dist/src/bridge/@/i18n/index.d.ts +7 -0
  333. package/dist/src/bridge/@/store/modules/bing.d.ts +3 -0
  334. package/dist/src/bridge/@/store/modules/errorLog.d.ts +3 -0
  335. package/dist/src/bridge/@/store/modules/media.d.ts +4 -0
  336. package/dist/src/bridge/@/store/modules/routes.d.ts +3 -0
  337. package/dist/src/bridge/@/store/modules/settings.d.ts +3 -0
  338. package/dist/src/bridge/@/store/modules/tabs.d.ts +3 -0
  339. package/dist/src/bridge/@/store/modules/user.d.ts +3 -0
  340. package/dist/src/bridge/@/utils/convertToCamelCase.d.ts +2 -0
  341. package/dist/src/bridge/@/utils/index.d.ts +5 -0
  342. package/dist/src/bridge/@/utils/pageTitle.d.ts +1 -0
  343. package/dist/src/bridge/@/utils/routes.d.ts +11 -0
  344. package/dist/src/bridge/@/utils/validate.d.ts +13 -0
  345. package/dist/src/bridge/@qiu/plugins/shortcuts.d.ts +2 -0
  346. package/dist/src/i18n.d.ts +2 -0
  347. package/package.json +83 -0
  348. package/plugins/qiu.ts +83 -0
  349. package/plugins/shortcuts.ts +69 -0
  350. package/src/bridge/@/api/media.ts +8 -0
  351. package/src/bridge/@/api/notice.ts +5 -0
  352. package/src/bridge/@/config/index.ts +38 -0
  353. package/src/bridge/@/config/media.config.ts +37 -0
  354. package/src/bridge/@/config/security.config.ts +8 -0
  355. package/src/bridge/@/i18n/index.ts +6 -0
  356. package/src/bridge/@/store/modules/bing.ts +9 -0
  357. package/src/bridge/@/store/modules/errorLog.ts +9 -0
  358. package/src/bridge/@/store/modules/media.ts +10 -0
  359. package/src/bridge/@/store/modules/routes.ts +10 -0
  360. package/src/bridge/@/store/modules/settings.ts +9 -0
  361. package/src/bridge/@/store/modules/tabs.ts +9 -0
  362. package/src/bridge/@/store/modules/user.ts +9 -0
  363. package/src/bridge/@/utils/convertToCamelCase.ts +11 -0
  364. package/src/bridge/@/utils/index.ts +9 -0
  365. package/src/bridge/@/utils/pageTitle.ts +4 -0
  366. package/src/bridge/@/utils/routes.ts +14 -0
  367. package/src/bridge/@/utils/validate.ts +17 -0
  368. package/src/bridge/@qiu/plugins/shortcuts.ts +3 -0
  369. package/src/i18n.ts +8 -0
  370. package/src/icons/qiu-logo.svg +1 -0
  371. package/styles/dark.scss +194 -0
  372. package/styles/normalize.css +349 -0
  373. package/styles/plain.scss +423 -0
  374. package/styles/qiu-tokens.scss +40 -0
  375. package/styles/qiu.scss +1149 -0
  376. package/styles/technology.scss +452 -0
  377. package/styles/var.scss +382 -0
  378. package/styles/variables.scss +77 -0
@@ -0,0 +1,121 @@
1
+ <template>
2
+ <div ref="rootRef" class="qiu-watermark">
3
+ <div class="qiu-watermark__layer" :style="layerStyle" aria-hidden="true" />
4
+ <div class="qiu-watermark__content">
5
+ <slot />
6
+ </div>
7
+ </div>
8
+ </template>
9
+
10
+ <script lang="ts" setup>
11
+ defineOptions({ name: 'QiuWatermark' })
12
+
13
+ const props = withDefaults(
14
+ defineProps<{
15
+ content?: string | string[]
16
+ font?: {
17
+ color?: string
18
+ fontSize?: number
19
+ fontFamily?: string
20
+ fontWeight?: string | number
21
+ }
22
+ gap?: [number, number]
23
+ rotate?: number
24
+ zIndex?: number
25
+ offset?: [number, number]
26
+ }>(),
27
+ {
28
+ content: '',
29
+ font: () => ({
30
+ color: 'rgba(0,0,0,0.12)',
31
+ fontSize: 16,
32
+ fontFamily: 'sans-serif',
33
+ fontWeight: 'normal',
34
+ }),
35
+ gap: () => [100, 100],
36
+ rotate: -22,
37
+ zIndex: 9,
38
+ offset: () => [0, 0],
39
+ }
40
+ )
41
+
42
+ const rootRef = ref<HTMLElement | null>(null)
43
+ const bgUrl = ref('')
44
+
45
+ const lines = computed(() => {
46
+ if (Array.isArray(props.content)) return props.content
47
+ return props.content ? [props.content] : []
48
+ })
49
+
50
+ const buildWatermark = () => {
51
+ if (!lines.value.length) {
52
+ bgUrl.value = ''
53
+ return
54
+ }
55
+
56
+ const [gapX, gapY] = props.gap
57
+ const [offsetX, offsetY] = props.offset
58
+ const font = props.font
59
+ const canvas = document.createElement('canvas')
60
+ const ctx = canvas.getContext('2d')
61
+ if (!ctx) return
62
+
63
+ const fontSize = font.fontSize ?? 16
64
+ const fontFamily = font.fontFamily ?? 'sans-serif'
65
+ const fontWeight = font.fontWeight ?? 'normal'
66
+ ctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`
67
+
68
+ const maxWidth = Math.max(...lines.value.map((l) => ctx.measureText(l).width))
69
+ const lineHeight = fontSize * 1.4
70
+ const textHeight = lines.value.length * lineHeight
71
+
72
+ canvas.width = gapX + maxWidth + 20
73
+ canvas.height = gapY + textHeight + 20
74
+
75
+ ctx.clearRect(0, 0, canvas.width, canvas.height)
76
+ ctx.translate(canvas.width / 2 + offsetX, canvas.height / 2 + offsetY)
77
+ ctx.rotate((props.rotate * Math.PI) / 180)
78
+ ctx.fillStyle = font.color ?? 'rgba(0,0,0,0.12)'
79
+ ctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`
80
+ ctx.textAlign = 'center'
81
+ ctx.textBaseline = 'middle'
82
+
83
+ const startY = -((lines.value.length - 1) * lineHeight) / 2
84
+ lines.value.forEach((line, i) => {
85
+ ctx.fillText(line, 0, startY + i * lineHeight)
86
+ })
87
+
88
+ bgUrl.value = canvas.toDataURL()
89
+ }
90
+
91
+ const layerStyle = computed(() => ({
92
+ zIndex: String(props.zIndex),
93
+ backgroundImage: bgUrl.value ? `url(${bgUrl.value})` : undefined,
94
+ }))
95
+
96
+ watch(
97
+ () => [props.content, props.gap, props.rotate, props.font, props.offset],
98
+ () => buildWatermark(),
99
+ { deep: true, immediate: true }
100
+ )
101
+
102
+ onMounted(() => buildWatermark())
103
+ </script>
104
+
105
+ <style lang="scss" scoped>
106
+ .qiu-watermark {
107
+ position: relative;
108
+
109
+ &__layer {
110
+ position: absolute;
111
+ inset: 0;
112
+ pointer-events: none;
113
+ background-repeat: repeat;
114
+ }
115
+
116
+ &__content {
117
+ position: relative;
118
+ z-index: 1;
119
+ }
120
+ }
121
+ </style>
@@ -0,0 +1,28 @@
1
+ /**
2
+ * 共享的 body 滚动锁:使用引用计数,保证 Drawer / Dialog 等多实例同时打开时,
3
+ * 仅当最后一个实例关闭后才真正释放 body 滚动,避免「关闭一个弹层背景就滚动」的问题。
4
+ * 同时仅在 body 之前没有自定义 overflow 时才接管,关闭时恢复原值。
5
+ */
6
+ let lockCount = 0
7
+ let prevOverflow = ''
8
+
9
+ export function useBodyScrollLock() {
10
+ const lock = () => {
11
+ if (lockCount === 0) {
12
+ prevOverflow = document.body.style.overflow
13
+ document.body.style.overflow = 'hidden'
14
+ }
15
+ lockCount += 1
16
+ }
17
+
18
+ const unlock = () => {
19
+ if (lockCount === 0) return
20
+ lockCount -= 1
21
+ if (lockCount === 0) {
22
+ document.body.style.overflow = prevOverflow
23
+ prevOverflow = ''
24
+ }
25
+ }
26
+
27
+ return { lock, unlock }
28
+ }
@@ -0,0 +1,15 @@
1
+ import { InjectionKey, Ref } from 'vue';
2
+ export interface QiuAnchorLinkRecord {
3
+ href: string;
4
+ title: string;
5
+ el: HTMLElement | null;
6
+ }
7
+ export interface QiuAnchorContext {
8
+ offset: Ref<number>;
9
+ bound: Ref<string>;
10
+ activeLink: Ref<string>;
11
+ registerLink: (link: QiuAnchorLinkRecord) => void;
12
+ unregisterLink: (href: string) => void;
13
+ scrollToLink: (href: string) => void;
14
+ }
15
+ export declare const QIU_ANCHOR_KEY: InjectionKey<QiuAnchorContext>;
@@ -0,0 +1,23 @@
1
+ type __VLS_Props = {
2
+ href: string;
3
+ title?: string;
4
+ };
5
+ declare function __VLS_template(): {
6
+ attrs: Partial<{}>;
7
+ slots: {
8
+ default?(_: {}): any;
9
+ };
10
+ refs: {};
11
+ rootEl: HTMLAnchorElement;
12
+ };
13
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
14
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
+ title: string;
16
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLAnchorElement>;
17
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
18
+ export default _default;
19
+ type __VLS_WithTemplateSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -0,0 +1,110 @@
1
+ import { BadgeTemplateDoc } from '../shared/badgeTemplate';
2
+ type ApiOk<T> = {
3
+ code: number;
4
+ data: T;
5
+ msg?: string;
6
+ };
7
+ export interface BadgeTemplateRow {
8
+ id: number;
9
+ competition_id: number;
10
+ name: string;
11
+ width_mm: number;
12
+ height_mm: number;
13
+ is_default: boolean;
14
+ update_time: string;
15
+ doc?: BadgeTemplateDoc | null;
16
+ default_test_json?: Record<string, unknown> | null;
17
+ kind?: 'badge' | 'desk';
18
+ }
19
+ export interface BadgeLibraryImage {
20
+ id: number;
21
+ url: string;
22
+ name: string;
23
+ create_time: string;
24
+ }
25
+ /** —— competition / template —— */
26
+ export declare const getCompetitions: (params?: any) => Promise<ApiOk<{
27
+ list: any[];
28
+ total: number;
29
+ page: number;
30
+ page_size: number;
31
+ }>>;
32
+ export declare const getCompetition: (id: number) => Promise<ApiOk<any>>;
33
+ export declare const listBadgeTemplates: (competitionId: number) => Promise<ApiOk<{
34
+ list: BadgeTemplateRow[];
35
+ }>>;
36
+ export declare const createBadgeTemplate: (competitionId: number, data: {
37
+ name: string;
38
+ }) => Promise<ApiOk<BadgeTemplateRow>>;
39
+ export declare const getBadgeTemplateOne: (competitionId: number, templateId: number) => Promise<ApiOk<any>>;
40
+ export declare const getBadgeTemplate: (competitionId: number) => Promise<ApiOk<any>>;
41
+ export declare const putBadgeTemplateOne: (competitionId: number, templateId: number, data: Record<string, unknown>) => Promise<ApiOk<any>>;
42
+ export declare const deleteBadgeTemplate: (competitionId: number, templateId: number) => Promise<ApiOk<boolean>>;
43
+ export declare const setDefaultBadgeTemplate: (competitionId: number, templateId: number) => Promise<ApiOk<boolean>>;
44
+ /** desk label templates */
45
+ export declare const listDeskLabelTemplates: (competitionId: number) => Promise<ApiOk<{
46
+ list: BadgeTemplateRow[];
47
+ }>>;
48
+ export declare const createDeskLabelTemplate: (competitionId: number, data: {
49
+ name: string;
50
+ }) => Promise<ApiOk<BadgeTemplateRow>>;
51
+ export declare const getDeskLabelTemplateOne: (competitionId: number, templateId: number) => Promise<ApiOk<any>>;
52
+ export declare const getDeskLabelTemplate: (competitionId: number) => Promise<ApiOk<any>>;
53
+ export declare const putDeskLabelTemplateOne: (competitionId: number, templateId: number, data: Record<string, unknown>) => Promise<ApiOk<any>>;
54
+ export declare const deleteDeskLabelTemplate: (competitionId: number, templateId: number) => Promise<ApiOk<boolean>>;
55
+ export declare const setDefaultDeskLabelTemplate: (competitionId: number, templateId: number) => Promise<ApiOk<boolean>>;
56
+ /** —— upload / library —— */
57
+ export declare const getBadgeLibraryImages: (params?: {
58
+ page?: number;
59
+ page_size?: number;
60
+ }) => Promise<ApiOk<{
61
+ list: BadgeLibraryImage[];
62
+ total: number;
63
+ page: number;
64
+ page_size: number;
65
+ }>>;
66
+ export declare const uploadBadgeLibraryImage: (file: File) => Promise<ApiOk<BadgeLibraryImage>>;
67
+ export declare const deleteBadgeLibraryImage: (id: number) => Promise<ApiOk<boolean>>;
68
+ /** —— student / print data stubs —— */
69
+ export declare const getBadgeSchools: (_competitionId: number) => Promise<ApiOk<{
70
+ id: number;
71
+ name: string;
72
+ short_name: string;
73
+ }[]>>;
74
+ export declare const getBadges: (_competitionId: number, _params?: any) => Promise<ApiOk<{
75
+ list: {
76
+ id: number;
77
+ student_name: string;
78
+ competition_no: string;
79
+ school_name: string;
80
+ age_group: string;
81
+ competition_room: string;
82
+ seat_no: string;
83
+ }[];
84
+ total: number;
85
+ }>>;
86
+ export declare const getBadgesExportData: (competitionId: number, params?: any) => Promise<ApiOk<{
87
+ list: {
88
+ id: number;
89
+ student_name: string;
90
+ competition_no: string;
91
+ school_name: string;
92
+ age_group: string;
93
+ competition_room: string;
94
+ seat_no: string;
95
+ }[];
96
+ total: number;
97
+ }>>;
98
+ export declare const getStudents: (_competitionId: number, _params?: any) => Promise<ApiOk<{
99
+ list: any[];
100
+ total: number;
101
+ }>>;
102
+ export declare const finalizeSeatAssignmentLock: (_competitionId: number, _data?: any) => Promise<ApiOk<boolean>>;
103
+ export declare const getDeskLabels: (_competitionId: number) => Promise<ApiOk<{
104
+ id: number;
105
+ competition_room: string;
106
+ seat_no: string;
107
+ student_name: string;
108
+ school_name: string;
109
+ }[]>>;
110
+ export {};
@@ -0,0 +1,16 @@
1
+ type __VLS_Props = {
2
+ modelValue: boolean;
3
+ defaultTab?: 'lib' | 'up';
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
6
+ "update:modelValue": (args_0: boolean) => any;
7
+ pick: (args_0: string) => any;
8
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ "onUpdate:modelValue"?: (args_0: boolean) => any;
10
+ onPick?: (args_0: string) => any;
11
+ }>, {
12
+ defaultTab: "lib" | "up";
13
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
14
+ fileInputRef: HTMLInputElement;
15
+ }, any>;
16
+ export default _default;
@@ -0,0 +1,9 @@
1
+ type __VLS_Props = {
2
+ modelValue: boolean;
3
+ };
4
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
5
+ "update:modelValue": (args_0: boolean) => any;
6
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
7
+ "onUpdate:modelValue"?: (args_0: boolean) => any;
8
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
9
+ export default _default;
@@ -0,0 +1,5 @@
1
+ declare function load(): Promise<void>;
2
+ declare const _default: import('vue').DefineComponent<{}, {
3
+ load: typeof load;
4
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
5
+ export default _default;
@@ -0,0 +1,7 @@
1
+ /** 测量容器高度供 qiu-table 的 `height` 使用,使表格占满剩余区域。
2
+ * 使用 ResizeObserver(宿主为表格外层 div,非表格根节点)+ window resize,避免仅靠窗口尺寸遗漏侧栏折叠等变化。 */
3
+ export declare function useTableHostHeight(minHeight?: number): {
4
+ hostRef: globalThis.Ref<HTMLElement, HTMLElement>;
5
+ tableHeight: globalThis.Ref<number, number>;
6
+ recalcTableHeight: () => void;
7
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * QiuBadge — 证件 / 桌签制作插件
3
+ * 源码迁自 zhihui web-admin + shared,先落地再调。
4
+ */
5
+ /** 编辑器真源在 QiuCanvasKit;此入口保持兼容 */
6
+ export { default as QiuBadgeTemplateEditor } from '../QiuCanvasKit/QiuCanvasEditor.vue';
7
+ export { default as QiuBadgeTemplateList } from './views/BadgeTemplateListView.vue';
8
+ export { default as QiuBadgeManage } from './views/BadgeManageView.vue';
9
+ export { default as QiuBadgeLibrary } from './views/BadgeLibraryView.vue';
10
+ export { default as QiuDeskLabel } from './views/DeskLabelView.vue';
11
+ export { default as QiuDeskLabelTemplateList } from './views/DeskLabelTemplateListView.vue';
12
+ export { default as QiuBadgeTemplateRenderer } from './shared/BadgeTemplateRenderer.vue';
13
+ export { default as QiuBadgeImagePickerDialog } from './components/BadgeImagePickerDialog.vue';
14
+ export { default as QiuBadgeLibraryManagerDialog } from './components/BadgeLibraryManagerDialog.vue';
15
+ export { default as QiuBadgeLibraryPanel } from './components/BadgeLibraryPanel.vue';
16
+ export * from './shared/badgeTemplate';
17
+ export * from './shared/assetUrl';
18
+ export * as QiuBadgeApi from './api/index';
@@ -0,0 +1,14 @@
1
+ import { BadgeTemplateDoc } from './badgeTemplate';
2
+ import { MergeContext } from '../../QiuCanvasKit/types';
3
+ type __VLS_Props = {
4
+ doc: BadgeTemplateDoc | null;
5
+ mergeData?: MergeContext | Record<string, string>;
6
+ screenScale?: number;
7
+ enableLinks?: boolean;
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
+ mergeData: MergeContext | Record<string, string>;
11
+ screenScale: number;
12
+ enableLinks: boolean;
13
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
14
+ export default _default;
@@ -0,0 +1 @@
1
+ export declare function resolveAssetUrl(src: string | null | undefined): string;
@@ -0,0 +1,132 @@
1
+ /** 与后端 BadgeData 及 allowedBadgePlaceholderKeys 一致 */
2
+ export declare const BADGE_PLACEHOLDER_KEYS: readonly ["competition_name", "student_name", "competition_no", "school_name", "school_short_name", "age_group", "competition_room", "seat_no", "floor", "teacher_name", "date", "session", "enroll_teacher_name", "teacher_phone", "signup_teacher_name", "signup_teacher_phone", "signup_teacher_department", "signup_teacher_position", "signup_teacher_id_card", "signup_teacher_email", "signup_teacher_username", "venue_name", "venue_address", "competition_daily_start", "competition_daily_end"];
3
+ export type BadgePlaceholderKey = (typeof BADGE_PLACEHOLDER_KEYS)[number];
4
+ export declare const BADGE_PLACEHOLDER_LABELS: Record<string, string>;
5
+ export interface BadgeTemplateCanvas {
6
+ widthMm: number;
7
+ heightMm: number;
8
+ background?: string;
9
+ backgroundImage?: string;
10
+ /** 是否绘制画布边框(编辑/预览/打印一致) */
11
+ showBorder?: boolean;
12
+ borderColor?: string;
13
+ /** 边框宽度(mm) */
14
+ borderWidthMm?: number;
15
+ }
16
+ export interface BadgeCanvasRegion {
17
+ id: string;
18
+ name: string;
19
+ xMm: number;
20
+ yMm: number;
21
+ wMm: number;
22
+ hMm: number;
23
+ background?: string;
24
+ backgroundImage?: string;
25
+ }
26
+ /** 元素跳转链接(Banner 热区 / 按钮形态) */
27
+ export type BadgeElementLink = {
28
+ href: string;
29
+ target?: '_blank' | '_self';
30
+ };
31
+ export interface BadgeTextElement {
32
+ id: string;
33
+ type: 'text';
34
+ zIndex: number;
35
+ xMm: number;
36
+ yMm: number;
37
+ wMm: number;
38
+ hMm: number;
39
+ rotation?: number;
40
+ flipX?: boolean;
41
+ flipY?: boolean;
42
+ groupId?: string;
43
+ regionId?: string;
44
+ align?: string;
45
+ text: string;
46
+ fontSize: number;
47
+ fontFamily: string;
48
+ color: string;
49
+ textDirection?: 'horizontal' | 'vertical';
50
+ link?: BadgeElementLink;
51
+ }
52
+ export interface BadgeImageElement {
53
+ id: string;
54
+ type: 'image' | 'seal';
55
+ zIndex: number;
56
+ xMm: number;
57
+ yMm: number;
58
+ wMm: number;
59
+ hMm: number;
60
+ rotation?: number;
61
+ flipX?: boolean;
62
+ flipY?: boolean;
63
+ groupId?: string;
64
+ regionId?: string;
65
+ align?: string;
66
+ src: string;
67
+ clipboardSource?: 'clipboard';
68
+ clipboardUploadState?: 'pending' | 'uploaded';
69
+ clipboardUploadKey?: string;
70
+ clipboardImageId?: number;
71
+ clipboardOrigName?: string;
72
+ link?: BadgeElementLink;
73
+ }
74
+ export interface BadgeShapeElement {
75
+ id: string;
76
+ type: 'shape';
77
+ shape: 'rect' | 'circle' | 'triangle' | 'line' | 'polygon' | 'trapezoid';
78
+ zIndex: number;
79
+ xMm: number;
80
+ yMm: number;
81
+ wMm: number;
82
+ hMm: number;
83
+ rotation?: number;
84
+ flipX?: boolean;
85
+ flipY?: boolean;
86
+ groupId?: string;
87
+ regionId?: string;
88
+ background?: string;
89
+ lockAspectRatio?: boolean;
90
+ showStroke?: boolean;
91
+ strokeColor?: string;
92
+ strokeWidthMm?: number;
93
+ opacity?: number;
94
+ polygonSides?: number;
95
+ link?: BadgeElementLink;
96
+ }
97
+ export type BadgeElement = BadgeTextElement | BadgeImageElement | BadgeShapeElement;
98
+ export interface BadgeGuideLine {
99
+ id: string;
100
+ axis: 'horizontal' | 'vertical';
101
+ offsetMm: number;
102
+ }
103
+ export interface BadgeTemplateDoc {
104
+ version: number;
105
+ canvas: BadgeTemplateCanvas;
106
+ elements: BadgeElement[];
107
+ guides?: BadgeGuideLine[];
108
+ regions?: BadgeCanvasRegion[];
109
+ /** 可选:画布级数据模块(与 QiuCanvasKit 对齐) */
110
+ dataModules?: Array<{
111
+ id: string;
112
+ label: string;
113
+ fields: Array<{
114
+ key: string;
115
+ label: string;
116
+ type?: string;
117
+ }>;
118
+ sample?: Record<string, string>;
119
+ builtin?: boolean;
120
+ enabled?: boolean;
121
+ }>;
122
+ }
123
+ export declare function mergeBadgeText(text: string, data: Record<string, string>): string;
124
+ /** 将接口返回的一条证件(参赛证/工作证等)记录转为占位符合并表 */
125
+ export declare function flattenBadgeForMerge(b: Record<string, unknown>, competitionNameFallback?: string): Record<string, string>;
126
+ export declare function sortBadgeElements(els: BadgeElement[]): BadgeElement[];
127
+ /** 桌面贴模板可用占位符:与参赛证保持一致,实际值由 DeskLabels 接口尽量补齐 */
128
+ export declare const DESK_LABEL_PLACEHOLDER_KEYS: readonly ["competition_name", "student_name", "competition_no", "school_name", "school_short_name", "age_group", "competition_room", "seat_no", "floor", "teacher_name", "date", "session", "enroll_teacher_name", "teacher_phone", "signup_teacher_name", "signup_teacher_phone", "signup_teacher_department", "signup_teacher_position", "signup_teacher_id_card", "signup_teacher_email", "signup_teacher_username", "venue_name", "venue_address", "competition_daily_start", "competition_daily_end"];
129
+ export type DeskLabelPlaceholderKey = BadgePlaceholderKey;
130
+ export declare const DESK_LABEL_PLACEHOLDER_LABELS: Record<string, string>;
131
+ /** 单条桌面贴数据 → 与证件模板相同的合并表(未用字段留空,便于复用 BadgeTemplateRenderer) */
132
+ export declare function flattenDeskLabelForMerge(row: Record<string, unknown>, competitionNameFallback?: string): Record<string, string>;
@@ -0,0 +1,9 @@
1
+ export interface ChinaAreaNode {
2
+ value: string;
3
+ label: string;
4
+ children?: ChinaAreaNode[];
5
+ }
6
+ /** 与 element-china-area-data 的 regionData 同形 */
7
+ export declare const regionData: ChinaAreaNode[];
8
+ /** code → 中文名 */
9
+ export declare const codeToText: Record<string, string>;
@@ -0,0 +1,3 @@
1
+ /** host_region 存省市区 code 的 JSON 数组字符串,如 ["110000","110100","110105"];旧数据为纯文本则原样展示 */
2
+ export declare function parseHostRegionCodes(raw: unknown): string[];
3
+ export declare function formatHostRegionLabel(raw: unknown, codeToText: Record<string, string>): string;