时间跨度选择器

该组件是个时间跨度选择器。
基于 vue自定义组件之选择器 和 Vue自定义组件之日期时间范围选择器

点击选框,下拉列表中有四个选项,点击自定义时间,后边会出现 日期时间范围选择

代码分析

<template><div class="flex"><my-select v-model="space" :dataList="dataList" themeColor width="124px" @change="spaceHandle"></my-select><my-date-times-picker class="mar-l-10" v-model="customTime" themeColor @change="customTimeHandle" v-if="customData"></my-date-times-picker></div>
</template><script>
export default {name: 'MyTimeSpace',components:{// 组件 my-select 和 my-date-times-picker 以进行 全局注册,这里就不再引入},props: {value: {  // type: [String, Number, Array],require: true,default: ''},customId: {// 自定义时间Idtype: [String, Number],require: false,default: function () {return '4'}},defineDataList: {// 自定义时间跨度列表type: Array,require: false,default: function () {return []}}},data() {return {space: '',customTime: [],dataList: [{name: '1天',id: '1'},{name: '2天',id: '2'},{name: '3天',id: '3'},{name: '自定义时间',id: '4'}]}},computed: {customData() {  // 该字段 决定是否展示 日期时间范围选择器return this.space === this.customId}},methods: {updateVal(val) { // 更新 value 值this.$emit('input', val)this.$nextTick(() => {this.$emit('change', val)// 以下代码可以触发  el-form-item 的change 校验try {this.$parent.validate('change')} catch (error) {}})},spaceHandle() {  // 触发修改 valuelet postData = ''if (this.space === this.customId) {postData = [...this.customTime]} else {postData = this.space}this.updateVal(postData)},customTimeHandle() { // 触发修改 valuethis.updateVal(this.customTime)}},created() {const String = Object.prototype.toStringif (String.call(this.value) === '[object Array]') { // 传入 数组时,默认展示 自定义时间this.space = this.customIdthis.customTime = [...this.value]} else {this.space = this.value}if (this.defineDataList.length) { // 当传入 defineDataList 字段,替换 dataList this.dataList = [...this.defineDataList]}}
}
</script><style scoped>
</style>

组件使用(基础组件可进行全局注册,直接使用)

<ym-time-space v-model="time_period" :customId="customId":defineDataList="defineDataList"@change="timeSpaceHandle"
></ym-time-space>
<script>
export default {data(){return {time_period: '1',customId: '17',defineDataList:[{name: '16天',id: '16'},{name: '自定义时间选择',id: '17'}]}},methods: {timeSpaceHandle(time_period) {console.log(time_period)}}
}
</script>

属性

参数 说明 类型 require 默认值
v-model 绑定值 Array、String、Number true
customId 自定义时间Id String、Number false 4
defineDataList 自定义时间跨度列表 Array false []

方法

事件名称 说明 回调参数
change 点击确定时触发 ([value1,value2,…])

组件实试用注意事项

  1. v-mode 绑定时,初始值给定 16 时,组件默认选中【16天】,初始值给定 [“2022-02-15 00:00”, “2022-02-15 23:59”]时,默认选中 【自定义时间选择】
  2. 当不需要自定义 时间跨度列表时,defineDataList 不需要传入
  3. 当不需要自定义时间Id时,customId不需要传入

Vue自定义组件之时间跨度选择器相关推荐

  1. vue自定义组件,插槽,自定义事件

    vue组件套娃 1. vue自定义组件 2. 组件和插槽套娃 3. vue组件通过自定义事件更改vue实例中的数据 1. vue自定义组件 语法 Vue.component('自定义组件名', {pr ...

  2. vue 嵌套表格组件_使用form-create动态生成vue自定义组件和嵌套表单组件

    使用form-create动态生成vue自定义组件和嵌套表单组件 maker.create 通过建立一个虚拟 DOM的方式生成自定义组件 生成 Maker let rule = [ formCreat ...

  3. vue自定义组件是.vue还是html,Vue自定义组件的四种方式示例详解

    四种组件定义方式都存在以下共性(血泪史) 规则: 1.组件只能有一个根标签 2.记住两个词全局和局部 3.组件名称命名中'-小写字母'相当于大写英文字母(hello-com 相当于 helloCom) ...

  4. Vue自定义组件封装及使用Excel

    Vue自定义组件封装及使用Excel 一.js-xlsx 组件安装 二. 创建vue组件 三.使用 四.效果图 一.js-xlsx 组件安装 npm install xlsx --savenpm in ...

  5. Vue自定义组件npm上传私服,且从私服下载使用

    Vue自定义组件npm上传私服,yarn私服下载使用 安装镜像源管理工具nrm 发布自定义组件到公司私服 若未下载nrm源管理工具直接使用npm设置私服地址也可以 以下步骤都是基于npm命令 从私服下 ...

  6. Vue自定义组件及组件传值

    vue自定义组件: 1.在src中components中,新建文件,后缀名为.vue组件(首字母建议大写)例如:Weekly.vue 2.Weekly.vue: 3.在app.vue中引用组件: js ...

  7. vue 自定义组件双向数据绑定

    文章目录 序 属性&事件传值双向绑定 v-model组件双向绑定 .sync修饰符双向绑定 总结 !!!这边文章记录的是 vue2 的概念,vue3 对双向绑定进行了改动,不要把一下代码放到 ...

  8. vue自定义组件-文件上传后端接口

    学习目标: vue自定义组件-文件上传后端接口 学习内容: 准备工作: 后端环境:JAVA-Springboot项目数据库表(这里使用psql数据库):sys_file_record保存上传文件的信息 ...

  9. Vue自定义组件 Vue.component

    Vue.component Vue自定义组件(1) 如果有朋友对Vue基础还不够了解的可以先看下官方的教程 http://doc.vue-js.com/v2/guide/  这个是官方的网址,官方的教 ...

最新文章

  1. JavaScript点击事件-一个按钮触发另一个按钮
  2. gcc 4.4.2 安装
  3. 计算机硬件:关于CPU的12个硬核干货!
  4. SQL Server 中使用 Try Catch 处理异常
  5. ❤️什么是Java 面向对象《装、继承、多态、抽象》?建议收藏)❤️
  6. 重新编译Telepresence,谈如何写编译脚本
  7. MATLAB实现高斯-克吕格投影反算
  8. android短信验证码免费版,短信验证码功能-免费哦!亲测可用
  9. 惠普笔记本触摸板失灵
  10. 用户画像、用户分群、用户分层,到底有啥区别?
  11. 如何应对美国对开源项目的出口管制?这是Linux基金会的建议
  12. 令人比较失落的IT圈子-关于华为裁员
  13. vb msgbox各种图标样式及按钮样式
  14. 云服务器总是自动关机,云服务器出现死机的情况是什么原因?
  15. mysql 1032 update_解决mysql 1032 主从错误
  16. sublime手动安装GoSublime
  17. Appium: Could not proxy command to the remote server. Original error: socket hang up
  18. 小强升职记梗概_《小强升职记》读书笔记一
  19. Adobe Acrobat Reader DC For Android 下载
  20. MyBatis和Mybatis-Plus概念总结

热门文章

  1. csgo跑图文件_一键跑图!极为方便的CSGO跑图工具(附2020年5月28日更新)
  2. 四川铺管家教育:拼多多0.99有什么注意的
  3. 微信域名防封浅谈之一
  4. 二叉树的遍历和总结--C和C++
  5. 规则引擎 Drools:规则引擎概述
  6. 八年级上学期计算机教学计划,第一学期七八年级信息技术教学计划
  7. 不让玩游戏的小娃娃随机考试系统
  8. 浅谈虚树(虚仙人掌)
  9. 1 入门:投身新领域
  10. html显示一条直线,如何在HTML中画一条线