Commit e15f11accab5fc6cbfb6a0ed701b0bd003202a79

Authored by fengtao
1 parent ad80799d

refractor:重构报表配置表单配置项

@@ -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 ];
  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 +};