@ebiz/designer-components 0.0.18-beta.3 → 0.0.18-beta.31

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 (720) hide show
  1. package/README.md +29 -29
  2. package/dist/index.mjs +67580 -101546
  3. package/dist/lowcode-components.css +1 -0
  4. package/package.json +40 -40
  5. package/src/App.vue +26 -26
  6. package/src/apiService/SIMPLE_DATA_SERVICE.md +284 -284
  7. package/src/apiService/mockDataService.js +116 -0
  8. package/src/apiService/simpleDataService.js +278 -276
  9. package/src/assets/base.css +86 -86
  10. package/src/assets/logo.svg +1 -1
  11. package/src/assets/styles/charts/main.less +29 -29
  12. package/src/components/Button.vue +103 -102
  13. package/src/components/DataContainer.vue +39 -39
  14. package/src/components/EbizAvatar.vue +115 -115
  15. package/src/components/EbizCheckbox.vue +93 -93
  16. package/src/components/EbizCheckboxGroup.vue +69 -69
  17. package/src/components/EbizDivider.vue +96 -96
  18. package/src/components/EbizEmployeeInfo.vue +138 -138
  19. package/src/components/EbizFileUpload.vue +201 -201
  20. package/src/components/EbizMindmap/README.md +8 -8
  21. package/src/components/EbizMindmap/components/GridNode.vue +102 -102
  22. package/src/components/EbizMindmap/components/node.vue +91 -91
  23. package/src/components/EbizMindmap/components/vueNode.vue +63 -63
  24. package/src/components/EbizMindmap/index.vue +382 -382
  25. package/src/components/EbizOkrTree.vue +99 -99
  26. package/src/components/EbizPageHeader.vue +88 -0
  27. package/src/components/EbizPagination.vue +162 -162
  28. package/src/components/EbizRadio.vue +86 -86
  29. package/src/components/EbizRadioGroup.vue +83 -83
  30. package/src/components/EbizRemoteSelect.vue +224 -166
  31. package/src/components/EbizRouteBreadcrumb.vue +46 -46
  32. package/src/components/EbizSpace.vue +100 -100
  33. package/src/components/EbizStatistic.vue +149 -149
  34. package/src/components/EbizStatsCard.vue +113 -113
  35. package/src/components/EbizSwiper.vue +113 -113
  36. package/src/components/EbizSwiperItem.vue +13 -13
  37. package/src/components/EbizSwitch.vue +85 -85
  38. package/src/components/EbizTabHeader.vue +145 -149
  39. package/src/components/EbizTabPanel.vue +22 -22
  40. package/src/components/EbizTable.vue +466 -0
  41. package/src/components/EbizTableColumn.vue +117 -0
  42. package/src/components/EbizTableSort.vue +181 -0
  43. package/src/components/EbizTabs.vue +142 -142
  44. package/src/components/EbizTitle.vue +91 -92
  45. package/src/components/Form.vue +27 -27
  46. package/src/components/Home.vue +7 -7
  47. package/src/components/MyComponent.vue +39 -39
  48. package/src/components/Table.vue +45 -45
  49. package/src/components/TdesignAlert.vue +115 -115
  50. package/src/components/TdesignButton.vue +129 -129
  51. package/src/components/TdesignCalendar/index.vue +145 -142
  52. package/src/components/TdesignCard.vue +195 -195
  53. package/src/components/TdesignCol.vue +101 -101
  54. package/src/components/TdesignCollapse.vue +142 -142
  55. package/src/components/TdesignCollapsePanel.vue +79 -79
  56. package/src/components/TdesignDatePicker.vue +124 -124
  57. package/src/components/TdesignDialog.vue +226 -0
  58. package/src/components/TdesignForm.vue +133 -133
  59. package/src/components/TdesignFormItem.vue +105 -105
  60. package/src/components/TdesignGrid.vue +55 -55
  61. package/src/components/TdesignIcon.vue +67 -67
  62. package/src/components/TdesignImage.vue +162 -162
  63. package/src/components/TdesignImageViewer.vue +200 -200
  64. package/src/components/TdesignInput.vue +242 -242
  65. package/src/components/TdesignSelect.vue +444 -444
  66. package/src/components/TdesignTag.vue +117 -117
  67. package/src/components/TdesignTextarea.vue +142 -142
  68. package/src/components/TdesignTimeline.vue +58 -58
  69. package/src/components/TdesignTimelineItem.vue +71 -71
  70. package/src/components/TdesignUpload.vue +758 -789
  71. package/src/components/TdesignWatermark.vue +107 -107
  72. package/src/components/charts/chart.js +47 -47
  73. package/src/components/charts/components/AssembleBubbleChart/BaseOption.js +50 -50
  74. package/src/components/charts/components/AssembleBubbleChart/chartToken.js +16 -16
  75. package/src/components/charts/components/AssembleBubbleChart/handleOption.js +66 -66
  76. package/src/components/charts/components/AssembleBubbleChart/handleRootData.js +165 -165
  77. package/src/components/charts/components/AssembleBubbleChart/handleSeriesData.js +70 -70
  78. package/src/components/charts/components/AssembleBubbleChart/index.js +65 -65
  79. package/src/components/charts/components/AutonaviMapChart/index.js +162 -162
  80. package/src/components/charts/components/BaiduMapChart/index.js +147 -147
  81. package/src/components/charts/components/BarChart/barChartOption.js +75 -75
  82. package/src/components/charts/components/BarChart/chartToken.js +17 -17
  83. package/src/components/charts/components/BarChart/handleOptipn.js +102 -102
  84. package/src/components/charts/components/BarChart/handleSeries.js +716 -716
  85. package/src/components/charts/components/BarChart/handleVisualMap.js +48 -48
  86. package/src/components/charts/components/BarChart/index.js +151 -151
  87. package/src/components/charts/components/BaseChart/index.js +122 -122
  88. package/src/components/charts/components/BoxplotChart/chartToken.js +17 -17
  89. package/src/components/charts/components/BoxplotChart/handleOption.js +64 -64
  90. package/src/components/charts/components/BoxplotChart/handleSeries.js +149 -149
  91. package/src/components/charts/components/BoxplotChart/index.js +47 -47
  92. package/src/components/charts/components/BubbleChart/chartToken.js +17 -17
  93. package/src/components/charts/components/BubbleChart/handleData.js +33 -33
  94. package/src/components/charts/components/BubbleChart/handleOptipn.js +62 -62
  95. package/src/components/charts/components/BubbleChart/handleSeries.js +86 -86
  96. package/src/components/charts/components/BubbleChart/handleTrendLine.js +119 -119
  97. package/src/components/charts/components/BubbleChart/handleVisualMap.js +50 -50
  98. package/src/components/charts/components/BubbleChart/index.js +96 -96
  99. package/src/components/charts/components/BulletChart/bulletChartOption.js +81 -81
  100. package/src/components/charts/components/BulletChart/chartToken.js +17 -17
  101. package/src/components/charts/components/BulletChart/handleOptipn.js +74 -74
  102. package/src/components/charts/components/BulletChart/handleSeries.js +142 -142
  103. package/src/components/charts/components/BulletChart/index.js +93 -93
  104. package/src/components/charts/components/CandlestickChart/BaseOption.js +44 -44
  105. package/src/components/charts/components/CandlestickChart/chartToken.js +17 -17
  106. package/src/components/charts/components/CandlestickChart/hanleOption.js +130 -130
  107. package/src/components/charts/components/CandlestickChart/hanleSeries.js +123 -123
  108. package/src/components/charts/components/CandlestickChart/index.js +68 -68
  109. package/src/components/charts/components/CircleProcessChart/chartToken.js +17 -17
  110. package/src/components/charts/components/CircleProcessChart/handleOption.js +67 -67
  111. package/src/components/charts/components/CircleProcessChart/handleSeries.js +126 -126
  112. package/src/components/charts/components/CircleProcessChart/index.js +63 -63
  113. package/src/components/charts/components/FlowChart/Layout.js +211 -211
  114. package/src/components/charts/components/FlowChart/LineBezier.js +120 -120
  115. package/src/components/charts/components/FlowChart/LineDirect.js +42 -42
  116. package/src/components/charts/components/FlowChart/LineManager.js +278 -278
  117. package/src/components/charts/components/FlowChart/LineMode.js +43 -43
  118. package/src/components/charts/components/FlowChart/LineRound.js +335 -335
  119. package/src/components/charts/components/FlowChart/NodeManager.js +185 -185
  120. package/src/components/charts/components/FlowChart/dagre.js +8829 -8829
  121. package/src/components/charts/components/FlowChart/frameworkFn.js +37 -37
  122. package/src/components/charts/components/FlowChart/index.js +267 -267
  123. package/src/components/charts/components/FlowChart/index.less +90 -90
  124. package/src/components/charts/components/FlowChart/insert.js +40 -40
  125. package/src/components/charts/components/FlowChart/util.js +42 -42
  126. package/src/components/charts/components/FunnelChart/chartToken.js +17 -17
  127. package/src/components/charts/components/FunnelChart/handleLegend.js +44 -44
  128. package/src/components/charts/components/FunnelChart/handleSeries.js +77 -77
  129. package/src/components/charts/components/FunnelChart/index.js +43 -43
  130. package/src/components/charts/components/GanttChart/CoordinateSystem.js +358 -358
  131. package/src/components/charts/components/GanttChart/TimeLine.js +379 -379
  132. package/src/components/charts/components/GanttChart/constant.js +71 -71
  133. package/src/components/charts/components/GanttChart/index.js +51 -51
  134. package/src/components/charts/components/GanttChart/index.less +267 -267
  135. package/src/components/charts/components/GanttChart/util.js +335 -335
  136. package/src/components/charts/components/GaugeChart/BaseOption.js +22 -22
  137. package/src/components/charts/components/GaugeChart/chartToken.js +17 -17
  138. package/src/components/charts/components/GaugeChart/handleOptipn.js +22 -22
  139. package/src/components/charts/components/GaugeChart/handleSeries.js +504 -504
  140. package/src/components/charts/components/GaugeChart/index.js +53 -53
  141. package/src/components/charts/components/GraphChart/index.js +34 -34
  142. package/src/components/charts/components/GraphTreeChart/BaseOption.js +42 -42
  143. package/src/components/charts/components/GraphTreeChart/handleData.js +118 -118
  144. package/src/components/charts/components/GraphTreeChart/handleOption.js +142 -142
  145. package/src/components/charts/components/GraphTreeChart/index.js +65 -65
  146. package/src/components/charts/components/GraphTreeChart/mixTree.js +35 -35
  147. package/src/components/charts/components/GraphTreeChart/utils.js +75 -75
  148. package/src/components/charts/components/HeatMapChart/BaseOption.js +66 -66
  149. package/src/components/charts/components/HeatMapChart/chartToken.js +17 -17
  150. package/src/components/charts/components/HeatMapChart/handleData.js +138 -138
  151. package/src/components/charts/components/HeatMapChart/handleOptipn.js +227 -227
  152. package/src/components/charts/components/HeatMapChart/handleSeries.js +82 -82
  153. package/src/components/charts/components/HeatMapChart/handleVisualMap.js +91 -91
  154. package/src/components/charts/components/HeatMapChart/index.js +70 -70
  155. package/src/components/charts/components/HillChart/baseOption.js +50 -50
  156. package/src/components/charts/components/HillChart/chartToken.js +17 -17
  157. package/src/components/charts/components/HillChart/handleOption.js +193 -193
  158. package/src/components/charts/components/HillChart/handleSeries.js +39 -39
  159. package/src/components/charts/components/HillChart/index.js +96 -96
  160. package/src/components/charts/components/HoneycombChart/NodeManager.js +172 -172
  161. package/src/components/charts/components/HoneycombChart/TipManager.js +74 -74
  162. package/src/components/charts/components/HoneycombChart/index.js +117 -117
  163. package/src/components/charts/components/HoneycombChart/index.less +48 -48
  164. package/src/components/charts/components/JadeJueChart/BaseOption.js +40 -40
  165. package/src/components/charts/components/JadeJueChart/chartToken.js +17 -17
  166. package/src/components/charts/components/JadeJueChart/handleOption.js +261 -261
  167. package/src/components/charts/components/JadeJueChart/handleSeries.js +246 -246
  168. package/src/components/charts/components/JadeJueChart/index.js +71 -71
  169. package/src/components/charts/components/JadeJueChart/labelFormatter.js +130 -130
  170. package/src/components/charts/components/LineChart/AreaChart/bottomArea.js +177 -177
  171. package/src/components/charts/components/LineChart/AreaChart/chartToken.js +17 -17
  172. package/src/components/charts/components/LineChart/AreaChart/index.js +17 -17
  173. package/src/components/charts/components/LineChart/AreaChart/topArea.js +139 -139
  174. package/src/components/charts/components/LineChart/chartToken.js +17 -17
  175. package/src/components/charts/components/LineChart/handleOptipn.js +145 -145
  176. package/src/components/charts/components/LineChart/handlePredict.js +73 -73
  177. package/src/components/charts/components/LineChart/handleSeries.js +266 -266
  178. package/src/components/charts/components/LineChart/handleVisualMap.js +137 -137
  179. package/src/components/charts/components/LineChart/index.js +133 -133
  180. package/src/components/charts/components/LiquidfillChart/chartToken.js +17 -17
  181. package/src/components/charts/components/LiquidfillChart/handleSeries.js +170 -170
  182. package/src/components/charts/components/LiquidfillChart/index.js +42 -42
  183. package/src/components/charts/components/LiquidfillChart/plugSeries.js +78 -78
  184. package/src/components/charts/components/LiquidfillChart/plugShape.js +163 -163
  185. package/src/components/charts/components/LiquidfillChart/plugView.js +537 -537
  186. package/src/components/charts/components/MilestoneChart/Layout.js +183 -183
  187. package/src/components/charts/components/MilestoneChart/Node.js +319 -319
  188. package/src/components/charts/components/MilestoneChart/assets/next.svg +7 -7
  189. package/src/components/charts/components/MilestoneChart/assets/prev.svg +7 -7
  190. package/src/components/charts/components/MilestoneChart/assets/prompt.svg +9 -9
  191. package/src/components/charts/components/MilestoneChart/index.js +108 -108
  192. package/src/components/charts/components/MilestoneChart/index.less +243 -243
  193. package/src/components/charts/components/MilestoneChart/insertDom.js +32 -32
  194. package/src/components/charts/components/MilestoneChart/insertIcon.js +24 -24
  195. package/src/components/charts/components/MilestoneChart/insertSvg.js +108 -108
  196. package/src/components/charts/components/OrganizationChart/NodeManager.js +188 -188
  197. package/src/components/charts/components/OrganizationChart/RotateManager.js +349 -349
  198. package/src/components/charts/components/OrganizationChart/index.js +124 -124
  199. package/src/components/charts/components/OrganizationChart/index.less +111 -111
  200. package/src/components/charts/components/PieChart/chartToken.js +17 -17
  201. package/src/components/charts/components/PieChart/handleLabel.js +94 -94
  202. package/src/components/charts/components/PieChart/handleMulti.js +131 -131
  203. package/src/components/charts/components/PieChart/handleSeries.js +236 -236
  204. package/src/components/charts/components/PieChart/index.js +58 -58
  205. package/src/components/charts/components/PolarBarChart/chartToken.js +17 -17
  206. package/src/components/charts/components/PolarBarChart/handleOption.js +102 -102
  207. package/src/components/charts/components/PolarBarChart/handleSeries.js +127 -127
  208. package/src/components/charts/components/PolarBarChart/index.js +61 -61
  209. package/src/components/charts/components/ProcessChart/BaseOption.js +295 -295
  210. package/src/components/charts/components/ProcessChart/chartToken.js +17 -17
  211. package/src/components/charts/components/ProcessChart/handleData.js +156 -156
  212. package/src/components/charts/components/ProcessChart/handleOption.js +212 -212
  213. package/src/components/charts/components/ProcessChart/handleSeries.js +369 -369
  214. package/src/components/charts/components/ProcessChart/index.js +76 -76
  215. package/src/components/charts/components/RadarChart/BaseOption.js +248 -248
  216. package/src/components/charts/components/RadarChart/GradientRadar/index.js +421 -421
  217. package/src/components/charts/components/RadarChart/chartToken.js +17 -17
  218. package/src/components/charts/components/RadarChart/handleOptipn.js +316 -316
  219. package/src/components/charts/components/RadarChart/handleSeries.js +120 -120
  220. package/src/components/charts/components/RadarChart/index.js +77 -77
  221. package/src/components/charts/components/RegionChart/chartToken.js +17 -17
  222. package/src/components/charts/components/RegionChart/handleOption.js +29 -29
  223. package/src/components/charts/components/RegionChart/index.js +48 -48
  224. package/src/components/charts/components/RiverChart/Belt.js +181 -181
  225. package/src/components/charts/components/RiverChart/Manager.js +173 -173
  226. package/src/components/charts/components/RiverChart/Node.js +425 -425
  227. package/src/components/charts/components/RiverChart/baseOption.js +51 -51
  228. package/src/components/charts/components/RiverChart/index.js +79 -79
  229. package/src/components/charts/components/RiverChart/index.less +41 -41
  230. package/src/components/charts/components/RiverChart/util.js +160 -160
  231. package/src/components/charts/components/SankeyChart/BaseOption.js +74 -74
  232. package/src/components/charts/components/SankeyChart/chartToken.js +17 -17
  233. package/src/components/charts/components/SankeyChart/handleOption.js +257 -257
  234. package/src/components/charts/components/SankeyChart/index.js +111 -111
  235. package/src/components/charts/components/SankeyChart/tooltip.js +52 -52
  236. package/src/components/charts/components/ScatterChart/chartToken.js +17 -17
  237. package/src/components/charts/components/ScatterChart/handleMarkPoint.js +74 -74
  238. package/src/components/charts/components/ScatterChart/handleOptipn.js +66 -66
  239. package/src/components/charts/components/ScatterChart/handleSeries.js +48 -48
  240. package/src/components/charts/components/ScatterChart/index.js +60 -60
  241. package/src/components/charts/components/SnowFlakeChart/BranchManager.js +323 -323
  242. package/src/components/charts/components/SnowFlakeChart/CommonConstant.js +110 -110
  243. package/src/components/charts/components/SnowFlakeChart/LeafManager.js +75 -75
  244. package/src/components/charts/components/SnowFlakeChart/NodeManager.js +239 -239
  245. package/src/components/charts/components/SnowFlakeChart/TagManager.js +79 -79
  246. package/src/components/charts/components/SnowFlakeChart/assets/down.svg +7 -7
  247. package/src/components/charts/components/SnowFlakeChart/assets/image2L.svg +6 -6
  248. package/src/components/charts/components/SnowFlakeChart/assets/image2R.svg +6 -6
  249. package/src/components/charts/components/SnowFlakeChart/assets/image5L.svg +6 -6
  250. package/src/components/charts/components/SnowFlakeChart/assets/image5R.svg +6 -6
  251. package/src/components/charts/components/SnowFlakeChart/assets/outerBorder.svg +24 -24
  252. package/src/components/charts/components/SnowFlakeChart/assets/outerBorderOverAll.svg +18 -18
  253. package/src/components/charts/components/SnowFlakeChart/assets/up.svg +7 -7
  254. package/src/components/charts/components/SnowFlakeChart/assets/wirelessL.svg +6 -6
  255. package/src/components/charts/components/SnowFlakeChart/assets/wirelessR.svg +6 -6
  256. package/src/components/charts/components/SnowFlakeChart/defaultOption.js +284 -284
  257. package/src/components/charts/components/SnowFlakeChart/index.js +407 -407
  258. package/src/components/charts/components/SnowFlakeChart/index.less +502 -502
  259. package/src/components/charts/components/SnowFlakeChart/line/LineArrow.js +61 -61
  260. package/src/components/charts/components/SnowFlakeChart/line/LineDashed.js +28 -28
  261. package/src/components/charts/components/SnowFlakeChart/line/LineDotted.js +28 -28
  262. package/src/components/charts/components/SnowFlakeChart/line/LineStraight.js +27 -27
  263. package/src/components/charts/components/SnowFlakeChart/line/index.js +201 -201
  264. package/src/components/charts/components/SnowFlakeChart/util.js +430 -430
  265. package/src/components/charts/components/SunburstChart/chartToken.js +17 -17
  266. package/src/components/charts/components/SunburstChart/handleSeries.js +48 -48
  267. package/src/components/charts/components/SunburstChart/index.js +40 -40
  268. package/src/components/charts/components/TerraceChart/defaultGradient.js +115 -115
  269. package/src/components/charts/components/TerraceChart/defaultPath.js +29 -29
  270. package/src/components/charts/components/TerraceChart/index.js +276 -276
  271. package/src/components/charts/components/TerraceChart/index.less +170 -170
  272. package/src/components/charts/components/TerraceChart/insert.js +35 -35
  273. package/src/components/charts/components/TerraceChart/loading.js +33 -33
  274. package/src/components/charts/components/TimelineChart/chartToken.js +16 -16
  275. package/src/components/charts/components/TimelineChart/index.js +108 -108
  276. package/src/components/charts/components/TimelineChart/index.less +151 -151
  277. package/src/components/charts/components/TimelineChart/insertDom.js +45 -45
  278. package/src/components/charts/components/TimelineChart/timeline.js +460 -460
  279. package/src/components/charts/components/TreeChart/chartToken.js +17 -17
  280. package/src/components/charts/components/TreeChart/handleOptipn.js +101 -101
  281. package/src/components/charts/components/TreeChart/handleSeries.js +148 -148
  282. package/src/components/charts/components/TreeChart/index.js +50 -50
  283. package/src/components/charts/components/TreeMapChart/handleOptipn.js +57 -57
  284. package/src/components/charts/components/TreeMapChart/handleSeries.js +56 -56
  285. package/src/components/charts/components/TreeMapChart/handleVisualMap.js +31 -31
  286. package/src/components/charts/components/TreeMapChart/index.js +56 -56
  287. package/src/components/charts/components/WaveChart/chartToken.js +17 -17
  288. package/src/components/charts/components/WaveChart/index.js +418 -418
  289. package/src/components/charts/components/WaveChart/index.less +76 -76
  290. package/src/components/charts/components/WaveChart/insert.js +38 -38
  291. package/src/components/charts/components/WaveChart/loading.js +33 -33
  292. package/src/components/charts/components/WordCloudChart/BaseOption.js +19 -19
  293. package/src/components/charts/components/WordCloudChart/chartToken.js +17 -17
  294. package/src/components/charts/components/WordCloudChart/handleOptipn.js +20 -20
  295. package/src/components/charts/components/WordCloudChart/handleSeries.js +106 -106
  296. package/src/components/charts/components/WordCloudChart/index.js +67 -67
  297. package/src/components/charts/core.js +385 -385
  298. package/src/components/charts/feature/adaptive/index.js +45 -45
  299. package/src/components/charts/feature/adaptive/series/AssembleBubbleChart.js +21 -21
  300. package/src/components/charts/feature/adaptive/series/BarChart.js +26 -26
  301. package/src/components/charts/feature/adaptive/series/BoxplotChart.js +25 -25
  302. package/src/components/charts/feature/adaptive/series/BubbleChart.js +25 -25
  303. package/src/components/charts/feature/adaptive/series/BulletChart.js +26 -26
  304. package/src/components/charts/feature/adaptive/series/CircleProcessChart.js +24 -24
  305. package/src/components/charts/feature/adaptive/series/FunnelChart.js +21 -21
  306. package/src/components/charts/feature/adaptive/series/HeatMapChart.js +25 -25
  307. package/src/components/charts/feature/adaptive/series/JadeJueChart.js +23 -23
  308. package/src/components/charts/feature/adaptive/series/LineChart.js +25 -25
  309. package/src/components/charts/feature/adaptive/series/LiquidfillChart.js +25 -25
  310. package/src/components/charts/feature/adaptive/series/PieChart.js +24 -24
  311. package/src/components/charts/feature/adaptive/series/PolarBarChart.js +21 -21
  312. package/src/components/charts/feature/adaptive/series/ScatterChart.js +25 -25
  313. package/src/components/charts/feature/adaptive/series/SunburstChart.js +24 -24
  314. package/src/components/charts/feature/adaptive/utils/axis.js +25 -25
  315. package/src/components/charts/feature/adaptive/utils/label.js +29 -29
  316. package/src/components/charts/feature/adaptive/utils/legend.js +29 -29
  317. package/src/components/charts/feature/adaptive/utils/title.js +29 -29
  318. package/src/components/charts/feature/adaptive/utils/tooltip.js +29 -29
  319. package/src/components/charts/feature/axistip/index.js +116 -116
  320. package/src/components/charts/feature/card/chartToken.js +17 -17
  321. package/src/components/charts/feature/card/index.js +225 -225
  322. package/src/components/charts/feature/card/index.less +166 -166
  323. package/src/components/charts/feature/drag/index.js +353 -353
  324. package/src/components/charts/feature/drag/index.less +53 -53
  325. package/src/components/charts/feature/equalLabel/index.js +62 -62
  326. package/src/components/charts/feature/expandLegend/constants.js +22 -22
  327. package/src/components/charts/feature/expandLegend/index.js +190 -190
  328. package/src/components/charts/feature/expandLegend/index.less +1043 -1043
  329. package/src/components/charts/feature/expandLegend/mutiSelect/constants.js +40 -40
  330. package/src/components/charts/feature/expandLegend/mutiSelect/index.js +157 -157
  331. package/src/components/charts/feature/expandLegend/mutiSelect/item.js +133 -133
  332. package/src/components/charts/feature/expandLegend/mutiSelect/position.js +43 -43
  333. package/src/components/charts/feature/expandLegend/mutiSelect/search.js +79 -79
  334. package/src/components/charts/feature/expandLegend/mutiSelectLegend/constants.js +41 -41
  335. package/src/components/charts/feature/expandLegend/mutiSelectLegend/group.js +111 -111
  336. package/src/components/charts/feature/expandLegend/mutiSelectLegend/index.js +97 -97
  337. package/src/components/charts/feature/expandLegend/mutiSelectLegend/item.js +114 -114
  338. package/src/components/charts/feature/expandLegend/mutiSelectLegend/more.js +100 -100
  339. package/src/components/charts/feature/expandLegend/mutiSelectLegend/paging.js +102 -102
  340. package/src/components/charts/feature/expandLegend/mutiSelectLegend/scroll.js +33 -33
  341. package/src/components/charts/feature/expandLegend/mutiSelectList/constants.js +34 -34
  342. package/src/components/charts/feature/expandLegend/mutiSelectList/index.js +181 -181
  343. package/src/components/charts/feature/expandLegend/mutiSelectList/statisticList.js +145 -145
  344. package/src/components/charts/feature/expandLegend/singleSelect/constants.js +40 -40
  345. package/src/components/charts/feature/expandLegend/singleSelect/index.js +170 -170
  346. package/src/components/charts/feature/expandLegend/singleSelect/item.js +74 -74
  347. package/src/components/charts/feature/expandLegend/singleSelect/position.js +33 -33
  348. package/src/components/charts/feature/expandLegend/singleSelect/search.js +76 -76
  349. package/src/components/charts/feature/expandLegend/singleSelectLegend/constants.js +41 -41
  350. package/src/components/charts/feature/expandLegend/singleSelectLegend/group.js +115 -115
  351. package/src/components/charts/feature/expandLegend/singleSelectLegend/index.js +97 -97
  352. package/src/components/charts/feature/expandLegend/singleSelectLegend/item.js +112 -112
  353. package/src/components/charts/feature/expandLegend/singleSelectLegend/more.js +39 -39
  354. package/src/components/charts/feature/expandLegend/singleSelectLegend/scroll.js +33 -33
  355. package/src/components/charts/feature/expandLegend/tips/constants.js +21 -21
  356. package/src/components/charts/feature/expandLegend/tips/index.js +168 -168
  357. package/src/components/charts/feature/fluctuation/index.js +64 -64
  358. package/src/components/charts/feature/linter/dialog/index.js +111 -111
  359. package/src/components/charts/feature/linter/index.js +130 -130
  360. package/src/components/charts/feature/linter/lints/charts/Bar.js +45 -45
  361. package/src/components/charts/feature/linter/lints/charts/Line.js +30 -30
  362. package/src/components/charts/feature/linter/lints/charts/Pie.js +38 -38
  363. package/src/components/charts/feature/linter/lints/charts/Radar.js +37 -37
  364. package/src/components/charts/feature/linter/lints/charts/index.js +36 -36
  365. package/src/components/charts/feature/linter/lints/modules/angleAxis.js +46 -46
  366. package/src/components/charts/feature/linter/lints/modules/color.js +18 -18
  367. package/src/components/charts/feature/linter/lints/modules/dataZoom.js +51 -51
  368. package/src/components/charts/feature/linter/lints/modules/index.js +63 -63
  369. package/src/components/charts/feature/linter/lints/modules/legend.js +63 -63
  370. package/src/components/charts/feature/linter/lints/modules/radar.js +58 -58
  371. package/src/components/charts/feature/linter/lints/modules/radiusAxis.js +48 -48
  372. package/src/components/charts/feature/linter/lints/modules/title.js +43 -43
  373. package/src/components/charts/feature/linter/lints/modules/tooltip.js +28 -28
  374. package/src/components/charts/feature/linter/lints/modules/util.js +97 -97
  375. package/src/components/charts/feature/linter/lints/modules/xAxis.js +51 -51
  376. package/src/components/charts/feature/linter/lints/modules/yAxis.js +51 -51
  377. package/src/components/charts/feature/mediaScreen/index.js +94 -94
  378. package/src/components/charts/feature/mini/miniBarChart.js +57 -57
  379. package/src/components/charts/feature/mini/miniCircleProcessChart.js +31 -31
  380. package/src/components/charts/feature/mini/miniLineChart.js +57 -57
  381. package/src/components/charts/feature/mini/miniProcessChart.js +63 -63
  382. package/src/components/charts/feature/nodeRender/angular-node.js +99 -99
  383. package/src/components/charts/feature/nodeRender/index.js +30 -30
  384. package/src/components/charts/feature/nodeRender/react-node.js +82 -82
  385. package/src/components/charts/feature/nodeRender/vue-node.js +108 -108
  386. package/src/components/charts/feature/performance/lttb.js +84 -84
  387. package/src/components/charts/feature/readScreen/index.js +18 -18
  388. package/src/components/charts/feature/token/color/bpit/dark.js +67 -67
  389. package/src/components/charts/feature/token/color/bpit/index.js +20 -20
  390. package/src/components/charts/feature/token/color/bpit/light.js +66 -66
  391. package/src/components/charts/feature/token/color/cloud/board-dark.js +260 -260
  392. package/src/components/charts/feature/token/color/cloud/board.js +275 -275
  393. package/src/components/charts/feature/token/color/cloud/dark.js +78 -78
  394. package/src/components/charts/feature/token/color/cloud/index.js +20 -20
  395. package/src/components/charts/feature/token/color/cloud/light.js +77 -77
  396. package/src/components/charts/feature/token/color/hdesign/board.js +204 -204
  397. package/src/components/charts/feature/token/color/hdesign/dark.js +78 -78
  398. package/src/components/charts/feature/token/color/hdesign/index.js +20 -20
  399. package/src/components/charts/feature/token/color/hdesign/light.js +79 -79
  400. package/src/components/charts/feature/token/color/ict/board.js +190 -190
  401. package/src/components/charts/feature/token/color/ict/dark.js +61 -61
  402. package/src/components/charts/feature/token/color/ict/index.js +20 -20
  403. package/src/components/charts/feature/token/color/ict/light.js +62 -62
  404. package/src/components/charts/feature/token/color/index.js +29 -29
  405. package/src/components/charts/feature/token/color/util.js +42 -42
  406. package/src/components/charts/feature/token/factory/chartsToken/AreaChart.js +20 -20
  407. package/src/components/charts/feature/token/factory/chartsToken/AssembleBubbleChart.js +26 -26
  408. package/src/components/charts/feature/token/factory/chartsToken/BarChart.js +27 -27
  409. package/src/components/charts/feature/token/factory/chartsToken/BoxplotChart.js +27 -27
  410. package/src/components/charts/feature/token/factory/chartsToken/BubbleChart.js +22 -22
  411. package/src/components/charts/feature/token/factory/chartsToken/BulletChart.js +23 -23
  412. package/src/components/charts/feature/token/factory/chartsToken/CandlestickChart.js +20 -20
  413. package/src/components/charts/feature/token/factory/chartsToken/ChartCard.js +33 -33
  414. package/src/components/charts/feature/token/factory/chartsToken/CircleProcessChart.js +23 -23
  415. package/src/components/charts/feature/token/factory/chartsToken/FunnelChart.js +26 -26
  416. package/src/components/charts/feature/token/factory/chartsToken/GaugeChart.js +27 -27
  417. package/src/components/charts/feature/token/factory/chartsToken/HeatMapChart.js +21 -21
  418. package/src/components/charts/feature/token/factory/chartsToken/HillChart.js +21 -21
  419. package/src/components/charts/feature/token/factory/chartsToken/JadeJueChart.js +28 -28
  420. package/src/components/charts/feature/token/factory/chartsToken/LineChart.js +36 -36
  421. package/src/components/charts/feature/token/factory/chartsToken/LiquidfillChart.js +22 -22
  422. package/src/components/charts/feature/token/factory/chartsToken/PieChart.js +49 -49
  423. package/src/components/charts/feature/token/factory/chartsToken/PolarBarChart.js +22 -22
  424. package/src/components/charts/feature/token/factory/chartsToken/ProcessChart.js +40 -40
  425. package/src/components/charts/feature/token/factory/chartsToken/RadarChart.js +36 -36
  426. package/src/components/charts/feature/token/factory/chartsToken/RegionChart.js +20 -20
  427. package/src/components/charts/feature/token/factory/chartsToken/SankeyChart.js +22 -22
  428. package/src/components/charts/feature/token/factory/chartsToken/ScatterChart.js +21 -21
  429. package/src/components/charts/feature/token/factory/chartsToken/SunburstChart.js +22 -22
  430. package/src/components/charts/feature/token/factory/chartsToken/TimelineChart.js +21 -21
  431. package/src/components/charts/feature/token/factory/chartsToken/TreeChart.js +21 -21
  432. package/src/components/charts/feature/token/factory/chartsToken/WaveChart.js +23 -23
  433. package/src/components/charts/feature/token/factory/chartsToken/WordCloudChart.js +21 -21
  434. package/src/components/charts/feature/token/factory/chartsToken/index.js +79 -79
  435. package/src/components/charts/feature/token/factory/getAliasToken.js +41 -41
  436. package/src/components/charts/feature/token/factory/getExportColors.js +45 -45
  437. package/src/components/charts/feature/token/factory/getGlobalToken.js +25 -25
  438. package/src/components/charts/feature/token/factory/getModelToken.js +389 -389
  439. package/src/components/charts/feature/token/factory/getSceneToken.js +41 -41
  440. package/src/components/charts/feature/token/factory/globalToken/border.js +21 -21
  441. package/src/components/charts/feature/token/factory/globalToken/borderRadius.js +22 -22
  442. package/src/components/charts/feature/token/factory/globalToken/font.js +26 -26
  443. package/src/components/charts/feature/token/factory/globalToken/index.js +28 -28
  444. package/src/components/charts/feature/token/factory/globalToken/lineType.js +19 -19
  445. package/src/components/charts/feature/token/factory/globalToken/size.js +22 -22
  446. package/src/components/charts/feature/token/factory/globalToken/space.js +25 -25
  447. package/src/components/charts/feature/token/factory/index.js +39 -39
  448. package/src/components/charts/feature/token/factory/mergeToken.js +72 -72
  449. package/src/components/charts/feature/token/index.js +176 -176
  450. package/src/components/charts/feature/token/readme.md +11 -11
  451. package/src/components/charts/feature/token/theme/bpit/index.js +19 -19
  452. package/src/components/charts/feature/token/theme/cloud/getAliasToken.js +247 -247
  453. package/src/components/charts/feature/token/theme/cloud/getSceneToken.js +73 -73
  454. package/src/components/charts/feature/token/theme/cloud/index.js +19 -19
  455. package/src/components/charts/feature/token/theme/hdesign/getAliasToken.js +249 -249
  456. package/src/components/charts/feature/token/theme/hdesign/getSceneToken.js +74 -74
  457. package/src/components/charts/feature/token/theme/hdesign/index.js +19 -19
  458. package/src/components/charts/feature/token/theme/ict/getAliasToken.js +249 -249
  459. package/src/components/charts/feature/token/theme/ict/getSceneToken.js +71 -71
  460. package/src/components/charts/feature/token/theme/ict/index.js +19 -19
  461. package/src/components/charts/feature/wcag/index.js +335 -335
  462. package/src/components/charts/feature/xss/index.js +51 -51
  463. package/src/components/charts/framework/charts/CircleArcChart/index.js +142 -142
  464. package/src/components/charts/framework/charts/CircleChart/index.js +140 -140
  465. package/src/components/charts/framework/charts/CustomizeChart/index.js +166 -166
  466. package/src/components/charts/framework/charts/ForceDirectedChart/index.js +140 -140
  467. package/src/components/charts/framework/charts/ForceDirectedChart/initDom.js +20 -20
  468. package/src/components/charts/framework/charts/ForceDirectedChart/libs/Node.js +148 -148
  469. package/src/components/charts/framework/charts/ForceDirectedChart/libs/center.js +71 -71
  470. package/src/components/charts/framework/charts/ForceDirectedChart/libs/collide.js +151 -151
  471. package/src/components/charts/framework/charts/ForceDirectedChart/libs/constant.js +17 -17
  472. package/src/components/charts/framework/charts/ForceDirectedChart/libs/dispatch.js +95 -95
  473. package/src/components/charts/framework/charts/ForceDirectedChart/libs/index.js +19 -19
  474. package/src/components/charts/framework/charts/ForceDirectedChart/libs/jiggle.js +16 -16
  475. package/src/components/charts/framework/charts/ForceDirectedChart/libs/lcg.js +23 -23
  476. package/src/components/charts/framework/charts/ForceDirectedChart/libs/link.js +128 -128
  477. package/src/components/charts/framework/charts/ForceDirectedChart/libs/manyBody.js +127 -127
  478. package/src/components/charts/framework/charts/ForceDirectedChart/libs/quadtree.js +393 -393
  479. package/src/components/charts/framework/charts/ForceDirectedChart/libs/radial.js +68 -68
  480. package/src/components/charts/framework/charts/ForceDirectedChart/libs/simulation.js +171 -171
  481. package/src/components/charts/framework/charts/ForceDirectedChart/libs/timer.js +121 -121
  482. package/src/components/charts/framework/charts/ForceDirectedChart/libs/x.js +52 -52
  483. package/src/components/charts/framework/charts/ForceDirectedChart/libs/y.js +52 -52
  484. package/src/components/charts/framework/charts/GridChart/index.js +174 -174
  485. package/src/components/charts/framework/charts/LinearArcChart/index.js +143 -143
  486. package/src/components/charts/framework/charts/MindmapChart/index.js +166 -166
  487. package/src/components/charts/framework/charts/MindmapChart/index.less +84 -84
  488. package/src/components/charts/framework/core/Base.js +53 -53
  489. package/src/components/charts/framework/core/Relation.js +77 -77
  490. package/src/components/charts/framework/module/animation/Animate.js +433 -433
  491. package/src/components/charts/framework/module/animation/Animation.js +75 -75
  492. package/src/components/charts/framework/module/animation/AnimationGroup.js +136 -136
  493. package/src/components/charts/framework/module/animation/Easing.js +224 -224
  494. package/src/components/charts/framework/module/animation/Interpolation.js +87 -87
  495. package/src/components/charts/framework/module/animation/index.js +19 -19
  496. package/src/components/charts/framework/module/arrow/Manager.js +132 -132
  497. package/src/components/charts/framework/module/arrow/index.js +96 -96
  498. package/src/components/charts/framework/module/canvas/grid.js +287 -287
  499. package/src/components/charts/framework/module/canvas/index.js +433 -433
  500. package/src/components/charts/framework/module/canvas/index.less +102 -102
  501. package/src/components/charts/framework/module/canvas/initDom.js +66 -66
  502. package/src/components/charts/framework/module/canvas/tool.js +61 -61
  503. package/src/components/charts/framework/module/connector/Manager.js +103 -103
  504. package/src/components/charts/framework/module/connector/index.js +98 -98
  505. package/src/components/charts/framework/module/connector/index.less +36 -36
  506. package/src/components/charts/framework/module/connector/type/dot.js +20 -20
  507. package/src/components/charts/framework/module/connector/type/expand.js +210 -210
  508. package/src/components/charts/framework/module/contextmenu/index.js +149 -149
  509. package/src/components/charts/framework/module/contextmenu/index.less +39 -39
  510. package/src/components/charts/framework/module/data/Manager.js +55 -55
  511. package/src/components/charts/framework/module/legend/Item.js +217 -217
  512. package/src/components/charts/framework/module/legend/constants.js +13 -13
  513. package/src/components/charts/framework/module/legend/getSymbol.js +85 -85
  514. package/src/components/charts/framework/module/legend/index.js +118 -118
  515. package/src/components/charts/framework/module/legend/util.js +80 -80
  516. package/src/components/charts/framework/module/line/Animation.js +124 -124
  517. package/src/components/charts/framework/module/line/Manager.js +299 -299
  518. package/src/components/charts/framework/module/line/Tag.js +60 -60
  519. package/src/components/charts/framework/module/line/bufferRender.js +73 -73
  520. package/src/components/charts/framework/module/line/cross/pathPoints.js +232 -232
  521. package/src/components/charts/framework/module/line/cross/vectorUtil.js +66 -66
  522. package/src/components/charts/framework/module/line/customize.js +28 -28
  523. package/src/components/charts/framework/module/line/index.js +259 -259
  524. package/src/components/charts/framework/module/line/index.less +23 -23
  525. package/src/components/charts/framework/module/line/type/Bezier.js +90 -90
  526. package/src/components/charts/framework/module/line/type/Circle.js +38 -38
  527. package/src/components/charts/framework/module/line/type/Direct.js +23 -23
  528. package/src/components/charts/framework/module/line/type/Ellipse.js +88 -88
  529. package/src/components/charts/framework/module/line/type/Round.js +245 -245
  530. package/src/components/charts/framework/module/lineLayout/CircleShape/calculate.js +70 -70
  531. package/src/components/charts/framework/module/lineLayout/CircleShape/index.js +31 -31
  532. package/src/components/charts/framework/module/lineLayout/CircleShape/init.js +33 -33
  533. package/src/components/charts/framework/module/lineLayout/RectShape/calculate.js +173 -173
  534. package/src/components/charts/framework/module/lineLayout/RectShape/index.js +43 -43
  535. package/src/components/charts/framework/module/lineLayout/RectShape/init.js +78 -78
  536. package/src/components/charts/framework/module/lineLayout/RectShape/sharing.js +56 -56
  537. package/src/components/charts/framework/module/lineLayout/index.js +30 -30
  538. package/src/components/charts/framework/module/node/Manager.js +189 -189
  539. package/src/components/charts/framework/module/node/bufferRender.js +72 -72
  540. package/src/components/charts/framework/module/node/convertData/index.js +23 -23
  541. package/src/components/charts/framework/module/node/convertData/returnSelf.js +15 -15
  542. package/src/components/charts/framework/module/node/convertData/transform.js +23 -23
  543. package/src/components/charts/framework/module/node/convertData/treeToLink.js +35 -35
  544. package/src/components/charts/framework/module/node/index.js +187 -187
  545. package/src/components/charts/framework/module/nodeLayout/circle/excute.js +269 -269
  546. package/src/components/charts/framework/module/nodeLayout/circle/index.js +23 -23
  547. package/src/components/charts/framework/module/nodeLayout/customize/index.js +15 -15
  548. package/src/components/charts/framework/module/nodeLayout/defaults/excute.js +26 -26
  549. package/src/components/charts/framework/module/nodeLayout/defaults/index.js +19 -19
  550. package/src/components/charts/framework/module/nodeLayout/grid/excute.js +391 -391
  551. package/src/components/charts/framework/module/nodeLayout/grid/index.js +19 -19
  552. package/src/components/charts/framework/module/nodeLayout/index.js +26 -26
  553. package/src/components/charts/framework/module/nodeLayout/linearArc/index.js +33 -33
  554. package/src/components/charts/framework/module/nodeLayout/nonLayeredTidyTree/NodeBox.js +165 -165
  555. package/src/components/charts/framework/module/nodeLayout/nonLayeredTidyTree/algorithm.js +261 -261
  556. package/src/components/charts/framework/module/nodeLayout/nonLayeredTidyTree/index.js +277 -277
  557. package/src/components/charts/framework/module/readme.js +126 -126
  558. package/src/components/charts/index.js +65 -65
  559. package/src/components/charts/index.less +28 -28
  560. package/src/components/charts/option/PolarSys/index.js +43 -43
  561. package/src/components/charts/option/RectSys/index.js +58 -58
  562. package/src/components/charts/option/base/index.js +24 -24
  563. package/src/components/charts/option/config/angleAxis/base.js +56 -56
  564. package/src/components/charts/option/config/angleAxis/index.js +43 -43
  565. package/src/components/charts/option/config/animation/index.js +63 -63
  566. package/src/components/charts/option/config/datazoom/base.js +123 -123
  567. package/src/components/charts/option/config/datazoom/index.js +61 -61
  568. package/src/components/charts/option/config/grid/base.js +22 -22
  569. package/src/components/charts/option/config/grid/index.js +32 -32
  570. package/src/components/charts/option/config/legend/base.js +80 -80
  571. package/src/components/charts/option/config/legend/icon.js +21 -21
  572. package/src/components/charts/option/config/legend/index.js +63 -63
  573. package/src/components/charts/option/config/legend/itemStyle.js +16 -16
  574. package/src/components/charts/option/config/legend/ldata.js +29 -29
  575. package/src/components/charts/option/config/legend/pageIcon.js +54 -54
  576. package/src/components/charts/option/config/legend/position.js +18 -18
  577. package/src/components/charts/option/config/legend/size.js +16 -16
  578. package/src/components/charts/option/config/legend/textStyle.js +16 -16
  579. package/src/components/charts/option/config/mark/index.js +73 -73
  580. package/src/components/charts/option/config/polar/base.js +30 -30
  581. package/src/components/charts/option/config/polar/index.js +35 -35
  582. package/src/components/charts/option/config/polarTitle/base.js +40 -40
  583. package/src/components/charts/option/config/polarTitle/index.js +52 -52
  584. package/src/components/charts/option/config/polarTitle/subtextStyle.js +21 -21
  585. package/src/components/charts/option/config/polarTitle/textStyle.js +22 -22
  586. package/src/components/charts/option/config/radiusAxis/base.js +55 -55
  587. package/src/components/charts/option/config/radiusAxis/index.js +41 -41
  588. package/src/components/charts/option/config/rectTitle/base.js +31 -31
  589. package/src/components/charts/option/config/rectTitle/index.js +52 -52
  590. package/src/components/charts/option/config/toolbox/base.js +42 -42
  591. package/src/components/charts/option/config/toolbox/index.js +11 -11
  592. package/src/components/charts/option/config/tooltip/axisPointer.js +31 -31
  593. package/src/components/charts/option/config/tooltip/base.js +62 -62
  594. package/src/components/charts/option/config/tooltip/formatter.js +63 -63
  595. package/src/components/charts/option/config/tooltip/index.js +41 -41
  596. package/src/components/charts/option/config/visualMap/index.js +90 -90
  597. package/src/components/charts/option/config/xAxis/axisLabel.js +35 -35
  598. package/src/components/charts/option/config/xAxis/axisLine.js +29 -29
  599. package/src/components/charts/option/config/xAxis/axisMargin.js +31 -31
  600. package/src/components/charts/option/config/xAxis/base.js +66 -66
  601. package/src/components/charts/option/config/xAxis/boundaryGap.js +17 -17
  602. package/src/components/charts/option/config/xAxis/index.js +52 -52
  603. package/src/components/charts/option/config/xAxis/name.js +18 -18
  604. package/src/components/charts/option/config/xAxis/xdata.js +22 -22
  605. package/src/components/charts/option/config/xAxis/xkey.js +20 -20
  606. package/src/components/charts/option/config/yAxis/axisOptimization.js +31 -31
  607. package/src/components/charts/option/config/yAxis/base.js +59 -59
  608. package/src/components/charts/option/config/yAxis/index.js +68 -68
  609. package/src/components/charts/option/config/yAxis/ydata.js +28 -28
  610. package/src/components/charts/option/init/index.js +204 -204
  611. package/src/components/charts/register.js +178 -178
  612. package/src/components/charts/theme.js +62 -62
  613. package/src/components/charts/util/Sequence.js +21 -21
  614. package/src/components/charts/util/centerDom.js +92 -92
  615. package/src/components/charts/util/cloneDeep.js +29 -29
  616. package/src/components/charts/util/color.js +192 -192
  617. package/src/components/charts/util/constants.js +124 -124
  618. package/src/components/charts/util/convert.js +49 -49
  619. package/src/components/charts/util/debounce.js +23 -23
  620. package/src/components/charts/util/defendXSS.js +81 -81
  621. package/src/components/charts/util/dom.js +89 -89
  622. package/src/components/charts/util/equal.js +62 -62
  623. package/src/components/charts/util/event.js +25 -25
  624. package/src/components/charts/util/hashMap.js +111 -111
  625. package/src/components/charts/util/init/insert.js +164 -164
  626. package/src/components/charts/util/math.js +182 -182
  627. package/src/components/charts/util/merge.js +78 -78
  628. package/src/components/charts/util/paint.js +98 -98
  629. package/src/components/charts/util/sort/max.js +64 -64
  630. package/src/components/charts/util/sort/min.js +64 -64
  631. package/src/components/charts/util/throttle.js +33 -33
  632. package/src/components/charts/util/tips.js +24 -24
  633. package/src/components/charts/util/type.js +45 -45
  634. package/src/components/ebiz-form/components/cascader.vue +61 -61
  635. package/src/components/ebiz-form/components/checkbox.vue +37 -37
  636. package/src/components/ebiz-form/components/city.vue +137 -137
  637. package/src/components/ebiz-form/components/date-panel.vue +52 -52
  638. package/src/components/ebiz-form/components/date-range-panel.vue +52 -52
  639. package/src/components/ebiz-form/components/date-range.vue +56 -56
  640. package/src/components/ebiz-form/components/date.vue +52 -52
  641. package/src/components/ebiz-form/components/editor-multi-language.vue +47 -47
  642. package/src/components/ebiz-form/components/editor.vue +78 -78
  643. package/src/components/ebiz-form/components/file-multi-language.vue +52 -52
  644. package/src/components/ebiz-form/components/file.vue +149 -149
  645. package/src/components/ebiz-form/components/images-multi-language.vue +52 -52
  646. package/src/components/ebiz-form/components/images.vue +129 -129
  647. package/src/components/ebiz-form/components/img-multi-language.vue +51 -51
  648. package/src/components/ebiz-form/components/img.vue +129 -129
  649. package/src/components/ebiz-form/components/number.vue +50 -50
  650. package/src/components/ebiz-form/components/radio.vue +28 -28
  651. package/src/components/ebiz-form/components/select.vue +119 -119
  652. package/src/components/ebiz-form/components/switch.vue +23 -23
  653. package/src/components/ebiz-form/components/text-multi-language.vue +47 -47
  654. package/src/components/ebiz-form/components/text.vue +52 -52
  655. package/src/components/ebiz-form/components/textarea-multi-language.vue +48 -48
  656. package/src/components/ebiz-form/components/textarea.vue +29 -29
  657. package/src/components/ebiz-form/components/video-multi-language.vue +51 -51
  658. package/src/components/ebiz-form/components/video.vue +97 -97
  659. package/src/components/ebiz-form/index.vue +157 -157
  660. package/src/components/icons/IconCommunity.vue +7 -7
  661. package/src/components/icons/IconDocumentation.vue +7 -7
  662. package/src/components/icons/IconEcosystem.vue +7 -7
  663. package/src/components/icons/IconSupport.vue +7 -7
  664. package/src/components/icons/IconTooling.vue +19 -19
  665. package/src/index.js +158 -144
  666. package/src/main.js +57 -57
  667. package/src/router/index.js +271 -238
  668. package/src/utils/formatCode.js +24 -24
  669. package/src/utils/generateImportStatement.js +52 -52
  670. package/src/utils/hasJsx.js +25 -25
  671. package/src/utils/index.js +166 -166
  672. package/src/utils/mergeOptions.js +29 -29
  673. package/src/utils/parseRequiredBlocks.js +18 -18
  674. package/src/utils/upload.ts +126 -126
  675. package/src/utils/vue-sfc-validator.js +155 -155
  676. package/src/views/Button.vue +19 -19
  677. package/src/views/CheckboxDemo.vue +104 -104
  678. package/src/views/DataContainer.vue +19 -19
  679. package/src/views/DialogDemo.vue +126 -0
  680. package/src/views/EbizAvatar.vue +223 -223
  681. package/src/views/EbizEmployeeInfo.vue +249 -249
  682. package/src/views/EbizRadioDemo.vue +151 -151
  683. package/src/views/EbizSpace.vue +185 -185
  684. package/src/views/EbizSwiper.vue +157 -157
  685. package/src/views/Form.vue +19 -19
  686. package/src/views/GridDemo.vue +238 -238
  687. package/src/views/Home.vue +97 -92
  688. package/src/views/Mindmap.vue +19 -19
  689. package/src/views/MyComponent.vue +19 -19
  690. package/src/views/OkrTree.vue +19 -19
  691. package/src/views/PageHeaderDemo.vue +105 -0
  692. package/src/views/PaginationDemo.vue +96 -96
  693. package/src/views/RemoteSelect.vue +350 -19
  694. package/src/views/StatisticDemo.vue +190 -190
  695. package/src/views/SwitchDemo.vue +79 -79
  696. package/src/views/Table.vue +19 -19
  697. package/src/views/TableDemo.vue +335 -0
  698. package/src/views/TableSortDemo.vue +144 -0
  699. package/src/views/TableView.vue +69 -0
  700. package/src/views/TabsDemo.vue +282 -282
  701. package/src/views/TagDemo.vue +101 -101
  702. package/src/views/TdesignAlert.vue +98 -98
  703. package/src/views/TdesignButton.vue +190 -190
  704. package/src/views/TdesignCalendar.vue +94 -94
  705. package/src/views/TdesignCard.vue +296 -296
  706. package/src/views/TdesignCollapse.vue +293 -293
  707. package/src/views/TdesignDatePicker.vue +187 -187
  708. package/src/views/TdesignForm.vue +248 -248
  709. package/src/views/TdesignIcon.vue +203 -203
  710. package/src/views/TdesignImage.vue +215 -215
  711. package/src/views/TdesignImageViewer.vue +198 -198
  712. package/src/views/TdesignInput.vue +252 -252
  713. package/src/views/TdesignSelect.vue +473 -473
  714. package/src/views/TdesignSwiper.vue +157 -157
  715. package/src/views/TextareaDemo.vue +93 -93
  716. package/src/views/TimelineDemo.vue +160 -160
  717. package/src/views/Title.vue +19 -19
  718. package/src/views/UploadDemo.vue +121 -121
  719. package/src/views/WatermarkDemo.vue +85 -85
  720. package/dist/designer-components.css +0 -1
