Commit dc1239e372b9571830c416d8199cfdfecefad35a
1 parent
40d8840e
fix(src/packages): 信息控件下的时间选择器新增面版内快捷选择
Showing
2 changed files
with
75 additions
and
58 deletions
| ... | ... | @@ -13,7 +13,7 @@ export const option = { |
| 13 | 13 | // 下拉展示 |
| 14 | 14 | isPanel: 0, |
| 15 | 15 | // 默认值 |
| 16 | - dataset: dayjs().valueOf() as number | number[] | null, | |
| 16 | + dataset: [new Date().getTime() - 86400000,new Date().getTime()], | |
| 17 | 17 | // 默认值类型 |
| 18 | 18 | defaultType: DefaultTypeEnum.STATIC, |
| 19 | 19 | // 动态默认值偏移单位 | ... | ... |
| ... | ... | @@ -5,20 +5,21 @@ |
| 5 | 5 | :panel="!!chartConfig.option.isPanel" |
| 6 | 6 | :type="chartConfig.option.componentInteractEventKey" |
| 7 | 7 | :style="`width:${w}px;`" |
| 8 | - :to="false" | |
| 8 | + :to="true" | |
| 9 | 9 | @update:value="onChange" |
| 10 | + :shortcuts="rangeShortcuts" | |
| 10 | 11 | /> |
| 11 | 12 | </template> |
| 12 | 13 | |
| 13 | 14 | <script setup lang="ts"> |
| 14 | -import { PropType, toRefs, shallowReactive, watch ,ref,computed} from 'vue' | |
| 15 | -import dayjs, {ManipulateType} from 'dayjs' | |
| 15 | +import { PropType, toRefs, shallowReactive, watch, ref, computed } from 'vue' | |
| 16 | +import dayjs, { ManipulateType } from 'dayjs' | |
| 16 | 17 | import { CreateComponentType } from '@/packages/index.d' |
| 17 | 18 | import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' |
| 18 | 19 | import { useChartInteract } from '@/hooks/external/useChartDateInteract.hook' |
| 19 | 20 | import { InteractEventOn } from '@/enums/eventEnum' |
| 20 | -import {ComponentInteractEventEnum, ComponentInteractParamsEnum, DefaultTypeEnum} from './interact' | |
| 21 | -import quarterOfYear from 'dayjs/plugin/quarterOfYear'; | |
| 21 | +import { ComponentInteractEventEnum, ComponentInteractParamsEnum, DefaultTypeEnum } from './interact' | |
| 22 | +import quarterOfYear from 'dayjs/plugin/quarterOfYear' | |
| 22 | 23 | |
| 23 | 24 | const props = defineProps({ |
| 24 | 25 | chartConfig: { |
| ... | ... | @@ -28,8 +29,24 @@ const props = defineProps({ |
| 28 | 29 | }) |
| 29 | 30 | |
| 30 | 31 | const { w, h } = toRefs(props.chartConfig.attr) |
| 32 | + | |
| 31 | 33 | const rangeDate = ref<number | number[]>() |
| 32 | 34 | |
| 35 | +const rangeShortcuts = { | |
| 36 | + 昨天: () => { | |
| 37 | + const cur = new Date().getTime() | |
| 38 | + return [cur - 86400000, cur] as const | |
| 39 | + }, | |
| 40 | + 最近7天: () => { | |
| 41 | + const cur = new Date().getTime() | |
| 42 | + return [cur - 604800000, cur] as const | |
| 43 | + }, | |
| 44 | + 最近30天: () => { | |
| 45 | + const cur = new Date().getTime() | |
| 46 | + return [cur - 2592000000, cur] as const | |
| 47 | + } | |
| 48 | +} | |
| 49 | + | |
| 33 | 50 | const option = shallowReactive({ |
| 34 | 51 | dataset: props.chartConfig.option.dataset |
| 35 | 52 | }) |
| ... | ... | @@ -38,36 +55,35 @@ const isRange = computed(() => { |
| 38 | 55 | return props.chartConfig.option.componentInteractEventKey.endsWith('range') |
| 39 | 56 | }) |
| 40 | 57 | |
| 41 | - | |
| 42 | 58 | // 监听事件改变 |
| 43 | 59 | const onChange = (v: number | number[] | null) => { |
| 44 | 60 | if (isRange.value) { |
| 45 | 61 | let dateStart = null |
| 46 | 62 | let dateEnd = null |
| 47 | 63 | let daterange = null |
| 48 | - if(v instanceof Array){ | |
| 64 | + if (v instanceof Array) { | |
| 49 | 65 | dateStart = v[0] |
| 50 | 66 | dateEnd = v[1] |
| 51 | 67 | daterange = `${v[0]}-${v[1]}` |
| 52 | 68 | } |
| 53 | 69 | // 存储到联动数据 |
| 54 | 70 | useChartInteract( |
| 55 | - props.chartConfig, | |
| 56 | - useChartEditStore, | |
| 57 | - { | |
| 58 | - [ComponentInteractParamsEnum.DATE_START]: dateStart, | |
| 59 | - [ComponentInteractParamsEnum.DATE_END]: dateEnd, | |
| 60 | - [ComponentInteractParamsEnum.DATE_RANGE]: daterange | |
| 61 | - }, | |
| 62 | - InteractEventOn.CHANGE | |
| 71 | + props.chartConfig, | |
| 72 | + useChartEditStore, | |
| 73 | + { | |
| 74 | + [ComponentInteractParamsEnum.DATE_START]: dateStart, | |
| 75 | + [ComponentInteractParamsEnum.DATE_END]: dateEnd, | |
| 76 | + [ComponentInteractParamsEnum.DATE_RANGE]: daterange | |
| 77 | + }, | |
| 78 | + InteractEventOn.CHANGE | |
| 63 | 79 | ) |
| 64 | 80 | } else { |
| 65 | 81 | // 存储到联动数据 |
| 66 | 82 | useChartInteract( |
| 67 | - props.chartConfig, | |
| 68 | - useChartEditStore, | |
| 69 | - { [ComponentInteractParamsEnum.DATE]: v }, | |
| 70 | - InteractEventOn.CHANGE | |
| 83 | + props.chartConfig, | |
| 84 | + useChartEditStore, | |
| 85 | + { [ComponentInteractParamsEnum.DATE]: v }, | |
| 86 | + InteractEventOn.CHANGE | |
| 71 | 87 | ) |
| 72 | 88 | } |
| 73 | 89 | } |
| ... | ... | @@ -87,7 +103,7 @@ const getDiffDate = (type: ComponentInteractEventEnum, date: dayjs.Dayjs) => { |
| 87 | 103 | case ComponentInteractEventEnum.YEAR: |
| 88 | 104 | case ComponentInteractEventEnum.YEAR_RANGE: |
| 89 | 105 | date = date.startOf('year') |
| 90 | - break | |
| 106 | + break | |
| 91 | 107 | case ComponentInteractEventEnum.QUARTER: |
| 92 | 108 | case ComponentInteractEventEnum.QUARTER_RANGE: |
| 93 | 109 | date = date.startOf('quarter') |
| ... | ... | @@ -99,48 +115,50 @@ const getDiffDate = (type: ComponentInteractEventEnum, date: dayjs.Dayjs) => { |
| 99 | 115 | } |
| 100 | 116 | |
| 101 | 117 | watch( |
| 102 | - () => { | |
| 103 | - return { | |
| 104 | - type: props.chartConfig.option.componentInteractEventKey as ComponentInteractEventEnum, | |
| 105 | - defaultType: props.chartConfig.option.defaultType as string, | |
| 106 | - differValue: props.chartConfig.option.differValue as number[], | |
| 107 | - differUnit: props.chartConfig.option.differUnit as ManipulateType[], | |
| 108 | - dataset: props.chartConfig.option.dataset as number | number[] | null, | |
| 109 | - }; | |
| 110 | - }, | |
| 111 | - (newData, oldData) => { | |
| 112 | - const hasTypeChanged = newData.type !== oldData?.type; | |
| 113 | - const hasDefaultTypeChanged = newData.defaultType !== oldData?.defaultType; | |
| 114 | - const hasDifferValueChanged = newData.differValue !== oldData?.differValue; | |
| 115 | - const hasDifferUnitChanged = newData.differUnit !== oldData?.differUnit; | |
| 118 | + () => { | |
| 119 | + return { | |
| 120 | + type: props.chartConfig.option.componentInteractEventKey as ComponentInteractEventEnum, | |
| 121 | + defaultType: props.chartConfig.option.defaultType as string, | |
| 122 | + differValue: props.chartConfig.option.differValue as number[], | |
| 123 | + differUnit: props.chartConfig.option.differUnit as ManipulateType[], | |
| 124 | + dataset: props.chartConfig.option.dataset as number | number[] | null | |
| 125 | + } | |
| 126 | + }, | |
| 127 | + (newData, oldData) => { | |
| 128 | + const hasTypeChanged = newData.type !== oldData?.type | |
| 129 | + const hasDefaultTypeChanged = newData.defaultType !== oldData?.defaultType | |
| 130 | + const hasDifferValueChanged = newData.differValue !== oldData?.differValue | |
| 131 | + const hasDifferUnitChanged = newData.differUnit !== oldData?.differUnit | |
| 116 | 132 | |
| 117 | - if (hasTypeChanged || hasDefaultTypeChanged || hasDifferValueChanged || hasDifferUnitChanged) { | |
| 118 | - if (newData.defaultType === DefaultTypeEnum.NONE) { | |
| 119 | - props.chartConfig.option.dataset = null; | |
| 120 | - } else if (newData.defaultType === DefaultTypeEnum.DYNAMIC) { | |
| 121 | - let date = dayjs(); | |
| 122 | - if (isRange.value) { | |
| 123 | - props.chartConfig.option.dataset = [ | |
| 124 | - getDiffDate(newData.type,date.add(newData.differValue[0], newData.differUnit[0])).valueOf(), | |
| 125 | - getDiffDate(newData.type,date.add(newData.differValue[1], newData.differUnit[1])).valueOf(), | |
| 126 | - ]; | |
| 127 | - } else { | |
| 128 | - props.chartConfig.option.dataset = getDiffDate(newData.type,date.add(newData.differValue[0], newData.differUnit[0])).valueOf() | |
| 129 | - } | |
| 133 | + if (hasTypeChanged || hasDefaultTypeChanged || hasDifferValueChanged || hasDifferUnitChanged) { | |
| 134 | + if (newData.defaultType === DefaultTypeEnum.NONE) { | |
| 135 | + props.chartConfig.option.dataset = null | |
| 136 | + } else if (newData.defaultType === DefaultTypeEnum.DYNAMIC) { | |
| 137 | + let date = dayjs() | |
| 138 | + if (isRange.value) { | |
| 139 | + props.chartConfig.option.dataset = [ | |
| 140 | + getDiffDate(newData.type, date.add(newData.differValue[0], newData.differUnit[0])).valueOf(), | |
| 141 | + getDiffDate(newData.type, date.add(newData.differValue[1], newData.differUnit[1])).valueOf() | |
| 142 | + ] | |
| 143 | + } else { | |
| 144 | + props.chartConfig.option.dataset = getDiffDate( | |
| 145 | + newData.type, | |
| 146 | + date.add(newData.differValue[0], newData.differUnit[0]) | |
| 147 | + ).valueOf() | |
| 130 | 148 | } |
| 131 | 149 | } |
| 132 | - option.dataset = props.chartConfig.option.dataset; | |
| 133 | - onChange(option.dataset); | |
| 134 | - }, | |
| 135 | - { | |
| 136 | - immediate: true, | |
| 137 | 150 | } |
| 138 | -); | |
| 139 | - | |
| 151 | + option.dataset = props.chartConfig.option.dataset | |
| 152 | + onChange(option.dataset) | |
| 153 | + }, | |
| 154 | + { | |
| 155 | + immediate: true | |
| 156 | + } | |
| 157 | +) | |
| 140 | 158 | |
| 141 | 159 | watch( |
| 142 | 160 | () => props.chartConfig.option.shortcut, |
| 143 | - (newData) => { | |
| 161 | + newData => { | |
| 144 | 162 | if (!newData) return |
| 145 | 163 | const startTs = Date.now() - newData |
| 146 | 164 | const endTs = Date.now() |
| ... | ... | @@ -153,7 +171,6 @@ watch( |
| 153 | 171 | ) |
| 154 | 172 | </script> |
| 155 | 173 | |
| 156 | - | |
| 157 | 174 | <style lang="scss" scoped> |
| 158 | 175 | @include deep() { |
| 159 | 176 | .n-input { |
| ... | ... | @@ -162,4 +179,4 @@ watch( |
| 162 | 179 | align-items: center; |
| 163 | 180 | } |
| 164 | 181 | } |
| 165 | -</style> | |
| \ No newline at end of file | ||
| 182 | +</style> | ... | ... |