st-comp 0.0.148 → 0.0.149

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/components.d.ts +3 -0
  2. package/es/ChartLayout.cjs +1 -1
  3. package/es/ChartLayout.js +2 -2
  4. package/es/Dialog.cjs +1 -1
  5. package/es/Dialog.js +16 -14
  6. package/es/FactorWarning.cjs +1 -1
  7. package/es/FactorWarning.js +576 -632
  8. package/es/Kline.cjs +1 -0
  9. package/es/Kline.js +1901 -0
  10. package/es/KlineBasic.cjs +1 -1
  11. package/es/KlineBasic.js +675 -1428
  12. package/es/KlineNew.cjs +1 -3
  13. package/es/KlineNew.js +314 -2740
  14. package/es/Pagination.cjs +1 -1
  15. package/es/Pagination.js +85 -85
  16. package/es/Table.cjs +1 -1
  17. package/es/Table.js +57 -55
  18. package/es/User.cjs +1 -1
  19. package/es/User.js +89 -87
  20. package/es/VarietySearch.cjs +1 -1
  21. package/es/VarietySearch.js +2393 -1
  22. package/es/VirtualTable.cjs +5 -5
  23. package/es/VirtualTable.js +59 -58
  24. package/es/{_initCloneObject-ec5c9523.js → _initCloneObject-14b53c6f.js} +24 -24
  25. package/es/_initCloneObject-441db749.cjs +1 -0
  26. package/es/{base-950bac7e.js → base-437d17f3.js} +65 -65
  27. package/es/{base-6ccc8fc2.cjs → base-ec05f348.cjs} +1 -1
  28. package/es/{castArray-c770910d.js → castArray-4251bbe4.js} +1 -1
  29. package/es/castArray-a45823fe.cjs +1 -0
  30. package/es/{config-provider-feed0e8a.js → config-provider-55482a43.js} +3 -3
  31. package/es/{config-provider-c87e277f.cjs → config-provider-7cdfca4d.cjs} +1 -1
  32. package/es/{debounce-c64fb3b5.js → debounce-ac30be50.js} +20 -20
  33. package/es/debounce-b2ff12bd.cjs +1 -0
  34. package/es/{dropdown-c9272ca3.js → dropdown-634b5e27.js} +4 -4
  35. package/es/{dropdown-6bdb3cf4.cjs → dropdown-d7c59a21.cjs} +1 -1
  36. package/es/el-button-196807af.cjs +1 -0
  37. package/es/el-button-e1665717.js +235 -0
  38. package/es/el-checkbox-group-492b95cc.cjs +1 -0
  39. package/es/el-checkbox-group-e8fece80.js +67 -0
  40. package/es/{el-empty-12eece57.cjs → el-empty-19ea04f4.cjs} +1 -1
  41. package/es/{el-empty-89a523ed.js → el-empty-bacc6613.js} +1 -1
  42. package/es/{el-form-item-ebbf096d.cjs → el-form-item-5bdffd07.cjs} +2 -2
  43. package/es/{el-form-item-55d36086.js → el-form-item-af1855f0.js} +81 -81
  44. package/es/el-input-23e2bac3.cjs +1 -0
  45. package/es/{el-input-cb528574.js → el-input-4961b99f.js} +80 -80
  46. package/es/el-input-number-40a81eb5.cjs +1 -0
  47. package/es/{el-input-number-ce30bfa8.js → el-input-number-610fc8ba.js} +26 -26
  48. package/es/el-menu-item-78b858f2.cjs +1 -0
  49. package/es/el-menu-item-7d04c11a.js +771 -0
  50. package/es/{el-message-d51d032b.js → el-message-c3b3ac96.js} +18 -18
  51. package/es/{el-message-612c2346.cjs → el-message-d4df8136.cjs} +1 -1
  52. package/es/el-overlay-12dd9b35.js +519 -0
  53. package/es/el-overlay-bc0790a2.cjs +1 -0
  54. package/es/el-popover-0aa071f2.js +138 -0
  55. package/es/el-popover-8a77e015.cjs +1 -0
  56. package/es/{el-popper-f4b01f85.js → el-popper-50100766.js} +31 -31
  57. package/es/el-popper-746070ba.cjs +1 -0
  58. package/es/{el-scrollbar-e8e93751.js → el-scrollbar-562d0595.js} +19 -19
  59. package/es/el-scrollbar-d1c3e7f7.cjs +1 -0
  60. package/es/{el-select-e71af2e6.js → el-select-9381b156.js} +11 -11
  61. package/es/el-select-b162dffc.cjs +1 -0
  62. package/es/el-table-column-55bffba5.js +3802 -0
  63. package/es/el-table-column-6d761fce.cjs +14 -0
  64. package/es/{el-tag-d65768f4.js → el-tag-985d9aff.js} +72 -72
  65. package/es/el-tag-c51a6490.cjs +1 -0
  66. package/es/index-09e01b1d.js +81 -0
  67. package/es/{index-121e2861.js → index-0cb48e01.js} +3 -3
  68. package/es/{index-92ba4292.js → index-39ec9741.js} +17 -17
  69. package/es/{index-18416440.cjs → index-3bf8d597.cjs} +1 -1
  70. package/es/index-657047bb.js +513 -0
  71. package/es/{index-0ed86daf.cjs → index-8a0b1c53.cjs} +1 -1
  72. package/es/{index-674d2fd7.cjs → index-a387515d.cjs} +1 -1
  73. package/es/{index-709675d5.js → index-a902a0d9.js} +18 -18
  74. package/es/{index-da646183.cjs → index-deb8de52.cjs} +1 -1
  75. package/es/index-eea0bcb3.cjs +1 -0
  76. package/es/index.esm-8d9a2abe.js +2432 -0
  77. package/es/index.esm-94a95a2a.cjs +3 -0
  78. package/es/{raf-2d77cbbe.cjs → raf-8fc301fd.cjs} +1 -1
  79. package/es/{raf-f55e0daa.js → raf-b128c7b7.js} +1 -1
  80. package/es/{scroll-ca84f80a.js → scroll-387fcfdb.js} +1 -1
  81. package/es/{scroll-c8ac196e.cjs → scroll-41224831.cjs} +1 -1
  82. package/es/style.css +1 -1
  83. package/es/{use-form-common-props-c1960844.cjs → use-form-common-props-1b84d8f4.cjs} +2 -2
  84. package/es/{use-form-common-props-4d37077d.js → use-form-common-props-f377e500.js} +64 -63
  85. package/es/vnode-7dfd4ed5.js +14 -0
  86. package/es/vnode-7fbc61e1.cjs +1 -0
  87. package/es/{zh-cn-414d7f0c.cjs → zh-cn-ab9a583d.cjs} +1 -1
  88. package/es/{zh-cn-23c8e0d1.js → zh-cn-eb9c2820.js} +2 -2
  89. package/lib/bundle.js +1 -1
  90. package/lib/bundle.umd.cjs +206 -206
  91. package/lib/{index-ffeb163e.js → index-d2de454d.js} +33249 -31372
  92. package/lib/{python-0ec8f68c.js → python-22975586.js} +1 -1
  93. package/lib/style.css +1 -1
  94. package/package.json +1 -1
  95. package/packages/Kline/components/Contextmenu/index.vue +110 -0
  96. package/packages/Kline/components/Tips/index.vue +40 -0
  97. package/packages/Kline/componentsNew/KlineSlide/index.vue +155 -0
  98. package/packages/Kline/componentsNew/KlineSub/index.vue +297 -0
  99. package/packages/Kline/componentsNew/KlineTips/index.vue +66 -0
  100. package/packages/Kline/componentsNew/KlineUtils/index.vue +84 -0
  101. package/packages/Kline/componentsNew/Tips/index.vue +33 -0
  102. package/packages/Kline/formatKlineData.ts +109 -0
  103. package/packages/Kline/images/buy.svg +1 -0
  104. package/packages/Kline/images/pen.png +0 -0
  105. package/packages/Kline/images/sell.svg +1 -0
  106. package/packages/Kline/images/t.svg +1 -0
  107. package/packages/Kline/index.ts +16 -0
  108. package/packages/Kline/index.vue +891 -0
  109. package/packages/Kline/option.ts +539 -0
  110. package/packages/Kline/type.d.ts +219 -0
  111. package/packages/Kline/utils.ts +682 -0
  112. package/packages/index.ts +2 -0
  113. package/src/pages/Kline/index.vue +12 -0
  114. package/src/router/routes.ts +5 -0
  115. package/es/_initCloneObject-476b02ce.cjs +0 -1
  116. package/es/castArray-374558a5.cjs +0 -1
  117. package/es/debounce-a6b4f91b.cjs +0 -1
  118. package/es/el-button-b8f71c7d.cjs +0 -1
  119. package/es/el-button-d7b6eebd.js +0 -745
  120. package/es/el-input-2c7e70a3.cjs +0 -1
  121. package/es/el-input-number-8e168e83.cjs +0 -1
  122. package/es/el-overlay-07414277.js +0 -526
  123. package/es/el-overlay-fb255b83.cjs +0 -1
  124. package/es/el-popper-8360bd91.cjs +0 -1
  125. package/es/el-scrollbar-271142ad.cjs +0 -1
  126. package/es/el-select-2e71d4af.cjs +0 -1
  127. package/es/el-table-column-9fe79f05.cjs +0 -14
  128. package/es/el-table-column-dc562f14.js +0 -3933
  129. package/es/el-tag-930e7b32.cjs +0 -1
  130. package/es/index-aece600c.js +0 -81
