Commit dc1239e372b9571830c416d8199cfdfecefad35a

Authored by fengwotao
1 parent 40d8840e

fix(src/packages): 信息控件下的时间选择器新增面版内快捷选择

@@ -13,7 +13,7 @@ export const option = { @@ -13,7 +13,7 @@ export const option = {
13 // 下拉展示 13 // 下拉展示
14 isPanel: 0, 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 defaultType: DefaultTypeEnum.STATIC, 18 defaultType: DefaultTypeEnum.STATIC,
19 // 动态默认值偏移单位 19 // 动态默认值偏移单位
@@ -5,20 +5,21 @@ @@ -5,20 +5,21 @@
5 :panel="!!chartConfig.option.isPanel" 5 :panel="!!chartConfig.option.isPanel"
6 :type="chartConfig.option.componentInteractEventKey" 6 :type="chartConfig.option.componentInteractEventKey"
7 :style="`width:${w}px;`" 7 :style="`width:${w}px;`"
8 - :to="false" 8 + :to="true"
9 @update:value="onChange" 9 @update:value="onChange"
  10 + :shortcuts="rangeShortcuts"
10 /> 11 />
11 </template> 12 </template>
12 13
13 <script setup lang="ts"> 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 import { CreateComponentType } from '@/packages/index.d' 17 import { CreateComponentType } from '@/packages/index.d'
17 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' 18 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
18 import { useChartInteract } from '@/hooks/external/useChartDateInteract.hook' 19 import { useChartInteract } from '@/hooks/external/useChartDateInteract.hook'
19 import { InteractEventOn } from '@/enums/eventEnum' 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 const props = defineProps({ 24 const props = defineProps({
24 chartConfig: { 25 chartConfig: {
@@ -28,8 +29,24 @@ const props = defineProps({ @@ -28,8 +29,24 @@ const props = defineProps({
28 }) 29 })
29 30
30 const { w, h } = toRefs(props.chartConfig.attr) 31 const { w, h } = toRefs(props.chartConfig.attr)
  32 +
31 const rangeDate = ref<number | number[]>() 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 const option = shallowReactive({ 50 const option = shallowReactive({
34 dataset: props.chartConfig.option.dataset 51 dataset: props.chartConfig.option.dataset
35 }) 52 })
@@ -38,36 +55,35 @@ const isRange = computed(() => { @@ -38,36 +55,35 @@ const isRange = computed(() => {
38 return props.chartConfig.option.componentInteractEventKey.endsWith('range') 55 return props.chartConfig.option.componentInteractEventKey.endsWith('range')
39 }) 56 })
40 57
41 -  
42 // 监听事件改变 58 // 监听事件改变
43 const onChange = (v: number | number[] | null) => { 59 const onChange = (v: number | number[] | null) => {
44 if (isRange.value) { 60 if (isRange.value) {
45 let dateStart = null 61 let dateStart = null
46 let dateEnd = null 62 let dateEnd = null
47 let daterange = null 63 let daterange = null
48 - if(v instanceof Array){ 64 + if (v instanceof Array) {
49 dateStart = v[0] 65 dateStart = v[0]
50 dateEnd = v[1] 66 dateEnd = v[1]
51 daterange = `${v[0]}-${v[1]}` 67 daterange = `${v[0]}-${v[1]}`
52 } 68 }
53 // 存储到联动数据 69 // 存储到联动数据
54 useChartInteract( 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 } else { 80 } else {
65 // 存储到联动数据 81 // 存储到联动数据
66 useChartInteract( 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,7 +103,7 @@ const getDiffDate = (type: ComponentInteractEventEnum, date: dayjs.Dayjs) => {
87 case ComponentInteractEventEnum.YEAR: 103 case ComponentInteractEventEnum.YEAR:
88 case ComponentInteractEventEnum.YEAR_RANGE: 104 case ComponentInteractEventEnum.YEAR_RANGE:
89 date = date.startOf('year') 105 date = date.startOf('year')
90 - break 106 + break
91 case ComponentInteractEventEnum.QUARTER: 107 case ComponentInteractEventEnum.QUARTER:
92 case ComponentInteractEventEnum.QUARTER_RANGE: 108 case ComponentInteractEventEnum.QUARTER_RANGE:
93 date = date.startOf('quarter') 109 date = date.startOf('quarter')
@@ -99,48 +115,50 @@ const getDiffDate = (type: ComponentInteractEventEnum, date: dayjs.Dayjs) => { @@ -99,48 +115,50 @@ const getDiffDate = (type: ComponentInteractEventEnum, date: dayjs.Dayjs) => {
99 } 115 }
100 116
101 watch( 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 watch( 159 watch(
142 () => props.chartConfig.option.shortcut, 160 () => props.chartConfig.option.shortcut,
143 - (newData) => { 161 + newData => {
144 if (!newData) return 162 if (!newData) return
145 const startTs = Date.now() - newData 163 const startTs = Date.now() - newData
146 const endTs = Date.now() 164 const endTs = Date.now()
@@ -153,7 +171,6 @@ watch( @@ -153,7 +171,6 @@ watch(
153 ) 171 )
154 </script> 172 </script>
155 173
156 -  
157 <style lang="scss" scoped> 174 <style lang="scss" scoped>
158 @include deep() { 175 @include deep() {
159 .n-input { 176 .n-input {
@@ -162,4 +179,4 @@ watch( @@ -162,4 +179,4 @@ watch(
162 align-items: center; 179 align-items: center;
163 } 180 }
164 } 181 }
165 -</style>  
  182 +</style>