首页 > 其他分享 >el-select选项自定义日期选择器选项,选中自定义日期,回显具体的日期时间

el-select选项自定义日期选择器选项,选中自定义日期,回显具体的日期时间

时间:2024-07-25 16:40:49浏览次数:9  
标签:选项 自定义 item 日期 indicatorForm children select

需求:指标时点选择具体的时间,即自定义日期选项时,可操作选择具体日期。若选择自定义日期,应回显具体日期,如“2024-07-25”

效果图如下:

   

代码如下:

因为此处v-for生成的面板,每个面板都有一个指标时点选项,所以每个指标时点的select对应的ref需要唯一,此处通过遍历的下标i加以区分。

 1                       <el-form-item label="指标时点" label-width="80px" prop="statsIndicatorDateType">
 2                         <el-select
 3                           :ref="'selectIndicatorDateType' + i"
 4                           filterable
 5                           clearable
 6                           placeholder="请选择指标时点"
 7                           v-model="item.indicatorForm.statsIndicatorDateType"
 8                           size="mini"
 9                           @change="changeStatsIndicatorDateType(item, $event)"
10                           @focus="focusStatsIndicatorDateType(item, i)"
11                           @blur="blurStatsIndicatorDateType(item, i)"
12                           @visible-change="visibleChangeStatsIndicatorDateType($event, item, i)">
13                           <el-option
14                             :class="
15                               k === statsIndicatorDateTypeEnum.length - 1
16                                 ? 'point-events-none'
17                                 : 'point-events-auto'
18                             "
19                             v-for="(sItem, k) in statsIndicatorDateTypeEnum"
20                             :key="k"
21                             :label="sItem.name"
22                             :value="sItem.value">
23                             <template v-if="k === statsIndicatorDateTypeEnum.length - 1">
24                               <span class="margin-right-16" @click.stop="">自定义日期</span>
25                               <el-date-picker
26                                 class="point-events-auto"
27                                 v-model="item.indicatorForm.customStatsIndicatorDate"
28                                 value-format="yyyy-MM-dd HH:mm:ss"
29                                 type="date"
30                                 :clearable="false"
31                                 @click.native.stop=""
32                                 :unlink-panels="true"
33                                 size="mini"
34                                 @change="changeDate($event, item, i)"
35                                 placeholder="选择日期"
36                               ></el-date-picker>
37                             </template>
38                           </el-option>
39                         </el-select>
40                       </el-form-item>
 1     focusStatsIndicatorDateType (item, i) {
 2       this.$nextTick(() => {
 3         if (item.indicatorForm.statsIndicatorDateType === this.customValue) {
 4           this.$refs['selectIndicatorDateType' + i][0].$children[0].$el.children[0].placeholder = item.indicatorForm.customStatsIndicatorDate.split(' ')[0]
 5         }
 6       })
 7     },
 8     blurStatsIndicatorDateType (item, i) {
 9       this.$nextTick(() => {
10         if (item.indicatorForm.statsIndicatorDateType === this.customValue) {
11           this.$refs['selectIndicatorDateType' + i][0].$children[0].$el.children[0].value = item.indicatorForm.customStatsIndicatorDate.split(' ')[0]
12         }
13       })
14     },
15     visibleChangeStatsIndicatorDateType (e, item, i) {
16       if (!e) {
17         this.$nextTick(() => {
18           if (item.indicatorForm.statsIndicatorDateType === this.customValue) {
19             if (this.$refs['selectIndicatorDateType' + i][0].$children[0].$el.children[0].value !== item.indicatorForm.customStatsIndicatorDate.split(' ')[0]) {
20               this.$refs['selectIndicatorDateType' + i][0].$children[0].$el.children[0].value = item.indicatorForm.customStatsIndicatorDate.split(' ')[0]
21             }
22           }
23         })
24       }
25     },
26     changeDate (e, item, i) {
27       item.indicatorForm.statsIndicatorDateType = this.customValue
28       this.$nextTick(() => {
29         this.$refs['selectIndicatorDateType' + i][0].$children[0].$el.children[0].value = e.split(' ')[0]
30       })
31     }

正常情况下,选择完日期后,回显的是‘自定义日期’这几个字,不是选择的具体日期数字,若想显示具体日期数字,需要强制修改回显的数据。因为此处日期设置的是value-format="yyyy-MM-dd HH:mm:ss",带时分秒的,但显示只要年月日,所以需要截取一下。

