xt-element-ui 1.2.1 → 1.2.3

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 (32) hide show
  1. package/lib/index.common.js +1306 -1398
  2. package/lib/index.css +1 -1
  3. package/lib/index.umd.js +1311 -1403
  4. package/lib/index.umd.min.js +5 -5
  5. package/package.json +3 -4
  6. package/src/components/ex-button/index.vue +8 -2
  7. package/src/components/ex-button/style/index.scss +42 -6
  8. package/src/components/ex-card/index.vue +0 -82
  9. package/src/components/ex-card/style/index.scss +7 -3
  10. package/src/components/ex-chart/theme/dark.js +1 -1
  11. package/src/components/ex-chart/utils.js +1 -1
  12. package/src/components/ex-page/index.js +2 -0
  13. package/src/components/ex-select-tree/index.js +2 -0
  14. package/src/components/{xt-select-tree → ex-select-tree}/index.vue +1 -1
  15. package/src/components/ex-table/ExTableCell.vue +3 -2
  16. package/src/components/ex-table/VirtualElTable.vue +234 -0
  17. package/src/components/ex-table/index.vue +188 -625
  18. package/src/components/ex-table/virtualScrollData.js +35 -0
  19. package/src/components/ex-upload/index.js +2 -0
  20. package/src/components/xt-config-provider/index.js +2 -2
  21. package/src/components/xt-config-provider/index.vue +17 -13
  22. package/src/components/xt-text/style/index.scss +13 -13
  23. package/src/index.js +4 -1
  24. package/src/styles/css-variables.scss +1 -2
  25. package/src/styles/element-theme.scss +12 -4
  26. package/src/utils/index.js +11 -2
  27. package/src/components/xt-page/index.js +0 -0
  28. package/src/components/xt-select-tree/index.js +0 -0
  29. package/src/components/xt-upload/index.js +0 -2
  30. /package/src/components/{xt-page → ex-page}/index.vue +0 -0
  31. /package/src/components/{xt-upload → ex-upload}/index.vue +0 -0
  32. /package/src/components/{xt-upload → ex-upload}/preview.vue +0 -0
@@ -154,6 +154,13 @@ function startOfDay (dirtyDate) {
154
154
  module.exports = startOfDay
155
155
 
156
156
 
157
+ /***/ }),
158
+
159
+ /***/ "0c1c":
160
+ /***/ (function(module, exports, __webpack_require__) {
161
+
162
+ // extracted by mini-css-extract-plugin
163
+
157
164
  /***/ }),
158
165
 
159
166
  /***/ "0d3e":
@@ -2587,6 +2594,17 @@ function getSeconds (dirtyDate) {
2587
2594
  module.exports = getSeconds
2588
2595
 
2589
2596
 
2597
+ /***/ }),
2598
+
2599
+ /***/ "24a5":
2600
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
2601
+
2602
+ "use strict";
2603
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_314a5524_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("0c1c");
2604
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_314a5524_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_314a5524_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
2605
+ /* unused harmony reexport * */
2606
+
2607
+
2590
2608
  /***/ }),
2591
2609
 
2592
2610
  /***/ "2507":
@@ -121838,6 +121856,13 @@ function isSaturday (dirtyDate) {
121838
121856
  module.exports = isSaturday
121839
121857
 
121840
121858
 
121859
+ /***/ }),
121860
+
121861
+ /***/ "493c":
121862
+ /***/ (function(module, exports, __webpack_require__) {
121863
+
121864
+ // extracted by mini-css-extract-plugin
121865
+
121841
121866
  /***/ }),
121842
121867
 
121843
121868
  /***/ "4f67":
@@ -122142,13 +122167,6 @@ function getHours (dirtyDate) {
122142
122167
  module.exports = getHours
122143
122168
 
122144
122169
 
122145
- /***/ }),
122146
-
122147
- /***/ "5f72":
122148
- /***/ (function(module, exports) {
122149
-
122150
- module.exports = require("ElementUI");
122151
-
122152
122170
  /***/ }),
122153
122171
 
122154
122172
  /***/ "6254":
@@ -122423,13 +122441,6 @@ function addMonths (dirtyDate, dirtyAmount) {
122423
122441
  module.exports = addMonths
122424
122442
 
122425
122443
 
122426
- /***/ }),
122427
-
122428
- /***/ "67b7":
122429
- /***/ (function(module, exports, __webpack_require__) {
122430
-
122431
- // extracted by mini-css-extract-plugin
122432
-
122433
122444
  /***/ }),
122434
122445
 
122435
122446
  /***/ "693a":
@@ -125144,6 +125155,17 @@ module.exports = isThisMonth
125144
125155
  /* unused harmony reexport * */
125145
125156
 
125146
125157
 
125158
+ /***/ }),
125159
+
125160
+ /***/ "a0ef":
125161
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
125162
+
125163
+ "use strict";
125164
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_f6bc1634_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("d661");
125165
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_f6bc1634_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_f6bc1634_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
125166
+ /* unused harmony reexport * */
125167
+
125168
+
125147
125169
  /***/ }),
125148
125170
 
125149
125171
  /***/ "a431":
@@ -125313,13 +125335,6 @@ function isPast (dirtyDate) {
125313
125335
  module.exports = isPast
125314
125336
 
125315
125337
 
125316
- /***/ }),
125317
-
125318
- /***/ "a968":
125319
- /***/ (function(module, exports, __webpack_require__) {
125320
-
125321
- // extracted by mini-css-extract-plugin
125322
-
125323
125338
  /***/ }),
125324
125339
 
125325
125340
  /***/ "abd4":
@@ -125355,6 +125370,17 @@ function isEqual (dirtyLeftDate, dirtyRightDate) {
125355
125370
  module.exports = isEqual
125356
125371
 
125357
125372
 
125373
+ /***/ }),
125374
+
125375
+ /***/ "ac06":
125376
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
125377
+
125378
+ "use strict";
125379
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VirtualElTable_vue_vue_type_style_index_0_id_5eb34e1c_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("493c");
125380
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VirtualElTable_vue_vue_type_style_index_0_id_5eb34e1c_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_VirtualElTable_vue_vue_type_style_index_0_id_5eb34e1c_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
125381
+ /* unused harmony reexport * */
125382
+
125383
+
125358
125384
  /***/ }),
125359
125385
 
125360
125386
  /***/ "acc4":
@@ -125425,24 +125451,6 @@ function addSeconds (dirtyDate, dirtyAmount) {
125425
125451
  module.exports = addSeconds
125426
125452
 
125427
125453
 
125428
- /***/ }),
125429
-
125430
- /***/ "b2a4":
125431
- /***/ (function(module, exports, __webpack_require__) {
125432
-
125433
- // extracted by mini-css-extract-plugin
125434
-
125435
- /***/ }),
125436
-
125437
- /***/ "b2b3":
125438
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
125439
-
125440
- "use strict";
125441
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_5be23981_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("b2a4");
125442
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_5be23981_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_5be23981_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
125443
- /* unused harmony reexport * */
125444
-
125445
-
125446
125454
  /***/ }),
125447
125455
 
125448
125456
  /***/ "b2e9":
@@ -127037,6 +127045,13 @@ var LRU = (function () {
127037
127045
  /* harmony default export */ __webpack_exports__["a"] = (LRU);
127038
127046
 
127039
127047
 
127048
+ /***/ }),
127049
+
127050
+ /***/ "d661":
127051
+ /***/ (function(module, exports, __webpack_require__) {
127052
+
127053
+ // extracted by mini-css-extract-plugin
127054
+
127040
127055
  /***/ }),
127041
127056
 
127042
127057
  /***/ "d67a":
@@ -127089,17 +127104,6 @@ module.exports = endOfMonth
127089
127104
  /* unused harmony reexport * */
127090
127105
 
127091
127106
 
127092
- /***/ }),
127093
-
127094
- /***/ "d81e":
127095
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
127096
-
127097
- "use strict";
127098
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2073f658_prod_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("67b7");
127099
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2073f658_prod_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2073f658_prod_scoped_true_lang_scss__WEBPACK_IMPORTED_MODULE_0__);
127100
- /* unused harmony reexport * */
127101
-
127102
-
127103
127107
  /***/ }),
127104
127108
 
127105
127109
  /***/ "d975":
@@ -127356,17 +127360,6 @@ module.exports = Array.isArray || function (arr) {
127356
127360
  };
127357
127361
 
127358
127362
 
127359
- /***/ }),
127360
-
127361
- /***/ "e3e9":
127362
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
127363
-
127364
- "use strict";
127365
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_cdc550fc_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a968");
127366
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_cdc550fc_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_cdc550fc_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
127367
- /* unused harmony reexport * */
127368
-
127369
-
127370
127363
  /***/ }),
127371
127364
 
127372
127365
  /***/ "e51d":
@@ -128031,7 +128024,9 @@ __webpack_require__.r(__webpack_exports__);
128031
128024
 
128032
128025
  // EXPORTS
128033
128026
  __webpack_require__.d(__webpack_exports__, "ExChart", function() { return /* reexport */ components_ex_chart; });
128034
- __webpack_require__.d(__webpack_exports__, "utils", function() { return /* reexport */ src_utils; });
128027
+ __webpack_require__.d(__webpack_exports__, "createVirtualScrollData", function() { return /* reexport */ createVirtualScrollData; });
128028
+ __webpack_require__.d(__webpack_exports__, "virtualScrollColumns", function() { return /* reexport */ virtualScrollColumns; });
128029
+ __webpack_require__.d(__webpack_exports__, "utils", function() { return /* reexport */ src_utils_0; });
128035
128030
  __webpack_require__.d(__webpack_exports__, "variables", function() { return /* reexport */ variables_export_default.a; });
128036
128031
  __webpack_require__.d(__webpack_exports__, "getConfig", function() { return /* reexport */ src_getConfig; });
128037
128032
  __webpack_require__.d(__webpack_exports__, "setConfig", function() { return /* reexport */ src_setConfig; });
@@ -128070,7 +128065,811 @@ var components = __webpack_require__("d67a");
128070
128065
  var variables_export = __webpack_require__("ad4d");
128071
128066
  var variables_export_default = /*#__PURE__*/__webpack_require__.n(variables_export);
128072
128067
 
