|
|
|
@ -1,12 +1,14 @@
|
|
|
|
|
<template>
|
|
|
|
|
<el-date-picker
|
|
|
|
|
:key="config.customize.type"
|
|
|
|
|
v-model="config.customize.value"
|
|
|
|
|
:picker-options="config.customize.pickerOptions"
|
|
|
|
|
type="datetimerange"
|
|
|
|
|
:type="config.customize.type"
|
|
|
|
|
clearable
|
|
|
|
|
:class="['basic-component-date-picker', `date-picker-${config.code}`]"
|
|
|
|
|
:popper-class="'basic-component-date-picker date-picker-popper-' + config.code"
|
|
|
|
|
:value-format="config.customize.valueFormat"
|
|
|
|
|
size="large"
|
|
|
|
|
@focus="focusEvent"
|
|
|
|
|
@change="changeValue"
|
|
|
|
|
@mouseenter.native="mouseenter"
|
|
|
|
@ -33,7 +35,6 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
data () {
|
|
|
|
|
return {
|
|
|
|
|
value: '',
|
|
|
|
|
innerConfig: {}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
@ -41,9 +42,6 @@ export default {
|
|
|
|
|
...mapState({
|
|
|
|
|
chartList: state => state.bigScreen.pageInfo.chartList
|
|
|
|
|
}),
|
|
|
|
|
// placeholder () {
|
|
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
isPreview () {
|
|
|
|
|
return (this.$route.path === window?.BS_CONFIG?.routers?.previewUrl) || (this.$route.path === '/big-screen/preview')
|
|
|
|
|
}
|
|
|
|
@ -52,6 +50,7 @@ export default {
|
|
|
|
|
config: {
|
|
|
|
|
handler: function (val) {
|
|
|
|
|
if (val && val.customize && val.customize.formatType === 'custom') {
|
|
|
|
|
// 解决时间格式化类型为自定义时,时间格式化类型和时间格式化值数据类型不匹配的问题
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.value = toString(this.value)
|
|
|
|
|
})
|
|
|
|
@ -62,9 +61,9 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
created () { },
|
|
|
|
|
mounted () {
|
|
|
|
|
// if (!this.isPreview) {
|
|
|
|
|
// document.querySelector(`.date-picker-${this.config.code}`).style.pointerEvents = 'none'
|
|
|
|
|
// }
|
|
|
|
|
if (!this.isPreview) {
|
|
|
|
|
document.querySelector(`.date-picker-${this.config.code}`).style.pointerEvents = 'none'
|
|
|
|
|
}
|
|
|
|
|
this.changeStyle(this.config)
|
|
|
|
|
},
|
|
|
|
|
beforeDestroy () {
|
|
|
|
@ -81,36 +80,47 @@ export default {
|
|
|
|
|
this.changeChartConfig(config)
|
|
|
|
|
this.innerConfig = config
|
|
|
|
|
// 时间选择器元素
|
|
|
|
|
const { bgColor, fontColor, fontSize } = config.customize
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
const timePickerEl = document.querySelector(`.date-picker-${config.code}`)
|
|
|
|
|
timePickerEl.style.backgroundColor = config.customize.backgroundColor
|
|
|
|
|
timePickerEl.style.backgroundColor = bgColor
|
|
|
|
|
// 时间选择器输入框元素
|
|
|
|
|
const timePickerInput = timePickerEl.querySelector('.el-input__inner')
|
|
|
|
|
if (timePickerInput) {
|
|
|
|
|
console.log(timePickerInput)
|
|
|
|
|
// 时间选择器输入框背景颜色
|
|
|
|
|
timePickerInput.style.backgroundColor = config.customize.backgroundColor
|
|
|
|
|
timePickerInput.style.backgroundColor = bgColor
|
|
|
|
|
// 时间选择器输入框字体颜色
|
|
|
|
|
timePickerInput.style.color = config.customize.fontColor
|
|
|
|
|
timePickerInput.style.color = fontColor
|
|
|
|
|
// 时间选择器输入框字体大小
|
|
|
|
|
timePickerInput.style.fontSize = config.customize.fontSize + 'px'
|
|
|
|
|
timePickerInput.style.fontSize = fontSize + 'px'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 时间范围选择器输入框元素
|
|
|
|
|
const timePickerRangeInput = timePickerEl.querySelectorAll('.el-range-input')
|
|
|
|
|
console.log(timePickerRangeInput)
|
|
|
|
|
if (timePickerRangeInput.length > 0) {
|
|
|
|
|
// 连接符
|
|
|
|
|
const timePickerRangeSeparator = timePickerEl.querySelector('.el-range-separator')
|
|
|
|
|
if (timePickerRangeSeparator) {
|
|
|
|
|
// 宽度和字体大小保持一致
|
|
|
|
|
timePickerRangeSeparator.style.width = fontSize + 'px'
|
|
|
|
|
timePickerRangeSeparator.style.color = fontColor
|
|
|
|
|
timePickerRangeSeparator.style.fontSize = fontSize + 'px'
|
|
|
|
|
}
|
|
|
|
|
timePickerRangeInput.forEach((el) => {
|
|
|
|
|
// 时间范围选择器输入框背景颜色
|
|
|
|
|
el.style.backgroundColor = config.customize.backgroundColor
|
|
|
|
|
el.style.backgroundColor = bgColor
|
|
|
|
|
// 时间范围选择器输入框字体颜色
|
|
|
|
|
el.style.color = config.customize.fontColor
|
|
|
|
|
el.style.color = fontColor
|
|
|
|
|
// 时间范围选择器输入框字体大小
|
|
|
|
|
el.style.fontSize = config.customize.fontSize + 'px'
|
|
|
|
|
el.style.fontSize = fontSize + 'px'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
// 时间选择器图标
|
|
|
|
|
const timePickerCloseIcon = timePickerEl.querySelector('.el-input__icon')
|
|
|
|
|
if (timePickerCloseIcon) {
|
|
|
|
|
timePickerCloseIcon.style.fontSize = config.customize.fontSize + 'px'
|
|
|
|
|
const timePickerIcon = timePickerEl.querySelector('.el-input__icon')
|
|
|
|
|
if (timePickerIcon) {
|
|
|
|
|
timePickerIcon.style.width = fontSize + 'px'
|
|
|
|
|
timePickerIcon.style.fontSize = fontSize + 'px'
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 组件联动
|
|
|
|
|
changeValue (val) {
|
|
|
|
@ -119,37 +129,39 @@ export default {
|
|
|
|
|
focusEvent () {
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
const { code } = this.innerConfig
|
|
|
|
|
const { dropDownBackgroundColor, dropDownFontColor, dropDownHoverFontColor, dropDownHoverBackgroundColor, dropDownSelectedFontColor } = this.innerConfig.customize
|
|
|
|
|
const { bgColor, fontColor, hoverFontColor, hoverBgColor, selectedFontColor, rangeBgColor, inputBgColor } = this.innerConfig.customize.dropDownBox
|
|
|
|
|
const timePickerPopper = document.querySelector(`.date-picker-popper-${code}`)
|
|
|
|
|
if (timePickerPopper) {
|
|
|
|
|
// 去除边框
|
|
|
|
|
timePickerPopper.style.border = 'none'
|
|
|
|
|
// 确保下拉项的箭头颜色与下拉框的背景颜色保持一致
|
|
|
|
|
timePickerPopper.style.color = dropDownBackgroundColor
|
|
|
|
|
timePickerPopper.style.color = bgColor
|
|
|
|
|
}
|
|
|
|
|
// 下拉项元素
|
|
|
|
|
const pickerDropdownPanleContent = document.querySelector(`.date-picker-popper-${code}`)
|
|
|
|
|
console.log(pickerDropdownPanleContent)
|
|
|
|
|
if (pickerDropdownPanleContent) {
|
|
|
|
|
// 文字颜色
|
|
|
|
|
pickerDropdownPanleContent.style.color = dropDownFontColor
|
|
|
|
|
pickerDropdownPanleContent.style.color = fontColor
|
|
|
|
|
// 背景颜色
|
|
|
|
|
pickerDropdownPanleContent.style.backgroundColor = dropDownBackgroundColor
|
|
|
|
|
pickerDropdownPanleContent.style.backgroundColor = bgColor
|
|
|
|
|
// 下拉项添加var变量
|
|
|
|
|
pickerDropdownPanleContent.style.setProperty('--dropDownFontColor', dropDownFontColor)
|
|
|
|
|
pickerDropdownPanleContent.style.setProperty('--dropDownHoverFontColor', dropDownHoverFontColor)
|
|
|
|
|
pickerDropdownPanleContent.style.setProperty('--dropDownBackgroundColor', dropDownBackgroundColor)
|
|
|
|
|
pickerDropdownPanleContent.style.setProperty('--dropDownSelectedFontColor', dropDownSelectedFontColor)
|
|
|
|
|
pickerDropdownPanleContent.style.setProperty('--dropDownHoverBackgroundColor', dropDownHoverBackgroundColor)
|
|
|
|
|
const dropdown = pickerDropdownPanleContent.style
|
|
|
|
|
dropdown.setProperty('--fontColor', fontColor)
|
|
|
|
|
dropdown.setProperty('--hoverFontColor', hoverFontColor)
|
|
|
|
|
dropdown.setProperty('--bgColor', bgColor)
|
|
|
|
|
dropdown.setProperty('--inputBgColor', inputBgColor)
|
|
|
|
|
dropdown.setProperty('--selectedFontColor', selectedFontColor)
|
|
|
|
|
dropdown.setProperty('--hoverBgColor', hoverBgColor)
|
|
|
|
|
dropdown.setProperty('--rangeBgColor', rangeBgColor)
|
|
|
|
|
// 选中项字体颜色
|
|
|
|
|
const selectedEl = pickerDropdownPanleContent.querySelector('.selected')
|
|
|
|
|
if (selectedEl) {
|
|
|
|
|
selectedEl.style.color = dropDownSelectedFontColor
|
|
|
|
|
selectedEl.style.color = selectedFontColor
|
|
|
|
|
}
|
|
|
|
|
// 选择过的,需要将选中颜色重置
|
|
|
|
|
const pickerItemEl = document.querySelectorAll(`.date-picker-popper-${code} .el-time-spinner__item`)
|
|
|
|
|
pickerItemEl.forEach((el) => {
|
|
|
|
|
el.style.color = dropDownFontColor
|
|
|
|
|
el.style.color = fontColor
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
@ -173,93 +185,236 @@ export default {
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.basic-component-date-picker {
|
|
|
|
|
color: '';
|
|
|
|
|
|
|
|
|
|
// 清空图标
|
|
|
|
|
.el-icon-circle-close {
|
|
|
|
|
width: 100% !important;
|
|
|
|
|
height: 100% !important;
|
|
|
|
|
display: flex !important;
|
|
|
|
|
align-items: center !important;
|
|
|
|
|
display: flex ;
|
|
|
|
|
align-items: center ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 时间选择器
|
|
|
|
|
.el-icon-time {
|
|
|
|
|
display: flex !important;
|
|
|
|
|
align-items: center !important;
|
|
|
|
|
display: flex ;
|
|
|
|
|
align-items: center ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-time-panel {
|
|
|
|
|
border: none ;
|
|
|
|
|
background-color: var(--bgColor) ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 选择日期 时间区域
|
|
|
|
|
.el-date-picker__time-header {
|
|
|
|
|
border-bottom:var(--dropDownBackgroundColor) !important;
|
|
|
|
|
border-bottom: var(--bgColor) ;
|
|
|
|
|
|
|
|
|
|
.el-input__inner {
|
|
|
|
|
border: none !important;
|
|
|
|
|
border: none ;
|
|
|
|
|
// 添加一点阴影
|
|
|
|
|
box-shadow: 0 0 5px 0 rgba(0,0,0,0.1) !important;
|
|
|
|
|
background-color: red !important;
|
|
|
|
|
}
|
|
|
|
|
.el-time-panel{
|
|
|
|
|
border: none !important ;
|
|
|
|
|
background-color: var(--dropDownBackgroundColor) !important;
|
|
|
|
|
box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1) ;
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
background-color: var(--inputBgColor) ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 头部,修改文字颜色和图标颜色
|
|
|
|
|
.el-date-picker__header {
|
|
|
|
|
color: var(--dropDownFontColor) !important;
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
|
|
|
|
|
.el-date-picker__header-label {
|
|
|
|
|
color: var(--dropDownFontColor) !important;
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 左右箭头图标颜色
|
|
|
|
|
.el-picker-panel__icon-btn {
|
|
|
|
|
color: var(--dropDownFontColor) !important;
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// datetimerange
|
|
|
|
|
.el-date-range-picker__time-header {
|
|
|
|
|
border-color: var(--fontColor);
|
|
|
|
|
|
|
|
|
|
// 中间箭头图标颜色
|
|
|
|
|
.el-icon-arrow-right {
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
// 时间选择器输入框
|
|
|
|
|
.el-input__inner{
|
|
|
|
|
border: none;
|
|
|
|
|
color: var(--fontColor);
|
|
|
|
|
// 添加一点阴影
|
|
|
|
|
background-color: var(--inputBgColor) ;
|
|
|
|
|
box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// datetimerange
|
|
|
|
|
.el-picker-panel__content{
|
|
|
|
|
// 第一行tr 文字颜色
|
|
|
|
|
.el-icon-d-arrow-left{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
&:after{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.el-icon-arrow-left{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
&:after{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.el-icon-d-arrow-right{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
&:after{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.el-icon-arrow-right{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
&:after{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.el-date-range-picker__content.is-left{
|
|
|
|
|
border-color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
.el-date-table{
|
|
|
|
|
th{
|
|
|
|
|
border-color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
td{
|
|
|
|
|
div{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
&:hover{
|
|
|
|
|
color: var(--hoverFontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 范围选择器背景颜色
|
|
|
|
|
.in-range {
|
|
|
|
|
div {
|
|
|
|
|
// 下拉范围选中背景颜色
|
|
|
|
|
background-color: var(--rangeBgColor) !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.today {
|
|
|
|
|
span {
|
|
|
|
|
color: var(--selectedFontColor) !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-time-panel__content::before {
|
|
|
|
|
content: "";
|
|
|
|
|
top: 50%;
|
|
|
|
|
position: absolute;
|
|
|
|
|
margin-top: -15px;
|
|
|
|
|
height: 32px;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
left: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
padding-top: 6px;
|
|
|
|
|
text-align: left;
|
|
|
|
|
border-top: 1px solid var(--fontColor);
|
|
|
|
|
border-bottom: 1px solid var(--fontColor);
|
|
|
|
|
}
|
|
|
|
|
// 脚部
|
|
|
|
|
.el-picker-panel__footer {
|
|
|
|
|
background-color: var(--dropDownBackgroundColor) !important;
|
|
|
|
|
border-color: var(--fontColor);
|
|
|
|
|
background-color: var(--bgColor) ;
|
|
|
|
|
|
|
|
|
|
// 清空按钮
|
|
|
|
|
.el-picker-panel__link-btn {
|
|
|
|
|
span {
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 确定按钮
|
|
|
|
|
.el-button--default {
|
|
|
|
|
border: none ;
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
background-color: var(--bgColor) ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.is-disabled {
|
|
|
|
|
span {
|
|
|
|
|
color: #999 ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-time-spinner {
|
|
|
|
|
margin-bottom: 0px !important;
|
|
|
|
|
margin-bottom: 0px ;
|
|
|
|
|
|
|
|
|
|
.el-time-spinner__item {
|
|
|
|
|
&:hover {
|
|
|
|
|
color: var(--dropDownHoverFontColor) !important;
|
|
|
|
|
background-color: var(--dropDownHoverBackgroundColor) !important;
|
|
|
|
|
color: var(--hoverFontColor) ;
|
|
|
|
|
background-color: var(--hoverBgColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.active {
|
|
|
|
|
color: var(--dropDownSelectedFontColor) !important;
|
|
|
|
|
color: var(--selectedFontColor) ;
|
|
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
|
color: var(--dropDownSelectedFontColor) !important;
|
|
|
|
|
background-color: transparent !important;
|
|
|
|
|
color: var(--selectedFontColor) ;
|
|
|
|
|
background-color: transparent ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.popper__arrow {
|
|
|
|
|
bottom: -6px !important;
|
|
|
|
|
border-bottom-color: var(--dropDownBackgroundColor) !important;
|
|
|
|
|
bottom: -6px ;
|
|
|
|
|
border-bottom-color: var(--bgColor) !important;
|
|
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
|
bottom: 0px !important;
|
|
|
|
|
border-bottom-color: var(--dropDownBackgroundColor) !important;
|
|
|
|
|
bottom: 0px ;
|
|
|
|
|
border-bottom-color: var(--bgColor) !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.cancel {
|
|
|
|
|
color: var(--dropDownFontColor) !important;
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.confirm {
|
|
|
|
|
color: var(--dropDownSelectedFontColor);
|
|
|
|
|
color: var(--selectedFontColor);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-time-panel__footer {
|
|
|
|
|
border-top: 1px solid var(--dropDownFontColor) !important;
|
|
|
|
|
border-top: 1px solid var(--fontColor) ;
|
|
|
|
|
.cancel {
|
|
|
|
|
span {
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 确定按钮
|
|
|
|
|
.confirm {
|
|
|
|
|
border: none ;
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
background-color: var(--bgColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 年选择器
|
|
|
|
|
.el-year-table {
|
|
|
|
|
a{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
&:hover{
|
|
|
|
|
color: var(--hoverFontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 月选择器
|
|
|
|
|
.el-month-table {
|
|
|
|
|
a{
|
|
|
|
|
color: var(--fontColor) ;
|
|
|
|
|
&:hover{
|
|
|
|
|
color: var(--hoverFontColor) ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
@ -268,11 +423,13 @@ export default {
|
|
|
|
|
.basic-component-date-picker {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
|
|
|
|
// 范围时间选择器连接符
|
|
|
|
|
::v-deep .el-range-separator {
|
|
|
|
|
display: flex !important;
|
|
|
|
|
align-items: center !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-input--mini ::v-deep .el-input__inner {
|
|
|
|
|
height: 100% !important;
|
|
|
|
|
line-height: 100% !important;
|
|
|
|
@ -288,4 +445,7 @@ export default {
|
|
|
|
|
height: 100% !important;
|
|
|
|
|
line-height: 100% !important;
|
|
|
|
|
}
|
|
|
|
|
::v-deep .el-range-input{
|
|
|
|
|
width: 45% !important;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|