@ebiz/designer-components 0.0.46 → 0.0.48

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