128068
+ // CONCATENATED MODULE: ./src/components/ex-chart/theme/white.js
128069
+ /* harmony default export */ var white = ({
128070
+ color: ["#1890ff", "#37c3a4", "#29c0ce", "#6480D7", "#8cce6f", "#3a5dca", "#ffb74d"],
128071
+ backgroundColor: "#ffffff",
128072
+ textStyle: {
128073
+ fontFamily: "Microsoft YaHei, sans-serif"
128074
+ },
128075
+ title: {
128076
+ textStyle: {
128077
+ color: "#333",
128078
+ fontSize: 16
128079
+ },
128080
+ subtextStyle: {
128081
+ color: "#666666",
128082
+ fontSize: 12
128083
+ }
128084
+ },
128085
+ line: {
128086
+ itemStyle: {
128087
+ },
128088
+ lineStyle: {
128089
+ width: 2
128090
+ }
128091
+ },
128092
+ bar: {
128093
+ itemStyle: {
128094
+ borderRadius: 4
128095
+ }
128096
+ },
128097
+ pie: {
128098
+ roseType: "radius",
128099
+ label: {
128100
+ color: "#333"
128101
+ }
128102
+ },
128103
+ radar: {
128104
+ indicator: {
128105
+ color: "#666666"
128106
+ }
128107
+ },
128108
+ map: {
128109
+ label: {
128110
+ color: "#333"
128111
+ },
128112
+ itemStyle: {
128113
+ borderColor: "#fff"
128114
+ }
128115
+ },
128116
+ gauge: {
128117
+ axisLine: {
128118
+ lineStyle: {
128119
+ color: [[1, "#5470c6"]]
128120
+ }
128121
+ }
128122
+ },
128123
+ toolbox: {
128124
+ iconStyle: {
128125
+ borderColor: "#666666"
128126
+ }
128127
+ },
128128
+ xAxis: {
128129
+ axisLine: {
128130
+ lineStyle: {
128131
+ color: "#DFE9EE"
128132
+ }
128133
+ },
128134
+ axisTick: {
128135
+ lineStyle: {
128136
+ color: "#DFE9EE"
128137
+ },
128138
+ show: false
128139
+ }
128140
+ },
128141
+ yAxis: {
128142
+ axisLine: {
128143
+ lineStyle: {
128144
+ color: "#DFE9EE"
128145
+ }
128146
+ },
128147
+ axisTick: {
128148
+ lineStyle: {
128149
+ color: "#DFE9EE"
128150
+ }
128151
+ },
128152
+ splitLine: {
128153
+ show: true,
128154
+ lineStyle: {
128155
+ type: "dashed",
128156
+ color: "#DFE9EE"
128157
+ }
128158
+ }
128159
+ },
128160
+ splitArea: {
128161
+ areaStyle: {
128162
+ color: ["#f7f8fa", "#ffffff"]
128163
+ }
128164
+ },
128165
+ legend: {
128166
+ textStyle: {
128167
+ color: "#333333"
128168
+ }
128169
+ },
128170
+ tooltip: {
128171
+ borderWidth: 1,
128172
+ backgroundColor: "#ffffff",
128173
+ textStyle: {
128174
+ color: "#333333"
128175
+ },
128176
+ trigger: "axis"
128177
+ }
128178
+ });
128179
+
128180
+ // CONCATENATED MODULE: ./src/components/ex-chart/theme/dark.js
128181
+ /* harmony default export */ var dark = ({
128182
+ color: ["#0de7ff", "#a782ff", "#fcdd60", "#0de7ff", "#ffc5a1", "#6291ae", "#13ce66"],
128183
+ backgroundColor: "#000",
128184
+ textStyle: {
128185
+ fontFamily: "Microsoft YaHei, sans-serif"
128186
+ },
128187
+ title: {
128188
+ textStyle: {
128189
+ color: "#333"
128190
+ },
128191
+ subtextStyle: {
128192
+ color: "#666666"
128193
+ }
128194
+ },
128195
+ line: {
128196
+ itemStyle: {
128197
+ },
128198
+ lineStyle: {
128199
+ width: 2
128200
+ }
128201
+ },
128202
+ bar: {
128203
+ itemStyle: {
128204
+ borderRadius: 4
128205
+ }
128206
+ },
128207
+ pie: {
128208
+ roseType: "radius",
128209
+ label: {
128210
+ color: "#333"
128211
+ }
128212
+ },
128213
+ radar: {
128214
+ indicator: {
128215
+ color: "#666666"
128216
+ }
128217
+ },
128218
+ map: {
128219
+ label: {
128220
+ color: "#333"
128221
+ },
128222
+ itemStyle: {
128223
+ borderColor: "#fff"
128224
+ }
128225
+ },
128226
+ gauge: {
128227
+ axisLine: {
128228
+ lineStyle: {
128229
+ color: [[1, "#5470c6"]]
128230
+ }
128231
+ }
128232
+ },
128233
+ toolbox: {
128234
+ iconStyle: {
128235
+ borderColor: "#666666"
128236
+ }
128237
+ },
128238
+ axisLine: {
128239
+ lineStyle: {
128240
+ color: "#DCDFE6"
128241
+ }
128242
+ },
128243
+ axisTick: {
128244
+ lineStyle: {
128245
+ color: "#DCDFE6"
128246
+ }
128247
+ },
128248
+ splitLine: {
128249
+ lineStyle: {
128250
+ color: "#ebeef5"
128251
+ }
128252
+ },
128253
+ splitArea: {
128254
+ areaStyle: {
128255
+ color: ["#f7f8fa", "#ffffff"]
128256
+ }
128257
+ },
128258
+ legend: {
128259
+ textStyle: {
128260
+ color: "#666"
128261
+ }
128262
+ },
128263
+ tooltip: {
128264
+ backgroundColor: "rgba(255, 255, 255, 0.95)",
128265
+ borderColor: "#DCDFE6",
128266
+ borderWidth: 1,
128267
+ textStyle: {
128268
+ color: "#333"
128269
+ }
128270
+ }
128271
+ });
128272
+
128273
+ // CONCATENATED MODULE: ./src/components/ex-chart/theme/blue.js
128274
+ /* harmony default export */ var blue = ({
128275
+ color: ["#2CDEB3", "#A17EE6", "#E57E40", "#409EFF"],
128276
+ backgroundColor: "#ffffff",
128277
+ textStyle: {
128278
+ fontFamily: "Microsoft YaHei, sans-serif"
128279
+ },
128280
+ title: {
128281
+ textStyle: {
128282
+ color: "#333"
128283
+ },
128284
+ subtextStyle: {
128285
+ color: "#666666"
128286
+ }
128287
+ },
128288
+ line: {
128289
+ itemStyle: {
128290
+ },
128291
+ lineStyle: {
128292
+ width: 2
128293
+ }
128294
+ },
128295
+ bar: {
128296
+ itemStyle: {
128297
+ borderRadius: 4
128298
+ }
128299
+ },
128300
+ pie: {
128301
+ roseType: "radius",
128302
+ label: {
128303
+ color: "#333"
128304
+ }
128305
+ },
128306
+ radar: {
128307
+ indicator: {
128308
+ color: "#666666"
128309
+ }
128310
+ },
128311
+ map: {
128312
+ label: {
128313
+ color: "#333"
128314
+ },
128315
+ itemStyle: {
128316
+ borderColor: "#fff"
128317
+ }
128318
+ },
128319
+ gauge: {
128320
+ axisLine: {
128321
+ lineStyle: {
128322
+ color: [[1, "#5470c6"]]
128323
+ }
128324
+ }
128325
+ },
128326
+ toolbox: {
128327
+ iconStyle: {
128328
+ borderColor: "#666666"
128329
+ }
128330
+ },
128331
+ axisLine: {
128332
+ lineStyle: {
128333
+ color: "#DCDFE6"
128334
+ }
128335
+ },
128336
+ axisTick: {
128337
+ lineStyle: {
128338
+ color: "#DCDFE6"
128339
+ }
128340
+ },
128341
+ splitLine: {
128342
+ lineStyle: {
128343
+ color: "#ebeef5"
128344
+ }
128345
+ },
128346
+ splitArea: {
128347
+ areaStyle: {
128348
+ color: ["#f7f8fa", "#ffffff"]
128349
+ }
128350
+ },
128351
+ legend: {
128352
+ textStyle: {
128353
+ color: "#666"
128354
+ }
128355
+ },
128356
+ tooltip: {
128357
+ backgroundColor: "rgba(255, 255, 255, 0.95)",
128358
+ borderColor: "#DCDFE6",
128359
+ borderWidth: 1,
128360
+ textStyle: {
128361
+ color: "#333"
128362
+ }
128363
+ }
128364
+ });
128365
+
128366
+ // CONCATENATED MODULE: ./src/components/ex-chart/theme/starry.js
128367
+ /* harmony default export */ var starry = ({
128368
+ color: [
128369
+ "#1685a9", // 石青
128370
+ "#21a675", // 松柏绿
128371
+ "#1bd1a5", // 飞燕草蓝
128372
+ "#8c4356", // 绛紫
128373
+ "#0dafc6", // 孔雀蓝
128374
+ "#4b5cc4", // 宝蓝
128375
+ "#758a99", // 墨灰
128376
+ "#cca4e3", // 丁香色
128377
+ "#205277", // 靛青色
128378
+ "#d9b611", // 秋香色
128379
+ "#ff8c31", // 杏红
128380
+ "#9d2933", // 胭脂
128381
+ "#0288c5", // 浅靛青蓝
128382
+ "#44cef6" // 天蓝色
128383
+ ],
128384
+ backgroundColor: "#ffffff",
128385
+ textStyle: {
128386
+ fontFamily: "Microsoft YaHei, sans-serif"
128387
+ },
128388
+ title: {
128389
+ textStyle: {
128390
+ color: "#333"
128391
+ },
128392
+ subtextStyle: {
128393
+ color: "#666666"
128394
+ }
128395
+ },
128396
+ line: {
128397
+ itemStyle: {
128398
+ },
128399
+ lineStyle: {
128400
+ width: 2
128401
+ }
128402
+ },
128403
+ bar: {
128404
+ itemStyle: {
128405
+ borderRadius: 4
128406
+ }
128407
+ },
128408
+ pie: {
128409
+ roseType: "radius",
128410
+ label: {
128411
+ color: "#333"
128412
+ }
128413
+ },
128414
+ radar: {
128415
+ indicator: {
128416
+ color: "#666666"
128417
+ }
128418
+ },
128419
+ map: {
128420
+ label: {
128421
+ color: "#333"
128422
+ },
128423
+ itemStyle: {
128424
+ borderColor: "#fff"
128425
+ }
128426
+ },
128427
+ gauge: {
128428
+ axisLine: {
128429
+ lineStyle: {
128430
+ color: [[1, "#5470c6"]]
128431
+ }
128432
+ }
128433
+ },
128434
+ toolbox: {
128435
+ iconStyle: {
128436
+ borderColor: "#666666"
128437
+ }
128438
+ },
128439
+ axisLine: {
128440
+ lineStyle: {
128441
+ color: "#DCDFE6"
128442
+ }
128443
+ },
128444
+ axisTick: {
128445
+ lineStyle: {
128446
+ color: "#DCDFE6"
128447
+ }
128448
+ },
128449
+ splitLine: {
128450
+ lineStyle: {
128451
+ color: "#ebeef5"
128452
+ }
128453
+ },
128454
+ splitArea: {
128455
+ areaStyle: {
128456
+ color: ["#f7f8fa", "#ffffff"]
128457
+ }
128458
+ },
128459
+ legend: {
128460
+ textStyle: {
128461
+ color: "#666"
128462
+ }
128463
+ },
128464
+ tooltip: {
128465
+ backgroundColor: "rgba(255, 255, 255, 0.95)",
128466
+ borderColor: "#DCDFE6",
128467
+ borderWidth: 1,
128468
+ textStyle: {
128469
+ color: "#333"
128470
+ }
128471
+ }
128472
+ });
128473
+
128474
+ // CONCATENATED MODULE: ./src/components/ex-chart/theme/orange.js
128475
+ /* harmony default export */ var orange = ({
128476
+ color: ["#e69419", "#A5b4da", "#F8792C", "#97bfb4", "#de747b", "#d6bac0", "#e62737", "#f35969", "#f1ccb0", "#b7394e", "#fe9c1c2"],
128477
+ backgroundColor: "#ffffff",
128478
+ textStyle: {
128479
+ fontFamily: "Microsoft YaHei, sans-serif"
128480
+ },
128481
+ title: {
128482
+ textStyle: {
128483
+ color: "#333"
128484
+ },
128485
+ subtextStyle: {
128486
+ color: "#666666"
128487
+ }
128488
+ },
128489
+ line: {
128490
+ itemStyle: {
128491
+ color: "#e69419"
128492
+ },
128493
+ lineStyle: {
128494
+ width: 2
128495
+ }
128496
+ },
128497
+ bar: {
128498
+ itemStyle: {
128499
+ borderRadius: 4
128500
+ }
128501
+ },
128502
+ pie: {
128503
+ roseType: "radius",
128504
+ label: {
128505
+ color: "#333"
128506
+ }
128507
+ },
128508
+ radar: {
128509
+ indicator: {
128510
+ color: "#666666"
128511
+ }
128512
+ },
128513
+ map: {
128514
+ label: {
128515
+ color: "#333"
128516
+ },
128517
+ itemStyle: {
128518
+ borderColor: "#fff"
128519
+ }
128520
+ },
128521
+ gauge: {
128522
+ axisLine: {
128523
+ lineStyle: {
128524
+ color: [[1, "#5470c6"]]
128525
+ }
128526
+ }
128527
+ },
128528
+ toolbox: {
128529
+ iconStyle: {
128530
+ borderColor: "#666666"
128531
+ }
128532
+ },
128533
+ axisLine: {
128534
+ lineStyle: {
128535
+ color: "#DCDFE6"
128536
+ }
128537
+ },
128538
+ axisTick: {
128539
+ lineStyle: {
128540
+ color: "#DCDFE6"
128541
+ }
128542
+ },
128543
+ splitLine: {
128544
+ lineStyle: {
128545
+ color: "#ebeef5"
128546
+ }
128547
+ },
128548
+ splitArea: {
128549
+ areaStyle: {
128550
+ color: ["#f7f8fa", "#ffffff"]
128551
+ }
128552
+ },
128553
+ legend: {
128554
+ textStyle: {
128555
+ color: "#666"
128556
+ }
128557
+ },
128558
+ tooltip: {
128559
+ backgroundColor: "rgba(255, 255, 255, 0.95)",
128560
+ borderColor: "#DCDFE6",
128561
+ borderWidth: 1,
128562
+ textStyle: {
128563
+ color: "#333"
128564
+ }
128565
+ }
128566
+ });
128567
+
128568
+ // CONCATENATED MODULE: ./src/components/ex-chart/utils.js
128569
+
128570
+
128571
+
128572
+
128573
+
128574
+
128575
+ const themeKeys = {
128576
+ "default": white,
128577
+ "white": white,
128578
+ "dark": dark,
128579
+ "blue": blue,
128580
+ "starry": starry,
128581
+ "orange": orange
128582
+ };
128583
+
128584
+ // echarts 仅在客户端加载,避免 SSR 编译/渲染报错
128585
+ let echarts = null;
128586
+
128587
+ function getEcharts() {
128588
+ if (!echarts && typeof window !== 'undefined') {
128589
+ try {
128590
+ echarts = __webpack_require__("313e");
128591
+ // 注册所有主题
128592
+ for (const key in themeKeys) {
128593
+ echarts.registerTheme(key, themeKeys[key]);
128594
+ }
128595
+ } catch (e) {
128596
+ console.warn('[ExChart] echarts 加载失败:', e.message);
128597
+ }
128598
+ }
128599
+ return echarts;
128600
+ }
128601
+
128602
+ // 字体大小配置
128603
+ const fontSizeMap = {
128604
+ small: {
128605
+ title: 14,
128606
+ subtitle: 11,
128607
+ legend: 11,
128608
+ axisLabel: 10,
128609
+ tooltip: 11,
128610
+ label: 11
128611
+ },
128612
+ medium: {
128613
+ title: 16,
128614
+ subtitle: 12,
128615
+ legend: 12,
128616
+ axisLabel: 12,
128617
+ tooltip: 12,
128618
+ label: 12
128619
+ },
128620
+ large: {
128621
+ title: 18,
128622
+ subtitle: 14,
128623
+ legend: 14,
128624
+ axisLabel: 14,
128625
+ tooltip: 14,
128626
+ label: 14
128627
+ }
128628
+ };
128629
+
128630
+ function EchartsUtil() {}
128631
+
128632
+ EchartsUtil.currentTheme = "default";
128633
+ EchartsUtil.currentSize = "medium";
128634
+ EchartsUtil.inverse = false;
128635
+
128636
+ EchartsUtil.EchartsUtil = {
128637
+ backgroundColor: "transparent",
128638
+ tooltip: {
128639
+ trigger: "axis",
128640
+ borderWidth: 1
128641
+ },
128642
+ legend: {
128643
+ right: 20,
128644
+ top: 0,
128645
+ show: true,
128646
+ textStyle: {
128647
+ fontSize: 12
128648
+ }
128649
+ },
128650
+ grid: {
128651
+ top: "25%",
128652
+ left: "40",
128653
+ right: "15",
128654
+ bottom: "40"
128655
+ },
128656
+ xAxis: {
128657
+ type: "category",
128658
+ boundaryGap: false,
128659
+ axisTick: {
128660
+ show: true,
128661
+ length: 4
128662
+ },
128663
+ axisLabel: {
128664
+ fontSize: 12,
128665
+ interval: 0,
128666
+ formatter: function(value) {
128667
+ return !this.reverse && this.longLable ? value.replace(new RegExp(`(.{${this.longLableSplitNum}})`, "g"), `$1\n`) : value;
128668
+ }
128669
+ }
128670
+ },
128671
+ yAxis: {
128672
+ type: "value",
128673
+ axisTick: {
128674
+ show: false
128675
+ },
128676
+ min: null,
128677
+ max: null,
128678
+ axisLabel: {
128679
+ show: false
128680
+ },
128681
+ splitLine: {
128682
+ lineStyle: {
128683
+ type: "dashed",
128684
+ width: 1
128685
+ }
128686
+ }
128687
+ }
128688
+ };
128689
+
128690
+ EchartsUtil.chartInstanceList = [];
128691
+
128692
+ EchartsUtil.mergeOptions = function(themeOption, customOption) {
128693
+ return Object.assign({}, this.baseOption, themeOption, customOption);
128694
+ };
128695
+
128696
+ // 根据字体大小调整主题配置
128697
+ EchartsUtil.applyFontSize = function(themeOption, size) {
128698
+ const fontSizeConfig = fontSizeMap[size] || fontSizeMap.medium;
128699
+
128700
+ const result = JSON.parse(JSON.stringify(themeOption));
128701
+
128702
+ // 调整标题字体大小
128703
+ if (result.title && result.title.textStyle) {
128704
+ result.title.textStyle.fontSize = fontSizeConfig.title;
128705
+ }
128706
+ if (result.title && result.title.subtextStyle) {
128707
+ result.title.subtextStyle.fontSize = fontSizeConfig.subtitle;
128708
+ }
128709
+
128710
+ // 调整图例字体大小
128711
+ if (result.legend && result.legend.textStyle) {
128712
+ result.legend.textStyle.fontSize = fontSizeConfig.legend;
128713
+ }
128714
+
128715
+ // 调整提示框字体大小
128716
+ if (result.tooltip && result.tooltip.textStyle) {
128717
+ result.tooltip.textStyle.fontSize = fontSizeConfig.tooltip;
128718
+ }
128719
+
128720
+ // 调整饼图标签字体大小
128721
+ if (result.pie && result.pie.label) {
128722
+ if (typeof result.pie.label === 'object') {
128723
+ result.pie.label.fontSize = fontSizeConfig.label;
128724
+ }
128725
+ }
128726
+
128727
+ // 调整雷达图指示器字体大小
128728
+ if (result.radar && result.radar.indicator) {
128729
+ if (typeof result.radar.indicator === 'object' && result.radar.indicator.textStyle) {
128730
+ result.radar.indicator.textStyle.fontSize = fontSizeConfig.label;
128731
+ }
128732
+ }
128733
+
128734
+ // 调整地图标签字体大小
128735
+ if (result.map && result.map.label) {
128736
+ if (typeof result.map.label === 'object') {
128737
+ result.map.label.fontSize = fontSizeConfig.label;
128738
+ }
128739
+ }
128740
+
128741
+ return result;
128742
+ };
128743
+
128744
+ EchartsUtil.init = function(dom, theme, customOption, size) {
128745
+ const ec = getEcharts();
128746
+ // SSR 环境下忽略初始化
128747
+ if (!ec || !dom) return null;
128748
+
128749
+ theme = theme || "default";
128750
+ size = size || "medium";
128751
+ customOption = customOption || {};
128752
+
128753
+ const useTheme = this.currentTheme || theme;
128754
+ const useSize = this.currentSize || size;
128755
+
128756
+ this.currentTheme = useTheme;
128757
+ this.currentSize = useSize;
128758
+
128759
+ let themeOption = themeKeys[useTheme];
128760
+ // 应用字体大小配置
128761
+ themeOption = this.applyFontSize(themeOption, useSize);
128762
+
128763
+ const option = this.mergeOptions(themeOption, customOption);
128764
+
128765
+ const chart = ec.init(dom, useTheme);
128766
+ chart.setOption(option, true);
128767
+
128768
+ this.chartInstanceList.push({
128769
+ dom,
128770
+ chart,
128771
+ customOption,
128772
+ size: useSize
128773
+ });
128774
+
128775
+ this.bindResize(chart);
128776
+ return chart;
128777
+ };
128778
+
128779
+ EchartsUtil.changeSingleTheme = function(dom, chartIns, customOption, newTheme) {
128780
+ const ec = getEcharts();
128781
+ if (!ec || !dom || !chartIns) return;
128782
+
128783
+ customOption = customOption || {};
128784
+ newTheme = newTheme || "default";
128785
+
128786
+ this.currentTheme = newTheme;
128787
+ chartIns.dispose();
128788
+
128789
+ const newChart = ec.init(dom, newTheme, customOption);
128790
+
128791
+ const item = this.chartInstanceList.find(function(v) {
128792
+ return v.dom === dom;
128793
+ });
128794
+
128795
+ if (item) {
128796
+ item.chart = newChart;
128797
+ }
128798
+
128799
+ return newChart;
128800
+ };
128801
+
128802
+ EchartsUtil.changeAllTheme = function(newTheme, newSize) {
128803
+ const ec = getEcharts();
128804
+ if (!ec || !newTheme) return;
128805
+
128806
+ this.currentTheme = newTheme;
128807
+ // 如果传入了新的 size,则更新全局 size
128808
+ if (newSize) {
128809
+ this.currentSize = newSize;
128810
+ }
128811
+
128812
+ this.chartInstanceList.forEach(function(item) {
128813
+ const dom = item.dom;
128814
+ const chart = item.chart;
128815
+ const customOption = item.customOption;
128816
+ // 使用图表自己的 size,如果没有则使用全局 size
128817
+ const useSize = item.size || EchartsUtil.currentSize;
128818
+
128819
+ if (chart) {
128820
+ chart.dispose();
128821
+ }
128822
+
128823
+ const newChart = ec.init(dom, newTheme);
128824
+ let themeOption = themeKeys[newTheme];
128825
+ // 应用字体大小配置
128826
+ themeOption = EchartsUtil.applyFontSize(themeOption, useSize);
128827
+ const option = EchartsUtil.mergeOptions(themeOption, customOption);
128828
+
128829
+ newChart.setOption(option, true);
128830
+ item.chart = newChart;
128831
+ // 更新图表的 size 记录
128832
+ item.size = useSize;
128833
+ EchartsUtil.bindResize(newChart);
128834
+ });
128835
+ };
128836
+
128837
+ EchartsUtil.bindResize = function(chartIns) {
128838
+ if (!chartIns || chartIns.resizeLocked) return;
128839
+
128840
+ window.addEventListener("resize", function() {
128841
+ chartIns.resize();
128842
+ });
128843
+
128844
+ chartIns._resizeLocked = true;
128845
+ };
128846
+
128847
+ EchartsUtil.destroy = function(chartIns) {
128848
+ if (chartIns) {
128849
+ chartIns.dispose();
128850
+ }
128851
+
128852
+ this.chartInstanceList = this.chartInstanceList.filter(function(item) {
128853
+ return item.chart !== chartIns;
128854
+ });
128855
+ };
128856
+
128857
+ EchartsUtil.destroyAll = function() {
128858
+ this.chartInstanceList.forEach(function(item) {
128859
+ if (item.chart) {
128860
+ item.chart.dispose();
128861
+ }
128862
+ });
128863
+
128864
+ this.chartInstanceList = [];
128865
+ };
128866
+
128867
+ /* harmony default export */ var utils = (EchartsUtil);
128868
+
128869
+
128870
+
128073
128871
  // CONCATENATED MODULE: ./src/utils/index.js
128872
+
128074
128873
  // 默认配置
128075
128874
  const defaultConfig = {
128076
128875
  theme: 'white',
@@ -128117,7 +128916,7 @@ const setConfig = function(config) {
128117
128916
  }
128118
128917
 
128119
128918
 
128120
- // 设置主题
128919
+ // 设置主题 并更新图表主题
128121
128920
  const setTheme = function(theme) {
128122
128921
  const validThemes = ['white', 'dark']
128123
128922
  if (!validThemes.includes(theme)) {
@@ -128132,9 +128931,13 @@ const setTheme = function(theme) {
128132
128931
  if (theme === 'dark') {
128133
128932
  root.setAttribute('data-theme', 'dark')
128134
128933
  } else {
128135
- root.removeAttribute('data-theme')
128934
+ root.setAttribute('data-theme', theme)
128136
128935
  }
128137
128936
 
128937
+ // 更新图表主题
128938
+ utils.changeAllTheme(currentConfig.theme, currentConfig.size)
128939
+ console.log('更新图表主题')
128940
+
128138
128941
  emitConfigChange('theme', theme)
128139
128942
  }
128140
128943
 
@@ -128148,6 +128951,10 @@ const setSize = function(size) {
128148
128951
 
128149
128952
  currentConfig.size = size
128150
128953
  document.documentElement.setAttribute('data-size', size)
128954
+ // 更新图表主题
128955
+ utils.changeAllTheme(currentConfig.theme, currentConfig.size)
128956
+ console.log('更新图表字体')
128957
+
128151
128958
  emitConfigChange('size', size)
128152
128959
  }
128153
128960
 
@@ -128252,7 +129059,7 @@ const onConfigChange = function(listener) {
128252
129059
  }
128253
129060
  }
128254
129061
 
128255
- /* harmony default export */ var utils = ({
129062
+ /* harmony default export */ var src_utils = ({
128256
129063
  setTheme,
128257
129064
  setSize,
128258
129065
  setPrimaryColor,
@@ -128265,7 +129072,7 @@ const onConfigChange = function(listener) {
128265
129072
  onConfigChange
128266
129073
  });
128267
129074
 
128268
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-button/index.vue?vue&type=template&id=10eba8a7
129075
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-button/index.vue?vue&type=template&id=10eba8a7
128269
129076
  var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:"el-button xt-button",class:[
128270
129077
  _vm.type ?'xt-button--' + _vm.type: '',
128271
129078
  _vm.size ? 'xt-button--' + _vm.size : '',
@@ -128441,7 +129248,7 @@ var component = normalizeComponent(
128441
129248
  // CONCATENATED MODULE: ./src/components/xt-button/index.js
128442
129249
 
128443
129250
  /* harmony default export */ var components_xt_button = (xt_button);
128444
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-input/index.vue?vue&type=template&id=f11783a2
129251
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-input/index.vue?vue&type=template&id=f11783a2
128445
129252
  var xt_inputvue_type_template_id_f11783a2_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"xt-input"},[_c('el-input',{style:(_vm.inputStyle),attrs:{"value":_vm.value,"placeholder":_vm.placeholder},on:{"input":function($event){return _vm.$emit('input', $event)}}})],1)
128446
129253
  }
128447
129254
  var xt_inputvue_type_template_id_f11783a2_staticRenderFns = []
@@ -128501,7 +129308,7 @@ var xt_input_component = normalizeComponent(
128501
129308
  // CONCATENATED MODULE: ./src/components/xt-input/index.js
128502
129309
 
128503
129310
  /* harmony default export */ var components_xt_input = (xt_input);
128504
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-flex-box/index.vue?vue&type=template&id=21429280
129311
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-flex-box/index.vue?vue&type=template&id=21429280
128505
129312
  var xt_flex_boxvue_type_template_id_21429280_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"xt-flex-box",class:_vm.classAttrs,style:(_vm.flexStyle)},[_vm._t("default")],2)
128506
129313
  }
128507
129314
  var xt_flex_boxvue_type_template_id_21429280_staticRenderFns = []
@@ -128563,7 +129370,7 @@ var xt_flex_box_component = normalizeComponent(
128563
129370
  // CONCATENATED MODULE: ./src/components/xt-flex-box/index.js
128564
129371
 
128565
129372
  /* harmony default export */ var components_xt_flex_box = (xt_flex_box);
128566
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-card/index.vue?vue&type=template&id=bc9ed1fa
129373
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-card/index.vue?vue&type=template&id=bc9ed1fa
128567
129374
  var xt_cardvue_type_template_id_bc9ed1fa_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"xt-card",class:{'no-padding': _vm.noPadding }},[(_vm.title)?_c('div',{staticClass:"card__header"},[_vm._t("icon",function(){return [_vm._v(_vm._s(_vm.icon))]}),_vm._t("title",function(){return [_vm._v(_vm._s(_vm.title))]})],2):_vm._e(),_c('div',{staticClass:"card__body"},[_vm._t("default",function(){return [_c('span',{staticClass:"value"},[_vm._t("value",function(){return [_vm._v(_vm._s(_vm.value))]})],2),_c('span',{staticClass:"unit"},[_vm._v(_vm._s(_vm.unit))])]})],2)])
128568
129375
  }
