前端VUE2/VUE3/uniapp/微信小程序进度条时间段选择(开始时间,结束时间)

文章介绍了如何在前端项目中创建一个可定制的时间进度条,用于显示和选择会议室、课程等预约时间段,代码适用于Vue2、Vue3和UNIAPP,并详细解释了HTML、CSS和JavaScript部分的实现原理。
摘要由CSDN通过智能技术生成

在日常项目开发过程中,我们经常会遇到时间进度条已预约时间段的展示包括在进度条上面继续选择我们所需要的时间(例如,会议室,课程等预约时间)

白色:默认时间段颜色未选中的时间段。

灰色:从接口数据获取的已预约的时间段。

深蓝色:选中的两个时间。

浅蓝色:选中的两个时间之间的时间段。

本套代码时间轴样式和时间显示等皆可按照自己个人喜好进行修改,及其适合我们前端CV大师无脑使用,复制代码到本地即可运行查看效果。

代码适用于VUE2、VUE3、UNIAPP等。

HTML部分如下:

<div class="box">
    <div class="boxs" v-for="(item, index) in state.timeList" :key="index">
        <div :class="item.diaable == 1 ? 'boxs1' : item.disable == 1 ? 'boxs2' : 
            item.disables == 1 ? 'boxs3' : 'boxs0'" @click="selectTimeEvent(item,     
            index)">
        </div>
        {{ item.name }}
    </div>
</div>

CSS部分如下:

.box {
    width: 100%;
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .boxs {
    width: 60px;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 20rpx;
  }
  .boxs0{
    width: 60px;
    height: 20px;
    border: 1px solid #ccc;
    box-sizing: border-box;
  }
  .boxs1 {
    width: 60px;
    height: 20px;
    border: 1px solid #ccc;
    box-sizing: border-box;
    background-color: rgba(204, 204, 204, 0.5);
  }
  .boxs2 {
    width: 60px;
    height: 20px;
    border: 1px solid rgb(24, 144, 255);
    box-sizing: border-box;
    background-color: rgb(24, 144, 255);
  }
  .boxs3 {
    width: 60px;
    height: 20px;
    border: 1px solid rgba(24, 144, 255, 0.1);
    box-sizing: border-box;
    background-color: rgba(24, 144, 255, 0.1);
  }

提示:

.boxs0:默认时间段样式。

.boxs1:接口中获取到的已预约的时间段样式。

.boxs2:选中的开始时间和结束时间的时间样式。

.boxs3:选中的开始和结束时间之间的时间段样式。

JS部分如下:

1.data中的数据

    selectTime: [],
    timeActive: [],
    tabs: 0,
    timeLists: [],
    timeList: [
      { name: '8:00:00', index: 0, diaable: 0, disable: 0, disables: 0 },
      { name: '8:30:00', index: 1, diaable: 0, disable: 0, disables: 0 },
      { name: '9:00:00', index: 2, diaable: 0, disable: 0, disables: 0 },
      { name: '9:30:00', index: 3, diaable: 0, disable: 0, disables: 0 },
      { name: '10:00:00', index: 4, diaable: 0, disable: 0, disables: 0 },
      { name: '10:30:00', index: 5, diaable: 0, disable: 0, disables: 0 },
      { name: '11:00:00', index: 6, diaable: 0, disable: 0, disables: 0 },
      { name: '11:30:00', index: 7, diaable: 0, disable: 0, disables: 0 },
      { name: '12:00:00', index: 8, diaable: 0, disable: 0, disables: 0 },
      { name: '12:30:00', index: 9, diaable: 0, disable: 0, disables: 0 },
      { name: '13:00:00', index: 10, diaable: 0, disable: 0, disables: 0 },
      { name: '13:30:00', index: 11, diaable: 0, disable: 0, disables: 0 },
      { name: '14:00:00', index: 12, diaable: 0, disable: 0, disables: 0 },
      { name: '14:30:00', index: 13, diaable: 0, disable: 0, disables: 0 },
      { name: '15:00:00', index: 14, diaable: 0, disable: 0, disables: 0 },
      { name: '15:30:00', index: 15, diaable: 0, disable: 0, disables: 0 },
      { name: '16:00:00', index: 16, diaable: 0, disable: 0, disables: 0 },
      { name: '16:30:00', index: 17, diaable: 0, disable: 0, disables: 0 },
      { name: '17:00:00', index: 18, diaable: 0, disable: 0, disables: 0 },
      { name: '17:30:00', index: 19, diaable: 0, disable: 0, disables: 0 },
      { name: '18:00:00', index: 20, diaable: 0, disable: 0, disables: 0 },
      { name: '18:30:00', index: 21, diaable: 0, disable: 0, disables: 0 },
      { name: '19:00:00', index: 22, diaable: 0, disable: 0, disables: 0 },
      { name: '19:30:00', index: 23, diaable: 0, disable: 0, disables: 0 },
      { name: '20:00:00', index: 24, diaable: 0, disable: 0, disables: 0 },
    ],

提示:

selectTime: [],//选中的两个时间的数组
timeActive: [],//接口中返回的已预约时间段数据数组
tabs: 0,//点击两个时间选中的判断标识
timeLists: [],//选中的两个时间的index值,主要作用于对两个时间之间的时间段进行浅蓝色样式标识
timeList: [ ],//展示的时间数组

timeList下的name字段:展示的时间名

timeList下的index字段:记录点击的两个时间的index值,数组中index值在这两个时间之内的index值及为选中的时间段。

timeList下的diaable字段:默认为0,接口中返回的已预约时间段在timeList数组中进行循环,并将对应的时间的index值进行值赋值为1,进行淡灰色样式处理。 

timeList下的disable字段:默认为0,点击选中的两个时间,赋值为1,进行深蓝色样式处理。

timeList下的disables字段:默认为0,点击选中的两个时间之间的时间段,赋值为1,进行淡蓝色样式处理。

2.点击按钮方法

function selectTimeEvent(item, index) {
    if (item.diaable == 1 || state.timeActive.indexOf(index) > -1) return;
    state.tabs++;
    if (state.tabs % 2 == 0) {
      state.selectTime[1] = state.timeList[index]['name'];
    } else {
      state.selectTime[0] = state.timeList[index]['name'];
    }
    for (let i = 0; i < state.timeList.length; i++) {
      if (state.timeList[i].name == state.selectTime[0] || state.timeList[i].name == state.selectTime[1]) {
        state.timeList[i].disable = 1;
        if (state.timeLists.length == 2) {
          state.timeLists.shift(); 
        }
        state.timeLists.push(state.timeList[i].index);
      } else {
        state.timeList[i].disable = 0;
      }
    }
    for (let i = 0; i < state.timeList.length; i++) {
      if (
        (state.timeList[i].index > state.timeLists[0] && state.timeList[i].index < state.timeLists[1]) ||
        (state.timeList[i].index > state.timeLists[1] && state.timeList[i].index < state.timeLists[0])
      ) {
        state.timeList[i].disables = 1;
      } else {
        state.timeList[i].disables = 0;
      }
    }
  }

提示:

本方法为VU3书写方法,若是VUE2或者UNIAPP,将state更改为this即可。

搭建一个使用vue3+ts+vite+uniapp微信小程序的步骤如下: 1. 首先安装最新版的Node.js和npm。 2. 安装uni-app-cli脚手架工具,命令如下: ``` npm install -g @vue/cli npm install -g @vue/cli-init npm install -g @dcloudio/uni-cli ``` 3. 创建一个uni-app项目,命令如下: ``` vue create -p dcloudio/uni-preset-vue my-project ``` 4. 进入项目目录,安装依赖包,命令如下: ``` cd my-project npm install ``` 5. 安装并配置微信小程序开发者工具,下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 6. 在微信小程序开发者工具中,选择导入uni-app项目,选择项目目录下的dist/dev/mp-weixin文件夹,导入后即可进行开发和调试。 7. 如果需要使用vue3和typescript,在项目中安装相关依赖包,命令如下: ``` npm install --save-dev vue@next @vue/compiler-sfc typescript ts-loader ``` 8. 在项目根目录下创建vue.config.js文件,配置如下: ``` module.exports = { chainWebpack: config => { config.module .rule('ts') .use('ts-loader') .loader('ts-loader') .tap(options => { options.appendTsSuffixTo = [/\.vue$/] return options }) } } ``` 9. 在src目录下创建shims-vue.d.ts文件,内容如下: ``` declare module "*.vue" { import { ComponentOptions } from "vue"; const component: ComponentOptions; export default component; } ``` 10. 现在你就可以使用vue3和typescript进行开发了。同时,如果需要使用vite进行开发,可以参考uni-app官方文档进行配置:https://uniapp.dcloud.io/collocation/vite 以上就是使用vue3+ts+vite+uniapp搭建微信小程序的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值