Showing
2 changed files
with
351 additions
and
53 deletions
@@ -6,31 +6,20 @@ import { copyTransFun } from '/@/utils/fnUtils'; | @@ -6,31 +6,20 @@ import { copyTransFun } from '/@/utils/fnUtils'; | ||
6 | import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; | 6 | import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; |
7 | import { getAttribute } from '/@/api/ruleengine/ruleengineApi'; | 7 | import { getAttribute } from '/@/api/ruleengine/ruleengineApi'; |
8 | import { findDictItemByCode } from '/@/api/system/dict'; | 8 | import { findDictItemByCode } from '/@/api/system/dict'; |
9 | - | ||
10 | -export enum TypeEnum { | ||
11 | - IS_TIMING = 'TIMING', | ||
12 | - IS_WEEK = 'week', | ||
13 | - IS_MONTH = 'month', | ||
14 | -} | ||
15 | -export const isTiming = (type: string) => { | ||
16 | - return type === TypeEnum.IS_TIMING; | ||
17 | -}; | ||
18 | -export const isWeek = (type: string) => { | ||
19 | - return type === TypeEnum.IS_WEEK; | ||
20 | -}; | ||
21 | - | ||
22 | -export const isMonth = (type: string) => { | ||
23 | - return type === TypeEnum.IS_MONTH; | ||
24 | -}; | ||
25 | - | ||
26 | -export enum AggregateDataEnum { | ||
27 | - MIN = 'MIN', | ||
28 | - MAX = 'MAX', | ||
29 | - AVG = 'AVG', | ||
30 | - SUM = 'SUM', | ||
31 | - COUNT = 'COUNT', | ||
32 | - NONE = 'NONE', | ||
33 | -} | 9 | +import { |
10 | + optionsConfig, | ||
11 | + isTiming, | ||
12 | + isWeek, | ||
13 | + isMonth, | ||
14 | + isEmpty, | ||
15 | + isDefultWeek, | ||
16 | + isMin, | ||
17 | + isMax, | ||
18 | + isAvg, | ||
19 | + isSum, | ||
20 | + isCountAll, | ||
21 | + AggregateDataEnum, | ||
22 | +} from './timeConfig'; | ||
34 | 23 | ||
35 | // 表格配置 | 24 | // 表格配置 |
36 | export const columns: BasicColumn[] = [ | 25 | export const columns: BasicColumn[] = [ |
@@ -366,7 +355,7 @@ export const formSchema: QFormSchema[] = [ | @@ -366,7 +355,7 @@ export const formSchema: QFormSchema[] = [ | ||
366 | colProps: { span: 24 }, | 355 | colProps: { span: 24 }, |
367 | }, | 356 | }, |
368 | { | 357 | { |
369 | - field: '10', | 358 | + field: 'condition', |
370 | label: '聚合条件', | 359 | label: '聚合条件', |
371 | required: true, | 360 | required: true, |
372 | component: 'Select', | 361 | component: 'Select', |
@@ -389,56 +378,229 @@ export const formSchema: QFormSchema[] = [ | @@ -389,56 +378,229 @@ export const formSchema: QFormSchema[] = [ | ||
389 | label: '最小值', | 378 | label: '最小值', |
390 | value: AggregateDataEnum.MIN, | 379 | value: AggregateDataEnum.MIN, |
391 | }, | 380 | }, |
381 | + { | ||
382 | + label: '计数', | ||
383 | + value: AggregateDataEnum.COUNTALL, | ||
384 | + }, | ||
385 | + { | ||
386 | + label: '空', | ||
387 | + value: AggregateDataEnum.EMPTY, | ||
388 | + }, | ||
392 | ], | 389 | ], |
393 | }, | 390 | }, |
394 | colProps: { span: 24 }, | 391 | colProps: { span: 24 }, |
395 | }, | 392 | }, |
396 | { | 393 | { |
397 | - field: '91112', | 394 | + field: 'maxNumber', |
395 | + component: 'InputNumber', | ||
396 | + label: '最大值', | ||
397 | + required: true, | ||
398 | + defaultValue: 200, | ||
399 | + colProps: { span: 22 }, | ||
400 | + componentProps: { | ||
401 | + min: 7, | ||
402 | + max: 50000, | ||
403 | + }, | ||
404 | + ifShow: ({ values }) => isEmpty(values.condition), | ||
405 | + }, | ||
406 | + { | ||
407 | + field: 'defaultWeek', | ||
408 | + component: 'ApiRadioGroup', | ||
398 | label: '查询周期', | 409 | label: '查询周期', |
399 | required: true, | 410 | required: true, |
400 | - component: 'Select', | 411 | + colProps: { |
412 | + span: 24, | ||
413 | + }, | ||
414 | + defaultValue: '2', | ||
401 | componentProps: { | 415 | componentProps: { |
402 | placeholder: '请选择查询周期', | 416 | placeholder: '请选择查询周期', |
403 | options: [ | 417 | options: [ |
404 | - { label: '1秒', value: '1000' }, | ||
405 | - { label: '5秒', value: '5000' }, | ||
406 | - { label: '10秒', value: '10000' }, | ||
407 | - { label: '15秒', value: '15000' }, | ||
408 | - { label: '30秒', value: '30000' }, | ||
409 | - { label: '1分', value: '60000' }, | ||
410 | - { label: '2分', value: '120000' }, | ||
411 | - { label: '5分', value: '300000' }, | ||
412 | - { label: '10分', value: '600000' }, | ||
413 | - { label: '15分', value: '900000' }, | ||
414 | - { label: '30分', value: '1800000' }, | ||
415 | - { label: '1小时', value: '3600000' }, | ||
416 | - { label: '2小时', value: '7200000' }, | ||
417 | - { label: '5小时', value: '18000000' }, | ||
418 | - { label: '10小时', value: '36000000' }, | ||
419 | - { label: '12小时', value: '43200000' }, | ||
420 | - { label: '1天', value: '86400000' }, | ||
421 | - { label: '7天', value: '604800000' }, | ||
422 | - { label: '30天', value: '2592000000' }, | 418 | + { |
419 | + label: '自定义周期', | ||
420 | + value: 'defaultIsWeek', | ||
421 | + }, | ||
422 | + { | ||
423 | + label: '固定周期', | ||
424 | + value: '2', | ||
425 | + }, | ||
423 | ], | 426 | ], |
424 | }, | 427 | }, |
428 | + }, | ||
429 | + { | ||
430 | + field: '3ddsadds', | ||
431 | + label: '时间段', | ||
432 | + required: true, | ||
433 | + component: 'RangePicker', | ||
434 | + componentProps: { | ||
435 | + showTime: { | ||
436 | + defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')], | ||
437 | + }, | ||
438 | + placeholder: '请选择时间段', | ||
439 | + }, | ||
440 | + colProps: { span: 6 }, | ||
441 | + ifShow: ({ values }) => isDefultWeek(values.defaultWeek), | ||
442 | + }, | ||
443 | + { | ||
444 | + field: '91112', | ||
445 | + label: '时间周期', | ||
446 | + required: true, | ||
447 | + component: 'ApiSelect', | ||
448 | + defaultValue: '1000', | ||
449 | + componentProps: ({ formActionType }) => { | ||
450 | + const { updateSchema } = formActionType; | ||
451 | + return { | ||
452 | + api: async () => { | ||
453 | + const data: any = await findDictItemByCode({ dictCode: 'query_week' }); | ||
454 | + const option = data.map((item) => { | ||
455 | + return { | ||
456 | + label: item.itemText, | ||
457 | + value: item.itemValue, | ||
458 | + }; | ||
459 | + }); | ||
460 | + return option; | ||
461 | + }, | ||
462 | + async onChange(e) { | ||
463 | + if (Number(e) <= 30000) { | ||
464 | + //30秒以内 -> 1秒 | ||
465 | + updateSchema({ | ||
466 | + field: '102121', | ||
467 | + componentProps: { | ||
468 | + options: optionsConfig.slice(0, 1), | ||
469 | + }, | ||
470 | + }); | ||
471 | + } else if (Number(e) == 60000) { | ||
472 | + //1分钟以内 -> 1秒 5秒 | ||
473 | + updateSchema({ | ||
474 | + field: '102121', | ||
475 | + componentProps: { | ||
476 | + options: optionsConfig.slice(0, 2), | ||
477 | + }, | ||
478 | + }); | ||
479 | + } else if (Number(e) == 120000) { | ||
480 | + //2分钟以内 -> 1秒 5秒 10 15 | ||
481 | + updateSchema({ | ||
482 | + field: '102121', | ||
483 | + componentProps: { | ||
484 | + options: optionsConfig.slice(0, 4), | ||
485 | + }, | ||
486 | + }); | ||
487 | + } else if (Number(e) == 300000) { | ||
488 | + //5分钟以内 -> 1秒 5秒 10 15 30 | ||
489 | + updateSchema({ | ||
490 | + field: '102121', | ||
491 | + componentProps: { | ||
492 | + options: optionsConfig.slice(0, 5), | ||
493 | + }, | ||
494 | + }); | ||
495 | + } else if (Number(e) == 600000) { | ||
496 | + //10分钟以内 -> 5秒 10 15 30 1分钟 | ||
497 | + updateSchema({ | ||
498 | + field: '102121', | ||
499 | + componentProps: { | ||
500 | + options: optionsConfig.slice(1, 2).concat(optionsConfig.slice(2, 6)), | ||
501 | + }, | ||
502 | + }); | ||
503 | + } else if (Number(e) == 900000 || Number(e) == 1800000) { | ||
504 | + //15 30 分钟以内 -> 5秒 10 15 30 1分钟 2分钟 | ||
505 | + updateSchema({ | ||
506 | + field: '102121', | ||
507 | + componentProps: { | ||
508 | + options: optionsConfig.slice(1, 2).concat(optionsConfig.slice(2, 7)), | ||
509 | + }, | ||
510 | + }); | ||
511 | + } else if (Number(e) == 3600000) { | ||
512 | + //1小时以内 -> 10秒 15 30 1分钟 2分钟 5分钟 | ||
513 | + updateSchema({ | ||
514 | + field: '102121', | ||
515 | + componentProps: { | ||
516 | + options: optionsConfig.slice(2, 8), | ||
517 | + }, | ||
518 | + }); | ||
519 | + } else if (Number(e) == 7200000) { | ||
520 | + //2小时以内 -> 15秒 30 1分钟 2分钟 5分钟 10 15 | ||
521 | + updateSchema({ | ||
522 | + field: '102121', | ||
523 | + componentProps: { | ||
524 | + options: optionsConfig.slice(3, 10), | ||
525 | + }, | ||
526 | + }); | ||
527 | + } else if (Number(e) == 18000000) { | ||
528 | + //5小时以内 -> 1分钟 2分钟 5分钟 10 15 30 | ||
529 | + updateSchema({ | ||
530 | + field: '102121', | ||
531 | + componentProps: { | ||
532 | + options: optionsConfig.slice(5, 11), | ||
533 | + }, | ||
534 | + }); | ||
535 | + } else if (Number(e) == 36000000 || Number(e) == 43200000) { | ||
536 | + //10 12小时以内 -> 2分钟 5分钟 10 15 30 1小时 | ||
537 | + updateSchema({ | ||
538 | + field: '102121', | ||
539 | + componentProps: { | ||
540 | + options: optionsConfig.slice(6, 12), | ||
541 | + }, | ||
542 | + }); | ||
543 | + } else if (Number(e) == 86400000) { | ||
544 | + //1天以内 -> 5分钟 10 15 30 1小时 2 | ||
545 | + updateSchema({ | ||
546 | + field: '102121', | ||
547 | + componentProps: { | ||
548 | + options: optionsConfig.slice(7, 13), | ||
549 | + }, | ||
550 | + }); | ||
551 | + } else if (Number(e) == 604800000) { | ||
552 | + //7天以内 -> 30分钟 1小时 2 5 10 12 1天 | ||
553 | + updateSchema({ | ||
554 | + field: '102121', | ||
555 | + componentProps: { | ||
556 | + options: optionsConfig.slice(10, 17), | ||
557 | + }, | ||
558 | + }); | ||
559 | + } else if (Number(e) == 2592000000) { | ||
560 | + //30天以内 -> 2小时 5 10 12 1天 | ||
561 | + updateSchema({ | ||
562 | + field: '102121', | ||
563 | + componentProps: { | ||
564 | + options: optionsConfig.slice(12, 17), | ||
565 | + }, | ||
566 | + }); | ||
567 | + } | ||
568 | + }, | ||
569 | + maxLength: 250, | ||
570 | + placeholder: '请选择查询周期', | ||
571 | + }; | ||
572 | + }, | ||
425 | colProps: { span: 24 }, | 573 | colProps: { span: 24 }, |
574 | + ifShow: ({ values }) => | ||
575 | + (!isEmpty(values.condition) && !isDefultWeek(values.defaultWeek)) || | ||
576 | + isMin(values.condition) || | ||
577 | + isMax(values.condition) || | ||
578 | + isAvg(values.condition) || | ||
579 | + isSum(values.condition) || | ||
580 | + isCountAll(values.condition), | ||
426 | }, | 581 | }, |
427 | { | 582 | { |
428 | field: '102121', | 583 | field: '102121', |
429 | label: '间隔时间', | 584 | label: '间隔时间', |
430 | required: true, | 585 | required: true, |
431 | component: 'Select', | 586 | component: 'Select', |
587 | + colProps: { span: 24 }, | ||
588 | + defaultValue: '1000', | ||
432 | componentProps: { | 589 | componentProps: { |
433 | placeholder: '请选择间隔时间', | 590 | placeholder: '请选择间隔时间', |
434 | options: [ | 591 | options: [ |
435 | - { label: '2小时', value: '7200000' }, | ||
436 | - { label: '5小时', value: '18000000' }, | ||
437 | - { label: '10小时', value: '36000000' }, | ||
438 | - { label: '12小时', value: '43200000' }, | ||
439 | - { label: '1天', value: '86400000' }, | 592 | + { |
593 | + label: '1秒', | ||
594 | + value: '1000', | ||
595 | + }, | ||
440 | ], | 596 | ], |
441 | }, | 597 | }, |
442 | - colProps: { span: 24 }, | 598 | + ifShow: ({ values }) => |
599 | + (!isEmpty(values.condition) && !isDefultWeek(values.defaultWeek)) || | ||
600 | + isMin(values.condition) || | ||
601 | + isMax(values.condition) || | ||
602 | + isAvg(values.condition) || | ||
603 | + isSum(values.condition) || | ||
604 | + isCountAll(values.condition), | ||
443 | }, | 605 | }, |
444 | ]; | 606 | ]; |
src/views/report/config/timeConfig.ts
0 → 100644
1 | +interface IOptionConfig { | ||
2 | + label: string; | ||
3 | + value: string; | ||
4 | +} | ||
5 | + | ||
6 | +export const optionsConfig: IOptionConfig[] = [ | ||
7 | + { | ||
8 | + label: '1秒', | ||
9 | + value: '1000', | ||
10 | + }, | ||
11 | + { | ||
12 | + label: '5秒', | ||
13 | + value: '5000', | ||
14 | + }, | ||
15 | + { | ||
16 | + label: '10秒', | ||
17 | + value: '10000', | ||
18 | + }, | ||
19 | + { | ||
20 | + label: '15秒', | ||
21 | + value: '15000', | ||
22 | + }, | ||
23 | + { | ||
24 | + label: '30秒', | ||
25 | + value: '30000', | ||
26 | + }, | ||
27 | + { | ||
28 | + label: '1分钟', | ||
29 | + value: '60000', | ||
30 | + }, | ||
31 | + { | ||
32 | + label: '2分钟', | ||
33 | + value: '120000', | ||
34 | + }, | ||
35 | + { | ||
36 | + label: '5分钟', | ||
37 | + value: '300000', | ||
38 | + }, | ||
39 | + { | ||
40 | + label: '10分钟', | ||
41 | + value: '600000', | ||
42 | + }, | ||
43 | + { | ||
44 | + label: '15分钟', | ||
45 | + value: '900000', | ||
46 | + }, | ||
47 | + { | ||
48 | + label: '30分钟', | ||
49 | + value: '1800000', | ||
50 | + }, | ||
51 | + { | ||
52 | + label: '1小时', | ||
53 | + value: '3600000', | ||
54 | + }, | ||
55 | + { | ||
56 | + label: '2小时', | ||
57 | + value: '7200000', | ||
58 | + }, | ||
59 | + { | ||
60 | + label: '5小时', | ||
61 | + value: '18000000', | ||
62 | + }, | ||
63 | + { | ||
64 | + label: '10小时', | ||
65 | + value: '36000000', | ||
66 | + }, | ||
67 | + { | ||
68 | + label: '12小时', | ||
69 | + value: '43200000', | ||
70 | + }, | ||
71 | + { | ||
72 | + label: '1天', | ||
73 | + value: '86400000', | ||
74 | + }, | ||
75 | +]; | ||
76 | + | ||
77 | +export enum TypeEnum { | ||
78 | + IS_TIMING = 'TIMING', | ||
79 | + IS_WEEK = 'week', | ||
80 | + IS_MONTH = 'month', | ||
81 | + IS_EMPTY = 'EMPTY', | ||
82 | + IS_DEFAULT_WEEK = 'defaultIsWeek', | ||
83 | + IS_MIN = 'MIN', | ||
84 | + IS_MAX = 'MAX', | ||
85 | + IS_AVG = 'AVG', | ||
86 | + IS_SUM = 'SUM', | ||
87 | + COUNTALL = 'COUNTALL', | ||
88 | +} | ||
89 | + | ||
90 | +export enum AggregateDataEnum { | ||
91 | + MIN = 'MIN', | ||
92 | + MAX = 'MAX', | ||
93 | + AVG = 'AVG', | ||
94 | + SUM = 'SUM', | ||
95 | + COUNTALL = 'COUNTALL', | ||
96 | + EMPTY = 'EMPTY', | ||
97 | +} | ||
98 | + | ||
99 | +export const isTiming = (type: string) => { | ||
100 | + return type === TypeEnum.IS_TIMING; | ||
101 | +}; | ||
102 | + | ||
103 | +export const isWeek = (type: string) => { | ||
104 | + return type === TypeEnum.IS_WEEK; | ||
105 | +}; | ||
106 | + | ||
107 | +export const isMonth = (type: string) => { | ||
108 | + return type === TypeEnum.IS_MONTH; | ||
109 | +}; | ||
110 | + | ||
111 | +export const isEmpty = (type: string) => { | ||
112 | + return type === TypeEnum.IS_EMPTY; | ||
113 | +}; | ||
114 | + | ||
115 | +export const isDefultWeek = (type: string) => { | ||
116 | + return type === TypeEnum.IS_DEFAULT_WEEK; | ||
117 | +}; | ||
118 | + | ||
119 | +export const isMin = (type: string) => { | ||
120 | + return type === TypeEnum.IS_MIN; | ||
121 | +}; | ||
122 | + | ||
123 | +export const isMax = (type: string) => { | ||
124 | + return type === TypeEnum.IS_MAX; | ||
125 | +}; | ||
126 | + | ||
127 | +export const isAvg = (type: string) => { | ||
128 | + return type === TypeEnum.IS_AVG; | ||
129 | +}; | ||
130 | +export const isSum = (type: string) => { | ||
131 | + return type === TypeEnum.IS_SUM; | ||
132 | +}; | ||
133 | + | ||
134 | +export const isCountAll = (type: string) => { | ||
135 | + return type === TypeEnum.COUNTALL; | ||
136 | +}; |