128569
129376
  var xt_cardvue_type_template_id_bc9ed1fa_staticRenderFns = []
@@ -128611,7 +129418,7 @@ var xt_card_component = normalizeComponent(
128611
129418
  // CONCATENATED MODULE: ./src/components/xt-card/index.js
128612
129419
 
128613
129420
  /* harmony default export */ var components_xt_card = (xt_card);
128614
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-card-item/index.vue?vue&type=template&id=4f375226
129421
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-card-item/index.vue?vue&type=template&id=4f375226
128615
129422
  var xt_card_itemvue_type_template_id_4f375226_render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.iconType=='border')?_c('FlexBox',{staticClass:"xt-card-item is-border",class:[_vm.iconType=='border'?`is-${_vm.type}`:''],style:(_vm.cardItemStyle),attrs:{"content":"between"}},[(_vm.title)?_c('span',{staticClass:"item__label"},[_vm._t("label",function(){return [_vm._v(_vm._s(_vm.label))]})],2):_vm._e(),_c('span',{staticClass:"item__value"},[_vm._t("value",function(){return [_vm._v(_vm._s(_vm.value))]})],2),_c('span',{staticClass:"item__unit"},[_vm._t("unit",function(){return [_vm._v(_vm._s(_vm.unit))]})],2)]):_c('FlexBox',{staticClass:"xt-card-item",attrs:{"direction":_vm.direction,"content":_vm.contentAlign}},[_vm._t("icon",function(){return [_c('el-button',{attrs:{"type":_vm.type,"circle":_vm.circle,"round":_vm.round,"plain":"","icon":_vm.icon}})]}),_c('div',{staticClass:"item__value"},[_c('span',{staticClass:"value",style:(_vm.valueStyle)},[_vm._t("value",function(){return [_vm._v(_vm._s(_vm.label))]})],2),_c('div',{staticClass:"unit"},[_vm._v(_vm._s(_vm.value))])])],2)
128616
129423
  }
128617
129424
  var xt_card_itemvue_type_template_id_4f375226_staticRenderFns = []
@@ -128705,6 +129512,7 @@ var xt_card_item_component = normalizeComponent(
128705
129512
  /* harmony default export */ var components_xt_card_item = (xt_card_item);
128706
129513
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-config-provider/index.vue?vue&type=script&lang=js
128707
129514
 
129515
+
128708
129516
  /* harmony default export */ var xt_config_providervue_type_script_lang_js = ({
128709
129517
  name: 'XtConfigProvider',
128710
129518
  inheritAttrs: false,
@@ -128719,25 +129527,25 @@ var xt_card_item_component = normalizeComponent(
128719
129527
  },
128720
129528
  watch: {
128721
129529
  theme(newVal) {
128722
- this.$provide('xtConfig', {
129530
+ this.xtConfig ={
128723
129531
  theme: newVal,
128724
129532
  size: this.size,
128725
129533
  primaryColor: this.primaryColor
128726
- })
129534
+ }
128727
129535
  },
128728
129536
  size(newVal) {
128729
- this.$provide('xtConfig', {
128730
- theme: this.theme,
128731
- size: newVal,
129537
+ this.xtConfig ={
129538
+ theme: newVal,
129539
+ size: this.size,
128732
129540
  primaryColor: this.primaryColor
128733
- })
129541
+ }
128734
129542
  },
128735
129543
  primaryColor(newVal) {
128736
- this.$provide('xtConfig', {
128737
- theme: this.theme,
129544
+ this.xtConfig ={
129545
+ theme: newVal,
128738
129546
  size: this.size,
128739
- primaryColor: newVal
128740
- })
129547
+ primaryColor: this.primaryColor
129548
+ }
128741
129549
  }
128742
129550
  },
128743
129551
  render(h) {
@@ -128845,9 +129653,9 @@ var xt_card_item_component = normalizeComponent(
128845
129653
  }
128846
129654
 
128847
129655
  const sizeMap = {
128848
- small: '12px',
128849
- medium: '14px',
128850
- large: '16px'
129656
+ small: '14px',
129657
+ medium: '16px',
129658
+ large: '18px'
128851
129659
  }
128852
129660
  if (sizeMap[this.size]) {
128853
129661
  result['--xt-font-size-base'] = sizeMap[this.size]
@@ -129014,6 +129822,9 @@ var xt_card_item_component = normalizeComponent(
129014
129822
 
129015
129823
  // 设置 data-theme 属性
129016
129824
  element.setAttribute('data-theme', this.theme)
129825
+
129826
+ // 更新图表颜色
129827
+ utils.changeAllTheme(this.theme, this.size, this.primaryColor)
129017
129828
 
129018
129829
  // 触发主题改变钩子(当主题实际发生变化时)
129019
129830
  if (prevTheme !== this.theme && typeof this.onThemeChange === 'function') {
@@ -129056,8 +129867,8 @@ var xt_card_item_component = normalizeComponent(
129056
129867
 
129057
129868
  // CONCATENATED MODULE: ./src/components/xt-config-provider/index.vue?vue&type=script&lang=js
129058
129869
  /* harmony default export */ var components_xt_config_providervue_type_script_lang_js = (xt_config_providervue_type_script_lang_js);
129059
- // EXTERNAL MODULE: ./src/components/xt-config-provider/index.vue?vue&type=style&index=0&id=cdc550fc&prod&scoped=true&lang=css
129060
- var xt_config_providervue_type_style_index_0_id_cdc550fc_prod_scoped_true_lang_css = __webpack_require__("e3e9");
129870
+ // EXTERNAL MODULE: ./src/components/xt-config-provider/index.vue?vue&type=style&index=0&id=314a5524&prod&scoped=true&lang=css
129871
+ var xt_config_providervue_type_style_index_0_id_314a5524_prod_scoped_true_lang_css = __webpack_require__("24a5");
129061
129872
 
129062
129873
  // CONCATENATED MODULE: ./src/components/xt-config-provider/index.vue
129063
129874
  var xt_config_provider_render, xt_config_provider_staticRenderFns
@@ -129074,7 +129885,7 @@ var xt_config_provider_component = normalizeComponent(
129074
129885
  xt_config_provider_staticRenderFns,
129075
129886
  false,
129076
129887
  null,
129077
- "cdc550fc",
129888
+ "314a5524",
129078
129889
  null
129079
129890
 
129080
129891
  )
@@ -129084,7 +129895,7 @@ var xt_config_provider_component = normalizeComponent(
129084
129895
 
129085
129896
  /* harmony default export */ var components_xt_config_provider = (xt_config_provider);
129086
129897
 
129087
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-text/index.vue?vue&type=template&id=2b4328b0
129898
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-text/index.vue?vue&type=template&id=2b4328b0
129088
129899
  var xt_textvue_type_template_id_2b4328b0_render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:"xt-text",class:[
129089
129900
  _vm.type ? 'xt-text--' + _vm.type : '',
129090
129901
  'xt-text--' + _vm.size,
@@ -129231,7 +130042,7 @@ var xt_text_component = normalizeComponent(
129231
130042
  // CONCATENATED MODULE: ./src/components/xt-text/index.js
129232
130043
 
129233
130044
  /* harmony default export */ var components_xt_text = (xt_text);
129234
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-grid-box/index.vue?vue&type=template&id=67e197c4
130045
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-grid-box/index.vue?vue&type=template&id=67e197c4
129235
130046
  var xt_grid_boxvue_type_template_id_67e197c4_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"xt-grid-box",style:(_vm.styleAttrs)},[_vm._t("default")],2)
129236
130047
  }
129237
130048
  var xt_grid_boxvue_type_template_id_67e197c4_staticRenderFns = []
@@ -129395,7 +130206,7 @@ var xt_grid_box_component = normalizeComponent(
129395
130206
 
129396
130207
  /* harmony default export */ var components_xt_grid_box = (xt_grid_box);
129397
130208
 
129398
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-grid-item/index.vue?vue&type=template&id=5318efc6&scoped=true
130209
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-grid-item/index.vue?vue&type=template&id=5318efc6&scoped=true
129399
130210
  var xt_grid_itemvue_type_template_id_5318efc6_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"xt-grid-item",style:(_vm.styleAttrs)},[_vm._t("default")],2)
129400
130211
  }
129401
130212
  var xt_grid_itemvue_type_template_id_5318efc6_scoped_true_staticRenderFns = []
@@ -129528,7 +130339,7 @@ var xt_grid_item_component = normalizeComponent(
129528
130339
  // CONCATENATED MODULE: ./src/components/xt-grid-item/index.js
129529
130340
 
129530
130341
  /* harmony default export */ var components_xt_grid_item = (xt_grid_item);
129531
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/index.vue?vue&type=template&id=6a59ddb5&scoped=true
130342
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/index.vue?vue&type=template&id=6a59ddb5&scoped=true
129532
130343
  var xt_date_pickervue_type_template_id_6a59ddb5_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{"display":"inline-block"}},[(_vm.dateType=='quarter')?_c('FlexBox',{staticClass:"xt-date-picker",class:{focus: _vm.isfocus},style:(_vm.width?{width: `${_vm.width}px`}:{}),attrs:{"type":"inline-flex"}},[_c('Quarter',{attrs:{"format":_vm.format,"placeholder":"开始时间","quarter-type":"quarter-start","clearable":""},model:{value:(_vm.timeStart),callback:function ($$v) {_vm.timeStart=$$v},expression:"timeStart"}}),_c('span',{staticClass:"separator"},[_vm._v(_vm._s(_vm.separator))]),_c('Quarter',{attrs:{"format":_vm.format,"placeholder":"结束时间","quarter-type":"quarter-end","clearable":""},model:{value:(_vm.timeEnd),callback:function ($$v) {_vm.timeEnd=$$v},expression:"timeEnd"}})],1):_c('FlexBox',{staticClass:"xt-date",class:{focus: _vm.isfocus},style:(_vm.width?{width: `${_vm.width}px`}:{}),attrs:{"type":"inline-flex"}},[_c('el-date-picker',{key:"startSelect",ref:"timeStart",attrs:{"size":"small","disabled":_vm.disabled,"append-to-body":"","picker-options":_vm.startTimeRange,"format":_vm.format,"type":_vm.dateType,"placeholder":"开始时间","clearable":""},on:{"blur":function($event){return _vm.$emit('blur')},"focus":function($event){return _vm.$emit('focus')}},model:{value:(_vm.timeStart),callback:function ($$v) {_vm.timeStart=$$v},expression:"timeStart"}}),_c('span',{staticClass:"separator"},[_vm._v(_vm._s(_vm.separator))]),_c('el-date-picker',{key:"endSelect",ref:"timeEnd",attrs:{"size":"small","disabled":_vm.disabled,"append-to-body":"","picker-options":_vm.endTimeRange,"format":_vm.format,"type":_vm.dateType,"placeholder":"结束时间","clearable":""},on:{"blur":function($event){return _vm.$emit('blur')},"focus":function($event){return _vm.$emit('focus')}},model:{value:(_vm.timeEnd),callback:function ($$v) {_vm.timeEnd=$$v},expression:"timeEnd"}})],1)],1)
129533
130344
  }
129534
130345
  var xt_date_pickervue_type_template_id_6a59ddb5_scoped_true_staticRenderFns = []
@@ -129536,7 +130347,7 @@ var xt_date_pickervue_type_template_id_6a59ddb5_scoped_true_staticRenderFns = []
129536
130347
 
129537
130348
  // CONCATENATED MODULE: ./src/components/xt-date-picker/index.vue?vue&type=template&id=6a59ddb5&scoped=true
129538
130349
 
129539
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/quarter.vue?vue&type=template&id=4e3cbf9a
130350
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-date-picker/quarter.vue?vue&type=template&id=4e3cbf9a
129540
130351
  var quartervue_type_template_id_4e3cbf9a_render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-popover',{attrs:{"trigger":"click","disabled":_vm.disabled,"transition":"el-zoom-in-top","placement":_vm.placement,"width":_vm.popoverWidth},on:{"hide":_vm.handleBlur},model:{value:(_vm.popoverVisible),callback:function ($$v) {_vm.popoverVisible=$$v},expression:"popoverVisible"}},[_c('div',{staticClass:"quarter-wrapper"},[_c('BaseFlexBox',{attrs:{"content":"between"}},[_c('i',{staticClass:"el-icon-d-arrow-left",on:{"click":_vm.prev}}),_c('span',[_vm._v(_vm._s(_vm.selectYear))]),_c('i',{staticClass:"el-icon-d-arrow-right",on:{"click":_vm.after}})]),_c('BaseFlexBox',{staticStyle:{"margin-top":"10px"},attrs:{"content":"between"}},_vm._l((_vm.quarterList),function(item){return _c('el-button',{key:item.value,attrs:{"disabled":_vm.getDisable(item),"type":_vm.currentyear==_vm.selectYear&&item.value == _vm.currentQuarter ?'primary':'',"size":"mini","round":""},on:{"click":function($event){return _vm.setCurrent(item)}}},[_vm._v(_vm._s(item.label))])}),1)],1),_c('el-input',{ref:"reference",attrs:{"slot":"reference","size":"small","value":_vm.quarterLabel,"readonly":"","title":_vm.value,"placeholder":_vm.placeholder,"prefix-icon":"el-icon-date","clearable":""},slot:"reference"})],1)
129541
130352
  }
129542
130353
  var quartervue_type_template_id_4e3cbf9a_staticRenderFns = []
@@ -129824,13 +130635,13 @@ var xt_date_picker_component = normalizeComponent(
129824
130635
  // CONCATENATED MODULE: ./src/components/xt-date-picker/index.js
129825
130636
 
129826
130637
  /* harmony default export */ var components_xt_date_picker = (xt_date_picker);
129827
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-button/index.vue?vue&type=template&id=39655574
129828
- var ex_buttonvue_type_template_id_39655574_render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-button',_vm._b({staticClass:"ex-button",class:_vm.buttonClasses,on:{"click":_vm.handleClick}},'el-button',_vm.$attrs,false),[_vm._t("default")],2)
130638
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-button/index.vue?vue&type=template&id=1b7e9238
130639
+ var ex_buttonvue_type_template_id_1b7e9238_render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-button',_vm._b({staticClass:"ex-button",class:_vm.buttonClasses,on:{"click":_vm.handleClick}},'el-button',_vm.$attrs,false),[_vm._t("default")],2)
129829
130640
  }
129830
- var ex_buttonvue_type_template_id_39655574_staticRenderFns = []
130641
+ var ex_buttonvue_type_template_id_1b7e9238_staticRenderFns = []
129831
130642
 
129832
130643
 
129833
- // CONCATENATED MODULE: ./src/components/ex-button/index.vue?vue&type=template&id=39655574
130644
+ // CONCATENATED MODULE: ./src/components/ex-button/index.vue?vue&type=template&id=1b7e9238
129834
130645
 
129835
130646
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-button/index.vue?vue&type=script&lang=js
129836
130647
 
@@ -129847,6 +130658,11 @@ var ex_buttonvue_type_template_id_39655574_staticRenderFns = []
129847
130658
  }
129848
130659
  },
129849
130660
  props: {
130661
+ type: {
130662
+ type: String,
130663
+ default: 'default',
130664
+ validator: (val) => ['default', 'primary', 'success', 'warning', 'danger'].includes(val)
130665
+ },
129850
130666
  throttle: {
129851
130667
  type: Number,
129852
130668
  default: 0
@@ -129854,7 +130670,7 @@ var ex_buttonvue_type_template_id_39655574_staticRenderFns = []
129854
130670
  size: {
129855
130671
  type: String,
129856
130672
  default: null,
129857
- validator: (val) => !val || ['small', 'medium', 'large'].includes(val)
130673
+ validator: (val) => !val || ['mini', 'small', 'medium', 'large'].includes(val)
129858
130674
  }
129859
130675
  },
129860
130676
  data() {
@@ -129869,7 +130685,8 @@ var ex_buttonvue_type_template_id_39655574_staticRenderFns = []
129869
130685
  },
129870
130686
  buttonClasses() {
129871
130687
  return [
129872
- `ex-button-${this.finalSize}`
130688
+ `ex-button-${this.finalSize}`,
130689
+ `ex-button-${this.type}`
129873
130690
  ]
129874
130691
  }
129875
130692
  },
@@ -129896,8 +130713,8 @@ var ex_buttonvue_type_template_id_39655574_staticRenderFns = []
129896
130713
 
129897
130714
  var ex_button_component = normalizeComponent(
129898
130715
  components_ex_buttonvue_type_script_lang_js,
129899
- ex_buttonvue_type_template_id_39655574_render,
129900
- ex_buttonvue_type_template_id_39655574_staticRenderFns,
130716
+ ex_buttonvue_type_template_id_1b7e9238_render,
130717
+ ex_buttonvue_type_template_id_1b7e9238_staticRenderFns,
129901
130718
  false,
129902
130719
  null,
129903
130720
  null,
@@ -129909,7 +130726,7 @@ var ex_button_component = normalizeComponent(
129909
130726
  // CONCATENATED MODULE: ./src/components/ex-button/index.js
129910
130727
 
129911
130728
  /* harmony default export */ var components_ex_button = (ex_button);
129912
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/index.vue?vue&type=template&id=40ae37dd
130729
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/index.vue?vue&type=template&id=40ae37dd
129913
130730
  var ex_chartvue_type_template_id_40ae37dd_render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.type=='bar')?_c('ex-bar',_vm._b({attrs:{"theme":_vm.myTheme,"size":_vm.mySize}},'ex-bar',_vm.$attrs,false)):(_vm.type=='line')?_c('ex-line',_vm._b({attrs:{"theme":_vm.myTheme,"size":_vm.mySize}},'ex-line',_vm.$attrs,false)):(_vm.type=='pie')?_c('ex-pie',_vm._b({attrs:{"theme":_vm.myTheme,"size":_vm.mySize}},'ex-pie',_vm.$attrs,false)):(_vm.type=='multi')?_c('ex-multi',_vm._b({attrs:{"theme":_vm.myTheme,"size":_vm.mySize}},'ex-multi',_vm.$attrs,false)):(_vm.type=='trend')?_c('ex-trend',_vm._b({attrs:{"theme":_vm.myTheme,"size":_vm.mySize}},'ex-trend',_vm.$attrs,false)):_vm._e()
129914
130731
  }
129915
130732
  var ex_chartvue_type_template_id_40ae37dd_staticRenderFns = []
@@ -129917,7 +130734,7 @@ var ex_chartvue_type_template_id_40ae37dd_staticRenderFns = []
129917
130734
 
129918
130735
  // CONCATENATED MODULE: ./src/components/ex-chart/index.vue?vue&type=template&id=40ae37dd
129919
130736
 
129920
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExBar.vue?vue&type=template&id=10acd2fc&scoped=true
130737
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExBar.vue?vue&type=template&id=10acd2fc&scoped=true
129921
130738
  var ExBarvue_type_template_id_10acd2fc_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:"barchart",staticClass:"bar-box"})
