61,128
社区成员




<!-- 时间选择控件,图标为日期格式且显示于右侧 -->
<el-date-picker
:class="[
'date-picker-icon',
dateVisableArray[item.colId] ? 'date-close' : ''
]"
v-else-if="searchItem.type == 'timeWithIconDate'"
v-model="form[searchItem.name]"
type="datetime"
:placeholder="searchItem.placeholder || '请选择'"
prefix-icon="el-icon-date"
:disabled="searchItem.disabled"
@mouseenter.native="
handleMouseEnter(form[searchItem.name], searchItem, item.colId)
"
@mouseleave.native="
$set(dateVisableArray, item.colId, false)
"
/>
// 日期选择器-图标右移-方法优化
handleMouseEnter(val, { disabled }, index) {
if (disabled) return;
if (!this.valueIsEmpty(val)) {
this.$set(this.dateVisableArray, index, true);
}
},
valueIsEmpty(val) {
if (Array.isArray(val)) {
for (let i = 0, len = val.length; i < len; i++) {
if (val[i]) {
return false;
}
}
} else {
if (val) {
return false;
}
}
return true;
}
/* 日期选择器-图标右移 */
.date-picker-icon {
width: 100%;
.el-input__inner {
padding-left: 15px;
padding-right: 30px;
}
.el-input__prefix {
left: initial;
right: 5px;
}
&.date-close {
.el-icon-date {
display: none;
}
}
}
<el-input
class="el-date-editor"
:class="'el-date-editor--' + type"
:readonly="!editable || readonly || type === 'dates' || type === 'week'"
:disabled="pickerDisabled"
:size="pickerSize"
:name="name"
v-bind="firstInputId"
v-if="!ranged"
v-clickoutside="handleClose"
:placeholder="placeholder"
@focus="handleFocus"
@keydown.native="handleKeydown"
:value="displayValue"
@input="value => userInput = value"
@change="handleChange"
@mouseenter.native="handleMouseEnter"
@mouseleave.native="showClose = false"
:validateEvent="false"
ref="reference">
<i slot="prefix"
class="el-input__icon"
:class="triggerClass"
@click="handleFocus">
</i>
<i slot="suffix"
class="el-input__icon"
@click="handleClickIcon"
:class="[showClose ? '' + clearIcon : '']"
v-if="haveTrigger">
</i>
</el-input>
来看一下Datepicker的代码,注意看那两个 slot
这玩意复用了el-input,前面的prefix用了图标,后面的suffix图标固定是个关闭的X。
所以你的需求可能只能照着源码抄一个component出来。毕竟造轮子的人不支持