215 lines
5.8 KiB
Vue
Executable File
215 lines
5.8 KiB
Vue
Executable File
<template>
|
|
<collapse-item name="展示方式" :expanded="true">
|
|
<setting-item-box name="选择方式">
|
|
<n-select v-model:value="optionData.isPanel" size="small" :options="panelOptions" />
|
|
</setting-item-box>
|
|
</collapse-item>
|
|
|
|
<collapse-item name="时间配置" :expanded="true">
|
|
<setting-item-box name="基础">
|
|
<setting-item name="类型">
|
|
<n-select v-model:value="optionData.componentInteractEventKey" size="small" :options="datePickerTypeOptions"
|
|
@update:value="datePickerTypeUpdate"/>
|
|
</setting-item>
|
|
</setting-item-box>
|
|
|
|
<setting-item-box name="默认值">
|
|
<setting-item name="类型">
|
|
<n-select v-model:value="optionData.defaultType" size="small" :options="defaultTypeOptions"
|
|
@update:value="defaultTypeUpdate" />
|
|
</setting-item>
|
|
|
|
</setting-item-box>
|
|
<setting-item-box v-if="optionData.defaultType == DefaultTypeEnum.STATIC" :alone="true">
|
|
<setting-item name="静态默认值">
|
|
<n-date-picker size="small" clearable v-model:value="optionData.dataset" :type="optionData.componentInteractEventKey" />
|
|
</setting-item>
|
|
</setting-item-box>
|
|
<setting-item-box v-if="optionData.defaultType === DefaultTypeEnum.DYNAMIC" >
|
|
<template #name>
|
|
<n-text></n-text>
|
|
<n-tooltip trigger="hover">
|
|
<template #trigger>
|
|
<n-icon size="21" :depth="3">
|
|
<help-outline-icon></help-outline-icon>
|
|
</n-icon>
|
|
</template>
|
|
<n-text>打开页面时浏览器操作系统的系统时间+偏移量(单位)</n-text>
|
|
</n-tooltip>
|
|
</template>
|
|
<setting-item :name="differValueName">
|
|
<n-input-number v-model:value="optionData.differValue[0]" class="input-num-width" size="small">
|
|
<template #suffix>
|
|
{{DifferUnitObject[optionData.differUnit[0]]}}
|
|
</template>
|
|
</n-input-number>
|
|
</setting-item>
|
|
<setting-item :name="differUnitName">
|
|
<n-select v-model:value="optionData.differUnit[0]" size="small" :options="differUnitOptions" />
|
|
</setting-item>
|
|
<setting-item v-if="isRange" name="结束值动态偏移量">
|
|
<n-input-number v-model:value="optionData.differValue[1]" class="input-num-width" size="small">
|
|
<template #suffix>
|
|
{{DifferUnitObject[optionData.differUnit[1]]}}
|
|
</template>
|
|
</n-input-number>
|
|
</setting-item>
|
|
<setting-item v-if="isRange" name="结束值偏移单位">
|
|
<n-select v-model:value="optionData.differUnit[1]" size="small" :options="differUnitOptions" />
|
|
</setting-item>
|
|
</setting-item-box>
|
|
|
|
</collapse-item>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { PropType, computed } from 'vue'
|
|
import { icon } from '@/plugins'
|
|
import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
|
|
import { option } from './config'
|
|
import { ComponentInteractEventEnum, DefaultTypeEnum, DifferUnitEnum, DifferUnitObject } from './interact'
|
|
import dayjs from "dayjs";
|
|
|
|
const { HelpOutlineIcon } = icon.ionicons5
|
|
|
|
const props = defineProps({
|
|
optionData: {
|
|
type: Object as PropType<typeof option>,
|
|
required: true
|
|
}
|
|
})
|
|
|
|
const panelOptions = [
|
|
{
|
|
label: '下拉展示',
|
|
value: 0
|
|
},
|
|
{
|
|
label: '面板展示',
|
|
value: 1
|
|
}
|
|
]
|
|
|
|
const datePickerTypeOptions = [
|
|
{
|
|
label: '日期',
|
|
value: ComponentInteractEventEnum.DATE
|
|
},
|
|
{
|
|
label: '日期时间',
|
|
value: ComponentInteractEventEnum.DATE_TIME
|
|
},
|
|
{
|
|
label: '日期范围',
|
|
value: ComponentInteractEventEnum.DATE_RANGE
|
|
},
|
|
{
|
|
label: '月份',
|
|
value: ComponentInteractEventEnum.MONTH
|
|
},
|
|
{
|
|
label: '月份范围',
|
|
value: ComponentInteractEventEnum.MONTH_RANGE
|
|
},
|
|
{
|
|
label: '年份',
|
|
value: ComponentInteractEventEnum.YEAR
|
|
},
|
|
{
|
|
label: '年份范围',
|
|
value: ComponentInteractEventEnum.YEAR_RANGE
|
|
},
|
|
{
|
|
label: '季度',
|
|
value: ComponentInteractEventEnum.QUARTER
|
|
},
|
|
{
|
|
label: '季度范围',
|
|
value: ComponentInteractEventEnum.QUARTER_RANGE
|
|
}
|
|
]
|
|
|
|
const defaultTypeOptions = [
|
|
{
|
|
label: '静态',
|
|
value: DefaultTypeEnum.STATIC
|
|
},
|
|
{
|
|
label: '动态',
|
|
value: DefaultTypeEnum.DYNAMIC
|
|
},
|
|
{
|
|
label: '无',
|
|
value: DefaultTypeEnum.NONE
|
|
}
|
|
]
|
|
|
|
|
|
const differUnitOptions = [
|
|
// ManipulateType
|
|
{
|
|
value: DifferUnitEnum.DAY,
|
|
label: DifferUnitObject[DifferUnitEnum.DAY]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.WEEK,
|
|
label: DifferUnitObject[DifferUnitEnum.WEEK]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.MONTH,
|
|
label: DifferUnitObject[DifferUnitEnum.MONTH]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.QUARTER,
|
|
label: DifferUnitObject[DifferUnitEnum.QUARTER]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.YEAR,
|
|
label: DifferUnitObject[DifferUnitEnum.YEAR]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.HOUR,
|
|
label: DifferUnitObject[DifferUnitEnum.HOUR]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.MINUTE,
|
|
label: DifferUnitObject[DifferUnitEnum.MINUTE]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.SECOND,
|
|
label: DifferUnitObject[DifferUnitEnum.SECOND]
|
|
},
|
|
{
|
|
value: DifferUnitEnum.MILLISECOND,
|
|
label: DifferUnitObject[DifferUnitEnum.MILLISECOND]
|
|
}
|
|
]
|
|
|
|
|
|
const isRange = computed(() => {
|
|
return props.optionData.componentInteractEventKey.endsWith('range')
|
|
})
|
|
|
|
const differValueName = computed(() => {
|
|
return isRange.value ? '开始值动态偏移量' : '动态偏移量'
|
|
})
|
|
|
|
const differUnitName = computed(() => {
|
|
return isRange.value ? '开始值偏移单位' : '偏移单位'
|
|
})
|
|
|
|
const datePickerTypeUpdate = () => {
|
|
props.optionData.dataset = isRange.value ? [dayjs().valueOf(), dayjs().valueOf()] : dayjs().valueOf()
|
|
}
|
|
|
|
const defaultTypeUpdate = (v: string) => {
|
|
if (v === DefaultTypeEnum.STATIC) {
|
|
datePickerTypeUpdate()
|
|
} else {
|
|
// DefaultTypeEnum.
|
|
props.optionData.dataset = null
|
|
}
|
|
}
|
|
|
|
</script>
|