129922
130739
  }
129923
130740
  var ExBarvue_type_template_id_10acd2fc_scoped_true_staticRenderFns = []
@@ -129925,809 +130742,6 @@ var ExBarvue_type_template_id_10acd2fc_scoped_true_staticRenderFns = []
129925
130742
 
129926
130743
  // CONCATENATED MODULE: ./src/components/ex-chart/ExBar.vue?vue&type=template&id=10acd2fc&scoped=true
129927
130744
 
129928
- // CONCATENATED MODULE: ./src/components/ex-chart/theme/white.js
129929
- /* harmony default export */ var white = ({
129930
- color: ["#1890ff", "#37c3a4", "#29c0ce", "#6480D7", "#8cce6f", "#3a5dca", "#ffb74d"],
129931
- backgroundColor: "#ffffff",
129932
- textStyle: {
129933
- fontFamily: "Microsoft YaHei, sans-serif"
129934
- },
129935
- title: {
129936
- textStyle: {
129937
- color: "#333",
129938
- fontSize: 16
129939
- },
129940
- subtextStyle: {
129941
- color: "#666666",
129942
- fontSize: 12
129943
- }
129944
- },
129945
- line: {
129946
- itemStyle: {
129947
- },
129948
- lineStyle: {
129949
- width: 2
129950
- }
129951
- },
129952
- bar: {
129953
- itemStyle: {
129954
- borderRadius: 4
129955
- }
129956
- },
129957
- pie: {
129958
- roseType: "radius",
129959
- label: {
129960
- color: "#333"
129961
- }
129962
- },
129963
- radar: {
129964
- indicator: {
129965
- color: "#666666"
129966
- }
129967
- },
129968
- map: {
129969
- label: {
129970
- color: "#333"
129971
- },
129972
- itemStyle: {
129973
- borderColor: "#fff"
129974
- }
129975
- },
129976
- gauge: {
129977
- axisLine: {
129978
- lineStyle: {
129979
- color: [[1, "#5470c6"]]
129980
- }
129981
- }
129982
- },
129983
- toolbox: {
129984
- iconStyle: {
129985
- borderColor: "#666666"
129986
- }
129987
- },
129988
- xAxis: {
129989
- axisLine: {
129990
- lineStyle: {
129991
- color: "#DFE9EE"
129992
- }
129993
- },
129994
- axisTick: {
129995
- lineStyle: {
129996
- color: "#DFE9EE"
129997
- },
129998
- show: false
129999
- }
130000
- },
130001
- yAxis: {
130002
- axisLine: {
130003
- lineStyle: {
130004
- color: "#DFE9EE"
130005
- }
130006
- },
130007
- axisTick: {
130008
- lineStyle: {
130009
- color: "#DFE9EE"
130010
- }
130011
- },
130012
- splitLine: {
130013
- show: true,
130014
- lineStyle: {
130015
- type: "dashed",
130016
- color: "#DFE9EE"
130017
- }
130018
- }
130019
- },
130020
- splitArea: {
130021
- areaStyle: {
130022
- color: ["#f7f8fa", "#ffffff"]
130023
- }
130024
- },
130025
- legend: {
130026
- textStyle: {
130027
- color: "#333333"
130028
- }
130029
- },
130030
- tooltip: {
130031
- borderWidth: 1,
130032
- backgroundColor: "#ffffff",
130033
- textStyle: {
130034
- color: "#333333"
130035
- },
130036
- trigger: "axis"
130037
- }
130038
- });
130039
-
130040
- // CONCATENATED MODULE: ./src/components/ex-chart/theme/dark.js
130041
- /* harmony default export */ var dark = ({
130042
- color: ["#0de7ff", "#a782ff", "#fcdd60", "#0de7ff", "#ffc5a1", "#6291ae", "#13ce66"],
130043
- backgroundColor: "transparent",
130044
- textStyle: {
130045
- fontFamily: "Microsoft YaHei, sans-serif"
130046
- },
130047
- title: {
130048
- textStyle: {
130049
- color: "#333"
130050
- },
130051
- subtextStyle: {
130052
- color: "#666666"
130053
- }
130054
- },
130055
- line: {
130056
- itemStyle: {
130057
- },
130058
- lineStyle: {
130059
- width: 2
130060
- }
130061
- },
130062
- bar: {
130063
- itemStyle: {
130064
- borderRadius: 4
130065
- }
130066
- },
130067
- pie: {
130068
- roseType: "radius",
130069
- label: {
130070
- color: "#333"
130071
- }
130072
- },
130073
- radar: {
130074
- indicator: {
130075
- color: "#666666"
130076
- }
130077
- },
130078
- map: {
130079
- label: {
130080
- color: "#333"
130081
- },
130082
- itemStyle: {
130083
- borderColor: "#fff"
130084
- }
130085
- },
130086
- gauge: {
130087
- axisLine: {
130088
- lineStyle: {
130089
- color: [[1, "#5470c6"]]
130090
- }
130091
- }
130092
- },
130093
- toolbox: {
130094
- iconStyle: {
130095
- borderColor: "#666666"
130096
- }
130097
- },
130098
- axisLine: {
130099
- lineStyle: {
130100
- color: "#DCDFE6"
130101
- }
130102
- },
130103
- axisTick: {
130104
- lineStyle: {
130105
- color: "#DCDFE6"
130106
- }
130107
- },
130108
- splitLine: {
130109
- lineStyle: {
130110
- color: "#ebeef5"
130111
- }
130112
- },
130113
- splitArea: {
130114
- areaStyle: {
130115
- color: ["#f7f8fa", "#ffffff"]
130116
- }
130117
- },
130118
- legend: {
130119
- textStyle: {
130120
- color: "#666"
130121
- }
130122
- },
130123
- tooltip: {
130124
- backgroundColor: "rgba(255, 255, 255, 0.95)",
130125
- borderColor: "#DCDFE6",
130126
- borderWidth: 1,
130127
- textStyle: {
130128
- color: "#333"
130129
- }
130130
- }
130131
- });
130132
-
130133
- // CONCATENATED MODULE: ./src/components/ex-chart/theme/blue.js
130134
- /* harmony default export */ var blue = ({
130135
- color: ["#2CDEB3", "#A17EE6", "#E57E40", "#409EFF"],
130136
- backgroundColor: "#ffffff",
130137
- textStyle: {
130138
- fontFamily: "Microsoft YaHei, sans-serif"
130139
- },
130140
- title: {
130141
- textStyle: {
130142
- color: "#333"
130143
- },
130144
- subtextStyle: {
130145
- color: "#666666"
130146
- }
130147
- },
130148
- line: {
130149
- itemStyle: {
130150
- },
130151
- lineStyle: {
130152
- width: 2
130153
- }
130154
- },
130155
- bar: {
130156
- itemStyle: {
130157
- borderRadius: 4
130158
- }
130159
- },
130160
- pie: {
130161
- roseType: "radius",
130162
- label: {
130163
- color: "#333"
130164
- }
130165
- },
130166
- radar: {
130167
- indicator: {
130168
- color: "#666666"
130169
- }
130170
- },
130171
- map: {
130172
- label: {
130173
- color: "#333"
130174
- },
130175
- itemStyle: {
130176
- borderColor: "#fff"
130177
- }
130178
- },
130179
- gauge: {
130180
- axisLine: {
130181
- lineStyle: {
130182
- color: [[1, "#5470c6"]]
130183
- }
130184
- }
130185
- },
130186
- toolbox: {
130187
- iconStyle: {
130188
- borderColor: "#666666"
130189
- }
130190
- },
130191
- axisLine: {
130192
- lineStyle: {
130193
- color: "#DCDFE6"
130194
- }
130195
- },
130196
- axisTick: {
130197
- lineStyle: {
130198
- color: "#DCDFE6"
130199
- }
130200
- },
130201
- splitLine: {
130202
- lineStyle: {
130203
- color: "#ebeef5"
130204
- }
130205
- },
130206
- splitArea: {
130207
- areaStyle: {
130208
- color: ["#f7f8fa", "#ffffff"]
130209
- }
130210
- },
130211
- legend: {
130212
- textStyle: {
130213
- color: "#666"
130214
- }
130215
- },
130216
- tooltip: {
130217
- backgroundColor: "rgba(255, 255, 255, 0.95)",
130218
- borderColor: "#DCDFE6",
130219
- borderWidth: 1,
130220
- textStyle: {
130221
- color: "#333"
130222
- }
130223
- }
130224
- });
130225
-
130226
- // CONCATENATED MODULE: ./src/components/ex-chart/theme/starry.js
130227
- /* harmony default export */ var starry = ({
130228
- color: [
130229
- "#1685a9", // 石青
130230
- "#21a675", // 松柏绿
130231
- "#1bd1a5", // 飞燕草蓝
130232
- "#8c4356", // 绛紫
130233
- "#0dafc6", // 孔雀蓝
130234
- "#4b5cc4", // 宝蓝
130235
- "#758a99", // 墨灰
130236
- "#cca4e3", // 丁香色
130237
- "#205277", // 靛青色
130238
- "#d9b611", // 秋香色
130239
- "#ff8c31", // 杏红
130240
- "#9d2933", // 胭脂
130241
- "#0288c5", // 浅靛青蓝
130242
- "#44cef6" // 天蓝色
130243
- ],
130244
- backgroundColor: "#ffffff",
130245
- textStyle: {
130246
- fontFamily: "Microsoft YaHei, sans-serif"
130247
- },
130248
- title: {
130249
- textStyle: {
130250
- color: "#333"
130251
- },
130252
- subtextStyle: {
130253
- color: "#666666"
130254
- }
130255
- },
130256
- line: {
130257
- itemStyle: {
130258
- },
130259
- lineStyle: {
130260
- width: 2
130261
- }
130262
- },
130263
- bar: {
130264
- itemStyle: {
130265
- borderRadius: 4
130266
- }
130267
- },
130268
- pie: {
130269
- roseType: "radius",
130270
- label: {
130271
- color: "#333"
130272
- }
130273
- },
130274
- radar: {
130275
- indicator: {
130276
- color: "#666666"
130277
- }
130278
- },
130279
- map: {
130280
- label: {
130281
- color: "#333"
130282
- },
130283
- itemStyle: {
130284
- borderColor: "#fff"
130285
- }
130286
- },
130287
- gauge: {
130288
- axisLine: {
130289
- lineStyle: {
130290
- color: [[1, "#5470c6"]]
130291
- }
130292
- }
130293
- },
130294
- toolbox: {
130295
- iconStyle: {
130296
- borderColor: "#666666"
130297
- }
130298
- },
130299
- axisLine: {
130300
- lineStyle: {
130301
- color: "#DCDFE6"
130302
- }
130303
- },
130304
- axisTick: {
130305
- lineStyle: {
130306
- color: "#DCDFE6"
130307
- }
130308
- },
130309
- splitLine: {
130310
- lineStyle: {
130311
- color: "#ebeef5"
130312
- }
130313
- },
130314
- splitArea: {
130315
- areaStyle: {
130316
- color: ["#f7f8fa", "#ffffff"]
130317
- }
130318
- },
130319
- legend: {
130320
- textStyle: {
130321
- color: "#666"
130322
- }
130323
- },
130324
- tooltip: {
130325
- backgroundColor: "rgba(255, 255, 255, 0.95)",
130326
- borderColor: "#DCDFE6",
130327
- borderWidth: 1,
130328
- textStyle: {
130329
- color: "#333"
130330
- }
130331
- }
130332
- });
130333
-
130334
- // CONCATENATED MODULE: ./src/components/ex-chart/theme/orange.js
130335
- /* harmony default export */ var orange = ({
130336
- color: ["#e69419", "#A5b4da", "#F8792C", "#97bfb4", "#de747b", "#d6bac0", "#e62737", "#f35969", "#f1ccb0", "#b7394e", "#fe9c1c2"],
130337
- backgroundColor: "#ffffff",
130338
- textStyle: {
130339
- fontFamily: "Microsoft YaHei, sans-serif"
130340
- },
130341
- title: {
130342
- textStyle: {
130343
- color: "#333"
130344
- },
130345
- subtextStyle: {
130346
- color: "#666666"
130347
- }
130348
- },
130349
- line: {
130350
- itemStyle: {
130351
- color: "#e69419"
130352
- },
130353
- lineStyle: {
130354
- width: 2
130355
- }
130356
- },
130357
- bar: {
130358
- itemStyle: {
130359
- borderRadius: 4
130360
- }
130361
- },
130362
- pie: {
130363
- roseType: "radius",
130364
- label: {
130365
- color: "#333"
130366
- }
130367
- },
130368
- radar: {
130369
- indicator: {
130370
- color: "#666666"
130371
- }
130372
- },
130373
- map: {
130374
- label: {
130375
- color: "#333"
130376
- },
130377
- itemStyle: {
130378
- borderColor: "#fff"
130379
- }
130380
- },
130381
- gauge: {
130382
- axisLine: {
130383
- lineStyle: {
130384
- color: [[1, "#5470c6"]]
130385
- }
130386
- }
130387
- },
130388
- toolbox: {
130389
- iconStyle: {
130390
- borderColor: "#666666"
130391
- }
130392
- },
130393
- axisLine: {
130394
- lineStyle: {
130395
- color: "#DCDFE6"
130396
- }
130397
- },
130398
- axisTick: {
130399
- lineStyle: {
130400
- color: "#DCDFE6"
130401
- }
130402
- },
130403
- splitLine: {
130404
- lineStyle: {
130405
- color: "#ebeef5"
130406
- }
130407
- },
130408
- splitArea: {
130409
- areaStyle: {
130410
- color: ["#f7f8fa", "#ffffff"]
130411
- }
130412
- },
130413
- legend: {
130414
- textStyle: {
130415
- color: "#666"
130416
- }
130417
- },
130418
- tooltip: {
130419
- backgroundColor: "rgba(255, 255, 255, 0.95)",
130420
- borderColor: "#DCDFE6",
130421
- borderWidth: 1,
130422
- textStyle: {
130423
- color: "#333"
130424
- }
130425
- }
130426
- });
130427
-
130428
- // CONCATENATED MODULE: ./src/components/ex-chart/utils.js
130429
-
130430
-
130431
-
130432
-
130433
-
130434
-
130435
- const themeKeys = {
130436
- "default": white,
130437
- "white": white,
130438
- "dark": dark,
130439
- "blue": blue,
130440
- "starry": starry,
130441
- "orange": orange
130442
- };
130443
-
130444
- // echarts 仅在客户端加载,避免 SSR 编译/渲染报错
130445
- let echarts = null;
130446
-
130447
- function getEcharts() {
130448
- if (!echarts && typeof window !== 'undefined') {
130449
- try {
130450
- echarts = __webpack_require__("313e");
130451
- // 注册所有主题
130452
- for (const key in themeKeys) {
130453
- echarts.registerTheme(key, themeKeys[key]);
130454
- }
130455
- } catch (e) {
130456
- console.warn('[ExChart] echarts 加载失败:', e.message);
130457
- }
130458
- }
130459
- return echarts;
130460
- }
130461
-
130462
- // 字体大小配置
130463
- const fontSizeMap = {
130464
- small: {
130465
- title: 14,
130466
- subtitle: 11,
130467
- legend: 11,
130468
- axisLabel: 10,
130469
- tooltip: 11,
130470
- label: 11
130471
- },
130472
- medium: {
130473
- title: 16,
130474
- subtitle: 12,
130475
- legend: 12,
130476
- axisLabel: 12,
130477
- tooltip: 12,
130478
- label: 12
130479
- },
130480
- large: {
130481
- title: 18,
130482
- subtitle: 14,
130483
- legend: 14,
130484
- axisLabel: 14,
130485
- tooltip: 14,
130486
- label: 14
130487
- }
130488
- };
130489
-
130490
- function EchartsUtil() {}
130491
-
130492
- EchartsUtil.currentTheme = "default";
130493
- EchartsUtil.currentSize = "medium";
130494
- EchartsUtil.inverse = false;
130495
-
130496
- EchartsUtil.baseOption = {
130497
- backgroundColor: "transparent",
130498
- tooltip: {
130499
- trigger: "axis",
130500
- borderWidth: 1
130501
- },
130502
- legend: {
130503
- right: 20,
130504
- top: 0,
130505
- show: true,
130506
- textStyle: {
130507
- fontSize: 12
130508
- }
130509
- },
130510
- grid: {
130511
- top: "25%",
130512
- left: "40",
130513
- right: "15",
130514
- bottom: "40"
130515
- },
130516
- xAxis: {
130517
- type: "category",
130518
- boundaryGap: false,
130519
- axisTick: {
130520
- show: true,
130521
- length: 4
130522
- },
130523
- axisLabel: {
130524
- fontSize: 12,
130525
- interval: 0,
130526
- formatter: function(value) {
130527
- return !this.reverse && this.longLable ? value.replace(new RegExp(`(.{${this.longLableSplitNum}})`, "g"), `$1\n`) : value;
130528
- }
130529
- }
130530
- },
130531
- yAxis: {
130532
- type: "value",
130533
- axisTick: {
130534
- show: false
130535
- },
130536
- min: null,
130537
- max: null,
130538
- axisLabel: {
130539
- show: false
130540
- },
130541
- splitLine: {
130542
- lineStyle: {
130543
- type: "dashed",
130544
- width: 1
130545
- }
130546
- }
130547
- }
130548
- };
130549
-
130550
- EchartsUtil.chartInstanceList = [];
130551
-
130552
- EchartsUtil.mergeOptions = function(themeOption, customOption) {
130553
- return Object.assign({}, this.baseOption, themeOption, customOption);
130554
- };
130555
-
130556
- // 根据字体大小调整主题配置
130557
- EchartsUtil.applyFontSize = function(themeOption, size) {
130558
- const fontSizeConfig = fontSizeMap[size] || fontSizeMap.medium;
130559
-
130560
- const result = JSON.parse(JSON.stringify(themeOption));
130561
-
130562
- // 调整标题字体大小
130563
- if (result.title && result.title.textStyle) {
130564
- result.title.textStyle.fontSize = fontSizeConfig.title;
130565
- }
130566
- if (result.title && result.title.subtextStyle) {
130567
- result.title.subtextStyle.fontSize = fontSizeConfig.subtitle;
130568
- }
130569
-
130570
- // 调整图例字体大小
130571
- if (result.legend && result.legend.textStyle) {
130572
- result.legend.textStyle.fontSize = fontSizeConfig.legend;
130573
- }
130574
-
130575
- // 调整提示框字体大小
130576
- if (result.tooltip && result.tooltip.textStyle) {
130577
- result.tooltip.textStyle.fontSize = fontSizeConfig.tooltip;
130578
- }
130579
-
130580
- // 调整饼图标签字体大小
130581
- if (result.pie && result.pie.label) {
130582
- if (typeof result.pie.label === 'object') {
130583
- result.pie.label.fontSize = fontSizeConfig.label;
130584
- }
130585
- }
130586
-
130587
- // 调整雷达图指示器字体大小
130588
- if (result.radar && result.radar.indicator) {
130589
- if (typeof result.radar.indicator === 'object' && result.radar.indicator.textStyle) {
130590
- result.radar.indicator.textStyle.fontSize = fontSizeConfig.label;
130591
- }
130592
- }
130593
-
130594
- // 调整地图标签字体大小
130595
- if (result.map && result.map.label) {
130596
- if (typeof result.map.label === 'object') {
130597
- result.map.label.fontSize = fontSizeConfig.label;
130598
- }
130599
- }
130600
-
130601
- return result;
130602
- };
130603
-
130604
- EchartsUtil.init = function(dom, theme, customOption, size) {
130605
- const ec = getEcharts();
130606
- // SSR 环境下忽略初始化
130607
- if (!ec || !dom) return null;
130608
-
130609
- theme = theme || "default";
130610
- size = size || "medium";
130611
- customOption = customOption || {};
130612
-
130613
- const useTheme = this.currentTheme || theme;
130614
- const useSize = this.currentSize || size;
130615
-
130616
- this.currentTheme = useTheme;
130617
- this.currentSize = useSize;
130618
-
130619
- let themeOption = themeKeys[useTheme];
130620
- // 应用字体大小配置
130621
- themeOption = this.applyFontSize(themeOption, useSize);
130622
-
130623
- const option = this.mergeOptions(themeOption, customOption);
130624
-
130625
- const chart = ec.init(dom, useTheme);
130626
- chart.setOption(option, true);
130627
-
130628
- this.chartInstanceList.push({
130629
- dom,
130630
- chart,
130631
- customOption,
130632
- size: useSize
130633
- });
130634
-
130635
- this.bindResize(chart);
130636
- return chart;
130637
- };
130638
-
130639
- EchartsUtil.changeSingleTheme = function(dom, chartIns, customOption, newTheme) {
130640
- const ec = getEcharts();
130641
- if (!ec || !dom || !chartIns) return;
130642
-
130643
- customOption = customOption || {};
130644
- newTheme = newTheme || "default";
130645
-
130646
- this.currentTheme = newTheme;
130647
- chartIns.dispose();
130648
-
130649
- const newChart = ec.init(dom, newTheme, customOption);
130650
-
130651
- const item = this.chartInstanceList.find(function(v) {
130652
- return v.dom === dom;
130653
- });
130654
-
130655
- if (item) {
130656
- item.chart = newChart;
130657
- }
130658
-
130659
- return newChart;
130660
- };
130661
-
130662
- EchartsUtil.changeAllTheme = function(newTheme, newSize) {
130663
- const ec = getEcharts();
130664
- if (!ec || !newTheme) return;
130665
-
130666
- this.currentTheme = newTheme;
130667
- // 如果传入了新的 size,则更新全局 size
130668
- if (newSize) {
130669
- this.currentSize = newSize;
130670
- }
130671
-
130672
- this.chartInstanceList.forEach(function(item) {
130673
- const dom = item.dom;
130674
- const chart = item.chart;
130675
- const customOption = item.customOption;
130676
- // 使用图表自己的 size,如果没有则使用全局 size
130677
- const useSize = item.size || EchartsUtil.currentSize;
130678
-
130679
- if (chart) {
130680
- chart.dispose();
130681
- }
130682
-
130683
- const newChart = ec.init(dom, newTheme);
130684
- let themeOption = themeKeys[newTheme];
130685
- // 应用字体大小配置
130686
- themeOption = EchartsUtil.applyFontSize(themeOption, useSize);
130687
- const option = EchartsUtil.mergeOptions(themeOption, customOption);
130688
-
130689
- newChart.setOption(option, true);
130690
- item.chart = newChart;
130691
- // 更新图表的 size 记录
130692
- item.size = useSize;
130693
- EchartsUtil.bindResize(newChart);
130694
- });
130695
- };
130696
-
130697
- EchartsUtil.bindResize = function(chartIns) {
130698
- if (!chartIns || chartIns.resizeLocked) return;
130699
-
130700
- window.addEventListener("resize", function() {
130701
- chartIns.resize();
130702
- });
130703
-
130704
- chartIns._resizeLocked = true;
130705
- };
130706
-
130707
- EchartsUtil.destroy = function(chartIns) {
130708
- if (chartIns) {
130709
- chartIns.dispose();
130710
- }
130711
-
130712
- this.chartInstanceList = this.chartInstanceList.filter(function(item) {
130713
- return item.chart !== chartIns;
130714
- });
130715
- };
130716
-
130717
- EchartsUtil.destroyAll = function() {
130718
- this.chartInstanceList.forEach(function(item) {
130719
- if (item.chart) {
130720
- item.chart.dispose();
130721
- }
130722
- });
130723
-
130724
- this.chartInstanceList = [];
130725
- };
130726
-
130727
- /* harmony default export */ var ex_chart_utils = (EchartsUtil);
130728
-
130729
-
130730
-
130731
130745
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExBar.vue?vue&type=script&lang=js
130732
130746
 
