st-comp 0.0.204 → 0.0.206
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/ChartLayout.js +4 -4
- package/es/CustomFunction.cjs +1 -1
- package/es/CustomFunction.js +32 -32
- package/es/FactorWarning.cjs +1 -1
- package/es/FactorWarning.js +211 -202
- package/es/Kline.js +17 -17
- package/es/KlineBasic.js +26 -26
- package/es/KlineConfig.js +61 -61
- package/es/KlineNew.js +16 -16
- package/es/KlinePlus.js +19 -19
- package/es/Map.cjs +1 -1
- package/es/Map.js +102944 -1
- package/es/Pagination.js +73 -73
- package/es/PasswordPrompt.js +3 -3
- package/es/Table.js +38 -38
- package/es/User.js +44 -44
- package/es/VarSelectDialog.js +24 -24
- package/es/VarietyAutoComplete.js +10 -10
- package/es/VarietySearch.cjs +8 -8
- package/es/VarietySearch.js +1540 -1498
- package/es/VarietyTextCopy.js +12 -12
- package/es/VirtualTable.js +70 -70
- package/es/{_initCloneObject-4ff4ab39.js → _initCloneObject-eaef9418.js} +7 -7
- package/es/{base-ff0e366f.js → base-a5af3db3.js} +40 -40
- package/es/{castArray-15070be9.js → castArray-7741a212.js} +1 -1
- package/es/{config-provider-1a9362d1.js → config-provider-b16efd62.js} +6 -6
- package/es/{debounce-e9e47f9a.js → debounce-8d53f4dd.js} +1 -1
- package/es/{dropdown-b3b26078.js → dropdown-a59bba73.js} +13 -13
- package/es/{el-autocomplete-a52b6885.js → el-autocomplete-ba808eb6.js} +16 -16
- package/es/{el-button-65aa0485.js → el-button-c95adb85.js} +39 -39
- package/es/{el-checkbox-feb78213.js → el-checkbox-7421ccd3.js} +31 -31
- package/es/{el-dialog-234e3137.js → el-dialog-41ab8417.js} +15 -15
- package/es/{el-divider-4fe55ebe.js → el-divider-4e059794.js} +1 -1
- package/es/{el-empty-ceecb81c.js → el-empty-33cb66f1.js} +5 -5
- package/es/{el-form-item-a68893fa.js → el-form-item-c53c374d.js} +34 -34
- package/es/{el-input-77c46a8a.js → el-input-2f75c4ba.js} +55 -55
- package/es/{el-input-number-23da18a4.js → el-input-number-5193fe6d.js} +31 -31
- package/es/{el-loading-025e8c34.js → el-loading-f6022062.js} +5 -5
- package/es/{el-menu-item-b1e678ba.js → el-menu-item-7e881203.js} +22 -22
- package/es/{el-message-box-db6c3469.js → el-message-box-a93d2f6a.js} +11 -11
- package/es/{el-message-8d817082.js → el-message-e544a8f5.js} +23 -23
- package/es/{el-overlay-3ebd4a6a.js → el-overlay-09ad71cd.js} +56 -56
- package/es/{el-popconfirm-5d93ad96.js → el-popconfirm-81dcd202.js} +20 -20
- package/es/{el-popper-ba55a170.js → el-popper-b4f97157.js} +109 -109
- package/es/{el-segmented-2813a6dc.js → el-segmented-b868d074.js} +8 -8
- package/es/{el-select-71af6fab.js → el-select-95627997.js} +64 -64
- package/es/{el-table-column-5d64176c.js → el-table-column-376cd907.js} +15 -15
- package/es/{el-tag-ca50befb.js → el-tag-66cab138.js} +15 -15
- package/es/{el-text-697ca5b5.js → el-text-ac60d0f2.js} +2 -2
- package/es/{index-923df02f.js → index-1f7d4f70.js} +2 -2
- package/es/{index-fca9441b.js → index-57672682.js} +3 -3
- package/es/{index-730c5d79.js → index-844bdd85.js} +34 -34
- package/es/{index-c30bd093.js → index-88546436.js} +17 -17
- package/es/{index-269b8a8c.js → index-960806da.js} +36 -36
- package/es/{index-8525fbd3.js → index-a871c3eb.js} +27 -27
- package/es/{index-93a8960e.js → index-d77a7336.js} +1 -1
- package/es/{index-56abb80d.js → index-d91dc23f.js} +12 -12
- package/es/{index-7b6ba27d.js → index-e5566b94.js} +43 -43
- package/es/raf-80ef0c0a.js +6 -0
- package/es/{scroll-41b4f625.js → scroll-679bd6bf.js} +5 -5
- package/es/style.css +1 -1
- package/es/{use-form-common-props-b342410c.js → use-form-common-props-815d48a6.js} +67 -67
- package/es/{use-global-config-409a5a22.js → use-global-config-b5e9d3d5.js} +14 -14
- package/es/{validator-46456823.js → validator-764a9db0.js} +1 -1
- package/es/{vnode-06571d5b.js → vnode-5ddb7ed1.js} +1 -1
- package/es/{zh-cn-87c8697d.js → zh-cn-e963c628.js} +2 -2
- package/lib/bundle.js +1 -1
- package/lib/bundle.umd.cjs +85 -85
- package/lib/{index-41eb55d2.js → index-66200fba.js} +5160 -5109
- package/lib/{python-89c64241.js → python-3709061e.js} +1 -1
- package/lib/style.css +1 -1
- package/package.json +1 -1
- package/packages/FactorWarning/index.vue +14 -3
- package/packages/VarietySearch/components/CommonIndicator/index.vue +31 -0
- package/packages/VarietySearch/config.js +10 -0
- package/packages/VarietySearch/index.vue +12 -7
- package/src/pages/FactorWarning/index.vue +73 -84
- package/es/raf-8e05a7f4.js +0 -6
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { nextTick, ref, watch } from "vue";
|
|
3
2
|
import zhCn from "element-plus/es/locale/lang/zh-cn";
|
|
4
3
|
import { InfoFilled } from "@element-plus/icons-vue";
|
|
4
|
+
import { ref, watch } from "vue";
|
|
5
5
|
import { defaultShowConfig } from "./tools";
|
|
6
6
|
import { debounce } from "st-func";
|
|
7
7
|
|
|
@@ -82,9 +82,20 @@ const handleThreeAdd = async (factorName) => {
|
|
|
82
82
|
});
|
|
83
83
|
const fsParams = {
|
|
84
84
|
factorSelectedList: ruleForm.value.factorSelectedList.map((factorName) => {
|
|
85
|
+
let totalCount = 3;
|
|
86
|
+
// 判断表格里面有没有同因子的数据, 如果有的话需要确保增加以后的有效次数 <= 12
|
|
87
|
+
const repeatData = props.tableData.find(({ factorExtendName }) => factorExtendName === factorName);
|
|
88
|
+
if (repeatData) {
|
|
89
|
+
const diff = repeatData.totalCount - repeatData.currentCount;
|
|
90
|
+
// 如果: 已触发次数 === 触发次数上限, 直接全额添加, 此时后端会另起一行数据的
|
|
91
|
+
if (diff === 0) totalCount = 3;
|
|
92
|
+
// 如果: 已触发次数 !== 触发次数上限 确保添加后的diff要小于等于12, 出于兼容老数据1/20类似的情况考虑, 加个容错
|
|
93
|
+
else totalCount = Math.min(3, 12 - diff >= 0 ? 12 - diff : 0);
|
|
94
|
+
}
|
|
85
95
|
return {
|
|
86
96
|
factorName,
|
|
87
97
|
...ruleForm.value,
|
|
98
|
+
totalCount,
|
|
88
99
|
};
|
|
89
100
|
}),
|
|
90
101
|
};
|
|
@@ -111,9 +122,9 @@ const handleFastControls = async (item) => {
|
|
|
111
122
|
const repeatData = props.tableData.find(({ factorExtendName }) => factorExtendName === factorName);
|
|
112
123
|
if (repeatData) {
|
|
113
124
|
const diff = repeatData.totalCount - repeatData.currentCount;
|
|
114
|
-
// 如果: 已触发次数 === 触发次数上限,
|
|
125
|
+
// 如果: 已触发次数 === 触发次数上限, 直接全额添加, 此时后端会另起一行数据的
|
|
115
126
|
if (diff === 0) totalCount = data.totalCount;
|
|
116
|
-
// 确保添加后的diff要小于等于10, 出于兼容老数据1/20类似的情况考虑, 加个容错
|
|
127
|
+
// 如果: 已触发次数 !== 触发次数上限 确保添加后的diff要小于等于10, 出于兼容老数据1/20类似的情况考虑, 加个容错
|
|
117
128
|
else totalCount = Math.min(data.totalCount, 10 - diff >= 0 ? 10 - diff : 0);
|
|
118
129
|
}
|
|
119
130
|
return {
|
|
@@ -91,6 +91,11 @@ const clickIndicator = (item) => {
|
|
|
91
91
|
indicatorValue.value = { ...baseParams, peTtmLevels: null };
|
|
92
92
|
break;
|
|
93
93
|
}
|
|
94
|
+
// 市盈率估值走势分位
|
|
95
|
+
case "peTrendTtmLevels": {
|
|
96
|
+
indicatorValue.value = { ...baseParams, peTrendTtmLevels: null };
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
94
99
|
// 认沽认购
|
|
95
100
|
case "optionsCpType": {
|
|
96
101
|
indicatorValue.value = {
|
|
@@ -177,6 +182,15 @@ const submitDialog = () => {
|
|
|
177
182
|
indicatorValue.value.tagText = `${label}: 已选${peTtmLevels}分位`;
|
|
178
183
|
break;
|
|
179
184
|
}
|
|
185
|
+
// 市盈率估值走势分位
|
|
186
|
+
case "peTrendTtmLevels": {
|
|
187
|
+
const { label, peTrendTtmLevels } = indicatorValue.value;
|
|
188
|
+
// 校验
|
|
189
|
+
if (!peTrendTtmLevels || peTrendTtmLevels.length === 0) return ElMessage.warning("格式错误: 请至少选择一个值");
|
|
190
|
+
// 格式化文案
|
|
191
|
+
indicatorValue.value.tagText = `${label}: 已选${peTrendTtmLevels}分位`;
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
180
194
|
// 认沽认购
|
|
181
195
|
case "optionsCpType": {
|
|
182
196
|
const { label, optionsCpType } = indicatorValue.value;
|
|
@@ -596,6 +610,23 @@ const changeMainFlowRadioType = () => {
|
|
|
596
610
|
/>
|
|
597
611
|
</el-select>
|
|
598
612
|
</div>
|
|
613
|
+
<!-- 市盈率估值走势分位 -->
|
|
614
|
+
<div v-if="nowIndicator.key === 'peTrendTtmLevels'">
|
|
615
|
+
<el-select
|
|
616
|
+
v-model="indicatorValue.peTrendTtmLevels"
|
|
617
|
+
multiple
|
|
618
|
+
clearable
|
|
619
|
+
placeholder="请选择"
|
|
620
|
+
style="width: 420px"
|
|
621
|
+
>
|
|
622
|
+
<el-option
|
|
623
|
+
v-for="item in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
|
|
624
|
+
:key="item"
|
|
625
|
+
:label="`${item}分位`"
|
|
626
|
+
:value="item"
|
|
627
|
+
/>
|
|
628
|
+
</el-select>
|
|
629
|
+
</div>
|
|
599
630
|
<!-- 认沽认购 -->
|
|
600
631
|
<div v-if="nowIndicator.key === 'optionsCpType'">
|
|
601
632
|
<el-radio-group v-model="indicatorValue.optionsCpType">
|
|
@@ -377,6 +377,16 @@ export default {
|
|
|
377
377
|
},
|
|
378
378
|
type: "custom",
|
|
379
379
|
},
|
|
380
|
+
// 市盈率估值走势分位
|
|
381
|
+
{
|
|
382
|
+
key: "peTrendTtmLevels",
|
|
383
|
+
label: "市盈率估值走势分位",
|
|
384
|
+
parent: {
|
|
385
|
+
varietyMarketIds: [3, 5, 7],
|
|
386
|
+
commonOptionIds: [4, 6, 12, 14, 15, 16],
|
|
387
|
+
},
|
|
388
|
+
type: "custom",
|
|
389
|
+
},
|
|
380
390
|
// 主力净流入资金
|
|
381
391
|
{
|
|
382
392
|
key: "mainFlow",
|
|
@@ -270,7 +270,7 @@ defineExpose({
|
|
|
270
270
|
// 7.常用指标
|
|
271
271
|
{
|
|
272
272
|
const QIQUANKYES = ["expireDays", "virtualRealDegree", "yearProfitRate", "impliedVolatility", "levelMultiplier", "turnover", "volume", "openInterest", "optionsCpType", "optionGear"];
|
|
273
|
-
//
|
|
273
|
+
// 基本面(type: undefined的指标, 且[期权]的常用指标不计入基本面)
|
|
274
274
|
const query = data.commonIndicator.reduce((result, item) => {
|
|
275
275
|
const { key, type, range, unit, radioType, radio, rankRange } = item;
|
|
276
276
|
// 主力净流入资金
|
|
@@ -342,27 +342,32 @@ defineExpose({
|
|
|
342
342
|
if (query.length) {
|
|
343
343
|
params.query = query;
|
|
344
344
|
}
|
|
345
|
-
//
|
|
345
|
+
// 是否ST
|
|
346
346
|
const stIndicator = data.commonIndicator.find(({ key }) => key === "st");
|
|
347
347
|
if (stIndicator) {
|
|
348
348
|
params.st = stIndicator.st;
|
|
349
349
|
}
|
|
350
|
-
//
|
|
350
|
+
// 净利润
|
|
351
351
|
const netProfitQueryDto = data.commonIndicator.find(({ key }) => key === "tFeaturelncomes");
|
|
352
352
|
if (netProfitQueryDto) {
|
|
353
353
|
params.netProfitQueryDto = { ...netProfitQueryDto, netProfit: netProfitQueryDto.netProfit * 100000000.0 };
|
|
354
354
|
}
|
|
355
|
-
//
|
|
355
|
+
// 股价分位
|
|
356
356
|
const priceLevelIndicator = data.commonIndicator.find(({ key }) => key === "priceLevels");
|
|
357
357
|
if (priceLevelIndicator) {
|
|
358
358
|
params.priceLevels = priceLevelIndicator.priceLevels;
|
|
359
359
|
}
|
|
360
|
-
//
|
|
360
|
+
// 市盈率分位
|
|
361
361
|
const peTtmLevelIndicator = data.commonIndicator.find(({ key }) => key === "peTtmLevels");
|
|
362
362
|
if (peTtmLevelIndicator) {
|
|
363
363
|
params.peTtmLevels = peTtmLevelIndicator.peTtmLevels;
|
|
364
364
|
}
|
|
365
|
-
//
|
|
365
|
+
// 市盈率估值走势分位
|
|
366
|
+
const peTrendTtmLevelIndicator = data.commonIndicator.find(({ key }) => key === "peTrendTtmLevels");
|
|
367
|
+
if (peTrendTtmLevelIndicator) {
|
|
368
|
+
params.peTrendTtmLevels = peTrendTtmLevelIndicator.peTrendTtmLevels;
|
|
369
|
+
}
|
|
370
|
+
// 期权相关参数
|
|
366
371
|
const searchOptionDto = {};
|
|
367
372
|
data.commonIndicator.forEach((item) => {
|
|
368
373
|
const { key } = item;
|
|
@@ -418,7 +423,7 @@ defineExpose({
|
|
|
418
423
|
break;
|
|
419
424
|
}
|
|
420
425
|
});
|
|
421
|
-
//
|
|
426
|
+
// 成交量
|
|
422
427
|
const perVolumnIndicator = data.commonIndicator.find(({ key }) => key === "perVolumn");
|
|
423
428
|
if (perVolumnIndicator) {
|
|
424
429
|
params.perVolumn = {
|
|
@@ -1,27 +1,8 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div style="width: 100%; height: 100%">
|
|
3
|
-
<el-button @click="openDialog">因子预警</el-button>
|
|
4
|
-
<st-factorWarning
|
|
5
|
-
v-model:visible="visible"
|
|
6
|
-
:title="title"
|
|
7
|
-
:moreFactorOptions="moreFactorOptions"
|
|
8
|
-
:emptyFactorOptions="emptyFactorOptions"
|
|
9
|
-
:tableData="tableData"
|
|
10
|
-
:shortcutData="shortcutData"
|
|
11
|
-
:showConfig="showConfig"
|
|
12
|
-
@add="handleAddFactor"
|
|
13
|
-
@delete="handleDeleteFactor"
|
|
14
|
-
@enabled="handleEnabledFactor"
|
|
15
|
-
@closed="handleClosed"
|
|
16
|
-
@shortcutAdd="handleShortcutAdd"
|
|
17
|
-
@shortcutDelete="handleShortcutDelete"
|
|
18
|
-
/>
|
|
19
|
-
</div>
|
|
20
|
-
</template>
|
|
21
|
-
|
|
22
1
|
<script setup>
|
|
23
|
-
import
|
|
24
|
-
import { ref, onMounted } from "vue";
|
|
2
|
+
import { getUserData } from "st-func";
|
|
3
|
+
import { ref, onMounted, inject } from "vue";
|
|
4
|
+
|
|
5
|
+
const { request } = inject("stConfig"); // 组件库全局配置
|
|
25
6
|
|
|
26
7
|
const visible = ref(false);
|
|
27
8
|
const title = ref("品种-code(周期)");
|
|
@@ -41,77 +22,64 @@ const showConfig = {
|
|
|
41
22
|
// 打开弹窗
|
|
42
23
|
const openDialog = async () => {
|
|
43
24
|
// 获取预警因子[多, 空]选项
|
|
44
|
-
{
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
25
|
+
const params = {
|
|
26
|
+
pageNum: 1,
|
|
27
|
+
pageSize: 9999,
|
|
28
|
+
factorType: 2,
|
|
29
|
+
};
|
|
30
|
+
const { body } = await request.post("/middleLayer/post/alarm/deliversign/getFactorConfigByPage", params);
|
|
31
|
+
moreFactorOptions.value = body.list.reduce((result, item) => {
|
|
32
|
+
result.push({
|
|
33
|
+
alarmFactor: item.id,
|
|
34
|
+
...item.tbFactorConfigExtendList.find((citem) => citem.factorType === 1),
|
|
35
|
+
});
|
|
36
|
+
return result;
|
|
37
|
+
}, []);
|
|
38
|
+
emptyFactorOptions.value = body.list.reduce((result, item) => {
|
|
39
|
+
result.push({
|
|
40
|
+
alarmFactor: item.id,
|
|
41
|
+
...item.tbFactorConfigExtendList.find((citem) => citem.factorType === -1),
|
|
56
42
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
alarmFactor: item.id,
|
|
61
|
-
...item.tbFactorConfigExtendList.find((citem) => citem.factorType === 1),
|
|
62
|
-
});
|
|
63
|
-
return result;
|
|
64
|
-
}, []);
|
|
65
|
-
emptyFactorOptions.value = body.list.reduce((result, item) => {
|
|
66
|
-
result.push({
|
|
67
|
-
alarmFactor: item.id,
|
|
68
|
-
...item.tbFactorConfigExtendList.find((citem) => citem.factorType === -1),
|
|
69
|
-
});
|
|
70
|
-
return result;
|
|
71
|
-
}, []);
|
|
72
|
-
}
|
|
73
|
-
// 获取自定义快捷配置数据
|
|
43
|
+
return result;
|
|
44
|
+
}, []);
|
|
45
|
+
// 获取快捷配置
|
|
74
46
|
queryShortcutData();
|
|
75
47
|
visible.value = true;
|
|
76
48
|
};
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
49
|
+
// 关闭弹窗
|
|
50
|
+
const handleClosed = () => {
|
|
51
|
+
console.log("弹窗关闭");
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// 添加因子预警
|
|
55
|
+
const handleAddFactor = (ruleForm) => {
|
|
56
|
+
console.log(ruleForm);
|
|
57
|
+
};
|
|
58
|
+
// 删除因子预警
|
|
59
|
+
const handleDeleteFactor = (row) => {
|
|
60
|
+
console.log("删除", row);
|
|
61
|
+
};
|
|
62
|
+
// 启用因子预警
|
|
63
|
+
const handleEnabledFactor = (row) => {
|
|
64
|
+
console.log("启用", row);
|
|
65
|
+
};
|
|
81
66
|
|
|
67
|
+
// 查询快捷配置
|
|
82
68
|
const queryShortcutData = async () => {
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
url: "http://192.168.12.38:5173/middleLayer/post/alarm/deliversign/queryFactorAlarmConfig",
|
|
89
|
-
data: {
|
|
90
|
-
userId: 103,
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
shortcutData.value = data.body;
|
|
69
|
+
const params = {
|
|
70
|
+
userId: getUserData("id"),
|
|
71
|
+
};
|
|
72
|
+
const { body } = await request.post("/middleLayer/post/alarm/deliversign/queryFactorAlarmConfig", params);
|
|
73
|
+
shortcutData.value = body;
|
|
94
74
|
};
|
|
75
|
+
// 更新快捷配置
|
|
95
76
|
const handleShortcutAdd = async (params) => {
|
|
96
|
-
|
|
97
|
-
method: "post",
|
|
98
|
-
headers: {
|
|
99
|
-
token: "a4c883f7f2efb1fe42505961ce97b954",
|
|
100
|
-
},
|
|
101
|
-
url: "http://192.168.12.38:5173/middleLayer/post/alarm/deliversign/addOrUpdateFactorAlarmConfig",
|
|
102
|
-
data: params,
|
|
103
|
-
});
|
|
77
|
+
await request.post("/middleLayer/post/alarm/deliversign/addOrUpdateFactorAlarmConfig", params);
|
|
104
78
|
queryShortcutData();
|
|
105
79
|
};
|
|
80
|
+
// 删除快捷配置
|
|
106
81
|
const handleShortcutDelete = async (params) => {
|
|
107
|
-
|
|
108
|
-
method: "post",
|
|
109
|
-
headers: {
|
|
110
|
-
token: "a4c883f7f2efb1fe42505961ce97b954",
|
|
111
|
-
},
|
|
112
|
-
url: "http://192.168.12.38:5173/middleLayer/post/alarm/deliversign/delFactorAlarmConfig",
|
|
113
|
-
data: { id: params.id },
|
|
114
|
-
});
|
|
82
|
+
await request.post("/middleLayer/post/alarm/deliversign/delFactorAlarmConfig", { id: params.id });
|
|
115
83
|
queryShortcutData();
|
|
116
84
|
};
|
|
117
85
|
|
|
@@ -129,7 +97,7 @@ onMounted(() => {
|
|
|
129
97
|
factorExtendValue: "1",
|
|
130
98
|
factorExtendName: "30均线上+向上+单箱",
|
|
131
99
|
userId: 103,
|
|
132
|
-
totalCount:
|
|
100
|
+
totalCount: 12,
|
|
133
101
|
currentCount: 1,
|
|
134
102
|
enable: 1,
|
|
135
103
|
mark: null,
|
|
@@ -212,3 +180,24 @@ onMounted(() => {
|
|
|
212
180
|
];
|
|
213
181
|
});
|
|
214
182
|
</script>
|
|
183
|
+
|
|
184
|
+
<template>
|
|
185
|
+
<div style="width: 100%; height: 100%">
|
|
186
|
+
<el-button @click="openDialog">因子预警</el-button>
|
|
187
|
+
<st-factorWarning
|
|
188
|
+
v-model:visible="visible"
|
|
189
|
+
:title="title"
|
|
190
|
+
:moreFactorOptions="moreFactorOptions"
|
|
191
|
+
:emptyFactorOptions="emptyFactorOptions"
|
|
192
|
+
:tableData="tableData"
|
|
193
|
+
:shortcutData="shortcutData"
|
|
194
|
+
:showConfig="showConfig"
|
|
195
|
+
@add="handleAddFactor"
|
|
196
|
+
@delete="handleDeleteFactor"
|
|
197
|
+
@enabled="handleEnabledFactor"
|
|
198
|
+
@closed="handleClosed"
|
|
199
|
+
@shortcutAdd="handleShortcutAdd"
|
|
200
|
+
@shortcutDelete="handleShortcutDelete"
|
|
201
|
+
/>
|
|
202
|
+
</div>
|
|
203
|
+
</template>
|