|
|
<template>
|
|
|
<div class="bs-setting-wrap">
|
|
|
<el-form
|
|
|
ref="form"
|
|
|
:model="config"
|
|
|
label-width="100px"
|
|
|
label-position="left"
|
|
|
class="setting-body bs-el-form"
|
|
|
>
|
|
|
<div>
|
|
|
<slot name="top" />
|
|
|
<el-form
|
|
|
:model="config.customize"
|
|
|
label-position="left"
|
|
|
class="setting-body bs-el-form"
|
|
|
label-width="100px"
|
|
|
>
|
|
|
<SettingTitle>位置</SettingTitle>
|
|
|
<div class="lc-field-body">
|
|
|
<PosWhSetting :config="config" />
|
|
|
</div>
|
|
|
<SettingTitle>旋转</SettingTitle>
|
|
|
<div class="lc-field-body">
|
|
|
<RotateSetting
|
|
|
:config="config"
|
|
|
/>
|
|
|
</div>
|
|
|
<SettingTitle>基础</SettingTitle>
|
|
|
<div class="lc-field-body">
|
|
|
<el-form-item label="组件类型">
|
|
|
<el-select
|
|
|
v-model="config.customize.type"
|
|
|
class="bs-el-select"
|
|
|
popper-class="bs-el-select"
|
|
|
@change="changeType"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="(type) in displayTypeOptions"
|
|
|
:key="type.value"
|
|
|
:label="type.label"
|
|
|
:value="type.value"
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<!-- 选择器背景颜色 -->
|
|
|
<el-form-item label="背景颜色">
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.bgColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<!-- 字体大小 -->
|
|
|
<el-form-item label="字体大小">
|
|
|
<el-input-number
|
|
|
v-model="config.customize.fontSize"
|
|
|
class="bs-el-input-number"
|
|
|
:min="12"
|
|
|
:max="100"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<!-- 字体颜色 -->
|
|
|
<el-form-item label="字体颜色">
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.fontColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<SettingTitle>下拉项</SettingTitle>
|
|
|
<!-- 选择器下拉框背景颜色 -->
|
|
|
<div class="lc-field-body">
|
|
|
<el-form-item label="背景颜色">
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.dropDownBox.bgColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="字体颜色">
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.dropDownBox.fontColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<!-- 下拉项悬浮背景颜色 -->
|
|
|
<!-- <el-form-item label="悬浮背景颜色">
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.dropDownBox.hoverBgColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item> -->
|
|
|
<!-- 下拉项悬浮字体颜色 -->
|
|
|
<el-form-item label="悬浮字体颜色">
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.dropDownBox.hoverFontColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<!-- 激活项文字颜色 -->
|
|
|
<el-form-item label="选中项文字颜色">
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.dropDownBox.selectedFontColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<!-- 选中范围背景颜色 -->
|
|
|
<el-form-item
|
|
|
v-if="['daterange', 'datetimerange'].includes(config.customize.type)"
|
|
|
label="范围背景颜色"
|
|
|
>
|
|
|
<ColorPicker
|
|
|
v-model="config.customize.dropDownBox.rangeBgColor"
|
|
|
:predefine="predefineThemeColors"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<SettingTitle>日期时间格式</SettingTitle>
|
|
|
<div class="lc-field-body">
|
|
|
<!-- <el-form-item label="时间显示格式化">
|
|
|
<div class="description">
|
|
|
<el-input
|
|
|
v-model="config.customize.format"
|
|
|
placeholder="例如:yyyy-MM-dd HH:mm:ss"
|
|
|
clearable
|
|
|
/>
|
|
|
<el-tooltip placement="top">
|
|
|
<span
|
|
|
class="el-icon-question"
|
|
|
style="color:#9e9e9e"
|
|
|
/>
|
|
|
<div slot="content">
|
|
|
年:yyyy,表示年份,例如:2017<br>
|
|
|
月:M,表示月份,不补0,例如:1<br>
|
|
|
月:MM,表示月份,补0,例如:01<br>
|
|
|
日:d,表示日期,不补0,例如:2<br>
|
|
|
日:dd,表示日期,补0,例如:02<br>
|
|
|
小时:H,表示小时(24小时制),不补0,例如:3<br>
|
|
|
小时:HH,表示小时(24小时制),补0,例如:03<br>
|
|
|
小时:h,表示小时(12小时制),须和 A 或 a 使用,不补0,例如:3<br>
|
|
|
小时:hh,表示小时(12小时制),须和 A 或 a 使用,补0,例如:03<br>
|
|
|
分钟:m,表示分钟,不补0,例如:4<br>
|
|
|
分钟:mm,表示分钟,补0,例如:04<br>
|
|
|
秒:s,表示秒钟,不补0,例如:5<br>
|
|
|
秒:ss,表示秒钟,补0,例如:05<br>
|
|
|
AM/PM:A,仅 format 可用,大写,例如:AM<br>
|
|
|
am/pm:a,仅 format 可用,小写,例如:am<br>
|
|
|
JS时间戳:timestamp,仅 value-format 可用,组件绑定值为number类型,例如:1483326245000<br>
|
|
|
不需要格式化字符:[MM],使用方括号标识不需要格式化的字符,例如:MM<br>
|
|
|
具体的时间格式化字符和使用方式,可以参考Element-UI官网的日期选择器的时间格式化部分。
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
</el-form-item> -->
|
|
|
<el-form-item label="时间类型">
|
|
|
<div class="description">
|
|
|
<el-select
|
|
|
v-model="config.customize.formatType"
|
|
|
class="bs-el-select"
|
|
|
popper-class="bs-el-select"
|
|
|
clearable
|
|
|
@change="changeFormatType"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="(type) in formatTypeOptions"
|
|
|
:key="type.value"
|
|
|
:label="type.label"
|
|
|
:value="type.value"
|
|
|
/>
|
|
|
</el-select>
|
|
|
<el-tooltip placement="top">
|
|
|
<span
|
|
|
class="el-icon-question"
|
|
|
style="color:#9e9e9e"
|
|
|
/>
|
|
|
<div slot="content">
|
|
|
时间戳:从1970年1月1日开始计算的秒数,数据类型为数值型,例如:1483326245000。<br>
|
|
|
自定义:通过输入特定的格式字符串来指定时间的数据格式,例如:yyyy-MM-dd HH:mm:ss对应数据为 2023-10-08 09:30:00。<br>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
|
v-if="config.customize.formatType === 'custom'"
|
|
|
label="时间格式"
|
|
|
>
|
|
|
<!-- year/month/date/week/ datetime/datetimerange/daterange -->
|
|
|
<div class="description">
|
|
|
<el-input
|
|
|
v-model="config.customize.format"
|
|
|
placeholder="例如:yyyy-MM-dd HH:mm:ss"
|
|
|
clearable
|
|
|
/>
|
|
|
<!-- HH表示小时(24小时制),mm表示分钟,ss表示秒 -->
|
|
|
<el-tooltip placement="top">
|
|
|
<span
|
|
|
class="el-icon-question"
|
|
|
style="color:#9e9e9e"
|
|
|
/>
|
|
|
<div slot="content">
|
|
|
<div slot="content">
|
|
|
年:yyyy,表示年份,例如:2017<br>
|
|
|
月:M,表示月份,不补0,例如:1<br>
|
|
|
月:MM,表示月份,补0,例如:01<br>
|
|
|
日:d,表示日期,不补0,例如:2<br>
|
|
|
日:dd,表示日期,补0,例如:02<br>
|
|
|
小时:H,表示小时(24小时制),不补0,例如:3<br>
|
|
|
小时:HH,表示小时(24小时制),补0,例如:03<br>
|
|
|
小时:h,表示小时(12小时制),须和 A 或 a 使用,不补0,例如:3<br>
|
|
|
小时:hh,表示小时(12小时制),须和 A 或 a 使用,补0,例如:03<br>
|
|
|
分钟:m,表示分钟,不补0,例如:4<br>
|
|
|
分钟:mm,表示分钟,补0,例如:04<br>
|
|
|
秒:s,表示秒钟,不补0,例如:5<br>
|
|
|
秒:ss,表示秒钟,补0,例如:05<br>
|
|
|
AM/PM:A,仅 format 可用,大写,例如:AM<br>
|
|
|
am/pm:a,仅 format 可用,小写,例如:am<br>
|
|
|
JS时间戳:timestamp,仅 value-format 可用,组件绑定值为number类型,例如:1483326245000<br>
|
|
|
不需要格式化字符:[MM],使用方括号标识不需要格式化的字符,例如:MM<br>
|
|
|
具体的时间格式化字符和使用方式,可以参考Element-UI官网的日期选择器的时间格式化部分。
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
|
|
|
import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
|
|
|
import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
|
|
|
import RotateSetting from 'data-room-ui/BigScreenDesign/RightSetting/RotateSetting.vue'
|
|
|
import {predefineColors} from "data-room-ui/js/utils/colorList";
|
|
|
export default {
|
|
|
name: 'DateTimePickerSetting',
|
|
|
components: {
|
|
|
ColorPicker,
|
|
|
PosWhSetting,
|
|
|
SettingTitle,
|
|
|
RotateSetting
|
|
|
},
|
|
|
props: {
|
|
|
config: {
|
|
|
type: Object,
|
|
|
required: true
|
|
|
},
|
|
|
predefineThemeColors: {
|
|
|
type: Array,
|
|
|
default: () => predefineColors
|
|
|
}
|
|
|
},
|
|
|
|
|
|
data () {
|
|
|
return {
|
|
|
hour: 'HH',
|
|
|
minute: 'mm',
|
|
|
second: 'ss',
|
|
|
// 时间格式化类型选项
|
|
|
formatTypeOptions: [
|
|
|
{ label: '时间戳', value: 'timestamp' },
|
|
|
{ label: '自定义格式', value: 'custom' }
|
|
|
],
|
|
|
// 时间显示类型选项 :year/month/date/week/ datetime/datetimerange/daterange
|
|
|
displayTypeOptions: [
|
|
|
{ label: '年', value: 'year' },
|
|
|
{ label: '月', value: 'month' },
|
|
|
{ label: '日', value: 'date' },
|
|
|
{ label: '日期时间', value: 'datetime' },
|
|
|
{ label: '日期时间范围', value: 'datetimerange' },
|
|
|
{ label: '日期范围', value: 'daterange' }
|
|
|
]
|
|
|
}
|
|
|
},
|
|
|
watch: {},
|
|
|
mounted () { },
|
|
|
methods: {
|
|
|
changeType (val) {
|
|
|
if (val === 'year') {
|
|
|
if (this.config.customize.formatType === 'custom') {
|
|
|
this.config.customize.format = 'yyyy'
|
|
|
}
|
|
|
} else if (val === 'month') {
|
|
|
if (this.config.customize.formatType === 'custom') {
|
|
|
this.config.customize.format = 'yyyy-MM'
|
|
|
}
|
|
|
} else if (val === 'date') {
|
|
|
if (this.config.customize.formatType === 'custom') {
|
|
|
this.config.customize.format = 'yyyy-MM-dd'
|
|
|
}
|
|
|
} else if (val === 'datetime') {
|
|
|
if (this.config.customize.formatType === 'custom') {
|
|
|
this.config.customize.format = 'yyyy-MM-dd HH:mm:ss'
|
|
|
}
|
|
|
} else if (val === 'datetimerange') {
|
|
|
if (this.config.customize.formatType === 'custom') {
|
|
|
this.config.customize.format = 'yyyy-MM-dd HH:mm:ss'
|
|
|
}
|
|
|
} else if (val === 'daterange') {
|
|
|
if (this.config.customize.formatType === 'custom') {
|
|
|
this.config.customize.format = 'yyyy-MM-dd'
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
changeFormatType (val) {
|
|
|
if (val === 'timestamp') {
|
|
|
this.config.customize.format = 'timestamp'
|
|
|
} else if (val === 'custom') {
|
|
|
this.config.customize.format = 'yyyy-MM-dd HH:mm:ss'
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.lc-field-body {
|
|
|
width: 97%;
|
|
|
padding: 16px;
|
|
|
}
|
|
|
|
|
|
.description {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
|
|
|
.el-tooltip {
|
|
|
margin-left: 5px;
|
|
|
}
|
|
|
}
|
|
|
</style>
|