130733
130747
 
@@ -130920,7 +130934,7 @@ EchartsUtil.destroyAll = function() {
130920
130934
  if (!this.markPoint) {
130921
130935
  this.$delete(option.series[0], "markPoint");
130922
130936
  }
130923
- this.myChart = ex_chart_utils.init(_self.$refs.barchart, this.theme, option, this.size);
130937
+ this.myChart = utils.init(_self.$refs.barchart, this.theme, option, this.size);
130924
130938
  }
130925
130939
  }
130926
130940
  });
@@ -130951,7 +130965,7 @@ var ExBar_component = normalizeComponent(
130951
130965
  )
130952
130966
 
130953
130967
  /* harmony default export */ var ExBar = (ExBar_component.exports);
130954
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExLine.vue?vue&type=template&id=386a9c5d&scoped=true
130968
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExLine.vue?vue&type=template&id=386a9c5d&scoped=true
130955
130969
  var ExLinevue_type_template_id_386a9c5d_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:"linechart",staticClass:"line-box"})
130956
130970
  }
130957
130971
  var ExLinevue_type_template_id_386a9c5d_scoped_true_staticRenderFns = []
@@ -131094,7 +131108,7 @@ var ExLinevue_type_template_id_386a9c5d_scoped_true_staticRenderFns = []
131094
131108
  }]
131095
131109
  };
131096
131110
 
131097
- this.myChart = ex_chart_utils.init(_self.$refs.linechart, this.theme, option, this.size);
131111
+ this.myChart = utils.init(_self.$refs.linechart, this.theme, option, this.size);
131098
131112
  }
131099
131113
  }
131100
131114
  });
@@ -131125,7 +131139,7 @@ var ExLine_component = normalizeComponent(
131125
131139
  )
131126
131140
 
131127
131141
  /* harmony default export */ var ExLine = (ExLine_component.exports);
131128
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExPie.vue?vue&type=template&id=5100b648&scoped=true
131142
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExPie.vue?vue&type=template&id=5100b648&scoped=true
131129
131143
  var ExPievue_type_template_id_5100b648_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:"piechart",staticClass:"pie-box"})
131130
131144
  }
131131
131145
  var ExPievue_type_template_id_5100b648_scoped_true_staticRenderFns = []
@@ -131281,7 +131295,7 @@ var ExPievue_type_template_id_5100b648_scoped_true_staticRenderFns = []
131281
131295
  })
131282
131296
  }]
131283
131297
  };
131284
- this.myChart = ex_chart_utils.init(_self.$refs.piechart, this.theme, option, this.size);
131298
+ this.myChart = utils.init(_self.$refs.piechart, this.theme, option, this.size);
131285
131299
  }
131286
131300
  }
131287
131301
  });
@@ -131312,7 +131326,7 @@ var ExPie_component = normalizeComponent(
131312
131326
  )
131313
131327
 
131314
131328
  /* harmony default export */ var ExPie = (ExPie_component.exports);
131315
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExMulti.vue?vue&type=template&id=18661424&scoped=true
131329
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExMulti.vue?vue&type=template&id=18661424&scoped=true
131316
131330
  var ExMultivue_type_template_id_18661424_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:"multilinechart",staticClass:"multiline-box"})
131317
131331
  }
131318
131332
  var ExMultivue_type_template_id_18661424_scoped_true_staticRenderFns = []
@@ -131541,7 +131555,7 @@ var ExMultivue_type_template_id_18661424_scoped_true_staticRenderFns = []
131541
131555
  ],
131542
131556
  series: this.getSeriesData()
131543
131557
  };
131544
- this.myChart = ex_chart_utils.init(_self.$refs.multilinechart, this.theme, option, this.size);
131558
+ this.myChart = utils.init(_self.$refs.multilinechart, this.theme, option, this.size);
131545
131559
  },
131546
131560
  getSeriesData() {
131547
131561
  // 创建 24小时 时间数据填充对象
@@ -131600,7 +131614,7 @@ var ExMulti_component = normalizeComponent(
131600
131614
  )
131601
131615
 
131602
131616
  /* harmony default export */ var ExMulti = (ExMulti_component.exports);
131603
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExTrend.vue?vue&type=template&id=36cddc14&scoped=true
131617
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-chart/ExTrend.vue?vue&type=template&id=36cddc14&scoped=true
131604
131618
  var ExTrendvue_type_template_id_36cddc14_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:"barchart",staticClass:"bar-box",style:({width:_vm.width})})
131605
131619
  }
131606
131620
  var ExTrendvue_type_template_id_36cddc14_scoped_true_staticRenderFns = []
@@ -131720,7 +131734,7 @@ var ExTrendvue_type_template_id_36cddc14_scoped_true_staticRenderFns = []
131720
131734
  const _self = this;
131721
131735
  // 数据处理
131722
131736
  const option = this.getOption();
131723
- this.myChart = ex_chart_utils.init(_self.$refs.barchart, this.theme, option, this.size);
131737
+ this.myChart = utils.init(_self.$refs.barchart, this.theme, option, this.size);
131724
131738
  }
131725
131739
  }
131726
131740
  });
@@ -131911,13 +131925,13 @@ var ex_chart_component = normalizeComponent(
131911
131925
 
131912
131926
  /* harmony default export */ var components_ex_chart = (ex_chart);
131913
131927
 
131914
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-card/index.vue?vue&type=template&id=2073f658&scoped=true
131915
- var ex_cardvue_type_template_id_2073f658_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-card',_vm._b({staticClass:"ex-card",class:_vm.cardClasses,scopedSlots:_vm._u([(_vm.$slots.header || _vm.title)?{key:"header",fn:function(){return [_vm._t("header",function(){return [_vm._v(_vm._s(_vm.title))]})]},proxy:true}:null],null,true)},'el-card',_vm.$attrs,false),[_vm._t("default")],2)
131928
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-card/index.vue?vue&type=template&id=0d381618
131929
+ var ex_cardvue_type_template_id_0d381618_render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-card',_vm._b({staticClass:"ex-card",class:_vm.cardClasses,scopedSlots:_vm._u([(_vm.$slots.header || _vm.title)?{key:"header",fn:function(){return [_vm._t("header",function(){return [_vm._v(_vm._s(_vm.title))]})]},proxy:true}:null],null,true)},'el-card',_vm.$attrs,false),[_vm._t("default")],2)
131916
131930
  }
131917
- var ex_cardvue_type_template_id_2073f658_scoped_true_staticRenderFns = []
131931
+ var ex_cardvue_type_template_id_0d381618_staticRenderFns = []
131918
131932
 
131919
131933
 
131920
- // CONCATENATED MODULE: ./src/components/ex-card/index.vue?vue&type=template&id=2073f658&scoped=true
131934
+ // CONCATENATED MODULE: ./src/components/ex-card/index.vue?vue&type=template&id=0d381618
131921
131935
 
131922
131936
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-card/index.vue?vue&type=script&lang=js
131923
131937
 
@@ -131977,25 +131991,21 @@ var ex_cardvue_type_template_id_2073f658_scoped_true_staticRenderFns = []
131977
131991
 
131978
131992
  // CONCATENATED MODULE: ./src/components/ex-card/index.vue?vue&type=script&lang=js
131979
131993
  /* harmony default export */ var components_ex_cardvue_type_script_lang_js = (ex_cardvue_type_script_lang_js);
131980
- // EXTERNAL MODULE: ./src/components/ex-card/index.vue?vue&type=style&index=0&id=2073f658&prod&scoped=true&lang=scss
131981
- var ex_cardvue_type_style_index_0_id_2073f658_prod_scoped_true_lang_scss = __webpack_require__("d81e");
131982
-
131983
131994
  // CONCATENATED MODULE: ./src/components/ex-card/index.vue
131984
131995
 
131985
131996
 
131986
131997
 
131987
131998
 
131988
131999
 
131989
-
131990
132000
  /* normalize component */
131991
132001
 
131992
132002
  var ex_card_component = normalizeComponent(
131993
132003
  components_ex_cardvue_type_script_lang_js,
131994
- ex_cardvue_type_template_id_2073f658_scoped_true_render,
131995
- ex_cardvue_type_template_id_2073f658_scoped_true_staticRenderFns,
132004
+ ex_cardvue_type_template_id_0d381618_render,
132005
+ ex_cardvue_type_template_id_0d381618_staticRenderFns,
131996
132006
  false,
131997
132007
  null,
131998
- "2073f658",
132008
+ null,
131999
132009
  null
132000
132010
 
132001
132011
  )
