st-comp 0.0.165 → 0.0.166

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/es/KlinePlus.js CHANGED
@@ -5,9 +5,9 @@ import "./el-tag-6036f51c.js";
5
5
  import { E as ke, a as be } from "./el-select-d3bce4d1.js";
6
6
  import "./el-scrollbar-bcf29780.js";
7
7
  import "./el-popper-85365d5b.js";
8
- import { openBlock as R, createElementBlock as _, Fragment as Le, renderList as Ae, normalizeStyle as he, toDisplayString as te, inject as me, ref as P, onMounted as xe, nextTick as Ee, onUnmounted as we, computed as ce, watch as oe, withDirectives as ve, createElementVNode as $, createVNode as ee, createCommentVNode as Ne, withCtx as Se, createBlock as ge } from "vue";
8
+ import { openBlock as R, createElementBlock as _, Fragment as Le, renderList as Ae, normalizeStyle as he, toDisplayString as te, inject as me, ref as P, onMounted as xe, nextTick as Ee, watch as Ne, onUnmounted as we, computed as se, withDirectives as ve, createElementVNode as $, createVNode as ee, createCommentVNode as oe, withCtx as Se, createBlock as ge } from "vue";
9
9
  import { d as p } from "./dayjs.min-54a4e095.js";
10
- import * as se from "echarts";
10
+ import * as ce from "echarts";
11
11
  import { x as pe, G as Me, D as Qe } from "./index-7ed0999e.js";
12
12
  import { _ as ze } from "./_plugin-vue_export-helper-dad06003.js";
13
13
  import "./use-global-config-946f61a4.js";
@@ -29,22 +29,22 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
29
29
  loadCheckCount: 500,
30
30
  // 加载更多: 载入条目
31
31
  loadAddCount: 2e3
