Commit e15f11accab5fc6cbfb6a0ed701b0bd003202a79

Authored by fengtao
1 parent ad80799d

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

... ... @@ -6,31 +6,20 @@ import { copyTransFun } from '/@/utils/fnUtils';
6 6 import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi';
7 7 import { getAttribute } from '/@/api/ruleengine/ruleengineApi';
8 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 25 export const columns: BasicColumn[] = [
... ... @@ -366,7 +355,7 @@ export const formSchema: QFormSchema[] = [
366 355 colProps: { span: 24 },
367 356 },
368 357 {
369   - field: '10',
  358 + field: 'condition',
370 359 label: '聚合条件',
371 360 required: true,
372 361 component: 'Select',
... ... @@ -389,56 +378,229 @@ export const formSchema: QFormSchema[] = [
389 378 label: '最小值',
390 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 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 409 label: '查询周期',
399 410 required: true,
400   - component: 'Select',
  411 + colProps: {
  412 + span: 24,
  413 + },
  414 + defaultValue: '2',
401 415 componentProps: {
402 416 placeholder: '请选择查询周期',
403 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 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 583 field: '102121',
429 584 label: '间隔时间',
430 585 required: true,
431 586 component: 'Select',
  587 + colProps: { span: 24 },
  588 + defaultValue: '1000',
432 589 componentProps: {
433 590 placeholder: '请选择间隔时间',
434 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 +};
... ...