@@ -132010,13 +132020,13 @@ ex_card.install = function (Vue) {
132010
132020
 
132011
132021
  /* harmony default export */ var components_ex_card = (ex_card);
132012
132022
 
132013
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"8c105b8c-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-table/index.vue?vue&type=template&id=5be23981&scoped=true
132014
- var ex_tablevue_type_template_id_5be23981_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"ex-table-wrapper"},[(_vm.title || _vm.$slots.toolbar)?_c('div',{staticClass:"ex-table-header"},[(_vm.title)?_c('span',{staticClass:"ex-table-title"},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_c('div',{staticClass:"ex-table-toolbar"},[_vm._t("toolbar")],2)]):_vm._e(),(_vm.virtualScroll && _vm.headerRows.length)?_c('div',{ref:"fixedHeader",staticClass:"ex-table-fixed-header",style:({ marginLeft: -_vm.scrollLeft + 'px' })},[_c('table',{staticClass:"ex-table-fixed-header-table"},[_c('colgroup',[_vm._l((_vm.headerCols),function(col){return _c('col',{key:col._key,attrs:{"name":col._key,"width":col._width,"min-width":col._minWidth}})}),_c('col',{attrs:{"name":"gutter","width":"12"}})],2),_c('thead',_vm._l((_vm.headerRows),function(row,rowIdx){return _c('tr',{key:rowIdx},[_vm._l((row),function(cell){return [(!cell._hidden)?_c('th',{key:cell._key,style:(cell._style || {}),attrs:{"rowspan":cell._rowspan,"colspan":cell._colspan}},[_vm._v(_vm._s(cell.label))]):_vm._e()]})],2)}),0)])]):_vm._e(),_c('div',{ref:"tableBody",staticClass:"ex-table-body",class:{ 'ex-table-virtual': _vm.virtualScroll },style:(_vm.virtualScroll ? { height: _vm.computedHeight + 'px' } : {}),on:{"scroll":_vm.handleBodyScroll}},[(_vm.virtualScroll)?_c('div',{staticClass:"ex-table-virtual-inner",style:({ height: _vm.virtualTotalHeight + 'px' })},[_c('div',{style:({ transform: 'translateY(' + _vm.virtualOffsetY + 'px)' })},[_c('el-table',_vm._g(_vm._b({ref:"table",staticClass:"ex-table",attrs:{"data":_vm.visibleData,"span-method":_vm.groupColumns.length ? _vm.handleSpanMethod : undefined,"row-class-name":_vm.getRowClassName,"show-header":false},on:{"selection-change":_vm.handleSelectionChange,"sort-change":_vm.handleSortChange}},'el-table',_vm.$attrs,false),_vm.$listeners),[(_vm.selection)?_c('el-table-column',{attrs:{"type":"selection","width":"55","fixed":_vm.selectionFixed}}):_vm._e(),(_vm.showIndex)?_c('el-table-column',{attrs:{"type":"index","width":"60","label":"#","fixed":_vm.indexFixed,"index":_vm.indexMethod}}):_vm._e(),_vm._l((_vm.flattenedColumns),function(col){return [(col.children && col.children.length)?_c('el-table-column',_vm._b({key:col._key},'el-table-column',_vm.getColumnProps(col),false),[_vm._l((col.children),function(child){return [_c('el-table-column',_vm._b({key:child._key,scopedSlots:_vm._u([(child.render)?{key:"default",fn:function(scope){return [_vm._v(_vm._s(child.render(scope)))]}}:(child.formatter)?{key:"default",fn:function(scope){return [_c('ExTableCell',{attrs:{"row":scope.row,"index":scope.$index,"formatter":child.formatter,"column":child}})]}}:(child.slot)?{key:"default",fn:function(scope){return [_vm._t(child.slot,null,{"row":scope.row,"index":scope.$index,"column":child})]}}:null],null,true)},'el-table-column',_vm.getColumnProps(child),false))]})],2):_c('el-table-column',_vm._b({key:col._key,scopedSlots:_vm._u([(col.render)?{key:"default",fn:function(scope){return [_vm._v(_vm._s(col.render(scope)))]}}:(col.formatter)?{key:"default",fn:function(scope){return [_c('ExTableCell',{attrs:{"row":scope.row,"index":scope.$index,"formatter":col.formatter,"column":col}})]}}:(col.slot)?{key:"default",fn:function(scope){return [_vm._t(col.slot,null,{"row":scope.row,"index":scope.$index,"column":col})]}}:null],null,true)},'el-table-column',_vm.getColumnProps(col),false))]})],2)],1)]):_c('el-table',_vm._g(_vm._b({ref:"table",staticClass:"ex-table",attrs:{"data":_vm.visibleData,"height":_vm.computedHeight,"span-method":_vm.groupColumns.length ? _vm.handleSpanMethod : undefined,"row-class-name":_vm.getRowClassName},on:{"selection-change":_vm.handleSelectionChange,"sort-change":_vm.handleSortChange}},'el-table',_vm.$attrs,false),_vm.$listeners),[(_vm.selection)?_c('el-table-column',{attrs:{"type":"selection","width":"55","fixed":_vm.selectionFixed}}):_vm._e(),(_vm.showIndex)?_c('el-table-column',{attrs:{"type":"index","width":"60","label":"#","fixed":_vm.indexFixed,"index":_vm.indexMethod}}):_vm._e(),_vm._l((_vm.flattenedColumns),function(col){return [(col.children && col.children.length)?_c('el-table-column',_vm._b({key:col._key},'el-table-column',_vm.getColumnProps(col),false),[_vm._l((col.children),function(child){return [_c('el-table-column',_vm._b({key:child._key,scopedSlots:_vm._u([(child.render)?{key:"default",fn:function(scope){return [_vm._v(_vm._s(child.render(scope)))]}}:(child.formatter)?{key:"default",fn:function(scope){return [_c('ExTableCell',{attrs:{"row":scope.row,"index":scope.$index,"formatter":child.formatter,"column":child}})]}}:(child.slot)?{key:"default",fn:function(scope){return [_vm._t(child.slot,null,{"row":scope.row,"index":scope.$index,"column":child})]}}:null],null,true)},'el-table-column',_vm.getColumnProps(child),false))]})],2):_c('el-table-column',_vm._b({key:col._key,scopedSlots:_vm._u([(col.render)?{key:"default",fn:function(scope){return [_vm._v(_vm._s(col.render(scope)))]}}:(col.formatter)?{key:"default",fn:function(scope){return [_c('ExTableCell',{attrs:{"row":scope.row,"index":scope.$index,"formatter":col.formatter,"column":col}})]}}:(col.slot)?{key:"default",fn:function(scope){return [_vm._t(col.slot,null,{"row":scope.row,"index":scope.$index,"column":col})]}}:null],null,true)},'el-table-column',_vm.getColumnProps(col),false))]})],2)],1),(_vm.showPagination)?_c('div',{staticClass:"ex-table-footer"},[_c('el-pagination',{attrs:{"current-page":_vm.pagination.PageNum,"page-size":_vm.pagination.PageSize,"total":_vm.total,"page-sizes":_vm.pagination.PageSizes || [10, 20, 50, 100],"layout":"total, sizes, prev, pager, next, jumper"},on:{"size-change":_vm.handleSizeChange,"current-change":_vm.handleCurrentChange}})],1):_vm._e()])
132023
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-table/index.vue?vue&type=template&id=f6bc1634&scoped=true
132024
+ var ex_tablevue_type_template_id_f6bc1634_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"ex-table-wrapper"},[(_vm.title || _vm.$slots.toolbar)?_c('div',{staticClass:"ex-table-header"},[(_vm.title)?_c('span',{staticClass:"ex-table-title"},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_c('div',{staticClass:"ex-table-toolbar"},[_vm._t("toolbar")],2)]):_vm._e(),_c('div',{staticClass:"ex-table-body"},[_c('VirtualElTable',_vm._g(_vm._b({ref:"table",staticClass:"ex-table",attrs:{"data":_vm.processedTableData,"height":_vm.computedHeight,"max-height":_vm.computedMaxHeight,"virtual-scroll":_vm.virtualScroll,"row-height":_vm.rowInitHeight,"buffer-size":_vm.bufferSize,"span-method":_vm.groupColumns.length ? _vm.handleSpanMethod : undefined,"row-class-name":_vm.getRowClassName},on:{"selection-change":_vm.handleSelectionChange,"sort-change":_vm.handleSortChange}},'VirtualElTable',_vm.$attrs,false),_vm.$listeners),[(_vm.selection)?_c('el-table-column',{attrs:{"type":"selection","width":"55","fixed":_vm.selectionFixed}}):_vm._e(),(_vm.showIndex)?_c('el-table-column',{attrs:{"type":"index","width":"60","label":"#","fixed":_vm.indexFixed,"index":_vm.indexMethod}}):_vm._e(),_vm._l((_vm.flattenedColumns),function(col){return [(col.children && col.children.length)?_c('el-table-column',_vm._b({key:col._key},'el-table-column',_vm.getColumnProps(col),false),[_vm._l((col.children),function(child){return [_c('el-table-column',_vm._b({key:child._key,scopedSlots:_vm._u([(child.render)?{key:"default",fn:function(scope){return [_vm._v(_vm._s(child.render(scope)))]}}:(child.formatter)?{key:"default",fn:function(scope){return [_c('ExTableCell',{attrs:{"row":scope.row,"index":scope.$index,"formatter":child.formatter,"column":child}})]}}:(child.slot)?{key:"default",fn:function(scope){return [_vm._t(child.slot,null,{"row":scope.row,"index":scope.$index,"column":child})]}}:null],null,true)},'el-table-column',_vm.getColumnProps(child),false))]})],2):_c('el-table-column',_vm._b({key:col._key,scopedSlots:_vm._u([(col.render)?{key:"default",fn:function(scope){return [_vm._v(_vm._s(col.render(scope)))]}}:(col.formatter)?{key:"default",fn:function(scope){return [_c('ExTableCell',{attrs:{"row":scope.row,"index":scope.$index,"formatter":col.formatter,"column":col}})]}}:(col.slot)?{key:"default",fn:function(scope){return [_vm._t(col.slot,null,{"row":scope.row,"index":scope.$index,"column":col})]}}:null],null,true)},'el-table-column',_vm.getColumnProps(col),false))]})],2)],1),(_vm.showPagination)?_c('div',{staticClass:"ex-table-footer"},[_c('el-pagination',{attrs:{"current-page":_vm.pagination.PageNum,"page-size":_vm.pagination.PageSize,"total":_vm.total,"page-sizes":_vm.pagination.PageSizes || [10, 20, 50, 100],"layout":"total, sizes, prev, pager, next, jumper"},on:{"size-change":_vm.handleSizeChange,"current-change":_vm.handleCurrentChange}})],1):_vm._e()])
132015
132025
  }
132016
- var ex_tablevue_type_template_id_5be23981_scoped_true_staticRenderFns = []
132026
+ var ex_tablevue_type_template_id_f6bc1634_scoped_true_staticRenderFns = []
132017
132027
 
132018
132028
 
132019
- // CONCATENATED MODULE: ./src/components/ex-table/index.vue?vue&type=template&id=5be23981&scoped=true
132029
+ // CONCATENATED MODULE: ./src/components/ex-table/index.vue?vue&type=template&id=f6bc1634&scoped=true
132020
132030
 
132021
132031
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-table/ExTableCell.vue?vue&type=script&lang=js
132022
132032
 
@@ -132035,9 +132045,10 @@ var ex_tablevue_type_template_id_5be23981_scoped_true_staticRenderFns = []
132035
132045
  index: ctx.props.index
132036
132046
  }
132037
132047
  if (ctx.props.column) params.column = ctx.props.column
132038
- const isVnode = (it) => typeof it === 'object' && it.hasOwnProperty('componentOptions')
132048
+ const isVnode = (it) => it !== null && it !== undefined && typeof it === 'object' && it.hasOwnProperty('componentOptions')
132039
132049
  const renderNode = ctx.props.formatter(h, params)
132040
- return isVnode(renderNode) ? renderNode : h('span', renderNode)
132050
+ if (renderNode === null || renderNode === undefined || renderNode === '') return h('span', '')
132051
+ return isVnode(renderNode) ? renderNode : h('span', String(renderNode))
132041
132052
  }
132042
132053
  });
132043
132054
 
@@ -132063,74 +132074,293 @@ var ExTableCell_component = normalizeComponent(
132063
132074
  )
132064
132075
 
132065
132076
  /* harmony default export */ var ExTableCell = (ExTableCell_component.exports);
132066
- // EXTERNAL MODULE: external "ElementUI"
132067
- var external_ElementUI_ = __webpack_require__("5f72");
132077
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"44e6dca7-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-table/VirtualElTable.vue?vue&type=template&id=5eb34e1c&scoped=true
132078
+ var VirtualElTablevue_type_template_id_5eb34e1c_scoped_true_render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-table',_vm._g(_vm._b({ref:"innerTable",attrs:{"data":_vm.renderList}},'el-table',_vm.$attrs,false),_vm.$listeners),[_vm._t("default")],2)
132079
+ }
132080
+ var VirtualElTablevue_type_template_id_5eb34e1c_scoped_true_staticRenderFns = []
132081
+
132082
+
132083
+ // CONCATENATED MODULE: ./src/components/ex-table/VirtualElTable.vue?vue&type=template&id=5eb34e1c&scoped=true
132084
+
132085
+ // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-table/VirtualElTable.vue?vue&type=script&lang=js
132086
+
132087
+ /* harmony default export */ var VirtualElTablevue_type_script_lang_js = ({
132088
+ name: 'VirtualElTable',
132089
+ inheritAttrs: false,
132090
+
132091
+ props: {
132092
+ virtualScroll: {
132093
+ type: Boolean,
132094
+ default: false
132095
+ },
132096
+ rowHeight: {
132097
+ type: Number,
132098
+ default: 48
132099
+ },
132100
+ bufferSize: {
132101
+ type: Number,
132102
+ default: 5
132103
+ }
132104
+ },
132105
+
132106
+ data() {
132107
+ return {
132108
+ scrollWrap: null,
132109
+ phantomDom: null,
132110
+ scrollTop: 0,
132111
+ // 根据数据量与容器高度预先估算一个合理的 endIndex,避免首屏只渲染 0 行
132112
+ startIndex: 0,
132113
+ endIndex: 20,
132114
+ rafId: null,
132115
+ unwatchPhantom: null,
132116
+ layoutTimer: null,
132117
+ retryTimers: []
132118
+ }
132119
+ },
132120
+
132121
+ computed: {
132122
+ originData() {
132123
+ return this.$attrs.data || []
132124
+ },
132125
+ renderList() {
132126
+ if (!this.virtualScroll) return this.originData
132127
+ const start = Math.max(0, this.startIndex - this.bufferSize)
132128
+ const end = Math.min(this.originData.length, this.endIndex + this.bufferSize)
132129
+ return this.originData.slice(start, end)
132130
+ },
132131
+ totalListHeight() {
132132
+ return this.originData.length * this.rowHeight
132133
+ },
132134
+ contentOffsetY() {
132135
+ return Math.max(0, this.startIndex - this.bufferSize) * this.rowHeight
132136
+ }
132137
+ },
132138
+
132139
+ watch: {
132140
+ renderList() {
132141
+ this.scheduleLayout()
132142
+ },
132143
+ originData: {
132144
+ handler(val) {
132145
+ if (!this.virtualScroll) return
132146
+ if (val && val.length) {
132147
+ this.$nextTick(() => {
132148
+ this.calcVisibleRange()
132149
+ })
132150
+ }
132151
+ }
132152
+ }
132153
+ },
132154
+
132155
+ mounted() {
132156
+ this.$nextTick(() => {
132157
+ this.initVirtualScroll()
132158
+ })
132159
+ },
132160
+
132161
+ beforeDestroy() {
132162
+ this.unbindScrollEvent()
132163
+ if (this.rafId) {
132164
+ cancelAnimationFrame(this.rafId)
132165
+ this.rafId = null
132166
+ }
132167
+ if (this.unwatchPhantom) {
132168
+ this.unwatchPhantom()
132169
+ this.unwatchPhantom = null
132170
+ }
132171
+ if (this.layoutTimer) {
132172
+ clearTimeout(this.layoutTimer)
132173
+ this.layoutTimer = null
132174
+ }
132175
+ this.retryTimers.forEach(t => clearTimeout(t))
132176
+ this.retryTimers = []
132177
+ },
132178
+
132179
+ methods: {
132180
+ initVirtualScroll() {
132181
+ if (!this.virtualScroll) return
132182
+ this.scrollWrap = this.$refs.innerTable.$el.querySelector('.el-table__body-wrapper')
132183
+ if (!this.scrollWrap) {
132184
+ console.warn('[VirtualElTable] 无法找到滚动容器,虚拟滚动功能已禁用')
132185
+ this.virtualScroll = false
132186
+ return
132187
+ }
132188
+
132189
+ this.scrollWrap.style.overflowY = 'auto'
132190
+ this.scrollWrap.style.overflowX = 'auto'
132191
+
132192
+ this.wrapTableBody()
132193
+ this.scrollWrap.addEventListener('scroll', this.onScroll, { passive: true })
132194
+
132195
+ // 首次可见范围计算 + 多次重试:
132196
+ // ElementUI 的 el-table 在 mounted 后仍会异步完成列宽/高度布局,
132197
+ // 单次 $nextTick 可能拿到 clientHeight=0,导致计算失败且无法恢复。
132198
+ // 以递增延迟多次调用,直到 scrollWrap.clientHeight 获得稳定值。
132199
+ this.calcVisibleRange()
132200
+ const delays = [100, 300, 600, 1000]
132201
+ delays.forEach(ms => {
132202
+ const timer = setTimeout(() => {
132203
+ this.calcVisibleRange()
132204
+ }, ms)
132205
+ this.retryTimers.push(timer)
132206
+ })
132207
+ },
132208
+
132209
+ wrapTableBody() {
132210
+ const bodyDom = this.scrollWrap.querySelector('.el-table__body')
132211
+ if (!bodyDom || bodyDom.querySelector('.vs-phantom')) return
132212
+
132213
+ // phantom 采用标准 block 布局:
132214
+ // - height = 总数据高度,确保撑开 body-wrapper 的滚动条
132215
+ // - padding-top = 可见区域偏移量,将 table 推到正确位置
132216
+ // - min-width: 100%(不设 width),允许 table 自然撑开,保证列宽生效
132217
+ const phantom = document.createElement('div')
132218
+ phantom.className = 'vs-phantom'
132219
+ phantom.style.position = 'relative'
132220
+ phantom.style.minWidth = '100%'
132221
+ phantom.style.boxSizing = 'border-box'
132222
+ phantom.style.zIndex = '1'
132223
+ this.phantomDom = phantom
132224
+
132225
+ const table = bodyDom.querySelector('table')
132226
+ phantom.appendChild(table)
132227
+ bodyDom.appendChild(phantom)
132228
+
132229
+ this.unwatchPhantom = this.$watch(
132230
+ ['totalListHeight', 'contentOffsetY'],
132231
+ () => {
132232
+ if (this.phantomDom) {
132233
+ this.phantomDom.style.height = `${this.totalListHeight}px`
132234
+ this.phantomDom.style.paddingTop = `${this.contentOffsetY}px`
132235
+ }
132236
+ },
132237
+ { immediate: true }
132238
+ )
132239
+ },
132240
+
132241
+ onScroll() {
132242
+ this.scrollTop = this.scrollWrap.scrollTop
132243
+ if (this.rafId) return
132244
+ this.rafId = requestAnimationFrame(() => {
132245
+ this.calcVisibleRange()
132246
+ this.rafId = null
132247
+ })
132248
+ },
132249
+
132250
+ calcVisibleRange() {
132251
+ if (!this.scrollWrap) return
132252
+ let viewHeight = this.scrollWrap.clientHeight
132253
+
132254
+ // 关键兜底:ElementUI 异步布局尚未完成时,clientHeight 可能为 0,
132255
+ // 此时用组件接收到的 height / max-height 作为估算值,确保至少能渲染正确数量的行。
132256
+ if (!viewHeight) {
132257
+ const h = this.$attrs.height || this.$attrs.maxHeight
132258
+ if (h) {
132259
+ viewHeight = typeof h === 'number' ? h : parseInt(String(h), 10)
132260
+ }
132261
+ }
132262
+ if (!viewHeight || viewHeight <= 0) return
132263
+
132264
+ const visibleRowCount = Math.ceil(viewHeight / this.rowHeight)
132265
+ const newStart = Math.floor(this.scrollTop / this.rowHeight)
132266
+ const newEnd = Math.min(this.originData.length, newStart + visibleRowCount)
132267
+
132268
+ if (newStart !== this.startIndex || newEnd !== this.endIndex) {
132269
+ this.startIndex = newStart
132270
+ this.endIndex = newEnd
132271
+ }
132272
+ },
132273
+
132274
+ unbindScrollEvent() {
132275
+ if (this.scrollWrap) {
132276
+ this.scrollWrap.removeEventListener('scroll', this.onScroll)
132277
+ }
132278
+ },
132279
+
132280
+ scheduleLayout() {
132281
+ if (this.layoutTimer) return
132282
+ this.layoutTimer = setTimeout(() => {
132283
+ if (this.$refs.innerTable) {
132284
+ this.$refs.innerTable.doLayout()
132285
+ }
132286
+ this.layoutTimer = null
132287
+ }, 0)
132288
+ },
132289
+
132290
+ clearSelection() {
132291
+ return this.$refs.innerTable.clearSelection()
132292
+ },
132293
+ toggleRowSelection() {
132294
+ return this.$refs.innerTable.toggleRowSelection()
132295
+ },
132296
+ doLayout() {
132297
+ return this.$refs.innerTable.doLayout()
132298
+ }
132299
+ }
132300
+ });
132301
+
132302
+ // CONCATENATED MODULE: ./src/components/ex-table/VirtualElTable.vue?vue&type=script&lang=js
132303
+ /* harmony default export */ var ex_table_VirtualElTablevue_type_script_lang_js = (VirtualElTablevue_type_script_lang_js);
132304
+ // EXTERNAL MODULE: ./src/components/ex-table/VirtualElTable.vue?vue&type=style&index=0&id=5eb34e1c&prod&scoped=true&lang=css
132305
+ var VirtualElTablevue_type_style_index_0_id_5eb34e1c_prod_scoped_true_lang_css = __webpack_require__("ac06");
132306
+
132307
+ // CONCATENATED MODULE: ./src/components/ex-table/VirtualElTable.vue
132308
+
132309
+
132310
+
132311
+
132312
+
132313
+
132314
+ /* normalize component */
132068
132315
 
