st-comp 0.0.277 → 0.0.279
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.
- package/README.md +19 -19
- package/es/ChartLayout.cjs +1 -1
- package/es/ChartLayout.js +1 -1
- package/es/ConfigProvider.cjs +1 -1
- package/es/ConfigProvider.js +3 -3
- package/es/Contextmenu.cjs +1 -1
- package/es/Contextmenu.js +7 -7
- package/es/CustomFunction.cjs +2 -2
- package/es/CustomFunction.js +514 -308
- package/es/FactorWarning.cjs +1 -1
- package/es/FactorWarning.js +37 -37
- package/es/HeatMap.cjs +1 -1
- package/es/HeatMap.js +7 -7
- package/es/Kline.cjs +1 -1
- package/es/Kline.js +18 -18
- package/es/KlineBasic.cjs +1 -1
- package/es/KlineBasic.js +93 -93
- package/es/KlineConfig.cjs +1 -1
- package/es/KlineConfig.js +17 -17
- package/es/KlineNew.cjs +1 -1
- package/es/KlineNew.js +14 -14
- package/es/KlinePlus.cjs +4 -4
- package/es/KlinePlus.js +760 -656
- package/es/LinearLegend.cjs +1 -1
- package/es/LinearLegend.js +1 -1
- package/es/Map.cjs +1 -1
- package/es/Map.js +1 -1
- package/es/MonacoEditor.cjs +1 -1
- package/es/MonacoEditor.js +18 -18
- package/es/Pagination.cjs +1 -1
- package/es/Pagination.js +76 -76
- package/es/PasswordPrompt.cjs +1 -1
- package/es/PasswordPrompt.js +2 -2
- package/es/Pie.cjs +2 -2
- package/es/Pie.js +14 -14
- package/es/Table.cjs +1 -1
- package/es/Table.js +22 -22
- package/es/TreeMap.cjs +1 -1
- package/es/TreeMap.js +4 -4
- package/es/User.cjs +1 -1
- package/es/User.js +73 -73
- package/es/VarSelectDialog.cjs +2 -2
- package/es/VarSelectDialog.js +21 -21
- package/es/VarietyAiHelper.cjs +4 -4
- package/es/VarietyAiHelper.js +139 -138
- package/es/VarietyAutoComplete.cjs +1 -1
- package/es/VarietyAutoComplete.js +16 -16
- package/es/VarietySearch.cjs +4 -4
- package/es/VarietySearch.js +861 -857
- package/es/{VarietySelect-6a166293.js → VarietySelect-41daac7b.js} +10 -10
- package/es/{VarietySelect-610903f0.cjs → VarietySelect-d58eee29.cjs} +1 -1
- package/es/VarietyTextCopy.cjs +2 -2
- package/es/VarietyTextCopy.js +25 -25
- package/es/VirtualTable.cjs +1 -1
- package/es/VirtualTable.js +6 -6
- package/es/{_initCloneObject-152b4f4e.js → _initCloneObject-5e73c9c8.js} +2 -2
- package/es/{_initCloneObject-76e116d0.cjs → _initCloneObject-a5832933.cjs} +1 -1
- package/es/aiTools-229609fb.cjs +2 -0
- package/es/aiTools-ce2f9281.js +115 -0
- package/es/aiTools.js +179 -176
- package/es/{config-provider-4c784baf.cjs → config-provider-06ea6b42.cjs} +1 -1
- package/es/{config-provider-7a3aca55.js → config-provider-88b637a8.js} +3 -3
- package/es/{dropdown-987c47fb.cjs → dropdown-4ce4c3e2.cjs} +1 -1
- package/es/{dropdown-01e09205.js → dropdown-72fbc15d.js} +2 -2
- package/es/{el-autocomplete-342ae823.js → el-autocomplete-6cafcdf1.js} +5 -5
- package/es/{el-autocomplete-16f66b34.cjs → el-autocomplete-e0857c5b.cjs} +1 -1
- package/es/{el-button-13dc915f.cjs → el-button-613e0bb2.cjs} +1 -1
- package/es/{el-button-314171a0.js → el-button-94d3de38.js} +3 -3
- package/es/{el-checkbox-5899681f.js → el-checkbox-6d4cb393.js} +3 -3
- package/es/{el-checkbox-bdf64663.cjs → el-checkbox-e90762df.cjs} +1 -1
- package/es/{el-dialog-0ef95df6.cjs → el-dialog-02942e22.cjs} +1 -1
- package/es/{el-dialog-86a3eec2.js → el-dialog-5e30161f.js} +4 -4
- package/es/{el-form-item-77ef6784.cjs → el-form-item-44f060d8.cjs} +1 -1
- package/es/{el-form-item-cda4d93c.js → el-form-item-9e8969ea.js} +5 -5
- package/es/{el-input-fa1445ad.js → el-input-342b2def.js} +13 -13
- package/es/{el-input-89222943.cjs → el-input-9a9a7f7f.cjs} +1 -1
- package/es/{el-input-number-d3338e5e.cjs → el-input-number-65c847d6.cjs} +1 -1
- package/es/{el-input-number-8f6dbf74.js → el-input-number-c22b803a.js} +35 -35
- package/es/{el-loading-84dde1a8.cjs → el-loading-8179b497.cjs} +1 -1
- package/es/{el-loading-9b671203.js → el-loading-bcc51e3d.js} +1 -1
- package/es/{el-menu-item-535fef90.js → el-menu-item-339baf6d.js} +21 -21
- package/es/{el-menu-item-4531fd0e.cjs → el-menu-item-83186444.cjs} +1 -1
- package/es/{el-message-box-621ed2f1.js → el-message-box-035b699c.js} +9 -9
- package/es/{el-message-box-f5717070.cjs → el-message-box-c62d3217.cjs} +1 -1
- package/es/{el-overlay-23de4324.js → el-overlay-3e17604b.js} +3 -3
- package/es/{el-overlay-151708cb.cjs → el-overlay-8f1da9e8.cjs} +1 -1
- package/es/{el-popconfirm-b8aa490e.cjs → el-popconfirm-4e32ec1b.cjs} +1 -1
- package/es/{el-popconfirm-bcff0aa5.js → el-popconfirm-f8a86e2c.js} +4 -4
- package/es/{el-popper-43ec37f4.cjs → el-popper-a4f3ae4d.cjs} +1 -1
- package/es/{el-popper-03988662.js → el-popper-fbd0dcea.js} +1 -1
- package/es/{el-segmented-db3a86be.js → el-segmented-56bd58a8.js} +2 -2
- package/es/{el-segmented-79a1367c.cjs → el-segmented-833ac177.cjs} +1 -1
- package/es/{el-select-4bd0010d.js → el-select-44fa547d.js} +8 -8
- package/es/{el-select-ec04e7ce.cjs → el-select-70806166.cjs} +1 -1
- package/es/{el-table-column-35e47229.cjs → el-table-column-3e2cdfca.cjs} +1 -1
- package/es/{el-table-column-7af2bec7.js → el-table-column-b74a857d.js} +9 -9
- package/es/{el-tag-bef9e83d.js → el-tag-66c83156.js} +2 -2
- package/es/{el-tag-5d5608e0.cjs → el-tag-9c2f329f.cjs} +1 -1
- package/es/{el-text-f998902c.js → el-text-034bd3f4.js} +1 -1
- package/es/{el-text-abf10fdf.cjs → el-text-6b2374bb.cjs} +1 -1
- package/es/index-00f6ca75.cjs +1 -0
- package/es/{index-a00e0534.cjs → index-185792a7.cjs} +1 -1
- package/es/{index-d1b554ac.js → index-1e2a38ab.js} +2 -2
- package/es/{index-0986e373.cjs → index-3153c1db.cjs} +1 -1
- package/es/{index-936e7dec.js → index-44a382a5.js} +2 -2
- package/es/{index-ce21e2ce.js → index-5216d5f5.js} +5 -5
- package/es/{index-7ed0999e.js → index-53cc4e43.js} +720 -716
- package/es/{index-cfcd60ca.cjs → index-5c0dd943.cjs} +1 -1
- package/es/{index-cfd00899.cjs → index-870b6c9d.cjs} +1 -1
- package/es/{index-a83ec4b7.js → index-8c2d7e05.js} +1 -1
- package/es/{index-8901a38c.cjs → index-94131fd7.cjs} +30 -30
- package/es/{index-db846633.cjs → index-9d16cea8.cjs} +1 -1
- package/es/{index-f3f6ee27.js → index-a33b2fb8.js} +178 -178
- package/es/{index-2d7ac156.cjs → index-a9246d17.cjs} +17 -17
- package/es/{index-60c69dd1.cjs → index-ac8dc53d.cjs} +1 -1
- package/es/{index-102edf6c.js → index-c5f2d372.js} +2 -2
- package/es/{index-6290ae0f.js → index-c6584658.js} +2 -2
- package/es/{index-5c44d71a.js → index-eb96e074.js} +149 -119
- package/es/{index-5ed42e9c.js → index-f034b910.js} +2 -2
- package/es/{index-c58e90e9.cjs → index-f58b2920.cjs} +1 -1
- package/es/{python-6cc6ec1b.js → python-8a1664e6.js} +18 -18
- package/es/{python-71f59893.cjs → python-a3db9620.cjs} +1 -1
- package/es/style.css +1 -1
- package/es/{use-form-common-props-02be4928.cjs → use-form-common-props-ac666630.cjs} +1 -1
- package/es/{use-form-common-props-76a09d89.js → use-form-common-props-ed72e914.js} +11 -11
- package/es/{use-global-config-31b3ec57.cjs → use-global-config-23472471.cjs} +1 -1
- package/es/{use-global-config-0f43458b.js → use-global-config-ee406d58.js} +2 -2
- package/es/{validator-ea292506.cjs → validator-366dbf39.cjs} +1 -1
- package/es/{validator-0e037618.js → validator-c60a8956.js} +1 -1
- package/es/{zh-cn-1227eb8a.js → zh-cn-b59a0910.js} +1 -1
- package/es/{zh-cn-0edc7234.cjs → zh-cn-c21d12d8.cjs} +1 -1
- package/lib/aiTools.js +179 -176
- package/lib/bundle.js +1 -1
- package/lib/bundle.umd.cjs +230 -230
- package/lib/{index-2a269748.js → index-62fa175a.js} +30149 -29800
- package/lib/{python-41da18e5.js → python-4a48fa39.js} +1 -1
- package/lib/style.css +1 -1
- package/package.json +53 -44
- package/auto-imports.d.ts +0 -13
- package/components.d.ts +0 -59
- package/es/aiTools-a3b095f6.js +0 -113
- package/es/aiTools-f36136a4.cjs +0 -2
- package/es/index-476c4459.cjs +0 -1
- package/index.html +0 -13
- package/packages/ChartLayout/index.ts +0 -8
- package/packages/ChartLayout/index.vue +0 -63
- package/packages/ConfigProvider/index.ts +0 -8
- package/packages/ConfigProvider/index.vue +0 -66
- package/packages/Contextmenu/index.ts +0 -8
- package/packages/Contextmenu/index.vue +0 -134
- package/packages/CustomFunction/components/ManageDialog.vue +0 -706
- package/packages/CustomFunction/index.ts +0 -8
- package/packages/CustomFunction/index.vue +0 -200
- package/packages/FactorWarning/index.ts +0 -8
- package/packages/FactorWarning/index.vue +0 -754
- package/packages/FactorWarning/tools.js +0 -10
- package/packages/HeatMap/index.ts +0 -8
- package/packages/HeatMap/index.vue +0 -141
- package/packages/Kline/components/Contextmenu/index.vue +0 -110
- package/packages/Kline/components/Tips/index.vue +0 -40
- package/packages/Kline/componentsNew/KlineSlide/index.vue +0 -155
- package/packages/Kline/componentsNew/KlineSub/index.vue +0 -297
- package/packages/Kline/componentsNew/KlineTips/index.vue +0 -66
- package/packages/Kline/componentsNew/KlineUtils/index.vue +0 -84
- package/packages/Kline/componentsNew/Tips/index.vue +0 -33
- package/packages/Kline/formatKlineData.ts +0 -109
- package/packages/Kline/images/buy.svg +0 -1
- package/packages/Kline/images/pen.png +0 -0
- package/packages/Kline/images/sell.svg +0 -1
- package/packages/Kline/images/t.svg +0 -1
- package/packages/Kline/index.ts +0 -16
- package/packages/Kline/index.vue +0 -891
- package/packages/Kline/option.ts +0 -539
- package/packages/Kline/type.d.ts +0 -219
- package/packages/Kline/utils.ts +0 -682
- package/packages/KlineBasic/api.js +0 -58
- package/packages/KlineBasic/components/AverageTips/index.vue +0 -33
- package/packages/KlineBasic/components/Contextmenu/index.vue +0 -105
- package/packages/KlineBasic/components/KlineSub/index.vue +0 -332
- package/packages/KlineBasic/components/KlineTips/index.vue +0 -99
- package/packages/KlineBasic/components/Tips/index.vue +0 -56
- package/packages/KlineBasic/index.ts +0 -8
- package/packages/KlineBasic/index.vue +0 -839
- package/packages/KlineBasic/utils.js +0 -258
- package/packages/KlineConfig/config.js +0 -46
- package/packages/KlineConfig/index.ts +0 -8
- package/packages/KlineConfig/index.vue +0 -356
- package/packages/KlineNew/components/KlineSlide/index.vue +0 -156
- package/packages/KlineNew/components/KlineSub/index.vue +0 -335
- package/packages/KlineNew/components/KlineTips/index.vue +0 -96
- package/packages/KlineNew/components/KlineUtils/index.vue +0 -341
- package/packages/KlineNew/components/Tips/index.vue +0 -33
- package/packages/KlineNew/index.ts +0 -14
- package/packages/KlinePlus/components/SliderChart.vue +0 -208
- package/packages/KlinePlus/components/Tips.vue +0 -36
- package/packages/KlinePlus/images/buy.svg +0 -1
- package/packages/KlinePlus/images/sell.svg +0 -1
- package/packages/KlinePlus/images/t.svg +0 -1
- package/packages/KlinePlus/index.ts +0 -8
- package/packages/KlinePlus/index.vue +0 -1067
- package/packages/KlinePlus/utils.js +0 -771
- package/packages/LinearLegend/index.ts +0 -8
- package/packages/LinearLegend/index.vue +0 -112
- package/packages/Map/China.json +0 -1
- package/packages/Map/index.ts +0 -8
- package/packages/Map/index.vue +0 -147
- package/packages/MonacoEditor/index.ts +0 -8
- package/packages/MonacoEditor/index.vue +0 -1141
- package/packages/MonacoEditor/tools.js +0 -18
- package/packages/Pagination/index.ts +0 -8
- package/packages/Pagination/index.vue +0 -87
- package/packages/PasswordPrompt/index.ts +0 -8
- package/packages/PasswordPrompt/index.vue +0 -267
- package/packages/Pie/index.ts +0 -8
- package/packages/Pie/index.vue +0 -148
- package/packages/Table/components/Button/index.vue +0 -61
- package/packages/Table/components/Formatter/index.vue +0 -26
- package/packages/Table/index.d.ts +0 -0
- package/packages/Table/index.ts +0 -8
- package/packages/Table/index.vue +0 -133
- package/packages/TreeMap/index.ts +0 -8
- package/packages/TreeMap/index.vue +0 -186
- package/packages/User/components/EditInfoDialog/Mobile.vue +0 -214
- package/packages/User/components/EditInfoDialog/index.vue +0 -161
- package/packages/User/components/EditPasswordDialog.vue +0 -168
- package/packages/User/components/SetPasswordDialog.vue +0 -160
- package/packages/User/index.ts +0 -8
- package/packages/User/index.vue +0 -117
- package/packages/VarSelectDialog/Mock.js +0 -495
- package/packages/VarSelectDialog/VarietySelect.vue +0 -78
- package/packages/VarSelectDialog/index.ts +0 -8
- package/packages/VarSelectDialog/index.vue +0 -323
- package/packages/VarietyAiHelper/images/like.png +0 -0
- package/packages/VarietyAiHelper/images/like_no.png +0 -0
- package/packages/VarietyAiHelper/index.ts +0 -8
- package/packages/VarietyAiHelper/index.vue +0 -910
- package/packages/VarietyAutoComplete/index.ts +0 -8
- package/packages/VarietyAutoComplete/index.vue +0 -89
- package/packages/VarietySearch/components/AddTag/index.vue +0 -268
- package/packages/VarietySearch/components/CommonIndicator/IndicatorTags.vue +0 -52
- package/packages/VarietySearch/components/CommonIndicator/index.vue +0 -697
- package/packages/VarietySearch/components/CommonIndicator/tools.js +0 -260
- package/packages/VarietySearch/components/CompositeOrder/index.vue +0 -260
- package/packages/VarietySearch/components/FactorScreen/FactorDescription.vue +0 -70
- package/packages/VarietySearch/components/FactorScreen/index.vue +0 -1158
- package/packages/VarietySearch/components/FactorScreen/tools.js +0 -34
- package/packages/VarietySearch/config.js +0 -539
- package/packages/VarietySearch/index.ts +0 -8
- package/packages/VarietySearch/index.vue +0 -688
- package/packages/VarietyTextCopy/index.ts +0 -8
- package/packages/VarietyTextCopy/index.vue +0 -136
- package/packages/VirtualTable/index.ts +0 -8
- package/packages/VirtualTable/index.vue +0 -241
- package/packages/index.ts +0 -59
- package/public/aiTools.js +0 -176
- package/public/talib.wasm +0 -0
- package/public/vite.svg +0 -1
- package/src/App.vue +0 -140
- package/src/assets/vue.svg +0 -1
- package/src/components/Dialog/index.vue +0 -16
- package/src/components/Kline/index.vue +0 -21
- package/src/components/Table/index.vue +0 -27
- package/src/main.ts +0 -17
- package/src/pages/ChartLayout/index.vue +0 -22
- package/src/pages/ConfigProvider/index.vue +0 -9
- package/src/pages/Contextmenu/index.vue +0 -46
- package/src/pages/CustomFunction/index.vue +0 -13
- package/src/pages/FactorWarning/index.vue +0 -203
- package/src/pages/HeatMap/index.vue +0 -128
- package/src/pages/Kline/index.vue +0 -12
- package/src/pages/KlineBasic/api.js +0 -48
- package/src/pages/KlineBasic/index.vue +0 -366
- package/src/pages/KlineBasic/indicator.js +0 -114
- package/src/pages/KlineConfig/index.vue +0 -20
- package/src/pages/KlineNew/components/KlineAction/components/ContextMenu/index.vue +0 -91
- package/src/pages/KlineNew/components/KlineAction/components/YearChart/index.vue +0 -532
- package/src/pages/KlineNew/components/KlineAction/images/pen.png +0 -0
- package/src/pages/KlineNew/components/KlineAction/index.vue +0 -716
- package/src/pages/KlineNew/components/KlineAction/mockApi/index.js +0 -13
- package/src/pages/KlineNew/components/KlineAction/utils.js +0 -571
- package/src/pages/KlineNew/components/KlineBasic/index.vue +0 -336
- package/src/pages/KlineNew/components/KlineBasic/utils.js +0 -46
- package/src/pages/KlineNew/components/KlineNew/index.vue +0 -316
- package/src/pages/KlineNew/components/KlineNew/utils.js +0 -31
- package/src/pages/KlineNew/components/KlineSlide/index.vue +0 -448
- package/src/pages/KlineNew/components/KlineSlide/utils.js +0 -78
- package/src/pages/KlineNew/components/KlineSlideNew/index.vue +0 -430
- package/src/pages/KlineNew/components/KlineSlideNew/utils.js +0 -78
- package/src/pages/KlineNew/index.vue +0 -92
- package/src/pages/KlinePlus/KlineDialog/MultiCycle.vue +0 -312
- package/src/pages/KlinePlus/KlineDialog/api.js +0 -108
- package/src/pages/KlinePlus/KlineDialog/index.vue +0 -582
- package/src/pages/KlinePlus/KlineDialog/indicator.js +0 -109
- package/src/pages/KlinePlus/KlineDialog/tools.js +0 -86
- package/src/pages/KlinePlus/index.vue +0 -30
- package/src/pages/KlinePlus/tradeLogMock.js +0 -1927
- package/src/pages/LinearLegend/index.vue +0 -92
- package/src/pages/Map/index.vue +0 -62
- package/src/pages/MonacoEditor/index.vue +0 -63
- package/src/pages/Pagination/index.vue +0 -24
- package/src/pages/PasswordPrompt/index.vue +0 -12
- package/src/pages/Pie/index.vue +0 -36
- package/src/pages/Table/index.vue +0 -117
- package/src/pages/TreeMap/index.vue +0 -542
- package/src/pages/User/index.vue +0 -24
- package/src/pages/VarSelectDialog/index.vue +0 -16
- package/src/pages/VarietyAiHelper/index.vue +0 -20
- package/src/pages/VarietyAutoComplete/index.vue +0 -19
- package/src/pages/VarietySearch/api.js +0 -70
- package/src/pages/VarietySearch/index.vue +0 -467
- package/src/pages/VarietyTextCopy/index.vue +0 -24
- package/src/pages/VirtualTable/demo.json +0 -6377
- package/src/pages/VirtualTable/index.vue +0 -79
- package/src/router/index.ts +0 -9
- package/src/router/routes.ts +0 -132
- package/src/style.css +0 -79
- package/src/vite-env.d.ts +0 -9
- package/tsconfig.json +0 -30
- package/tsconfig.node.json +0 -10
package/es/KlineConfig.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { b as ne, m as fe, n as ie, u as re, _ as ue, w as de, e as be, o as G, c as x, p as ee, q as oe } from "./base-a5af3db3.js";
|
|
2
|
-
import { d as ye, a as ge, u as he, E as _e } from "./el-overlay-
|
|
3
|
-
import { E as Ce } from "./el-button-
|
|
2
|
+
import { d as ye, a as ge, u as he, E as _e } from "./el-overlay-3e17604b.js";
|
|
3
|
+
import { E as Ce } from "./el-button-94d3de38.js";
|
|
4
4
|
import "./el-scrollbar-323542e7.js";
|
|
5
|
-
import { E as ke } from "./el-segmented-
|
|
6
|
-
import { E as we } from "./el-checkbox-
|
|
7
|
-
import "./el-tag-
|
|
8
|
-
import { E as Ve, a as Se } from "./el-select-
|
|
9
|
-
import { c as Ie, e as Ee, u as Te, U as te, C as ae, I as se, d as Be, b as ze } from "./el-popper-
|
|
5
|
+
import { E as ke } from "./el-segmented-56bd58a8.js";
|
|
6
|
+
import { E as we } from "./el-checkbox-6d4cb393.js";
|
|
7
|
+
import "./el-tag-66c83156.js";
|
|
8
|
+
import { E as Ve, a as Se } from "./el-select-44fa547d.js";
|
|
9
|
+
import { c as Ie, e as Ee, u as Te, U as te, C as ae, I as se, d as Be, b as ze } from "./el-popper-fbd0dcea.js";
|
|
10
10
|
import { E as Ne } from "./el-divider-4e059794.js";
|
|
11
11
|
import { computed as T, ref as B, watch as Q, onBeforeUnmount as Pe, defineComponent as Z, useSlots as Le, openBlock as o, createBlock as k, unref as e, withCtx as p, createVNode as m, Transition as Ae, withDirectives as Oe, createElementVNode as n, mergeProps as Ue, withModifiers as ce, normalizeClass as b, createElementBlock as y, renderSlot as $, toDisplayString as M, createCommentVNode as _, normalizeStyle as me, vShow as Re, onMounted as pe, withKeys as De, resolveDynamicComponent as q, nextTick as Fe, inject as $e, reactive as Me, createTextVNode as j, Fragment as H, renderList as J, pushScopeId as Ke, popScopeId as qe } from "vue";
|
|
12
12
|
import { _ as je } from "./_plugin-vue_export-helper-dad06003.js";
|
|
13
|
-
import { E as D, c as He, l as Je } from "./index-
|
|
14
|
-
import { i as We } from "./validator-
|
|
15
|
-
import { b as Xe, c as le, i as X, d as Ye, e as Ge, f as Qe, g as Ze } from "./use-form-common-props-
|
|
16
|
-
import { E as xe } from "./index-
|
|
13
|
+
import { E as D, c as He, l as Je } from "./index-eb96e074.js";
|
|
14
|
+
import { i as We } from "./validator-c60a8956.js";
|
|
15
|
+
import { b as Xe, c as le, i as X, d as Ye, e as Ge, f as Qe, g as Ze } from "./use-form-common-props-ed72e914.js";
|
|
16
|
+
import { E as xe } from "./index-c5f2d372.js";
|
|
17
17
|
import { u as el } from "./index-2e331d74.js";
|
|
18
18
|
import { u as ll } from "./index-d77a7336.js";
|
|
19
19
|
import "./vnode-5ddb7ed1.js";
|
|
20
20
|
import "./scroll-679bd6bf.js";
|
|
21
21
|
import "./index-960806da.js";
|
|
22
|
-
import "./use-global-config-
|
|
23
|
-
import "./index-
|
|
22
|
+
import "./use-global-config-ee406d58.js";
|
|
23
|
+
import "./index-8c2d7e05.js";
|
|
24
24
|
import "./index-657047bb.js";
|
|
25
|
-
import "./index-
|
|
25
|
+
import "./index-1e2a38ab.js";
|
|
26
26
|
import "./castArray-7741a212.js";
|
|
27
|
-
import "./index-
|
|
27
|
+
import "./index-f034b910.js";
|
|
28
28
|
import "./debounce-8d53f4dd.js";
|
|
29
29
|
const tl = ne({
|
|
30
30
|
...ye,
|
|
@@ -527,7 +527,7 @@ const fl = [
|
|
|
527
527
|
var C;
|
|
528
528
|
return ((C = A.find((c) => c.value === r)) == null ? void 0 : C.label) ?? "-";
|
|
529
529
|
};
|
|
530
|
-
const P = (r) => (Ke("data-v-
|
|
530
|
+
const P = (r) => (Ke("data-v-cbe82a27"), r = r(), qe(), r), yl = { class: "kline-config element-dark" }, gl = { class: "setting-item" }, hl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "主图指标: ", -1)), _l = { class: "setting-item" }, Cl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "交易点位: ", -1)), kl = { class: "setting-item" }, wl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "开平点按价格标: ", -1)), Vl = { class: "setting-item" }, Sl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "单周期: ", -1)), Il = { class: "setting-item" }, El = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "多周期: ", -1)), Tl = { class: "mode" }, Bl = { class: "cycleName" }, zl = { class: "content" }, Nl = { class: "setting-item" }, Pl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "默认展示: ", -1)), Ll = { class: "setting-item" }, Al = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "高亮交易范围: ", -1)), Ol = { class: "setting-item" }, Ul = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "展示当屏时间: ", -1)), Rl = { class: "setting-item" }, Dl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "展示当屏最高价: ", -1)), Fl = { class: "setting-item" }, $l = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "多周期双击图表切换至单周期: ", -1)), Ml = { class: "setting-item" }, Kl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "开启副图: ", -1)), ql = { class: "setting-item" }, jl = /* @__PURE__ */ P(() => /* @__PURE__ */ n("span", { class: "label" }, "开启拖拽轴: ", -1)), Hl = { class: "setting-footer" }, Jl = {
|
|
531
531
|
__name: "index",
|
|
532
532
|
props: {
|
|
533
533
|
indicatorStore: { type: Object, default: () => ({}) },
|
|
@@ -785,7 +785,7 @@ const P = (r) => (Ke("data-v-6e5050a9"), r = r(), qe(), r), yl = { class: "kline
|
|
|
785
785
|
]);
|
|
786
786
|
};
|
|
787
787
|
}
|
|
788
|
-
}, Wl = /* @__PURE__ */ je(Jl, [["__scopeId", "data-v-
|
|
788
|
+
}, Wl = /* @__PURE__ */ je(Jl, [["__scopeId", "data-v-cbe82a27"]]), kt = {
|
|
789
789
|
install(r) {
|
|
790
790
|
r.component("st-klineConfig", Wl);
|
|
791
791
|
}
|
package/es/KlineNew.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const t=require("vue"),C=require("./index.esm-94a95a2a.cjs"),L=require("./_plugin-vue_export-helper-f246444f.cjs"),z=require("./index-8901a38c.cjs");require("./base-ef747d02.cjs");require("./el-tag-5d5608e0.cjs");const R=require("./el-select-ec04e7ce.cjs");require("./el-scrollbar-bc3f790d.cjs");require("./el-popper-43ec37f4.cjs");const $=require("echarts");require("./index-cfcd60ca.cjs");require("./index-9780a537.cjs");require("./use-form-common-props-02be4928.cjs");require("./index-476c4459.cjs");require("./index-bb833443.cjs");require("./index-a00e0534.cjs");require("./index-60c69dd1.cjs");require("./castArray-35947698.cjs");require("./index-cfd00899.cjs");require("./scroll-b108dabd.cjs");require("./debounce-62f5b6e8.cjs");require("./vnode-b906ae6d.cjs");function N(m){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(m){for(const S in m)if(S!=="default"){const g=Object.getOwnPropertyDescriptor(m,S);Object.defineProperty(A,S,g.get?g:{enumerable:!0,get:()=>m[S]})}}return A.default=m,Object.freeze(A)}const E=N($),M=t.defineComponent({__name:"index",setup(m,{expose:A}){let S=!1,g=!0,v=[];const I=(h,u)=>h.length>u?h.slice(h.length-u):h;return A({initTalib:async()=>{if(!S)S=!0,await C.init("./talib.wasm"),g=!1,v.forEach(h=>{h()});else if(g)return new Promise(h=>{v.push(h)})},handleKeyDown:(h,u)=>{let{startValue:o,endValue:d,maxIndex:f}=u;if(h.code==="ArrowLeft"){if(o===0)return;o=o-1,d=d-1}else if(h.code==="ArrowRight"){if(d===f)return;o=o+1,d=d+1}else if(h.code==="ArrowUp"){if(d-o<5)return;const p=Math.floor((d-o)/2)+1;o=o+p,d-o<5&&(o=d-4)}else if(h.code==="ArrowDown"){const p=Math.min(500,d-o);o=o-p-1}return{startValue:o,endValue:d}},getDataZoomInfoByTime:h=>{const{showStartTime:u,showEndTime:o,xAxisData:d,maxShowDays:f}=h;let p=-1,e=-1,i={};return d.forEach((a,n)=>{const l=a.split(" ")[0];i[l]=i[l]||0,i[l]+=1,new Date(a)>=new Date(u)&&p===-1&&(p=n),new Date(a)<=new Date(o)&&(e=n)}),{startValue:p,endValue:e,maxValueSpan:Math.max(...Object.values(i))*f}},formatDataBySlide:h=>{const{originDrawData:u,addData:o,startTime:d,endTime:f}=h,{mainIndicator:p,mainIndicatorList:e,subIndicator:i,subIndicatorList:a,config:n,timeRange:l}=h,{loadAddCount:D,preLoadCount:q}=n;let _=[],b=[],F=[],w=[];d&&f?(_=o.filter(s=>new Date(s[0])>=new Date(d)&&new Date(s[0])<=new Date(f)),w=[...o]):f?(_=[...o.filter((s,r)=>r>=o.length-D&&new Date(l[0])<=new Date(s[0])&&new Date(s[0])<=new Date(l[1])),...u.originData],w=[...o,...u.originData]):d&&(_=[...u.originData,...o.filter((s,r)=>r>=q&&new Date(l[0])<=new Date(s[0])&&new Date(s[0])<=new Date(l[1]))],w=_),_.forEach((s,r)=>{b.push([s[1],s[4],s[3],s[2],r===0?0:_[r-1][4],s[6]]),F.push(s[0])});let c=[],x=[];const y={time:[],open:[],close:[],high:[],low:[],originData:w};let B=null,T=null;return w.forEach((s,r)=>{y.time.push(s[0]),y.open.push(s[1]),y.close.push(s[4]),y.high.push(s[2]),y.low.push(s[3]),s[0]===_[0][0]&&(B=r),s[0]===_[_.length-1][0]&&(T=r+1)}),c=e.find(({value:s})=>s===p).config.map(s=>{const{calculationFn:r}=s,k={time:[],open:[],close:[],high:[],low:[],originData:[]};return{...s,data:r?r(C.talib,y,k).slice(B,T):[]}}),x=a.find(({value:s})=>s===i).config.reduce((s,r)=>{const{source:k,calculationFn:V}=r;return k==="calculation"?[...s,{...r,data:V?V(C.talib,y).slice(B,T):[]}]:s},[]),{originData:_,candlestickData:b,mainIndicatorData:c,subIndicatorData:x,xAxisData:F,startTime:_[0][0],endTime:_[_.length-1][0],length:_.length}},formatDataByCount:h=>{const{originDrawData:u,addData:o,mainIndicator:d,mainIndicatorList:f,subIndicator:p,subIndicatorList:e,config:i}=h;let a={};const{addCount:n,preLoadCount:l}=i,D=[],q=[],_=[],b=[],F=[];let w=[],c=[];const x=o.filter((r,k)=>(D.push(r[0]),q.push(r[1]),_.push(r[4]),b.push(r[2]),F.push(r[3]),w.push(r[0]),c.push([r[1],r[4],r[3],r[2],k===0?0:o[k-1][4],r[6]]),o.length>=n+l-1?k>=l:!0));w=I(w,x.length),c=I(c,x.length);const y={time:D,open:q,close:_,high:b,low:F,originData:o},T=f.find(r=>r.value===d).config.map(r=>({...r,data:I(r.calculationFn?r.calculationFn(C.talib,y,{time:[],open:[],close:[],high:[],low:[],originData:[]}):[],w.length)}));let s=[];return p&&e&&(s=e.find(k=>k.value===p).config.reduce((k,V)=>V.source==="calculation"?[...k,{...V,data:I(V.calculationFn?V.calculationFn(C.talib,y):[],w.length)}]:k,[])),u.length?a={originData:[...x,...u.originData],xAxisData:[...w,...u.xAxisData],candlestickData:[...c,...u.candlestickData],mainIndicatorData:u.mainIndicatorData.map((r,k)=>({...r,data:[...T[k].data,...r.data]})),subIndicatorData:u.subIndicatorData.map((r,k)=>({...r,data:[...s[k].data,...r.data]}))}:a={originData:x,xAxisData:w,candlestickData:c,mainIndicatorData:T,subIndicatorData:s},a.length=a.xAxisData.length,a.startTime=a.xAxisData[0],a.endTime=a.xAxisData[a.length-1],a},fn:()=>{}}),(h,u)=>null}}),j={class:"kline-tips"},P=t.defineComponent({__name:"index",props:{data:{type:Array,require:!0}},setup(m){return(A,S)=>(t.openBlock(),t.createElementBlock("div",j,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.data,(g,v)=>(t.openBlock(),t.createElementBlock("div",{key:v,class:"kline-tips-item",style:t.normalizeStyle({color:g.color})},t.toDisplayString(g.label)+" "+t.toDisplayString(g.value),5))),128))]))}});const O=L._export_sfc(P,[["__scopeId","data-v-2a02e841"]]),K={class:"kline-tips"},U=t.defineComponent({__name:"index",props:{drawData:{type:Object,require:!0},candlestickData:{type:Array,default:()=>null},mainIndicatorData:{type:Array,default:()=>null},activeIndex:{type:Number,require:!0}},setup(m){const{round:A,multiply:S,divide:g,subtract:v,formatValue:I}=z.x,h=m,u=t.computed(()=>{const{drawData:d,activeIndex:f,candlestickData:p}=h;if(p!=null&&p.length&&p[f]){let e;return p[f][6]>0?e="red":p[f][6]<0&&(e="green"),[{label:"开",value:p[f][0]},{label:"高",value:p[f][3]},{label:"低",value:p[f][2]},{label:"收",value:p[f][1]},{label:"额",value:I(p[f][4])},{label:"涨跌",value:`${A(p[f][6])}%`,color:e}]}else if(d.candlestickData&&d.candlestickData[f]){const e=d.candlestickData[f],i=[{label:"开",value:e[0]},{label:"高",value:e[3]},{label:"低",value:e[2]},{label:"收",value:e[1]}];e[5]!==void 0&&i.push({label:"额",value:I(e[5])});const a=A(S(g(v(e[1],e[4]),Math.abs(e[4])),100));let n;return a>0?n="red":a<0&&(n="green"),i.push({label:"涨跌",value:`${a}%`,color:n}),i}return[]}),o=t.computed(()=>{var p;const{drawData:d,activeIndex:f}=h;return((p=d==null?void 0:d.mainIndicatorData)==null?void 0:p.map(e=>({label:e.key,value:A(e.data[f]),color:e.color})))||[]});return(d,f)=>(t.openBlock(),t.createElementBlock("div",K,[t.createVNode(O,{data:u.value},null,8,["data"]),t.createVNode(O,{data:o.value},null,8,["data"])]))}});const Z=L._export_sfc(U,[["__scopeId","data-v-e75a1234"]]),Y={class:"klineSub"},H={class:"klineSub-tips"},G={key:0,class:"klineSub-tips-select"},J=t.defineComponent({__name:"index",props:{drawData:{type:Object,require:!0},activeIndex:{type:Number,require:!0},modelValue:{type:String,required:!0},subIndicatorList:{type:Array,required:!0},config:{type:Object,require:!0}},emits:["update:modelValue"],setup(m,{expose:A,emit:S}){const{round:g}=z.x;let v,I;const h=S,u=m,o=t.ref(),d=t.computed({get(){return u.modelValue},set(e){h("update:modelValue",e)}}),f=t.computed(()=>{const{drawData:e,activeIndex:i}=u,a=u.subIndicatorList.find(n=>n.value===d.value);return e.originData&&e.originData[i]?a.config.map(n=>{var D,q;let l="-";return n.source==="origin"?l=e.originData[i][n.dataIndex]||"-":n.source==="calculation"&&(l=(((q=(D=e.subIndicatorData)==null?void 0:D.find(b=>b.key===n.key))==null?void 0:q.data)||[])[i]),{label:n.key,color:n.color,value:l==="-"?l:g(l)}}):[]});t.onMounted(()=>{v=E.init(o.value);let e=!0;I=new ResizeObserver(()=>{if(e){e=null;return}v.resize()}),I.observe(o.value)}),t.onUnmounted(()=>{v.dispose(),I.disconnect(),I=null});const p=(e,i)=>{const a=e[i],n=i===0?e[i]:e[i-1];return a[0]===a[1]?a[0]>=n[1]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}:a[1]>a[0]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}};return A({connect:e=>{E.connect([e,v])},draw:e=>{t.nextTick(()=>{var w;const{startValue:i,endValue:a,maxValueSpan:n}=e,{xAxisData:l,subIndicatorData:D,candlestickData:q,originData:_}=u.drawData,b=u.subIndicatorList.find(c=>c.value===d.value),F=[];if(b.series==="bar"){let c=[];b.source==="origin"?c=_.map(x=>x[b.dataIndex]):c=((w=D==null?void 0:D.find(x=>x.key===b.dataIndex))==null?void 0:w.data)||[],F.push({name:"subMain",xAxisIndex:0,yAxisIndex:1,type:"bar",silent:!0,symbol:"none",data:c.map((x,y)=>b.color==="kline"?{value:x,itemStyle:p(q,y)}:b.color==="value"?{value:x,itemStyle:{color:x>=0?"#FF0000":"#00FFFF"}}:{value:x,itemStyle:{color:b.color}})})}D.forEach(c=>{if(c.series==="line"){let x=[];c.source==="origin"?x=_.map(y=>y[c.dataIndex]):c.source==="calculation"&&(x=c.data),F.push({xAxisIndex:0,yAxisIndex:c.yAxis==="right"?2:1,name:c.key,type:"line",silent:!0,symbol:"none",data:x,lineStyle:{width:1},itemStyle:{color:c.color}})}}),v.setOption({animation:!1,grid:{left:`${u.config.gridLeft}px`,top:"10px",right:`${u.config.gridRight}px`,bottom:"20px"},dataZoom:[{type:"inside",startValue:i,endValue:a,maxValueSpan:n}],tooltip:{trigger:"axis",appendToBody:!0,confine:!0,axisPointer:{type:"cross",label:{rich:{},formatter:c=>{const{axisDimension:x,value:y}=c;if(x==="x")return y;if(c.axisIndex===1)return String(g(y))}}},formatter:()=>""},xAxis:{type:"category",data:l,axisLine:{show:!0},splitLine:{show:!1},axisLabel:{show:!0,formatter:c=>c}},yAxis:[{position:"right"},{position:"left",min:b.leftYAxisRange==="cover"?c=>c.min:null,max:b.leftYAxisRange==="cover"?c=>c.max:null,splitNumber:1,axisLine:{show:!0},splitLine:{show:!0,lineStyle:{type:"dotted",color:"#333"}}},{position:"right",min:b.rightYAxisRange==="cover"?c=>c.min:null,max:b.rightYAxisRange==="cover"?c=>c.max:null,splitNumber:1,axisLine:{show:!1},splitLine:{show:!1},axisLabel:{show:!1}}],series:F},!0)})}}),(e,i)=>{const a=R.ElOption,n=R.ElSelect;return t.openBlock(),t.createElementBlock("div",Y,[t.createElementVNode("div",H,[f.value.length?(t.openBlock(),t.createElementBlock("div",G,[t.createVNode(n,{modelValue:d.value,"onUpdate:modelValue":i[0]||(i[0]=l=>d.value=l),size:"small","popper-class":"element-dark",class:"element-dark subIndicator"},{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.subIndicatorList,l=>(t.openBlock(),t.createBlock(a,{key:l.value,label:l.label,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])):t.createCommentVNode("",!0),t.createVNode(O,{data:f.value},null,8,["data"])]),t.createElementVNode("div",{class:"klineSub-chart",ref_key:"subChartRef",ref:o},null,512)])}}});const Q=L._export_sfc(J,[["__scopeId","data-v-0a2f256e"]]),W=t.defineComponent({__name:"index",props:{data:{type:Array,default:()=>[]}},emits:["change"],setup(m,{expose:A,emit:S}){let g,v,I=null;const h=S,u=m,o=t.ref();t.watch(()=>u.data,()=>{p()},{deep:!0}),t.onMounted(()=>{g=E.init(o.value),d(),p();let e=!0;v=new ResizeObserver(()=>{if(e){e=null;return}g.resize()}),v.observe(o.value)}),t.onUnmounted(()=>{g.off("datazoom"),g.dispose(),v.disconnect(),v=null});const d=()=>{g.on("datazoom",e=>{e.dataZoomId&&(clearTimeout(I),I=setTimeout(()=>{const{data:i}=u,{start:a,end:n}=e,l=Math.floor(a*i.length/100),D=n===100?i.length-1:Math.floor(n*i.length/100);f(l,D),clearTimeout(I)},100))})},f=(e,i)=>{const a=u.data;if(a.length===0)return;const n=a[e][0].split(" ")[0],l=a[i][0].split(" ")[0];h("change",{startTime:`${n} 00:00:00`,endTime:`${l} 24:00:00`})},p=()=>{const{data:e}=u;if(e.length===0)return;const i=e.map(n=>n[0].split(" ")[0]),a=e.map(n=>n[1]);g.setOption({grid:{height:0,left:"80px",right:"80px"},xAxis:{type:"category",data:i,show:!1},yAxis:{type:"value"},series:[{data:a,type:"line"}]},!0)};return A({resetSlide:(e,i,a)=>{let n=-1,l=-1;u.data.forEach((D,q)=>{n===-1&&D[0]===e?n=q:n===-1&&new Date(D[0])>new Date(e)&&(n=q-1),(l===-1&&D[0]===i||l===-1&&new Date(D[0])>new Date(i))&&(l=q)}),l=l===-1?u.data.length-1:l,g.setOption({dataZoom:[{show:!0,startValue:n,endValue:l,maxValueSpan:a,textStyle:{color:"#ccc"}},{type:"inside",startValue:n,endValue:l,maxValueSpan:a}]})},resize:()=>{g==null||g.resize()}}),(e,i)=>(t.openBlock(),t.createElementBlock("div",{class:"klineSlide",ref_key:"slideChartRef",ref:o},null,512))}});const X=L._export_sfc(W,[["__scopeId","data-v-5008746a"]]),ee={install(m){m.component("st-klineUtils",M),m.component("st-klineSub",Q),m.component("st-klineTips",Z),m.component("st-klineSlide",X)}};module.exports=ee;
|
|
1
|
+
"use strict";const t=require("vue"),C=require("./index.esm-94a95a2a.cjs"),L=require("./_plugin-vue_export-helper-f246444f.cjs"),z=require("./index-94131fd7.cjs");require("./base-ef747d02.cjs");require("./el-tag-9c2f329f.cjs");const R=require("./el-select-70806166.cjs");require("./el-scrollbar-bc3f790d.cjs");require("./el-popper-a4f3ae4d.cjs");const $=require("echarts");require("./index-5c0dd943.cjs");require("./index-9780a537.cjs");require("./use-form-common-props-ac666630.cjs");require("./index-00f6ca75.cjs");require("./index-bb833443.cjs");require("./index-185792a7.cjs");require("./index-ac8dc53d.cjs");require("./castArray-35947698.cjs");require("./index-870b6c9d.cjs");require("./scroll-b108dabd.cjs");require("./debounce-62f5b6e8.cjs");require("./vnode-b906ae6d.cjs");function N(m){const A=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(m){for(const S in m)if(S!=="default"){const g=Object.getOwnPropertyDescriptor(m,S);Object.defineProperty(A,S,g.get?g:{enumerable:!0,get:()=>m[S]})}}return A.default=m,Object.freeze(A)}const E=N($),M=t.defineComponent({__name:"index",setup(m,{expose:A}){let S=!1,g=!0,v=[];const I=(h,u)=>h.length>u?h.slice(h.length-u):h;return A({initTalib:async()=>{if(!S)S=!0,await C.init("./talib.wasm"),g=!1,v.forEach(h=>{h()});else if(g)return new Promise(h=>{v.push(h)})},handleKeyDown:(h,u)=>{let{startValue:o,endValue:d,maxIndex:f}=u;if(h.code==="ArrowLeft"){if(o===0)return;o=o-1,d=d-1}else if(h.code==="ArrowRight"){if(d===f)return;o=o+1,d=d+1}else if(h.code==="ArrowUp"){if(d-o<5)return;const p=Math.floor((d-o)/2)+1;o=o+p,d-o<5&&(o=d-4)}else if(h.code==="ArrowDown"){const p=Math.min(500,d-o);o=o-p-1}return{startValue:o,endValue:d}},getDataZoomInfoByTime:h=>{const{showStartTime:u,showEndTime:o,xAxisData:d,maxShowDays:f}=h;let p=-1,e=-1,i={};return d.forEach((a,n)=>{const l=a.split(" ")[0];i[l]=i[l]||0,i[l]+=1,new Date(a)>=new Date(u)&&p===-1&&(p=n),new Date(a)<=new Date(o)&&(e=n)}),{startValue:p,endValue:e,maxValueSpan:Math.max(...Object.values(i))*f}},formatDataBySlide:h=>{const{originDrawData:u,addData:o,startTime:d,endTime:f}=h,{mainIndicator:p,mainIndicatorList:e,subIndicator:i,subIndicatorList:a,config:n,timeRange:l}=h,{loadAddCount:D,preLoadCount:q}=n;let _=[],b=[],F=[],w=[];d&&f?(_=o.filter(s=>new Date(s[0])>=new Date(d)&&new Date(s[0])<=new Date(f)),w=[...o]):f?(_=[...o.filter((s,r)=>r>=o.length-D&&new Date(l[0])<=new Date(s[0])&&new Date(s[0])<=new Date(l[1])),...u.originData],w=[...o,...u.originData]):d&&(_=[...u.originData,...o.filter((s,r)=>r>=q&&new Date(l[0])<=new Date(s[0])&&new Date(s[0])<=new Date(l[1]))],w=_),_.forEach((s,r)=>{b.push([s[1],s[4],s[3],s[2],r===0?0:_[r-1][4],s[6]]),F.push(s[0])});let c=[],x=[];const y={time:[],open:[],close:[],high:[],low:[],originData:w};let B=null,T=null;return w.forEach((s,r)=>{y.time.push(s[0]),y.open.push(s[1]),y.close.push(s[4]),y.high.push(s[2]),y.low.push(s[3]),s[0]===_[0][0]&&(B=r),s[0]===_[_.length-1][0]&&(T=r+1)}),c=e.find(({value:s})=>s===p).config.map(s=>{const{calculationFn:r}=s,k={time:[],open:[],close:[],high:[],low:[],originData:[]};return{...s,data:r?r(C.talib,y,k).slice(B,T):[]}}),x=a.find(({value:s})=>s===i).config.reduce((s,r)=>{const{source:k,calculationFn:V}=r;return k==="calculation"?[...s,{...r,data:V?V(C.talib,y).slice(B,T):[]}]:s},[]),{originData:_,candlestickData:b,mainIndicatorData:c,subIndicatorData:x,xAxisData:F,startTime:_[0][0],endTime:_[_.length-1][0],length:_.length}},formatDataByCount:h=>{const{originDrawData:u,addData:o,mainIndicator:d,mainIndicatorList:f,subIndicator:p,subIndicatorList:e,config:i}=h;let a={};const{addCount:n,preLoadCount:l}=i,D=[],q=[],_=[],b=[],F=[];let w=[],c=[];const x=o.filter((r,k)=>(D.push(r[0]),q.push(r[1]),_.push(r[4]),b.push(r[2]),F.push(r[3]),w.push(r[0]),c.push([r[1],r[4],r[3],r[2],k===0?0:o[k-1][4],r[6]]),o.length>=n+l-1?k>=l:!0));w=I(w,x.length),c=I(c,x.length);const y={time:D,open:q,close:_,high:b,low:F,originData:o},T=f.find(r=>r.value===d).config.map(r=>({...r,data:I(r.calculationFn?r.calculationFn(C.talib,y,{time:[],open:[],close:[],high:[],low:[],originData:[]}):[],w.length)}));let s=[];return p&&e&&(s=e.find(k=>k.value===p).config.reduce((k,V)=>V.source==="calculation"?[...k,{...V,data:I(V.calculationFn?V.calculationFn(C.talib,y):[],w.length)}]:k,[])),u.length?a={originData:[...x,...u.originData],xAxisData:[...w,...u.xAxisData],candlestickData:[...c,...u.candlestickData],mainIndicatorData:u.mainIndicatorData.map((r,k)=>({...r,data:[...T[k].data,...r.data]})),subIndicatorData:u.subIndicatorData.map((r,k)=>({...r,data:[...s[k].data,...r.data]}))}:a={originData:x,xAxisData:w,candlestickData:c,mainIndicatorData:T,subIndicatorData:s},a.length=a.xAxisData.length,a.startTime=a.xAxisData[0],a.endTime=a.xAxisData[a.length-1],a},fn:()=>{}}),(h,u)=>null}}),j={class:"kline-tips"},P=t.defineComponent({__name:"index",props:{data:{type:Array,require:!0}},setup(m){return(A,S)=>(t.openBlock(),t.createElementBlock("div",j,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.data,(g,v)=>(t.openBlock(),t.createElementBlock("div",{key:v,class:"kline-tips-item",style:t.normalizeStyle({color:g.color})},t.toDisplayString(g.label)+" "+t.toDisplayString(g.value),5))),128))]))}});const O=L._export_sfc(P,[["__scopeId","data-v-3856aa74"]]),K={class:"kline-tips"},U=t.defineComponent({__name:"index",props:{drawData:{type:Object,require:!0},candlestickData:{type:Array,default:()=>null},mainIndicatorData:{type:Array,default:()=>null},activeIndex:{type:Number,require:!0}},setup(m){const{round:A,multiply:S,divide:g,subtract:v,formatValue:I}=z.x,h=m,u=t.computed(()=>{const{drawData:d,activeIndex:f,candlestickData:p}=h;if(p!=null&&p.length&&p[f]){let e;return p[f][6]>0?e="red":p[f][6]<0&&(e="green"),[{label:"开",value:p[f][0]},{label:"高",value:p[f][3]},{label:"低",value:p[f][2]},{label:"收",value:p[f][1]},{label:"额",value:I(p[f][4])},{label:"涨跌",value:`${A(p[f][6])}%`,color:e}]}else if(d.candlestickData&&d.candlestickData[f]){const e=d.candlestickData[f],i=[{label:"开",value:e[0]},{label:"高",value:e[3]},{label:"低",value:e[2]},{label:"收",value:e[1]}];e[5]!==void 0&&i.push({label:"额",value:I(e[5])});const a=A(S(g(v(e[1],e[4]),Math.abs(e[4])),100));let n;return a>0?n="red":a<0&&(n="green"),i.push({label:"涨跌",value:`${a}%`,color:n}),i}return[]}),o=t.computed(()=>{var p;const{drawData:d,activeIndex:f}=h;return((p=d==null?void 0:d.mainIndicatorData)==null?void 0:p.map(e=>({label:e.key,value:A(e.data[f]),color:e.color})))||[]});return(d,f)=>(t.openBlock(),t.createElementBlock("div",K,[t.createVNode(O,{data:u.value},null,8,["data"]),t.createVNode(O,{data:o.value},null,8,["data"])]))}});const Z=L._export_sfc(U,[["__scopeId","data-v-c87d5c87"]]),Y={class:"klineSub"},H={class:"klineSub-tips"},G={key:0,class:"klineSub-tips-select"},J=t.defineComponent({__name:"index",props:{drawData:{type:Object,require:!0},activeIndex:{type:Number,require:!0},modelValue:{type:String,required:!0},subIndicatorList:{type:Array,required:!0},config:{type:Object,require:!0}},emits:["update:modelValue"],setup(m,{expose:A,emit:S}){const{round:g}=z.x;let v,I;const h=S,u=m,o=t.ref(),d=t.computed({get(){return u.modelValue},set(e){h("update:modelValue",e)}}),f=t.computed(()=>{const{drawData:e,activeIndex:i}=u,a=u.subIndicatorList.find(n=>n.value===d.value);return e.originData&&e.originData[i]?a.config.map(n=>{var D,q;let l="-";return n.source==="origin"?l=e.originData[i][n.dataIndex]||"-":n.source==="calculation"&&(l=(((q=(D=e.subIndicatorData)==null?void 0:D.find(b=>b.key===n.key))==null?void 0:q.data)||[])[i]),{label:n.key,color:n.color,value:l==="-"?l:g(l)}}):[]});t.onMounted(()=>{v=E.init(o.value);let e=!0;I=new ResizeObserver(()=>{if(e){e=null;return}v.resize()}),I.observe(o.value)}),t.onUnmounted(()=>{v.dispose(),I.disconnect(),I=null});const p=(e,i)=>{const a=e[i],n=i===0?e[i]:e[i-1];return a[0]===a[1]?a[0]>=n[1]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}:a[1]>a[0]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}};return A({connect:e=>{E.connect([e,v])},draw:e=>{t.nextTick(()=>{var w;const{startValue:i,endValue:a,maxValueSpan:n}=e,{xAxisData:l,subIndicatorData:D,candlestickData:q,originData:_}=u.drawData,b=u.subIndicatorList.find(c=>c.value===d.value),F=[];if(b.series==="bar"){let c=[];b.source==="origin"?c=_.map(x=>x[b.dataIndex]):c=((w=D==null?void 0:D.find(x=>x.key===b.dataIndex))==null?void 0:w.data)||[],F.push({name:"subMain",xAxisIndex:0,yAxisIndex:1,type:"bar",silent:!0,symbol:"none",data:c.map((x,y)=>b.color==="kline"?{value:x,itemStyle:p(q,y)}:b.color==="value"?{value:x,itemStyle:{color:x>=0?"#FF0000":"#00FFFF"}}:{value:x,itemStyle:{color:b.color}})})}D.forEach(c=>{if(c.series==="line"){let x=[];c.source==="origin"?x=_.map(y=>y[c.dataIndex]):c.source==="calculation"&&(x=c.data),F.push({xAxisIndex:0,yAxisIndex:c.yAxis==="right"?2:1,name:c.key,type:"line",silent:!0,symbol:"none",data:x,lineStyle:{width:1},itemStyle:{color:c.color}})}}),v.setOption({animation:!1,grid:{left:`${u.config.gridLeft}px`,top:"10px",right:`${u.config.gridRight}px`,bottom:"20px"},dataZoom:[{type:"inside",startValue:i,endValue:a,maxValueSpan:n}],tooltip:{trigger:"axis",appendToBody:!0,confine:!0,axisPointer:{type:"cross",label:{rich:{},formatter:c=>{const{axisDimension:x,value:y}=c;if(x==="x")return y;if(c.axisIndex===1)return String(g(y))}}},formatter:()=>""},xAxis:{type:"category",data:l,axisLine:{show:!0},splitLine:{show:!1},axisLabel:{show:!0,formatter:c=>c}},yAxis:[{position:"right"},{position:"left",min:b.leftYAxisRange==="cover"?c=>c.min:null,max:b.leftYAxisRange==="cover"?c=>c.max:null,splitNumber:1,axisLine:{show:!0},splitLine:{show:!0,lineStyle:{type:"dotted",color:"#333"}}},{position:"right",min:b.rightYAxisRange==="cover"?c=>c.min:null,max:b.rightYAxisRange==="cover"?c=>c.max:null,splitNumber:1,axisLine:{show:!1},splitLine:{show:!1},axisLabel:{show:!1}}],series:F},!0)})}}),(e,i)=>{const a=R.ElOption,n=R.ElSelect;return t.openBlock(),t.createElementBlock("div",Y,[t.createElementVNode("div",H,[f.value.length?(t.openBlock(),t.createElementBlock("div",G,[t.createVNode(n,{modelValue:d.value,"onUpdate:modelValue":i[0]||(i[0]=l=>d.value=l),size:"small","popper-class":"element-dark",class:"element-dark subIndicator"},{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.subIndicatorList,l=>(t.openBlock(),t.createBlock(a,{key:l.value,label:l.label,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])):t.createCommentVNode("",!0),t.createVNode(O,{data:f.value},null,8,["data"])]),t.createElementVNode("div",{class:"klineSub-chart",ref_key:"subChartRef",ref:o},null,512)])}}});const Q=L._export_sfc(J,[["__scopeId","data-v-03eea29e"]]),W=t.defineComponent({__name:"index",props:{data:{type:Array,default:()=>[]}},emits:["change"],setup(m,{expose:A,emit:S}){let g,v,I=null;const h=S,u=m,o=t.ref();t.watch(()=>u.data,()=>{p()},{deep:!0}),t.onMounted(()=>{g=E.init(o.value),d(),p();let e=!0;v=new ResizeObserver(()=>{if(e){e=null;return}g.resize()}),v.observe(o.value)}),t.onUnmounted(()=>{g.off("datazoom"),g.dispose(),v.disconnect(),v=null});const d=()=>{g.on("datazoom",e=>{e.dataZoomId&&(clearTimeout(I),I=setTimeout(()=>{const{data:i}=u,{start:a,end:n}=e,l=Math.floor(a*i.length/100),D=n===100?i.length-1:Math.floor(n*i.length/100);f(l,D),clearTimeout(I)},100))})},f=(e,i)=>{const a=u.data;if(a.length===0)return;const n=a[e][0].split(" ")[0],l=a[i][0].split(" ")[0];h("change",{startTime:`${n} 00:00:00`,endTime:`${l} 24:00:00`})},p=()=>{const{data:e}=u;if(e.length===0)return;const i=e.map(n=>n[0].split(" ")[0]),a=e.map(n=>n[1]);g.setOption({grid:{height:0,left:"80px",right:"80px"},xAxis:{type:"category",data:i,show:!1},yAxis:{type:"value"},series:[{data:a,type:"line"}]},!0)};return A({resetSlide:(e,i,a)=>{let n=-1,l=-1;u.data.forEach((D,q)=>{n===-1&&D[0]===e?n=q:n===-1&&new Date(D[0])>new Date(e)&&(n=q-1),(l===-1&&D[0]===i||l===-1&&new Date(D[0])>new Date(i))&&(l=q)}),l=l===-1?u.data.length-1:l,g.setOption({dataZoom:[{show:!0,startValue:n,endValue:l,maxValueSpan:a,textStyle:{color:"#ccc"}},{type:"inside",startValue:n,endValue:l,maxValueSpan:a}]})},resize:()=>{g==null||g.resize()}}),(e,i)=>(t.openBlock(),t.createElementBlock("div",{class:"klineSlide",ref_key:"slideChartRef",ref:o},null,512))}});const X=L._export_sfc(W,[["__scopeId","data-v-0d08cda9"]]),ee={install(m){m.component("st-klineUtils",M),m.component("st-klineSub",Q),m.component("st-klineTips",Z),m.component("st-klineSlide",X)}};module.exports=ee;
|
package/es/KlineNew.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { defineComponent as R, openBlock as T, createElementBlock as L, Fragment as K, renderList as Z, normalizeStyle as H, toDisplayString as N, computed as $, createVNode as O, ref as j, onMounted as U, onUnmounted as Y, nextTick as J, createElementVNode as P, withCtx as Q, createBlock as W, createCommentVNode as X, watch as ee } from "vue";
|
|
2
2
|
import { i as te, t as z } from "./index.esm-8d9a2abe.js";
|
|
3
3
|
import { _ as q } from "./_plugin-vue_export-helper-dad06003.js";
|
|
4
|
-
import { x as G } from "./index-
|
|
4
|
+
import { x as G } from "./index-53cc4e43.js";
|
|
5
5
|
import "./base-a5af3db3.js";
|
|
6
|
-
import "./el-tag-
|
|
7
|
-
import { E as ae, a as ne } from "./el-select-
|
|
6
|
+
import "./el-tag-66c83156.js";
|
|
7
|
+
import { E as ae, a as ne } from "./el-select-44fa547d.js";
|
|
8
8
|
import "./el-scrollbar-323542e7.js";
|
|
9
|
-
import "./el-popper-
|
|
9
|
+
import "./el-popper-fbd0dcea.js";
|
|
10
10
|
import * as B from "echarts";
|
|
11
|
-
import "./index-
|
|
11
|
+
import "./index-8c2d7e05.js";
|
|
12
12
|
import "./index-960806da.js";
|
|
13
|
-
import "./use-form-common-props-
|
|
14
|
-
import "./index-
|
|
13
|
+
import "./use-form-common-props-ed72e914.js";
|
|
14
|
+
import "./index-eb96e074.js";
|
|
15
15
|
import "./index-d77a7336.js";
|
|
16
|
-
import "./index-
|
|
17
|
-
import "./index-
|
|
16
|
+
import "./index-c5f2d372.js";
|
|
17
|
+
import "./index-1e2a38ab.js";
|
|
18
18
|
import "./castArray-7741a212.js";
|
|
19
|
-
import "./index-
|
|
19
|
+
import "./index-f034b910.js";
|
|
20
20
|
import "./scroll-679bd6bf.js";
|
|
21
21
|
import "./debounce-8d53f4dd.js";
|
|
22
22
|
import "./vnode-5ddb7ed1.js";
|
|
@@ -223,7 +223,7 @@ const oe = /* @__PURE__ */ R({
|
|
|
223
223
|
]));
|
|
224
224
|
}
|
|
225
225
|
});
|
|
226
|
-
const M = /* @__PURE__ */ q(ie, [["__scopeId", "data-v-
|
|
226
|
+
const M = /* @__PURE__ */ q(ie, [["__scopeId", "data-v-3856aa74"]]), le = { class: "kline-tips" }, se = /* @__PURE__ */ R({
|
|
227
227
|
__name: "index",
|
|
228
228
|
props: {
|
|
229
229
|
// 提示数据
|
|
@@ -285,7 +285,7 @@ const M = /* @__PURE__ */ q(ie, [["__scopeId", "data-v-2a02e841"]]), le = { clas
|
|
|
285
285
|
]));
|
|
286
286
|
}
|
|
287
287
|
});
|
|
288
|
-
const ce = /* @__PURE__ */ q(se, [["__scopeId", "data-v-
|
|
288
|
+
const ce = /* @__PURE__ */ q(se, [["__scopeId", "data-v-c87d5c87"]]), ue = { class: "klineSub" }, de = { class: "klineSub-tips" }, pe = {
|
|
289
289
|
key: 0,
|
|
290
290
|
class: "klineSub-tips-select"
|
|
291
291
|
}, fe = /* @__PURE__ */ R({
|
|
@@ -529,7 +529,7 @@ const ce = /* @__PURE__ */ q(se, [["__scopeId", "data-v-e75a1234"]]), ue = { cla
|
|
|
529
529
|
};
|
|
530
530
|
}
|
|
531
531
|
});
|
|
532
|
-
const he = /* @__PURE__ */ q(fe, [["__scopeId", "data-v-
|
|
532
|
+
const he = /* @__PURE__ */ q(fe, [["__scopeId", "data-v-03eea29e"]]), me = /* @__PURE__ */ R({
|
|
533
533
|
__name: "index",
|
|
534
534
|
props: {
|
|
535
535
|
data: { type: Array, default: () => [] }
|
|
@@ -637,7 +637,7 @@ const he = /* @__PURE__ */ q(fe, [["__scopeId", "data-v-0a2f256e"]]), me = /* @_
|
|
|
637
637
|
}, null, 512));
|
|
638
638
|
}
|
|
639
639
|
});
|
|
640
|
-
const ge = /* @__PURE__ */ q(me, [["__scopeId", "data-v-
|
|
640
|
+
const ge = /* @__PURE__ */ q(me, [["__scopeId", "data-v-0d08cda9"]]), qe = {
|
|
641
641
|
install(w) {
|
|
642
642
|
w.component("st-klineUtils", oe), w.component("st-klineSub", he), w.component("st-klineTips", ce), w.component("st-klineSlide", ge);
|
|
643
643
|
}
|
package/es/KlinePlus.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";require("./base-ef747d02.cjs");const ge=require("./el-loading-84dde1a8.cjs"),Ie=require("./el-empty-1697ded8.cjs");require("./el-tag-5d5608e0.cjs");const ye=require("./el-select-ec04e7ce.cjs");require("./el-scrollbar-bc3f790d.cjs");require("./el-popper-43ec37f4.cjs");const a=require("vue"),I=require("./dayjs.min-2c20abe6.cjs"),Ye=require("echarts"),Z=require("./index-8901a38c.cjs"),ce=require("./_plugin-vue_export-helper-f246444f.cjs");require("./use-global-config-31b3ec57.cjs");require("./use-form-common-props-02be4928.cjs");require("./index-9780a537.cjs");require("./index-476c4459.cjs");require("./index-bb833443.cjs");require("./index-cfcd60ca.cjs");require("./index-a00e0534.cjs");require("./index-60c69dd1.cjs");require("./castArray-35947698.cjs");require("./index-cfd00899.cjs");require("./scroll-b108dabd.cjs");require("./debounce-62f5b6e8.cjs");require("./vnode-b906ae6d.cjs");function Le(n){const N=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const l in n)if(l!=="default"){const c=Object.getOwnPropertyDescriptor(n,l);Object.defineProperty(N,l,c.get?c:{enumerable:!0,get:()=>n[l]})}}return N.default=n,Object.freeze(N)}const ie=Le(Ye),me="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjM4NzI1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI2MjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNGRjAwMDAiIHAtaWQ9IjI2MjYiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjcwOTMzMyAxNjcuNzIyNjY3YzAuMTI4LTIxLjc2IDkuOTg0LTQyLjY2NjY2NyAyNy4zOTItNTcuOTQxMzM0YTkzLjMxMiA5My4zMTIgMCAwIDEgNjQuNDY5MzM0LTIzLjg5MzMzM0w3NjEuNiA4NS4zMzMzMzNjMjUuNiAwLjU1NDY2NyA0Ny4zNiA4Ljc4OTMzMyA2NC45Mzg2NjcgMjQuNDA1MzM0IDE3LjkyIDE2IDI2Ljg4IDM1LjIgMjYuODggNTcuNDcybC0wLjU1NDY2NyA0MTkuODRjMC4yOTg2NjcgMjIuNjk4NjY3LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuOTIyNjY2LTEyLjYyOTMzMyAyNy4zMDY2NjctMjcuOTQ2NjY3IDQ4Ljg5Ni00NS44MjQgNjQuODk2bC0yMTEuMjQyNjY3IDE4OC4yMDI2NjdjLTE3LjU3ODY2NyAxNS43MDEzMzMtMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45Mzg2NjcgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0Ljk4MTMzMy0yMy41OTQ2NjdsLTIxMS4xNTczMzMtMTg4LjE2Yy0xNy45Mi0xNi4wNDI2NjctMzMuMjgtMzcuNzE3MzMzLTQ1LjkwOTMzNC02NC45ODEzMzMtMTIuNjcyLTI3LjMwNjY2Ny0xOS4wMjkzMzMtNTIuMzk0NjY3LTE5LjAyOTMzMy03NS4zMDY2NjdMMTcwLjY2NjY2NyAxNjcuNzIyNjY3eiBtNDIuNjY2NjY3IDAuMjU2bDAuNTU0NjY3IDQxOC42ODhjMCAxNi4yMTMzMzMgNC44MjEzMzMgMzUuMzI4IDE1LjAxODY2NiA1Ny4zNDQgMTAuMzY4IDIyLjI3MiAyMi4zNTczMzMgMzkuMjEwNjY3IDM1LjYyNjY2NyA1MS4wNzJsMjExLjQxMzMzMyAxODguNDE2YzguOTYgOC4xMDY2NjcgMjEuODg4IDEyLjggMzYuMjI0IDEyLjU0NCAxNS41MzA2NjctMC4wNDI2NjcgMjcuMDkzMzMzLTQuMjY2NjY3IDM2LjY5MzMzNC0xMi44bDIxMS4xNTczMzMtMTg4LjExNzMzNGMxMy4zMTItMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNTg0LTUxLjA3MiAxMC4xMTItMjEuODQ1MzMzIDE0Ljc2MjY2Ny00MC41NzYgMTQuNTA2NjY3LTU3LjA0NTMzM2wwLjU1NDY2Ni00MTkuNzU0NjY3YzAtOS44OTg2NjctMy41ODQtMTcuNjIxMzMzLTEyLjQ1ODY2Ni0yNS42YTU0LjY5ODY2NyA1NC42OTg2NjcgMCAwIDAtMzYuNjA4LTEzLjYxMDY2NmwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NyAxMy4zMTIgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzMgMjEuNDYxMzMzbC0wLjQyNjY2NyA0LjY5MzMzNHoiIGZpbGw9IiNBRTAwMDAiIHAtaWQ9IjI2MjciPjwvcGF0aD48cGF0aCBkPSJNMzg0IDY1NC4xMjI2NjdoMTUzLjUxNDY2N2M5Ni43NjggMCAxNDIuNzYyNjY3LTQ4Ljk4MTMzMyAxNDIuNzYyNjY2LTExNy4wNzczMzQgMC01OS43MzMzMzMtMzMuNDUwNjY3LTg4LjQwNTMzMy04NC44MjEzMzMtOTcuOTYyNjY2di0xLjc5MmM0OC45ODEzMzMtMTUuNTMwNjY3IDY2LjkwMTMzMy00Ni41OTIgNjYuOTAxMzMzLTg5LjYgMC02NS4xMDkzMzMtNDAuNjE4NjY3LTEwMy4zMzg2NjctMTM0Ljk5NzMzMy0xMDMuMzM4NjY3SDM4NHY0MDkuNzcwNjY3eiBtNzIuODc0NjY3LTU0Ljk1NDY2N3YtMTMxLjQxMzMzM2g2Ni4zMDRjNTEuOTY4IDAgODAuMDQyNjY3IDE3LjkyIDgwLjA0MjY2NiA2NS4xMDkzMzMgMCA0NC44LTI2LjI4MjY2NyA2Ni4zMDQtNzUuODYxMzMzIDY2LjMwNGgtNzAuNDg1MzMzeiBtMC0xODAuMzk0NjY3VjI5OC43MDkzMzNoNjAuMzMwNjY2YzQ3LjE4OTMzMyAwIDcyLjI3NzMzMyAxNC45MzMzMzMgNzIuMjc3MzM0IDU5LjEzNiAwIDQ2LjU5Mi0zMi4yNTYgNjAuOTI4LTc1LjI2NCA2MC45MjhoLTU3LjM0NHoiIGZpbGw9IiNGRkZGRkYiIHAtaWQ9IjI2MjgiPjwvcGF0aD48L3N2Zz4=",Ae="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjQxNjY0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI3NzciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiM1NEFCMzAiIHAtaWQ9IjI3NzgiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiMzODhEMTQiIHAtaWQ9IjI3NzkiPjwvcGF0aD48cGF0aCBkPSJNNTA2LjQ1MzMzMyA2NzQuNzMwNjY3Yzk5LjE1NzMzMyAwIDE0Ni4zNDY2NjctNDguMzg0IDE0Ni4zNDY2NjctMTI2LjAzNzMzNCAwLTcyLjg3NDY2Ny0zOC44MjY2NjctOTkuNzU0NjY3LTEwMy4zMzg2NjctMTE4LjI3MmwtMzguMjI5MzMzLTExLjk0NjY2NmMtNDAuNjE4NjY3LTExLjM0OTMzMy01Mi41NjUzMzMtMjUuMDg4LTUyLjU2NTMzMy01Ny4zNDQgMC0zMi44NTMzMzMgMjMuODkzMzMzLTUwLjc3MzMzMyA2Ni45MDEzMzMtNTAuNzczMzM0IDQ1LjM5NzMzMyAwIDc4Ljg0OCA5LjU1NzMzMyAxMDQuNTMzMzMzIDIwLjMwOTMzNFYyNzMuMzIyNjY3Yy0yMi42OTg2NjctMTEuOTQ2NjY3LTUxLjk2OC0yMi4xMDEzMzMtMTA1LjcyOC0yMi4xMDEzMzQtOTIuNTg2NjY3IDAtMTM3LjM4NjY2NyA0Ny4xODkzMzMtMTM3LjM4NjY2NiAxMTYuNDggMCA2OS4yOTA2NjcgMzUuMjQyNjY3IDEwMC4zNTIgOTMuMTg0IDExNi40OGwzOC44MjY2NjYgMTAuNzUyYzQ0LjggMTMuNzM4NjY3IDU5LjczMzMzMyAyNi44OCA1OS43MzMzMzQgNjAuOTI4IDAgMzcuMDM0NjY3LTIzLjI5NiA1OS43MzMzMzMtNzguMjUwNjY3IDU5LjczMzMzNC00NC44IDAtODMuNjI2NjY3LTEwLjc1Mi0xMTYuNDgtMjUuMDg4djU3Ljk0MTMzM2MyOC4wNzQ2NjcgMTQuOTMzMzMzIDY4LjY5MzMzMyAyNi4yODI2NjcgMTIyLjQ1MzMzMyAyNi4yODI2Njd6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSIyNzgwIj48L3BhdGg+PC9zdmc+",fe="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==",{round:pe}=Z.x,q={minValueSpan:5,maxValueSpan:2e3,loadCheckCount:500,loadAddCount:2e3},we={1:240,2:48,3:16,4:8,5:4,6:1,7:.2,8:.033},de=({startTime:n,endTime:N,cycle:l,type:c="end"})=>{const{maxValueSpan:u}=q,A=Math.ceil((u+1e3)/we[l]),d=I.dayjs(n);if(I.dayjs(N).diff(d,"day")<=A)return[n,N];if(c==="end")return[I.dayjs(N).subtract(A,"day").format("YYYY-MM-DD HH:mm:ss"),N];if(c==="middle"){const v=I.dayjs((I.dayjs(n).valueOf()+I.dayjs(N).valueOf())/2).format("YYYY-MM-DD HH:mm:ss");return console.log("超过一屏数量上限, 进行中间时间计算",v,A/2),[I.dayjs(v).subtract(A/2,"day").format("YYYY-MM-DD HH:mm:ss"),I.dayjs(v).add(A/2,"day").format("YYYY-MM-DD HH:mm:ss")]}},xe=(n,N)=>{const l=n[N],c=N===0?n[N]:n[N-1];return l[0]===l[1]?l[0]>=c[1]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}:l[1]>l[0]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}},Oe=(n,N,l)=>{var u,A,d,e;const c=n.subIndicator.map(D=>{if(D.series==="bar")return{name:"subMain",xAxisIndex:0,yAxisIndex:1,type:"bar",silent:!0,symbol:"none",data:D.data.map((v,P)=>D.seriesColor==="kline"?{value:v,itemStyle:xe(n.data,P)}:D.seriesColor==="value"?{value:v,itemStyle:{color:v>=0?"#FF0000":"#00FFFF"}}:{value:v,itemStyle:{color:D.seriesColor}})};if(D.series==="line")return{xAxisIndex:0,yAxisIndex:D.yAxis==="right"?2:1,name:D.key,type:"line",silent:!0,symbol:"none",data:D.data,lineStyle:{width:1},itemStyle:{color:D.color}}});return{animation:!1,grid:{top:"10px",left:"60px",right:"20px",bottom:"10px"},dataZoom:[{type:"inside",startValue:N,endValue:l,maxValueSpan:q.maxValueSpan}],tooltip:{show:!1},axisPointer:{show:!0,triggerTooltip:!1,label:{rich:{},formatter:D=>{const{axisDimension:v,value:P}=D;if(v==="x")return null;if(D.axisIndex===1)return String(pe(P))}}},xAxis:{type:"category",data:n.time,axisLine:{show:!0},splitLine:{show:!1},axisLabel:{show:!1}},yAxis:[{position:"right"},{position:"left",min:((u=n.subIndicator[0])==null?void 0:u.leftYAxisRange)==="cover"?D=>D.min:null,max:((A=n.subIndicator[0])==null?void 0:A.leftYAxisRange)==="cover"?D=>D.max:null,splitNumber:1,axisLine:{show:!0},splitLine:{show:!0,lineStyle:{type:"dotted",color:"#333"}}},{position:"right",min:((d=n.subIndicator[0])==null?void 0:d.rightYAxisRange)==="cover"?D=>D.min:null,max:((e=n.subIndicator[0])==null?void 0:e.rightYAxisRange)==="cover"?D=>D.max:null,splitNumber:1,axisLine:{show:!1},splitLine:{show:!1},axisLabel:{show:!1}}],series:c}},re=(n,N,l="strict")=>{let c=0,u=n.length-1,A=-1;for(;c<=u;){let d=Math.floor((c+u)/2);if(l==="strict"){if(n[d]===N)return d;n[d]<N?c=d+1:u=d-1}else l==="gte"&&(n[d]>=N?(A=d,u=d-1):c=d+1)}return l==="strict"?-1:A},Ce=n=>{const N=[];return n.reduce((l,c)=>{const u=`${c.coord[0]}+${c.label.position}`,A=c.label.position==="top"?-16:16,d=l.get(u);return d?(l.set(u,d+1),c.symbolOffset[1]=A*(d+1)):(l.set(u,1),c.symbolOffset[1]=c.label.position==="top"?-7:7),N.push(c),l},new Map),N},De=(n,N)=>({data:[...n.data,...N.data.slice(1)],mainIndicator:n.mainIndicator.map((l,c)=>({...l,data:[...l.data,...N.mainIndicator[c].data.slice(1)]})),subIndicator:n.subIndicator.map((l,c)=>({...l,data:[...l.data,...N.subIndicator[c].data.slice(1)]})),time:[...n.time,...N.time.slice(1)]}),se=(n,N,l)=>{switch(l){case"5":{let Y=[...new Set(n.slice(-20).map(j=>{const o=new Date(j),g=String(o.getHours()).padStart(2,"0"),z=String(o.getMinutes()).padStart(2,"0"),O=String(o.getSeconds()).padStart(2,"0");return`${g}:${z}:${O}`}))];Y.includes("00:00:00")&&(Y.splice(Y.indexOf("00:00:00"),1),Y.push("24:00:00")),Y=Y.sort((j,o)=>new Date(`2000-01-30 ${j}`).getTime()-new Date(`2000-01-30 ${o}`).getTime());const f=new Date(N),s=f.getFullYear(),t=String(f.getMonth()+1).padStart(2,"0"),T=String(f.getDate()).padStart(2,"0"),x=String(f.getHours()).padStart(2,"0"),p=String(f.getMinutes()).padStart(2,"0"),i=String(f.getSeconds()).padStart(2,"0");if(`${x}:${p}:${i}`=="00:00:00")return`${s}-${t}-${T} 01:00:00`;{let j=null;for(let o=0;o<Y.length;o++){const g=Y[o].split(":");if(+`${g[0]}${g[1]}${g[2]}`>=+`${x}${p}${i}`){j=Y[o];break}}if(j==="24:00:00"){const o=new Date(N);o.setDate(o.getDate()+1);const g=o.getFullYear(),z=String(o.getMonth()+1).padStart(2,"0"),O=String(o.getDate()).padStart(2,"0");return`${g}-${z}-${O} 00:00:00`}return`${s}-${t}-${T} ${j}`}}case"6":{const Y=new Date(N),f=Y.getHours();if(f>=4&&f<21){const s=Y.getFullYear(),t=String(Y.getMonth()+1).padStart(2,"0"),T=String(Y.getDate()).padStart(2,"0");return`${s}-${t}-${T} 09:00:00`}else{const s=new Date(N);s.getHours()>=21&&s.setDate(s.getDate()+1);const t=s.getFullYear(),T=String(s.getMonth()+1).padStart(2,"0"),x=String(s.getDate()).padStart(2,"0"),p=`${t}-${T}-${x} 09:00:00`,i=re(n,p,"gte");return i===-1?p:n[i]}}case"7":{const Y=new Date(N),f=new Date(Y);f.setDate(Y.getDate()-Y.getDay()),f.setHours(0,0,0,0);const s=new Date(f);s.setDate(f.getDate()+5),s.setHours(23,59,59,0);const t=new Date(f);t.setDate(f.getDate()+12),t.setHours(9,0,0,0);const T=Y<=s?s:t,x=T.getFullYear(),p=String(T.getMonth()+1).padStart(2,"0"),i=String(T.getDate()).padStart(2,"0");return`${x}-${p}-${i} 09:00:00`}case"8":{const Y=new Date(N),f=new Date(Y.getFullYear(),Y.getMonth()+1,1),s=new Date(f);s.setDate(f.getDate()-1),s.setHours(9,0,0,0);const t=s.getFullYear(),T=String(s.getMonth()+1).padStart(2,"0"),x=String(s.getDate()).padStart(2,"0");return`${t}-${T}-${x} 09:00:00`}}const c=new Date(N),u=c.getFullYear(),A=c.getMonth(),d=c.getDate(),e=c.getHours(),D=c.getMinutes(),v=c.getSeconds(),P=Y=>{let f=null;const s=Math.floor(D/Y);D%Y===0&&v===0?f=D:f=(s+1)*Y;const t=Math.floor(f/60),T=e+t,x=f%60,p=new Date(u,A,d,T,x,0),i=Q=>String(Q).padStart(2,"0"),j=p.getFullYear(),o=i(p.getMonth()+1),g=i(p.getDate()),z=i(p.getHours()),O=i(p.getMinutes());return`${j}-${o}-${g} ${z}:${O}:00`};switch(l){case"1":return P(1);case"2":return P(5);case"3":return P(15);case"4":return P(30);default:throw new Error(`Unsupported cycle: ${N} ${l}`)}},ne=(n,N,l)=>{let c=null,u=null;const[A,d]=N;switch(l){case"6":{c=n.find(e=>new Date(I.dayjs(e).format("YYYY-MM-DD 23:59:59")).getTime()>=new Date(A).getTime()),u=n.findLast(e=>new Date(I.dayjs(e).format("YYYY-MM-DD 00:00:00")).getTime()<=new Date(d).getTime());break}case"7":{const e=I.dayjs(d).endOf("week").add(1,"day").format("YYYY-MM-DD 23:59:59");c=n.find(D=>I.dayjs(D).endOf("week").add(1,"day").format("YYYY-MM-DD")===I.dayjs(A).endOf("week").add(1,"day").format("YYYY-MM-DD")),u=n.findLast(D=>new Date(D).getTime()<=new Date(e).getTime());break}case"8":{c=n.find(e=>I.dayjs(e).format("YYYY-MM")===I.dayjs(A).format("YYYY-MM")),u=n.findLast(e=>I.dayjs(e).format("YYYY-MM")===I.dayjs(d).format("YYYY-MM"));break}default:c=n.find(e=>new Date(e).getTime()>=new Date(A).getTime()),u=n.findLast(e=>new Date(e).getTime()<=new Date(d).getTime())}return[c,u]},ke=(n,N,l,c,u,A)=>{const d=(s,t)=>{const{direction:T="",tradeAction:x="",tradeType:p=""}=s,i=p??T+x;switch(t){case 0:return new Map([["开多","买"],["平多","卖"],["开空","卖"],["平空","买"]]).get(i);case 1:return p??T+x}},e=(s,t,T,x)=>s.reduce((p,i)=>{var F;const j=d(i,0),o=s.filter(V=>V.klineTime===i.klineTime),g=[...new Set(o.map(V=>d(V,0)))];let z=null;g.length>1?z="image://"+new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==",self.location).href:z="image://"+new URL(Object.assign({"./images/buy.svg":me,"./images/sell.svg":Ae,"./images/t.svg":fe})[`./images/${j==="买"?"buy":"sell"}.svg`],self.location).href;const O=re(T,i.klineTime),Q=(F=x[O])==null?void 0:F[3];return t.forEach(V=>{var J;const R=j==="买"?0:1;V.range[R]===i.klineTime&&(V.rangeValue[R]=(J=x[O])==null?void 0:J[j==="买"?2:3])}),p.push({symbol:z,symbolSize:25,symbolRotate:0,symbolOffset:[0,0],label:{show:!1,position:"top"},coord:[i.klineTime,Q],silent:!0,animation:!1,customData:{tradeType:j,amount:i.amount,part:i.part,profitAndLoss:i.profitAndLoss,openPriceAll:i.openPriceAll,closePriceAll:i.closePriceAll}}),p},[]),D=(s,t,T,x)=>{const{sellBuyByPrice:p}=A,i=s.reduce((j,o,g)=>{var F,V;const z=d(o,1),O=["开多","开空"].includes(z)?"top":"bottom";let Q=null;if(p)Q=O==="top"?(o.openPriceAll/o.amount).toFixed(2):(o.closePriceAll/o.amount).toFixed(2);else{const R=re(T,o.klineTime);Q=O==="top"?(F=x[R])==null?void 0:F[3]:(V=x[R])==null?void 0:V[2]}return t.forEach(R=>{(O==="top"?R.range[0]:R.range[1])===o.klineTime&&(R.rangeValue[O==="top"?0:1]=Q)}),j.push({symbol:"triangle",symbolSize:[10,12],symbolRotate:O==="top"?180:0,symbolOffset:[0,0],label:{show:!0,position:O,color:"#fff",formatter:`${z} ${O==="top"?"+":"-"} ${o.amount}手 ${o.part?`(${o.part}份)`:""}`},itemStyle:{color:O==="top"?"#FF0000":"#389e0d"},coord:[o.klineTime,Q],silent:!0,animation:!1,customData:{tradeType:z,amount:o.amount,part:o.part,profitAndLoss:o.profitAndLoss,openPriceAll:o.openPriceAll,closePriceAll:o.closePriceAll}}),j},[]);return p?i:Ce(i)},v=(s,t,T)=>{const{basePointData:x,baseLineData:p}=s.reduce((g,z)=>{const O={pointTime:z.openTime,tradeAction:"开",tradeDirection:z.tradeDirection?"空":"多",tradeType:`开${z.tradeDirection?"空":"多"}`,part:null,amount:z.tradeVolume,profitAndLoss:z.profitAndLoss,openPriceAll:z.openPrice*z.tradeVolume,closePriceAll:z.closePrice*z.tradeVolume,klineTime:se(T,z.openTime,t)},Q={pointTime:z.closeTime,tradeAction:"平",tradeDirection:z.tradeDirection?"空":"多",tradeType:`平${z.tradeDirection?"空":"多"}`,part:null,amount:z.tradeVolume,profitAndLoss:z.profitAndLoss,openPriceAll:z.openPrice*z.tradeVolume,closePriceAll:z.closePrice*z.tradeVolume,klineTime:se(T,z.closeTime,t)},F={range:[O.klineTime,Q.klineTime],rangeValue:[null,null],color:Q.profitAndLoss>0?"#FF0000":"#389e0d"};return g.basePointData.push(O,Q),g.baseLineData.push(F),g},{basePointData:[],baseLineData:[]}),j=[...x.reduce((g,z)=>{const O=JSON.parse(JSON.stringify(z)),Q=O.klineTime+O.tradeType;if(g.has(Q)){const F=g.get(Q);O.amount+=F.amount,O.part+=F.part,O.profitAndLoss+=F.profitAndLoss,O.openPriceAll+=F.openPriceAll,O.closePriceAll+=F.closePriceAll}return g.set(Q,O),g},new Map([])).values()].sort((g,z)=>new Date(g.klineTime)-new Date(z.klineTime)),o=p.filter(({range:g})=>g[0]!==g[1]);return{pointData:j,lineData:o}},{pointData:P,lineData:Y}=v(n,N,c);return{tradePointData:(l===0?e:D)(P,Y,c,u),tradeLineData:Y.map(({range:s,rangeValue:t,color:T})=>[{symbol:"none",coord:[s[0],t[0]],lineStyle:{color:T,width:2,type:"solid"},silent:!0,animation:!1},{symbol:"none",coord:[s[1],t[1]],silent:!0,animation:!1}])}},be=(n,N)=>{let l=[];if(Number(N)<=5)l=n.map(({tradeDate:c,netPositionValue:u})=>[I.dayjs(c).format("YYYY-MM-DD HH:mm:ss"),u]);else if(Number(N)===6){const c=n.reduce((u,A)=>{const{tradeDate:d,netPositionValue:e}=A;return u.set(I.dayjs(d).format("YYYY-MM-DD 09:00:00"),e),u},new Map);l=Array.from(c,([u,A])=>[u,A])}else l=[];return{netPositionLineData:l}},he=(n,N,l,c)=>{let u=[];if(["6","7","8"].includes(N)){const A=n.reduce((d,e)=>{const D=se(c,e.date,N),v=e[l===0?"simple":"compound"];return d.set(D,v),d},new Map);u=Array.from(A,([d,e])=>[d,e])}else u=[];return{tradeIncomeRateLineData:u}};const ve={class:"tips"},Ee={__name:"Tips",props:{data:{type:Array,default:()=>[]}},setup(n){return(N,l)=>(a.openBlock(),a.createElementBlock("div",ve,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(n.data,(c,u)=>(a.openBlock(),a.createElementBlock("span",{key:u,class:"item",style:a.normalizeStyle({color:c.color})},a.toDisplayString(c.label)+" "+a.toDisplayString(c.value),5))),128))]))}},oe=ce._export_sfc(Ee,[["__scopeId","data-v-df1caefe"]]);const Se={__name:"SliderChart",props:{screenTimeRange:{type:Array,required:!0},varietyCode:{type:String,required:!0},varietyStock:{type:Number,required:!0},rightType:{type:[Number,null],default:null},klineType:{type:[Number,null],default:null},deleteFirstNumber:{type:Number,default:1},withoutPermission:{type:Number,default:0}},emits:["change"],setup(n,{expose:N,emit:l}){const{request:c}=a.inject("stConfig");let u=null;const A=a.ref(null),d=l,e=n,D=a.ref({data:[],mainIndicator:[],subIndicator:[],time:[]}),v=async()=>{const s={varietyCode:e.varietyCode,cycle:"6",right:e.varietyStock===1?e.rightType:0,contractType:e.varietyStock?null:e.klineType,startTime:"1999-01-01 00:00:00",endTime:I.dayjs().format("YYYY-MM-DD 23:59:59"),deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission},{body:t}=await c.post("/middleLayer/kline/getKline",s);t?D.value=t:D.value={data:[],mainIndicator:[],subIndicator:[],time:[]},f("init")},P=Z.G(s=>{if(!s.dataZoomId)return;const t=u.getOption();if(t!=null&&t.dataZoom[0]){const{startValue:T,endValue:x}=u.getOption().dataZoom[0],{time:p}=D.value,i=`${p[T].split(" ")[0]} 00:00:00`,j=`${p[x].split(" ")[0]} 23:59:59`;console.log(`检测到拖拽轴被拖动, 时间区间: ${i} - ${j}`),d("change",{startTime:i,endTime:j})}},200),Y=Z.G(({startTime:s,endTime:t})=>{f("reset",{startTime:s,endTime:t})},100),f=(s,t)=>{switch(s){case"init":{const{data:T,time:x}=D.value,{xAxisData:p,lineData:i}=T.reduce((o,g,z)=>(o.xAxisData.push(x[z].split(" ")[0]),o.lineData.push(g[1]),o),{xAxisData:[],lineData:[]}),j={grid:{height:0,left:"100px",right:"80px"},xAxis:{type:"category",data:p,show:!1},yAxis:{type:"value"},dataZoom:[{show:!0,startValue:0,endValue:0,textStyle:{color:"#ccc"}},{type:"inside",startValue:0,endValue:0}],series:[{data:i,type:"line"}]};if(u.setOption(j,!0),e.screenTimeRange.length){const[o,g]=e.screenTimeRange;Y({startTime:o,endTime:g})}break}case"reset":{const{time:T}=D.value,x=I.dayjs(t.startTime).format("YYYY-MM-DD"),p=I.dayjs(t.endTime).format("YYYY-MM-DD");let i=-1,j=-1;for(let o=0;o<T.length;o++){const g=I.dayjs(T[o]).format("YYYY-MM-DD");if(i!==-1&&j!==-1)break;i===-1&&(new Date(g)===new Date(x)?i=o:new Date(g)>new Date(x)&&(i=o-1)),j===-1&&(new Date(g)===new Date(p)?j=o:new Date(g)>new Date(p)&&(j=o-1))}j===-1&&(j=T.length-1),u.dispatchAction({type:"dataZoom",startValue:i,endValue:j});break}}};return a.onMounted(()=>{a.nextTick(()=>{u=ie.init(A.value),u.on("datazoom",P),v()})}),a.watch(()=>e.screenTimeRange,s=>{const[t,T]=s;Y({startTime:t,endTime:T})},{deep:!0}),a.onUnmounted(()=>{u.off("datazoom"),u.dispose()}),N({resize:Z.G(()=>u.resize(),100)}),(s,t)=>(a.openBlock(),a.createElementBlock("div",{class:"chart",ref_key:"sliderChartRef",ref:A},null,512))}},Qe=ce._export_sfc(Se,[["__scopeId","data-v-0c715da1"]]);const Pe={class:"main-chart"},Fe={class:"indicator"},Re={key:0,class:"screen-time-range"},Ue={key:0,class:"sub-chart"},Ve={class:"indicator"},Be={class:"title"},_e={key:1,class:"slider-chart"},He={__name:"index",props:{varietyCode:{type:String,required:!0},varietyStock:{type:Number,required:!0},indicatorStore:{type:Object,required:!0},userKlineConfig:{type:Object,required:!0},cycle:{type:String,required:!0},sellBuy:{type:Number,default:1},rightType:{type:[Number,null],default:null},klineType:{type:[Number,null],default:null},incomeType:{type:Number,default:0},initTimeRange:{type:Array,required:!0},mainIndicator:{type:String,required:!0},tradeLog:{type:Array,default:()=>[]},netPositionData:{type:Array,default:()=>[]},tradeIncomeRateData:{type:Array,default:()=>[]},positionTime:{type:[String,null],default:null},syncBrushRange:{type:Object,default:()=>({cycleList:[],startTime:null,endTime:null})},deleteFirstNumber:{type:Number,default:1},withoutPermission:{type:Number,default:0}},setup(n,{expose:N}){const{round:l,formatValue:c}=Z.x,{request:u}=a.inject("stConfig"),A=a.ref(!1),d=a.ref(!1),e=n;let D=!1,v=!1,P=!1,Y=!1,f=null,s=null,t=null;const T=a.ref(null),x=a.ref(null),p=a.ref(null),i=a.ref({data:[],mainIndicator:[],subIndicator:[],time:[]}),j=a.ref(0),o=a.ref([]),g=a.ref(null),z=a.ref("VOL"),O=a.computed(()=>{const M=i.value.data[j.value];if(!M)return[{label:"开",value:"-"},{label:"高",value:"-"},{label:"低",value:"-"},{label:"收",value:"-"},{label:"额",value:"-"},{label:"涨跌",value:"-"}];const r=[{label:"开",value:M[0]},{label:"高",value:M[3]},{label:"低",value:M[2]},{label:"收",value:M[1]}];M[4]!==null&&r.push({label:"额",value:c(M[4])});let y;return M[6]>0?y="red":M[6]<0&&(y="green"),r.push({label:"涨跌",value:`${l(M[6])}%`,color:y}),r}),Q=a.computed(()=>{var M,r;return((r=(M=i.value)==null?void 0:M.mainIndicator)==null?void 0:r.map(y=>({label:y.key,value:l(y.data[j.value]),color:y.color})))||[]}),F=a.computed(()=>{var M,r;return((r=(M=i.value)==null?void 0:M.subIndicator)==null?void 0:r.map(y=>({label:y.key,color:y.color,value:y.data[j.value]||"-"})))||[]}),V=()=>{if(!T.value)return console.warn("[K线] 主图DOM元素不存在,取消初始化"),!1;if(t)return!0;try{return t=ie.init(T.value),t.on("highlight",Z.G(M=>{var r;M.dataIndex?j.value=M.dataIndex:j.value=((r=M.batch)==null?void 0:r[0].dataIndex)??-1},10)),t.on("datazoom",Z.G(async()=>{var C;const{loadCheckCount:M}=q,{startValue:r,endValue:y}=((C=t.getOption())==null?void 0:C.dataZoom[0])??{};P===!1&&Y===!1&&r<M&&await J("history"),D===!1&&v===!1&&y>i.value.time.length-M&&await J("new"),le(),Ne()})),t.on("globalout",()=>{if(t){const M=t.getOption();j.value=M.dataZoom[0].endValue}}),t.getZr().on("contextmenu",()=>{var M;g.value=(M=i.value)==null?void 0:M.time[j.value]}),window.addEventListener("keydown",ue),e.userKlineConfig.enable_subChart&&x.value&&(s=ie.init(x.value),ie.connect([t,s])),T.value&&(f=Z.D(T.value),f.listen(()=>{requestAnimationFrame(()=>{var M;t==null||t.resize(),s==null||s.resize(),(M=p.value)==null||M.resize()})})),!0}catch(M){return console.error("[st-klinePlus]: 初始化异常:",M),!1}},R=async({startTime:M,endTime:r})=>{P=!1,Y=!1,D=!1,v=!1;try{A.value=!0;const y={varietyCode:e.varietyCode,cycle:e.cycle,right:e.varietyStock===1?e.rightType:0,contractType:e.varietyStock?null:e.klineType,mainIndicatorList:e.indicatorStore.getIndicatorParams(e.mainIndicator),subIndicator:z.value,deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission};["1","2","3","4","5"].includes(e.cycle)?Object.assign(y,{startTime:I.dayjs(M).subtract(1,"day").format("YYYY-MM-DD HH:mm:ss"),endTime:I.dayjs(r).add(1,"day").format("YYYY-MM-DD HH:mm:ss")}):["6","7"].includes(e.cycle)?Object.assign(y,{startTime:I.dayjs(M).subtract(50,"day").format("YYYY-MM-DD HH:mm:ss"),endTime:I.dayjs(r).add(50,"day").format("YYYY-MM-DD HH:mm:ss")}):Object.assign(y,{startTime:I.dayjs(M).subtract(10,"month").format("YYYY-MM-DD HH:mm:ss"),endTime:I.dayjs(r).add(10,"month").format("YYYY-MM-DD HH:mm:ss")});const{body:C}=await u.post("/middleLayer/kline/getKline",y);i.value=C??{data:[],mainIndicator:[],subIndicator:[],time:[]};let L=-1,m=-1;for(let w=0;w<i.value.time.length;w++){const S=I.dayjs(i.value.time[w]).format("YYYY-MM-DD");if(L!==-1&&m!==-1)break;L===-1&&(new Date(S)===new Date(M)?L=w:new Date(S)>new Date(M)&&(L=w-1)),m===-1&&(new Date(S)===new Date(r)?m=w:new Date(S)>new Date(r)&&(m=w-1))}m===-1&&(m=i.value.time.length-1),Me({startValue:L===-1?0:L,endValue:m===-1?i.value.time.length-1:m})}finally{A.value=!1}},J=async M=>{var S,K;const{loadAddCount:r}=q;switch(M){case"history":{P=!0;const U={varietyCode:e.varietyCode,cycle:e.cycle,right:e.varietyStock===1?e.rightType:0,contractType:e.varietyStock?null:e.klineType,endTime:i.value.time[0],limit:r,mainIndicatorList:e.indicatorStore.getIndicatorParams(e.mainIndicator),subIndicator:z.value,deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission},{body:B}=await u.post("/middleLayer/kline/getKline",U);i.value=De(B,i.value),B.data.length<r&&(console.log("[K线] 获取更多数据: 左侧已全部获取完毕, 关闭"),Y=!0),P=!1;break}case"new":{D=!0;const U={varietyCode:e.varietyCode,cycle:e.cycle,right:e.varietyStock===1?e.rightType:0,contractType:e.varietyStock?null:e.klineType,startTime:i.value.time[i.value.time.length-1],limit:r,mainIndicatorList:e.indicatorStore.getIndicatorParams(e.mainIndicator),subIndicator:z.value,deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission},{body:B}=await u.post("/middleLayer/kline/getKline",U);i.value=De(i.value,B),B.data.length<r&&(console.log("[K线] 获取更多数据: 右侧已全部获取完毕, 关闭"),v=!0),D=!1;break}}const{startValue:y,endValue:C}=((S=t.getOption())==null?void 0:S.dataZoom[0])??{},L=(K=t.getOption())==null?void 0:K.xAxis[0].data,m=i.value.time.findIndex(U=>new Date(U)>=new Date(L[y])),w=i.value.time.findIndex(U=>new Date(U)>=new Date(L[C]));Me({startValue:m===-1?0:m,endValue:w===-1?i.value.time.length-1:w})},le=()=>{var m;if(!i.value.time.length)return o.value=[];const{time:M}=i.value,{startValue:r,endValue:y}=((m=t.getOption())==null?void 0:m.dataZoom[0])??{},C=M[r],L=M[y];["6","7","8"].includes(e.cycle)?o.value=[I.dayjs(C).format("YYYY-MM-DD"),I.dayjs(L).format("YYYY-MM-DD")]:o.value=[C,L]},Me=(M={startValue:0,endValue:0})=>{if(!V()||!t)return console.warn("[st-klinePlus]: 图表未准备就绪, 跳过绘制");if(!i.value.time.length)return console.warn("[st-klinePlus]: 图表无数据, 跳过绘制");const{maxValueSpan:y}=q,{time:C,data:L,mainIndicator:m}=i.value,w=M.endValue-M.startValue>y?M.endValue-y:M.startValue,S=M.endValue,K=m.map(k=>({name:k.key,type:"line",silent:!0,symbol:"none",data:k.data,lineStyle:{width:k.width||1},itemStyle:{color:k.color}})),{netPositionLineData:U}=be(e.netPositionData,e.cycle),{tradeIncomeRateLineData:B}=he(e.tradeIncomeRateData,e.cycle,e.incomeType,C),{tradePointData:_,tradeLineData:H}=ke(e.tradeLog,e.cycle,e.sellBuy,C,L,e.userKlineConfig);t.setOption({animation:!1,grid:{top:"40px",left:"60px",right:"20px",bottom:"20px"},dataZoom:[{type:"inside",startValue:w,endValue:S,minValueSpan:q.minValueSpan,maxValueSpan:q.maxValueSpan}],tooltip:{trigger:"axis",appendToBody:!0,confine:!0,axisPointer:{type:"cross",label:{rich:{},formatter:k=>{const{axisDimension:b,value:h}=k;return b==="x"?["6","7","8"].includes(e.cycle)?I.dayjs(h).format("YYYY-MM-DD"):h:String(l(h))}}},formatter:k=>{if(!(k!=null&&k.length))return null;let b="";if(k.forEach(E=>{if(E.seriesName==="netPosition"&&E.data!==null&&(b+=`<div>资产持仓净值: ${E.data[1]}</div>`),E.componentSubType==="candlestick")if(e.sellBuy===0){const X=_.filter(G=>(G==null?void 0:G.coord[0])===E.axisValue);let W=0,$=0;X.forEach(G=>{const{tradeType:ee,amount:ae}=G.customData;ee==="买"&&(W+=ae),ee==="卖"&&($+=ae)}),W&&(b+=`<div>买: ${W}</div>`),$&&(b+=`<div>卖: ${$}</div>`)}else _.forEach(X=>{if((X==null?void 0:X.coord[0])===E.axisValue){const{tradeType:W,amount:$,profitAndLoss:G,openPriceAll:ee,closePriceAll:ae}=X.customData;let te=`<div>${W}: ${$}手</div>`;if(W.includes("开")&&(te+=`<div>开仓价: ${(ee/$).toFixed(2)}</div>`),W.includes("平")){const je=(ee/$).toFixed(2),ze=(ae/$).toFixed(2);te+=`<div>平仓价: ${ze}</div>`,te+=`<div>盈亏: ${G==null?void 0:G.toFixed(2)}</div>`,te+=`<div>盈亏比率: ${((ze-je)/je*100).toFixed(2)} %</div>`}b+=te}})}),!b)return null;let h=k[0].axisValue;return["6","7","8"].includes(e.cycle)&&(h=I.dayjs(h).format("YYYY-MM-DD")),`
|
|
1
|
+
"use strict";require("./base-ef747d02.cjs");const xe=require("./el-loading-8179b497.cjs"),Oe=require("./el-empty-1697ded8.cjs");require("./el-tag-9c2f329f.cjs");const De=require("./el-select-70806166.cjs");require("./el-scrollbar-bc3f790d.cjs");require("./el-popper-a4f3ae4d.cjs");const r=require("vue"),p=require("./dayjs.min-2c20abe6.cjs"),he=require("echarts"),W=require("./index-94131fd7.cjs"),Ne=require("./_plugin-vue_export-helper-f246444f.cjs");require("./use-global-config-23472471.cjs");require("./use-form-common-props-ac666630.cjs");require("./index-9780a537.cjs");require("./index-00f6ca75.cjs");require("./index-bb833443.cjs");require("./index-5c0dd943.cjs");require("./index-185792a7.cjs");require("./index-ac8dc53d.cjs");require("./castArray-35947698.cjs");require("./index-870b6c9d.cjs");require("./scroll-b108dabd.cjs");require("./debounce-62f5b6e8.cjs");require("./vnode-b906ae6d.cjs");function be(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const c=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(n,i,c.get?c:{enumerable:!0,get:()=>t[i]})}}return n.default=t,Object.freeze(n)}const ie=be(he),Ce="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjM4NzI1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI2MjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNGRjAwMDAiIHAtaWQ9IjI2MjYiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjcwOTMzMyAxNjcuNzIyNjY3YzAuMTI4LTIxLjc2IDkuOTg0LTQyLjY2NjY2NyAyNy4zOTItNTcuOTQxMzM0YTkzLjMxMiA5My4zMTIgMCAwIDEgNjQuNDY5MzM0LTIzLjg5MzMzM0w3NjEuNiA4NS4zMzMzMzNjMjUuNiAwLjU1NDY2NyA0Ny4zNiA4Ljc4OTMzMyA2NC45Mzg2NjcgMjQuNDA1MzM0IDE3LjkyIDE2IDI2Ljg4IDM1LjIgMjYuODggNTcuNDcybC0wLjU1NDY2NyA0MTkuODRjMC4yOTg2NjcgMjIuNjk4NjY3LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuOTIyNjY2LTEyLjYyOTMzMyAyNy4zMDY2NjctMjcuOTQ2NjY3IDQ4Ljg5Ni00NS44MjQgNjQuODk2bC0yMTEuMjQyNjY3IDE4OC4yMDI2NjdjLTE3LjU3ODY2NyAxNS43MDEzMzMtMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45Mzg2NjcgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0Ljk4MTMzMy0yMy41OTQ2NjdsLTIxMS4xNTczMzMtMTg4LjE2Yy0xNy45Mi0xNi4wNDI2NjctMzMuMjgtMzcuNzE3MzMzLTQ1LjkwOTMzNC02NC45ODEzMzMtMTIuNjcyLTI3LjMwNjY2Ny0xOS4wMjkzMzMtNTIuMzk0NjY3LTE5LjAyOTMzMy03NS4zMDY2NjdMMTcwLjY2NjY2NyAxNjcuNzIyNjY3eiBtNDIuNjY2NjY3IDAuMjU2bDAuNTU0NjY3IDQxOC42ODhjMCAxNi4yMTMzMzMgNC44MjEzMzMgMzUuMzI4IDE1LjAxODY2NiA1Ny4zNDQgMTAuMzY4IDIyLjI3MiAyMi4zNTczMzMgMzkuMjEwNjY3IDM1LjYyNjY2NyA1MS4wNzJsMjExLjQxMzMzMyAxODguNDE2YzguOTYgOC4xMDY2NjcgMjEuODg4IDEyLjggMzYuMjI0IDEyLjU0NCAxNS41MzA2NjctMC4wNDI2NjcgMjcuMDkzMzMzLTQuMjY2NjY3IDM2LjY5MzMzNC0xMi44bDIxMS4xNTczMzMtMTg4LjExNzMzNGMxMy4zMTItMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNTg0LTUxLjA3MiAxMC4xMTItMjEuODQ1MzMzIDE0Ljc2MjY2Ny00MC41NzYgMTQuNTA2NjY3LTU3LjA0NTMzM2wwLjU1NDY2Ni00MTkuNzU0NjY3YzAtOS44OTg2NjctMy41ODQtMTcuNjIxMzMzLTEyLjQ1ODY2Ni0yNS42YTU0LjY5ODY2NyA1NC42OTg2NjcgMCAwIDAtMzYuNjA4LTEzLjYxMDY2NmwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NyAxMy4zMTIgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzMgMjEuNDYxMzMzbC0wLjQyNjY2NyA0LjY5MzMzNHoiIGZpbGw9IiNBRTAwMDAiIHAtaWQ9IjI2MjciPjwvcGF0aD48cGF0aCBkPSJNMzg0IDY1NC4xMjI2NjdoMTUzLjUxNDY2N2M5Ni43NjggMCAxNDIuNzYyNjY3LTQ4Ljk4MTMzMyAxNDIuNzYyNjY2LTExNy4wNzczMzQgMC01OS43MzMzMzMtMzMuNDUwNjY3LTg4LjQwNTMzMy04NC44MjEzMzMtOTcuOTYyNjY2di0xLjc5MmM0OC45ODEzMzMtMTUuNTMwNjY3IDY2LjkwMTMzMy00Ni41OTIgNjYuOTAxMzMzLTg5LjYgMC02NS4xMDkzMzMtNDAuNjE4NjY3LTEwMy4zMzg2NjctMTM0Ljk5NzMzMy0xMDMuMzM4NjY3SDM4NHY0MDkuNzcwNjY3eiBtNzIuODc0NjY3LTU0Ljk1NDY2N3YtMTMxLjQxMzMzM2g2Ni4zMDRjNTEuOTY4IDAgODAuMDQyNjY3IDE3LjkyIDgwLjA0MjY2NiA2NS4xMDkzMzMgMCA0NC44LTI2LjI4MjY2NyA2Ni4zMDQtNzUuODYxMzMzIDY2LjMwNGgtNzAuNDg1MzMzeiBtMC0xODAuMzk0NjY3VjI5OC43MDkzMzNoNjAuMzMwNjY2YzQ3LjE4OTMzMyAwIDcyLjI3NzMzMyAxNC45MzMzMzMgNzIuMjc3MzM0IDU5LjEzNiAwIDQ2LjU5Mi0zMi4yNTYgNjAuOTI4LTc1LjI2NCA2MC45MjhoLTU3LjM0NHoiIGZpbGw9IiNGRkZGRkYiIHAtaWQ9IjI2MjgiPjwvcGF0aD48L3N2Zz4=",ke="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjQxNjY0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI3NzciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiM1NEFCMzAiIHAtaWQ9IjI3NzgiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiMzODhEMTQiIHAtaWQ9IjI3NzkiPjwvcGF0aD48cGF0aCBkPSJNNTA2LjQ1MzMzMyA2NzQuNzMwNjY3Yzk5LjE1NzMzMyAwIDE0Ni4zNDY2NjctNDguMzg0IDE0Ni4zNDY2NjctMTI2LjAzNzMzNCAwLTcyLjg3NDY2Ny0zOC44MjY2NjctOTkuNzU0NjY3LTEwMy4zMzg2NjctMTE4LjI3MmwtMzguMjI5MzMzLTExLjk0NjY2NmMtNDAuNjE4NjY3LTExLjM0OTMzMy01Mi41NjUzMzMtMjUuMDg4LTUyLjU2NTMzMy01Ny4zNDQgMC0zMi44NTMzMzMgMjMuODkzMzMzLTUwLjc3MzMzMyA2Ni45MDEzMzMtNTAuNzczMzM0IDQ1LjM5NzMzMyAwIDc4Ljg0OCA5LjU1NzMzMyAxMDQuNTMzMzMzIDIwLjMwOTMzNFYyNzMuMzIyNjY3Yy0yMi42OTg2NjctMTEuOTQ2NjY3LTUxLjk2OC0yMi4xMDEzMzMtMTA1LjcyOC0yMi4xMDEzMzQtOTIuNTg2NjY3IDAtMTM3LjM4NjY2NyA0Ny4xODkzMzMtMTM3LjM4NjY2NiAxMTYuNDggMCA2OS4yOTA2NjcgMzUuMjQyNjY3IDEwMC4zNTIgOTMuMTg0IDExNi40OGwzOC44MjY2NjYgMTAuNzUyYzQ0LjggMTMuNzM4NjY3IDU5LjczMzMzMyAyNi44OCA1OS43MzMzMzQgNjAuOTI4IDAgMzcuMDM0NjY3LTIzLjI5NiA1OS43MzMzMzMtNzguMjUwNjY3IDU5LjczMzMzNC00NC44IDAtODMuNjI2NjY3LTEwLjc1Mi0xMTYuNDgtMjUuMDg4djU3Ljk0MTMzM2MyOC4wNzQ2NjcgMTQuOTMzMzMzIDY4LjY5MzMzMyAyNi4yODI2NjcgMTIyLjQ1MzMzMyAyNi4yODI2Njd6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSIyNzgwIj48L3BhdGg+PC9zdmc+",Ee="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==",{round:Se}=W.x,U={minValueSpan:5,maxValueSpan:2e3,loadCheckCount:500,loadAddCount:2e3},pe={1:240,2:48,3:16,4:8,5:4,6:1,7:.2,8:.033},ve=(t,n=0)=>{const i=pe[t];if(!i)throw new Error(`[K线] 不支持的周期:${String(t)}`);if(!Number.isInteger(n)||n<0||n>U.maxValueSpan)throw new RangeError(`[K线] initialVisibleBars 必须是 0-${U.maxValueSpan} 的整数`);if(t==="8"){const y=n?Math.ceil(n/i/30):0;return{amount:Math.max(10,y),unit:"month"}}const c=["6","7"].includes(t)?50:1,M=n?Math.ceil(n/i):0;return{amount:Math.max(c,M),unit:"day"}},Ie=(t,n)=>{let i=0,c=t.length;for(;i<c;){const M=Math.floor((i+c)/2);t[M]<n?i=M+1:c=M}return i},Qe=(t,n)=>{let i=0,c=t.length;for(;i<c;){const M=Math.floor((i+c)/2);t[M]<=n?i=M+1:c=M}return i},Pe=({time:t,startTime:n,endTime:i,initialVisibleBars:c=0})=>{if(!Array.isArray(t)||t.length===0)throw new TypeError("[K线] 无法定位首屏:行情时间序列为空");if(!Number.isInteger(c)||c<0||c>U.maxValueSpan)throw new RangeError(`[K线] initialVisibleBars 必须是 0-${U.maxValueSpan} 的整数`);const M=p.dayjs(n).valueOf(),y=p.dayjs(i).valueOf();if(!Number.isFinite(M)||!Number.isFinite(y)||y<M)throw new RangeError("[K线] 无法定位首屏:开始或结束时间无效");const N=t.map((D,L)=>{const d=p.dayjs(D).valueOf();if(!Number.isFinite(d))throw new RangeError(`[K线] 行情时间[${L}]无效`);if(L>0&&d<p.dayjs(t[L-1]).valueOf())throw new Error(`[K线] 行情时间序列未按升序排列,位置 ${L}`);return d});let e=Math.min(Ie(N,M),N.length-1),u=Math.max(Qe(N,y)-1,0);if(e>u){const D=Math.min(Ie(N,M),N.length-1);e=D,u=D}let O=Math.min(c||u-e+1,N.length,U.maxValueSpan)-(u-e+1);if(O>0){const D=Math.min(e,Math.ceil(O/2));e-=D,O-=D;const L=Math.min(N.length-1-u,O);u+=L,O-=L,O>0&&(e-=Math.min(e,O))}return{startValue:e,endValue:u}},Ye=({startTime:t,endTime:n,cycle:i,type:c="end"})=>{const{maxValueSpan:M}=U,y=Math.ceil((M+1e3)/pe[i]),N=p.dayjs(t);if(p.dayjs(n).diff(N,"day")<=y)return[t,n];if(c==="end")return[p.dayjs(n).subtract(y,"day").format("YYYY-MM-DD HH:mm:ss"),n];if(c==="middle"){const f=p.dayjs((p.dayjs(t).valueOf()+p.dayjs(n).valueOf())/2).format("YYYY-MM-DD HH:mm:ss");return console.log("超过一屏数量上限, 进行中间时间计算",f,y/2),[p.dayjs(f).subtract(y/2,"day").format("YYYY-MM-DD HH:mm:ss"),p.dayjs(f).add(y/2,"day").format("YYYY-MM-DD HH:mm:ss")]}},Re=(t,n)=>{const i=t[n],c=n===0?t[n]:t[n-1];return i[0]===i[1]?i[0]>=c[1]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}:i[1]>i[0]?{color:"transparent",borderColor:"#FF0000"}:{color:"#00FFFF"}},Fe=(t,n,i)=>{var M,y,N,e;const c=t.subIndicator.map(u=>{if(u.series==="bar")return{name:"subMain",xAxisIndex:0,yAxisIndex:1,type:"bar",silent:!0,symbol:"none",data:u.data.map((f,O)=>u.seriesColor==="kline"?{value:f,itemStyle:Re(t.data,O)}:u.seriesColor==="value"?{value:f,itemStyle:{color:f>=0?"#FF0000":"#00FFFF"}}:{value:f,itemStyle:{color:u.seriesColor}})};if(u.series==="line")return{xAxisIndex:0,yAxisIndex:u.yAxis==="right"?2:1,name:u.key,type:"line",silent:!0,symbol:"none",data:u.data,lineStyle:{width:1},itemStyle:{color:u.color}}});return{animation:!1,grid:{top:"10px",left:"60px",right:"20px",bottom:"10px"},dataZoom:[{type:"inside",startValue:n,endValue:i,maxValueSpan:U.maxValueSpan}],tooltip:{show:!1},axisPointer:{show:!0,triggerTooltip:!1,label:{rich:{},formatter:u=>{const{axisDimension:f,value:O}=u;if(f==="x")return null;if(u.axisIndex===1)return String(Se(O))}}},xAxis:{type:"category",data:t.time,axisLine:{show:!0},splitLine:{show:!1},axisLabel:{show:!1}},yAxis:[{position:"right"},{position:"left",min:((M=t.subIndicator[0])==null?void 0:M.leftYAxisRange)==="cover"?u=>u.min:null,max:((y=t.subIndicator[0])==null?void 0:y.leftYAxisRange)==="cover"?u=>u.max:null,splitNumber:1,axisLine:{show:!0},splitLine:{show:!0,lineStyle:{type:"dotted",color:"#333"}}},{position:"right",min:((N=t.subIndicator[0])==null?void 0:N.rightYAxisRange)==="cover"?u=>u.min:null,max:((e=t.subIndicator[0])==null?void 0:e.rightYAxisRange)==="cover"?u=>u.max:null,splitNumber:1,axisLine:{show:!1},splitLine:{show:!1},axisLabel:{show:!1}}],series:c}},ce=(t,n,i="strict")=>{let c=0,M=t.length-1,y=-1;for(;c<=M;){let N=Math.floor((c+M)/2);if(i==="strict"){if(t[N]===n)return N;t[N]<n?c=N+1:M=N-1}else i==="gte"&&(t[N]>=n?(y=N,M=N-1):c=N+1)}return i==="strict"?-1:y},Ve=t=>{const n=[];return t.reduce((i,c)=>{const M=`${c.coord[0]}+${c.label.position}`,y=c.label.position==="top"?-16:16,N=i.get(M);return N?(i.set(M,N+1),c.symbolOffset[1]=y*(N+1)):(i.set(M,1),c.symbolOffset[1]=c.label.position==="top"?-7:7),n.push(c),i},new Map),n},Le=(t,n)=>({data:[...t.data,...n.data.slice(1)],mainIndicator:t.mainIndicator.map((i,c)=>({...i,data:[...i.data,...n.mainIndicator[c].data.slice(1)]})),subIndicator:t.subIndicator.map((i,c)=>({...i,data:[...i.data,...n.subIndicator[c].data.slice(1)]})),time:[...t.time,...n.time.slice(1)]}),le=(t,n,i)=>{switch(i){case"5":{let D=[...new Set(t.slice(-20).map(x=>{const a=new Date(x),j=String(a.getHours()).padStart(2,"0"),l=String(a.getMinutes()).padStart(2,"0"),m=String(a.getSeconds()).padStart(2,"0");return`${j}:${l}:${m}`}))];D.includes("00:00:00")&&(D.splice(D.indexOf("00:00:00"),1),D.push("24:00:00")),D=D.sort((x,a)=>new Date(`2000-01-30 ${x}`).getTime()-new Date(`2000-01-30 ${a}`).getTime());const L=new Date(n),d=L.getFullYear(),o=String(L.getMonth()+1).padStart(2,"0"),T=String(L.getDate()).padStart(2,"0"),I=String(L.getHours()).padStart(2,"0"),Y=String(L.getMinutes()).padStart(2,"0"),A=String(L.getSeconds()).padStart(2,"0");if(`${I}:${Y}:${A}`=="00:00:00")return`${d}-${o}-${T} 01:00:00`;{let x=null;for(let a=0;a<D.length;a++){const j=D[a].split(":");if(+`${j[0]}${j[1]}${j[2]}`>=+`${I}${Y}${A}`){x=D[a];break}}if(x==="24:00:00"){const a=new Date(n);a.setDate(a.getDate()+1);const j=a.getFullYear(),l=String(a.getMonth()+1).padStart(2,"0"),m=String(a.getDate()).padStart(2,"0");return`${j}-${l}-${m} 00:00:00`}return`${d}-${o}-${T} ${x}`}}case"6":{const D=new Date(n),L=D.getHours();if(L>=4&&L<21){const d=D.getFullYear(),o=String(D.getMonth()+1).padStart(2,"0"),T=String(D.getDate()).padStart(2,"0");return`${d}-${o}-${T} 09:00:00`}else{const d=new Date(n);d.getHours()>=21&&d.setDate(d.getDate()+1);const o=d.getFullYear(),T=String(d.getMonth()+1).padStart(2,"0"),I=String(d.getDate()).padStart(2,"0"),Y=`${o}-${T}-${I} 09:00:00`,A=ce(t,Y,"gte");return A===-1?Y:t[A]}}case"7":{const D=new Date(n),L=new Date(D);L.setDate(D.getDate()-D.getDay()),L.setHours(0,0,0,0);const d=new Date(L);d.setDate(L.getDate()+5),d.setHours(23,59,59,0);const o=new Date(L);o.setDate(L.getDate()+12),o.setHours(9,0,0,0);const T=D<=d?d:o,I=T.getFullYear(),Y=String(T.getMonth()+1).padStart(2,"0"),A=String(T.getDate()).padStart(2,"0");return`${I}-${Y}-${A} 09:00:00`}case"8":{const D=new Date(n),L=new Date(D.getFullYear(),D.getMonth()+1,1),d=new Date(L);d.setDate(L.getDate()-1),d.setHours(9,0,0,0);const o=d.getFullYear(),T=String(d.getMonth()+1).padStart(2,"0"),I=String(d.getDate()).padStart(2,"0");return`${o}-${T}-${I} 09:00:00`}}const c=new Date(n),M=c.getFullYear(),y=c.getMonth(),N=c.getDate(),e=c.getHours(),u=c.getMinutes(),f=c.getSeconds(),O=D=>{let L=null;const d=Math.floor(u/D);u%D===0&&f===0?L=u:L=(d+1)*D;const o=Math.floor(L/60),T=e+o,I=L%60,Y=new Date(M,y,N,T,I,0),A=k=>String(k).padStart(2,"0"),x=Y.getFullYear(),a=A(Y.getMonth()+1),j=A(Y.getDate()),l=A(Y.getHours()),m=A(Y.getMinutes());return`${x}-${a}-${j} ${l}:${m}:00`};switch(i){case"1":return O(1);case"2":return O(5);case"3":return O(15);case"4":return O(30);default:throw new Error(`Unsupported cycle: ${n} ${i}`)}},re=(t,n,i)=>{let c=null,M=null;const[y,N]=n;switch(i){case"6":{c=t.find(e=>new Date(p.dayjs(e).format("YYYY-MM-DD 23:59:59")).getTime()>=new Date(y).getTime()),M=t.findLast(e=>new Date(p.dayjs(e).format("YYYY-MM-DD 00:00:00")).getTime()<=new Date(N).getTime());break}case"7":{const e=p.dayjs(N).endOf("week").add(1,"day").format("YYYY-MM-DD 23:59:59");c=t.find(u=>p.dayjs(u).endOf("week").add(1,"day").format("YYYY-MM-DD")===p.dayjs(y).endOf("week").add(1,"day").format("YYYY-MM-DD")),M=t.findLast(u=>new Date(u).getTime()<=new Date(e).getTime());break}case"8":{c=t.find(e=>p.dayjs(e).format("YYYY-MM")===p.dayjs(y).format("YYYY-MM")),M=t.findLast(e=>p.dayjs(e).format("YYYY-MM")===p.dayjs(N).format("YYYY-MM"));break}default:c=t.find(e=>new Date(e).getTime()>=new Date(y).getTime()),M=t.findLast(e=>new Date(e).getTime()<=new Date(N).getTime())}return[c,M]},Ue=(t,n,i,c,M,y)=>{const N=(d,o)=>{const{direction:T="",tradeAction:I="",tradeType:Y=""}=d,A=Y??T+I;switch(o){case 0:return new Map([["开多","买"],["平多","卖"],["开空","卖"],["平空","买"]]).get(A);case 1:return Y??T+I}},e=(d,o,T,I)=>d.reduce((Y,A)=>{var P;const x=N(A,0),a=d.filter(_=>_.klineTime===A.klineTime),j=[...new Set(a.map(_=>N(_,0)))];let l=null;j.length>1?l="image://"+new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==",self.location).href:l="image://"+new URL(Object.assign({"./images/buy.svg":Ce,"./images/sell.svg":ke,"./images/t.svg":Ee})[`./images/${x==="买"?"buy":"sell"}.svg`],self.location).href;const m=ce(T,A.klineTime),k=(P=I[m])==null?void 0:P[3];return o.forEach(_=>{var X;const B=x==="买"?0:1;_.range[B]===A.klineTime&&(_.rangeValue[B]=(X=I[m])==null?void 0:X[x==="买"?2:3])}),Y.push({symbol:l,symbolSize:25,symbolRotate:0,symbolOffset:[0,0],label:{show:!1,position:"top"},coord:[A.klineTime,k],silent:!0,animation:!1,customData:{tradeType:x,amount:A.amount,part:A.part,profitAndLoss:A.profitAndLoss,openPriceAll:A.openPriceAll,closePriceAll:A.closePriceAll}}),Y},[]),u=(d,o,T,I)=>{const{sellBuyByPrice:Y}=y,A=d.reduce((x,a,j)=>{var P,_;const l=N(a,1),m=["开多","开空"].includes(l)?"top":"bottom";let k=null;if(Y)k=m==="top"?(a.openPriceAll/a.amount).toFixed(2):(a.closePriceAll/a.amount).toFixed(2);else{const B=ce(T,a.klineTime);k=m==="top"?(P=I[B])==null?void 0:P[3]:(_=I[B])==null?void 0:_[2]}return o.forEach(B=>{(m==="top"?B.range[0]:B.range[1])===a.klineTime&&(B.rangeValue[m==="top"?0:1]=k)}),x.push({symbol:"triangle",symbolSize:[10,12],symbolRotate:m==="top"?180:0,symbolOffset:[0,0],label:{show:!0,position:m,color:"#fff",formatter:`${l} ${m==="top"?"+":"-"} ${a.amount}手 ${a.part?`(${a.part}份)`:""}`},itemStyle:{color:m==="top"?"#FF0000":"#389e0d"},coord:[a.klineTime,k],silent:!0,animation:!1,customData:{tradeType:l,amount:a.amount,part:a.part,profitAndLoss:a.profitAndLoss,openPriceAll:a.openPriceAll,closePriceAll:a.closePriceAll}}),x},[]);return Y?A:Ve(A)},f=(d,o,T)=>{const{basePointData:I,baseLineData:Y}=d.reduce((j,l)=>{const m={pointTime:l.openTime,tradeAction:"开",tradeDirection:l.tradeDirection?"空":"多",tradeType:`开${l.tradeDirection?"空":"多"}`,part:null,amount:l.tradeVolume,profitAndLoss:l.profitAndLoss,openPriceAll:l.openPrice*l.tradeVolume,closePriceAll:l.closePrice*l.tradeVolume,klineTime:le(T,l.openTime,o)},k={pointTime:l.closeTime,tradeAction:"平",tradeDirection:l.tradeDirection?"空":"多",tradeType:`平${l.tradeDirection?"空":"多"}`,part:null,amount:l.tradeVolume,profitAndLoss:l.profitAndLoss,openPriceAll:l.openPrice*l.tradeVolume,closePriceAll:l.closePrice*l.tradeVolume,klineTime:le(T,l.closeTime,o)},P={range:[m.klineTime,k.klineTime],rangeValue:[null,null],color:k.profitAndLoss>0?"#FF0000":"#389e0d"};return j.basePointData.push(m,k),j.baseLineData.push(P),j},{basePointData:[],baseLineData:[]}),x=[...I.reduce((j,l)=>{const m=JSON.parse(JSON.stringify(l)),k=m.klineTime+m.tradeType;if(j.has(k)){const P=j.get(k);m.amount+=P.amount,m.part+=P.part,m.profitAndLoss+=P.profitAndLoss,m.openPriceAll+=P.openPriceAll,m.closePriceAll+=P.closePriceAll}return j.set(k,m),j},new Map([])).values()].sort((j,l)=>new Date(j.klineTime)-new Date(l.klineTime)),a=Y.filter(({range:j})=>j[0]!==j[1]);return{pointData:x,lineData:a}},{pointData:O,lineData:D}=f(t,n,c);return{tradePointData:(i===0?e:u)(O,D,c,M),tradeLineData:D.map(({range:d,rangeValue:o,color:T})=>[{symbol:"none",coord:[d[0],o[0]],lineStyle:{color:T,width:2,type:"solid"},silent:!0,animation:!1},{symbol:"none",coord:[d[1],o[1]],silent:!0,animation:!1}])}},_e=(t,n)=>{let i=[];if(Number(n)<=5)i=t.map(({tradeDate:c,netPositionValue:M})=>[p.dayjs(c).format("YYYY-MM-DD HH:mm:ss"),M]);else if(Number(n)===6){const c=t.reduce((M,y)=>{const{tradeDate:N,netPositionValue:e}=y;return M.set(p.dayjs(N).format("YYYY-MM-DD 09:00:00"),e),M},new Map);i=Array.from(c,([M,y])=>[M,y])}else i=[];return{netPositionLineData:i}},Be=(t,n,i,c)=>{let M=[];if(["6","7","8"].includes(n)){const y=t.reduce((N,e)=>{const u=le(c,e.date,n),f=e[i===0?"simple":"compound"];return N.set(u,f),N},new Map);M=Array.from(y,([N,e])=>[N,e])}else M=[];return{tradeIncomeRateLineData:M}},me="/middleLayer/kline/getKline",$e=15e3,He=64,Ae=new WeakMap,Ze=new Map,Ge=t=>typeof t=="object"&&t!==null||typeof t=="function",ue=t=>t instanceof Date?t.toISOString():Array.isArray(t)?t.map(ue):t&&typeof t=="object"?Object.keys(t).sort().reduce((n,i)=>(t[i]!==void 0&&(n[i]=ue(t[i])),n),{}):t,We=t=>{if(Ge(t)){let n=Ae.get(t);return n||(n=new Map,Ae.set(t,n)),n}return Ze},fe=t=>{for(;t.size>He;){const n=t.keys().next().value;if(n===void 0)break;t.delete(n)}},oe=(t,n,i={})=>{if(!t||typeof t.post!="function")throw new TypeError("[K线] request.post 未配置,无法获取行情数据");const c=Number.isFinite(i.ttlMs)?Math.max(0,i.ttlMs):$e,M=We(t),y=`${me}:${JSON.stringify(ue(n))}`,N=Date.now(),e=M.get(y);if(e&&(e.pending||e.expiresAt>N))return e.promise;e&&M.delete(y);const u={pending:!0,expiresAt:0,promise:null};return u.promise=Promise.resolve().then(()=>t.post(me,n)).then(f=>(M.get(y)===u&&(u.pending=!1,u.expiresAt=Date.now()+c,fe(M)),f),f=>{throw M.get(y)===u&&M.delete(y),f}),M.set(y,u),fe(M),u.promise};const qe={class:"tips"},Ke={__name:"Tips",props:{data:{type:Array,default:()=>[]}},setup(t){return(n,i)=>(r.openBlock(),r.createElementBlock("div",qe,[(r.openBlock(!0),r.createElementBlock(r.Fragment,null,r.renderList(t.data,(c,M)=>(r.openBlock(),r.createElementBlock("span",{key:M,class:"item",style:r.normalizeStyle({color:c.color})},r.toDisplayString(c.label)+" "+r.toDisplayString(c.value),5))),128))]))}},se=Ne._export_sfc(Ke,[["__scopeId","data-v-ab0b040e"]]);const Je={__name:"SliderChart",props:{screenTimeRange:{type:Array,required:!0},varietyCode:{type:String,required:!0},varietyStock:{type:Number,required:!0},rightType:{type:[Number,null],default:null},klineType:{type:[Number,null],default:null},deleteFirstNumber:{type:Number,default:1},withoutPermission:{type:Number,default:0}},emits:["change"],setup(t,{expose:n,emit:i}){const{request:c}=r.inject("stConfig");let M=null,y=!1,N=0;const e=r.ref(null),u=i,f=t,O=r.ref({data:[],mainIndicator:[],subIndicator:[],time:[]}),D=async()=>{const T=++N,I={varietyCode:f.varietyCode,cycle:"6",right:f.varietyStock===1?f.rightType:0,contractType:f.varietyStock?null:f.klineType,startTime:"1999-01-01 00:00:00",endTime:p.dayjs().format("YYYY-MM-DD 23:59:59"),deleteFirstNumber:f.deleteFirstNumber,withoutPermission:f.withoutPermission};if(y)return;const{body:Y}=await oe(c,I);y||T!==N||(Y?O.value=Y:O.value={data:[],mainIndicator:[],subIndicator:[],time:[]},o("init"))},L=W.j(T=>{if(!(T!=null&&T.dataZoomId)||y||!M)return;const I=M.getOption();if(I!=null&&I.dataZoom[0]){const{startValue:Y,endValue:A}=M.getOption().dataZoom[0],{time:x}=O.value,a=`${x[Y].split(" ")[0]} 00:00:00`,j=`${x[A].split(" ")[0]} 23:59:59`;console.log(`检测到拖拽轴被拖动, 时间区间: ${a} - ${j}`),u("change",{startTime:a,endTime:j})}},200),d=W.j(({startTime:T,endTime:I})=>{o("reset",{startTime:T,endTime:I})},100),o=(T,I)=>{if(!(y||!M))switch(T){case"init":{const{data:Y,time:A}=O.value,{xAxisData:x,lineData:a}=Y.reduce((l,m,k)=>(l.xAxisData.push(A[k].split(" ")[0]),l.lineData.push(m[1]),l),{xAxisData:[],lineData:[]}),j={grid:{height:0,left:"100px",right:"80px"},xAxis:{type:"category",data:x,show:!1},yAxis:{type:"value"},dataZoom:[{show:!0,startValue:0,endValue:0,textStyle:{color:"#ccc"}},{type:"inside",startValue:0,endValue:0}],series:[{data:a,type:"line"}]};if(M.setOption(j,!0),f.screenTimeRange.length){const[l,m]=f.screenTimeRange;d({startTime:l,endTime:m})}break}case"reset":{const{time:Y}=O.value,A=p.dayjs(I.startTime).format("YYYY-MM-DD"),x=p.dayjs(I.endTime).format("YYYY-MM-DD");let a=-1,j=-1;for(let l=0;l<Y.length;l++){const m=p.dayjs(Y[l]).format("YYYY-MM-DD");if(a!==-1&&j!==-1)break;a===-1&&(new Date(m)===new Date(A)?a=l:new Date(m)>new Date(A)&&(a=l-1)),j===-1&&(new Date(m)===new Date(x)?j=l:new Date(m)>new Date(x)&&(j=l-1))}j===-1&&(j=Y.length-1),M.dispatchAction({type:"dataZoom",startValue:a,endValue:j});break}}};return r.onMounted(()=>{r.nextTick(()=>{y||(M=ie.init(e.value),M.on("datazoom",L),D())})}),r.watch(()=>f.screenTimeRange,T=>{if(y||!M||T.length<2)return;const[I,Y]=T;d({startTime:I,endTime:Y})},{deep:!0}),r.onUnmounted(()=>{y=!0,N+=1,M==null||M.off("datazoom"),M==null||M.dispose(),M=null}),n({resize:W.j(()=>M==null?void 0:M.resize(),100)}),(T,I)=>(r.openBlock(),r.createElementBlock("div",{class:"chart",ref_key:"sliderChartRef",ref:e},null,512))}},Xe=Ne._export_sfc(Je,[["__scopeId","data-v-4a4659da"]]);const et={class:"main-chart"},tt={class:"indicator"},Mt={key:0,class:"screen-time-range"},at={key:0,class:"sub-chart"},nt={class:"indicator"},it={class:"title"},ot={key:1,class:"slider-chart"},rt={__name:"index",props:{varietyCode:{type:String,required:!0},varietyStock:{type:Number,required:!0},indicatorStore:{type:Object,required:!0},userKlineConfig:{type:Object,required:!0},cycle:{type:String,required:!0},sellBuy:{type:Number,default:1},rightType:{type:[Number,null],default:null},klineType:{type:[Number,null],default:null},incomeType:{type:Number,default:0},initTimeRange:{type:Array,required:!0},initialVisibleBars:{type:Number,default:0,validator:t=>Number.isInteger(t)&&t>=0&&t<=U.maxValueSpan},mainIndicator:{type:String,required:!0},tradeLog:{type:Array,default:()=>[]},netPositionData:{type:Array,default:()=>[]},tradeIncomeRateData:{type:Array,default:()=>[]},positionTime:{type:[String,null],default:null},syncBrushRange:{type:Object,default:()=>({cycleList:[],startTime:null,endTime:null})},deleteFirstNumber:{type:Number,default:1},withoutPermission:{type:Number,default:0}},setup(t,{expose:n}){const{round:i,formatValue:c}=W.x,{request:M}=r.inject("stConfig"),y=r.ref(!1),N=r.ref(!1),e=t;let u=!1,f=!1,O=!1,D=!1,L=null,d=null,o=null,T=!1,I=0;const Y=r.ref(null),A=r.ref(null),x=r.ref(null),a=r.ref({data:[],mainIndicator:[],subIndicator:[],time:[]}),j=r.ref(0),l=r.ref([]),m=r.ref(null),k=r.ref("VOL"),P=r.computed(()=>{const s=a.value.data[j.value];if(!s)return[{label:"开",value:"-"},{label:"高",value:"-"},{label:"低",value:"-"},{label:"收",value:"-"},{label:"额",value:"-"},{label:"涨跌",value:"-"}];const z=[{label:"开",value:s[0]},{label:"高",value:s[3]},{label:"低",value:s[2]},{label:"收",value:s[1]}];s[4]!==null&&z.push({label:"额",value:c(s[4])});let g;return s[6]>0?g="red":s[6]<0&&(g="green"),z.push({label:"涨跌",value:`${i(s[6])}%`,color:g}),z}),_=r.computed(()=>{var s,z;return((z=(s=a.value)==null?void 0:s.mainIndicator)==null?void 0:z.map(g=>({label:g.key,value:i(g.data[j.value]),color:g.color})))||[]}),B=r.computed(()=>{var s,z;return((z=(s=a.value)==null?void 0:s.subIndicator)==null?void 0:z.map(g=>({label:g.key,color:g.color,value:g.data[j.value]||"-"})))||[]}),X=()=>{if(!Y.value)return console.warn("[K线] 主图DOM元素不存在,取消初始化"),!1;if(o)return!0;try{return o=ie.init(Y.value),o.on("highlight",W.j(s=>{var z;s.dataIndex?j.value=s.dataIndex:j.value=((z=s.batch)==null?void 0:z[0].dataIndex)??-1},10)),o.on("datazoom",W.j(async()=>{var h;const{loadCheckCount:s}=U,{startValue:z,endValue:g}=((h=o.getOption())==null?void 0:h.dataZoom[0])??{};O===!1&&D===!1&&z<s&&await je("history"),u===!1&&f===!1&&g>a.value.time.length-s&&await je("new"),ze(),ye()})),o.on("globalout",()=>{if(o){const s=o.getOption();j.value=s.dataZoom[0].endValue}}),o.getZr().on("contextmenu",()=>{var s;m.value=(s=a.value)==null?void 0:s.time[j.value]}),window.addEventListener("keydown",de),e.userKlineConfig.enable_subChart&&A.value&&(d=ie.init(A.value),ie.connect([o,d])),Y.value&&(L=W.D(Y.value),L.listen(()=>{requestAnimationFrame(()=>{var s;o==null||o.resize(),d==null||d.resize(),(s=x.value)==null||s.resize()})})),!0}catch(s){return console.error("[st-klinePlus]: 初始化异常:",s),!1}},ee=async({startTime:s,endTime:z})=>{const g=++I;O=!1,D=!1,u=!1,f=!1;try{if(T)return;y.value=!0;const h={varietyCode:e.varietyCode,cycle:e.cycle,right:e.varietyStock===1?e.rightType:0,contractType:e.varietyStock?null:e.klineType,mainIndicatorList:e.indicatorStore.getIndicatorParams(e.mainIndicator),subIndicator:k.value,deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission},w=ve(e.cycle,e.initialVisibleBars);Object.assign(h,{startTime:p.dayjs(s).subtract(w.amount,w.unit).format("YYYY-MM-DD HH:mm:ss"),endTime:p.dayjs(z).add(w.amount,w.unit).format("YYYY-MM-DD HH:mm:ss")});const{body:b}=await oe(M,h);if(T||g!==I)return;if(a.value=b??{data:[],mainIndicator:[],subIndicator:[],time:[]},!a.value.time.length){te({startValue:0,endValue:0});return}te(Pe({time:a.value.time,startTime:s,endTime:z,initialVisibleBars:e.initialVisibleBars}))}finally{g===I&&(y.value=!1)}},je=async s=>{var K,Z;const z=I,{loadAddCount:g}=U;switch(s){case"history":{O=!0;const V={varietyCode:e.varietyCode,cycle:e.cycle,right:e.varietyStock===1?e.rightType:0,contractType:e.varietyStock?null:e.klineType,endTime:a.value.time[0],limit:g,mainIndicatorList:e.indicatorStore.getIndicatorParams(e.mainIndicator),subIndicator:k.value,deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission},{body:R}=await oe(M,V);if(T||z!==I){O=!1;return}a.value=Le(R,a.value),R.data.length<g&&(console.log("[K线] 获取更多数据: 左侧已全部获取完毕, 关闭"),D=!0),O=!1;break}case"new":{u=!0;const V={varietyCode:e.varietyCode,cycle:e.cycle,right:e.varietyStock===1?e.rightType:0,contractType:e.varietyStock?null:e.klineType,startTime:a.value.time[a.value.time.length-1],limit:g,mainIndicatorList:e.indicatorStore.getIndicatorParams(e.mainIndicator),subIndicator:k.value,deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission},{body:R}=await oe(M,V);if(T||z!==I){u=!1;return}a.value=Le(a.value,R),R.data.length<g&&(console.log("[K线] 获取更多数据: 右侧已全部获取完毕, 关闭"),f=!0),u=!1;break}}const{startValue:h,endValue:w}=((K=o.getOption())==null?void 0:K.dataZoom[0])??{},b=(Z=o.getOption())==null?void 0:Z.xAxis[0].data,E=a.value.time.findIndex(V=>new Date(V)>=new Date(b[h])),F=a.value.time.findIndex(V=>new Date(V)>=new Date(b[w]));te({startValue:E===-1?0:E,endValue:F===-1?a.value.time.length-1:F})},ze=()=>{var b;if(!a.value.time.length)return l.value=[];const{time:s}=a.value,{startValue:z,endValue:g}=((b=o.getOption())==null?void 0:b.dataZoom[0])??{},h=s[z],w=s[g];["6","7","8"].includes(e.cycle)?l.value=[p.dayjs(h).format("YYYY-MM-DD"),p.dayjs(w).format("YYYY-MM-DD")]:l.value=[h,w]},te=(s={startValue:0,endValue:0})=>{if(!X()||!o)return console.warn("[st-klinePlus]: 图表未准备就绪, 跳过绘制");if(!a.value.time.length)return console.warn("[st-klinePlus]: 图表无数据, 跳过绘制");const{maxValueSpan:g}=U,{time:h,data:w,mainIndicator:b}=a.value,E=s.endValue-s.startValue>g?s.endValue-g:s.startValue,F=s.endValue,K=b.map(C=>({name:C.key,type:"line",silent:!0,symbol:"none",data:C.data,lineStyle:{width:C.width||1},itemStyle:{color:C.color}})),{netPositionLineData:Z}=_e(e.netPositionData,e.cycle),{tradeIncomeRateLineData:V}=Be(e.tradeIncomeRateData,e.cycle,e.incomeType,h),{tradePointData:R,tradeLineData:$}=Ue(e.tradeLog,e.cycle,e.sellBuy,h,w,e.userKlineConfig);o.setOption({animation:!1,grid:{top:"40px",left:"60px",right:"20px",bottom:"20px"},dataZoom:[{type:"inside",startValue:E,endValue:F,minValueSpan:U.minValueSpan,maxValueSpan:U.maxValueSpan}],tooltip:{trigger:"axis",appendToBody:!0,confine:!0,axisPointer:{type:"cross",label:{rich:{},formatter:C=>{const{axisDimension:S,value:v}=C;return S==="x"?["6","7","8"].includes(e.cycle)?p.dayjs(v).format("YYYY-MM-DD"):v:String(i(v))}}},formatter:C=>{if(!(C!=null&&C.length))return null;let S="";if(C.forEach(Q=>{if(Q.seriesName==="netPosition"&&Q.data!==null&&(S+=`<div>资产持仓净值: ${Q.data[1]}</div>`),Q.componentSubType==="candlestick")if(e.sellBuy===0){const J=R.filter(H=>(H==null?void 0:H.coord[0])===Q.axisValue);let q=0,G=0;J.forEach(H=>{const{tradeType:Me,amount:ne}=H.customData;Me==="买"&&(q+=ne),Me==="卖"&&(G+=ne)}),q&&(S+=`<div>买: ${q}</div>`),G&&(S+=`<div>卖: ${G}</div>`)}else R.forEach(J=>{if((J==null?void 0:J.coord[0])===Q.axisValue){const{tradeType:q,amount:G,profitAndLoss:H,openPriceAll:Me,closePriceAll:ne}=J.customData;let ae=`<div>${q}: ${G}手</div>`;if(q.includes("开")&&(ae+=`<div>开仓价: ${(Me/G).toFixed(2)}</div>`),q.includes("平")){const ge=(Me/G).toFixed(2),Te=(ne/G).toFixed(2);ae+=`<div>平仓价: ${Te}</div>`,ae+=`<div>盈亏: ${H==null?void 0:H.toFixed(2)}</div>`,ae+=`<div>盈亏比率: ${((Te-ge)/ge*100).toFixed(2)} %</div>`}S+=ae}})}),!S)return null;let v=C[0].axisValue;return["6","7","8"].includes(e.cycle)&&(v=p.dayjs(v).format("YYYY-MM-DD")),`
|
|
2
2
|
<div>
|
|
3
|
-
<span style="font-weight: bold;">${
|
|
4
|
-
${
|
|
3
|
+
<span style="font-weight: bold;">${v}</span>
|
|
4
|
+
${S}
|
|
5
5
|
</div>
|
|
6
|
-
`}},xAxis:{show:!0,type:"category",data:
|
|
6
|
+
`}},xAxis:{show:!0,type:"category",data:h,splitLine:{show:!1},axisLabel:{formatter:C=>["6","7","8"].includes(e.cycle)?p.dayjs(C).format("YYYY-MM-DD"):C}},yAxis:[{type:"value",axisLine:{show:!0},splitLine:{show:!0,lineStyle:{type:"dotted",color:"#333"}},min:C=>{const{min:S,max:v}=C,Q=Math.abs((v-S)/10);return i(S-Q)},max:C=>{const{min:S,max:v}=C,Q=Math.abs((v-S)/10);return i(v+Q)}},{show:!1,min:C=>{const{min:S,max:v}=C,Q=Math.abs((v-S)/10);return S-Q},max:C=>{const{min:S,max:v}=C,Q=Math.abs((v-S)/10);return v+Q}}],series:[{type:"candlestick",name:"kLine",data:w,markPoint:{data:[...R]},markLine:{data:[...$]},itemStyle:{color:"transparent",color0:"#00FFFF",borderColor:"#FF0000",borderColor0:"#00FFFF",borderWidth:1}},{type:"line",name:"netPosition",data:Z,symbol:"none",yAxisIndex:1,connectNulls:!0,itemStyle:{color:"#666666"},lineStyle:{width:2}},{type:"line",name:"tradeIncomeRate",data:V,symbol:"none",yAxisIndex:1,connectNulls:!1,itemStyle:{color:"#666666"},lineStyle:{width:2}},...K],toolbox:{show:!1},brush:{xAxisIndex:"all",brushLink:"all",transformable:!1,outOfBrush:{colorAlpha:2},brushStyle:{color:"rgba(255,255,255,0.1)",borderColor:"rgba(255,255,255,0.4)"}}},!0),e.userKlineConfig.enable_subChart&&d.setOption(Fe(a.value,E,F),!0),ze(),ye(),j.value=F;{const C=[];if(e.userKlineConfig.enable_tradeLogBrush&&R.length){const[S,v]=[R[0].coord[0],R.at(-1).coord[0]],Q=re(h,[S,v],e.cycle);C.push({brushId:"开平仓范围",brushType:"lineX",xAxisIndex:0,coordRange:Q})}if(e.syncBrushRange.cycleList.includes(e.cycle)){const{startTime:S,endTime:v}=e.syncBrushRange,Q=re(h,[S,v],e.cycle);C.push({brushId:"同步刷选范围",brushType:"lineX",xAxisIndex:0,coordRange:Q,brushStyle:{fill:"rgba(64, 158, 255, 0.2)",stroke:"rgba(64, 158, 255, 0.8)",lineWidth:1}})}if(e.positionTime){const[S,v]=[p.dayjs(e.positionTime).format("YYYY-MM-DD 00:00:00"),p.dayjs(e.positionTime).format("YYYY-MM-DD 23:59:59")],Q=re(h,[S,v],e.cycle);C.push({brushId:"强制定位高亮",brushType:"lineX",xAxisIndex:0,coordRange:Q,brushStyle:{fill:"rgba(217, 179, 255, 0.2)",stroke:"rgba(217, 179, 255, 0.8)",lineWidth:1}})}o.dispatchAction({type:"brush",areas:C})}},ye=()=>{var R;if(!e.userKlineConfig.enable_showScreenMaxPrice||!a.value.time.length)return;const{data:s}=a.value,z=o.getOption(),{startValue:g,endValue:h}=(z==null?void 0:z.dataZoom[0])??{};let w=0,b=g;for(let $=g;$<=h;$++)Number(s[$][3])>=w&&(w=Number(s[$][3]),b=$);const E=((R=z.series)==null?void 0:R.filter($=>$.name!=="maxPrice"))||[],F=h-g,K=(b-g)/F;let Z="right",V=`←${w}`;K>.7?(Z="left",V=`${i(w)}→`):(Z="right",V=`←${i(w)}`),o==null||o.setOption({series:[...E,{type:"line",name:"maxPrice",data:[],lineStyle:{opacity:0},markPoint:{symbol:"circle",symbolSize:1,itemStyle:{color:"transparent",borderColor:"transparent"},z:100,zlevel:10,label:{show:!0,position:Z,formatter:V,color:"#fff",fontSize:12,padding:[4,-4]},data:[{name:"最高点",coord:[b,w]}]}}]},{notMerge:!1,replaceMerge:[]})},we=s=>{const[z,g]=Ye({startTime:s.startTime,endTime:s.endTime,cycle:e.cycle});ee({startTime:z,endTime:g})},de=({code:s,ctrlKey:z})=>{if(!o||!(z||N.value))return;const{xAxis:g,dataZoom:h}=o.getOption(),{data:w}=(g==null?void 0:g[0])??{data:[]};let{startValue:b,endValue:E}=(h==null?void 0:h[0])??{};if(w!=null&&w.length){switch(s){case"ArrowUp":{if(E-b<5)return;const F=Math.floor((E-b)/2)+1;b=b+F,E-b<5&&(b=E-4);break}case"ArrowDown":{const F=Math.min(500,E-b);b=b-F-1;break}case"ArrowLeft":{b>0&&(b-=1,E-=1),j.value>0&&(j.value-=1);break}case"ArrowRight":{E<w.length-1&&(b+=1,E+=1),N.value&&j.value<w.length-1&&(j.value+=1);break}}o.dispatchAction({type:"dataZoom",startValue:b,endValue:E}),o.dispatchAction({type:"updateAxisPointer",seriesIndex:0,dataIndex:N.value?j.value:null}),o.dispatchAction({type:"highlight",dataIndex:N.value?j.value:E})}};return r.onMounted(()=>{const[s,z]=e.initTimeRange;ee({startTime:s,endTime:z})}),r.watch(()=>[e.varietyCode,e.initTimeRange],()=>{const[s,z]=e.initTimeRange;ee({startTime:s,endTime:z})},{deep:!0}),r.watch(()=>[e.cycle],()=>{var w;const{startValue:s,endValue:z}=((w=o.getOption())==null?void 0:w.dataZoom[0])??{},[g,h]=Ye({startTime:a.value.time[s],endTime:a.value.time[z],cycle:e.cycle,type:"middle"});ee({startTime:g,endTime:h})},{deep:!0}),r.watch(()=>{var s,z;return[e.mainIndicator,k.value,(s=e.indicatorStore)==null?void 0:s.filterIndicator,(z=e.indicatorStore)==null?void 0:z.customIndicator,e.rightType,e.klineType]},()=>{var w;const{startValue:s,endValue:z}=((w=o.getOption())==null?void 0:w.dataZoom[0])??{},[g,h]=[a.value.time[s],a.value.time[z]];ee({startTime:g,endTime:h})},{deep:!0}),r.watch(()=>[e.sellBuy,e.tradeLog,e.netPositionData,e.incomeType,e.tradeIncomeRateData],()=>{var g;const{startValue:s,endValue:z}=((g=o.getOption())==null?void 0:g.dataZoom[0])??{};te({startValue:s,endValue:z})},{deep:!0}),r.onUnmounted(()=>{var s;T=!0,I+=1,o==null||o.off("highlight"),o==null||o.off("globalout"),o==null||o.off("datazoom"),(s=o==null?void 0:o.getZr())==null||s.off("contextmenu"),window.removeEventListener("keydown",de),o==null||o.dispose(),d==null||d.dispose(),L==null||L.dispose(),L=null}),n({screenTimeRange:l,contextmenuKlineTime:m,reDraw:()=>{var g;const{startValue:s,endValue:z}=((g=o.getOption())==null?void 0:g.dataZoom[0])??{};te({startValue:s,endValue:z})}}),(s,z)=>{const g=De.ElOption,h=De.ElSelect,w=Oe.ElEmpty,b=xe.vLoading;return r.withDirectives((r.openBlock(),r.createElementBlock("div",{class:"kline-plus",onMousemove:z[1]||(z[1]=E=>N.value=!0),onMouseout:z[2]||(z[2]=E=>N.value=!1)},[r.createElementVNode("div",et,[r.createElementVNode("div",tt,[r.createVNode(se,{data:P.value},null,8,["data"]),r.createVNode(se,{data:_.value},null,8,["data"])]),t.userKlineConfig.enable_showScreenTimeRange?(r.openBlock(),r.createElementBlock("span",Mt,r.toDisplayString(l.value[0])+" - "+r.toDisplayString(l.value[1]),1)):r.createCommentVNode("",!0),r.createElementVNode("div",{ref_key:"mainChartRef",ref:Y,class:"chart"},null,512)]),t.userKlineConfig.enable_subChart?(r.openBlock(),r.createElementBlock("div",at,[r.createElementVNode("div",nt,[r.createElementVNode("div",it,[r.createElementVNode("span",null,r.toDisplayString(k.value),1),r.createVNode(h,{modelValue:k.value,"onUpdate:modelValue":z[0]||(z[0]=E=>k.value=E),style:{width:"100px","margin-right":"4px",height:"25px"},size:"small",class:"element-dark","popper-class":"element-dark"},{default:r.withCtx(()=>[(r.openBlock(!0),r.createElementBlock(r.Fragment,null,r.renderList(t.indicatorStore.subIndicatorList,(E,F)=>(r.openBlock(),r.createBlock(g,{key:F,label:E.label,value:E.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),r.createVNode(se,{data:B.value},null,8,["data"])]),r.createElementVNode("div",{ref_key:"subChartRef",ref:A,class:"chart"},null,512)])):r.createCommentVNode("",!0),t.userKlineConfig.enable_sliderChart?(r.openBlock(),r.createElementBlock("div",ot,[r.createVNode(Xe,{ref_key:"sliderChartRef",ref:x,screenTimeRange:l.value,varietyCode:t.varietyCode,varietyStock:t.varietyStock,rightType:t.rightType,klineType:t.klineType,deleteFirstNumber:e.deleteFirstNumber,withoutPermission:e.withoutPermission,onChange:we},null,8,["screenTimeRange","varietyCode","varietyStock","rightType","klineType","deleteFirstNumber","withoutPermission"])])):r.createCommentVNode("",!0),a.value.time.length?r.createCommentVNode("",!0):(r.openBlock(),r.createBlock(w,{key:2,class:"empty",description:"暂无数据"}))],32)),[[b,y.value]])}}},st=Ne._export_sfc(rt,[["__scopeId","data-v-b551c038"]]),ct={install(t){t.component("st-klinePlus",st)}};module.exports=ct;
|