@@ -1 +1,2393 @@
1
-
1
+ import { b as le, i as he, a as Ve, c as xe, C as Oe, u as ue, _ as ie, e as Be, f as Ge, w as Ye, v as we } from "./base-437d17f3.js";
2
+ import "./el-tag-985d9aff.js";
3
+ import { E as ce, a as de } from "./el-select-9381b156.js";
4
+ import "./el-scrollbar-562d0595.js";
5
+ import { u as Je, E as Ae } from "./el-popper-50100766.js";
6
+ import { E as Ke } from "./el-checkbox-group-e8fece80.js";
7
+ import { b as Qe, c as Ze, E as He, a as We } from "./el-table-column-55bffba5.js";
8
+ import { ref as Q, inject as Xe, computed as N, defineComponent as Z, openBlock as r, createElementBlock as f, normalizeClass as K, unref as v, createElementVNode as m, withDirectives as pe, isRef as Te, withModifiers as X, vModelRadio as Ce, renderSlot as ve, createTextVNode as D, toDisplayString as J, nextTick as Se, normalizeStyle as el, onMounted as ll, provide as tl, reactive as nl, toRefs as al, watch as ee, mergeModels as te, useModel as ne, createBlock as q, withCtx as d, createVNode as s, Fragment as U, createCommentVNode as z, renderList as j, pushScopeId as fe, popScopeId as me, createSlots as se, vShow as ol } from "vue";
9
+ import { E as ye } from "./el-overlay-12dd9b35.js";
10
+ import { E as sl, a as rl } from "./el-form-item-af1855f0.js";
11
+ import { E as Ue } from "./el-input-4961b99f.js";
12
+ import { E as Ee } from "./el-input-number-610fc8ba.js";
13
+ import "./el-tooltip-4ed993c7.js";
14
+ import { E as Re } from "./el-button-e1665717.js";
15
+ import { u as qe, a as ul, b as il, d as cl, e as dl, v as re, i as pl, w as vl, E as fl } from "./use-form-common-props-f377e500.js";
16
+ import { E as A } from "./el-message-c3b3ac96.js";
17
+ import { _ as ge } from "./_plugin-vue_export-helper-dad06003.js";
18
+ import { E as Me } from "./index-39ec9741.js";
19
+ import { U as be, C as ml } from "./index-0cb48e01.js";
20
+ import { a as yl } from "./index-09e01b1d.js";
21
+ import "./castArray-4251bbe4.js";
22
+ import "./index-a902a0d9.js";
23
+ import "./scroll-387fcfdb.js";
24
+ import "./debounce-ac30be50.js";
25
+ import "./_initCloneObject-14b53c6f.js";
26
+ import "./raf-b128c7b7.js";
27
+ import "./vnode-7dfd4ed5.js";
28
+ import "./typescript-7ae59c4c.js";
29
+ import "./index-657047bb.js";
30
+ import "./config-provider-55482a43.js";
31
+ const De = le({
32
+ modelValue: {
33
+ type: [String, Number, Boolean],
34
+ default: void 0
35
+ },
36
+ size: qe,
37
+ disabled: Boolean,
38
+ label: {
39
+ type: [String, Number, Boolean],
40
+ default: void 0
41
+ },
42
+ value: {
43
+ type: [String, Number, Boolean],
44
+ default: void 0
45
+ },
46
+ name: {
47
+ type: String,
48
+ default: void 0
49
+ }
50
+ }), gl = le({
51
+ ...De,
52
+ border: Boolean
53
+ }), Fe = {
54
+ [be]: (p) => he(p) || Ve(p) || xe(p),
55
+ [ml]: (p) => he(p) || Ve(p) || xe(p)
56
+ }, Le = Symbol("radioGroupKey"), je = (p, V) => {
57
+ const y = Q(), n = Xe(Le, void 0), k = N(() => !!n), R = N(() => Oe(p.value) ? p.label : p.value), u = N({
58
+ get() {
59
+ return k.value ? n.modelValue : p.modelValue;
60
+ },
61
+ set(i) {
62
+ k.value ? n.changeEvent(i) : V && V(be, i), y.value.checked = p.modelValue === R.value;
63
+ }
64
+ }), t = ul(N(() => n == null ? void 0 : n.size)), E = il(N(() => n == null ? void 0 : n.disabled)), L = Q(!1), M = N(() => E.value || k.value && u.value !== R.value ? -1 : 0);
65
+ return yl({
66
+ from: "label act as value",
67
+ replacement: "value",
68
+ version: "3.0.0",
69
+ scope: "el-radio",
70
+ ref: "https://element-plus.org/en-US/component/radio.html"
71
+ }, N(() => k.value && Oe(p.value))), {
72
+ radioRef: y,
73
+ isGroup: k,
74
+ radioGroup: n,
75
+ focus: L,
76
+ size: t,
77
+ disabled: E,
78
+ tabIndex: M,
79
+ modelValue: u,
80
+ actualValue: R
81
+ };
82
+ }, bl = Z({
83
+ name: "ElRadio"
84
+ }), kl = /* @__PURE__ */ Z({
85
+ ...bl,
86
+ props: gl,
87
+ emits: Fe,
88
+ setup(p, { emit: V }) {
89
+ const y = p, n = ue("radio"), { radioRef: k, radioGroup: R, focus: u, size: t, disabled: E, modelValue: L, actualValue: M } = je(y, V);
90
+ function i() {
91
+ Se(() => V("change", L.value));
92
+ }
93
+ return (a, C) => {
94
+ var o;
95
+ return r(), f("label", {
96
+ class: K([
97
+ v(n).b(),
98
+ v(n).is("disabled", v(E)),
99
+ v(n).is("focus", v(u)),
100
+ v(n).is("bordered", a.border),
101
+ v(n).is("checked", v(L) === v(M)),
102
+ v(n).m(v(t))
103
+ ])
104
+ }, [
105
+ m("span", {
106
+ class: K([
107
+ v(n).e("input"),
108
+ v(n).is("disabled", v(E)),
109
+ v(n).is("checked", v(L) === v(M))
110
+ ])
111
+ }, [
112
+ pe(m("input", {
113
+ ref_key: "radioRef",
114
+ ref: k,
115
+ "onUpdate:modelValue": (l) => Te(L) ? L.value = l : null,
116
+ class: K(v(n).e("original")),
117
+ value: v(M),
118
+ name: a.name || ((o = v(R)) == null ? void 0 : o.name),
119
+ disabled: v(E),
120
+ checked: v(L) === v(M),
121
+ type: "radio",
122
+ onFocus: (l) => u.value = !0,
123
+ onBlur: (l) => u.value = !1,
124
+ onChange: i,
125
+ onClick: X(() => {
126
+ }, ["stop"])
127
+ }, null, 42, ["onUpdate:modelValue", "value", "name", "disabled", "checked", "onFocus", "onBlur", "onClick"]), [
128
+ [Ce, v(L)]
129
+ ]),
130
+ m("span", {
131
+ class: K(v(n).e("inner"))
132
+ }, null, 2)
133
+ ], 2),
134
+ m("span", {
135
+ class: K(v(n).e("label")),
136
+ onKeydown: X(() => {
137
+ }, ["stop"])
138
+ }, [
139
+ ve(a.$slots, "default", {}, () => [
140
+ D(J(a.label), 1)
141
+ ])
142
+ ], 42, ["onKeydown"])
143
+ ], 2);
144
+ };
145
+ }
146
+ });
147
+ var _l = /* @__PURE__ */ ie(kl, [["__file", "radio.vue"]]);
148
+ const hl = le({
149
+ ...De
150
+ }), Vl = Z({
151
+ name: "ElRadioButton"
152
+ }), xl = /* @__PURE__ */ Z({
153
+ ...Vl,
154
+ props: hl,
155
+ setup(p) {
156
+ const V = p, y = ue("radio"), { radioRef: n, focus: k, size: R, disabled: u, modelValue: t, radioGroup: E, actualValue: L } = je(V), M = N(() => ({
157
+ backgroundColor: (E == null ? void 0 : E.fill) || "",
158
+ borderColor: (E == null ? void 0 : E.fill) || "",
159
+ boxShadow: E != null && E.fill ? `-1px 0 0 0 ${E.fill}` : "",
160
+ color: (E == null ? void 0 : E.textColor) || ""
161
+ }));
162
+ return (i, a) => {
163
+ var C;
164
+ return r(), f("label", {
165
+ class: K([
166
+ v(y).b("button"),
167
+ v(y).is("active", v(t) === v(L)),
168
+ v(y).is("disabled", v(u)),
169
+ v(y).is("focus", v(k)),
170
+ v(y).bm("button", v(R))
171
+ ])
172
+ }, [
173
+ pe(m("input", {
174
+ ref_key: "radioRef",
175
+ ref: n,
176
+ "onUpdate:modelValue": (o) => Te(t) ? t.value = o : null,
177
+ class: K(v(y).be("button", "original-radio")),
178
+ value: v(L),
179
+ type: "radio",
180
+ name: i.name || ((C = v(E)) == null ? void 0 : C.name),
181
+ disabled: v(u),
182
+ onFocus: (o) => k.value = !0,
183
+ onBlur: (o) => k.value = !1,
184
+ onClick: X(() => {
185
+ }, ["stop"])
186
+ }, null, 42, ["onUpdate:modelValue", "value", "name", "disabled", "onFocus", "onBlur", "onClick"]), [
187
+ [Ce, v(t)]
188
+ ]),
189
+ m("span", {
190
+ class: K(v(y).be("button", "inner")),
191
+ style: el(v(t) === v(L) ? v(M) : {}),
192
+ onKeydown: X(() => {
193
+ }, ["stop"])
194
+ }, [
195
+ ve(i.$slots, "default", {}, () => [
196
+ D(J(i.label), 1)
197
+ ])
198
+ ], 46, ["onKeydown"])
199
+ ], 2);
200
+ };
201
+ }
202
+ });
203
+ var ze = /* @__PURE__ */ ie(xl, [["__file", "radio-button.vue"]]);
204
+ const Ol = le({
205
+ id: {
206
+ type: String,
207
+ default: void 0
208
+ },
209
+ size: qe,
210
+ disabled: Boolean,
211
+ modelValue: {
212
+ type: [String, Number, Boolean],
213
+ default: void 0
214
+ },
215
+ fill: {
216
+ type: String,
217
+ default: ""
218
+ },
219
+ textColor: {
220
+ type: String,
221
+ default: ""
222
+ },
223
+ name: {
224
+ type: String,
225
+ default: void 0
226
+ },
227
+ validateEvent: {
228
+ type: Boolean,
229
+ default: !0
230
+ },
231
+ ...Je(["ariaLabel"])
232
+ }), Il = Fe, $l = Z({
233
+ name: "ElRadioGroup"
234
+ }), wl = /* @__PURE__ */ Z({
235
+ ...$l,
236
+ props: Ol,
237
+ emits: Il,
238
+ setup(p, { emit: V }) {
239
+ const y = p, n = ue("radio"), k = Be(), R = Q(), { formItem: u } = cl(), { inputId: t, isLabeledByFormItem: E } = dl(y, {
240
+ formItemContext: u
241
+ }), L = (i) => {
242
+ V(be, i), Se(() => V("change", i));
243
+ };
244
+ ll(() => {
245
+ const i = R.value.querySelectorAll("[type=radio]"), a = i[0];
246
+ !Array.from(i).some((C) => C.checked) && a && (a.tabIndex = 0);
247
+ });
248
+ const M = N(() => y.name || k.value);
249
+ return tl(Le, nl({
250
+ ...al(y),
251
+ changeEvent: L,
252
+ name: M
253
+ })), ee(() => y.modelValue, () => {
254
+ y.validateEvent && (u == null || u.validate("change").catch((i) => Ge(i)));
255
+ }), (i, a) => (r(), f("div", {
256
+ id: v(t),
257
+ ref_key: "radioGroupRef",
258
+ ref: R,
259
+ class: K(v(n).b("group")),
260
+ role: "radiogroup",
261
+ "aria-label": v(E) ? void 0 : i.ariaLabel || "radio-group",
262
+ "aria-labelledby": v(E) ? v(u).labelId : void 0
263
+ }, [
264
+ ve(i.$slots, "default")
265
+ ], 10, ["id", "aria-label", "aria-labelledby"]));
266
+ }
267
+ });
268
+ var Ne = /* @__PURE__ */ ie(wl, [["__file", "radio-group.vue"]]);
269
+ const ke = Ye(_l, {
270
+ RadioButton: ze,
271
+ RadioGroup: Ne
272
+ }), _e = we(Ne), Tl = we(ze);
273
+ const Ie = {
274
+ // 品种市场 [选项: 预警字典1000]
275
+ varietyMarket: {
276
+ show: !0,
277
+ options: [
278
+ // { label: "ETF", value: 2, memo: [] },
279
+ // { label: "A股", value: 3, memo: [4, 6, 12, 14, 15, 16] },
280
+ // { label: "期货", value: 4, memo: [1, 2, 3, 5, 7, 8, 9, 10] },
281
+ // { label: "港股", value: 5, memo: [4, 6, 14] },
282
+ // { label: "外盘", value: 6, memo: [1, 2, 3, 5, 7, 8, 9, 10] },
283
+ // { label: "美股", value: 7, memo: [4, 6, 14] },
284
+ // { label: "期权", value: 8, memo: [11] },
285
+ ]
286
+ },
287
+ // 常用选项 [选项: 预警字典1003]
288
+ commonOption: {
289
+ show: !0,
290
+ options: [
291
+ // { label: "个股", value: 14 },
292
+ // { label: "期货主连", value: 1 },
293
+ // { label: "期货主力", value: 2 },
294
+ // { label: "期货加权", value: 3 },
295
+ // { label: "常用股票指数", value: 4 },
296
+ // { label: "期货收益率指数", value: 5 },
297
+ // { label: "行业板块指数", value: 6 },
298
+ // { label: "期货次主连", value: 7 },
299
+ // { label: "期货次主力", value: 8 },
300
+ // { label: "期货板块收益率指数", value: 9 },
301
+ // { label: "期货板块加权指数", value: 10 },
302
+ // { label: "期权", value: 11 },
303
+ // { label: "价差板块指数", value: 12 },
304
+ // { label: "概念板块指数", value: 15 },
305
+ ]
306
+ },
307
+ // 上市板块 [选项: 预警字典1030]
308
+ marketIds: {
309
+ show: !0,
310
+ options: [
311
+ // { label: "沪深主板", value: 1, varietyMarketIds: "3" },
312
+ // { label: "创业板", value: 2, varietyMarketIds: "3" },
313
+ // { label: "科创板", value: 4, varietyMarketIds: "3" },
314
+ // { label: "新三板", value: 8, varietyMarketIds: "3" },
315
+ // { label: "沪股通", value: 1024, varietyMarketIds: "3" },
316
+ // { label: "深股通", value: 2048, varietyMarketIds: "3" },
317
+ // { label: "沪港通", value: 4096, varietyMarketIds: "5" },
318
+ // { label: "深港通", value: 8192, varietyMarketIds: "5" },
319
+ ]
320
+ },
321
+ // 自定标签 [选项: 接口获取]
322
+ customTag: {
323
+ show: !0,
324
+ options: []
325
+ },
326
+ // 价差转换 [选项: 前端默认]
327
+ jcTranslate: {
328
+ show: !0,
329
+ jcOptions: [
330
+ { label: "恒指", value: "HZCFJC" },
331
+ { label: "恒生科技", value: "HSKJJC" },
332
+ { label: "上证50", value: "SZ50CFJC" },
333
+ { label: "沪深300", value: "HS300CFJC" },
334
+ { label: "中证500", value: "ZZ500CFJC" },
335
+ { label: "中证1000", value: "ZZ1000JC" }
336
+ ]
337
+ },
338
+ // 因子筛选 [选项: 接口获取]
339
+ factorScreen: {
340
+ show: !0,
341
+ // SQL功能是否展示
342
+ sqlShow: !1,
343
+ // 周期功能是否展示
344
+ cycleShow: !0,
345
+ // 周期默认值
346
+ cycleDefault: null,
347
+ cycleOptions: [],
348
+ // 周期下拉框数据源
349
+ factorOptions: [],
350
+ // 因子下拉框数据源
351
+ factorDescriptions: []
352
+ // 因子使用说明数据源
353
+ },
354
+ // 常用指标 [选项: 组件默认]
355
+ commonIndicator: {
356
+ show: !0,
357
+ options: [
358
+ // 总市值
359
+ {
360
+ key: "marketCapital",
361
+ label: "总市值",
362
+ parent: {
363
+ varietyMarketIds: [3, 5, 7],
364
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
365
+ },
366
+ // 便捷选项
367
+ convenientOptions: [
368
+ { range: [null, 10], unit: ["亿", "亿"], text: "≤10亿" },
369
+ { range: [null, 25], unit: ["亿", "亿"], text: "≤25亿" },
370
+ { range: [null, 50], unit: ["亿", "亿"], text: "≤50亿" },
371
+ { range: [20, 50], unit: ["亿", "亿"], text: "20亿~50亿" },
372
+ { range: [100, null], unit: ["亿", "亿"], text: "≥100亿" },
373
+ { range: [200, null], unit: ["亿", "亿"], text: "≥200亿" },
374
+ { range: [500, null], unit: ["亿", "亿"], text: "≥500亿" },
375
+ { range: [1e3, null], unit: ["亿", "亿"], text: "≥1000亿" }
376
+ ],
377
+ // 默认选中单位
378
+ defaultUnit: ["亿", "亿"],
379
+ // 单位下拉框选项
380
+ unitOptions: ["元", "千万", "亿"]
381
+ },
382
+ // 流通市值
383
+ {
384
+ key: "floatMarketCapital",
385
+ label: "流通市值",
386
+ parent: {
387
+ varietyMarketIds: [3, 5, 7],
388
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
389
+ },
390
+ // 便捷选项
391
+ convenientOptions: [
392
+ { range: [null, 5], unit: ["亿", "亿"], text: "≤5亿" },
393
+ { range: [null, 20], unit: ["亿", "亿"], text: "≤20亿" },
394
+ { range: [null, 50], unit: ["亿", "亿"], text: "≤50亿" },
395
+ { range: [null, 100], unit: ["亿", "亿"], text: "≤100亿" },
396
+ { range: [100, null], unit: ["亿", "亿"], text: "≥100亿" },
397
+ { range: [200, null], unit: ["亿", "亿"], text: "≥200亿" },
398
+ { range: [500, null], unit: ["亿", "亿"], text: "≥500亿" },
399
+ { range: [1e3, null], unit: ["亿", "亿"], text: "≥1000亿" }
400
+ ],
401
+ // 默认选中单位
402
+ defaultUnit: ["亿", "亿"],
403
+ // 单位下拉框选项
404
+ unitOptions: ["元", "千万", "亿"]
405
+ },
406
+ // 总股本
407
+ {
408
+ key: "totalShares",
409
+ label: "总股本",
410
+ parent: {
411
+ varietyMarketIds: [3, 5, 7],
412
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
413
+ },
414
+ // 便捷选项
415
+ convenientOptions: [
416
+ { range: [null, 5], unit: ["亿", "亿"], text: "≤5亿" },
417
+ { range: [null, 10], unit: ["亿", "亿"], text: "≤10亿" },
418
+ { range: [null, 75], unit: ["亿", "亿"], text: "≤75亿" },
419
+ { range: [10, 75], unit: ["亿", "亿"], text: "10亿~75亿" },
420
+ { range: [100, null], unit: ["亿", "亿"], text: "≥100亿" }
421
+ ],
422
+ // 默认选中单位
423
+ defaultUnit: ["亿", "亿"],
424
+ // 单位下拉框选项
425
+ unitOptions: ["元", "千万", "亿"]
426
+ },
427
+ // 流通股本
428
+ {
429
+ key: "freeFloatShares",
430
+ label: "流通股本",
431
+ parent: {
432
+ varietyMarketIds: [3, 5, 7],
433
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
434
+ },
435
+ // 便捷选项
436
+ convenientOptions: [
437
+ { range: [null, 5], unit: ["千万", "千万"], text: "≤5千万" },
438
+ { range: [5, 3], unit: ["千万", "亿"], text: "5千万~3亿" },
439
+ { range: [null, 5], unit: ["亿", "亿"], text: "≤5亿" },
440
+ { range: [null, 10], unit: ["亿", "亿"], text: "≤10亿" },
441
+ { range: [8, 30], unit: ["亿", "亿"], text: "8亿~30亿" },
442
+ { range: [30, null], unit: ["亿", "亿"], text: "≥30亿" }
443
+ ],
444
+ // 默认选中单位
445
+ defaultUnit: ["亿", "亿"],
446
+ // 单位下拉框选项
447
+ unitOptions: ["元", "千万", "亿"]
448
+ },
449
+ // 换手率(实)
450
+ {
451
+ key: "turnoverRate",
452
+ label: "换手率(实)",
453
+ parent: {
454
+ varietyMarketIds: [3, 5, 7],
455
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
456
+ },
457
+ // 便捷选项
458
+ convenientOptions: [
459
+ { range: [null, 1], unit: ["%", "%"], text: "≤1%" },
460
+ { range: [1, 5], unit: ["%", "%"], text: "1%~5%" },
461
+ { range: [5, 10], unit: ["%", "%"], text: "5%~10%" },
462
+ { range: [10, null], unit: ["%", "%"], text: "≥10%" }
463
+ ],
464
+ // 默认选中单位
465
+ defaultUnit: ["%", "%"],
466
+ // 单位下拉框选项
467
+ unitOptions: ["%"]
468
+ },
469
+ // 市盈率
470
+ {
471
+ key: "peTtm",
472
+ label: "市盈率",
473
+ parent: {
474
+ varietyMarketIds: [3, 5, 7],
475
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
476
+ },
477
+ // 便捷选项
478
+ convenientOptions: [
479
+ { range: [null, 0], unit: [], text: "亏损" },
480
+ { range: [0, null], unit: [], text: "≥0" },
481
+ { range: [0, 20], unit: [], text: "0~20" },
482
+ { range: [20, 40], unit: [], text: "20~40" },
483
+ { range: [40, 100], unit: [], text: "40~100" },
484
+ { range: [100, null], unit: [], text: "≥100" }
485
+ ],
486
+ // 默认选中单位
487
+ defaultUnit: [],
488
+ // 单位下拉框选项
489
+ unitOptions: []
490
+ },
491
+ // 每股净收益
492
+ {
493
+ key: "eps",
494
+ label: "每股净收益",
495
+ parent: {
496
+ varietyMarketIds: [3, 5, 7],
497
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
498
+ },
499
+ // 便捷选项
500
+ convenientOptions: [
501
+ { range: [null, 0], unit: ["元", "元"], text: "≤0" },
502
+ { range: [0, null], unit: ["元", "元"], text: "≥0" },
503
+ { range: [0.2, null], unit: ["元", "元"], text: "≥0.2元" },
504
+ { range: [0.5, null], unit: ["元", "元"], text: "≥0.5元" },
505
+ { range: [1, null], unit: ["元", "元"], text: "≥1元" },
506
+ { range: [2, null], unit: ["元", "元"], text: "≥2元" }
507
+ ],
508
+ // 默认选中单位
509
+ defaultUnit: ["元", "元"],
510
+ // 单位下拉框选项
511
+ unitOptions: ["元"]
512
+ },
513
+ // 是否ST
514
+ {
515
+ key: "st",
516
+ label: "是否ST",
517
+ parent: {
518
+ varietyMarketIds: [3, 5, 7],
519
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
520
+ },
521
+ type: "custom"
522
+ },
523
+ // 市净率
524
+ {
525
+ key: "pb",
526
+ label: "市净率",
527
+ parent: {
528
+ varietyMarketIds: [3, 5, 7],
529
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
530
+ },
531
+ // 便捷选项
532
+ convenientOptions: [
533
+ { range: [0, null], unit: [], text: "≥0" },
534
+ { range: [0, 1], unit: [], text: "0~1" },
535
+ { range: [1, 2], unit: [], text: "1~2" },
536
+ { range: [0, 3], unit: [], text: "0~3" },
537
+ { range: [3, null], unit: [], text: "≥3" }
538
+ ],
539
+ // 默认选中单位
540
+ defaultUnit: [],
541
+ // 单位下拉框选项
542
+ unitOptions: []
543
+ },
544
+ // 成交额
545
+ {
546
+ key: "mnShr",
547
+ label: "成交额",
548
+ parent: {
549
+ varietyMarketIds: [3, 5, 7],
550
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
551
+ },
552
+ // 便捷选项
553
+ convenientOptions: [
554
+ { range: [0, 1], unit: ["亿", "亿"], text: "0~1亿" },
555
+ { range: [0, 5], unit: ["亿", "亿"], text: "0~5亿" },
556
+ { range: [0, 10], unit: ["亿", "亿"], text: "0~10亿" },
557
+ { range: [10, null], unit: ["亿", "亿"], text: "≥10亿" },
558
+ { range: [50, null], unit: ["亿", "亿"], text: "≥50亿" },
559
+ { range: [100, null], unit: ["亿", "亿"], text: "≥100亿" }
560
+ ],
561
+ // 默认选中单位
562
+ defaultUnit: ["亿", "亿"],
563
+ // 单位下拉框选项
564
+ unitOptions: ["元", "千万", "亿"],
565
+ // 是否展示排名类型
566
+ showRankType: !0,
567
+ // 默认单选类型 0: 数值类型 1: 排名
568
+ defaultRadioType: "1",
569
+ // 默认数值
570
+ defaultRankRange: [0, 25]
571
+ },
572
+ // 净资产收益率roe
573
+ {
574
+ key: "roe",
575
+ label: "净资产收益率roe",
576
+ parent: {
577
+ varietyMarketIds: [3, 5, 7],
578
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
579
+ },
580
+ // 便捷选项
581
+ convenientOptions: [
582
+ { range: [null, 0], unit: ["%", "%"], text: "<0" },
583
+ { range: [0, null], unit: ["%", "%"], text: ">0" },
584
+ { range: [10, null], unit: ["%", "%"], text: ">10%" },
585
+ { range: [15, null], unit: ["%", "%"], text: ">15%" },
586
+ { range: [20, null], unit: ["%", "%"], text: ">20%" },
587
+ { range: [30, null], unit: ["%", "%"], text: ">30%" }
588
+ ],
589
+ // 默认选中单位
590
+ defaultUnit: ["%", "%"],
591
+ // 单位下拉框选项
592
+ unitOptions: ["%"]
593
+ },
594
+ // 净利润
595
+ {
596
+ key: "tFeaturelncomes",
597
+ label: "净利润",
598
+ parent: {
599
+ varietyMarketIds: [3, 5, 7],
600
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
601
+ },
602
+ type: "custom"
603
+ },
604
+ // 股息率
605
+ {
606
+ key: "dividendYield",
607
+ label: "股息率",
608
+ parent: {
609
+ varietyMarketIds: [3, 5, 7],
610
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
611
+ },
612
+ // 便捷选项
613
+ convenientOptions: [
614
+ { range: [null, 1], unit: ["%", "%"], text: "≤1%" },
615
+ { range: [1, 5], unit: ["%", "%"], text: "1%~5%" },
616
+ { range: [5, 10], unit: ["%", "%"], text: "5%~10%" },
617
+ { range: [10, null], unit: ["%", "%"], text: "≥10%" }
618
+ ],
619
+ // 默认选中单位
620
+ defaultUnit: ["%", "%"],
621
+ // 单位下拉框选项
622
+ unitOptions: ["%"]
623
+ },
624
+ // 股价分位
625
+ {
626
+ key: "priceLevels",
627
+ label: "股价分位",
628
+ parent: {
629
+ varietyMarketIds: [3, 5, 7],
630
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
631
+ },
632
+ type: "custom"
633
+ },
634
+ // 市盈率分位
635
+ {
636
+ key: "peTtmLevels",
637
+ label: "市盈率分位",
638
+ parent: {
639
+ varietyMarketIds: [3, 5, 7],
640
+ commonOptionIds: [4, 6, 12, 14, 15, 16]
641
+ },
642
+ type: "custom"
643
+ },
644
+ // ----------期权-----------
645
+ // 过期天数
646
+ {
647
+ key: "expireDays",
648
+ label: "过期天数",
649
+ parent: {
650
+ varietyMarketIds: [8],
651
+ commonOptionIds: [11]
652
+ },
653
+ // 便捷选项
654
+ convenientOptions: [],
655
+ // 默认选中单位
656
+ defaultUnit: ["天", "天"],
657
+ // 单位下拉框选项
658
+ unitOptions: ["天"]
659
+ },
660
+ // 虚实度
661
+ {
662
+ key: "virtualRealDegree",
663
+ label: "虚实度",
664
+ parent: {
665
+ varietyMarketIds: [8],
666
+ commonOptionIds: [11]
667
+ },
668
+ // 便捷选项
669
+ convenientOptions: [],
670
+ // 默认选中单位
671
+ defaultUnit: ["%", "%"],
672
+ // 单位下拉框选项
673
+ unitOptions: ["%"]
674
+ },
675
+ // 年化收益率
676
+ {
677
+ key: "yearProfitRate",
678
+ label: "年化收益率",
679
+ parent: {
680
+ varietyMarketIds: [8],
681
+ commonOptionIds: [11]
682
+ },
683
+ // 便捷选项
684
+ convenientOptions: [],
685
+ // 默认选中单位
686
+ defaultUnit: ["%", "%"],
687
+ // 单位下拉框选项
688
+ unitOptions: ["%"]
689
+ },
690
+ // 隐含波动率
691
+ {
692
+ key: "impliedVolatility",
693
+ label: "隐含波动率",
694
+ parent: {
695
+ varietyMarketIds: [8],
696
+ commonOptionIds: [11]
697
+ },
698
+ // 便捷选项
699
+ convenientOptions: [],
700
+ // 默认选中单位
701
+ defaultUnit: ["%", "%"],
702
+ // 单位下拉框选项
703
+ unitOptions: ["%"]
704
+ },
705
+ // 杠杆率
706
+ {
707
+ key: "levelMultiplier",
708
+ label: "杠杆率",
709
+ parent: {
710
+ varietyMarketIds: [8],
711
+ commonOptionIds: [11]
712
+ },
713
+ // 便捷选项
714
+ convenientOptions: [],
715
+ // 默认选中单位
716
+ defaultUnit: [],
717
+ // 单位下拉框选项
718
+ unitOptions: []
719
+ },
720
+ // 成交额(期权)
721
+ {
722
+ key: "turnover",
723
+ label: "成交额(期权)",
724
+ parent: {
725
+ varietyMarketIds: [8],
726
+ commonOptionIds: [11]
727
+ },
728
+ // 便捷选项
729
+ convenientOptions: [],
730
+ // 默认选中单位
731
+ defaultUnit: ["万", "万"],
732
+ // 单位下拉框选项
733
+ unitOptions: ["万"],
734
+ // 是否展示排名类型
735
+ showRankType: !0,
736
+ // 默认单选类型 0: 数值类型 1: 排名
737
+ defaultRadioType: "1",
738
+ // 默认数值
739
+ defaultRankRange: [0, 25]
740
+ },
741
+ // 成交量
742
+ {
743
+ key: "volume",
744
+ label: "成交量",
745
+ parent: {
746
+ varietyMarketIds: [8],
747
+ commonOptionIds: [11]
748
+ },
749
+ // 便捷选项
750
+ convenientOptions: [],
751
+ // 默认选中单位
752
+ defaultUnit: [],
753
+ // 单位下拉框选项
754
+ unitOptions: [],
755
+ // 是否展示排名类型
756
+ showRankType: !0,
757
+ // 默认单选类型 0: 数值类型 1: 排名
758
+ defaultRadioType: "1",
759
+ // 默认数值
760
+ defaultRankRange: [0, 25]
761
+ },
762
+ // 持仓量
763
+ {
764
+ key: "openInterest",
765
+ label: "持仓量",
766
+ parent: {
767
+ varietyMarketIds: [8],
768
+ commonOptionIds: [11]
769
+ },
770
+ // 便捷选项
771
+ convenientOptions: [],
772
+ // 默认选中单位
773
+ defaultUnit: [],
774
+ // 单位下拉框选项
775
+ unitOptions: [],
776
+ // 是否展示排名类型
777
+ showRankType: !0,
778
+ // 默认单选类型 0: 数值类型 1: 排名
779
+ defaultRadioType: "1",
780
+ // 默认数值
781
+ defaultRankRange: [0, 25]
782
+ },
783
+ // 认沽认购
784
+ {
785
+ key: "optionsCpType",
786
+ label: "认沽认购",
787
+ parent: {
788
+ varietyMarketIds: [8],
789
+ commonOptionIds: [11]
790
+ },
791
+ type: "custom"
792
+ },
793
+ // 期权档位
794
+ {
795
+ key: "optionGear",
796
+ label: "期权档位",
797
+ parent: {
798
+ varietyMarketIds: [8],
799
+ commonOptionIds: [11]
800
+ },
801
+ // 便捷选项
802
+ convenientOptions: [],
803
+ // 默认选中单位
804
+ defaultUnit: [],
805
+ // 单位下拉框选项
806
+ unitOptions: []
807
+ }
808
+ ]
809
+ }
810
+ }, Cl = (p, V, y) => {
811
+ !V[0] && V[0] !== 0 && !V[1] && V[1] !== 0 ? y(new Error("至少填写一个分数")) : y();
812
+ }, $e = (p) => {
813
+ const V = /(条件(\d+))/g;
814
+ return p.match(V) || [];
815
+ }, Sl = {
816
+ __name: "FactorDescription",
817
+ props: /* @__PURE__ */ te({
818
+ data: { type: Array, default: [] }
819
+ }, {
820
+ visible: { default: !1 },
821
+ visibleModifiers: {}
822
+ }),
823
+ emits: ["update:visible"],
824
+ setup(p) {
825
+ const V = ne(p, "visible");
826
+ return (y, n) => {
827
+ const k = Qe, R = Ze, u = ye;
828
+ return r(), q(u, {
829
+ modelValue: V.value,
830
+ "onUpdate:modelValue": n[0] || (n[0] = (t) => V.value = t),
831
+ title: "因子使用说明",
832
+ width: "1000",
833
+ "align-center": "",
834
+ "destroy-on-close": ""
835
+ }, {
836
+ default: d(() => [
837
+ s(R, {
838
+ data: p.data,
839
+ border: "",
840
+ height: "500"
841
+ }, {
842
+ default: d(() => [
843
+ s(k, {
844
+ prop: "factorName",
845
+ label: "因子名称",
846
+ width: "200"
847
+ }),
848
+ s(k, {
849
+ prop: "factorDesc",
850
+ label: "因子说明"
851
+ }),
852
+ s(k, {
853
+ prop: "factorScoreDefine",
854
+ label: "分值定义"
855
+ })
856
+ ]),
857
+ _: 1
858
+ }, 8, ["data"])
859
+ ]),
860
+ _: 1
861
+ }, 8, ["modelValue"]);
862
+ };
863
+ }
864
+ };
865
+ const Pe = (p) => (fe("data-v-3592dee9"), p = p(), me(), p), Ul = { class: "factor-screen" }, El = { class: "custom-header" }, Rl = ["id"], ql = { class: "form-row" }, Ml = { class: "index" }, Dl = { style: { display: "flex", "align-items": "center", width: "100%", height: "24px" } }, Fl = /* @__PURE__ */ Pe(() => /* @__PURE__ */ m("span", null, "~", -1)), Ll = /* @__PURE__ */ Pe(() => /* @__PURE__ */ m("span", null, "&&代表and,||代表or", -1)), jl = { class: "dialog-footer" }, zl = {
866
+ __name: "index",
867
+ props: /* @__PURE__ */ te({
868
+ config: {
869
+ type: Object,
870
+ default: {
871
+ sqlShow: !1,
872
+ // 是否启用SQL功能
873
+ cycleShow: !0,
874
+ // 是否展示周期
875
+ cycleDefault: null,
876
+ // 周期默认值
877
+ cycleOptions: [],
878
+ // 周期下拉框选项
879
+ factorOptions: [],
880
+ // 因子下拉框选项
881
+ factorDescriptions: []
882
+ // 因子使用说明数据源
883
+ }
884
+ }
885
+ }, {
886
+ data: {
887
+ default: {
888
+ list: [],
889
+ sqlEnable: 0,
890
+ sqlValue: null
891
+ }
892
+ },
893
+ dataModifiers: {}
894
+ }),
895
+ emits: ["update:data"],
896
+ setup(p) {
897
+ const V = p, y = ne(p, "data"), n = Q(!1), k = Q(!1), R = Q(null), u = Q({
898
+ // 筛选因子列表
899
+ list: [
900
+ {
901
+ cycle: V.config.cycleDefault ?? null,
902
+ // 周期
903
+ factor: null,
904
+ // 因子
905
+ score: [null, null]
906
+ // 得分
907
+ }
908
+ ],
909
+ // 是否开启SQL功能 0关闭, 1开启
910
+ sqlEnable: 0,
911
+ // SQL语句
912
+ sqlValue: null
913
+ }), t = () => {
914
+ const { list: o, sqlEnable: l, sqlValue: g } = y.value;
915
+ u.value = {
916
+ list: JSON.parse(JSON.stringify(o)),
917
+ sqlEnable: l,
918
+ sqlValue: g
919
+ }, u.value.list.length || M(), n.value = !0;
920
+ }, E = () => {
921
+ R.value.validate((o) => {
922
+ const { list: l, sqlEnable: g, sqlValue: O } = u.value;
923
+ if (o) {
924
+ if (g) {
925
+ if (!O)
926
+ return A.error("SQL语句不能为空");
927
+ const _ = $e(O), $ = l.map((I, S) => `条件${S + 1}`), h = _.filter((I) => !$.includes(I));
928
+ if (h.length)
929
+ return A.error(`请检查SQL语句, 不存在[${h}]`);
930
+ }
931
+ y.value = {
932
+ list: JSON.parse(JSON.stringify(l)),
933
+ sqlEnable: g,
934
+ sqlValue: O
935
+ }, n.value = !1;
936
+ }
937
+ });
938
+ }, L = (o) => {
939
+ u.value.list.splice(o, 1);
940
+ }, M = (o) => {
941
+ switch (o) {
942
+ case "compare": {
943
+ u.value.list.push({
944
+ key: "compare",
945
+ cycle: V.config.cycleDefault ?? null,
946
+ factor: null,
947
+ compareType: ">",
948
+ cycle2: V.config.cycleDefault ?? null,
949
+ factor2: null
950
+ });
951
+ break;
952
+ }
953
+ default: {
954
+ u.value.list.push({
955
+ cycle: V.config.cycleDefault ?? null,
956
+ factor: null,
957
+ score: [null, null]
958
+ });
959
+ break;
960
+ }
961
+ }
962
+ }, i = () => {
963
+ R.value.validate((o) => {
964
+ if (o)
965
+ if (u.value.sqlValue) {
966
+ const l = $e(u.value.sqlValue);
967
+ u.value.sqlValue = u.value.list.reduce((g, O, _) => (l.includes(`条件${_ + 1}`) || (g += `&& 条件${_ + 1} `), g), u.value.sqlValue);
968
+ } else
969
+ u.value.sqlValue = u.value.list.reduce((l, g, O) => (O === 0 ? l += `条件${O + 1} ` : l += `&& 条件${O + 1} `, l), "");
970
+ });
971
+ }, a = (o) => {
972
+ switch (o.key) {
973
+ case "compare": {
974
+ const { cycle: l, factor: g, compareType: O, cycle2: _, factor2: $ } = o;
975
+ let h = "";
976
+ return h += ` ${V.config.cycleOptions.find(({ value: I }) => I === l).label}`, h += ` ${V.config.factorOptions.find(({ value: I }) => I === g).label}`, h += ` ${O}`, h += ` ${V.config.cycleOptions.find(({ value: I }) => I === _).label}`, h += ` ${V.config.factorOptions.find(({ value: I }) => I === $).label}`, h;
977
+ }
978
+ default: {
979
+ const { cycle: l, factor: g, score: O } = o;
980
+ let _ = "";
981
+ return _ += ` ${V.config.cycleOptions.find(({ value: $ }) => $ === l).label}`, _ += ` ${V.config.factorOptions.find(({ value: $ }) => $ === g).label}`, _ += ` ${O[0] || O[0] === 0 ? `${O[0]}分` : "∞"}`, _ += " ~", _ += ` ${O[1] || O[1] === 0 ? `${O[1]}分` : "∞"}`, _;
982
+ }
983
+ }
984
+ }, C = (o, l) => {
985
+ switch (o) {
986
+ case "sqlTag": {
987
+ y.value = {
988
+ list: [],
989
+ sqlEnable: 0,
990
+ sqlValue: null
991
+ };
992
+ break;
993
+ }
994
+ case "factorTag": {
995
+ y.value.list.splice(l, 1);
996
+ break;
997
+ }
998
+ }
999
+ };
1000
+ return (o, l) => {
1001
+ var W;
1002
+ const g = Ke, O = Me, _ = Re, $ = fl, h = Ae, I = ce, S = de, b = sl, P = Ee, c = ke, e = _e, G = Ue, B = rl, oe = ye;
1003
+ return r(), f(U, null, [
1004
+ m("div", Ul, [
1005
+ m("div", null, [
1006
+ y.value.sqlEnable && y.value.sqlValue ? (r(), q(O, {
1007
+ key: 0,
1008
+ closable: "",
1009
+ type: "info",
1010
+ title: y.value.sqlValue,
1011
+ onClose: l[0] || (l[0] = (w) => C("sqlTag"))
1012
+ }, {
1013
+ default: d(() => [
1014
+ s(g, {
1015
+ type: "info",
1016
+ truncated: "",
1017
+ style: { "max-width": "500px" }
1018
+ }, {
1019
+ default: d(() => [
1020
+ D(J(y.value.sqlValue), 1)
1021
+ ]),
1022
+ _: 1
1023
+ })
1024
+ ]),
1025
+ _: 1
1026
+ }, 8, ["title"])) : z("", !0),
1027
+ !y.value.sqlEnable && y.value.list.length ? (r(!0), f(U, { key: 1 }, j(y.value.list, (w, Y) => (r(), q(O, {
1028
+ closable: "",
1029
+ type: "info",
1030
+ onClose: (x) => C("factorTag", Y)
1031
+ }, {
1032
+ default: d(() => [
1033
+ D(J(a(w)), 1)
1034
+ ]),
1035
+ _: 2
1036
+ }, 1032, ["onClose"]))), 256)) : z("", !0),
1037
+ s(_, {
1038
+ class: "screen-btn",
1039
+ type: "primary",
1040
+ plain: "",
1041
+ size: "small",
1042
+ icon: v(re),
1043
+ onClick: t
1044
+ }, {
1045
+ default: d(() => [
1046
+ D(" 添加因子 ")
1047
+ ]),
1048
+ _: 1
1049
+ }, 8, ["icon"])
1050
+ ]),
1051
+ s(oe, {
1052
+ modelValue: n.value,
1053
+ "onUpdate:modelValue": l[5] || (l[5] = (w) => n.value = w),
1054
+ width: "680",
1055
+ "align-center": "",
1056
+ "destroy-on-close": ""
1057
+ }, {
1058
+ header: d(({ titleId: w, titleClass: Y }) => [
1059
+ m("div", El, [
1060
+ m("span", {
1061
+ id: w,
1062
+ class: K(Y)
1063
+ }, " 因子筛选 ", 10, Rl),
1064
+ s(h, {
1065
+ effect: "dark",
1066
+ content: "点击查看: 因子使用说明",
1067
+ placement: "right"
1068
+ }, {
1069
+ default: d(() => [
1070
+ s($, {
1071
+ onClick: l[1] || (l[1] = (x) => k.value = !0)
1072
+ }, {
1073
+ default: d(() => [
1074
+ s(v(pl))
1075
+ ]),
1076
+ _: 1
1077
+ })
1078
+ ]),
1079
+ _: 1
1080
+ })
1081
+ ])
1082
+ ]),
1083
+ footer: d(() => [
1084
+ m("div", jl, [
1085
+ s(_, {
1086
+ type: "primary",
1087
+ onClick: E
1088
+ }, {
1089
+ default: d(() => [
1090
+ D("确定")
1091
+ ]),
1092
+ _: 1
1093
+ })
1094
+ ])
1095
+ ]),
1096
+ default: d(() => [
1097
+ s(B, {
1098
+ ref_key: "dialogFormRef",
1099
+ ref: R,
1100
+ model: u.value
1101
+ }, {
1102
+ default: d(() => [
1103
+ (r(!0), f(U, null, j(u.value.list, (w, Y) => (r(), f("div", ql, [
1104
+ m("span", Ml, J(`条件${Y + 1}`), 1),
1105
+ w.key === "compare" ? (r(), f(U, { key: 0 }, [
1106
+ p.config.cycleShow ? (r(), q(b, {
1107
+ key: 0,
1108
+ prop: "list." + Y + ".cycle",
1109
+ rules: { required: !0, message: "周期不能为空", trigger: "blur" },
1110
+ style: { width: "100px", "margin-right": "10px" }
1111
+ }, {
1112
+ default: d(() => [
1113
+ s(S, {
1114
+ modelValue: w.cycle,
1115
+ "onUpdate:modelValue": (x) => w.cycle = x,
1116
+ placeholder: "选择周期",
1117
+ size: "small"
1118
+ }, {
1119
+ default: d(() => [
1120
+ (r(!0), f(U, null, j(p.config.cycleOptions, ({ label: x, value: T }) => (r(), q(I, {
1121
+ label: x,
1122
+ value: T,
1123
+ key: T
1124
+ }, null, 8, ["label", "value"]))), 128))
1125
+ ]),
1126
+ _: 2
1127
+ }, 1032, ["modelValue", "onUpdate:modelValue"])
1128
+ ]),
1129
+ _: 2
1130
+ }, 1032, ["prop"])) : z("", !0),
1131
+ s(b, {
1132
+ prop: "list." + Y + ".factor",
1133
+ rules: { required: !0, message: "因子不能为空", trigger: "blur" },
1134
+ style: { width: "132px", "margin-right": "10px" }
1135
+ }, {
1136
+ default: d(() => [
1137
+ s(S, {
1138
+ modelValue: w.factor,
1139
+ "onUpdate:modelValue": (x) => w.factor = x,
1140
+ placeholder: "选择因子",
1141
+ filterable: "",
1142
+ size: "small",
1143
+ "no-match-text": "无匹配数据"
1144
+ }, {
1145
+ default: d(() => {
1146
+ var x;
1147
+ return [
1148
+ (r(!0), f(U, null, j((x = p.config.factorOptions) == null ? void 0 : x.filter((T) => [4].includes(T.type)), ({ label: T, value: F }) => (r(), q(I, {
1149
+ label: T,
1150
+ value: F,
1151
+ key: F
1152
+ }, null, 8, ["label", "value"]))), 128))
1153
+ ];
1154
+ }),
1155
+ _: 2
1156
+ }, 1032, ["modelValue", "onUpdate:modelValue"])
1157
+ ]),
1158
+ _: 2
1159
+ }, 1032, ["prop"]),
1160
+ s(b, { style: { width: "52px", "margin-right": "10px" } }, {
1161
+ default: d(() => [
1162
+ s(S, {
1163
+ modelValue: w.compareType,
1164
+ "onUpdate:modelValue": (x) => w.compareType = x,
1165
+ size: "small"
1166
+ }, {
1167
+ default: d(() => [
1168
+ (r(), f(U, null, j([">", ">=", "<", "<="], (x) => s(I, {
1169
+ label: x,
1170
+ value: x,
1171
+ key: x
1172
+ }, null, 8, ["label", "value"])), 64))
1173
+ ]),
1174
+ _: 2
1175
+ }, 1032, ["modelValue", "onUpdate:modelValue"])
1176
+ ]),
1177
+ _: 2
1178
+ }, 1024),
1179
+ p.config.cycleShow ? (r(), q(b, {
1180
+ key: 1,
1181
+ prop: "list." + Y + ".cycle2",
1182
+ rules: { required: !0, message: "周期不能为空", trigger: "blur" },
1183
+ style: { width: "100px", "margin-right": "10px" }
1184
+ }, {
1185
+ default: d(() => [
1186
+ s(S, {
1187
+ modelValue: w.cycle2,
1188
+ "onUpdate:modelValue": (x) => w.cycle2 = x,
1189
+ placeholder: "选择周期",
1190
+ size: "small"
1191
+ }, {
1192
+ default: d(() => [
1193
+ (r(!0), f(U, null, j(p.config.cycleOptions, ({ label: x, value: T }) => (r(), q(I, {
1194
+ label: x,
1195
+ value: T,
1196
+ key: T
1197
+ }, null, 8, ["label", "value"]))), 128))
1198
+ ]),
1199
+ _: 2
1200
+ }, 1032, ["modelValue", "onUpdate:modelValue"])
1201
+ ]),
1202
+ _: 2
1203
+ }, 1032, ["prop"])) : z("", !0),
1204
+ s(b, {
1205
+ prop: "list." + Y + ".factor2",
1206
+ rules: { required: !0, message: "因子不能为空", trigger: "blur" },
1207
+ style: { width: "132px", "margin-right": "10px" }
1208
+ }, {
1209
+ default: d(() => [
1210
+ s(S, {
1211
+ modelValue: w.factor2,
1212
+ "onUpdate:modelValue": (x) => w.factor2 = x,
1213
+ placeholder: "选择因子",
1214
+ filterable: "",
1215
+ size: "small",
1216
+ "no-match-text": "无匹配数据"
1217
+ }, {
1218
+ default: d(() => {
1219
+ var x;
1220
+ return [
1221
+ (r(!0), f(U, null, j((x = p.config.factorOptions) == null ? void 0 : x.filter((T) => [4].includes(T.type)), ({ label: T, value: F }) => (r(), q(I, {
1222
+ label: T,
1223
+ value: F,
1224
+ key: F
1225
+ }, null, 8, ["label", "value"]))), 128))
1226
+ ];
1227
+ }),
1228
+ _: 2
1229
+ }, 1032, ["modelValue", "onUpdate:modelValue"])
1230
+ ]),
1231
+ _: 2
1232
+ }, 1032, ["prop"])
1233
+ ], 64)) : (r(), f(U, { key: 1 }, [
1234
+ p.config.cycleShow ? (r(), q(b, {
1235
+ key: 0,
1236
+ prop: "list." + Y + ".cycle",
1237
+ rules: { required: !0, message: "周期不能为空", trigger: "blur" },
1238
+ style: { width: "100px", "margin-right": "10px" }
1239
+ }, {
1240
+ default: d(() => [
1241
+ s(S, {
1242
+ modelValue: w.cycle,
1243
+ "onUpdate:modelValue": (x) => w.cycle = x,
1244
+ placeholder: "选择周期",
1245
+ size: "small"
1246
+ }, {
1247
+ default: d(() => [
1248
+ (r(!0), f(U, null, j(p.config.cycleOptions, ({ label: x, value: T }) => (r(), q(I, {
1249
+ label: x,
1250
+ value: T,
1251
+ key: T
1252
+ }, null, 8, ["label", "value"]))), 128))
1253
+ ]),
1254
+ _: 2
1255
+ }, 1032, ["modelValue", "onUpdate:modelValue"])
1256
+ ]),
1257
+ _: 2
1258
+ }, 1032, ["prop"])) : z("", !0),
1259
+ s(b, {
1260
+ prop: "list." + Y + ".factor",
1261
+ rules: { required: !0, message: "因子不能为空", trigger: "blur" },
1262
+ style: { width: "194px", "margin-right": "10px" }
1263
+ }, {
1264
+ default: d(() => [
1265
+ s(S, {
1266
+ modelValue: w.factor,
1267
+ "onUpdate:modelValue": (x) => w.factor = x,
1268
+ placeholder: "选择因子",
1269
+ filterable: "",
1270
+ size: "small",
1271
+ "no-match-text": "无匹配数据"
1272
+ }, {
1273
+ default: d(() => {
1274
+ var x;
1275
+ return [
1276
+ (r(!0), f(U, null, j((x = p.config.factorOptions) == null ? void 0 : x.filter((T) => [1, 3].includes(T.type)), ({ label: T, value: F }) => (r(), q(I, {
1277
+ label: T,
1278
+ value: F,
1279
+ key: F
1280
+ }, null, 8, ["label", "value"]))), 128))
1281
+ ];
1282
+ }),
1283
+ _: 2
1284
+ }, 1032, ["modelValue", "onUpdate:modelValue"])
1285
+ ]),
1286
+ _: 2
1287
+ }, 1032, ["prop"]),
1288
+ s(b, {
1289
+ prop: "list." + Y + ".score",
1290
+ rules: { validator: v(Cl), trigger: "blur" },
1291
+ style: { width: "200px", "margin-right": "10px" }
1292
+ }, {
1293
+ default: d(() => [
1294
+ m("div", Dl, [
1295
+ s(P, {
1296
+ modelValue: w.score[0],
1297
+ "onUpdate:modelValue": (x) => w.score[0] = x,
1298
+ size: "small",
1299
+ "controls-position": "right"
1300
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
1301
+ Fl,
1302
+ s(P, {
1303
+ modelValue: w.score[1],
1304
+ "onUpdate:modelValue": (x) => w.score[1] = x,
1305
+ size: "small",
1306
+ "controls-position": "right"
1307
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
1308
+ ])
1309
+ ]),
1310
+ _: 2
1311
+ }, 1032, ["prop", "rules"])
1312
+ ], 64)),
1313
+ s($, {
1314
+ onClick: (x) => L(Y)
1315
+ }, {
1316
+ default: d(() => [
1317
+ s(v(vl))
1318
+ ]),
1319
+ _: 2
1320
+ }, 1032, ["onClick"])
1321
+ ]))), 256)),
1322
+ s(_, {
1323
+ type: "primary",
1324
+ plain: "",
1325
+ size: "small",
1326
+ icon: v(re),
1327
+ onClick: M,
1328
+ style: { "margin-bottom": "10px" }
1329
+ }, {
1330
+ default: d(() => [
1331
+ D("添加因子")
1332
+ ]),
1333
+ _: 1
1334
+ }, 8, ["icon"]),
1335
+ s(_, {
1336
+ type: "primary",
1337
+ plain: "",
1338
+ size: "small",
1339
+ icon: v(re),
1340
+ onClick: l[2] || (l[2] = (w) => M("compare")),
1341
+ style: { "margin-bottom": "10px" }
1342
+ }, {
1343
+ default: d(() => [
1344
+ D("添加因子对比")
1345
+ ]),
1346
+ _: 1
1347
+ }, 8, ["icon"]),
1348
+ p.config.sqlShow ? (r(), f(U, { key: 0 }, [
1349
+ s(b, { label: "SQL功能: " }, {
1350
+ default: d(() => [
1351
+ s(e, {
1352
+ modelValue: u.value.sqlEnable,
1353
+ "onUpdate:modelValue": l[3] || (l[3] = (w) => u.value.sqlEnable = w)
1354
+ }, {
1355
+ default: d(() => [
1356
+ s(c, {
1357
+ label: "关闭",
1358
+ value: 0
1359
+ }),
1360
+ s(c, {
1361
+ label: "启用",
1362
+ value: 1
1363
+ })
1364
+ ]),
1365
+ _: 1
1366
+ }, 8, ["modelValue"]),
1367
+ u.value.sqlEnable ? (r(), q(_, {
1368
+ key: 0,
1369
+ type: "primary",
1370
+ size: "small",
1371
+ onClick: i,
1372
+ style: { "margin-left": "auto" }
1373
+ }, {
1374
+ default: d(() => [
1375
+ D("生成SQL")
1376
+ ]),
1377
+ _: 1
1378
+ })) : z("", !0)
1379
+ ]),
1380
+ _: 1
1381
+ }),
1382
+ u.value.sqlEnable ? (r(), f(U, { key: 0 }, [
1383
+ s(G, {
1384
+ modelValue: u.value.sqlValue,
1385
+ "onUpdate:modelValue": l[4] || (l[4] = (w) => u.value.sqlValue = w),
1386
+ autosize: { minRows: 4 },
1387
+ type: "textarea",
1388
+ style: { "margin-bottom": "10px" }
1389
+ }, null, 8, ["modelValue"]),
1390
+ Ll
1391
+ ], 64)) : z("", !0)
1392
+ ], 64)) : z("", !0)
1393
+ ]),
1394
+ _: 1
1395
+ }, 8, ["model"])
1396
+ ]),
1397
+ _: 1
1398
+ }, 8, ["modelValue"])
1399
+ ]),
1400
+ s(Sl, {
1401
+ visible: k.value,
1402
+ "onUpdate:visible": l[6] || (l[6] = (w) => k.value = w),
1403
+ data: (W = p.config.factorDescriptions) == null ? void 0 : W.filter((w) => [1, 3].includes(w.type))
1404
+ }, null, 8, ["visible", "data"])
1405
+ ], 64);
1406
+ };
1407
+ }
1408
+ }, Nl = /* @__PURE__ */ ge(zl, [["__scopeId", "data-v-3592dee9"]]);
1409
+ const ae = (p) => (fe("data-v-bdb03941"), p = p(), me(), p), Pl = {
1410
+ key: 0,
1411
+ class: "common-indicator"
1412
+ }, Bl = { class: "indicator" }, Gl = /* @__PURE__ */ ae(() => /* @__PURE__ */ m("div", { class: "title" }, [
1413
+ /* @__PURE__ */ m("span", null, "常用指标: "),
1414
+ /* @__PURE__ */ m("span", null, "不限")
1415
+ ], -1)), Yl = { class: "options" }, Jl = ["onClick"], Al = { class: "tags" }, Kl = ["onClick"], Ql = { style: { "font-size": "18px" } }, Zl = {
1416
+ key: 0,
1417
+ class: "out-box"
1418
+ }, Hl = /* @__PURE__ */ ae(() => /* @__PURE__ */ m("span", null, "自定义: ", -1)), Wl = {
1419
+ key: 0,
1420
+ class: "convenient-option-box"
1421
+ }, Xl = { class: "out-box" }, et = /* @__PURE__ */ ae(() => /* @__PURE__ */ m("span", null, "自定义: ", -1)), lt = { key: 0 }, tt = { key: 0 }, nt = { key: 0 }, at = { key: 1 }, ot = { class: "tFeaturelncomes-option-box" }, st = { class: "tFeaturelncomes-out-box" }, rt = /* @__PURE__ */ ae(() => /* @__PURE__ */ m("span", null, "自定义: ", -1)), ut = { key: 2 }, it = { key: 3 }, ct = { key: 4 }, dt = { class: "dialog-footer" }, pt = {
1422
+ __name: "index",
1423
+ props: /* @__PURE__ */ te({
1424
+ config: { type: Object, default: () => {
1425
+ } },
1426
+ varietyMarket: { type: Number, default: () => null },
1427
+ // 已选品种市场
1428
+ commonOption: { type: Array, default: () => [] }
1429
+ // 已选常用选项
1430
+ }, {
1431
+ data: { default: [] },
1432
+ dataModifiers: {}
1433
+ }),
1434
+ emits: ["update:data"],
1435
+ setup(p) {
1436
+ const V = ne(p, "data"), y = p, n = Q(!1), k = N(() => {
1437
+ var o;
1438
+ return (o = y.data.find((l) => l.radioType === "1")) == null ? void 0 : o.key;
1439
+ }), R = N(() => {
1440
+ let o = [];
1441
+ return y.varietyMarket === null && !y.commonOption.length ? o = y.config.options : (o = y.config.options, y.varietyMarket && (o = o.filter(({ parent: l }) => l.varietyMarketIds.includes(y.varietyMarket))), y.commonOption.length && (o = o.filter(({ parent: l }) => {
1442
+ const { commonOptionIds: g } = l;
1443
+ return [.../* @__PURE__ */ new Set([...g, ...y.commonOption])].length !== [...g, ...y.commonOption].length;
1444
+ }))), o;
1445
+ }), u = Q({}), t = Q({}), E = (o) => {
1446
+ u.value = o;
1447
+ const l = {
1448
+ key: o.key,
1449
+ type: o.type,
1450
+ label: o.label
1451
+ };
1452
+ switch (o.key) {
1453
+ case "st": {
1454
+ t.value = { ...l, st: null };
1455
+ break;
1456
+ }
1457
+ case "tFeaturelncomes": {
1458
+ t.value = {
1459
+ ...l,
1460
+ rule: 1,
1461
+ // 1超 2跌
1462
+ withFewYears: null,
1463
+ yearsCount: null,
1464
+ netProfit: null
1465
+ };
1466
+ break;
1467
+ }
1468
+ case "priceLevels": {
1469
+ t.value = { ...l, priceLevels: null };
1470
+ break;
1471
+ }
1472
+ case "peTtmLevels": {
1473
+ t.value = { ...l, peTtmLevels: null };
1474
+ break;
1475
+ }
1476
+ case "optionsCpType": {
1477
+ t.value = {
1478
+ ...l,
1479
+ optionsCpType: null
1480
+ // 1看涨 2看跌
1481
+ };
1482
+ break;
1483
+ }
1484
+ default:
1485
+ t.value = {
1486
+ ...l,
1487
+ range: [null, null],
1488
+ unit: o.defaultUnit.length ? [...o.defaultUnit] : [null, null],
1489
+ radioType: k.value && k.value !== o.key ? "0" : o.defaultRadioType,
1490
+ // 0数值 1排名
1491
+ rankRange: o.defaultRankRange || [null, null]
1492
+ // 默认排名
1493
+ };
1494
+ }
1495
+ n.value = !0;
1496
+ }, L = () => {
1497
+ switch (t.value.key) {
1498
+ case "st": {
1499
+ const { label: l, st: g } = t.value;
1500
+ if (g === null)
1501
+ return A.warning("格式错误: 请至少选择一个值");
1502
+ t.value.tagText = `${l}: ${g ? "是" : "否"}`;
1503
+ break;
1504
+ }
1505
+ case "tFeaturelncomes": {
1506
+ const { label: l, rule: g, withFewYears: O, yearsCount: _, netProfit: $ } = t.value;
1507
+ if (["", null].includes(O) || ["", null].includes(_) || ["", null].includes($))
1508
+ return A.warning("格式错误: 请填写完整");
1509
+ t.value.tagText = `${l}: ${O}年内${_}年以上盈利${g === 1 ? "超" : "跌"}过${$}亿`;
1510
+ break;
1511
+ }
1512
+ case "priceLevels": {
1513
+ const { label: l, priceLevels: g } = t.value;
1514
+ if (!g || g.length === 0)
1515
+ return A.warning("格式错误: 请至少选择一个值");
1516
+ t.value.tagText = `${l}: 已选${g}分位`;
1517
+ break;
1518
+ }
1519
+ case "peTtmLevels": {
1520
+ const { label: l, peTtmLevels: g } = t.value;
1521
+ if (!g || g.length === 0)
1522
+ return A.warning("格式错误: 请至少选择一个值");
1523
+ t.value.tagText = `${l}: 已选${g}分位`;
1524
+ break;
1525
+ }
1526
+ case "optionsCpType": {
1527
+ const { label: l, optionsCpType: g } = t.value;
1528
+ if (g === null)
1529
+ return A.warning("格式错误: 请至少选择一个值");
1530
+ t.value.tagText = `${l}: ${g === 1 ? "看涨" : "看跌"}`;
1531
+ break;
1532
+ }
1533
+ default: {
1534
+ const { label: l, unit: g, radioType: O } = t.value, _ = O === "1" ? t.value.rankRange : t.value.range;
1535
+ if (["", null].includes(_[0]) && ["", null].includes(_[1]))
1536
+ return A.warning("格式错误: 请至少填写一个值");
1537
+ if (O === "1") {
1538
+ const I = Number(_[0]), S = Number(_[1]);
1539
+ if (isNaN(I) || isNaN(S))
1540
+ return A.warning("格式错误: 请填写数字");
1541
+ if (I < 0 || S < 0)
1542
+ return A.warning("格式错误: 请填写大于0的数字");
1543
+ if (I > S)
1544
+ return A.warning("格式错误: 请填写正确的排名范围");
1545
+ }
1546
+ const $ = O === "1" ? "" : g[0] ?? "", h = O === "1" ? "" : g[1] ?? "";
1547
+ !["", null].includes(_[0]) && !["", null].includes(_[1]) ? t.value.tagText = `${l}${O === "1" ? "排名" : ""}: ${_[0]}${$} ~ ${_[1]}${h}` : ["", null].includes(_[0]) ? t.value.tagText = `${l}${O === "1" ? "排名" : ""}: ≤${_[1]}${h}` : t.value.tagText = `${l}${O === "1" ? "排名" : ""}: ≥${_[0]}${$}`;
1548
+ }
1549
+ }
1550
+ const o = V.value.findIndex(({ key: l }) => l === t.value.key);
1551
+ o === -1 ? V.value.push(t.value) : V.value.splice(o, 1, t.value), n.value = !1;
1552
+ }, M = (o) => {
1553
+ u.value = R.value.find(({ key: l }) => l === o.key), t.value = JSON.parse(JSON.stringify(o)), n.value = !0;
1554
+ }, i = (o) => {
1555
+ V.value.splice(o, 1);
1556
+ }, a = (o) => {
1557
+ t.value.range = [...o.range], t.value.unit = [...o.unit];
1558
+ }, C = (o) => {
1559
+ switch (o) {
1560
+ case "≤0":
1561
+ Object.assign(t.value, {
1562
+ rule: 2,
1563
+ // 1超 2跌
1564
+ withFewYears: 1,
1565
+ yearsCount: 1,
1566
+ netProfit: 0
1567
+ });
1568
+ break;
1569
+ case "≥0":
1570
+ Object.assign(t.value, {
1571
+ rule: 1,
1572
+ withFewYears: 1,
1573
+ yearsCount: 1,
1574
+ netProfit: 0
1575
+ });
1576
+ break;
1577
+ case "五年内有四年以上盈利超过5千万":
1578
+ Object.assign(t.value, {
1579
+ rule: 1,
1580
+ withFewYears: 5,
1581
+ yearsCount: 4,
1582
+ netProfit: 0.5
1583
+ });
1584
+ break;
1585
+ case "≥10亿":
1586
+ Object.assign(t.value, {
1587
+ rule: 1,
1588
+ withFewYears: 1,
1589
+ yearsCount: 1,
1590
+ netProfit: 10
1591
+ });
1592
+ break;
1593
+ case "≥20亿":
1594
+ Object.assign(t.value, {
1595
+ rule: 1,
1596
+ withFewYears: 1,
1597
+ yearsCount: 1,
1598
+ netProfit: 20
1599
+ });
1600
+ break;
1601
+ }
1602
+ };
1603
+ return ee(
1604
+ () => R.value,
1605
+ () => {
1606
+ V.value.length && (V.value = V.value.filter(({ key: o }) => R.value.find((l) => l.key === o)));
1607
+ }
1608
+ ), (o, l) => {
1609
+ const g = Me, O = Tl, _ = _e, $ = Ue, h = Re, I = ce, S = de, b = ke, P = Ee, c = ye;
1610
+ return p.config.show && R.value.length ? (r(), f("div", Pl, [
1611
+ m("div", Bl, [
1612
+ Gl,
1613
+ m("div", Yl, [
1614
+ (r(!0), f(U, null, j(R.value, (e) => (r(), f("span", {
1615
+ key: e.key,
1616
+ onClick: (G) => E(e)
1617
+ }, J(e.label), 9, Jl))), 128))
1618
+ ])
1619
+ ]),
1620
+ m("div", Al, [
1621
+ (r(!0), f(U, null, j(V.value, (e, G) => (r(), q(g, {
1622
+ closable: "",
1623
+ type: "info",
1624
+ onClose: (B) => i(G)
1625
+ }, {
1626
+ default: d(() => [
1627
+ m("span", null, J(e.tagText), 1),
1628
+ m("span", {
1629
+ class: "edit",
1630
+ onClick: (B) => M(e)
1631
+ }, "编辑", 8, Kl)
1632
+ ]),
1633
+ _: 2
1634
+ }, 1032, ["onClose"]))), 256))
1635
+ ]),
1636
+ s(c, {
1637
+ modelValue: n.value,
1638
+ "onUpdate:modelValue": l[19] || (l[19] = (e) => n.value = e),
1639
+ title: u.value.label,
1640
+ width: "600",
1641
+ "align-center": "",
1642
+ "destroy-on-close": ""
1643
+ }, se({
1644
+ footer: d(() => [
1645
+ m("div", dt, [
1646
+ s(h, {
1647
+ type: "primary",
1648
+ onClick: L
1649
+ }, {
1650
+ default: d(() => [
1651
+ D("确定")
1652
+ ]),
1653
+ _: 1
1654
+ })
1655
+ ])
1656
+ ]),
1657
+ default: d(() => [
1658
+ u.value.type === void 0 && t.value.radioType === "1" ? (r(), f("div", Zl, [
1659
+ Hl,
1660
+ s($, {
1661
+ modelValue: t.value.rankRange[0],
1662
+ "onUpdate:modelValue": l[1] || (l[1] = (e) => t.value.rankRange[0] = e),
1663
+ style: { flex: "1" }
1664
+ }, null, 8, ["modelValue"]),
1665
+ D(" ~ "),
1666
+ s($, {
1667
+ modelValue: t.value.rankRange[1],
1668
+ "onUpdate:modelValue": l[2] || (l[2] = (e) => t.value.rankRange[1] = e),
1669
+ style: { flex: "1" }
1670
+ }, null, 8, ["modelValue"])
1671
+ ])) : u.value.type === void 0 ? (r(), f(U, { key: 1 }, [
1672
+ u.value.convenientOptions.length ? (r(), f("div", Wl, [
1673
+ (r(!0), f(U, null, j(u.value.convenientOptions, (e) => (r(), q(h, {
1674
+ key: e.text,
1675
+ onClick: (G) => a(e)
1676
+ }, {
1677
+ default: d(() => [
1678
+ D(J(e.text), 1)
1679
+ ]),
1680
+ _: 2
1681
+ }, 1032, ["onClick"]))), 128))
1682
+ ])) : z("", !0),
1683
+ m("div", Xl, [
1684
+ et,
1685
+ s($, {
1686
+ modelValue: t.value.range[0],
1687
+ "onUpdate:modelValue": l[4] || (l[4] = (e) => t.value.range[0] = e),
1688
+ style: { flex: "1" }
1689
+ }, se({ _: 2 }, [
1690
+ u.value.unitOptions.length ? {
1691
+ name: "append",
1692
+ fn: d(() => [
1693
+ u.value.unitOptions.length === 1 ? (r(), f("span", lt, J(t.value.unit[0]), 1)) : (r(), q(S, {
1694
+ key: 1,
1695
+ modelValue: t.value.unit[0],
1696
+ "onUpdate:modelValue": l[3] || (l[3] = (e) => t.value.unit[0] = e),
1697
+ style: { width: "72px" }
1698
+ }, {
1699
+ default: d(() => [
1700
+ (r(!0), f(U, null, j(u.value.unitOptions, (e) => (r(), q(I, {
1701
+ label: e,
1702
+ value: e
1703
+ }, null, 8, ["label", "value"]))), 256))
1704
+ ]),
1705
+ _: 1
1706
+ }, 8, ["modelValue"]))
1707
+ ]),
1708
+ key: "0"
1709
+ } : void 0
1710
+ ]), 1032, ["modelValue"]),
1711
+ D(" ~ "),
1712
+ s($, {
1713
+ modelValue: t.value.range[1],
1714
+ "onUpdate:modelValue": l[6] || (l[6] = (e) => t.value.range[1] = e),
1715
+ style: { flex: "1" }
1716
+ }, se({ _: 2 }, [
1717
+ u.value.unitOptions.length ? {
1718
+ name: "append",
1719
+ fn: d(() => [
1720
+ u.value.unitOptions.length === 1 ? (r(), f("span", tt, J(t.value.unit[1]), 1)) : (r(), q(S, {
1721
+ key: 1,
1722
+ modelValue: t.value.unit[1],
1723
+ "onUpdate:modelValue": l[5] || (l[5] = (e) => t.value.unit[1] = e),
1724
+ style: { width: "72px" }
1725
+ }, {
1726
+ default: d(() => [
1727
+ (r(!0), f(U, null, j(u.value.unitOptions, (e) => (r(), q(I, {
1728
+ label: e,
1729
+ value: e
1730
+ }, null, 8, ["label", "value"]))), 256))
1731
+ ]),
1732
+ _: 1
1733
+ }, 8, ["modelValue"]))
1734
+ ]),
1735
+ key: "0"
1736
+ } : void 0
1737
+ ]), 1032, ["modelValue"])
1738
+ ])
1739
+ ], 64)) : (r(), f(U, { key: 2 }, [
1740
+ u.value.key === "st" ? (r(), f("div", nt, [
1741
+ s(_, {
1742
+ modelValue: t.value.st,
1743
+ "onUpdate:modelValue": l[7] || (l[7] = (e) => t.value.st = e)
1744
+ }, {
1745
+ default: d(() => [
1746
+ s(b, {
1747
+ label: "是",
1748
+ value: 1
1749
+ }),
1750
+ s(b, {
1751
+ label: "否",
1752
+ value: 0
1753
+ })
1754
+ ]),
1755
+ _: 1
1756
+ }, 8, ["modelValue"])
1757
+ ])) : z("", !0),
1758
+ u.value.key === "tFeaturelncomes" ? (r(), f("div", at, [
1759
+ m("div", ot, [
1760
+ s(h, {
1761
+ onClick: l[8] || (l[8] = (e) => C("≤0"))
1762
+ }, {
1763
+ default: d(() => [
1764
+ D("≤0")
1765
+ ]),
1766
+ _: 1
1767
+ }),
1768
+ s(h, {
1769
+ onClick: l[9] || (l[9] = (e) => C("≥0"))
1770
+ }, {
1771
+ default: d(() => [
1772
+ D("≥0")
1773
+ ]),
1774
+ _: 1
1775
+ }),
1776
+ s(h, {
1777
+ onClick: l[10] || (l[10] = (e) => C("五年内有四年以上盈利超过5千万"))
1778
+ }, {
1779
+ default: d(() => [
1780
+ D("五年内有四年以上盈利超过5千万")
1781
+ ]),
1782
+ _: 1
1783
+ }),
1784
+ s(h, {
1785
+ onClick: l[11] || (l[11] = (e) => C("≥10亿"))
1786
+ }, {
1787
+ default: d(() => [
1788
+ D("≥10亿")
1789
+ ]),
1790
+ _: 1
1791
+ }),
1792
+ s(h, {
1793
+ onClick: l[12] || (l[12] = (e) => C("≥20亿"))
1794
+ }, {
1795
+ default: d(() => [
1796
+ D("≥20亿")
1797
+ ]),
1798
+ _: 1
1799
+ })
1800
+ ]),
1801
+ m("div", st, [
1802
+ rt,
1803
+ m("div", null, [
1804
+ s(P, {
1805
+ modelValue: t.value.withFewYears,
1806
+ "onUpdate:modelValue": l[13] || (l[13] = (e) => t.value.withFewYears = e),
1807
+ "controls-position": "right"
1808
+ }, null, 8, ["modelValue"]),
1809
+ D(" 年内 "),
1810
+ s(P, {
1811
+ modelValue: t.value.yearsCount,
1812
+ "onUpdate:modelValue": l[14] || (l[14] = (e) => t.value.yearsCount = e),
1813
+ "controls-position": "right"
1814
+ }, null, 8, ["modelValue"]),
1815
+ D(" 年以上盈利" + J(t.value.rule === 1 ? "超" : "跌") + "过 ", 1),
1816
+ s(P, {
1817
+ modelValue: t.value.netProfit,
1818
+ "onUpdate:modelValue": l[15] || (l[15] = (e) => t.value.netProfit = e),
1819
+ "controls-position": "right"
1820
+ }, null, 8, ["modelValue"]),
1821
+ D(" 亿 ")
1822
+ ])
1823
+ ])
1824
+ ])) : z("", !0),
1825
+ u.value.key === "priceLevels" ? (r(), f("div", ut, [
1826
+ s(S, {
1827
+ modelValue: t.value.priceLevels,
1828
+ "onUpdate:modelValue": l[16] || (l[16] = (e) => t.value.priceLevels = e),
1829
+ multiple: "",
1830
+ clearable: "",
1831
+ placeholder: "请选择",
1832
+ style: { width: "420px" }
1833
+ }, {
1834
+ default: d(() => [
1835
+ (r(), f(U, null, j([1, 2, 3, 4, 5], (e) => s(I, {
1836
+ key: e,
1837
+ label: `${e}分位`,
1838
+ value: e
1839
+ }, null, 8, ["label", "value"])), 64))
1840
+ ]),
1841
+ _: 1
1842
+ }, 8, ["modelValue"])
1843
+ ])) : z("", !0),
1844
+ u.value.key === "peTtmLevels" ? (r(), f("div", it, [
1845
+ s(S, {
1846
+ modelValue: t.value.peTtmLevels,
1847
+ "onUpdate:modelValue": l[17] || (l[17] = (e) => t.value.peTtmLevels = e),
1848
+ multiple: "",
1849
+ clearable: "",
1850
+ placeholder: "请选择",
1851
+ style: { width: "420px" }
1852
+ }, {
1853
+ default: d(() => [
1854
+ (r(), f(U, null, j([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], (e) => s(I, {
1855
+ key: e,
1856
+ label: `${e}分位`,
1857
+ value: e
1858
+ }, null, 8, ["label", "value"])), 64))
1859
+ ]),
1860
+ _: 1
1861
+ }, 8, ["modelValue"])
1862
+ ])) : z("", !0),
1863
+ u.value.key === "optionsCpType" ? (r(), f("div", ct, [
1864
+ s(_, {
1865
+ modelValue: t.value.optionsCpType,
1866
+ "onUpdate:modelValue": l[18] || (l[18] = (e) => t.value.optionsCpType = e)
1867
+ }, {
1868
+ default: d(() => [
1869
+ s(b, {
1870
+ label: "看涨",
1871
+ value: 1
1872
+ }),
1873
+ s(b, {
1874
+ label: "看跌",
1875
+ value: 2
1876
+ })
1877
+ ]),
1878
+ _: 1
1879
+ }, 8, ["modelValue"])
1880
+ ])) : z("", !0)
1881
+ ], 64))
1882
+ ]),
1883
+ _: 2
1884
+ }, [
1885
+ u.value.showRankType ? {
1886
+ name: "header",
1887
+ fn: d(() => [
1888
+ m("span", Ql, J(u.value.label), 1),
1889
+ s(_, {
1890
+ modelValue: t.value.radioType,
1891
+ "onUpdate:modelValue": l[0] || (l[0] = (e) => t.value.radioType = e),
1892
+ style: { "vertical-align": "4px", "margin-left": "12px" }
1893
+ }, {
1894
+ default: d(() => [
1895
+ s(O, {
1896
+ label: "数值",
1897
+ value: "0"
1898
+ }),
1899
+ s(O, {
1900
+ disabled: k.value && k.value !== u.value.key,
1901
+ label: "排名",
1902
+ value: "1"
1903
+ }, null, 8, ["disabled"])
1904
+ ]),
1905
+ _: 1
1906
+ }, 8, ["modelValue"])
1907
+ ]),
1908
+ key: "0"
1909
+ } : void 0
1910
+ ]), 1032, ["modelValue", "title"])
1911
+ ])) : z("", !0);
1912
+ };
1913
+ }
1914
+ }, vt = /* @__PURE__ */ ge(pt, [["__scopeId", "data-v-bdb03941"]]);
1915
+ const H = (p) => (fe("data-v-fe77e4e0"), p = p(), me(), p), ft = { class: "variety-search" }, mt = {
1916
+ key: 0,
1917
+ class: "variety-search-row"
1918
+ }, yt = { class: "title" }, gt = /* @__PURE__ */ H(() => /* @__PURE__ */ m("span", null, "品种市场: ", -1)), bt = {
1919
+ key: 1,
1920
+ class: "variety-search-row"
1921
+ }, kt = { class: "title" }, _t = /* @__PURE__ */ H(() => /* @__PURE__ */ m("span", null, "常用选项: ", -1)), ht = {
1922
+ key: 2,
1923
+ class: "variety-search-row"
1924
+ }, Vt = { class: "title" }, xt = /* @__PURE__ */ H(() => /* @__PURE__ */ m("span", null, "上市板块: ", -1)), Ot = {
1925
+ key: 3,
1926
+ class: "variety-search-row"
1927
+ }, It = { class: "title" }, $t = /* @__PURE__ */ H(() => /* @__PURE__ */ m("span", null, "自定标签: ", -1)), wt = {
1928
+ key: 4,
1929
+ class: "variety-search-row"
1930
+ }, Tt = { class: "title" }, Ct = /* @__PURE__ */ H(() => /* @__PURE__ */ m("span", null, "价差转换: ", -1)), St = {
1931
+ key: 5,
1932
+ class: "variety-search-row"
1933
+ }, Ut = { class: "title" }, Et = /* @__PURE__ */ H(() => /* @__PURE__ */ m("span", null, "因子筛选: ", -1)), Rt = {
1934
+ __name: "index",
1935
+ props: /* @__PURE__ */ te({ config: { type: Object, default: {} } }, {
1936
+ searchData: {},
1937
+ searchDataModifiers: {}
1938
+ }),
1939
+ emits: ["update:searchData"],
1940
+ setup(p, { expose: V }) {
1941
+ const y = p, n = ne(p, "searchData");
1942
+ n.value = Object.assign(n.value, {
1943
+ // 品种市场
1944
+ varietyMarket: null,
1945
+ // 常用选项
1946
+ commonOption: [],
1947
+ // 上市板块
1948
+ marketIds: [],
1949
+ // 自定标签
1950
+ customTag: [],
1951
+ // 价差转换
1952
+ jcTranslate: {
1953
+ type: null,
1954
+ jcList: []
1955
+ },
1956
+ // 因子筛选
1957
+ factorScreen: {
1958
+ list: [],
1959
+ sqlEnable: 0,
1960
+ sqlValue: null
1961
+ },
1962
+ // 常用指标
1963
+ commonIndicator: []
1964
+ });
1965
+ const k = N(() => {
1966
+ const i = {};
1967
+ return Object.keys(Ie).forEach((a) => {
1968
+ const C = Ie[a], o = y.config[a] ?? {}, l = { ...C, ...o };
1969
+ i[a] = l;
1970
+ }), i;
1971
+ }), R = N(() => k.value.varietyMarket.options), u = N(() => {
1972
+ const { varietyMarket: i } = n.value;
1973
+ return i ? R.value.find(({ value: C }) => C === i).memo.reduce((C, o) => {
1974
+ const l = k.value.commonOption.options.find((g) => g.value === o);
1975
+ return l && C.push(l), C;
1976
+ }, []) : k.value.commonOption.options;
1977
+ }), t = N(() => {
1978
+ const { varietyMarket: i } = n.value;
1979
+ return i ? k.value.marketIds.options.filter((a) => a.varietyMarketIds.includes(i)) : k.value.marketIds.options;
1980
+ }), E = N(() => k.value.customTag.options), L = N(() => k.value.jcTranslate.jcOptions), M = (i) => {
1981
+ switch (i) {
1982
+ case "commonOption": {
1983
+ n.value[i] = [];
1984
+ break;
1985
+ }
1986
+ case "marketIds": {
1987
+ n.value[i] = [];
1988
+ break;
1989
+ }
1990
+ case "customTag": {
1991
+ n.value[i] = [];
1992
+ break;
1993
+ }
1994
+ case "jcTranslate": {
1995
+ n.value[i] = {
1996
+ type: null,
1997
+ jcList: []
1998
+ };
1999
+ break;
2000
+ }
2001
+ case "factorScreen": {
2002
+ n.value[i] = {
2003
+ list: [],
2004
+ sqlEnable: 0,
2005
+ sqlValue: null
2006
+ };
2007
+ break;
2008
+ }
2009
+ case "commonIndicator": {
2010
+ n.value[i] = [];
2011
+ break;
2012
+ }
2013
+ default: {
2014
+ n.value[i] = null;
2015
+ break;
2016
+ }
2017
+ }
2018
+ };
2019
+ return ee(
2020
+ () => u.value,
2021
+ (i) => {
2022
+ var a;
2023
+ (a = n.value.commonOption) != null && a.length && (n.value.commonOption = n.value.commonOption.filter((C) => i.find(({ value: o }) => o === C)));
2024
+ }
2025
+ ), ee(
2026
+ () => t.value,
2027
+ (i) => {
2028
+ var a;
2029
+ (a = n.value.marketIds) != null && a.length && (n.value.marketIds = n.value.marketIds.filter((C) => i.find(({ value: o }) => o === C)));
2030
+ }
2031
+ ), V({
2032
+ // 生成接口传参结构的数据
2033
+ formatData: (i) => {
2034
+ var C, o, l, g, O, _;
2035
+ console.log("%c[品种池搜索聚合组件]: 正在生成接口传参...", "color: tomato");
2036
+ const a = {};
2037
+ if (i.varietyMarket && (a.exchangeId = String(i.varietyMarket)), (C = i.commonOption) != null && C.length && (a.optionId = i.commonOption.join(",")), (o = i.marketIds) != null && o.length && (a.marketIds = i.marketIds), (l = i.customTag) != null && l.length && (a.tagIds = i.customTag), (g = k.value.jcTranslate) != null && g.show) {
2038
+ const { jcTranslate: $ } = i, { type: h, jcList: I } = $;
2039
+ switch (h) {
2040
+ case 1: {
2041
+ a.translateType = 1, a.jcType = I.join(",");
2042
+ break;
2043
+ }
2044
+ case 2:
2045
+ a.translateType = 2;
2046
+ }
2047
+ }
2048
+ if ((O = k.value.factorScreen) != null && O.show) {
2049
+ const { factorScreen: $ } = i;
2050
+ if ((_ = $ == null ? void 0 : $.list) != null && _.length && (a.tbFeatureFactorScores = $.list.map((h) => {
2051
+ switch (h.key) {
2052
+ case "compare":
2053
+ return {
2054
+ freqId: h.cycle,
2055
+ factorId: h.factor,
2056
+ compareType: h.compareType,
2057
+ freqId2: h.cycle2,
2058
+ factorId2: h.factor2
2059
+ };
2060
+ default:
2061
+ return {
2062
+ freqId: h.cycle,
2063
+ factorId: h.factor,
2064
+ startScore: h.score[0],
2065
+ endScore: h.score[1]
2066
+ };
2067
+ }
2068
+ })), $.sqlEnable) {
2069
+ const h = $.list.reduce((S, b, P) => {
2070
+ var e, G;
2071
+ const c = `条件${P + 1}`;
2072
+ switch (b.key) {
2073
+ case "compare": {
2074
+ let B = "";
2075
+ (e = k.value.factorScreen) != null && e.cycleShow ? B = `freq_id = ${b.cycle} and factor_id = ${b.factor} ${b.compareType} freq_id = ${b.cycle2} and factor_id = ${b.factor2}` : B = `factor_id = ${b.factor} ${b.compareType} factor_id = ${b.factor2}`, S.set(c, `(${B})`);
2076
+ break;
2077
+ }
2078
+ default: {
2079
+ let B = `factor_id = ${b.factor} and `;
2080
+ (G = k.value.factorScreen) != null && G.cycleShow && (B = `freq_id = ${b.cycle} and factor_id = ${b.factor} and `), (b.score[0] || b.score[0] === 0) && (b.score[1] || b.score[1] === 0) ? B += `score >= ${b.score[0]} and score <= ${b.score[1]}` : b.score[0] || b.score[0] === 0 ? B += `score >= ${b.score[0]}` : (b.score[1] || b.score[1] === 0) && (B += `score <= ${b.score[1]}`), S.set(c, `(${B})`);
2081
+ }
2082
+ }
2083
+ return S;
2084
+ }, /* @__PURE__ */ new Map([]));
2085
+ let I = $.sqlValue;
2086
+ for (const [S, b] of h) {
2087
+ const P = new RegExp(S, "g");
2088
+ I = I.replace(P, b);
2089
+ }
2090
+ a.sql = I, a.sqlExpression = $.sqlValue;
2091
+ }
2092
+ a.enableSql = $.sqlEnable === 1 ? 2 : 1;
2093
+ }
2094
+ {
2095
+ const $ = ["expireDays", "virtualRealDegree", "yearProfitRate", "impliedVolatility", "levelMultiplier", "turnover", "volume", "openInterest", "optionsCpType", "optionGear"], h = i.commonIndicator.reduce((e, G) => {
2096
+ const { key: B, type: oe, range: W, unit: w, radioType: Y, rankRange: x } = G;
2097
+ if (Y === "1")
2098
+ a.sortBy = {
2099
+ column: G.key,
2100
+ start: x[0] || null,
2101
+ end: x[1] || null
2102
+ };
2103
+ else if (B === "dividendYield") {
2104
+ let [T, F] = W;
2105
+ ["", null].includes(T) || (T = T / 100), ["", null].includes(F) || (F = F / 100), e.push({
2106
+ column: G.key,
2107
+ start: T,
2108
+ end: F
2109
+ });
2110
+ } else if (oe === void 0 && !$.includes(B)) {
2111
+ let [T, F] = W;
2112
+ if (!["", null].includes(T))
2113
+ switch (w[0]) {
2114
+ case "亿":
2115
+ T = T * 1e8;
2116
+ break;
2117
+ case "千万":
2118
+ T = T * 1e7;
2119
+ break;
2120
+ default:
2121
+ T = T;
2122
+ break;
2123
+ }
2124
+ if (!["", null].includes(F))
2125
+ switch (w[1]) {
2126
+ case "亿":
2127
+ F = F * 1e8;
2128
+ break;
2129
+ case "千万":
2130
+ F = F * 1e7;
2131
+ break;
2132
+ default:
2133
+ F = F;
2134
+ break;
2135
+ }
2136
+ e.push({
2137
+ column: G.key,
2138
+ start: T,
2139
+ end: F
2140
+ });
2141
+ }
2142
+ return e;
2143
+ }, []);
2144
+ h.length && (a.query = h);
2145
+ const I = i.commonIndicator.find(({ key: e }) => e === "st");
2146
+ I && (a.st = I.st);
2147
+ const S = i.commonIndicator.find(({ key: e }) => e === "tFeaturelncomes");
2148
+ S && (a.netProfitQueryDto = { ...S, netProfit: S.netProfit * 1e8 });
2149
+ const b = i.commonIndicator.find(({ key: e }) => e === "priceLevels");
2150
+ b && (a.priceLevels = b.priceLevels);
2151
+ const P = i.commonIndicator.find(({ key: e }) => e === "peTtmLevels");
2152
+ P && (a.peTtmLevels = P.peTtmLevels);
2153
+ const c = {};
2154
+ i.commonIndicator.forEach((e) => {
2155
+ const { key: G } = e;
2156
+ switch (G) {
2157
+ case "expireDays":
2158
+ ["", null].includes(e.range[0]) || (c.minExpireDays = e.range[0]), ["", null].includes(e.range[1]) || (c.maxExpireDays = e.range[1]);
2159
+ break;
2160
+ case "virtualRealDegree":
2161
+ ["", null].includes(e.range[0]) || (c.minVirtualRealDegree = e.range[0] / 100), ["", null].includes(e.range[1]) || (c.maxVirtualRealDegree = e.range[1] / 100);
2162
+ break;
2163
+ case "yearProfitRate":
2164
+ ["", null].includes(e.range[0]) || (c.minYearProfitRate = e.range[0] / 100), ["", null].includes(e.range[1]) || (c.maxYearProfitRate = e.range[1] / 100);
2165
+ break;
2166
+ case "impliedVolatility":
2167
+ ["", null].includes(e.range[0]) || (c.minImpliedVolatility = e.range[0] / 100), ["", null].includes(e.range[1]) || (c.maxImpliedVolatility = e.range[1] / 100);
2168
+ break;
2169
+ case "levelMultiplier":
2170
+ ["", null].includes(e.range[0]) || (c.minLevelMultiplier = e.range[0]), ["", null].includes(e.range[1]) || (c.maxLevelMultiplier = e.range[1]);
2171
+ break;
2172
+ case "turnover":
2173
+ ["", null].includes(e.range[0]) || (c.minTurnover = e.range[0] * 1e4), ["", null].includes(e.range[1]) || (c.maxTurnover = e.range[1] * 1e4);
2174
+ break;
2175
+ case "volume":
2176
+ ["", null].includes(e.range[0]) || (c.minVolume = e.range[0]), ["", null].includes(e.range[1]) || (c.maxVolume = e.range[1]);
2177
+ break;
2178
+ case "openInterest":
2179
+ ["", null].includes(e.range[0]) || (c.minOpenInterest = e.range[0]), ["", null].includes(e.range[1]) || (c.maxOpenInterest = e.range[1]);
2180
+ break;
2181
+ case "optionsCpType":
2182
+ c.optionsCpType = e.optionsCpType;
2183
+ break;
2184
+ case "optionGear":
2185
+ ["", null].includes(e.range[0]) || (c.minOptionGear = e.range[0]), ["", null].includes(e.range[1]) || (c.maxOptionGear = e.range[1]);
2186
+ break;
2187
+ }
2188
+ }), Object.keys(c).length && (a.searchOptionDto = {
2189
+ ...a.searchOptionDto,
2190
+ ...c
2191
+ });
2192
+ }
2193
+ return console.log("%c[品种池搜索聚合组件]: 接口传参数据生成完毕", "color: green", a), a;
2194
+ },
2195
+ // 重置函数
2196
+ reset: () => {
2197
+ n.value = {
2198
+ // 品种市场
2199
+ varietyMarket: null,
2200
+ // 常用选项
2201
+ commonOption: [],
2202
+ // 上市板块
2203
+ marketIds: [],
2204
+ // 自定标签
2205
+ customTag: [],
2206
+ // 价差转换
2207
+ jcTranslate: {
2208
+ type: null,
2209
+ jcList: []
2210
+ },
2211
+ // 因子筛选
2212
+ factorScreen: {
2213
+ list: [],
2214
+ sqlEnable: 0,
2215
+ sqlValue: null
2216
+ },
2217
+ // 常用指标
2218
+ commonIndicator: []
2219
+ };
2220
+ }
2221
+ }), (i, a) => {
2222
+ var $, h, I, S, b, P;
2223
+ const C = ke, o = _e, l = He, g = We, O = ce, _ = de;
2224
+ return r(), f("div", ft, [
2225
+ ($ = k.value.varietyMarket) != null && $.show ? (r(), f("div", mt, [
2226
+ m("div", yt, [
2227
+ gt,
2228
+ m("span", {
2229
+ onClick: a[0] || (a[0] = (c) => M("varietyMarket"))
2230
+ }, "不限")
2231
+ ]),
2232
+ s(o, {
2233
+ modelValue: n.value.varietyMarket,
2234
+ "onUpdate:modelValue": a[1] || (a[1] = (c) => n.value.varietyMarket = c),
2235
+ size: "small"
2236
+ }, {
2237
+ default: d(() => [
2238
+ (r(!0), f(U, null, j(R.value, ({ label: c, value: e }) => (r(), q(C, {
2239
+ label: c,
2240
+ value: e,
2241
+ key: e
2242
+ }, null, 8, ["label", "value"]))), 128))
2243
+ ]),
2244
+ _: 1
2245
+ }, 8, ["modelValue"])
2246
+ ])) : z("", !0),
2247
+ (h = k.value.commonOption) != null && h.show && u.value.length ? (r(), f("div", bt, [
2248
+ m("div", kt, [
2249
+ _t,
2250
+ m("span", {
2251
+ onClick: a[2] || (a[2] = (c) => M("commonOption"))
2252
+ }, "不限")
2253
+ ]),
2254
+ s(g, {
2255
+ modelValue: n.value.commonOption,
2256
+ "onUpdate:modelValue": a[3] || (a[3] = (c) => n.value.commonOption = c),
2257
+ size: "small"
2258
+ }, {
2259
+ default: d(() => [
2260
+ (r(!0), f(U, null, j(u.value, ({ label: c, value: e }) => (r(), q(l, {
2261
+ label: c,
2262
+ value: e,
2263
+ key: e
2264
+ }, null, 8, ["label", "value"]))), 128))
2265
+ ]),
2266
+ _: 1
2267
+ }, 8, ["modelValue"])
2268
+ ])) : z("", !0),
2269
+ (I = k.value.marketIds) != null && I.show && t.value.length ? (r(), f("div", ht, [
2270
+ m("div", Vt, [
2271
+ xt,
2272
+ m("span", {
2273
+ onClick: a[4] || (a[4] = (c) => M("marketIds"))
2274
+ }, "不限")
2275
+ ]),
2276
+ s(g, {
2277
+ modelValue: n.value.marketIds,
2278
+ "onUpdate:modelValue": a[5] || (a[5] = (c) => n.value.marketIds = c),
2279
+ size: "small"
2280
+ }, {
2281
+ default: d(() => [
2282
+ (r(!0), f(U, null, j(t.value, ({ label: c, value: e }) => (r(), q(l, {
2283
+ label: c,
2284
+ value: e,
2285
+ key: e
2286
+ }, null, 8, ["label", "value"]))), 128))
2287
+ ]),
2288
+ _: 1
2289
+ }, 8, ["modelValue"])
2290
+ ])) : z("", !0),
2291
+ (S = k.value.customTag) != null && S.show && E.value.length ? (r(), f("div", Ot, [
2292
+ m("div", It, [
2293
+ $t,
2294
+ m("span", {
2295
+ onClick: a[6] || (a[6] = (c) => M("customTag"))
2296
+ }, "不限")
2297
+ ]),
2298
+ s(g, {
2299
+ modelValue: n.value.customTag,
2300
+ "onUpdate:modelValue": a[7] || (a[7] = (c) => n.value.customTag = c),
2301
+ size: "small"
2302
+ }, {
2303
+ default: d(() => [
2304
+ (r(!0), f(U, null, j(E.value, ({ label: c, value: e }) => (r(), q(l, {
2305
+ label: c,
2306
+ value: e,
2307
+ key: e
2308
+ }, null, 8, ["label", "value"]))), 128))
2309
+ ]),
2310
+ _: 1
2311
+ }, 8, ["modelValue"])
2312
+ ])) : z("", !0),
2313
+ (b = k.value.jcTranslate) != null && b.show ? (r(), f("div", wt, [
2314
+ m("div", Tt, [
2315
+ Ct,
2316
+ m("span", {
2317
+ onClick: a[8] || (a[8] = (c) => M("jcTranslate"))
2318
+ }, "不限")
2319
+ ]),
2320
+ s(o, {
2321
+ modelValue: n.value.jcTranslate.type,
2322
+ "onUpdate:modelValue": a[9] || (a[9] = (c) => n.value.jcTranslate.type = c),
2323
+ size: "small"
2324
+ }, {
2325
+ default: d(() => [
2326
+ s(C, { value: 2 }, {
2327
+ default: d(() => [
2328
+ D("价差转品种")
2329
+ ]),
2330
+ _: 1
2331
+ }),
2332
+ s(C, { value: 1 }, {
2333
+ default: d(() => [
2334
+ D("品种转价差")
2335
+ ]),
2336
+ _: 1
2337
+ })
2338
+ ]),
2339
+ _: 1
2340
+ }, 8, ["modelValue"]),
2341
+ pe(s(_, {
2342
+ modelValue: n.value.jcTranslate.jcList,
2343
+ "onUpdate:modelValue": a[10] || (a[10] = (c) => n.value.jcTranslate.jcList = c),
2344
+ size: "small",
2345
+ multiple: "",
2346
+ "collapse-tags": "",
2347
+ "collapse-tags-tooltip": "",
2348
+ placeholder: "请选择价差品种",
2349
+ style: { width: "140px" }
2350
+ }, {
2351
+ default: d(() => [
2352
+ (r(!0), f(U, null, j(L.value, (c) => (r(), q(O, {
2353
+ key: c.value,
2354
+ label: c.label,
2355
+ value: c.value
2356
+ }, null, 8, ["label", "value"]))), 128))
2357
+ ]),
2358
+ _: 1
2359
+ }, 8, ["modelValue"]), [
2360
+ [ol, n.value.jcTranslate.type === 1]
2361
+ ])
2362
+ ])) : z("", !0),
2363
+ (P = k.value.factorScreen) != null && P.show ? (r(), f("div", St, [
2364
+ m("div", Ut, [
2365
+ Et,
2366
+ m("span", {
2367
+ onClick: a[11] || (a[11] = (c) => M("factorScreen"))
2368
+ }, "不限")
2369
+ ]),
2370
+ s(Nl, {
2371
+ data: n.value.factorScreen,
2372
+ "onUpdate:data": a[12] || (a[12] = (c) => n.value.factorScreen = c),
2373
+ config: k.value.factorScreen
2374
+ }, null, 8, ["data", "config"])
2375
+ ])) : z("", !0),
2376
+ s(vt, {
2377
+ data: n.value.commonIndicator,
2378
+ "onUpdate:data": a[13] || (a[13] = (c) => n.value.commonIndicator = c),
2379
+ varietyMarket: n.value.varietyMarket,
2380
+ commonOption: n.value.commonOption,
2381
+ config: k.value.commonIndicator
2382
+ }, null, 8, ["data", "varietyMarket", "commonOption", "config"])
2383
+ ]);
2384
+ };
2385
+ }
2386
+ }, qt = /* @__PURE__ */ ge(Rt, [["__scopeId", "data-v-fe77e4e0"]]), pn = {
2387
+ install(p) {
2388
+ p.component("st-varietySearch", qt);
2389
+ }
2390
+ };
2391
+ export {
2392
+ pn as default
2393
+ };