1、选完日期后,将select绑定的值item.indicatorForm.statsIndicatorDateType改为自定义日期对应的值this.customValue,通过ref找到具体的select,更改select的value值;

2、select失去焦点后,若选中的是自定义日期,也更改select的value值;

3、select获取焦点后,若选中的是自定义日期,更改select的placeholder 值;

4、select隐藏时,若选中的是自定义日期,select的value值不是选择的具体日期数字时,也更改;

 

标签:选项,自定义,item,日期,indicatorForm,children,select
From: https://www.cnblogs.com/guanhx/p/18323354

相关文章

  • PixPro 全开源图床系统源码,非常强大的压缩率 自定义尺寸,支持多种格式
    PixPro全开源图床系统源码,非常强大的压缩率自定义尺寸,支持多种格式PixPro全开源图床系统源码,非常强大的压缩率自定义尺寸,支持多种格式一款专为个人需求设计的高效图床解决方案,集成了强大的图片压缩功能与优雅的前台后台管理界面。项目结构精简高效,提供自定义图片压缩率......
  • Asp.Net Core Serilog日志自定义Sink
    项目的日志框架使用了Serilog,现在有需求要将异常日志记录一份到数据库中。目前网上可以找到适配各个数据库的Sink。https://github.com/serilog/serilog/wiki/Provided-Sinks但是由于项目需要适配多个不同类型的数据库,故打算自定义一个DatabaseSink,使用SqlSugar进行数据库操作。......
  • 用于用 NotRequired 替换自定义 TypeAlias 的 Mypy 插件
    我想编写一个mypy插件,以便为NotRequired[Optional[T]]引入类型别名。(正如我在这个问题中发现的,不可能用普通的python编写这个类型别名,因为NotRequired在TypedDict定义之外不允许使用。)我的想法是定义一个通用Possibly类型,如......
  • 微信小程序-自定义导航栏
    参考文章:自定义navigationBar顶部导航栏,兼容适配所有机型(附完整案例)|微信开放社区(qq.com)1.设置导航栏样式自定义"navigationStyle":"custom"可以选择在页面json文件设置,也可选择在app.json文件设置,我选择页面配置2.定义想要的导航栏样式.navCustom{position:......
  • 日志文件:按开始和结束日期选择日志文件内的特定日志内容
    我正在进行日志分析,我需要通过首先提取文件中的日期来分析日志文件。然后,我需要使用这些日期来定义开始日期和结束日期。根据选定的开始和结束日期,只有该范围内的特定内容才可用,从而有效地按日期过滤日志内容。我已成功使用正则表达式格式成功提取日期,但过滤基于开始和结束日......
  • AWS全服务历史年表:发布日期、GA和服务概述一览 (全)
    我一直在尝试从各种角度撰写关于AmazonWebServices(AWS)的信息和魅力。由于我喜欢技术历史,这次我总结了AWS服务发布的历史年表。虽然AWS官方也通过“What'sNew”发布了官方公告,但我一直希望能有一篇文章将公告日期、GA日期(一般提供开始日期)、服务名称、服务概述等信息压缩成......
  • 待迁移:使用el-radio-group时,内部选项默认选中了
    参考文章链接原来写的是:<el-col:span="24"><el-form-itemlabel="状态"prop="transportType"><el-radio-groupv-model="state.editData.transportType"><el-radio:value="1">预售配送</el......
  • 基于jQuery的用户自定义页面
    1.需求在最简单的场景里面,我们需要在用户自定义页面显示一些数据,和输入一些数据。如下源代码:<!--AWP_In_VariableName='"enable_cycle"'--><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit......
  • 【正在编辑中...】ENVI56扩展工具:添加自定义光谱指数——以NDWI和NDBSI为例
    本工具适用于ENVI5.6及以上版本(本人测试最低版本为5.6.3)。ENVI内置了上百种指数公式,但是大家在使用过程中肯定会有自定义指数的需求。在之前只能通过波段运算工具实现指数计算,现在可以通过本工具方便的添加自定义光谱指数,然后可以通过如下工具或API使用新指数:光谱指数工具:Too......
  • 自定义菜单未显示在 odoo 门户视图上
    我想在odoo门户视图上显示自定义菜单。XML文件:<?xmlversion="1.0"encoding="UTF-8"?><odoo><data><templateid="portal_my_home_loan"name="PartnerLoan"customize_show="True"inh......