@@ -1,789 +1,758 @@
1
- <template>
2
- <t-upload
3
- :accept="accept"
4
- :action="internalAction"
5
- :allowUploadDuplicateFile="allowUploadDuplicateFile"
6
- :autoUpload="autoUpload"
7
- :beforeUpload="handleBeforeUpload"
8
- :data="data"
9
- :disabled="disabled"
10
- :draggable="draggable"
11
- :fileListDisplay="fileListDisplay"
12
- :files="internalFiles"
13
- :format="format"
14
- :formatRequest="formatRequest"
15
- :headers="headers"
16
- :isBatchUpload="isBatchUpload"
17
- :max="max"
18
- :method="method"
19
- :multiple="multiple"
20
- :name="name"
21
- :placeholder="placeholder"
22
- :requestMethod="useInternalUpload ? customRequestMethod : requestMethod"
23
- :showUploadProgress="showUploadProgress"
24
- :sizeLimit="sizeLimit"
25
- :status="status"
26
- :theme="theme"
27
- :tips="tips"
28
- :uploadAllFilesInOneRequest="uploadAllFilesInOneRequest"
29
- :uploadButton="uploadButton"
30
- :useMockProgress="useMockProgress"
31
- :withCredentials="withCredentials"
32
- v-model="modelValue"
33
- @change="handleChange"
34
- @click="handleClick"
35
- @drag="handleDrag"
36
- @drop="handleDrop"
37
- @fail="handleFail"
38
- @preview="handlePreview"
39
- @progress="handleProgress"
40
- @remove="handleRemove"
41
- @select-change="handleSelectChange"
42
- @success="handleSuccess"
43
- @validate="handleValidate"
44
- >
45
- <!-- 默认插槽 -->
46
- <slot></slot>
47
-
48
- <!-- 文件列表项插槽 -->
49
- <template v-if="$slots.fileListDisplay" #fileListDisplay="slotProps">
50
- <slot name="fileListDisplay" v-bind="slotProps"></slot>
51
- </template>
52
-
53
- <!-- 替换上传按钮插槽 -->
54
- <template v-if="$slots.default" #default>
55
- <slot name="default"></slot>
56
- </template>
57
-
58
- <!-- 单文件已上传内容插槽 -->
59
- <template v-if="$slots.content" #content="slotProps">
60
- <slot name="content" v-bind="slotProps"></slot>
61
- </template>
62
-
63
- <!-- 文件拖拽区域内容插槽 -->
64
- <template v-if="$slots.dragContent" #dragContent>
65
- <slot name="dragContent"></slot>
66
- </template>
67
-
68
- <!-- 上传按钮内容插槽 -->
69
- <template v-if="$slots.trigger" #trigger>
70
- <slot name="trigger"></slot>
71
- </template>
72
-
73
- <!-- 上传提示文本插槽 -->
74
- <template v-if="$slots.tips" #tips>
75
- <slot name="tips"></slot>
76
- </template>
77
- </t-upload>
78
- </template>
79
-
80
- <script>
81
- export default {
82
- name: "EbizUpload"
83
- }
84
- </script>
85
-
86
- <script setup>
87
- import { computed, defineProps, defineEmits, ref, onMounted, watch } from 'vue';
88
- import { Upload as TUpload } from 'tdesign-vue-next';
89
- import dataService from '../apiService/simpleDataService';
90
-
91
- // 内部上传地址常量
92
- const INTERNAL_UPLOAD_URL = '/file/upload';
93
-
94
- // 内部维护的文件列表,代替直接使用props.files
95
- const internalFiles = ref([]);
96
-
97
- // 初始化内部文件列表
98
- const initializeFiles = () => {
99
- // 如果提供了files,使用它初始化
100
- if (props.files && Array.isArray(props.files)) {
101
- internalFiles.value = [...props.files];
102
- }
103
- };
104
-
105
- // 默认的格式化响应函数
106
- const defaultFormatResponse = (res) => {
107
- console.log('Default formatResponse handling:', res);
108
-
109
- // 处理不同的响应格式
110
- if (res === null || res === undefined) {
111
- return { url: '', error: '上传失败:未收到服务器响应' };
112
- }
113
-
114
- // 如果res已经是字符串(文件路径),直接使用
115
- if (typeof res === 'string') {
116
- return { url: res };
117
- }
118
-
119
- // 如果返回的就是服务器的原始响应 { code: 0, msg: '上传成功', data: '文件路径' }
120
- // axios拦截器应该已经提取了data部分,但我们做个双重检查
121
- if (res.code === 0 && res.data) {
122
- return { url: typeof res.data === 'string' ? res.data : '' };
123
- }
124
-
125
- // 如果是自定义对象,可能已经处理过
126
- if (res.url) {
127
- return { url: res.url };
128
- }
129
-
130
- // 直接处理服务器响应的标准格式
131
- if (typeof res === 'string') {
132
- // 直接是文件路径字符串
133
- return { url: res };
134
- }
135
-
136
- // 如果服务器直接响应了数据,没有包装
137
- if (res && !res.code && !res.data && typeof res === 'object') {
138
- // 尝试找到可能的URL字段
139
- if (res.url || res.path || res.filePath || res.fileUrl) {
140
- return { url: res.url || res.path || res.filePath || res.fileUrl };
141
- }
142
- }
143
-
144
- // 处理其他可能的情况
145
- console.warn('Unknown response format:', res);
146
-
147
- // 无法识别的格式,返回空URL
148
- return { url: '' };
149
- };
150
-
151
- const props = defineProps({
152
- // v-model值,已上传和待上传的文件列表
153
- modelValue: {
154
- type: Array,
155
- default: () => []
156
- },
157
- // 接受上传的文件类型,同input标签的accept属性
158
- accept: {
159
- type: String,
160
- default: undefined
161
- },
162
- // 上传的接口地址,可选,如不提供则使用内部dataService上传
163
- action: {
164
- type: String,
165
- default: ''
166
- },
167
- // 是否允许重复上传相同名称的文件
168
- allowUploadDuplicateFile: {
169
- type: Boolean,
170
- default: false
171
- },
172
- // 是否在选择文件后自动上传
173
- autoUpload: {
174
- type: Boolean,
175
- default: true
176
- },
177
- // 上传文件之前的钩子,返回值决定是否上传
178
- beforeUpload: {
179
- type: Function,
180
- default: undefined
181
- },
182
- // 上传请求时附带的自定义数据
183
- data: {
184
- type: Object,
185
- default: () => ({})
186
- },
187
- // 是否禁用
188
- disabled: {
189
- type: Boolean,
190
- default: false
191
- },
192
- // 是否启用拖拽上传
193
- draggable: {
194
- type: Boolean,
195
- default: false
196
- },
197
- // 文件列表的展示方式
198
- fileListDisplay: {
199
- type: Function,
200
- default: undefined
201
- },
202
- // 已上传的文件列表,用于初始化内部文件列表
203
- files: {
204
- type: Array,
205
- default: () => []
206
- },
207
- // 文件上传前转换文件的函数
208
- format: {
209
- type: Function,
210
- default: undefined
211
- },
212
- // 用于格式化上传请求,可以处理请求参数等
213
- formatRequest: {
214
- type: Function,
215
- default: undefined
216
- },
217
- // 上传请求的请求头
218
- headers: {
219
- type: Object,
220
- default: () => ({})
221
- },
222
- // 是否批量上传
223
- isBatchUpload: {
224
- type: Boolean,
225
- default: false
226
- },
227
- // 用于控制文件上传数量
228
- max: {
229
- type: Number,
230
- default: 0
231
- },
232
- // 上传请求的HTTP方法
233
- method: {
234
- type: String,
235
- default: 'POST',
236
- validator: (val) => ['POST', 'GET', 'PUT', 'OPTIONS', 'PATCH', 'post', 'get', 'put', 'options', 'patch'].includes(val)
237
- },
238
- // 是否支持多文件上传
239
- multiple: {
240
- type: Boolean,
241
- default: false
242
- },
243
- // 上传字段名
244
- name: {
245
- type: String,
246
- default: 'file'
247
- },
248
- // 占位符
249
- placeholder: {
250
- type: String,
251
- default: undefined
252
- },
253
- // 自定义上传方法
254
- requestMethod: {
255
- type: Function,
256
- default: undefined
257
- },
258
- // 是否显示上传进度
259
- showUploadProgress: {
260
- type: Boolean,
261
- default: true
262
- },
263
- // 文件大小限制,单位:KB
264
- sizeLimit: {
265
- type: [Number, Object],
266
- default: undefined
267
- },
268
- // 上传状态
269
- status: {
270
- type: String,
271
- default: undefined,
272
- validator: (val) => ['default', 'success', 'warning', 'error'].includes(val)
273
- },
274
- // 上传组件风格
275
- theme: {
276
- type: String,
277
- default: 'file',
278
- validator: (val) => ['custom', 'file', 'file-input', 'file-flow', 'image', 'image-flow'].includes(val)
279
- },
280
- // 上传提示文本
281
- tips: {
282
- type: String,
283
- default: ''
284
- },
285
- // 是否在同一个请求中上传多个文件
286
- uploadAllFilesInOneRequest: {
287
- type: Boolean,
288
- default: false
289
- },
290
- // 上传按钮属性
291
- uploadButton: {
292
- type: Object,
293
- default: () => ({})
294
- },
295
- // 是否使用模拟的上传进度
296
- useMockProgress: {
297
- type: Boolean,
298
- default: true
299
- },
300
- // 上传请求时是否携带cookies
301
- withCredentials: {
302
- type: Boolean,
303
- default: false
304
- },
305
- // 是否使用内部上传服务,如果为true则忽略action参数
306
- useInternalUpload: {
307
- type: Boolean,
308
- default: true
309
- }
310
- });
311
-
312
- const emit = defineEmits([
313
- 'update:modelValue',
314
- 'change',
315
- 'click',
316
- 'drag',
317
- 'drop',
318
- 'fail',
319
- 'preview',
320
- 'progress',
321
- 'remove',
322
- 'select-change',
323
- 'success',
324
- 'validate',
325
- 'update:files'
326
- ]);
327
-
328
- // 当前上传进度
329
- const uploadProgress = ref(0);
330
-
331
- // 上传列表双向绑定
332
- const modelValue = computed({
333
- get() {
334
- // 优先返回内部文件列表,确保上传状态正确
335
- if (internalFiles.value.length > 0) {
336
- return internalFiles.value;
337
- }
338
- return props.modelValue;
339
- },
340
- set(value) {
341
- // 同时更新内部文件列表和v-model
342
- internalFiles.value = value;
343
- emit('update:modelValue', value);
344
- }
345
- });
346
-
347
- // 监听props.modelValue的变化,同步到internalFiles
348
- watch(
349
- () => props.modelValue,
350
- (newValue) => {
351
- if (newValue && Array.isArray(newValue) && newValue.length > 0) {
352
- console.log('External modelValue changed, updating internal files:', newValue);
353
- // 过滤掉可能的空值
354
- const validFiles = newValue.filter(file => file && file.name);
355
- if (validFiles.length > 0) {
356
- internalFiles.value = validFiles;
357
- }
358
- }
359
- },
360
- { deep: true }
361
- );
362
-
363
- // 内部上传地址,如果提供了action且未启用内部上传则使用action,否则使用内部默认地址
364
- const internalAction = computed(() => {
365
- return (props.action && !props.useInternalUpload) ? props.action : INTERNAL_UPLOAD_URL;
366
- });
367
-
368
- // 自定义上传方法,使用dataService进行上传
369
- const customRequestMethod = (options) => {
370
- console.log('Upload options:', options);
371
-
372
- try {
373
- // 解构选项,获取需要的属性
374
- const { raw, onProgress, onSuccess, onError, data, method, name } = options || {};
375
-
376
- // 创建FormData
377
- const formData = new FormData();
378
-
379
- // 创建一个执行上传的函数
380
- const executeUpload = (fileToUpload) => {
381
- console.log('Uploading file:', fileToUpload.name, fileToUpload.size);
382
- formData.append('file', fileToUpload);
383
-
384
- // 添加额外数据
385
- if (data) {
386
- Object.keys(data).forEach(key => {
387
- formData.append(key, data[key]);
388
- });
389
- }
390
-
391
- // 定义安全的进度回调
392
- const safeProgressCallback = (progress) => {
393
- uploadProgress.value = progress;
394
- if (typeof onProgress === 'function') {
395
- onProgress({ percent: progress });
396
- }
397
- };
398
-
399
- // 使用dataService上传文件
400
- return dataService
401
- .upload(INTERNAL_UPLOAD_URL, formData, safeProgressCallback)
402
- .then(response => {
403
- console.log('Upload response:', response);
404
-
405
- // 在组件内部处理响应数据
406
- let formattedResponse;
407
-
408
- try {
409
- // 使用内部处理逻辑,不依赖props.formatResponse
410
- formattedResponse = defaultFormatResponse(response);
411
- } catch (error) {
412
- console.error('Error formatting response:', error);
413
- formattedResponse = { url: '', error: error.message };
414
- }
415
-
416
- // 确保格式化后的响应包含文件基本信息
417
- const fileObject = {
418
- ...formattedResponse,
419
- name: fileToUpload.name,
420
- size: fileToUpload.size,
421
- type: fileToUpload.type,
422
- status: 'success',
423
- raw: fileToUpload, // 保存原始文件对象
424
- lastModified: fileToUpload.lastModified
425
- };
426
-
427
- // 构建TDesign期望的成功响应对象
428
- const successResponse = {
429
- file: fileObject, // 文件对象
430
- fileList: [fileObject], // 文件列表(可能包含多个文件)
431
- response: {
432
- url: fileObject.url, // 必需的URL字段
433
- files: [fileObject], // 必需的files字段
434
- data: response // 保留原始响应
435
- },
436
- e: { status: 'success' }, // 事件对象
437
- status: 'success' // 必须的状态字段,只能是success或fail
438
- };
439
-
440
- console.log('Final formatted response:', successResponse);
441
-
442
- // 安全地调用成功回调
443
- if (typeof onSuccess === 'function') {
444
- onSuccess(successResponse);
445
- }
446
- return successResponse;
447
- })
448
- .catch(error => {
449
- console.error('Upload failed:', error);
450
-
451
- // 构建错误响应对象
452
- const failResponse = {
453
- error: error,
454
- status: 'fail', // 必须的状态字段,值为fail
455
- e: { status: 'fail' }
456
- };
457
-
458
- // 安全地调用错误回调
459
- if (typeof onError === 'function') {
460
- onError(failResponse);
461
- }
462
- return Promise.reject(failResponse);
463
- });
464
- };
465
-
466
- // 尝试获取真实的文件对象
467
- // 1. 首先检查raw是否直接是File对象
468
- if (raw instanceof File) {
469
- console.log('Using raw as File directly');
470
- return executeUpload(raw);
471
- }
472
-
473
- // 2. 直接从options本身获取信息创建文件
474
- if (options && options.name && options.type && options.size) {
475
- // 我们找到了文件信息,但没有实际内容
476
- // 我们需要使用FileReader获取实际文件或创建一个伪文件
477
- console.log('Creating file from options properties');
478
-
479
- // 由于我们无法获取真实文件内容,创建一个伪文件
480
- // 注意:这在实际上传时可能会失败,因为没有真实内容
481
- const pseudoFileContent = new Blob([`Pseudo file content for ${options.name}`], { type: options.type });
482
- const pseudoFile = new File([pseudoFileContent], options.name, {
483
- type: options.type,
484
- lastModified: options.lastModified || Date.now()
485
- });
486
-
487
- // 创建一个隐藏的文件输入,让用户重新选择文件
488
- // 这是一个备选方案
489
- const fileInput = document.createElement('input');
490
- fileInput.type = 'file';
491
- fileInput.style.display = 'none';
492
- fileInput.accept = options.type;
493
- document.body.appendChild(fileInput);
494
-
495
- // 提示用户选择同一个文件
496
- console.log('Please select the same file again');
497
- alert(`上传出错:TDesign上传组件无法获取文件内容。请在出现的文件选择框中重新选择"${options.name}"文件。`);
498
-
499
- return new Promise((resolve, reject) => {
500
- fileInput.onchange = (e) => {
501
- const selectedFile = e.target.files[0];
502
- if (selectedFile) {
503
- console.log('User selected file:', selectedFile.name);
504
- document.body.removeChild(fileInput);
505
- resolve(executeUpload(selectedFile));
506
- } else {
507
- document.body.removeChild(fileInput);
508
- const failResponse = {
509
- error: new Error('No file selected'),
510
- status: 'fail',
511
- e: { status: 'fail' }
512
- };
513
- reject(failResponse);
514
- }
515
- };
516
-
517
- fileInput.onerror = (error) => {
518
- document.body.removeChild(fileInput);
519
- const failResponse = {
520
- error: error,
521
- status: 'fail',
522
- e: { status: 'fail' }
523
- };
524
- reject(failResponse);
525
- };
526
-
527
- // 触发文件选择
528
- fileInput.click();
529
- });
530
- }
531
-
532
- console.error('Cannot find valid file information', options);
533
- if (typeof onError === 'function') {
534
- const failResponse = {
535
- error: new Error('No valid file information found'),
536
- status: 'fail',
537
- e: { status: 'fail' }
538
- };
539
- onError(failResponse);
540
- }
541
- return Promise.reject({
542
- error: new Error('No valid file information found'),
543
- status: 'fail',
544
- e: { status: 'fail' }
545
- });
546
- } catch (err) {
547
- console.error('Upload error in customRequestMethod:', err);
548
- return Promise.reject({
549
- error: err,
550
- status: 'fail',
551
- e: { status: 'fail' }
552
- });
553
- }
554
- };
555
-
556
- // 上传前钩子,如果设置了beforeUpload则先执行
557
- const handleBeforeUpload = (file, options) => {
558
- if (props.beforeUpload) {
559
- return props.beforeUpload(file, options);
560
- }
561
- return true;
562
- };
563
-
564
- // 监听internalFiles的变化,记录调试信息
565
- watch(
566
- internalFiles,
567
- (newFiles) => {
568
- console.log('Internal files changed:', newFiles);
569
- },
570
- { deep: true }
571
- );
572
-
573
- // 文件状态变化事件
574
- const handleChange = (value, context) => {
575
- console.log('Upload change event:', value, context);
576
-
577
- // 如果是上传成功,确保文件被添加到内部列表
578
- if (context && context.file && context.file.status === 'success') {
579
- const successFile = context.file;
580
-
581
- // 检查是否已存在于内部文件列表
582
- const fileExists = internalFiles.value.some(
583
- file => file.name === successFile.name && file.size === successFile.size
584
- );
585
-
586
- if (!fileExists) {
587
- console.log('Adding successful file from change event:', successFile);
588
- internalFiles.value = [...internalFiles.value, successFile];
589
-
590
- // 更新v-model和files属性
591
- emit('update:modelValue', internalFiles.value);
592
- emit('update:files', internalFiles.value);
593
- }
594
- }
595
-
596
- emit('change', value, context);
597
- };
598
-
599
- // 点击事件
600
- const handleClick = (context) => {
601
- emit('click', context);
602
- };
603
-
604
- // 拖拽事件
605
- const handleDrag = (context) => {
606
- emit('drag', context);
607
- };
608
-
609
- // 文件拖放事件
610
- const handleDrop = (context) => {
611
- emit('drop', context);
612
- };
613
-
614
- // 上传失败事件
615
- const handleFail = (options) => {
616
- emit('fail', options);
617
- };
618
-
619
- // 点击预览事件
620
- const handlePreview = (options) => {
621
- emit('preview', options);
622
- };
623
-
624
- // 上传进度事件
625
- const handleProgress = (options) => {
626
- emit('progress', options);
627
- };
628
-
629
- // 移除文件事件
630
- const handleRemove = (context) => {
631
- if (context && context.file) {
632
- // 从内部文件列表中移除文件
633
- const removedFile = context.file;
634
-
635
- // 根据name和size过滤掉要删除的文件
636
- internalFiles.value = internalFiles.value.filter(
637
- file => !(file.name === removedFile.name && file.size === removedFile.size)
638
- );
639
-
640
- // 同时更新v-model绑定的值,保持一致性
641
- emit('update:modelValue', internalFiles.value);
642
-
643
- // 更新files属性,支持v-model:files双向绑定
644
- emit('update:files', internalFiles.value);
645
- }
646
-
647
- // 发出原始移除事件
648
- emit('remove', context);
649
- };
650
-
651
- // 选择文件变化事件
652
- const handleSelectChange = (files, context) => {
653
- emit('select-change', files, context);
654
- };
655
-
656
- // 上传成功事件
657
- const handleSuccess = (context) => {
658
- console.log('Upload success event triggered:', context);
659
-
660
- // 将上传成功的文件添加到文件列表中
661
- // 首先检查文件是否已经在列表中
662
- if (context && context.file) {
663
- // 获取有效的URL
664
- let fileUrl = '';
665
- if (context.file.url) {
666
- fileUrl = context.file.url;
667
- } else if (context.response && context.response.url) {
668
- fileUrl = context.response.url;
669
- } else if (context.response && context.response.data && typeof context.response.data === 'string') {
670
- fileUrl = context.response.data;
671
- }
672
-
673
- const newFile = {
674
- ...context.file,
675
- url: fileUrl, // 确保有URL
676
- status: 'success', // 设置状态为成功
677
- response: context.response // 保留响应
678
- };
679
-
680
- console.log('Adding file to internal files:', newFile);
681
-
682
- // 创建新的文件列表副本,以便进行修改
683
- const currentFiles = [...internalFiles.value];
684
-
685
- // 检查文件是否已存在(基于name和size)
686
- const fileExists = currentFiles.some(
687
- file => file.name === newFile.name && file.size === newFile.size
688
- );
689
-
690
- // 如果文件不存在于列表中,则添加它
691
- if (!fileExists) {
692
- currentFiles.push(newFile);
693
- // 更新内部文件列表
694
- internalFiles.value = currentFiles;
695
- } else {
696
- // 如果文件已存在,更新其状态和URL
697
- internalFiles.value = currentFiles.map(file => {
698
- if (file.name === newFile.name && file.size === newFile.size) {
699
- return { ...file, ...newFile };
700
- }
701
- return file;
702
- });
703
- }
704
-
705
- console.log('Updated internal files:', internalFiles.value);
706
-
707
- // 同时更新v-model绑定的值,保持一致性
708
- emit('update:modelValue', internalFiles.value);
709
-
710
- // 更新files属性,支持v-model:files双向绑定
711
- emit('update:files', internalFiles.value);
712
- } else {
713
- console.warn('Missing file in success context:', context);
714
- }
715
-
716
- // 发出原始成功事件
717
- emit('success', context);
718
- };
719
-
720
- // 校验事件
721
- const handleValidate = (context) => {
722
- emit('validate', context);
723
- };
724
-
725
- // 手动添加已上传的文件到文件列表
726
- const addUploadedFile = (file) => {
727
- if (!file || !file.name || !file.url) {
728
- console.error('Invalid file object. File must contain at least name and url properties.');
729
- return false;
730
- }
731
-
732
- // 构建完整的文件对象
733
- const fileObject = {
734
- name: file.name,
735
- url: file.url,
736
- size: file.size || 0,
737
- type: file.type || '',
738
- status: 'success',
739
- // 如果提供了原始文件对象,则使用它
740
- raw: file.raw || null,
741
- lastModified: file.lastModified || new Date().getTime(),
742
- ...file
743
- };
744
-
745
- // 检查文件是否已存在
746
- const fileExists = internalFiles.value.some(
747
- f => f.name === fileObject.name && f.url === fileObject.url
748
- );
749
-
750
- if (!fileExists) {
751
- // 更新内部文件列表
752
- internalFiles.value = [...internalFiles.value, fileObject];
753
-
754
- // 同时更新v-model绑定的值,保持一致性
755
- emit('update:modelValue', internalFiles.value);
756
-
757
- // 更新files属性,支持v-model:files双向绑定
758
- emit('update:files', internalFiles.value);
759
- return true;
760
- }
761
-
762
- return false;
763
- };
764
-
765
- // 导出组件方法供外部使用
766
- defineExpose({
767
- addUploadedFile,
768
- // 导出内部文件列表,允许外部读取
769
- getFiles: () => internalFiles.value
770
- });
771
-
772
- // 组件挂载时初始化文件列表
773
- onMounted(() => {
774
- initializeFiles();
775
- });
776
-
777
- // 监听files的变化,更新内部文件列表
778
- watch(
779
- () => props.files,
780
- () => {
781
- initializeFiles();
782
- },
783
- { deep: true }
784
- );
785
- </script>
786
-
787
- <style lang="less" scoped>
788
- /* 自定义样式 */
789
- </style>
1
+ <template>
2
+ <t-upload :accept="accept" :action="internalAction" :allowUploadDuplicateFile="allowUploadDuplicateFile"
3
+ :autoUpload="autoUpload" :beforeUpload="handleBeforeUpload" :data="data" :disabled="disabled"
4
+ :draggable="draggable" :fileListDisplay="fileListDisplay" :files="internalFiles" :format="format"
5
+ :formatRequest="formatRequest" :headers="headers" :isBatchUpload="isBatchUpload" :max="max" :method="method"
6
+ :multiple="multiple" :name="name" :placeholder="placeholder"
7
+ :requestMethod="useInternalUpload ? customRequestMethod : requestMethod"
8
+ :showUploadProgress="showUploadProgress" :sizeLimit="sizeLimit" :status="status" :theme="theme" :tips="tips"
9
+ :uploadAllFilesInOneRequest="uploadAllFilesInOneRequest" :uploadButton="uploadButton"
10
+ :useMockProgress="useMockProgress" :withCredentials="withCredentials" v-model="modelValue"
11
+ @change="handleChange" @click="handleClick" @drag="handleDrag" @drop="handleDrop" @fail="handleFail"
12
+ @preview="handlePreview" @progress="handleProgress" @remove="handleRemove" @select-change="handleSelectChange"
13
+ @success="handleSuccess" @validate="handleValidate">
14
+ <!-- 默认插槽 -->
15
+ <slot></slot>
16
+
17
+ <!-- 文件列表项插槽 -->
18
+ <template v-if="$slots.fileListDisplay" #fileListDisplay="slotProps">
19
+ <slot name="fileListDisplay" v-bind="slotProps"></slot>
20
+ </template>
21
+
22
+ <!-- 替换上传按钮插槽 -->
23
+ <template v-if="$slots.default" #default>
24
+ <slot name="default"></slot>
25
+ </template>
26
+
27
+ <!-- 单文件已上传内容插槽 -->
28
+ <template v-if="$slots.content" #content="slotProps">
29
+ <slot name="content" v-bind="slotProps"></slot>
30
+ </template>
31
+
32
+ <!-- 文件拖拽区域内容插槽 -->
33
+ <template v-if="$slots.dragContent" #dragContent>
34
+ <slot name="dragContent"></slot>
35
+ </template>
36
+
37
+ <!-- 上传按钮内容插槽 -->
38
+ <template v-if="$slots.trigger" #trigger>
39
+ <slot name="trigger"></slot>
40
+ </template>
41
+
42
+ <!-- 上传提示文本插槽 -->
43
+ <template v-if="$slots.tips" #tips>
44
+ <slot name="tips"></slot>
45
+ </template>
46
+ </t-upload>
47
+ </template>
48
+
49
+ <script>
50
+ export default {
51
+ name: "EbizUpload"
52
+ }
53
+ </script>
54
+
55
+ <script setup>
56
+ import { computed, defineProps, defineEmits, ref, onMounted, watch } from 'vue';
57
+ import { Upload as TUpload } from 'tdesign-vue-next';
58
+ import dataService from '../apiService/simpleDataService';
59
+
60
+ // 内部上传地址常量
61
+ const INTERNAL_UPLOAD_URL = '/file/upload';
62
+
63
+ // 内部维护的文件列表,代替直接使用props.files
64
+ const internalFiles = ref([]);
65
+
66
+ // 初始化内部文件列表
67
+ const initializeFiles = () => {
68
+ // 如果提供了files,使用它初始化
69
+ if (props.files && Array.isArray(props.files)) {
70
+ internalFiles.value = [...props.files];
71
+ }
72
+ };
73
+
74
+ // 默认的格式化响应函数
75
+ const defaultFormatResponse = (res) => {
76
+ console.log('Default formatResponse handling:', res);
77
+
78
+ // 处理不同的响应格式
79
+ if (res === null || res === undefined) {
80
+ return { url: '', error: '上传失败:未收到服务器响应' };
81
+ }
82
+
83
+ // 如果res已经是字符串(文件路径),直接使用
84
+ if (typeof res === 'string') {
85
+ return { url: res };
86
+ }
87
+
88
+ // 如果返回的就是服务器的原始响应 { code: 0, msg: '上传成功', data: '文件路径' }
89
+ // axios拦截器应该已经提取了data部分,但我们做个双重检查
90
+ if (res.code === 0 && res.data) {
91
+ return { url: typeof res.data === 'string' ? res.data : '' };
92
+ }
93
+
94
+ // 如果是自定义对象,可能已经处理过
95
+ if (res.url) {
96
+ return { url: res.url };
97
+ }
98
+
99
+ // 直接处理服务器响应的标准格式
100
+ if (typeof res === 'string') {
101
+ // 直接是文件路径字符串
102
+ return { url: res };
103
+ }
104
+
105
+ // 如果服务器直接响应了数据,没有包装
106
+ if (res && !res.code && !res.data && typeof res === 'object') {
107
+ // 尝试找到可能的URL字段
108
+ if (res.url || res.path || res.filePath || res.fileUrl) {
109
+ return { url: res.url || res.path || res.filePath || res.fileUrl };
110
+ }
111
+ }
112
+
113
+ // 处理其他可能的情况
114
+ console.warn('Unknown response format:', res);
115
+
116
+ // 无法识别的格式,返回空URL
117
+ return { url: '' };
118
+ };
119
+
120
+ const props = defineProps({
121
+ // v-model值,已上传和待上传的文件列表
122
+ modelValue: {
123
+ type: Array,
124
+ default: () => []
125
+ },
126
+ // 接受上传的文件类型,同input标签的accept属性
127
+ accept: {
128
+ type: String,
129
+ default: undefined
130
+ },
131
+ // 上传的接口地址,可选,如不提供则使用内部dataService上传
132
+ action: {
133
+ type: String,
134
+ default: ''
135
+ },
136
+ // 是否允许重复上传相同名称的文件
137
+ allowUploadDuplicateFile: {
138
+ type: Boolean,
139
+ default: false
140
+ },
141
+ // 是否在选择文件后自动上传
142
+ autoUpload: {
143
+ type: Boolean,
144
+ default: true
145
+ },
146
+ // 上传文件之前的钩子,返回值决定是否上传
147
+ beforeUpload: {
148
+ type: Function,
149
+ default: undefined
150
+ },
151
+ // 上传请求时附带的自定义数据
152
+ data: {
153
+ type: Object,
154
+ default: () => ({})
155
+ },
156
+ // 是否禁用
157
+ disabled: {
158
+ type: Boolean,
159
+ default: false
160
+ },
161
+ // 是否启用拖拽上传
162
+ draggable: {
163
+ type: Boolean,
164
+ default: false
165
+ },
166
+ // 文件列表的展示方式
167
+ fileListDisplay: {
168
+ type: Function,
169
+ default: undefined
170
+ },
171
+ // 已上传的文件列表,用于初始化内部文件列表
172
+ files: {
173
+ type: Array,
174
+ default: () => []
175
+ },
176
+ // 文件上传前转换文件的函数
177
+ format: {
178
+ type: Function,
179
+ default: undefined
180
+ },
181
+ // 用于格式化上传请求,可以处理请求参数等
182
+ formatRequest: {
183
+ type: Function,
184
+ default: undefined
185
+ },
186
+ // 上传请求的请求头
187
+ headers: {
188
+ type: Object,
189
+ default: () => ({})
190
+ },
191
+ // 是否批量上传
192
+ isBatchUpload: {
193
+ type: Boolean,
194
+ default: false
195
+ },
196
+ // 用于控制文件上传数量
197
+ max: {
198
+ type: Number,
199
+ default: 0
200
+ },
201
+ // 上传请求的HTTP方法
202
+ method: {
203
+ type: String,
204
+ default: 'POST',
205
+ validator: (val) => ['POST', 'GET', 'PUT', 'OPTIONS', 'PATCH', 'post', 'get', 'put', 'options', 'patch'].includes(val)
206
+ },
207
+ // 是否支持多文件上传
208
+ multiple: {
209
+ type: Boolean,
210
+ default: false
211
+ },
212
+ // 上传字段名
213
+ name: {
214
+ type: String,
215
+ default: 'file'
216
+ },
217
+ // 占位符
218
+ placeholder: {
219
+ type: String,
220
+ default: undefined
221
+ },
222
+ // 自定义上传方法
223
+ requestMethod: {
224
+ type: Function,
225
+ default: undefined
226
+ },
227
+ // 是否显示上传进度
228
+ showUploadProgress: {
229
+ type: Boolean,
230
+ default: true
231
+ },
232
+ // 文件大小限制,单位:KB
233
+ sizeLimit: {
234
+ type: [Number, Object],
235
+ default: undefined
236
+ },
237
+ // 上传状态
238
+ status: {
239
+ type: String,
240
+ default: undefined,
241
+ validator: (val) => ['default', 'success', 'warning', 'error'].includes(val)
242
+ },
243
+ // 上传组件风格
244
+ theme: {
245
+ type: String,
246
+ default: 'file',
247
+ validator: (val) => ['custom', 'file', 'file-input', 'file-flow', 'image', 'image-flow'].includes(val)
248
+ },
249
+ // 上传提示文本
250
+ tips: {
251
+ type: String,
252
+ default: ''
253
+ },
254
+ // 是否在同一个请求中上传多个文件
255
+ uploadAllFilesInOneRequest: {
256
+ type: Boolean,
257
+ default: false
258
+ },
259
+ // 上传按钮属性
260
+ uploadButton: {
261
+ type: Object,
262
+ default: () => ({})
263
+ },
264
+ // 是否使用模拟的上传进度
265
+ useMockProgress: {
266
+ type: Boolean,
267
+ default: true
268
+ },
269
+ // 上传请求时是否携带cookies
270
+ withCredentials: {
271
+ type: Boolean,
272
+ default: false
273
+ },
274
+ // 是否使用内部上传服务,如果为true则忽略action参数
275
+ useInternalUpload: {
276
+ type: Boolean,
277
+ default: true
278
+ }
279
+ });
280
+
281
+ const emit = defineEmits([
282
+ 'update:modelValue',
283
+ 'change',
284
+ 'click',
285
+ 'drag',
286
+ 'drop',
287
+ 'fail',
288
+ 'preview',
289
+ 'progress',
290
+ 'remove',
291
+ 'select-change',
292
+ 'success',
293
+ 'validate',
294
+ 'update:files'
295
+ ]);
296
+
297
+ // 当前上传进度
298
+ const uploadProgress = ref(0);
299
+
300
+ // 上传列表双向绑定
301
+ const modelValue = computed({
302
+ get() {
303
+ // 优先返回内部文件列表,确保上传状态正确
304
+ if (internalFiles.value.length > 0) {
305
+ return internalFiles.value;
306
+ }
307
+ return props.modelValue;
308
+ },
309
+ set(value) {
310
+ // 同时更新内部文件列表和v-model
311
+ internalFiles.value = value;
312
+ emit('update:modelValue', value);
313
+ }
314
+ });
315
+
316
+ // 监听props.modelValue的变化,同步到internalFiles
317
+ watch(
318
+ () => props.modelValue,
319
+ (newValue) => {
320
+ if (newValue && Array.isArray(newValue) && newValue.length > 0) {
321
+ console.log('External modelValue changed, updating internal files:', newValue);
322
+ // 过滤掉可能的空值
323
+ const validFiles = newValue.filter(file => file && file.name);
324
+ if (validFiles.length > 0) {
325
+ internalFiles.value = validFiles;
326
+ }
327
+ }
328
+ },
329
+ { deep: true }
330
+ );
331
+
332
+ // 内部上传地址,如果提供了action且未启用内部上传则使用action,否则使用内部默认地址
333
+ const internalAction = computed(() => {
334
+ return (props.action && !props.useInternalUpload) ? props.action : INTERNAL_UPLOAD_URL;
335
+ });
336
+
337
+ // 自定义上传方法,使用dataService进行上传
338
+ const customRequestMethod = (options) => {
339
+ console.log('Upload options:', options);
340
+
341
+ try {
342
+ // 解构选项,获取需要的属性
343
+ const { raw, onProgress, onSuccess, onError, data, method, name } = options || {};
344
+
345
+ // 创建FormData
346
+ const formData = new FormData();
347
+
348
+ // 创建一个执行上传的函数
349
+ const executeUpload = (fileToUpload) => {
350
+ console.log('Uploading file:', fileToUpload.name, fileToUpload.size);
351
+ formData.append('file', fileToUpload);
352
+
353
+ // 添加额外数据
354
+ if (data) {
355
+ Object.keys(data).forEach(key => {
356
+ formData.append(key, data[key]);
357
+ });
358
+ }
359
+
360
+ // 定义安全的进度回调
361
+ const safeProgressCallback = (progress) => {
362
+ uploadProgress.value = progress;
363
+ if (typeof onProgress === 'function') {
364
+ onProgress({ percent: progress });
365
+ }
366
+ };
367
+
368
+ // 使用dataService上传文件
369
+ return dataService
370
+ .upload(INTERNAL_UPLOAD_URL, formData, safeProgressCallback)
371
+ .then(response => {
372
+ console.log('Upload response:', response);
373
+
374
+ // 在组件内部处理响应数据
375
+ let formattedResponse;
376
+
377
+ try {
378
+ // 使用内部处理逻辑,不依赖props.formatResponse
379
+ formattedResponse = defaultFormatResponse(response);
380
+ } catch (error) {
381
+ console.error('Error formatting response:', error);
382
+ formattedResponse = { url: '', error: error.message };
383
+ }
384
+
385
+ // 确保格式化后的响应包含文件基本信息
386
+ const fileObject = {
387
+ ...formattedResponse,
388
+ name: fileToUpload.name,
389
+ size: fileToUpload.size,
390
+ type: fileToUpload.type,
391
+ status: 'success',
392
+ raw: fileToUpload, // 保存原始文件对象
393
+ lastModified: fileToUpload.lastModified
394
+ };
395
+
396
+ // 构建TDesign期望的成功响应对象
397
+ const successResponse = {
398
+ file: fileObject, // 文件对象
399
+ fileList: [fileObject], // 文件列表(可能包含多个文件)
400
+ response: {
401
+ url: fileObject.url, // 必需的URL字段
402
+ files: [fileObject], // 必需的files字段
403
+ data: response // 保留原始响应
404
+ },
405
+ e: { status: 'success' }, // 事件对象
406
+ status: 'success' // 必须的状态字段,只能是success或fail
407
+ };
408
+
409
+ console.log('Final formatted response:', successResponse);
410
+
411
+ // 安全地调用成功回调
412
+ if (typeof onSuccess === 'function') {
413
+ onSuccess(successResponse);
414
+ }
415
+ return successResponse;
416
+ })
417
+ .catch(error => {
418
+ console.error('Upload failed:', error);
419
+
420
+ // 构建错误响应对象
421
+ const failResponse = {
422
+ error: error,
423
+ status: 'fail', // 必须的状态字段,值为fail
424
+ e: { status: 'fail' }
425
+ };
426
+
427
+ // 安全地调用错误回调
428
+ if (typeof onError === 'function') {
429
+ onError(failResponse);
430
+ }
431
+ return Promise.reject(failResponse);
432
+ });
433
+ };
434
+
435
+ // 尝试获取真实的文件对象
436
+ // 1. 首先检查raw是否直接是File对象
437
+ if (raw instanceof File) {
438
+ console.log('Using raw as File directly');
439
+ return executeUpload(raw);
440
+ }
441
+
442
+ // 2. 直接从options本身获取信息创建文件
443
+ if (options && options.name && options.type && options.size) {
444
+ // 我们找到了文件信息,但没有实际内容
445
+ // 我们需要使用FileReader获取实际文件或创建一个伪文件
446
+ console.log('Creating file from options properties');
447
+
448
+ // 由于我们无法获取真实文件内容,创建一个伪文件
449
+ // 注意:这在实际上传时可能会失败,因为没有真实内容
450
+ const pseudoFileContent = new Blob([`Pseudo file content for ${options.name}`], { type: options.type });
451
+ const pseudoFile = new File([pseudoFileContent], options.name, {
452
+ type: options.type,
453
+ lastModified: options.lastModified || Date.now()
454
+ });
455
+
456
+ // 创建一个隐藏的文件输入,让用户重新选择文件
457
+ // 这是一个备选方案
458
+ const fileInput = document.createElement('input');
459
+ fileInput.type = 'file';
460
+ fileInput.style.display = 'none';
461
+ fileInput.accept = options.type;
462
+ document.body.appendChild(fileInput);
463
+
464
+ // 提示用户选择同一个文件
465
+ console.log('Please select the same file again');
466
+ alert(`上传出错:TDesign上传组件无法获取文件内容。请在出现的文件选择框中重新选择"${options.name}"文件。`);
467
+
468
+ return new Promise((resolve, reject) => {
469
+ fileInput.onchange = (e) => {
470
+ const selectedFile = e.target.files[0];
471
+ if (selectedFile) {
472
+ console.log('User selected file:', selectedFile.name);
473
+ document.body.removeChild(fileInput);
474
+ resolve(executeUpload(selectedFile));
475
+ } else {
476
+ document.body.removeChild(fileInput);
477
+ const failResponse = {
478
+ error: new Error('No file selected'),
479
+ status: 'fail',
480
+ e: { status: 'fail' }
481
+ };
482
+ reject(failResponse);
483
+ }
484
+ };
485
+
486
+ fileInput.onerror = (error) => {
487
+ document.body.removeChild(fileInput);
488
+ const failResponse = {
489
+ error: error,
490
+ status: 'fail',
491
+ e: { status: 'fail' }
492
+ };
493
+ reject(failResponse);
494
+ };
495
+
496
+ // 触发文件选择
497
+ fileInput.click();
498
+ });
499
+ }
500
+
501
+ console.error('Cannot find valid file information', options);
502
+ if (typeof onError === 'function') {
503
+ const failResponse = {
504
+ error: new Error('No valid file information found'),
505
+ status: 'fail',
506
+ e: { status: 'fail' }
507
+ };
508
+ onError(failResponse);
509
+ }
510
+ return Promise.reject({
511
+ error: new Error('No valid file information found'),
512
+ status: 'fail',
513
+ e: { status: 'fail' }
514
+ });
515
+ } catch (err) {
516
+ console.error('Upload error in customRequestMethod:', err);
517
+ return Promise.reject({
518
+ error: err,
519
+ status: 'fail',
520
+ e: { status: 'fail' }
521
+ });
522
+ }
523
+ };
524
+
525
+ // 上传前钩子,如果设置了beforeUpload则先执行
526
+ const handleBeforeUpload = (file, options) => {
527
+ if (props.beforeUpload) {
528
+ return props.beforeUpload(file, options);
529
+ }
530
+ return true;
531
+ };
532
+
533
+ // 监听internalFiles的变化,记录调试信息
534
+ watch(
535
+ internalFiles,
536
+ (newFiles) => {
537
+ console.log('Internal files changed:', newFiles);
538
+ },
539
+ { deep: true }
540
+ );
541
+
542
+ // 文件状态变化事件
543
+ const handleChange = (value, context) => {
544
+ console.log('Upload change event:', value, context);
545
+
546
+ // 如果是上传成功,确保文件被添加到内部列表
547
+ if (context && context.file && context.file.status === 'success') {
548
+ const successFile = context.file;
549
+
550
+ // 检查是否已存在于内部文件列表
551
+ const fileExists = internalFiles.value.some(
552
+ file => file.name === successFile.name && file.size === successFile.size
553
+ );
554
+
555
+ if (!fileExists) {
556
+ console.log('Adding successful file from change event:', successFile);
557
+ internalFiles.value = [...internalFiles.value, successFile];
558
+
559
+ // 更新v-model和files属性
560
+ emit('update:modelValue', internalFiles.value);
561
+ emit('update:files', internalFiles.value);
562
+ }
563
+ }
564
+
565
+ emit('change', value, context);
566
+ };
567
+
568
+ // 点击事件
569
+ const handleClick = (context) => {
570
+ emit('click', context);
571
+ };
572
+
573
+ // 拖拽事件
574
+ const handleDrag = (context) => {
575
+ emit('drag', context);
576
+ };
577
+
578
+ // 文件拖放事件
579
+ const handleDrop = (context) => {
580
+ emit('drop', context);
581
+ };
582
+
583
+ // 上传失败事件
584
+ const handleFail = (options) => {
585
+ emit('fail', options);
586
+ };
587
+
588
+ // 点击预览事件
589
+ const handlePreview = (options) => {
590
+ emit('preview', options);
591
+ };
592
+
593
+ // 上传进度事件
594
+ const handleProgress = (options) => {
595
+ emit('progress', options);
596
+ };
597
+
598
+ // 移除文件事件
599
+ const handleRemove = (context) => {
600
+ if (context && context.file) {
601
+ // 从内部文件列表中移除文件
602
+ const removedFile = context.file;
603
+
604
+ // 根据name和size过滤掉要删除的文件
605
+ internalFiles.value = internalFiles.value.filter(
606
+ file => !(file.name === removedFile.name && file.size === removedFile.size)
607
+ );
608
+
609
+ // 同时更新v-model绑定的值,保持一致性
610
+ emit('update:modelValue', internalFiles.value);
611
+
612
+ // 更新files属性,支持v-model:files双向绑定
613
+ emit('update:files', internalFiles.value);
614
+ }
615
+
616
+ // 发出原始移除事件
617
+ emit('remove', context);
618
+ };
619
+
620
+ // 选择文件变化事件
621
+ const handleSelectChange = (files, context) => {
622
+ emit('select-change', files, context);
623
+ };
624
+
625
+ // 上传成功事件
626
+ const handleSuccess = (context) => {
627
+ console.log('Upload success event triggered:', context);
628
+
629
+ // 将上传成功的文件添加到文件列表中
630
+ // 首先检查文件是否已经在列表中
631
+ if (context && context.file) {
632
+ // 获取有效的URL
633
+ let fileUrl = '';
634
+ if (context.file.url) {
635
+ fileUrl = context.file.url;
636
+ } else if (context.response && context.response.url) {
637
+ fileUrl = context.response.url;
638
+ } else if (context.response && context.response.data && typeof context.response.data === 'string') {
639
+ fileUrl = context.response.data;
640
+ }
641
+
642
+ const newFile = {
643
+ ...context.file,
644
+ url: fileUrl, // 确保有URL
645
+ status: 'success', // 设置状态为成功
646
+ response: context.response // 保留响应
647
+ };
648
+
649
+ console.log('Adding file to internal files:', newFile);
650
+
651
+ // 创建新的文件列表副本,以便进行修改
652
+ const currentFiles = [...internalFiles.value];
653
+
654
+ // 检查文件是否已存在(基于name和size)
655
+ const fileExists = currentFiles.some(
656
+ file => file.name === newFile.name && file.size === newFile.size
657
+ );
658
+
659
+ // 如果文件不存在于列表中,则添加它
660
+ if (!fileExists) {
661
+ currentFiles.push(newFile);
662
+ // 更新内部文件列表
663
+ internalFiles.value = currentFiles;
664
+ } else {
665
+ // 如果文件已存在,更新其状态和URL
666
+ internalFiles.value = currentFiles.map(file => {
667
+ if (file.name === newFile.name && file.size === newFile.size) {
668
+ return { ...file, ...newFile };
669
+ }
670
+ return file;
671
+ });
672
+ }
673
+
674
+ console.log('Updated internal files:', internalFiles.value);
675
+
676
+ // 同时更新v-model绑定的值,保持一致性
677
+ emit('update:modelValue', internalFiles.value);
678
+
679
+ // 更新files属性,支持v-model:files双向绑定
680
+ emit('update:files', internalFiles.value);
681
+ } else {
682
+ console.warn('Missing file in success context:', context);
683
+ }
684
+
685
+ // 发出原始成功事件
686
+ emit('success', context);
687
+ };
688
+
689
+ // 校验事件
690
+ const handleValidate = (context) => {
691
+ emit('validate', context);
692
+ };
693
+
694
+ // 手动添加已上传的文件到文件列表
695
+ const addUploadedFile = (file) => {
696
+ if (!file || !file.name || !file.url) {
697
+ console.error('Invalid file object. File must contain at least name and url properties.');
698
+ return false;
699
+ }
700
+
701
+ // 构建完整的文件对象
702
+ const fileObject = {
703
+ name: file.name,
704
+ url: file.url,
705
+ size: file.size || 0,
706
+ type: file.type || '',
707
+ status: 'success',
708
+ // 如果提供了原始文件对象,则使用它
709
+ raw: file.raw || null,
710
+ lastModified: file.lastModified || new Date().getTime(),
711
+ ...file
712
+ };
713
+
714
+ // 检查文件是否已存在
715
+ const fileExists = internalFiles.value.some(
716
+ f => f.name === fileObject.name && f.url === fileObject.url
717
+ );
718
+
719
+ if (!fileExists) {
720
+ // 更新内部文件列表
721
+ internalFiles.value = [...internalFiles.value, fileObject];
722
+
723
+ // 同时更新v-model绑定的值,保持一致性
724
+ emit('update:modelValue', internalFiles.value);
725
+
726
+ // 更新files属性,支持v-model:files双向绑定
727
+ emit('update:files', internalFiles.value);
728
+ return true;
729
+ }
730
+
731
+ return false;
732
+ };
733
+
734
+ // 导出组件方法供外部使用
735
+ defineExpose({
736
+ addUploadedFile,
737
+ // 导出内部文件列表,允许外部读取
738
+ getFiles: () => internalFiles.value
739
+ });
740
+
741
+ // 组件挂载时初始化文件列表
742
+ onMounted(() => {
743
+ initializeFiles();
744
+ });
745
+
746
+ // 监听files的变化,更新内部文件列表
747
+ watch(
748
+ () => props.files,
749
+ () => {
750
+ initializeFiles();
751
+ },
752
+ { deep: true }
753
+ );
754
+ </script>
755
+
756
+ <style lang="less" scoped>
757
+ /* 自定义样式 */
758
+ </style>