32
- }, Ve = (i, d) => {
33
- const r = i[d], l = d === 0 ? i[d] : i[d - 1];
34
- return r[0] === r[1] ? r[0] >= l[1] ? {
32
+ }, Ve = (n, d) => {
33
+ const l = n[d], j = d === 0 ? n[d] : n[d - 1];
34
+ return l[0] === l[1] ? l[0] >= j[1] ? {
35
35
  color: "transparent",
36
36
  borderColor: "#FF0000"
37
37
  } : {
38
38
  color: "#00FFFF"
39
- } : r[1] > r[0] ? {
39
+ } : l[1] > l[0] ? {
40
40
  color: "transparent",
41
41
  borderColor: "#FF0000"
42
42
  } : {
43
43
  color: "#00FFFF"
44
44
  };
45
- }, _e = (i, d, r) => {
46
- var z, A, I, g;
47
- const l = i.subIndicator.map((e) => {
45
+ }, _e = (n, d, l) => {
46
+ var u, A, I, D;
47
+ const j = n.subIndicator.map((e) => {
48
48
  if (e.series === "bar")
49
49
  return {
50
50
  name: "subMain",
@@ -53,16 +53,16 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
53
53
  type: "bar",
54
54
  silent: !0,
55
55
  symbol: "none",
56
- data: e.data.map((h, v) => e.seriesColor === "kline" ? {
57
- value: h,
58
- itemStyle: Ve(i.data, v)
56
+ data: e.data.map((E, v) => e.seriesColor === "kline" ? {
57
+ value: E,
58
+ itemStyle: Ve(n.data, v)
59
59
  } : e.seriesColor === "value" ? {
60
- value: h,
60
+ value: E,
61
61
  itemStyle: {
62
- color: h >= 0 ? "#FF0000" : "#00FFFF"
62
+ color: E >= 0 ? "#FF0000" : "#00FFFF"
63
63
  }
64
64
  } : {
65
- value: h,
65
+ value: E,
66
66
  itemStyle: {
67
67
  color: e.seriesColor
68
68
  }
@@ -97,7 +97,7 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
97
97
  {
98
98
  type: "inside",
99
99
  startValue: d,
100
- endValue: r,
100
+ endValue: l,
101
101
  maxValueSpan: J.maxValueSpan
102
102
  }
103
103
  ],
@@ -110,8 +110,8 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
110
110
  label: {
111
111
  rich: {},
112
112
  formatter: (e) => {
113
- const { axisDimension: h, value: v } = e;
114
- if (h === "x")
113
+ const { axisDimension: E, value: v } = e;
114
+ if (E === "x")
115
115
  return null;
116
116
  if (e.axisIndex === 1)
117
117
  return String(Fe(v));
@@ -120,7 +120,7 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
120
120
  },
121
121
  xAxis: {
122
122
  type: "category",
123
- data: i.time,
123
+ data: n.time,
124
124
  axisLine: {
125
125
  show: !0
126
126
  },
@@ -137,8 +137,8 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
137
137
  },
138
138
  {
139
139
  position: "left",
140
- min: ((z = i.subIndicator[0]) == null ? void 0 : z.leftYAxisRange) === "cover" ? (e) => e.min : null,
141
- max: ((A = i.subIndicator[0]) == null ? void 0 : A.leftYAxisRange) === "cover" ? (e) => e.max : null,
140
+ min: ((u = n.subIndicator[0]) == null ? void 0 : u.leftYAxisRange) === "cover" ? (e) => e.min : null,
141
+ max: ((A = n.subIndicator[0]) == null ? void 0 : A.leftYAxisRange) === "cover" ? (e) => e.max : null,
142
142
  splitNumber: 1,
143
143
  axisLine: {
144
144
  show: !0
@@ -153,8 +153,8 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
153
153
  },
154
154
  {
155
155
  position: "right",
156
- min: ((I = i.subIndicator[0]) == null ? void 0 : I.rightYAxisRange) === "cover" ? (e) => e.min : null,
157
- max: ((g = i.subIndicator[0]) == null ? void 0 : g.rightYAxisRange) === "cover" ? (e) => e.max : null,
156
+ min: ((I = n.subIndicator[0]) == null ? void 0 : I.rightYAxisRange) === "cover" ? (e) => e.min : null,
157
+ max: ((D = n.subIndicator[0]) == null ? void 0 : D.rightYAxisRange) === "cover" ? (e) => e.max : null,
158
158
  splitNumber: 1,
159
159
  axisLine: {
160
160
  show: !1
@@ -167,101 +167,101 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
167
167
  }
168
168
  }
169
169
  ],
170
- series: l
170
+ series: j
171
171
  };
172
- }, je = (i, d, r = "strict") => {
173
- let l = 0, z = i.length - 1, A = -1;
174
- for (; l <= z; ) {
175
- let I = Math.floor((l + z) / 2);
176
- if (r === "strict") {
177
- if (i[I] === d)
172
+ }, je = (n, d, l = "strict") => {
173
+ let j = 0, u = n.length - 1, A = -1;
174
+ for (; j <= u; ) {
175
+ let I = Math.floor((j + u) / 2);
176
+ if (l === "strict") {
177
+ if (n[I] === d)
178
178
  return I;
179
- i[I] < d ? l = I + 1 : z = I - 1;
179
+ n[I] < d ? j = I + 1 : u = I - 1;
180
180
  } else
181
- r === "gte" && (i[I] >= d ? (A = I, z = I - 1) : l = I + 1);
181
+ l === "gte" && (n[I] >= d ? (A = I, u = I - 1) : j = I + 1);
182
182
  }
183
- return r === "strict" ? -1 : A;
184
- }, Ie = (i, d) => ({
185
- data: [...i.data, ...d.data.slice(1)],
186
- mainIndicator: i.mainIndicator.map((r, l) => ({
187
- ...r,
188
- data: [...r.data, ...d.mainIndicator[l].data.slice(1)]
183
+ return l === "strict" ? -1 : A;
184
+ }, Ie = (n, d) => ({
185
+ data: [...n.data, ...d.data.slice(1)],
186
+ mainIndicator: n.mainIndicator.map((l, j) => ({
187
+ ...l,
188
+ data: [...l.data, ...d.mainIndicator[j].data.slice(1)]
189
189
  })),
190
- subIndicator: i.subIndicator.map((r, l) => ({
191
- ...r,
192
- data: [...r.data, ...d.subIndicator[l].data.slice(1)]
190
+ subIndicator: n.subIndicator.map((l, j) => ({
191
+ ...l,
192
+ data: [...l.data, ...d.subIndicator[j].data.slice(1)]
193
193
  })),
194
- time: [...i.time, ...d.time.slice(1)]
195
- }), Ye = (i, d, r) => {
196
- switch (r) {
194
+ time: [...n.time, ...d.time.slice(1)]
195
+ }), Ye = (n, d, l) => {
196
+ switch (l) {
197
197
  case "5": {
198
- let D = [
198
+ let g = [
199
199
  ...new Set(
200
- i.slice(-20).map((y) => {
201
- const n = new Date(y), j = String(n.getHours()).padStart(2, "0"), L = String(n.getMinutes()).padStart(2, "0"), k = String(n.getSeconds()).padStart(2, "0");
202
- return `${j}:${L}:${k}`;
200
+ n.slice(-20).map((z) => {
201
+ const t = new Date(z), N = String(t.getHours()).padStart(2, "0"), Y = String(t.getMinutes()).padStart(2, "0"), f = String(t.getSeconds()).padStart(2, "0");
202
+ return `${N}:${Y}:${f}`;
203
203
  })
204
204
  )
205
205
  ];
206
- D.includes("00:00:00") && (D.splice(D.indexOf("00:00:00"), 1), D.push("24:00:00")), D = D.sort((y, n) => (/* @__PURE__ */ new Date(`2000-01-30 ${y}`)).getTime() - (/* @__PURE__ */ new Date(`2000-01-30 ${n}`)).getTime());
207
- const c = new Date(d), N = c.getFullYear(), u = String(c.getMonth() + 1).padStart(2, "0"), a = String(c.getDate()).padStart(2, "0"), Y = String(c.getHours()).padStart(2, "0"), o = String(c.getMinutes()).padStart(2, "0"), M = String(c.getSeconds()).padStart(2, "0");
208
- if (`${Y}:${o}:${M}` == "00:00:00")
209
- return `${N}-${u}-${a} 01:00:00`;
206
+ g.includes("00:00:00") && (g.splice(g.indexOf("00:00:00"), 1), g.push("24:00:00")), g = g.sort((z, t) => (/* @__PURE__ */ new Date(`2000-01-30 ${z}`)).getTime() - (/* @__PURE__ */ new Date(`2000-01-30 ${t}`)).getTime());
207
+ const y = new Date(d), o = y.getFullYear(), s = String(y.getMonth() + 1).padStart(2, "0"), M = String(y.getDate()).padStart(2, "0"), L = String(y.getHours()).padStart(2, "0"), c = String(y.getMinutes()).padStart(2, "0"), i = String(y.getSeconds()).padStart(2, "0");
208
+ if (`${L}:${c}:${i}` == "00:00:00")
209
+ return `${o}-${s}-${M} 01:00:00`;
210
210
  {
211
- let y = null;
212
- for (let n = 0; n < D.length; n++) {
213
- const j = D[n].split(":");
214
- if (+`${j[0]}${j[1]}${j[2]}` >= +`${Y}${o}${M}`) {
215
- y = D[n];
211
+ let z = null;
212
+ for (let t = 0; t < g.length; t++) {
213
+ const N = g[t].split(":");
214
+ if (+`${N[0]}${N[1]}${N[2]}` >= +`${L}${c}${i}`) {
215
+ z = g[t];
216
216
  break;
217
217
  }
218
218
  }
219
- if (y === "24:00:00") {
220
- const n = new Date(d);
221
- n.setDate(n.getDate() + 1);
222
- const j = n.getFullYear(), L = String(n.getMonth() + 1).padStart(2, "0"), k = String(n.getDate()).padStart(2, "0");
223
- return `${j}-${L}-${k} 00:00:00`;
219
+ if (z === "24:00:00") {
220
+ const t = new Date(d);
221
+ t.setDate(t.getDate() + 1);
222
+ const N = t.getFullYear(), Y = String(t.getMonth() + 1).padStart(2, "0"), f = String(t.getDate()).padStart(2, "0");
223
+ return `${N}-${Y}-${f} 00:00:00`;
224
224
  }
225
- return `${N}-${u}-${a} ${y}`;
225
+ return `${o}-${s}-${M} ${z}`;
226
226
  }
227
227
  }
228
228
  case "6": {
229
- const D = new Date(d), c = D.getHours();
230
- if (c >= 4 && c < 21) {
231
- const N = D.getFullYear(), u = String(D.getMonth() + 1).padStart(2, "0"), a = String(D.getDate()).padStart(2, "0");
232
- return `${N}-${u}-${a} 09:00:00`;
229
+ const g = new Date(d), y = g.getHours();
230
+ if (y >= 4 && y < 21) {
231
+ const o = g.getFullYear(), s = String(g.getMonth() + 1).padStart(2, "0"), M = String(g.getDate()).padStart(2, "0");
232
+ return `${o}-${s}-${M} 09:00:00`;
233
233
  } else {
234
- const N = new Date(d);
235
- N.getHours() >= 21 && N.setDate(N.getDate() + 1);
236
- const u = N.getFullYear(), a = String(N.getMonth() + 1).padStart(2, "0"), Y = String(N.getDate()).padStart(2, "0"), o = `${u}-${a}-${Y} 09:00:00`, M = je(i, o, "gte");
237
- return M === -1 ? o : i[M];
234
+ const o = new Date(d);
235
+ o.getHours() >= 21 && o.setDate(o.getDate() + 1);
236
+ const s = o.getFullYear(), M = String(o.getMonth() + 1).padStart(2, "0"), L = String(o.getDate()).padStart(2, "0"), c = `${s}-${M}-${L} 09:00:00`, i = je(n, c, "gte");
237
+ return i === -1 ? c : n[i];
238
238
  }
239
239
  }
240
240
  case "7": {
241
- const D = new Date(d), c = new Date(D);
242
- c.setDate(D.getDate() - D.getDay()), c.setHours(0, 0, 0, 0);
243
- const N = new Date(c);
244
- N.setDate(c.getDate() + 5), N.setHours(23, 59, 59, 0);
245
- const u = new Date(c);
246
- u.setDate(c.getDate() + 12), u.setHours(9, 0, 0, 0);
247
- const a = D <= N ? N : u, Y = a.getFullYear(), o = String(a.getMonth() + 1).padStart(2, "0"), M = String(a.getDate()).padStart(2, "0");
248
- return `${Y}-${o}-${M} 09:00:00`;
241
+ const g = new Date(d), y = new Date(g);
242
+ y.setDate(g.getDate() - g.getDay()), y.setHours(0, 0, 0, 0);
243
+ const o = new Date(y);
244
+ o.setDate(y.getDate() + 5), o.setHours(23, 59, 59, 0);
245
+ const s = new Date(y);
246
+ s.setDate(y.getDate() + 12), s.setHours(9, 0, 0, 0);
247
+ const M = g <= o ? o : s, L = M.getFullYear(), c = String(M.getMonth() + 1).padStart(2, "0"), i = String(M.getDate()).padStart(2, "0");
248
+ return `${L}-${c}-${i} 09:00:00`;
249
249
  }
250
250
  case "8": {
251
- const D = new Date(d), c = new Date(D.getFullYear(), D.getMonth() + 1, 1), N = new Date(c);
252
- N.setDate(c.getDate() - 1), N.setHours(9, 0, 0, 0);
253
- const u = N.getFullYear(), a = String(N.getMonth() + 1).padStart(2, "0"), Y = String(N.getDate()).padStart(2, "0");
254
- return `${u}-${a}-${Y} 09:00:00`;
251
+ const g = new Date(d), y = new Date(g.getFullYear(), g.getMonth() + 1, 1), o = new Date(y);
252
+ o.setDate(y.getDate() - 1), o.setHours(9, 0, 0, 0);
253
+ const s = o.getFullYear(), M = String(o.getMonth() + 1).padStart(2, "0"), L = String(o.getDate()).padStart(2, "0");
254
+ return `${s}-${M}-${L} 09:00:00`;
255
255
  }
256
256
  }
257
- const l = new Date(d), z = l.getFullYear(), A = l.getMonth(), I = l.getDate(), g = l.getHours(), e = l.getMinutes(), h = l.getSeconds(), v = (D) => {
258
- let c = null;
259
- const N = Math.floor(e / D);
260
- e % D === 0 && h === 0 ? c = e : c = (N + 1) * D;
261
- const u = Math.floor(c / 60), a = g + u, Y = c % 60, o = new Date(z, A, I, a, Y, 0), M = (S) => String(S).padStart(2, "0"), y = o.getFullYear(), n = M(o.getMonth() + 1), j = M(o.getDate()), L = M(o.getHours()), k = M(o.getMinutes());
262
- return `${y}-${n}-${j} ${L}:${k}:00`;
257
+ const j = new Date(d), u = j.getFullYear(), A = j.getMonth(), I = j.getDate(), D = j.getHours(), e = j.getMinutes(), E = j.getSeconds(), v = (g) => {
258
+ let y = null;
259
+ const o = Math.floor(e / g);
260
+ e % g === 0 && E === 0 ? y = e : y = (o + 1) * g;
261
+ const s = Math.floor(y / 60), M = D + s, L = y % 60, c = new Date(u, A, I, M, L, 0), i = (S) => String(S).padStart(2, "0"), z = c.getFullYear(), t = i(c.getMonth() + 1), N = i(c.getDate()), Y = i(c.getHours()), f = i(c.getMinutes());
262
+ return `${z}-${t}-${N} ${Y}:${f}:00`;
263
263
  };
264
- switch (r) {
264
+ switch (l) {
265
265
  case "1":
266
266
  return v(1);
267
267
  case "2":
@@ -271,61 +271,61 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
271
271
  case "4":
272
272
  return v(30);
273
273
  default:
274
- throw new Error(`Unsupported cycle: ${d} ${r}`);
274
+ throw new Error(`Unsupported cycle: ${d} ${l}`);
275
275
  }
276
- }, re = (i, d, r) => {
277
- let l = null, z = null;
276
+ }, re = (n, d, l) => {
277
+ let j = null, u = null;
278
278
  const [A, I] = d;
279
- switch (r) {
279
+ switch (l) {
280
280
  case "6": {
281
- l = i.find((g) => new Date(p(g).format("YYYY-MM-DD 23:59:59")).getTime() >= new Date(A).getTime()), z = i.findLast((g) => new Date(p(g).format("YYYY-MM-DD 00:00:00")).getTime() <= new Date(I).getTime());
281
+ j = n.find((D) => new Date(p(D).format("YYYY-MM-DD 23:59:59")).getTime() >= new Date(A).getTime()), u = n.findLast((D) => new Date(p(D).format("YYYY-MM-DD 00:00:00")).getTime() <= new Date(I).getTime());
282
282
  break;
283
283
  }
284
284
  case "7": {
285
- const g = p(I).endOf("week").add(1, "day").format("YYYY-MM-DD 23:59:59");
286
- l = i.find((e) => p(e).endOf("week").add(1, "day").format("YYYY-MM-DD") === p(A).endOf("week").add(1, "day").format("YYYY-MM-DD")), z = i.findLast((e) => new Date(e).getTime() <= new Date(g).getTime());
285
+ const D = p(I).endOf("week").add(1, "day").format("YYYY-MM-DD 23:59:59");
286
+ j = n.find((e) => p(e).endOf("week").add(1, "day").format("YYYY-MM-DD") === p(A).endOf("week").add(1, "day").format("YYYY-MM-DD")), u = n.findLast((e) => new Date(e).getTime() <= new Date(D).getTime());
287
287
  break;
288
288
  }
289
289
  case "8": {
290
- l = i.find((g) => p(g).format("YYYY-MM") === p(A).format("YYYY-MM")), z = i.findLast((g) => p(g).format("YYYY-MM") === p(I).format("YYYY-MM"));
290
+ j = n.find((D) => p(D).format("YYYY-MM") === p(A).format("YYYY-MM")), u = n.findLast((D) => p(D).format("YYYY-MM") === p(I).format("YYYY-MM"));
291
291
  break;
292
292
  }
293
293
  default:
294
- l = i.find((g) => new Date(g).getTime() >= new Date(A).getTime()), z = i.findLast((g) => new Date(g).getTime() <= new Date(I).getTime());
294
+ j = n.find((D) => new Date(D).getTime() >= new Date(A).getTime()), u = n.findLast((D) => new Date(D).getTime() <= new Date(I).getTime());
295
295
  }
296
- return [l, z];
297
- }, Ge = (i) => {
296
+ return [j, u];
297
+ }, Ge = (n) => {
298
298
  const d = [];
299
- return i.reduce((r, l) => {
300
- const z = `${l.coord[0]}+${l.label.position}`, A = l.label.position === "top" ? -16 : 16, I = r.get(z);
301
- return I ? (r.set(z, I + 1), l.symbolOffset[1] = A * (I + 1)) : (r.set(z, 1), l.symbolOffset[1] = l.label.position === "top" ? -7 : 7), d.push(l), r;
299
+ return n.reduce((l, j) => {
300
+ const u = `${j.coord[0]}+${j.label.position}`, A = j.label.position === "top" ? -16 : 16, I = l.get(u);
301
+ return I ? (l.set(u, I + 1), j.symbolOffset[1] = A * (I + 1)) : (l.set(u, 1), j.symbolOffset[1] = j.label.position === "top" ? -7 : 7), d.push(j), l;
302
302
  }, /* @__PURE__ */ new Map()), d;
303
- }, Ze = (i, d, r, l, z) => {
304
- const A = (c, N) => {
305
- const { direction: u = "", tradeAction: a = "", tradeType: Y = "" } = c, o = Y ?? u + a;
306
- switch (N) {
303
+ }, Ze = (n, d, l, j, u) => {
304
+ const A = (y, o) => {
305
+ const { direction: s = "", tradeAction: M = "", tradeType: L = "" } = y, c = L ?? s + M;
306
+ switch (o) {
307
307
  case 0:
308
308
  return (/* @__PURE__ */ new Map([
309
309
  ["开多", "买"],
310
310
  ["平多", "卖"],
311
311
  ["开空", "卖"],
312
312
  ["平空", "买"]
313
- ])).get(o);
313
+ ])).get(c);
314
314
  case 1:
315
- return Y ?? u + a;
315
+ return L ?? s + M;
316
316
  }
317
- }, I = (c, N, u, a) => c.reduce((Y, o) => {
317
+ }, I = (y, o, s, M) => y.reduce((L, c) => {
318
318
  var S;
319
- const M = A(o, 0), y = c.filter((U) => U.klineTime === o.klineTime), n = [...new Set(y.map((U) => A(U, 0)))];
320
- let j = null;
321
- n.length > 1 ? j = "image://" + new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", self.location).href : j = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Ue, "./images/sell.svg": Pe, "./images/t.svg": Re }))[`./images/${M === "买" ? "buy" : "sell"}.svg`], self.location).href;
322
- const L = je(u, o.klineTime), k = (S = a[L]) == null ? void 0 : S[3];
323
- return N.forEach((U) => {
319
+ const i = A(c, 0), z = y.filter((U) => U.klineTime === c.klineTime), t = [...new Set(z.map((U) => A(U, 0)))];
320
+ let N = null;
321
+ t.length > 1 ? N = "image://" + new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", self.location).href : N = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Ue, "./images/sell.svg": Pe, "./images/t.svg": Re }))[`./images/${i === "买" ? "buy" : "sell"}.svg`], self.location).href;
322
+ const Y = je(s, c.klineTime), f = (S = M[Y]) == null ? void 0 : S[3];
323
+ return o.forEach((U) => {
324
324
  var Z;
325
- const K = M === "买" ? 0 : 1;
326
- U.range[K] === o.klineTime && (U.rangeValue[K] = (Z = a[L]) == null ? void 0 : Z[M === "买" ? 2 : 3]);
327
- }), Y.push({
328
- symbol: j,
325
+ const K = i === "买" ? 0 : 1;
326
+ U.range[K] === c.klineTime && (U.rangeValue[K] = (Z = M[Y]) == null ? void 0 : Z[i === "买" ? 2 : 3]);
327
+ }), L.push({
328
+ symbol: N,
329
329
  symbolSize: 25,
330
330
  symbolRotate: 0,
331
331
  symbolOffset: [0, 0],
@@ -333,106 +333,106 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
333
333
  show: !1,
334
334
  position: "top"
335
335
  },
336
- coord: [o.klineTime, k],
336
+ coord: [c.klineTime, f],
337
337
  silent: !0,
338
338
  animation: !1,
339
339
  customData: {
340
- tradeType: M,
341
- amount: o.amount,
340
+ tradeType: i,
341
+ amount: c.amount,
342
342
  // 手数
343
- part: o.part,
343
+ part: c.part,
344
344
  // 份数
345
- profitAndLoss: o.profitAndLoss,
345
+ profitAndLoss: c.profitAndLoss,
346
346
  // 盈亏
347
- openPriceAll: o.openPriceAll,
347
+ openPriceAll: c.openPriceAll,
348
348
  // 开仓价
349
- closePriceAll: o.closePriceAll
349
+ closePriceAll: c.closePriceAll
350
350
  // 收仓价
351
351
  }
352
- }), Y;
353
- }, []), g = (c, N, u, a) => c.reduce((Y, o, M) => {
354
- var k, S;
355
- const y = A(o, 1), n = ["开多", "开空"].includes(y) ? "top" : "bottom", j = je(u, o.klineTime), L = n === "top" ? (k = a[j]) == null ? void 0 : k[3] : (S = a[j]) == null ? void 0 : S[2];
356
- return N.forEach((U) => {
357
- (n === "top" ? U.range[0] : U.range[1]) === o.klineTime && (U.rangeValue[n === "top" ? 0 : 1] = L);
358
- }), Y.push({
352
+ }), L;
353
+ }, []), D = (y, o, s, M) => y.reduce((L, c, i) => {
354
+ var f, S;
355
+ const z = A(c, 1), t = ["开多", "开空"].includes(z) ? "top" : "bottom", N = je(s, c.klineTime), Y = t === "top" ? (f = M[N]) == null ? void 0 : f[3] : (S = M[N]) == null ? void 0 : S[2];
356
+ return o.forEach((U) => {
357
+ (t === "top" ? U.range[0] : U.range[1]) === c.klineTime && (U.rangeValue[t === "top" ? 0 : 1] = Y);
358
+ }), L.push({
359
359
  symbol: "triangle",
360
360
  symbolSize: [10, 12],
361
- symbolRotate: n === "top" ? 180 : 0,
361
+ symbolRotate: t === "top" ? 180 : 0,
362
362
  symbolOffset: [0, 0],
363
363
  label: {
364
364
  show: !0,
365
- position: n,
365
+ position: t,
366
366
  color: "#fff",
367
- formatter: `${y} ${n === "top" ? "+" : "-"} ${o.amount}手 ${o.part ? `(${o.part}份)` : ""}`
367
+ formatter: `${z} ${t === "top" ? "+" : "-"} ${c.amount}手 ${c.part ? `(${c.part}份)` : ""}`
368
368
  },
369
- itemStyle: { color: n === "top" ? "#FF0000" : "#389e0d" },
370
- coord: [o.klineTime, L],
369
+ itemStyle: { color: t === "top" ? "#FF0000" : "#389e0d" },
370
+ coord: [c.klineTime, Y],
371
371
  silent: !0,
372
372
  animation: !1,
373
373
  customData: {
374
- tradeType: y,
375
- amount: o.amount,
374
+ tradeType: z,
375
+ amount: c.amount,
376
376
  // 手数
377
- part: o.part,
377
+ part: c.part,
378
378
  // 份数
379
- profitAndLoss: o.profitAndLoss,
379
+ profitAndLoss: c.profitAndLoss,
380
380
  // 盈亏
381
- openPriceAll: o.openPriceAll,
381
+ openPriceAll: c.openPriceAll,
382
382
  // 开仓价
383
- closePriceAll: o.closePriceAll
383
+ closePriceAll: c.closePriceAll
384
384
  // 收仓价
385
385
  }
386
- }), Y;
387
- }, []), e = (c, N, u) => {
388
- const { basePointData: a, baseLineData: Y } = c.reduce(
389
- (n, j) => {
390
- const L = {
391
- pointTime: j.openTime,
386
+ }), L;
387
+ }, []), e = (y, o, s) => {
388
+ const { basePointData: M, baseLineData: L } = y.reduce(
389
+ (t, N) => {
390
+ const Y = {
391
+ pointTime: N.openTime,
392
392
  // 交易点位的真实时间
393
- klineTime: Ye(u, j.openTime, N),
393
+ klineTime: Ye(s, N.openTime, o),
394
394
  // 交易点位的K线时间
395
395
  tradeAction: "开",
396
396
  // 交易行为
397
- tradeDirection: j.tradeDirection ? "空" : "多",
397
+ tradeDirection: N.tradeDirection ? "空" : "多",
398
398
  // 交易方向 1:空, 0:多
399
- tradeType: `开${j.tradeDirection ? "空" : "多"}`,
399
+ tradeType: `开${N.tradeDirection ? "空" : "多"}`,
400
400
  part: null,
401
401
  // 份数,
402
- amount: j.tradeVolume,
402
+ amount: N.tradeVolume,
403
403
  // 手数
404
- profitAndLoss: j.profitAndLoss,
404
+ profitAndLoss: N.profitAndLoss,
405
405
  // 盈亏
406
- openPriceAll: j.openPrice * j.tradeVolume,
406
+ openPriceAll: N.openPrice * N.tradeVolume,
407
407
  // 开仓价格
408
- closePriceAll: j.closePrice * j.tradeVolume
408
+ closePriceAll: N.closePrice * N.tradeVolume
409
409
  // 平仓价格
410
- }, k = {
411
- pointTime: j.closeTime,
410
+ }, f = {
411
+ pointTime: N.closeTime,
412
412
  // 交易点位的真实时间
413
- klineTime: Ye(u, j.closeTime, N),
413
+ klineTime: Ye(s, N.closeTime, o),
414
414
  // 交易点位的K线时间
415
415
  tradeAction: "平",
416
416
  // 交易行为
417
- tradeDirection: j.tradeDirection ? "空" : "多",
417
+ tradeDirection: N.tradeDirection ? "空" : "多",
418
418
  // 交易方向 1:空, 0:多
419
- tradeType: `平${j.tradeDirection ? "空" : "多"}`,
419
+ tradeType: `平${N.tradeDirection ? "空" : "多"}`,
420
420
  part: null,
421
421
  // 份数,
422
- amount: j.tradeVolume,
422
+ amount: N.tradeVolume,
423
423
  // 手数
424
- profitAndLoss: j.profitAndLoss,
424
+ profitAndLoss: N.profitAndLoss,
425
425
  // 盈亏
426
- openPriceAll: j.openPrice * j.tradeVolume,
426
+ openPriceAll: N.openPrice * N.tradeVolume,
427
427
  // 开仓价格
428
- closePriceAll: j.closePrice * j.tradeVolume
428
+ closePriceAll: N.closePrice * N.tradeVolume
429
429
  // 平仓价格
430
430
  };
431
- return n.basePointData.push(L, k), n.baseLineData.push({
432
- range: [L.klineTime, k.klineTime],
431
+ return t.basePointData.push(Y, f), t.baseLineData.push({
432
+ range: [Y.klineTime, f.klineTime],
433
433
  rangeValue: [null, null],
434
- color: k.profitAndLoss > 0 ? "#FF0000" : "#389e0d"
435
- }), n;
434
+ color: f.profitAndLoss > 0 ? "#FF0000" : "#389e0d"
435
+ }), t;
436
436
  },
437
437
  {
438
438
  basePointData: [],
@@ -440,47 +440,47 @@ const Ue = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
440
440
  baseLineData: []
441
441
  // 连线数据
442
442
  }
443
- ), M = [...a.reduce((n, j) => {
444
- const L = JSON.parse(JSON.stringify(j)), k = L.klineTime + L.tradeType;
445
- if (n.has(k)) {
446
- const S = n.get(k);
447
- L.amount += S.amount, L.part += S.part, L.profitAndLoss += S.profitAndLoss, L.openPriceAll += S.openPriceAll, L.closePriceAll += S.closePriceAll;
443
+ ), i = [...M.reduce((t, N) => {
444
+ const Y = JSON.parse(JSON.stringify(N)), f = Y.klineTime + Y.tradeType;
445
+ if (t.has(f)) {
446
+ const S = t.get(f);
447
+ Y.amount += S.amount, Y.part += S.part, Y.profitAndLoss += S.profitAndLoss, Y.openPriceAll += S.openPriceAll, Y.closePriceAll += S.closePriceAll;
448
448
  }
449
- return n.set(k, L), n;
450
- }, /* @__PURE__ */ new Map([])).values()].sort((n, j) => new Date(n.klineTime) - new Date(j.klineTime)), y = Y.filter(({ range: n }) => n[0] !== n[1]);
451
- return { pointData: M, lineData: y };
452
- }, { pointData: h, lineData: v } = e(i, d, l);
449
+ return t.set(f, Y), t;
450
+ }, /* @__PURE__ */ new Map([])).values()].sort((t, N) => new Date(t.klineTime) - new Date(N.klineTime)), z = L.filter(({ range: t }) => t[0] !== t[1]);
451
+ return { pointData: i, lineData: z };
452
+ }, { pointData: E, lineData: v } = e(n, d, j);
453
453
  return {
454
- tradePointData: (r === 0 ? I : g)(h, v, l, z),
455
- tradeLineData: v.map(({ range: c, rangeValue: N, color: u }) => [
454
+ tradePointData: (l === 0 ? I : D)(E, v, j, u),
455
+ tradeLineData: v.map(({ range: y, rangeValue: o, color: s }) => [
456
456
  {
457
457
  symbol: "none",
458
- coord: [c[0], N[0]],
459
- lineStyle: { color: u, width: 2, type: "solid" },
458
+ coord: [y[0], o[0]],
459
+ lineStyle: { color: s, width: 2, type: "solid" },
460
460
  silent: !0,
461
461
  animation: !1
462
462
  },
463
463
  {
464
464
  symbol: "none",
465
- coord: [c[1], N[1]],
465
+ coord: [y[1], o[1]],
466
466
  silent: !0,
467
467
  animation: !1
468
468
  }
469
469
  ])
470
470
  };
471
- }, Be = (i, d) => {
472
- let r = [];
471
+ }, Be = (n, d) => {
472
+ let l = [];
473
473
  if (Number(d) <= 5)
474
- r = i.map(({ tradeDate: l, netPositionValue: z }) => [p(l).format("YYYY-MM-DD HH:mm:ss"), z]);
474
+ l = n.map(({ tradeDate: j, netPositionValue: u }) => [p(j).format("YYYY-MM-DD HH:mm:ss"), u]);
475
475
  else if (Number(d) === 6) {
476
- const l = i.reduce((z, A) => {
477
- const { tradeDate: I, netPositionValue: g } = A;
478
- return z.set(p(I).format("YYYY-MM-DD 09:00:00"), g), z;
476
+ const j = n.reduce((u, A) => {
477
+ const { tradeDate: I, netPositionValue: D } = A;
478
+ return u.set(p(I).format("YYYY-MM-DD 09:00:00"), D), u;
479
479
  }, /* @__PURE__ */ new Map());
480
- r = Array.from(l, ([z, A]) => [z, A]);
480
+ l = Array.from(j, ([u, A]) => [u, A]);
481
481
  } else
482
- r = [];
483
- return { netPositionLineData: r };
482
+ l = [];
483
+ return { netPositionLineData: l };
484
484
  };
485
485
  const He = { class: "tips" }, $e = {
486
486
  __name: "Tips",
@@ -490,19 +490,21 @@ const He = { class: "tips" }, $e = {
490
490
  default: () => []
491
491
  }
492
492
  },
493
- setup(i) {
494
- return (d, r) => (R(), _("div", He, [
495
- (R(!0), _(Le, null, Ae(i.data, (l, z) => (R(), _("span", {
496
- key: z,
493
+ setup(n) {
494
+ return (d, l) => (R(), _("div", He, [
495
+ (R(!0), _(Le, null, Ae(n.data, (j, u) => (R(), _("span", {
496
+ key: u,
497
497
  class: "item",
498
- style: he({ color: l.color })
499
- }, te(l.label) + " " + te(l.value), 5))), 128))
498
+ style: he({ color: j.color })
499
+ }, te(j.label) + " " + te(j.value), 5))), 128))
500
500
  ]));
501
501
  }
502
502
  }, le = /* @__PURE__ */ ze($e, [["__scopeId", "data-v-df1caefe"]]);
503
503
  const We = {
504
504
  __name: "SliderChart",
505
505
  props: {
506
+ // K线当屏时间范围
507
+ screenTimeRange: { type: Array, required: !0 },
506
508
  // 品种代码
507
509
  varietyCode: { type: String, required: !0 },
508
510
  // 品种市场类型: 0-期货, 1-股票, 2-期权
@@ -513,55 +515,57 @@ const We = {
513
515
  klineType: { type: Number, required: !0 }
514
516
  },
515
517
  emits: ["change"],
516
- setup(i, { expose: d, emit: r }) {
517
- const { request: l } = me("stConfig");
518
- let z = null;
519
- const A = P(null), I = r, g = i, e = P({
518
+ setup(n, { expose: d, emit: l }) {
519
+ const { request: j } = me("stConfig");
520
+ let u = null;
521
+ const A = P(null), I = l, D = n, e = P({
520
522
  data: [],
521
523
  // <[开 收 低 高 成交额 涨跌值 涨跌百分比]>
522
524
  mainIndicator: [],
523
525
  subIndicator: [],
524
526
  time: []
525
- }), h = async () => {
526
- const c = {
527
- varietyCode: g.varietyCode,
527
+ }), E = async () => {
528
+ const o = {
529
+ varietyCode: D.varietyCode,
528
530
  cycle: "6",
529
531
  startTime: "1999-01-01 00:00:00",
530
532
  endTime: p().format("YYYY-MM-DD 23:59:59"),
531
533
  deleteFirstNumber: 1
532
534
  // 后端要求标识
533
535
  };
534
- switch (g.varietyStock) {
536
+ switch (D.varietyStock) {
535
537
  case 0: {
536
- Object.assign(c, {
537
- contractType: g.klineType
538
+ Object.assign(o, {
539
+ contractType: D.klineType
538
540
  });
539
541
  break;
540
542
  }
541
543
  case 1: {
542
- Object.assign(c, {
543
- right: g.rightType
544
+ Object.assign(o, {
545
+ right: D.rightType
544
546
  });
545
547
  break;
546
548
  }
547
549
  }
548
- const { body: N } = await l.post("/middleLayer/kline/getKline", c);
549
- N ? e.value = N : e.value = { data: [], mainIndicator: [], subIndicator: [], time: [] }, D("init");
550
- }, v = Me((c) => {
551
- if (!c.dataZoomId)
550
+ const { body: s } = await j.post("/middleLayer/kline/getKline", o);
551
+ s ? e.value = s : e.value = { data: [], mainIndicator: [], subIndicator: [], time: [] }, y("init");
552
+ }, v = Me((o) => {
553
+ if (!o.dataZoomId)
552
554
  return;
553
- const N = z.getOption();
554
- if (N != null && N.dataZoom[0]) {
555
- const { startValue: u, endValue: a } = z.getOption().dataZoom[0], { time: Y } = e.value, o = `${Y[u].split(" ")[0]} 00:00:00`, M = `${Y[a].split(" ")[0]} 23:59:59`;
556
- console.log(`检测到拖拽轴被拖动, 时间区间: ${o} - ${M}`), I("change", { startTime: o, endTime: M });
555
+ const s = u.getOption();
556
+ if (s != null && s.dataZoom[0]) {
557
+ const { startValue: M, endValue: L } = u.getOption().dataZoom[0], { time: c } = e.value, i = `${c[M].split(" ")[0]} 00:00:00`, z = `${c[L].split(" ")[0]} 23:59:59`;
558
+ console.log(`检测到拖拽轴被拖动, 时间区间: ${i} - ${z}`), I("change", { startTime: i, endTime: z });
557
559
  }
558
- }, 200), D = (c, N) => {
559
- switch (c) {
560
+ }, 200), g = Me(({ startTime: o, endTime: s }) => {
561
+ y("reset", { startTime: o, endTime: s });
562
+ }, 100), y = (o, s) => {
563
+ switch (o) {
560
564
  case "init": {
561
- const { data: u, time: a } = e.value, { xAxisData: Y, lineData: o } = u.reduce(
562
- (y, n, j) => (y.xAxisData.push(a[j].split(" ")[0]), y.lineData.push(n[1]), y),
565
+ const { data: M, time: L } = e.value, { xAxisData: c, lineData: i } = M.reduce(
566
+ (t, N, Y) => (t.xAxisData.push(L[Y].split(" ")[0]), t.lineData.push(N[1]), t),
563
567
  { xAxisData: [], lineData: [] }
564
- ), M = {
568
+ ), z = {
565
569
  grid: {
566
570
  height: 0,
567
571
  left: "100px",
@@ -569,7 +573,7 @@ const We = {
569
573
  },
570
574
  xAxis: {
571
575
  type: "category",
572
- data: Y,
576
+ data: c,
573
577
  show: !1
574
578
  },
575
579
  yAxis: {
@@ -592,27 +596,30 @@ const We = {
592
596
  ],
593
597
  series: [
594
598
  {
595
- data: o,
599
+ data: i,
596
600
  type: "line"
597
601
  }
598
602
  ]
599
603
  };
600
- z.setOption(M, !0);
604
+ if (u.setOption(z, !0), D.screenTimeRange.length) {
605
+ const [t, N] = D.screenTimeRange;
606
+ g({ startTime: t, endTime: N });
607
+ }
601
608
  break;
602
609
  }
603
610
  case "reset": {
604
- const { time: u } = e.value, a = p(N.startTime).format("YYYY-MM-DD"), Y = p(N.endTime).format("YYYY-MM-DD");
605
- let o = -1, M = -1;
606
- for (let y = 0; y < u.length; y++) {
607
- const n = p(u[y]).format("YYYY-MM-DD");
608
- if (o !== -1 && M !== -1)
611
+ const { time: M } = e.value, L = p(s.startTime).format("YYYY-MM-DD"), c = p(s.endTime).format("YYYY-MM-DD");
612
+ let i = -1, z = -1;
613
+ for (let t = 0; t < M.length; t++) {
614
+ const N = p(M[t]).format("YYYY-MM-DD");
615
+ if (i !== -1 && z !== -1)
609
616
  break;
610
- o === -1 && (new Date(n) === new Date(a) ? o = y : new Date(n) > new Date(a) && (o = y - 1)), M === -1 && (new Date(n) === new Date(Y) ? M = y : new Date(n) > new Date(Y) && (M = y - 1));
617
+ i === -1 && (new Date(N) === new Date(L) ? i = t : new Date(N) > new Date(L) && (i = t - 1)), z === -1 && (new Date(N) === new Date(c) ? z = t : new Date(N) > new Date(c) && (z = t - 1));
611
618
  }
612
- M === -1 && (M = u.length - 1), z.dispatchAction({
619
+ z === -1 && (z = M.length - 1), u.dispatchAction({
613
620
  type: "dataZoom",
614
- startValue: o,
615
- endValue: M
621
+ startValue: i,
622
+ endValue: z
616
623
  });
617
624
  break;
618
625
  }
@@ -620,23 +627,26 @@ const We = {
620
627
  };
621
628
  return xe(() => {
622
629
  Ee(() => {
623
- z = se.init(A.value), z.on("datazoom", v), h();
630
+ u = ce.init(A.value), u.on("datazoom", v), E();
624
631
  });
625
- }), we(() => {
626
- z.off("datazoom"), z.dispose();
632
+ }), Ne(
633
+ () => D.screenTimeRange,
634
+ (o) => {
635
+ const [s, M] = o;
636
+ g({ startTime: s, endTime: M });
637
+ },
638
+ { deep: !0 }
639
+ ), we(() => {
640
+ u.off("datazoom"), u.dispose();
627
641
  }), d({
628
- reload: h,
629
- // DOM缩放
630
- resize: Me(() => z.resize(), 100),
631
- // 重置拖拽轴的定位
632
- reset: Me(({ startTime: c, endTime: N }) => D("reset", { startTime: c, endTime: N }), 100)
633
- }), (c, N) => (R(), _("div", {
642
+ resize: Me(() => u.resize(), 100)
643
+ }), (o, s) => (R(), _("div", {
634
644
  class: "chart",
635
645
  ref_key: "sliderChartRef",
636
646
  ref: A
637
647
  }, null, 512));
638
648
  }
639
- }, Je = /* @__PURE__ */ ze(We, [["__scopeId", "data-v-fba36bf2"]]);
649
+ }, Je = /* @__PURE__ */ ze(We, [["__scopeId", "data-v-503077bd"]]);
640
650
  const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
641
651
  key: 0,
642
652
  class: "screen-time-range"
@@ -674,17 +684,17 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
674
684
  // 功能: 同步刷选范围(非必填)
675
685
  syncBrushRange: { type: Object, default: () => ({ cycleList: [], startTime: null, endTime: null }) }
676
686
  },
677
- setup(i, { expose: d }) {
678
- const { round: r, formatValue: l } = pe, { request: z } = me("stConfig"), A = P(), I = P(!1), g = P(!1), e = i;
679
- let h = !1, v = !1, D = !1, c = !1, N = null, u = null, a = null;
680
- const Y = P(null), o = P(null), M = P({
687
+ setup(n, { expose: d }) {
688
+ const { round: l, formatValue: j } = pe, { request: u } = me("stConfig"), A = P(), I = P(!1), D = P(!1), e = n;
689
+ let E = !1, v = !1, g = !1, y = !1, o = null, s = null, M = null;
690
+ const L = P(null), c = P(null), i = P({
681
691
  data: [],
682
692
  mainIndicator: [],
683
693
  subIndicator: [],
684
694
  time: []
685
- }), y = P(0), n = P([]), j = P(null), L = P("VOL"), k = ce(() => {
686
- const t = M.value.data[y.value];
687
- if (!t)
695
+ }), z = P(0), t = P([]), N = P(null), Y = P("VOL"), f = se(() => {
696
+ const a = i.value.data[z.value];
697
+ if (!a)
688
698
  return [
689
699
  { label: "开", value: "-" },
690
700
  { label: "高", value: "-" },
@@ -693,49 +703,49 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
693
703
  { label: "额", value: "-" },
694
704
  { label: "涨跌", value: "-" }
695
705
  ];
696
- const s = [
697
- { label: "开", value: r(t[0]) },
698
- { label: "高", value: r(t[3]) },
699
- { label: "低", value: r(t[2]) },
700
- { label: "收", value: r(t[1]) }
706
+ const r = [
707
+ { label: "开", value: l(a[0]) },
708
+ { label: "高", value: l(a[3]) },
709
+ { label: "低", value: l(a[2]) },
710
+ { label: "收", value: l(a[1]) }
701
711
  ];
702
- t[4] !== null && s.push({ label: "额", value: l(t[4]) });
712
+ a[4] !== null && r.push({ label: "额", value: j(a[4]) });
703
713
  let T;
704
- return t[6] > 0 ? T = "red" : t[6] < 0 && (T = "green"), s.push({ label: "涨跌", value: `${r(t[6])}%`, color: T }), s;
705
- }), S = ce(() => {
706
- var t, s;
707
- return ((s = (t = M.value) == null ? void 0 : t.mainIndicator) == null ? void 0 : s.map((T) => ({ label: T.key, value: r(T.data[y.value]), color: T.color }))) || [];
708
- }), U = ce(() => {
709
- var t, s;
710
- return ((s = (t = M.value) == null ? void 0 : t.subIndicator) == null ? void 0 : s.map((T) => ({ label: T.key, color: T.color, value: T.data[y.value] || "-" }))) || [];
714
+ return a[6] > 0 ? T = "red" : a[6] < 0 && (T = "green"), r.push({ label: "涨跌", value: `${l(a[6])}%`, color: T }), r;
715
+ }), S = se(() => {
716
+ var a, r;
717
+ return ((r = (a = i.value) == null ? void 0 : a.mainIndicator) == null ? void 0 : r.map((T) => ({ label: T.key, value: l(T.data[z.value]), color: T.color }))) || [];
718
+ }), U = se(() => {
719
+ var a, r;
720
+ return ((r = (a = i.value) == null ? void 0 : a.subIndicator) == null ? void 0 : r.map((T) => ({ label: T.key, color: T.color, value: T.data[z.value] || "-" }))) || [];
711
721
  }), K = () => {
712
- a || (a = se.init(o.value), a.on(
722
+ M || (M = ce.init(c.value), M.on(
713
723
  "highlight",
714
- Me((t) => {
715
- var s;
716
- t.dataIndex ? y.value = t.dataIndex : y.value = ((s = t.batch) == null ? void 0 : s[0].dataIndex) ?? -1;
724
+ Me((a) => {
725
+ var r;
726
+ a.dataIndex ? z.value = a.dataIndex : z.value = ((r = a.batch) == null ? void 0 : r[0].dataIndex) ?? -1;
717
727
  }, 10)
718
- ), a.on(
728
+ ), M.on(
719
729
  "datazoom",
720
730
  Me(async () => {
721
- var O;
722
- const { loadCheckCount: t } = J, { startValue: s, endValue: T } = ((O = a.getOption()) == null ? void 0 : O.dataZoom[0]) ?? {};
723
- D === !1 && c === !1 && s < t && await ue("history"), h === !1 && v === !1 && T > M.value.time.length - t && await ue("new"), ye();
731
+ var k;
732
+ const { loadCheckCount: a } = J, { startValue: r, endValue: T } = ((k = M.getOption()) == null ? void 0 : k.dataZoom[0]) ?? {};
733
+ g === !1 && y === !1 && r < a && await ue("history"), E === !1 && v === !1 && T > i.value.time.length - a && await ue("new"), ye();
724
734
  })
725
- ), a.on("globalout", () => {
726
- const t = a.getOption();
727
- y.value = t.dataZoom[0].endValue;
728
- }), a.getZr().on("contextmenu", () => {
729
- var t;
730
- j.value = (t = M.value) == null ? void 0 : t.time[y.value];
731
- }), window.addEventListener("keydown", Te), e.userKlineConfig.enable_subChart && (u = se.init(Y.value), se.connect([a, u])), N = Qe(o.value), N.listen(() => {
735
+ ), M.on("globalout", () => {
736
+ const a = M.getOption();
737
+ z.value = a.dataZoom[0].endValue;
738
+ }), M.getZr().on("contextmenu", () => {
739
+ var a;
740
+ N.value = (a = i.value) == null ? void 0 : a.time[z.value];
741
+ }), window.addEventListener("keydown", Te), e.userKlineConfig.enable_subChart && (s = ce.init(L.value), ce.connect([M, s])), o = Qe(c.value), o.listen(() => {
732
742
  requestAnimationFrame(() => {
733
- var t;
734
- a.resize(), u == null || u.resize(), (t = A.value) == null || t.resize();
743
+ var a;
744
+ M.resize(), s == null || s.resize(), (a = A.value) == null || a.resize();
735
745
  });
736
746
  }));
737
- }, Z = async ({ startTime: t, endTime: s }) => {
738
- D = !1, c = !1, h = !1, v = !1;
747
+ }, Z = async ({ startTime: a, endTime: r }) => {
748
+ g = !1, y = !1, E = !1, v = !1;
739
749
  try {
740
750
  I.value = !0;
741
751
  const T = {
@@ -747,45 +757,45 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
747
757
  contractType: e.varietyStock ? null : e.klineType,
748
758
  // 合约类型
749
759
  mainIndicatorList: e.indicatorStore.getIndicatorParams(e.mainIndicator),
750
- subIndicator: L.value,
751
- startTime: p(t).subtract(50, "day").format("YYYY-MM-DD HH:mm:ss"),
760
+ subIndicator: Y.value,
761
+ startTime: p(a).subtract(50, "day").format("YYYY-MM-DD HH:mm:ss"),
752
762
  // 确保缩放, 多请求部分数据, 也可以兼容undefined的情况
753
- endTime: p(s).add(50, "day").format("YYYY-MM-DD HH:mm:ss"),
763
+ endTime: p(r).add(50, "day").format("YYYY-MM-DD HH:mm:ss"),
754
764
  // 确保缩放, 多请求部分数据, 也可以兼容undefined的情况
755
765
  deleteFirstNumber: 1
756
766
  // >> 重要: 绩效后端特殊要求传参 <<
757
- }, { body: O } = await z.post("/middleLayer/kline/getKline", T);
758
- M.value = O ?? { data: [], mainIndicator: [], subIndicator: [], time: [] };
759
- const f = M.value.time.findIndex((m) => new Date(m) >= new Date(t)), w = M.value.time.findIndex((m) => new Date(m) >= new Date(s));
767
+ }, { body: k } = await u.post("/middleLayer/kline/getKline", T);
768
+ i.value = k ?? { data: [], mainIndicator: [], subIndicator: [], time: [] };
769
+ const C = i.value.time.findIndex((m) => new Date(m) >= new Date(a)), w = i.value.time.findIndex((m) => new Date(m) >= new Date(r));
760
770
  ae({
761
- startValue: f === -1 ? 0 : f,
762
- endValue: w === -1 ? M.value.time.length - 1 : w
771
+ startValue: C === -1 ? 0 : C,
772
+ endValue: w === -1 ? i.value.time.length - 1 : w
763
773
  });
764
774
  } finally {
765
775
  I.value = !1;
766
776
  }
767
- }, ue = async (t) => {
777
+ }, ue = async (a) => {
768
778
  var F, ie;
769
- const { loadAddCount: s } = J;
770
- switch (t) {
779
+ const { loadAddCount: r } = J;
780
+ switch (a) {
771
781
  case "history": {
772
- D = !0;
782
+ g = !0;
773
783
  const Q = {
774
784
  varietyCode: e.varietyCode,
775
785
  cycle: e.cycle,
776
786
  right: e.rightType,
777
787
  contractType: e.varietyStock ? null : e.klineType,
778
- endTime: M.value.time[0],
779
- limit: s,
788
+ endTime: i.value.time[0],
789
+ limit: r,
780
790
  mainIndicatorList: e.indicatorStore.getIndicatorParams(e.mainIndicator),
781
- subIndicator: L.value,
791
+ subIndicator: Y.value,
782
792
  deleteFirstNumber: 1
783
- }, { body: B } = await z.post("/middleLayer/kline/getKline", Q);
784
- M.value = Ie(B, M.value), B.data.length < s && (console.log("[K线] 获取更多数据: 左侧已全部获取完毕, 关闭"), c = !0), D = !1;
793
+ }, { body: B } = await u.post("/middleLayer/kline/getKline", Q);
794
+ i.value = Ie(B, i.value), B.data.length < r && (console.log("[K线] 获取更多数据: 左侧已全部获取完毕, 关闭"), y = !0), g = !1;
785
795
  break;
786
796
  }
787
797
  case "new": {
788
- h = !0;
798
+ E = !0;
789
799
  const Q = {
790
800
  varietyCode: e.varietyCode,
791
801
  cycle: e.cycle,
@@ -794,33 +804,33 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
794
804
  // 复权方式
795
805
  contractType: e.varietyStock ? null : e.klineType,
796
806
  // 合约类型
797
- startTime: M.value.time[M.value.time.length - 1],
807
+ startTime: i.value.time[i.value.time.length - 1],
798
808
  // 开始时间
799
- limit: s,
809
+ limit: r,
800
810
  // 查询K线数量
801
811
  deleteFirstNumber: 1,
802
812
  // >> 重要: 绩效后端特殊要求传参 <<
803
813
  mainIndicatorList: e.indicatorStore.getIndicatorParams(e.mainIndicator),
804
- subIndicator: L.value
805
- }, { body: B } = await z.post("/middleLayer/kline/getKline", Q);
806
- M.value = Ie(M.value, B), B.data.length < s && (console.log("[K线] 获取更多数据: 右侧已全部获取完毕, 关闭"), v = !0), h = !1;
814
+ subIndicator: Y.value
815
+ }, { body: B } = await u.post("/middleLayer/kline/getKline", Q);
816
+ i.value = Ie(i.value, B), B.data.length < r && (console.log("[K线] 获取更多数据: 右侧已全部获取完毕, 关闭"), v = !0), E = !1;
807
817
  break;
808
818
  }
809
819
  }
810
- const { startValue: T, endValue: O } = ((F = a.getOption()) == null ? void 0 : F.dataZoom[0]) ?? {}, f = (ie = a.getOption()) == null ? void 0 : ie.xAxis[0].data, w = M.value.time.findIndex((Q) => new Date(Q) >= new Date(f[T])), m = M.value.time.findIndex((Q) => new Date(Q) >= new Date(f[O]));
820
+ const { startValue: T, endValue: k } = ((F = M.getOption()) == null ? void 0 : F.dataZoom[0]) ?? {}, C = (ie = M.getOption()) == null ? void 0 : ie.xAxis[0].data, w = i.value.time.findIndex((Q) => new Date(Q) >= new Date(C[T])), m = i.value.time.findIndex((Q) => new Date(Q) >= new Date(C[k]));
811
821
  ae({
812
822
  startValue: w === -1 ? 0 : w,
813
- endValue: m === -1 ? M.value.time.length - 1 : m
823
+ endValue: m === -1 ? i.value.time.length - 1 : m
814
824
  });
815
825
  }, ye = () => {
816
826
  var w;
817
- if (!M.value.time)
818
- return n.value = [];
819
- const { time: t } = M.value, { startValue: s, endValue: T } = ((w = a.getOption()) == null ? void 0 : w.dataZoom[0]) ?? {}, O = t[s], f = t[T];
820
- ["6", "7", "8"].includes(e.cycle) ? n.value = [p(O).format("YYYY-MM-DD"), p(f).format("YYYY-MM-DD")] : n.value = [O, f];
821
- }, ae = (t = { startValue: 0, endValue: 0 }) => {
827
+ if (!i.value.time)
828
+ return t.value = [];
829
+ const { time: a } = i.value, { startValue: r, endValue: T } = ((w = M.getOption()) == null ? void 0 : w.dataZoom[0]) ?? {}, k = a[r], C = a[T];
830
+ ["6", "7", "8"].includes(e.cycle) ? t.value = [p(k).format("YYYY-MM-DD"), p(C).format("YYYY-MM-DD")] : t.value = [k, C];
831
+ }, ae = (a = { startValue: 0, endValue: 0 }) => {
822
832
  K();
823
- const { maxValueSpan: s } = J, { time: T, data: O, mainIndicator: f } = M.value, w = t.endValue - t.startValue > s ? t.endValue - s : t.startValue, m = t.endValue, F = f.map((x) => ({
833
+ const { maxValueSpan: r } = J, { time: T, data: k, mainIndicator: C } = i.value, w = a.endValue - a.startValue > r ? a.endValue - r : a.startValue, m = a.endValue, F = C.map((x) => ({
824
834
  name: x.key,
825
835
  type: "line",
826
836
  silent: !0,
@@ -832,8 +842,8 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
832
842
  itemStyle: {
833
843
  color: x.color
834
844
  }
835
- })), { netPositionLineData: ie } = Be(e.netPositionData, e.cycle), { tradePointData: Q, tradeLineData: B } = Ze(e.tradeLog, e.cycle, e.sellBuy, T, O);
836
- a.setOption(
845
+ })), { netPositionLineData: ie } = Be(e.netPositionData, e.cycle), { tradePointData: Q, tradeLineData: B } = Ze(e.tradeLog, e.cycle, e.sellBuy, T, k);
846
+ M.setOption(
837
847
  {
838
848
  animation: !1,
839
849
  grid: {
@@ -860,43 +870,43 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
860
870
  label: {
861
871
  rich: {},
862
872
  formatter: (x) => {
863
- const { axisDimension: C, value: b } = x;
864
- return C === "x" ? ["6", "7", "8"].includes(e.cycle) ? p(b).format("YYYY-MM-DD") : b : String(r(b));
873
+ const { axisDimension: O, value: b } = x;
874
+ return O === "x" ? ["6", "7", "8"].includes(e.cycle) ? p(b).format("YYYY-MM-DD") : b : String(l(b));
865
875
  }
866
876
  }
867
877
  },
868
878
  formatter: (x) => {
869
879
  if (!(x != null && x.length))
870
880
  return null;
871
- let C = "";
872
- if (x.forEach((E) => {
873
- if (E.seriesName === "netPosition" && E.data !== null && (C += `<div>资产持仓净值: ${E.data[1]}</div>`), E.componentSubType === "candlestick")
881
+ let O = "";
882
+ if (x.forEach((h) => {
883
+ if (h.seriesName === "netPosition" && h.data !== null && (O += `<div>资产持仓净值: ${h.data[1]}</div>`), h.componentSubType === "candlestick")
874
884
  if (e.sellBuy === 0) {
875
- const W = Q.filter((V) => (V == null ? void 0 : V.coord[0]) === E.axisValue);
885
+ const W = Q.filter((V) => (V == null ? void 0 : V.coord[0]) === h.axisValue);
876
886
  let H = 0, G = 0;
877
887
  W.forEach((V) => {
878
888
  const { tradeType: q, amount: ne } = V.customData;
879
889
  q === "买" && (H += ne), q === "卖" && (G += ne);
880
- }), H && (C += `<div>买: ${H}</div>`), G && (C += `<div>卖: ${G}</div>`);
890
+ }), H && (O += `<div>买: ${H}</div>`), G && (O += `<div>卖: ${G}</div>`);
881
891
  } else
882
892
  Q.forEach((W) => {
883
- if ((W == null ? void 0 : W.coord[0]) === E.axisValue) {
893
+ if ((W == null ? void 0 : W.coord[0]) === h.axisValue) {
884
894
  const { tradeType: H, amount: G, profitAndLoss: V, openPriceAll: q, closePriceAll: ne } = W.customData;
885
895
  let X = `<div>${H}: ${G}手</div>`;
886
896
  if (H.includes("开") && (X += `<div>开仓价: ${(q / G).toFixed(2)}</div>`), H.includes("平")) {
887
897
  const de = (q / G).toFixed(2), De = (ne / G).toFixed(2);
888
898
  X += `<div>平仓价: ${De}</div>`, X += `<div>盈亏: ${V == null ? void 0 : V.toFixed(2)}</div>`, X += `<div>盈亏比率: ${((De - de) / de * 100).toFixed(2)} %</div>`;
889
899
  }
890
- C += X;
900
+ O += X;
891
901
  }
892
902
  });
893
- }), !C)
903
+ }), !O)
894
904
  return null;
895
905
  let b = x[0].axisValue;
896
906
  return ["6", "7", "8"].includes(e.cycle) && (b = p(b).format("YYYY-MM-DD")), `
897
907
  <div>
898
908
  <span style="font-weight: bold;">${b}</span>
899
- ${C}
909
+ ${O}
900
910
  </div>
901
911
  `;
902
912
  }
@@ -926,27 +936,27 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
926
936
  }
927
937
  },
928
938
  min: (x) => {
929
- const { min: C, max: b } = x, E = Math.abs((b - C) / 10);
930
- return r(C - E);
939
+ const { min: O, max: b } = x, h = Math.abs((b - O) / 10);
940
+ return l(O - h);
931
941
  },
932
- max: (x) => r(x.max)
942
+ max: (x) => l(x.max)
933
943
  },
934
944
  {
935
945
  show: !1,
936
946
  min: (x) => {
937
- const { min: C, max: b } = x, E = Math.abs((b - C) / 10);
938
- return C - E;
947
+ const { min: O, max: b } = x, h = Math.abs((b - O) / 10);
948
+ return O - h;
939
949
  },
940
950
  max: (x) => {
941
- const { min: C, max: b } = x, E = Math.abs((b - C) / 10);
942
- return b + E;
951
+ const { min: O, max: b } = x, h = Math.abs((b - O) / 10);
952
+ return b + h;
943
953
  }
944
954
  }
945
955
  ],
946
956
  series: [
947
957
  {
948
958
  type: "candlestick",
949
- data: O,
959
+ data: k,
950
960
  markPoint: { data: Ge([...Q]) },
951
961
  markLine: { data: [...B] },
952
962
  itemStyle: {
@@ -992,25 +1002,25 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
992
1002
  }
993
1003
  },
994
1004
  !0
995
- ), e.userKlineConfig.enable_subChart && u.setOption(_e(M.value, w, m), !0), ye(), y.value = m;
1005
+ ), e.userKlineConfig.enable_subChart && s.setOption(_e(i.value, w, m), !0), ye(), z.value = m;
996
1006
  {
997
1007
  const x = [];
998
1008
  if (e.userKlineConfig.enable_tradeLogBrush && Q.length) {
999
- const [C, b] = [Q[0].coord[0], Q.at(-1).coord[0]], E = re(T, [C, b], e.cycle);
1009
+ const [O, b] = [Q[0].coord[0], Q.at(-1).coord[0]], h = re(T, [O, b], e.cycle);
1000
1010
  x.push({
1001
1011
  brushId: "开平仓范围",
1002
1012
  brushType: "lineX",
1003
1013
  xAxisIndex: 0,
1004
- coordRange: E
1014
+ coordRange: h
1005
1015
  });
1006
1016
  }
1007
1017
  if (e.syncBrushRange.cycleList.includes(e.cycle)) {
1008
- const { startTime: C, endTime: b } = e.syncBrushRange, E = re(T, [C, b], e.cycle);
1018
+ const { startTime: O, endTime: b } = e.syncBrushRange, h = re(T, [O, b], e.cycle);
1009
1019
  x.push({
1010
1020
  brushId: "同步刷选范围",
1011
1021
  brushType: "lineX",
1012
1022
  xAxisIndex: 0,
1013
- coordRange: E,
1023
+ coordRange: h,
1014
1024
  brushStyle: {
1015
1025
  fill: "rgba(64, 158, 255, 0.2)",
1016
1026
  stroke: "rgba(64, 158, 255, 0.8)",
@@ -1019,12 +1029,12 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
1019
1029
  });
1020
1030
  }
1021
1031
  if (e.positionTime) {
1022
- const [C, b] = [p(e.positionTime).format("YYYY-MM-DD 00:00:00"), p(e.positionTime).format("YYYY-MM-DD 23:59:59")], E = re(T, [C, b], e.cycle);
1032
+ const [O, b] = [p(e.positionTime).format("YYYY-MM-DD 00:00:00"), p(e.positionTime).format("YYYY-MM-DD 23:59:59")], h = re(T, [O, b], e.cycle);
1023
1033
  x.push({
1024
1034
  brushId: "强制定位高亮",
1025
1035
  brushType: "lineX",
1026
1036
  xAxisIndex: 0,
1027
- coordRange: E,
1037
+ coordRange: h,
1028
1038
  brushStyle: {
1029
1039
  fill: "rgba(217, 179, 255, 0.2)",
1030
1040
  stroke: "rgba(217, 179, 255, 0.8)",
@@ -1032,21 +1042,21 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
1032
1042
  }
1033
1043
  });
1034
1044
  }
1035
- a.dispatchAction({
1045
+ M.dispatchAction({
1036
1046
  type: "brush",
1037
1047
  areas: x
1038
1048
  });
1039
1049
  }
1040
- }, Oe = (t) => {
1041
- const { startTime: s, endTime: T } = t;
1042
- Z({ startTime: s, endTime: T });
1043
- }, Te = ({ code: t, ctrlKey: s }) => {
1044
- if (!(s || g.value))
1050
+ }, Oe = (a) => {
1051
+ const { startTime: r, endTime: T } = a;
1052
+ Z({ startTime: r, endTime: T });
1053
+ }, Te = ({ code: a, ctrlKey: r }) => {
1054
+ if (!(r || D.value))
1045
1055
  return;
1046
- const { xAxis: T, dataZoom: O } = a.getOption(), { data: f } = (T == null ? void 0 : T[0]) ?? { data: [] };
1047
- let { startValue: w, endValue: m } = (O == null ? void 0 : O[0]) ?? {};
1048
- if (f != null && f.length) {
1049
- switch (t) {
1056
+ const { xAxis: T, dataZoom: k } = M.getOption(), { data: C } = (T == null ? void 0 : T[0]) ?? { data: [] };
1057
+ let { startValue: w, endValue: m } = (k == null ? void 0 : k[0]) ?? {};
1058
+ if (C != null && C.length) {
1059
+ switch (a) {
1050
1060
  case "ArrowUp": {
1051
1061
  if (m - w < 5)
1052
1062
  return;
@@ -1060,108 +1070,100 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
1060
1070
  break;
1061
1071
  }
1062
1072
  case "ArrowLeft": {
1063
- w > 0 && (w -= 1, m -= 1), y.value > 0 && (y.value -= 1);
1073
+ w > 0 && (w -= 1, m -= 1), z.value > 0 && (z.value -= 1);
1064
1074
  break;
1065
1075
  }
1066
1076
  case "ArrowRight": {
1067
- m < f.length - 1 && (w += 1, m += 1), g.value && y.value < f.length - 1 && (y.value += 1);
1077
+ m < C.length - 1 && (w += 1, m += 1), D.value && z.value < C.length - 1 && (z.value += 1);
1068
1078
  break;
1069
1079
  }
1070
1080
  }
1071
- a.dispatchAction({
1081
+ M.dispatchAction({
1072
1082
  type: "dataZoom",
1073
1083
  startValue: w,
1074
1084
  endValue: m
1075
- }), a.dispatchAction({
1085
+ }), M.dispatchAction({
1076
1086
  type: "updateAxisPointer",
1077
1087
  seriesIndex: 0,
1078
- dataIndex: g.value ? y.value : null
1079
- }), a.dispatchAction({
1088
+ dataIndex: D.value ? z.value : null
1089
+ }), M.dispatchAction({
1080
1090
  type: "highlight",
1081
- dataIndex: g.value ? y.value : m
1091
+ dataIndex: D.value ? z.value : m
1082
1092
  });
1083
1093
  }
1084
1094
  };
1085
1095
  return xe(() => {
1086
- const [t, s] = e.initTimeRange;
1087
- Z({ startTime: t, endTime: s });
1088
- }), oe(
1096
+ const [a, r] = e.initTimeRange;
1097
+ Z({ startTime: a, endTime: r });
1098
+ }), Ne(
1089
1099
  () => [e.varietyCode, e.initTimeRange],
1090
1100
  () => {
1091
- const [t, s] = e.initTimeRange;
1092
- Z({ startTime: t, endTime: s });
1101
+ const [a, r] = e.initTimeRange;
1102
+ Z({ startTime: a, endTime: r });
1093
1103
  },
1094
1104
  { deep: !0 }
1095
- ), oe(
1105
+ ), Ne(
1096
1106
  () => {
1097
- var t, s;
1098
- return [e.mainIndicator, L.value, (t = e.indicatorStore) == null ? void 0 : t.filterIndicator, (s = e.indicatorStore) == null ? void 0 : s.customIndicator, e.cycle, e.rightType, e.klineType];
1107
+ var a, r;
1108
+ return [e.mainIndicator, Y.value, (a = e.indicatorStore) == null ? void 0 : a.filterIndicator, (r = e.indicatorStore) == null ? void 0 : r.customIndicator, e.cycle, e.rightType, e.klineType];
1099
1109
  },
1100
1110
  () => {
1101
- var f;
1102
- const { startValue: t, endValue: s } = ((f = a.getOption()) == null ? void 0 : f.dataZoom[0]) ?? {}, [T, O] = [M.value.time[t], M.value.time[s]];
1103
- Z({ startTime: T, endTime: O });
1111
+ var C;
1112
+ const { startValue: a, endValue: r } = ((C = M.getOption()) == null ? void 0 : C.dataZoom[0]) ?? {}, [T, k] = [i.value.time[a], i.value.time[r]];
1113
+ Z({ startTime: T, endTime: k });
1104
1114
  },
1105
1115
  { deep: !0 }
1106
- ), oe(
1116
+ ), Ne(
1107
1117
  () => [e.sellBuy, e.tradeLog, e.netPositionData],
1108
1118
  () => {
1109
1119
  var T;
1110
- const { startValue: t, endValue: s } = ((T = a.getOption()) == null ? void 0 : T.dataZoom[0]) ?? {};
1111
- ae({ startValue: t, endValue: s });
1112
- },
1113
- { deep: !0 }
1114
- ), oe(
1115
- () => n.value,
1116
- (t) => {
1117
- var O;
1118
- const [s, T] = t;
1119
- (O = A.value) == null || O.reset({ startTime: s, endTime: T });
1120
+ const { startValue: a, endValue: r } = ((T = M.getOption()) == null ? void 0 : T.dataZoom[0]) ?? {};
1121
+ ae({ startValue: a, endValue: r });
1120
1122
  },
1121
1123
  { deep: !0 }
1122
1124
  ), we(() => {
1123
- a.off("highlight"), a.off("globalout"), a.off("datazoom"), a.getZr().off("contextmenu"), window.removeEventListener("keydown", Te), a.dispose(), u == null || u.dispose(), N.dispose(), N = null;
1125
+ M.off("highlight"), M.off("globalout"), M.off("datazoom"), M.getZr().off("contextmenu"), window.removeEventListener("keydown", Te), M.dispose(), s == null || s.dispose(), o.dispose(), o = null;
1124
1126
  }), d({
1125
- screenTimeRange: n,
1126
- contextmenuKlineTime: j,
1127
+ screenTimeRange: t,
1128
+ contextmenuKlineTime: N,
1127
1129
  reDraw: () => {
1128
1130
  var T;
1129
- const { startValue: t, endValue: s } = ((T = a.getOption()) == null ? void 0 : T.dataZoom[0]) ?? {};
1130
- ae({ startValue: t, endValue: s });
1131
+ const { startValue: a, endValue: r } = ((T = M.getOption()) == null ? void 0 : T.dataZoom[0]) ?? {};
1132
+ ae({ startValue: a, endValue: r });
1131
1133
  }
1132
- }), (t, s) => {
1133
- const T = ke, O = be, f = fe, w = Ce;
1134
+ }), (a, r) => {
1135
+ const T = ke, k = be, C = fe, w = Ce;
1134
1136
  return ve((R(), _("div", {
1135
1137
  class: "kline-plus",
1136
- onMousemove: s[1] || (s[1] = (m) => g.value = !0),
1137
- onMouseout: s[2] || (s[2] = (m) => g.value = !1)
1138
+ onMousemove: r[1] || (r[1] = (m) => D.value = !0),
1139
+ onMouseout: r[2] || (r[2] = (m) => D.value = !1)
1138
1140
  }, [
1139
1141
  $("div", Ke, [
1140
1142
  $("div", qe, [
1141
- ee(le, { data: k.value }, null, 8, ["data"]),
1143
+ ee(le, { data: f.value }, null, 8, ["data"]),
1142
1144
  ee(le, { data: S.value }, null, 8, ["data"])
1143
1145
  ]),
1144
- i.userKlineConfig.enable_showScreenTimeRange ? (R(), _("span", Xe, te(n.value[0]) + " - " + te(n.value[1]), 1)) : Ne("", !0),
1146
+ n.userKlineConfig.enable_showScreenTimeRange ? (R(), _("span", Xe, te(t.value[0]) + " - " + te(t.value[1]), 1)) : oe("", !0),
1145
1147
  $("div", {
1146
1148
  ref_key: "mainChartRef",
1147
- ref: o,
1149
+ ref: c,
1148
1150
  class: "chart"
1149
1151
  }, null, 512)
1150
1152
  ]),
1151
- i.userKlineConfig.enable_subChart ? (R(), _("div", et, [
1153
+ n.userKlineConfig.enable_subChart ? (R(), _("div", et, [
1152
1154
  $("div", tt, [
1153
1155
  $("div", Mt, [
1154
- $("span", null, te(L.value), 1),
1155
- ee(O, {
1156
- modelValue: L.value,
1157
- "onUpdate:modelValue": s[0] || (s[0] = (m) => L.value = m),
1156
+ $("span", null, te(Y.value), 1),
1157
+ ee(k, {
1158
+ modelValue: Y.value,
1159
+ "onUpdate:modelValue": r[0] || (r[0] = (m) => Y.value = m),
1158
1160
  style: { width: "100px", "margin-right": "4px", height: "25px" },
1159
1161
  size: "small",
1160
1162
  class: "element-dark",
1161
1163
  "popper-class": "element-dark"
1162
1164
  }, {
1163
1165
  default: Se(() => [
1164
- (R(!0), _(Le, null, Ae(i.indicatorStore.subIndicatorList, (m, F) => (R(), ge(T, {
1166
+ (R(!0), _(Le, null, Ae(n.indicatorStore.subIndicatorList, (m, F) => (R(), ge(T, {
1165
1167
  key: F,
1166
1168
  label: m.label,
1167
1169
  value: m.value
@@ -1174,22 +1176,23 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
1174
1176
  ]),
1175
1177
  $("div", {
1176
1178
  ref_key: "subChartRef",
1177
- ref: Y,
1179
+ ref: L,
1178
1180
  class: "chart"
1179
1181
  }, null, 512)
1180
- ])) : Ne("", !0),
1181
- i.userKlineConfig.enable_sliderChart ? (R(), _("div", at, [
1182
+ ])) : oe("", !0),
1183
+ n.userKlineConfig.enable_sliderChart ? (R(), _("div", at, [
1182
1184
  ee(Je, {
1183
1185
  ref_key: "sliderChartRef",
1184
1186
  ref: A,
1185
- varietyCode: i.varietyCode,
1186
- varietyStock: i.varietyStock,
1187
- rightType: i.rightType,
1188
- klineType: i.klineType,
1187
+ screenTimeRange: t.value,
1188
+ varietyCode: n.varietyCode,
1189
+ varietyStock: n.varietyStock,
1190
+ rightType: n.rightType,
1191
+ klineType: n.klineType,
1189
1192
  onChange: Oe
1190
- }, null, 8, ["varietyCode", "varietyStock", "rightType", "klineType"])
1191
- ])) : Ne("", !0),
1192
- M.value.time.length ? Ne("", !0) : (R(), ge(f, {
1193
+ }, null, 8, ["screenTimeRange", "varietyCode", "varietyStock", "rightType", "klineType"])
1194
+ ])) : oe("", !0),
1195
+ i.value.time.length ? oe("", !0) : (R(), ge(C, {
1193
1196
  key: 2,
1194
1197
  class: "empty",
1195
1198
  description: "暂无数据"
@@ -1199,9 +1202,9 @@ const Ke = { class: "main-chart" }, qe = { class: "indicator" }, Xe = {
1199
1202
  ]);
1200
1203
  };
1201
1204
  }
1202
- }, nt = /* @__PURE__ */ ze(it, [["__scopeId", "data-v-a08d6e0e"]]), Ot = {
1203
- install(i) {
1204
- i.component("st-klinePlus", nt);
1205
+ }, nt = /* @__PURE__ */ ze(it, [["__scopeId", "data-v-9917caf7"]]), Ot = {
1206
+ install(n) {
1207
+ n.component("st-klinePlus", nt);
1205
1208
  }
1206
1209
  };
1207
1210
  export {