132316
+ var VirtualElTable_component = normalizeComponent(
132317
+ ex_table_VirtualElTablevue_type_script_lang_js,
132318
+ VirtualElTablevue_type_template_id_5eb34e1c_scoped_true_render,
132319
+ VirtualElTablevue_type_template_id_5eb34e1c_scoped_true_staticRenderFns,
132320
+ false,
132321
+ null,
132322
+ "5eb34e1c",
132323
+ null
132324
+
132325
+ )
132326
+
132327
+ /* harmony default export */ var VirtualElTable = (VirtualElTable_component.exports);
132069
132328
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ex-table/index.vue?vue&type=script&lang=js
132070
132329
 
132071
132330
 
132072
- // 内部导入 element-ui 组件,避免与外部 element-ui 冲突
132073
132331
 
132074
132332
 
132075
132333
  /* harmony default export */ var ex_tablevue_type_script_lang_js = ({
132076
132334
  name: 'ExTable',
132077
132335
  inheritAttrs: false,
132078
- components: { ExTableCell: ExTableCell, ElTable: external_ElementUI_["Table"], ElTableColumn: external_ElementUI_["TableColumn"] },
132336
+ components: { ExTableCell: ExTableCell, VirtualElTable: VirtualElTable },
132337
+
132079
132338
  props: {
132080
- // 表格数据
132081
132339
  tableData: { type: Array, default: () => [] },
132082
- // 列配置(支持 children 多级表头)
132083
132340
  columns: { type: Array, default: () => [] },
132084
- // 分组列配置(按配置的层级合并单元格)
132085
132341
  groupColumns: { type: Array, default: () => [] },
132086
- // 标题
132087
132342
  title: { type: String, default: '' },
132088
- // 高度
132089
132343
  height: { type: [Number, String], default: null },
132090
- // 虚拟滚动
132344
+ maxHeight: { type: [Number, String], default: null },
132091
132345
  virtualScroll: { type: Boolean, default: false },
132092
- // 预估行高
132093
132346
  rowInitHeight: { type: Number, default: 48 },
132094
- // 缓冲区行数
132095
132347
  bufferSize: { type: Number, default: 5 },
132096
- // 分页配置
132097
132348
  pagination: { type: Object, default: null },
132098
- // 总条数
132099
132349
  total: { type: Number, default: 0 },
132100
- // 是否显示序号
132101
132350
  showIndex: { type: Boolean, default: false },
132102
- // 是否可选
132103
132351
  selection: { type: Boolean, default: false },
132104
- // 选择列固定位置
132105
132352
  selectionFixed: { type: [String, Boolean], default: false },
132106
- // 序号列固定位置
132107
132353
  indexFixed: { type: [String, Boolean], default: false },
132108
- // 加载状态
132109
132354
  loading: { type: Boolean, default: false },
132110
- // 空数据文案
132111
132355
  emptyText: { type: String, default: '暂无数据' },
132112
- // 小计配置
132113
132356
  subtotalConfig: { type: Object, default: () => ({ enabled: false }) },
132114
- // 总计配置
132115
132357
  totalConfig: { type: Object, default: () => ({ enabled: false }) }
132116
132358
  },
132117
132359
 
132118
132360
  data() {
132119
132361
  return {
132120
- // 虚拟滚动相关
132121
- scrollTop: 0,
132122
- scrollLeft: 0,
132123
- rowHeight: 48,
132124
- visibleStartIndex: 0,
132125
- visibleEndIndex: 0,
132126
- visibleCount: 0,
132127
- // 表格宽度(用于自适应列宽计算)
132128
- tableWidth: 0,
132129
- // 分组合并缓存
132130
132362
  spanCache: {},
132131
- // 列扁平化缓存
132132
132363
  flattenedColumnsCache: [],
132133
- // 选中数据
132134
132364
  selectedRows: []
132135
132365
  }
132136
132366
  },
@@ -132139,337 +132369,100 @@ var external_ElementUI_ = __webpack_require__("5f72");
132139
132369
  showPagination() {
132140
132370
  return this.pagination && this.total > 0
132141
132371
  },
132142
-
132143
132372
  computedHeight() {
132144
- if (this.virtualScroll) {
132145
- return this.height || 400
132146
- }
132147
132373
  return this.height || undefined
132148
132374
  },
132149
-
132150
- // 计算固定列总宽度(selection + index + fixed列)
132151
- fixedColumnWidth() {
132152
- let width = 0
132153
- // 选择列
132154
- if (this.selection) width += 55
132155
- // 序号列
132156
- if (this.showIndex) width += 60
132157
- // fixed 列
132158
- const sumFixedWidth = (cols) => {
132159
- cols.forEach(c => {
132160
- if (c.fixed && (c.width || c.minWidth)) {
132161
- width += typeof c.width === 'number' ? c.width : (typeof c.minWidth === 'number' ? c.minWidth : 100)
132162
- }
132163
- if (c.children && c.children.length) sumFixedWidth(c.children)
132164
- })
132165
- }
132166
- sumFixedWidth(this.columns)
132167
- return width
132375
+ computedMaxHeight() {
132376
+ return this.height ? undefined : this.maxHeight || undefined
132168
132377
  },
132169
132378
 
132170
- // 计算非固定列中已设置width的总宽度
132171
- nonFixedColumnWidthWithWidth() {
132172
- let width = 0
132173
- const sumWidth = (cols) => {
132174
- cols.forEach(c => {
132175
- if (!c.fixed && c.width) {
132176
- width += typeof c.width === 'number' ? c.width : parseInt(c.width) || 0
132177
- }
132178
- if (c.children && c.children.length) sumWidth(c.children)
132179
- })
132180
- }
132181
- sumWidth(this.columns)
132182
- return width
132183
- },
132184
-
132185
- // 计算需要自适应的列数(非固定列且未设置width)
132186
- autoColumnCount() {
132187
- let count = 0
132188
- const countCols = (cols) => {
132189
- cols.forEach(c => {
132190
- if (!c.fixed) {
132191
- if (c.children && c.children.length) {
132192
- countCols(c.children)
132193
- } else if (!c.width) {
132194
- // 只有未设置width的非固定列才参与自适应
132195
- count++
132196
- }
132197
- }
132198
- })
132199
- }
132200
- countCols(this.columns)
132201
- return count
132202
- },
132203
-
132204
- // 自适应列宽(未设置width的非固定列均分剩余宽度)
132205
- autoColumnWidth() {
132206
- const totalWidth = this.tableWidth || 1000
132207
- const gutter = 12 // el-table 默认 gutter
132208
- const fixedWidth = this.fixedColumnWidth
132209
- const nonFixedWithWidth = this.nonFixedColumnWidthWithWidth
132210
- const autoCount = this.autoColumnCount
132211
-
132212
- if (autoCount <= 0) return 100 // 默认宽度
132213
-
132214
- // 自适应宽度 = (总宽度 - gutter - 固定列宽度 - 非固定列中已设置的width)/ 需要自适应的列数
132215
- const availableWidth = totalWidth - gutter - fixedWidth - nonFixedWithWidth
132216
- return Math.max(80, Math.floor(availableWidth / autoCount)) // 最小80px
132217
- },
132218
-
132219
- // 表头列定义(用于 colgroup,与 headerRows 列数保持一致)
132220
- headerCols() {
132221
- const cols = []
132222
-
132223
- // 选择列
132224
- if (this.selection) {
132225
- cols.push({ _key: 'prepend_selection', _width: 55, _minWidth: 55 })
132226
- }
132227
-
132228
- // 序号列
132229
- if (this.showIndex) {
132230
- cols.push({ _key: 'prepend_index', _width: 60, _minWidth: 60 })
132231
- }
132232
-
132233
- // 数据列(只取叶子节点,使用一致的key生成)
132234
- const addLeafCols = (columns, parentPath = '') => {
132235
- columns.forEach((col, index) => {
132236
- const path = parentPath ? `${parentPath}_${index}` : String(index)
132237
- const key = this.generateColKey(col, path)
132238
-
132239
- if (col.children && col.children.length) {
132240
- addLeafCols(col.children, path)
132241
- } else {
132242
- cols.push({
132243
- _key: key,
132244
- _width: this.getColumnWidth(col),
132245
- _minWidth: col.minWidth
132246
- })
132247
- }
132248
- })
132249
- }
132250
- addLeafCols(this.columns)
132251
-
132252
- return cols
132253
- },
132254
-
132255
- // 表头层级结构(用于自定义固定表头渲染)
132256
- headerRows() {
132257
- const rows = []
132258
- let maxDepth = 1
132259
-
132260
- // 计算最大深度
132261
- const calcDepth = (cols, depth) => {
132262
- maxDepth = Math.max(maxDepth, depth)
132263
- cols.forEach(c => { if (c.children && c.children.length) calcDepth(c.children, depth + 1) })
132264
- }
132265
- if (this.columns.length) calcDepth(this.columns, 1)
132266
-
132267
- // 初始化行
132268
- for (let i = 0; i < maxDepth; i++) rows.push([])
132269
-
132270
- // 计算叶子数量
132271
- const countLeaves = (cols) => {
132272
- let n = 0
132273
- cols.forEach(c => {
132274
- if (c.children && c.children.length) n += countLeaves(c.children)
132275
- else n++
132276
- })
132277
- return n
132278
- }
132279
-
132280
- // 选择列 / 序号列占位(仅第一行,rowspan 跨所有行)
132281
- if (this.selection) {
132282
- rows[0].push({
132283
- _key: 'prepend_selection',
132284
- _rowspan: maxDepth,
132285
- _colspan: 1,
132286
- _style: { width: '55px' },
132287
- _hidden: false,
132288
- label: ''
132289
- })
132290
- for (let i = 1; i < maxDepth; i++) {
132291
- rows[i].push({ _key: 'prepend_selection_' + i, _rowspan: 0, _colspan: 1, _hidden: true, label: '' })
132292
- }
132293
- }
132294
- if (this.showIndex) {
132295
- rows[0].push({
132296
- _key: 'prepend_index',
132297
- _rowspan: maxDepth,
132298
- _colspan: 1,
132299
- _style: { width: '60px' },
132300
- _hidden: false,
132301
- label: '#'
132302
- })
132303
- for (let i = 1; i < maxDepth; i++) {
132304
- rows[i].push({ _key: 'prepend_index_' + i, _rowspan: 0, _colspan: 1, _hidden: true, label: '' })
132305
- }
132306
- }
132307
-
132308
- // 填充列
132309
- if (this.columns.length) {
132310
- const fill = (cols, depth, parentPath = '') => {
132311
- cols.forEach((c, index) => {
132312
- const path = parentPath ? `${parentPath}_${index}` : String(index)
132313
- const key = this.generateColKey(c, path)
132314
- const hasKids = c.children && c.children.length
132315
- const style = {}
132316
-
132317
- // 如果有固定宽度,使用固定宽度;否则使用自适应宽度
132318
- if (c.width) {
132319
- style.width = typeof c.width === 'number' ? c.width + 'px' : c.width
132320
- } else if (!c.fixed && this.virtualScroll) {
132321
- // 非固定列且虚拟滚动时使用自适应宽度
132322
- style.width = this.autoColumnWidth + 'px'
132323
- }
132324
-
132325
- if (c.minWidth) style.minWidth = typeof c.minWidth === 'number' ? c.minWidth + 'px' : c.minWidth
132326
-
132327
- rows[depth].push({
132328
- _key: key,
132329
- _rowspan: hasKids ? 1 : maxDepth - depth,
132330
- _colspan: hasKids ? countLeaves(c.children) : 1,
132331
- _style: style,
132332
- _hidden: !c.label && !c.prop,
132333
- label: c.label || ''
132334
- })
132335
- if (hasKids) fill(c.children, depth + 1, path)
132336
- })
132337
- }
132338
- fill(this.columns, 0)
132339
- }
132340
-
132341
- return rows
132342
- },
132343
-
132344
- // 处理后的数据(注入小计/总计行)
132379
+ // 处理小计、总计后的最终数据
132345
132380
  processedTableData() {
132346
132381
  if (!this.tableData.length) return []
132347
-
132348
132382
  let data = [...this.tableData]
132349
132383
  const hasSubtotal = this.subtotalConfig && this.subtotalConfig.enabled
132350
132384
  const hasTotal = this.totalConfig && this.totalConfig.enabled
132351
132385
 
132352
132386
  if (!hasSubtotal && !hasTotal) return data
132353
132387
 
132354
- // 找到第一个数据列作为标签列
132355
132388
  const labelColumn = this.findLabelColumn()
132356
-
132357
132389
  let result = []
132358
132390
 
132359
132391
  if (hasSubtotal && this.subtotalConfig.groupBy && this.subtotalConfig.groupBy.length) {
132360
- // 按 groupBy 分组
132361
132392
  const groups = this.groupData(data, this.subtotalConfig.groupBy)
132362
- groups.forEach((groupRows, groupKey) => {
132363
- // 插入数据行
132393
+ groups.forEach((groupRows) => {
132364
132394
  result.push(...groupRows)
132365
- // 插入小计行
132366
- const subtotalRow = this.createSubtotalRow(groupRows, groupKey)
132395
+ const subtotalRow = this.createSubtotalRow(groupRows)
132367
132396
  result.push(subtotalRow)
132368
132397
  })
132369
132398
  } else {
132370
132399
  result = data
132371
132400
  }
132372
132401
 
132373
- // 插入总计行
132374
132402
  if (hasTotal) {
132375
132403
  const totalRow = this.createTotalRow(data)
132376
132404
  result.push(totalRow)
132377
132405
  }
132378
-
132379
132406
  return result
132380
132407
  },
132381
132408
 
132382
- // 虚拟滚动总高度
132383
- virtualTotalHeight() {
132384
- const data = this.processedTableData
132385
- return data.length * this.rowHeight
132386
- },
132387
-
132388
- // 虚拟滚动偏移量
132389
- virtualOffsetY() {
132390
- const start = Math.max(0, this.visibleStartIndex - this.bufferSize)
132391
- return start * this.rowHeight
132392
- },
132393
-
132394
- // 扁平化列配置(处理 children 嵌套)
132409
+ // 扁平化列配置,添加唯一 key
132395
132410
  flattenedColumns() {
132396
132411
  if (this.flattenedColumnsCache.length) return this.flattenedColumnsCache
132397
- const result = []
132398
- const flatten = (cols) => {
132399
- cols.forEach(col => {
132400
- const key = col.prop || col.label || Math.random().toString(36).slice(2)
132401
- result.push({ ...col, _key: key })
132412
+ const assignKeys = (cols, parentPath = '') => {
132413
+ return cols.map((col, index) => {
132414
+ const path = parentPath ? `${parentPath}_${index}` : String(index)
132415
+ const key = col.prop || col.slot || col.label || path
132416
+ const item = { ...col, _key: key }
132417
+ if (col.children && col.children.length) {
132418
+ item.children = assignKeys(col.children, path)
132419
+ }
132420
+ return item
132402
132421
  })
132403
132422
  }
132404
- flatten(this.columns)
132405
- this.flattenedColumnsCache = result
132406
- return result
132407
- },
132408
-
132409
- // 虚拟滚动时的可见数据
132410
- visibleData() {
132411
- const data = this.processedTableData
132412
- if (!this.virtualScroll || data.length === 0) {
132413
- return data
132414
- }
132415
- const start = Math.max(0, this.visibleStartIndex - this.bufferSize)
132416
- const end = Math.min(data.length, this.visibleEndIndex + this.bufferSize)
132417
- return data.slice(start, end)
132423
+ this.flattenedColumnsCache = assignKeys(this.columns)
132424
+ return this.flattenedColumnsCache
132418
132425
  }
132419
132426
  },
132420
132427
 
132421
132428
  watch: {
132422
- tableData: {
132423
- handler() {
132424
- this.spanCache = {}
132425
- this.flattenedColumnsCache = []
132426
- if (this.virtualScroll) {
132427
- this.$nextTick(() => {
132428
- this.measureRowHeight()
132429
- this.updateVisibleRange()
132430
- })
132431
- }
132432
- },
132433
- immediate: false
132429
+ tableData() {
132430
+ this.spanCache = {}
132431
+ this.flattenedColumnsCache = []
132434
132432
  },
132435
-
132436
132433
  columns: {
132437
132434
  handler() {
132438
132435
  this.flattenedColumnsCache = []
132436
+ this.spanCache = {}
132439
132437
  },
132440
132438
  deep: true
132441
132439
  },
132442
-
132443
- virtualScroll(val) {
132444
- if (val) {
132445
- this.$nextTick(() => this.initVirtualScroll())
132446
- } else {
132447
- this.destroyVirtualScroll()
132448
- }
132440
+ groupColumns: {
132441
+ handler() {
132442
+ this.spanCache = {}
132443
+ },
132444
+ deep: true
132449
132445
  }
132450
132446
  },
132451
132447
 
132452
132448
  mounted() {
132453
- if (this.virtualScroll) {
132454
- this.$nextTick(() => this.initVirtualScroll())
132455
- }
132456
- // 监听窗口resize,更新表格宽度
132457
- this.resizeHandler = () => {
132458
- if (this.virtualScroll) {
132459
- this.$nextTick(() => this.updateTableWidth())
132460
- }
132461
- }
132462
- window.addEventListener('resize', this.resizeHandler)
132449
+ this.$nextTick(() => {
132450
+ window.addEventListener('resize', this.handleResize)
132451
+ })
132463
132452
  },
132464
132453
 
132465
132454
  beforeDestroy() {
132466
- this.destroyVirtualScroll()
132467
- window.removeEventListener('resize', this.resizeHandler)
132455
+ window.removeEventListener('resize', this.handleResize)
132468
132456
  },
132469
132457
 
132470
132458
  methods: {
132471
- // ==================== 小计/总计工具函数 ====================
132472
- // 找到第一个数据列(非 selection/index),用于显示"小计"/"总计"标签
132459
+ handleResize() {
132460
+ this.$nextTick(() => {
132461
+ this.$refs.table && this.$refs.table.doLayout()
132462
+ })
132463
+ },
132464
+
132465
+ // ========== 小计 / 总计 相关 ==========
132473
132466
  findLabelColumn() {
132474
132467
  for (const col of this.columns) {
132475
132468
  if (col.children && col.children.length) {
@@ -132483,33 +132476,25 @@ var external_ElementUI_ = __webpack_require__("5f72");
132483
132476
  return { prop: '', label: '' }
132484
132477
  },
132485
132478
 
132486
- // 按指定字段分组(保持分组顺序)
132487
132479
  groupData(data, groupBy) {
132488
132480
  const map = new Map()
132489
132481
  data.forEach(row => {
132490
132482
  const key = groupBy.map(f => row[f]).join('|||')
132491
- if (!map.has(key)) {
132492
- map.set(key, [])
132493
- }
132483
+ if (!map.has(key)) map.set(key, [])
132494
132484
  map.get(key).push(row)
132495
132485
  })
132496
132486
  return map
132497
132487
  },
132498
132488
 
132499
- // 计算单列的聚合值
132500
132489
  _calcValue(rows, calc) {
132501
- // 自定义函数
132502
132490
  if (typeof calc === 'function') return calc(rows)
132503
-
132504
- // 字符串:'sum' | 'avg' | 'count' | 'min' | 'max'(需配合 prop 使用)
132505
-
132506
- // 对象:{ prop: 'field', type: 'sum' } 或 { prop: 'field' } (默认 sum)
132507
132491
  const prop = calc.prop
132508
132492
  const type = calc.type || 'sum'
132509
132493
  const vals = prop ? rows.map(r => parseFloat(r[prop]) || 0) : []
132510
132494
  switch (type) {
132511
132495
  case 'sum': return vals.reduce((s, v) => s + v, 0)
132512
- case 'avg': case 'average': return vals.length ? (vals.reduce((s, v) => s + v, 0) / vals.length) : 0
132496
+ case 'avg':
132497
+ case 'average': return vals.length ? vals.reduce((s, v) => s + v, 0) / vals.length : 0
132513
132498
  case 'count': return rows.length
132514
132499
  case 'min': return vals.length ? Math.min(...vals) : 0
132515
132500
  case 'max': return vals.length ? Math.max(...vals) : 0
@@ -132517,20 +132502,16 @@ var external_ElementUI_ = __webpack_require__("5f72");
132517
132502
  }
132518
132503
  },
132519
132504
 
132520
- // 创建小计行
132521
- createSubtotalRow(groupRows, groupKey) {
132505
+ createSubtotalRow(groupRows) {
132522
132506
  const config = this.subtotalConfig
132523
132507
  const rawLabelProp = this.findLabelColumn()
132524
-
132525
- // 获取第一个 groupBy 列的值显示
132526
132508
  const labelField = config.groupBy ? config.groupBy[0] : ''
132527
- const groupValue = groupRows[0] ? groupRows[0][labelField] : groupKey
132509
+ const groupValue = groupRows[0] ? groupRows[0][labelField] : ''
132528
132510
  const labelText = config.labelText || `${groupValue} 小计`
132529
132511
 
132530
- const row = { _rowType: 'subtotal', _groupKey: groupKey }
132512
+ const row = { _rowType: 'subtotal' }
132531
132513
  row[rawLabelProp.prop] = labelText
132532
132514
 
132533
- // 计算各列的聚合值
132534
132515
  if (config.columns) {
132535
132516
  Object.keys(config.columns).forEach(prop => {
132536
132517
  const calc = config.columns[prop]
@@ -132539,11 +132520,9 @@ var external_ElementUI_ = __webpack_require__("5f72");
132539
132520
  : this._calcValue(groupRows, calc)
132540
132521
  })
132541
132522
  }
132542
-
132543
132523
  return row
132544
132524
  },
132545
132525
 
132546
- // 创建总计行
132547
132526
  createTotalRow(allRows) {
132548
132527
  const config = this.totalConfig
132549
132528
  const rawLabelProp = this.findLabelColumn()
@@ -132552,7 +132531,6 @@ var external_ElementUI_ = __webpack_require__("5f72");
132552
132531
  const row = { _rowType: 'total' }
132553
132532
  row[rawLabelProp.prop] = labelText
132554
132533
 
132555
- // 计算各列的聚合值
132556
132534
  if (config.columns) {
132557
132535
  Object.keys(config.columns).forEach(prop => {
132558
132536
  const calc = config.columns[prop]
@@ -132561,55 +132539,40 @@ var external_ElementUI_ = __webpack_require__("5f72");
132561
132539
  : this._calcValue(allRows, calc)
132562
132540
  })
132563
132541
  }
132564
-
132565
132542
  return row
132566
132543
  },
132567
132544
 
132568
- // 行类名(小计/总计行样式)
132569
132545
  getRowClassName({ row }) {
132570
- if (!row) return ''
132571
132546
  if (row._rowType === 'subtotal') return 'ex-table-row-subtotal'
132572
132547
  if (row._rowType === 'total') return 'ex-table-row-total'
132573
132548
  return ''
132574
132549
  },
132575
132550
 
132576
- // ==================== 列配置 ====================
132551
+ // ========== 列处理 ==========
132577
132552
  getColumnProps(col) {
132578
132553
  const { _key, children, render, formatter, slot, ...props } = col
132579
132554
  return props
132580
132555
  },
132581
132556
 
132582
- // ==================== 序号方法 ====================
132583
132557
  indexMethod(index) {
132584
- if (this.virtualScroll && this.visibleData.length > 0) {
132585
- const row = this.visibleData[index]
132586
- if (row && row._realIndex !== undefined) {
132587
- return row._realIndex + 1
132588
- }
132589
- }
132590
132558
  return index + 1
132591
132559
  },
132592
132560
 
132593
- // ==================== 分组合并 ====================
132561
+ // ========== 合并单元格 ==========
132594
132562
  handleSpanMethod({ row, column, rowIndex }) {
132595
- // 跳过小计/总计行,不做合并
132596
132563
  if (row._rowType === 'subtotal' || row._rowType === 'total') {
132597
132564
  return { rowspan: 1, colspan: 1 }
132598
132565
  }
132599
-
132600
132566
  if (!this.groupColumns.length) return { rowspan: 1, colspan: 1 }
132601
132567
 
132602
- const data = this.virtualScroll ? this.visibleData : this.processedTableData
132568
+ const data = this.processedTableData
132603
132569
  const prop = column.property
132604
132570
  const groupIndex = this.groupColumns.indexOf(prop)
132605
-
132606
132571
  if (groupIndex === -1) return { rowspan: 1, colspan: 1 }
132607
132572
 
132608
- // 检查缓存
132609
132573
  const cacheKey = `${rowIndex}_${prop}`
132610
132574
  if (this.spanCache[cacheKey]) return this.spanCache[cacheKey]
132611
132575
 
132612
- // 判断当前行是否与前一行在分组列上完全相同
132613
132576
  if (rowIndex > 0) {
132614
132577
  const prevRow = data[rowIndex - 1]
132615
132578
  let isSame = true
@@ -132621,161 +132584,74 @@ var external_ElementUI_ = __webpack_require__("5f72");
132621
132584
  }
132622
132585
  }
132623
132586
  if (isSame) {
132624
- const result = { rowspan: 0, colspan: 1 }
132625
- this.spanCache[cacheKey] = result
132626
- return result
132587
+ const res = { rowspan: 0, colspan: 1 }
132588
+ this.spanCache[cacheKey] = res
132589
+ return res
132627
132590
  }
132628
132591
  }
132629
132592
 
132630
- // 向下扫描计算合并行数
132631
132593
  let count = 1
132632
132594
  for (let i = rowIndex + 1; i < data.length; i++) {
132633
132595
  const nextRow = data[i]
132634
- let isSame = true
132596
+ let same = true
132635
132597
  for (let j = 0; j <= groupIndex; j++) {
132636
132598
  const gp = this.groupColumns[j]
132637
132599
  if (nextRow[gp] !== row[gp]) {
132638
- isSame = false
132600
+ same = false
132639
132601
  break
132640
132602
  }
132641
132603
  }
132642
- if (isSame) {
132643
- count++
132644
- } else {
132645
- break
132646
- }
132604
+ if (same) count++
132605
+ else break
132647
132606
  }
132648
132607
 
132649
- const result = { rowspan: count > 1 ? count : 1, colspan: 1 }
132650
- this.spanCache[cacheKey] = result
132651
- return result
132608
+ const res = { rowspan: count > 1 ? count : 1, colspan: 1 }
132609
+ this.spanCache[cacheKey] = res
132610
+ return res
132652
132611
  },
132653
132612
 
132654
- // ==================== 选择 ====================
132613
+ // ========== 选择、排序、分页 ==========
132655
132614
  handleSelectionChange(rows) {
132656
- // 过滤掉小计/总计行
132657
132615
  this.selectedRows = rows.filter(r => !r._rowType)
132658
132616
  this.$emit('selection-change', this.selectedRows)
132659
132617
  },
132660
-
132661
- // ==================== 排序 ====================
132662
- handleSortChange({ prop, order }) {
132663
- this.$emit('sort-change', { prop, order })
132618
+ handleSortChange(info) {
132619
+ this.$emit('sort-change', info)
132664
132620
  },
132665
-
132666
- // ==================== 分页 ====================
132667
132621
  handleSizeChange(size) {
132668
132622
  this.$emit('size-change', size)
132669
132623
  },
132670
-
132671
132624
  handleCurrentChange(page) {
132672
132625
  this.$emit('page-change', page)
132673
132626
  },
132674
132627
 
132675
- // ==================== 公开方法 ====================
132628
+ // ========== 对外暴露方法 ==========
132676
132629
  getSelection() {
132677
132630
  return this.selectedRows
132678
132631
  },
132679
-
132680
132632
  clearSelection() {
132681
132633
  this.$refs.table && this.$refs.table.clearSelection()
132682
132634
  this.selectedRows = []
132683
132635
  },
132684
-
132685
132636
  toggleRowSelection(row, selected) {
132686
132637
  this.$refs.table && this.$refs.table.toggleRowSelection(row, selected)
132687
132638
  },
132688
-
132689
132639
  toggleRowsSelection(rows, selected) {
132690
- if (rows && rows.length) {
132691
- rows.forEach(row => {
132692
- this.$refs.table && this.$refs.table.toggleRowSelection(row, selected)
132693
- })
132694
- }
132640
+ if (!rows || !rows.length) return
132641
+ rows.forEach(row => {
132642
+ this.$refs.table && this.$refs.table.toggleRowSelection(row, selected)
132643
+ })
132695
132644
  },
132696
-
132697
132645
  doLayout() {
132698
132646
  this.$refs.table && this.$refs.table.doLayout()
132699
- },
132700
-
132701
- // 获取列宽度(支持自适应)
132702
- getColumnWidth(col) {
132703
- // 如果有固定宽度,使用固定宽度
132704
- if (col.width) {
132705
- return typeof col.width === 'number' ? col.width : col.width.replace('px', '')
132706
- }
132707
- // 非固定列且虚拟滚动时使用自适应宽度
132708
- if (!col.fixed && this.virtualScroll) {
132709
- return this.autoColumnWidth
132710
- }
132711
- // 默认宽度
132712
- if (col.minWidth) {
132713
- return typeof col.minWidth === 'number' ? col.minWidth : col.minWidth.replace('px', '')
132714
- }
132715
- return 100
132716
- },
132717
-
132718
- // 更新表格宽度(用于自适应列宽计算)
132719
- updateTableWidth() {
132720
- const tableWrapper = this.$refs.tableBody
132721
- if (tableWrapper) {
132722
- this.tableWidth = tableWrapper.offsetWidth || 1000
132723
- }
132724
- },
132725
-
132726
- // ==================== 虚拟滚动 ====================
132727
- initVirtualScroll() {
132728
- this.updateTableWidth()
132729
- this.measureRowHeight()
132730
- if (this.processedTableData.length > 0) {
132731
- this.updateVisibleRange()
132732
- }
132733
- },
132734
-
132735
- measureRowHeight() {
132736
- const el = this.$refs.table && this.$refs.table.$el
132737
- if (!el) return
132738
- const row = el.querySelector('.el-table__row')
132739
- if (row) {
132740
- this.rowHeight = row.offsetHeight || this.rowInitHeight
132741
- }
132742
- },
132743
-
132744
- handleBodyScroll(event) {
132745
- const target = event.target
132746
- this.scrollLeft = target.scrollLeft
132747
- if (this.virtualScroll) {
132748
- this.scrollTop = target.scrollTop
132749
- this.updateVisibleRange()
132750
- }
132751
- },
132752
-
132753
- updateVisibleRange() {
132754
- const totalCount = this.processedTableData.length
132755
- if (totalCount === 0 || this.rowHeight === 0) return
132756
-
132757
- const visibleCount = Math.ceil((this.computedHeight || 400) / this.rowHeight)
132758
-
132759
- this.visibleStartIndex = Math.max(0, Math.floor(this.scrollTop / this.rowHeight))
132760
- this.visibleEndIndex = Math.min(
132761
- totalCount,
132762
- this.visibleStartIndex + visibleCount
132763
- )
132764
- this.visibleCount = visibleCount
132765
- },
132766
-
132767
- destroyVirtualScroll() {
132768
- this.scrollTop = 0
132769
- this.visibleStartIndex = 0
132770
- this.visibleEndIndex = 0
132771
132647
  }
132772
132648
  }
132773
132649
  });
132774
132650
 
132775
132651
  // CONCATENATED MODULE: ./src/components/ex-table/index.vue?vue&type=script&lang=js
132776
132652
  /* harmony default export */ var components_ex_tablevue_type_script_lang_js = (ex_tablevue_type_script_lang_js);
132777
- // EXTERNAL MODULE: ./src/components/ex-table/index.vue?vue&type=style&index=0&id=5be23981&prod&scoped=true&lang=css
132778
- var ex_tablevue_type_style_index_0_id_5be23981_prod_scoped_true_lang_css = __webpack_require__("b2b3");
132653
+ // EXTERNAL MODULE: ./src/components/ex-table/index.vue?vue&type=style&index=0&id=f6bc1634&prod&scoped=true&lang=css
132654
+ var ex_tablevue_type_style_index_0_id_f6bc1634_prod_scoped_true_lang_css = __webpack_require__("a0ef");
132779
132655
 
132780
132656
  // CONCATENATED MODULE: ./src/components/ex-table/index.vue
132781
132657
 
@@ -132788,11 +132664,11 @@ var ex_tablevue_type_style_index_0_id_5be23981_prod_scoped_true_lang_css = __web
132788
132664
 
132789
132665
  var ex_table_component = normalizeComponent(
132790
132666
  components_ex_tablevue_type_script_lang_js,
132791
- ex_tablevue_type_template_id_5be23981_scoped_true_render,
132792
- ex_tablevue_type_template_id_5be23981_scoped_true_staticRenderFns,
132667
+ ex_tablevue_type_template_id_f6bc1634_scoped_true_render,
132668
+ ex_tablevue_type_template_id_f6bc1634_scoped_true_staticRenderFns,
132793
132669
  false,
132794
132670
  null,
132795
- "5be23981",
132671
+ "f6bc1634",
132796
132672
  null
132797
132673
 
132798
132674
  )
@@ -132939,6 +132815,43 @@ function registerElementDirectives(Vue, ElementUI) {
132939
132815
  }
132940
132816
  })
132941
132817
  }
132818
+ // CONCATENATED MODULE: ./src/components/ex-table/virtualScrollData.js
132819
+ /**
132820
+ * 生成虚拟滚动演示数据
132821
+ * @param {number} count 数据条数,默认 10000
132822
+ * @returns {Array}
132823
+ */
132824
+ function createVirtualScrollData(count = 10000) {
132825
+ const departments = ['研发部', '产品部', '运营部', '财务部', '市场部']
132826
+ const positions = ['工程师', '产品经理', '运营专员', '财务主管', '市场经理']
132827
+ const statuses = ['在职', '休假', '离职']
132828
+
132829
+ return Array.from({ length: count }, (_, i) => ({
132830
+ id: i + 1,
132831
+ name: `用户${i + 1}`,
132832
+ department: departments[i % departments.length],
132833
+ position: positions[i % positions.length],
132834
+ email: `user${i + 1}@example.com`,
132835
+ phone: `13800138${String(i).padStart(4, '0')}`,
132836
+ address: `北京市朝阳区第${i + 1}号街道`,
132837
+ salary: 5000 + Math.floor(Math.random() * 10000),
132838
+ status: statuses[i % statuses.length]
132839
+ }))
132840
+ }
132841
+
132842
+ /** 虚拟滚动演示列配置 */
132843
+ const virtualScrollColumns = [
132844
+ { prop: 'id', label: 'ID', fixed: 'left', width: 80 },
132845
+ { prop: 'name', label: '姓名', fixed: 'left', width: 120 },
132846
+ { prop: 'department', label: '部门', width: 150 },
132847
+ { prop: 'position', label: '职位', width: 150 },
132848
+ { prop: 'email', label: '邮箱', width: 200 },
132849
+ { prop: 'phone', label: '电话', width: 130 },
132850
+ { prop: 'address', label: '地址', width: 200 },
132851
+ { prop: 'salary', label: '薪资', width: 120 },
132852
+ { prop: 'status', label: '状态', fixed: 'right', width: 100 }
132853
+ ]
132854
+
132942
132855
  // CONCATENATED MODULE: ./src/index.js
132943
132856
  // 导入主题样式(定义 CSS 变量)
132944
132857
 
@@ -132952,10 +132865,10 @@ function registerElementDirectives(Vue, ElementUI) {
132952
132865
 
132953
132866
 
132954
132867
  // ES Module 默认导出需要通过 .default 访问
132955
- const src_utils = utils.default || utils
132868
+ const src_utils_0 = src_utils.default || src_utils
132956
132869
 
132957
132870
  // 从 utils 导入配置管理函数(仅用于存储配置)
132958
- const { getConfig: src_getConfig, setConfig: src_setConfig, getTheme: src_getTheme, getSize: src_getSize, getPrimaryColor: src_getPrimaryColor, resetConfig: src_resetConfig, onConfigChange: src_onConfigChange, setTheme: src_setTheme, setSize: src_setSize, setPrimaryColor: src_setPrimaryColor } = src_utils
132871
+ const { getConfig: src_getConfig, setConfig: src_setConfig, getTheme: src_getTheme, getSize: src_getSize, getPrimaryColor: src_getPrimaryColor, resetConfig: src_resetConfig, onConfigChange: src_onConfigChange, setTheme: src_setTheme, setSize: src_setSize, setPrimaryColor: src_setPrimaryColor } = src_utils_0
132959
132872
 
132960
132873
  // 导入组件
132961
132874
 
@@ -133038,15 +132951,7 @@ const install = function (Vue, options = {}) {
133038
132951
  }
133039
132952
  }
133040
132953
 
133041
- // 导入内部 element-ui 依赖(作为内部依赖,不与外部冲突)
133042
- const ElementUI = __webpack_require__("5f72")
133043
-
133044
- // 注册 ElementUI 的基础组件(用于 ExTable 等封装组件内部使用)
133045
- // 不调用 Vue.use(ElementUI),避免全局污染
133046
- // ex-table 等组件内部会直接使用 element-ui 的组件
133047
-
133048
- // 在开发环境下注册 ElementUI 组件为 Ex 开头(方便文档和示例使用)
133049
- if (false) {}
132954
+ if (false) {}
133050
132955
 
133051
132956
  // 调用统一的注册函数
133052
132957
  }
@@ -133080,6 +132985,9 @@ if (typeof window !== 'undefined' && window.Vue) {
133080
132985
  // ExChart 组件按需导出(使用时需自行安装 echarts 依赖)
133081
132986
 
133082
132987
 
132988
+ // ExTable 虚拟滚动演示数据工具
132989
+
132990
+
133083
132991
  // 导出工具函数和变量
133084
132992
 
133085
132993
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js