当前位置: 首页 > news >正文

el-date-picker手动输入日期,通过设置开始时间和阶段自动填写结束时间

需求:根据开始时间,通过填写阶段时长,自动填写结束时间,同时开始时间和节数时间可以手动输入

代码如下:

 <el-form ref="ruleForm2" :rules="rules2" :model="formData" inline label-position="right" label-width="120px"> <el-form-item label="开始时间" prop="beginTime"><el-date-pickerv-model="formData.beginTime"v-elDateFormateditablevalue-format="timestamp"type="date"placeholder="请选择日期"clearablestyle="width: 180px"@change="changeEndTime"/></el-form-item><!-- 添加一个阶段时长 --><el-form-item label="阶段时长" prop="stageDuration"><el-input v-model="formData.stageDuration" style="width: 180px"  @blur="stageDurationBlur" /><span class="span_style">(最小单位半月)</span></el-form-item><el-form-item label="结束时间" prop="endTime"><el-date-pickerv-model="formData.endTime"v-elDateFormateditablevalue-format="timestamp"type="date"placeholder="请选择日期"clearablestyle="width: 180px"/></el-form-item>
</el-form>

 

    changeEndTime(time) {
//这里是项目的一个判断 与主体逻辑无关if (this.formData.stageNature == 'point') {// this.formData.endTime = this.timestampToYYYYMMDD(time)this.formData.endTime = time} else {this.calculateEndDate()}},stageDurationBlur(e) {if (this.formData.stageNature !== 'point' && this.formData.beginTime &&             e.target.value) {this.calculateEndDate()}},calculateEndDate() {if (this.formData.beginTime && this.formData.stageDuration) {const beginTime = new Date(this.formData.beginTime)const duration = parseFloat(this.formData.stageDuration)if (!isNaN(duration) && duration > 0) {const daysToAdd = Math.floor(duration * 15) // 将输入的值乘以15天const endTime = new Date(beginTime)endTime.setDate(beginTime.getDate() + daysToAdd)this.formData.endTime = endTime.getTime()} else {this.formData.endTime = ''}}},

 

手动输入日期,默认回显日期功能,我这边后端参数需要的是时间戳,使用时需要看清楚后端需要的数据类型

  watch: {formData: {handler(newValue, oldValue) {if (newValue.beginTime && newValue.beginTime != '') {// 判断有没有横杠  输入的日期 格式是 2024-07-15的,或者是20240715这种 if (typeof newValue.beginTime === 'string' && newValue.beginTime.indexOf('-') == -1) {let str = newValue.beginTimeconst positions = [4, 6]const char = '-'for (let i = positions.length - 1; i >= 0; i--) {const position = positions[i]str = str.substring(0, position) + char + str.substring(position)}this.formData.beginTime = str}} else {this.formData.beginTime = ''}},immediate: true,deep: true}},

效果图:

http://www.lryc.cn/news/400541.html

相关文章:

  • springboot 适配ARM 架构
  • ElementUI el-select 组件动态设置disabled后,高度变更的问题解决办法
  • 写个网络爬虫
  • 模板方法模式的实现
  • Redis的计数功能
  • WPF学习(7) --MVVM模式
  • 【人工智能】-- 受限玻尔兹曼机
  • 在 Android 中定义和使用自定义属性
  • 【实战:python-Django发送邮件-短信-钉钉通知】
  • Todo List
  • 【Redis】Redis十大类型
  • 存储实验:Linux挂载iscsi硬盘与华为OceanStor创建LUN全流程
  • 高可用系统架构设计技术方案:Java架构师视角
  • C++ --> 类和对象(三)
  • JS【详解】类 class ( ES6 新增语法 )
  • vue中使用$set方法给对象添加属性
  • 【Python】ftplib的使用
  • CSS 【详解】CSS 函数(含 calc,min,max,clamp,cubic-bezier,env,steps 等)
  • 简单理解Lua 协程(coroutine)
  • (day18) leetcode 204.计数质数
  • SadTalker数字人服务器部署
  • Python实现一对多WebSocket发送给指定多个客户端
  • Power BI 工具介绍
  • 银河麒麟高级服务器操作系统V10加固操作指南
  • (leetcode学习)15. 三数之和
  • 算法训练 | 图论Part8 | 117. 软件构建、47. 参加科学大会
  • 编程从零基础到进阶(更新中)
  • MySQL运维实战之ProxySQL(9.6)SQL黑名单
  • 深入了解MySQL中的innodb_lock_wait_timeout
  • 102.qt qml-最全Table交互之多列固定、行列拖拽、自定义委托、标题交互使用教程