[
  {
    "path": "README.md",
    "content": "# wxapp-timePicker\n微信小程序自定义时间选择器，支持多种自定义功能。  \n\n[在开发工具中浏览:](https://developers.weixin.qq.com/s/N9EdArmQ7a6j)  [https://developers.weixin.qq.com/s/N9EdArmQ7a6j](https://developers.weixin.qq.com/s/N9EdArmQ7a6j)   \n复制链接在浏览器中打开  \n  \n配置项\n```js\npickerConfig: {\n  endDate: true,                          // 是否需要结束时间，为true时显示开始时间和结束时间两个picker\n  column: \"second\",                       //可选的最小时间范围day、hour、minute、secend\n  dateLimit: true,                        //是否现在时间可选范围，false时可选任意时间；当为数字n时，范围是当前时间的最近n天\n  initStartTime:'2019-01-01 12:32:44',    //picker初始时间，默认当前时间\n  initEndTime: \"2019-12-01 12:32:44\",     //picker初始结束时间，默认当前时间\n  limitStartTime: \"2015-05-06 12:32:44\",  //最小可选时间\n  limitEndTime: \"2055-05-06 12:32:44\",     //最大可选时间 \n  yearStart: 1920, // 时间控件可选择的最小时间  //说明文档并不是很完整，有些配置项需要到源码里去找\n  yearEnd: 2020, // 时间控件可选择的最大时间 //说明文档并不是很完整，有些配置项需要到源码里去找\n\n}\n```\n\n其他限制条件可修改组件中的compareTime函数定义\n\nendDate: true  \n![gif](https://raw.githubusercontent.com/rover95/wxapp-timePicker/master/images/endDate.gif)\n   \nendDate: false  \n![gif](https://raw.githubusercontent.com/rover95/wxapp-timePicker/master/images/noEndDate.gif)\n\n## 更多\n\n[动态表单组件](https://github.com/rover95/wxapp-form)\n![image](https://user-images.githubusercontent.com/28331870/77737126-4f61ff00-7048-11ea-83df-e10c100e415b.png)  \n\n[小程序热力图组件](https://github.com/rover95/wxapp-heatmap)  \n![img](https://raw.githubusercontent.com/rover95/image/master/img/heatmap3.png)\n\n[自定义轮播图组件](https://github.com/rover95/wxapp-swiper)  \n![gif](https://raw.githubusercontent.com/rover95/image/master/gif/swiper2.gif)\n"
  },
  {
    "path": "app.js",
    "content": "App({\n  onLaunch: function () {\n\n  }\n})\n"
  },
  {
    "path": "app.json",
    "content": "{\n  \"pages\": [\n    \"index/index\"\n  ],\n  \"window\": {\n    \"backgroundTextStyle\": \"light\",\n    \"navigationBarBackgroundColor\": \"#fff\",\n    \"navigationBarTitleText\": \"WeChat\",\n    \"navigationBarTextStyle\": \"black\"\n  },\n  \"sitemapLocation\": \"sitemap.json\"\n}"
  },
  {
    "path": "app.wxss",
    "content": ""
  },
  {
    "path": "components/timePicker/timePicker.js",
    "content": "\nComponent({\n  /**\n   * 组件的属性列表\n   */\n  properties: {\n    pickerShow: {\n      type: Boolean,\n      observer:function(val){   //弹出动画\n        // console.log(this.data);\n        if(val){\n          let animation = wx.createAnimation({\n            duration: 500,\n            timingFunction: \"ease\"\n          });\n          let animationOpacity = wx.createAnimation({\n            duration: 500,\n            timingFunction: \"ease\"\n          });\n          setTimeout(() => {\n            animation.bottom(0).step();\n            animationOpacity.opacity(0.7).step();\n            this.setData({\n              animationOpacity: animationOpacity.export(),\n              animationData: animation.export()\n            })\n          }, 0);\n        }else{\n          let animation = wx.createAnimation({\n            duration: 100,\n            timingFunction: \"ease\"\n          });\n          let animationOpacity = wx.createAnimation({\n            duration: 500,\n            timingFunction: \"ease\"\n          });\n          animation.bottom(-320).step();\n          animationOpacity.opacity(0).step();\n          this.setData({\n            animationOpacity: animationOpacity.export(),\n            animationData: animation.export()\n          });\n        }\n\n        // 在picker滚动未停止前点确定，会使startValue数组各项归零，发生错误，这里判断并重新初始化\n        // 微信新增了picker滚动的回调函数，已进行兼容\n        if(this.data.startValue&&this.data.endValue){\n          let s = 0, e = 0;\n          let conf = this.data.config;\n          \n          this.data.startValue.map(val => {\n            if (val == 0) {\n              s++\n            }\n          })\n          this.data.endValue.map(val => {\n            if (val == 0) {\n              e++;\n            }\n          });\n          let tmp={\n            hour:4,\n            minute:5,\n            second:6\n          }\n          let n = tmp[conf.column];\n          if (s>=n || e>=n) {\n            this.initPick(this.data.config);\n            this.setData({\n              startValue: this.data.startValue,\n              endValue: this.data.endValue,\n            });\n          }\n        }\n        \n\n      }\n    },\n    config: Object\n  },\n\n  /**\n   * 组件的初始数据\n   */\n  data: {\n    // pickerShow:true\n    // limitStartTime: new Date().getTime()-1000*60*60*24*30,\n    // limitEndTime: new Date().getTime(),\n    // yearStart:2000,\n    // yearEnd:2100\n  },\n  detached: function() {\n    console.log(\"dele\");\n  },\n  attached: function() {},\n  ready: function() {\n    this.readConfig();\n    this.initPick(this.data.config || null);\n    this.setData({\n      startValue: this.data.startValue,\n      endValue: this.data.endValue,\n    });\n\n\n    \n    \n  },\n  /**\n   * 组件的方法列表\n   */\n  methods: {\n    //阻止滑动事件\n    onCatchTouchMove(e) {\n\n    },\n    //读取配置项\n    readConfig() {\n      let limitEndTime = new Date().getTime();\n      let limitStartTime = new Date().getTime() - 1000 * 60 * 60 * 24 * 30;\n      if (this.data.config) {\n        let conf = this.data.config;\n        \n        if (typeof conf.dateLimit == \"number\") {\n          limitStartTime =\n            new Date().getTime() - 1000 * 60 * 60 * 24 * conf.dateLimit;\n        }\n        if(conf.limitStartTime){\n          \n          limitStartTime = new Date(conf.limitStartTime.replace(/-/g,'/')).getTime();\n        }\n        \n        if (conf.limitEndTime) {\n          limitEndTime = new Date(conf.limitEndTime.replace(/-/g, '/')).getTime();\n        }\n        \n        this.setData({\n          yearStart: conf.yearStart || 2000,\n          yearEnd: conf.yearEnd || 2100,\n          endDate: conf.endDate || false,\n          dateLimit: conf.dateLimit || false,\n          hourColumn:\n            conf.column == \"hour\" ||\n            conf.column == \"minute\" ||\n            conf.column == \"second\",\n          minColumn: conf.column == \"minute\" || conf.column == \"second\",\n          secColumn: conf.column == \"second\"\n        });\n      }\n\n      let limitStartTimeArr = formatTime(limitStartTime);\n      let limitEndTimeArr = formatTime(limitEndTime);\n      \n      this.setData({\n        limitStartTime,\n        limitStartTimeArr,\n        limitEndTime,\n        limitEndTimeArr\n      });\n    },\n    //滚动开始\n    handlePickStart:function(e){\n      this.setData({\n        isPicking:true\n      })\n    },\n    //滚动结束\n    handlePickEnd:function(e){\n      this.setData({\n        isPicking:false\n      })\n    },\n    onConfirm: function() {\n      //滚动未结束时不能确认\n      if(this.data.isPicking){return}\n      let startTime = new Date(this.data.startPickTime.replace(/-/g, \"/\"));\n      let endTime = new Date(this.data.endPickTime.replace(/-/g, \"/\"));\n      if (startTime <= endTime || !this.data.endDate) {\n        this.setData({\n          startTime,\n          endTime\n        });\n        let startArr = formatTime(startTime).arr;\n        let endArr = formatTime(endTime).arr;\n        let format0 = function(num){\n          return num<10?'0'+num:num\n        }\n        \n        let startTimeBack =\n          startArr[0] +\n          \"-\" +\n          format0(startArr[1]) +\n          \"-\" +\n          format0(startArr[2]) +\n          \" \" +\n          (this.data.hourColumn ? format0(startArr[3]) : \"00\") +\n          \":\" +\n          (this.data.minColumn ? format0(startArr[4]) : \"00\") +\n          \":\" +\n          (this.data.secColumn ? format0(startArr[5]) : \"00\");\n\n        let endTimeBack =\n          endArr[0] +\n          \"-\" +\n          format0(endArr[1]) +\n          \"-\" +\n          format0(endArr[2]) +\n          \" \" +\n          (this.data.hourColumn ? format0(endArr[3]) : \"00\") +\n          \":\" +\n          (this.data.minColumn ? format0(endArr[4]) : \"00\") +\n          \":\" +\n          (this.data.secColumn ? format0(endArr[5]) : \"00\");\n\n        let time = {\n          startTime: startTimeBack,\n          endTime: endTimeBack\n        };\n\n        //触发自定义事件\n        this.triggerEvent(\"setPickerTime\", time);\n        this.triggerEvent(\"hidePicker\", {});\n      } else {\n        wx.showToast({\n          icon: \"none\",\n          title: \"时间不合理\"\n        });\n      }\n    },\n    hideModal: function() {\n      \n      this.triggerEvent(\"hidePicker\", {});\n    },\n    changeStartDateTime: function(e) {\n      let val = e.detail.value;\n      \n      this.compareTime(val, \"start\");\n    },\n\n    changeEndDateTime: function(e) {\n      let val = e.detail.value;\n      this.compareTime(val, \"end\");\n    },\n    //比较时间是否在范围内\n    compareTime(val_, type) {\n      const val = val_.map(it=>it.toString());\n      let h = val[3] ? this.data.HourList[val[3]] : \"00\";\n      let m = val[4] ? this.data.MinuteList[val[4]] : \"00\";\n      let s = val[5] ? this.data.SecondList[val[5]] : \"00\";\n      let time =\n        this.data.YearList[val[0]] +\n        \"-\" +\n        this.data.MonthList[val[1]] +\n        \"-\" +\n        this.data.DayList[val[2]] +\n        \" \" +\n        h +\n        \":\" +\n        m +\n        \":\" +\n        s;\n\n      let start = this.data.limitStartTime;\n      let end = this.data.limitEndTime;\n      let timeNum = new Date(time.replace(/-/g, '/')).getTime();\n      let year, month, day, hour, min, sec, limitDate;\n      let tempArr = []\n\n      if (!this.data.dateLimit){\n        limitDate = [\n          this.data.YearList[val[0]],\n          this.data.MonthList[val[1]],\n          this.data.DayList[val[2]],\n          this.data.HourList[val[3]],\n          this.data.MinuteList[val[4]],\n          this.data.SecondList[val[5]]]\n      } else if (type == \"start\" && timeNum > new Date(this.data.endPickTime.replace(/-/g, '/')) && this.data.config.endDate) {\n        limitDate = formatTime(this.data.endPickTime).arr;\n        \n      } else if (type == \"end\" && timeNum < new Date(this.data.startPickTime.replace(/-/g, '/'))) {\n        limitDate = formatTime(this.data.startPickTime).arr;\n        \n      } else if (timeNum < start) {\n        limitDate = this.data.limitStartTimeArr.arr;\n\n      } else if (timeNum > end) {\n        limitDate = this.data.limitEndTimeArr.arr;\n        \n      } else {\n        limitDate = [\n          this.data.YearList[val[0]],\n        this.data.MonthList[val[1]],\n        this.data.DayList[val[2]],\n        this.data.HourList[val[3]],\n        this.data.MinuteList[val[4]],\n       this.data.SecondList[val[5]]\n        ]\n        \n      }\n\n      year = limitDate[0];\n      month = limitDate[1];\n      day = limitDate[2];\n      hour = limitDate[3];\n      min = limitDate[4];\n      sec = limitDate[5];\n\n      if (type == \"start\") {\n        this.setStartDate(year, month, day, hour, min, sec);\n      } else if (type == \"end\") {\n        this.setEndDate(year, month, day, hour, min, sec);\n      }\n    },\n    getDays: function(year, month) {\n      let daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n      if (month === 2) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0\n          ? 29\n          : 28;\n      } else {\n        return daysInMonth[month - 1];\n      }\n    },\n    initPick: function(initData) {\n      const date = initData.initStartTime ? new Date(initData.initStartTime.replace(/-/g, '/')): new Date();\n      const endDate = initData.initEndTime ? new Date(initData.initEndTime.replace(/-/g, '/')) : new Date();\n      // const startDate = new Date(date.getTime() - 1000 * 60 * 60 * 24);\n      const startDate = date;\n      const startYear = date.getFullYear();\n      const startMonth = date.getMonth() + 1;\n      const startDay = date.getDate();\n      const startHour = date.getHours();\n      const startMinute = date.getMinutes();\n      const startSecond = date.getSeconds();\n\n      const endYear = endDate.getFullYear();\n      const endMonth = endDate.getMonth() + 1;\n      const endDay = endDate.getDate();\n      const endHour = endDate.getHours();\n      const endMinute = endDate.getMinutes();\n      const endSecond = endDate.getSeconds();\n\n      let YearList = [];\n      let MonthList = [];\n      let DayList = [];\n      let HourList = [];\n      let MinuteList = [];\n      let SecondList = [];\n\n      //设置年份列表\n      for (let i = this.data.yearStart; i <= this.data.yearEnd; i++) {\n        YearList.push(i);\n      }\n\n      // 设置月份列表\n      for (let i = 1; i <= 12; i++) {\n        MonthList.push(i);\n      }\n      // 设置日期列表\n      for (let i = 1; i <= 31; i++) {\n        DayList.push(i);\n      }\n      // 设置时列表\n      for (let i = 0; i <= 23; i++) {\n        if (0 <= i && i < 10) {\n          i = \"0\" + i;\n        }\n        HourList.push(i);\n      }\n      // 分|秒\n      for (let i = 0; i <= 59; i++) {\n        if (0 <= i && i < 10) {\n          i = \"0\" + i;\n        }\n        MinuteList.push(i);\n        SecondList.push(i);\n      }\n\n      this.setData({\n        YearList,\n        MonthList,\n        DayList,\n        HourList,\n        MinuteList,\n        SecondList\n      });\n\n      this.setStartDate(startYear, startMonth, startDay, startHour, startMinute, startSecond);\n      this.setEndDate(endYear, endMonth, endDay, endHour, endMinute, endSecond);\n\n      //!!!\n      // setTimeout(() => {\n      //   this.setStartDate(nowYear, nowMonth, nowDay, nowHour, nowMinute)\n      //   this.setEndDate(nowYear, nowMonth, nowDay, nowHour, nowMinute)\n      // }, 0);\n    },\n    setPickerDateArr(type, year, month, day, hour, minute, second) {\n      let yearIdx = 0;\n      let monthIdx = 0;\n      let dayIdx = 0;\n      let hourIdx = 0;\n      let minuteIdx = 0;\n      let secondIdx = 0;\n\n      this.data.YearList.map((v, idx) => {\n        if (parseInt(v) === year) {\n          yearIdx = idx;\n        }\n      });\n\n      this.data.MonthList.map((v, idx) => {\n        if (parseInt(v) === month) {\n          monthIdx = idx;\n        }\n      });\n\n      // 重新设置日期列表\n      let DayList = [];\n      for (let i = 1; i <= this.getDays(year, month); i++) {\n        DayList.push(i);\n      }\n\n      DayList.map((v, idx) => {\n        if (parseInt(v) === day) {\n          dayIdx = idx;\n        }\n      });\n      if (type == \"start\") {\n        this.setData({ startDayList: DayList });\n      } else if (type == \"end\") {\n        this.setData({ endDayList: DayList });\n      }\n\n      this.data.HourList.map((v, idx) => {\n        if (parseInt(v) === parseInt(hour)) {\n          hourIdx = idx;\n        }\n      });\n\n      this.data.MinuteList.map((v, idx) => {\n        if (parseInt(v) === parseInt(minute)) {\n          minuteIdx = idx;\n        }\n      });\n      this.data.SecondList.map((v, idx) => {\n        if (parseInt(v) === parseInt(second)) {\n          secondIdx = idx;\n        }\n      });\n\n      return {\n        yearIdx,\n        monthIdx,\n        dayIdx,\n        hourIdx,\n        minuteIdx,\n        secondIdx\n      };\n    },\n    setStartDate: function(year, month, day, hour, minute, second) {\n      let pickerDateArr = this.setPickerDateArr(\n        \"start\",\n        year,\n        month,\n        day,\n        hour,\n        minute,\n        second\n      );\n      this.setData({\n        startYearList: this.data.YearList,\n        startMonthList: this.data.MonthList,\n        // startDayList: this.data.DayList,\n        startHourList: this.data.HourList,\n        startMinuteList: this.data.MinuteList,\n        startSecondList: this.data.SecondList,\n        startValue: [\n          pickerDateArr.yearIdx,\n          pickerDateArr.monthIdx,\n          pickerDateArr.dayIdx,\n          pickerDateArr.hourIdx,\n          pickerDateArr.minuteIdx,\n          pickerDateArr.secondIdx\n        ],\n        startPickTime:\n          this.data.YearList[pickerDateArr.yearIdx] +\n          \"-\" +\n          this.data.MonthList[pickerDateArr.monthIdx] +\n          \"-\" +\n          this.data.DayList[pickerDateArr.dayIdx] +\n          \" \" +\n          this.data.HourList[pickerDateArr.hourIdx] +\n          \":\" +\n          this.data.MinuteList[pickerDateArr.minuteIdx] +\n          \":\" +\n          this.data.SecondList[pickerDateArr.secondIdx]\n      });\n    },\n    setEndDate: function(year, month, day, hour, minute, second) {\n      let pickerDateArr = this.setPickerDateArr(\n        \"end\",\n        year,\n        month,\n        day,\n        hour,\n        minute,\n        second\n      );\n\n      this.setData({\n        endYearList: this.data.YearList,\n        endMonthList: this.data.MonthList,\n        // endDayList: this.data.DayList,\n        endHourList: this.data.HourList,\n        endMinuteList: this.data.MinuteList,\n        endSecondList: this.data.SecondList,\n        endValue: [\n          pickerDateArr.yearIdx,\n          pickerDateArr.monthIdx,\n          pickerDateArr.dayIdx,\n          pickerDateArr.hourIdx,\n          pickerDateArr.minuteIdx,\n          pickerDateArr.secondIdx\n        ],\n        endPickTime:\n          this.data.YearList[pickerDateArr.yearIdx] +\n          \"-\" +\n          this.data.MonthList[pickerDateArr.monthIdx] +\n          \"-\" +\n          this.data.DayList[pickerDateArr.dayIdx] +\n          \" \" +\n          this.data.HourList[pickerDateArr.hourIdx] +\n          \":\" +\n          this.data.MinuteList[pickerDateArr.minuteIdx] +\n          \":\" +\n          this.data.SecondList[pickerDateArr.secondIdx]\n      });\n    },\n  }\n});\n\n\nfunction formatTime(date) {\n  \n  if (typeof date === 'string' || typeof date === 'number') {\n    try {\n      date = date.replace(/-/g, '/')//兼容ios\n    } catch (error) {\n    }\n    date = new Date(date)\n  }\n\n  const year = date.getFullYear()\n  const month = date.getMonth() + 1\n  const day = date.getDate()\n  const hour = date.getHours()\n  const minute = date.getMinutes()\n  const second = date.getSeconds()\n  \n  return {\n    str: [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':'),\n    arr: [year, month, day, hour, minute, second]\n  }\n}\nfunction formatNumber(n) {\n  n = n.toString()\n  return n[1] ? n : '0' + n\n}\n"
  },
  {
    "path": "components/timePicker/timePicker.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {}\n}"
  },
  {
    "path": "components/timePicker/timePicker.wxml",
    "content": "<!--components/timePicker/timePicker.wxml-->\n<!-- 自定义时间筛选器 -->\n<view hidden=\"{{!pickerShow}}\">\n  <view class=\"picker-container {{pickerShow?'show_picker':'hide_picker'}}\" animation=\"{{animationData}}\">\n\n    <view class=\"btn-box\" catchtouchmove=\"onCatchTouchMove\">\n      <view class=\"pick_btn\" bindtap=\"hideModal\">取消</view>\n      <view class='pick_btn' style=\"color: #19f\" bindtap=\"onConfirm\">确定</view>\n    </view>\n\n    <view>\n      <picker-view class='sensorTypePicker' indicator-style='height: 35px;' bindchange=\"changeStartDateTime\"\n        value=\"{{startValue}}\" style=\"height: {{endDate?'120px':'250px'}};\" bindpickstart=\"handlePickStart\" bindpickend=\"handlePickEnd\">\n        <picker-view-column style=\"min-width: 70px;flex-shrink: 0\">\n          <view class='picker-item' wx:for=\"{{startYearList}}\" wx:key='*this'>{{item}}年</view>\n        </picker-view-column>\n        <picker-view-column>\n          <view class='picker-item' wx:for=\"{{startMonthList}}\" wx:key='*this'>{{item}}月</view>\n        </picker-view-column>\n        <picker-view-column>\n          <view class='picker-item' wx:for=\"{{startDayList}}\" wx:key='*this'>{{item}}日</view>\n        </picker-view-column>\n        <picker-view-column hidden=\"{{!hourColumn}}\">\n          <view class='picker-item' wx:for=\"{{startHourList}}\" wx:key='*this'>{{item}}时</view>\n        </picker-view-column>\n        <picker-view-column hidden=\"{{!minColumn}}\">\n          <view class='picker-item' wx:for=\"{{startMinuteList}}\" wx:key='*this'>{{item}}分</view>\n        </picker-view-column>\n        <picker-view-column hidden=\"{{!secColumn}}\">\n          <view class='picker-item' wx:for=\"{{startSecondList}}\" wx:key='*this'>{{item}}秒</view>\n        </picker-view-column>\n      </picker-view>\n    </view>\n\n    <view wx:if=\"{{endDate}}\">\n      <view class='to' style='margin-top: 4px;margin-bottom: 4px;'>至</view>\n        <picker-view class='sensorTypePicker' indicator-style='height: 35px;' bindchange=\"changeEndDateTime\" bindpickstart=\"handlePickStart\" bindpickend=\"handlePickEnd\" \n          value=\"{{endValue}}\">\n          <picker-view-column style=\"min-width: 70px;flex-shrink: 0\">\n            <view class='picker-item' wx:for=\"{{endYearList}}\" wx:key='*this' style=\"min-width: 70px;\">{{item}}年</view>\n          </picker-view-column>\n          <picker-view-column>\n            <view class='picker-item' wx:for=\"{{endMonthList}}\" wx:key='*this'>{{item}}月</view>\n          </picker-view-column>\n          <picker-view-column>\n            <view class='picker-item' wx:for=\"{{endDayList}}\" wx:key='*this'>{{item}}日</view>\n          </picker-view-column>\n          <picker-view-column hidden=\"{{!hourColumn}}\" >\n            <view class='picker-item' wx:for=\"{{endHourList}}\" wx:key='*this'>{{item}}时</view>\n          </picker-view-column>\n          <picker-view-column hidden=\"{{!minColumn}}\">\n            <view class='picker-item' wx:for=\"{{endMinuteList}}\" wx:key='*this'>{{item}}分</view>\n          </picker-view-column>\n          <picker-view-column hidden=\"{{!secColumn}}\">\n            <view class='picker-item' wx:for=\"{{startSecondList}}\" wx:key='*this'>{{item}}秒</view>\n          </picker-view-column>\n      \n      \n        </picker-view>\n    </view>\n    \n\n    <!-- <view class='sure' bindtap=\"onConfirm\">确定</view> -->\n\n  </view>\n  <!-- 遮罩 -->\n  <view class=\"sensorType-screen\" bindtap=\"hideModal\" catchtouchmove=\"onCatchTouchMove\" animation=\"{{animationOpacity}}\"/>\n</view>\n"
  },
  {
    "path": "components/timePicker/timePicker.wxss",
    "content": "/* components/timePicker/timePicker.wxss */\n\n.picker-item{\n  line-height: 100rpx;  \n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n/* 自定义时间 */\n.picker-container {\n  display: flex;\n  flex-direction: column;\n  /* justify-content: center; */\n  align-items: center;\n\n  width: 100%;\n  overflow: hidden;\n  position: fixed;\n  bottom: -640rpx;\n  left: 0;\n  /* height: 0; */\n  transition: height 0.5s;\n  z-index: 2000;\n  background: white;\n  border-top: 1px solid #EFEFF4;\n}\n.sensorType-screen{\n  width: 100vw;\n  /* height:400rpx; */\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  background: #000;\n  opacity: 0;\n  overflow: hidden;\n  z-index: 1999;\n  color: #fff;\n}\n.sensorTypePicker{\n  width: 690rpx;\n  height: 240rpx;\n  /* padding: 45px 0; */\n}\n.picker-item{\n  line-height: 100rpx;  \n  display: flex;\n  justify-content: center;\n  align-items: center;\n  font-size: 32rpx;\n  /* overflow: hidden; */\n}\n.box{\n   padding: 0 20rpx; \n}\n\n/* 至 */\n.to{\n  width:100%;\n  display: flex;\n  justify-content: center;align-items: center;\n  color:rgb(138,138,138);\n  /* font-size:30rpx; */\n}\n\n/* 确定 */\n.sure{\n  width:100%;\n  height:90rpx;\n  border-top: 2rpx solid #EFEFF4;\n  display: flex;justify-content: center;align-items: center;\n  color: rgb(36,123,255);\n  font-size:16px;\n}\n\n.btn-box{\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  border-bottom: 2rpx solid #eee;\n}\n.pick_btn{\n  padding: 14rpx 30rpx;\n  color: #ccc;\n  /* background-color: #159; */\n}\n\n.show_picker{\n  /* height: 320px; */\n}\n.hide_picker{\n  /* height: 0; */\n}\n"
  },
  {
    "path": "index/index.js",
    "content": "const app = getApp()\n\nPage({\n  data: {\n    isPickerRender: false,\n    isPickerShow: false,\n    startTime: \"2019-01-01 12:32:44\",\n    endTime: \"2019-12-01 12:32:44\",\n    pickerConfig: {\n      endDate: true,\n      column: \"second\",\n      dateLimit: true,\n      initStartTime: \"2019-01-01 12:32:44\",\n      initEndTime: \"2019-12-01 12:32:44\",\n      limitStartTime: \"2015-05-06 12:32:44\",\n      limitEndTime: \"2055-05-06 12:32:44\"\n    }\n  },\n  onLoad: function() {},\n  pickerShow: function() {\n    this.setData({\n      isPickerShow: true,\n      isPickerRender: true,\n      chartHide: true\n    });\n  },\n  pickerHide: function() {\n    this.setData({\n      isPickerShow: false,\n      chartHide: false\n    });\n  },\n\n  bindPickerChange: function(e) {\n    console.log(\"picker发送选择改变，携带值为\", e.detail.value);\n    console.log(this.data.sensorList);\n\n    this.getData(this.data.sensorList[e.detail.value].id);\n    // let startDate = util.formatTime(new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * 7));\n    // let endDate = util.formatTime(new Date());\n    this.setData({\n      index: e.detail.value,\n      sensorId: this.data.sensorList[e.detail.value].id\n      // startDate,\n      // endDate\n    });\n  },\n  setPickerTime: function(val) {\n    console.log(val);\n    let data = val.detail;\n    this.setData({\n      startTime: data.startTime,\n      endTime: data.endTime\n    });\n  }\n});\n"
  },
  {
    "path": "index/index.json",
    "content": "{\n  \"usingComponents\": {\n    \"time-picker\": \"../../../components/timePicker/timePicker\"\n  }\n}\n"
  },
  {
    "path": "index/index.wxml",
    "content": "<view>\n  <button bindtap=\"pickerShow\" style=\"width:80vw;margin-top:20px\">显示picker</button>\n</view>\n\n<view style=\"text-align:center;margin-top:20px\">\n  <view wx:if=\"{{startTime}}\">\n    开始时间：{{startTime}}\n  </view>\n  <view wx:if=\"{{endTime}}\">\n    结束时间：{{endTime}}\n  </view>\n</view>\n\n\n<time-picker pickerShow=\"{{isPickerShow}}\" id=\"picker\" wx:if=\"{{isPickerRender}}\" bind:hidePicker=\"pickerHide\" bind:setPickerTime=\"setPickerTime\"\n  config=\"{{pickerConfig}}\"></time-picker>"
  },
  {
    "path": "index/index.wxss",
    "content": ".intro {\n  margin: 30px;\n  text-align: center;\n}"
  },
  {
    "path": "project.config.json",
    "content": "{\n\t\"description\": \"项目配置文件\",\n\t\"packOptions\": {\n\t\t\"ignore\": []\n\t},\n\t\"setting\": {\n\t\t\"urlCheck\": true,\n\t\t\"es6\": true,\n\t\t\"postcss\": true,\n\t\t\"minified\": true,\n\t\t\"newFeature\": true\n\t},\n\t\"compileType\": \"miniprogram\",\n\t\"libVersion\": \"2.3.0\",\n\t\"appid\": \"touristappid\",\n\t\"projectname\": \"%E6%97%B6%E9%97%B4%E9%80%89%E6%8B%A9%E5%99%A8\",\n\t\"debugOptions\": {\n\t\t\"hidedInDevtools\": []\n\t},\n\t\"simulatorType\": \"wechat\",\n\t\"simulatorPluginLibVersion\": {},\n\t\"condition\": {\n\t\t\"search\": {\n\t\t\t\"current\": -1,\n\t\t\t\"list\": []\n\t\t},\n\t\t\"conversation\": {\n\t\t\t\"current\": -1,\n\t\t\t\"list\": []\n\t\t},\n\t\t\"game\": {\n\t\t\t\"currentL\": -1,\n\t\t\t\"list\": []\n\t\t},\n\t\t\"miniprogram\": {\n\t\t\t\"current\": -1,\n\t\t\t\"list\": []\n\t\t}\n\t}\n}"
  },
  {
    "path": "sitemap.json",
    "content": "{\n  \"desc\": \"关于本文件的更多信息，请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html\",\n  \"rules\": [{\n  \"action\": \"allow\",\n  \"page\": \"*\"\n  }]\n}"
  }
]