vue-ios-select
Version:
typescript+vue开发的日期滚轮组件,基于iosselect库进行封装,简单易用
1,199 lines (1,103 loc) • 140 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("vue"));
else if(typeof define === 'function' && define.amd)
define(["vue"], factory);
else {
var a = typeof exports === 'object' ? factory(require("vue")) : factory(root["Vue"]);
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 6);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = [];
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = {};
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var hasOwn = __webpack_require__(4);
module.exports = hasOwn.toString;
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var class2type = __webpack_require__(2);
module.exports = class2type.hasOwnProperty;
/***/ }),
/* 5 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_less__ = __webpack_require__(18);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__index_less__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue__ = __webpack_require__(1);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_iosselect__ = __webpack_require__(16);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_iosselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_iosselect__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__ = __webpack_require__(23);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__IosSelectDateModel__ = __webpack_require__(21);
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var Utils = __webpack_require__(9);
var VueDateSelect = /** @class */ (function (_super) {
__extends(VueDateSelect, _super);
function VueDateSelect() {
var _this_1 = _super !== null && _super.apply(this, arguments) || this;
/**
* 设置每月对应的天数
*/
_this_1.monthDays = {
1: 31,
2: 28,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31
};
//配置项的copy副本
_this_1.tempOption = {
config: {},
data: {
currentDate: "",
beginDate: "",
endDate: ""
}
};
//控制弹框的显示
_this_1.visible = _this_1.value;
/**
* iosselect默认配置
*/
_this_1.defaultConf = {
container: 'container',
title: '',
itemHeight: 40,
itemShowCount: 4,
level: 2,
oneLevelId: 0,
twoLevelId: 0,
threeLevelId: 0,
callback: _this_1.selectDateOk,
fallback: _this_1.selectDateCancel,
maskCallback: _this_1.selectDateMask
};
return _this_1;
}
//监听value值的变更
VueDateSelect.prototype.watchValueChange = function (newVal) {
this.visible = newVal;
this.visible && this.initialIosSelectDate(Object.assign({}, this.option));
!this.visible && this.selectDateCancel();
};
Object.defineProperty(VueDateSelect.prototype, "dateSelectOption", {
/**
* 计算属性,计算option的变化
* @return {string} 返回空字符串
*/
get: function () {
if (this.tempOption.data.beginDate != this.option.data.beginDate
|| this.tempOption.data.endDate != this.option.data.endDate
|| this.tempOption.data.currentDate != this.option.data.currentDate
|| this.tempOption.config.level != this.option.config.level) {
this.tempOption = Object.assign({}, this.option);
this.initialIosSelectDate(Object.assign({}, this.option));
}
return "";
},
enumerable: true,
configurable: true
});
Object.defineProperty(VueDateSelect.prototype, "dateSelectContainer", {
/**
* iosselect组件容器
* @return {string} 返回容器类名
*/
get: function () {
// @ts-ignore
return this.defaultConf.container;
},
enumerable: true,
configurable: true
});
/**
* 获取某个时间所在的月份总共有多少天
* @param {Date} date 日期对象
* @return {number} 返回获取到的该月总天数
*/
VueDateSelect.prototype.getMonthTotalDays = function (date) {
var month = date.getMonth();
var days = 0;
//判断闰年跟平年
if ((month + 1) == 2 && Utils.isLeapYear(date)) {
this.monthDays[2] = 29;
}
else {
this.monthDays[2] = 28;
}
days = this.monthDays[month + 1];
return days;
};
/**
* 初始化年数据
* @param {IosSelectDateModel} dateModel 初始化日期对象
* @return {Function} 返回选中年后的回调函数
*/
VueDateSelect.prototype.yearData = function (dateModel) {
return function (callback) {
var yearData = [];
var diffYears = Utils.diffDate("y", dateModel.beginDate, dateModel.endDate);
var currentYear = dateModel.beginDate.getFullYear();
for (var i = 0; i <= diffYears; i++) {
var tempYear = currentYear;
tempYear += i;
yearData.push({
id: tempYear,
value: tempYear + "\u5E74"
});
}
callback(yearData);
};
};
/**
* 初始化月份数据
* @param {IosSelectDateModel} dateModel 初始化日期对象
* @return {Function} 返回选中月后的回调函数
*/
VueDateSelect.prototype.monthData = function (dateModel) {
return function (year, callback) {
var monthData = [];
var cycleBeginIndex = 1;
var cycleEndIndex = 12;
if (Utils.dateFormat("yyyy", dateModel.beginDate) == year.toString()) {
cycleBeginIndex = dateModel.beginDate.getMonth() + 1;
}
else if (Utils.dateFormat("yyyy", dateModel.endDate) == year.toString()) {
cycleEndIndex = dateModel.endDate.getMonth() + 1;
}
for (var i = cycleBeginIndex; i <= cycleEndIndex; i++) {
monthData.push({
id: i,
value: i + "\u6708"
});
}
callback(monthData);
};
};
/**
* 初始化天数据
* @param {IosSelectDateModel} dateModel 初始化日期对象
* @return {Function} 返回选中天后的回调函数
*/
VueDateSelect.prototype.dateData = function (dateModel) {
var _this = this;
return function (year, month, callback) {
var date = new Date(year, month - 1, 1);
var dayData = [];
var days = _this.getMonthTotalDays(date);
var cycleBeginIndex = 1;
var cycleEndIndex = days;
if (Utils.dateFormat("yyyy-MM", dateModel.beginDate) == Utils.dateFormat("yyyy-MM", date)) {
cycleBeginIndex = dateModel.beginDate.getDate();
}
else if (Utils.dateFormat("yyyy-MM", dateModel.endDate) == Utils.dateFormat("yyyy-MM", date)) {
cycleEndIndex = dateModel.endDate.getDate();
}
for (var i = cycleBeginIndex; i <= cycleEndIndex; i++) {
dayData.push({
id: i,
value: i + "\u65E5"
});
}
callback(dayData);
};
};
/**
* 初始化iosselectdate
* @param {IosSelectDateModel} dateModel 初始组件数据实体
* @param {any} config 初始化组件配置
* @return {void} 无返回值
*/
VueDateSelect.prototype.renderTpl = function (dateModel, config) {
if (config.level == 2) { //两级,只有年、月
config.relation = [1];
var iosSelect = new __WEBPACK_IMPORTED_MODULE_2_iosselect___default.a(2, [
this.yearData(dateModel),
this.monthData(dateModel)
], config);
}
if (config.level == 3) { //三级,有年、月、日
config.relation = [1, 1];
var iosSelect = new __WEBPACK_IMPORTED_MODULE_2_iosselect___default.a(3, [
this.yearData(dateModel),
this.monthData(dateModel),
this.dateData(dateModel)
], config);
}
};
/**
* 初始化iosselct组件基础数据
* @param {any} option 组件配置项
* @return {void} 无返回值
*/
VueDateSelect.prototype.initialIosSelectDate = function (option) {
var data = option.data, config = option.config;
if (data.beginDate && data.endDate && data.currentDate) {
var dateModel = new __WEBPACK_IMPORTED_MODULE_4__IosSelectDateModel__["a" /* IosSelectDateModel */]();
dateModel.beginDate = Utils.createCorrectDate(data.beginDate);
dateModel.endDate = Utils.createCorrectDate(data.endDate);
dateModel.currentDate = Utils.createCorrectDate(data.currentDate);
config = config || {};
//先进行config跟defaultConf的合并操作
this.defaultConf = Object.assign({}, this.defaultConf, config);
if (this.defaultConf.level == 3) { //三级,设置年、月、日默认值
this.defaultConf.oneLevelId = dateModel.currentDate.getFullYear();
this.defaultConf.twoLevelId = Number(Utils.dateFormat("M", dateModel.currentDate));
this.defaultConf.threeLevelId = Number(Utils.dateFormat("d", dateModel.currentDate));
}
if (this.defaultConf.level == 2) { //二级,设置年、月默认值
this.defaultConf.oneLevelId = dateModel.currentDate.getFullYear();
this.defaultConf.twoLevelId = Number(Utils.dateFormat("M", dateModel.currentDate));
}
this.visible && this.renderTpl(dateModel, this.defaultConf);
}
};
/**
* 选择时间以后触发的事件,iosselect最多支持6级,todo:该组件后续优化让支持6级的时间选择
* @param yearData 选择的年数据
* @param monthData 选择的月数据
* @param dayData 选择的天数据
* @param hourDay 选择的小时数据
* @param minuteData 选择的分数据
* @param secondData 选择的秒数据
* @return {void} 无返回值
*/
VueDateSelect.prototype.selectDateOk = function (yearData, monthData, dayData, hourDay, minuteData, secondData) {
};
/**
* 选择取消后的回调函数
* @return {void} 无返回值
*/
VueDateSelect.prototype.selectDateCancel = function () {
};
/**
* 击背景层关闭组件时触发的方法
* @return {void} 无返回值
*/
VueDateSelect.prototype.selectDateMask = function () {
};
__decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["a" /* Prop */])(),
__metadata("design:type", Object)
], VueDateSelect.prototype, "option", void 0);
__decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["a" /* Prop */])(),
__metadata("design:type", Boolean)
], VueDateSelect.prototype, "value", void 0);
__decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["b" /* Watch */])("value"),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], VueDateSelect.prototype, "watchValueChange", null);
__decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["c" /* Emit */])("on-ok"),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, Object, Object, Object, Object]),
__metadata("design:returntype", void 0)
], VueDateSelect.prototype, "selectDateOk", null);
__decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["c" /* Emit */])("on-cancel"),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], VueDateSelect.prototype, "selectDateCancel", null);
__decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["c" /* Emit */])("on-mask"),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], VueDateSelect.prototype, "selectDateMask", null);
VueDateSelect = __decorate([
__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["d" /* Component */])({
template: __webpack_require__(15)
})
/**
* 滚轮日期选中组件
* @class
* @extends {Vue}
*/
], VueDateSelect);
return VueDateSelect;
}(__WEBPACK_IMPORTED_MODULE_1_vue___default.a));
/* harmony default export */ __webpack_exports__["a"] = (VueDateSelect);
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_index__ = __webpack_require__(5);
/* harmony default export */ __webpack_exports__["default"] = (__WEBPACK_IMPORTED_MODULE_0__src_index__["a" /* default */]);
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(8)(false);
// imports
// module
exports.push([module.i, "div,\nul,\nli {\n margin: 0;\n padding: 0;\n}\nul,\nli {\n list-style: none outside none;\n}\n/* layer begin */\n.ios-select-widget-box.olay {\n position: fixed;\n z-index: 500;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 1;\n background: rgba(0, 0, 0, 0.7);\n}\n.ios-select-widget-box.olay > div {\n position: fixed;\n z-index: 1000;\n width: 100%;\n height: 100%;\n background-color: #f2f2f2;\n bottom: 0;\n left: 0;\n visibility: visible;\n}\n.ios-select-widget-box header.iosselect-header {\n height: 44px;\n line-height: 44px;\n background-color: #59bbff;\n width: 100%;\n z-index: 9999;\n text-align: center;\n}\n.ios-select-widget-box header.iosselect-header a {\n font-size: 16px;\n color: #fff;\n text-decoration: none;\n}\n.ios-select-widget-box header.iosselect-header a.close {\n float: left;\n padding-left: 15px;\n height: 44px;\n line-height: 44px;\n}\n.ios-select-widget-box header.iosselect-header a.sure {\n float: right;\n padding-right: 15px;\n height: 44px;\n line-height: 44px;\n}\n.ios-select-widget-box {\n padding-top: 44px;\n}\n.ios-select-widget-box .one-level-contain,\n.ios-select-widget-box .two-level-contain,\n.ios-select-widget-box .three-level-contain,\n.ios-select-widget-box .four-level-contain,\n.ios-select-widget-box .five-level-contain {\n height: 100%;\n overflow: hidden;\n}\n.ios-select-widget-box .iosselect-box {\n overflow: hidden;\n}\n.ios-select-widget-box .iosselect-box > div {\n display: block;\n float: left;\n}\n.ios-select-widget-box ul {\n background-color: #fff;\n}\n.ios-select-widget-box ul li {\n font-size: 13px;\n height: 35px;\n line-height: 35px;\n background-color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n color: #111;\n opacity: .3;\n}\n.ios-select-widget-box ul li.at {\n font-size: 16px;\n opacity: 1;\n}\n.ios-select-widget-box ul li.side1 {\n font-size: 15px;\n opacity: .7;\n}\n.ios-select-widget-box ul li.side2 {\n font-size: 14px;\n opacity: .5;\n}\n.ios-select-widget-box.one-level-box .one-level-contain {\n width: 100%;\n}\n.ios-select-widget-box.one-level-box .two-level-contain,\n.ios-select-widget-box.one-level-box .three-level-contain,\n.ios-select-widget-box.one-level-box .four-level-contain,\n.ios-select-widget-box.one-level-box .five-level-contain,\n.ios-select-widget-box.one-level-box .six-level-contain {\n width: 0;\n}\n.ios-select-widget-box.two-level-box .one-level-contain,\n.ios-select-widget-box.two-level-box .two-level-contain {\n width: 50%;\n}\n.ios-select-widget-box.two-level-box .three-level-contain,\n.ios-select-widget-box.two-level-box .four-level-contain,\n.ios-select-widget-box.two-level-box .five-level-contain,\n.ios-select-widget-box.two-level-box .six-level-contain {\n width: 0;\n}\n.ios-select-widget-box.three-level-box .one-level-contain,\n.ios-select-widget-box.three-level-box .two-level-contain {\n width: 33.3333%;\n}\n.ios-select-widget-box.three-level-box .three-level-contain {\n width: 33.3333%;\n}\n.ios-select-widget-box.three-level-box .four-level-contain .ios-select-widget-box.three-level-box .five-level-contain,\n.ios-select-widget-box.three-level-box .six-level-contain {\n width: 0%;\n}\n.ios-select-widget-box.four-level-box .one-level-contain,\n.ios-select-widget-box.four-level-box .two-level-contain,\n.ios-select-widget-box.four-level-box .three-level-contain,\n.ios-select-widget-box.four-level-box .four-level-contain {\n width: 25%;\n}\n.ios-select-widget-box.four-level-box .five-level-contain,\n.ios-select-widget-box.four-level-box .six-level-contain {\n width: 0%;\n}\n.ios-select-widget-box.five-level-box .one-level-contain,\n.ios-select-widget-box.five-level-box .two-level-contain,\n.ios-select-widget-box.five-level-box .three-level-contain,\n.ios-select-widget-box.five-level-box .four-level-contain,\n.ios-select-widget-box.five-level-box .five-level-contain {\n width: 20%;\n}\n.ios-select-widget-box.five-level-box .six-level-contain {\n width: 0%;\n}\n.ios-select-widget-box.six-level-box .one-level-contain,\n.ios-select-widget-box.six-level-box .two-level-contain,\n.ios-select-widget-box.six-level-box .three-level-contain,\n.ios-select-widget-box.six-level-box .four-level-contain,\n.ios-select-widget-box.six-level-box .five-level-contain {\n width: 16%;\n}\n.ios-select-widget-box.six-level-box .six-level-contain {\n width: 20%;\n}\n.ios-select-widget-box .cover-area1 {\n width: 100%;\n border: none;\n border-top: 1px solid #d9d9d9;\n position: absolute;\n top: 149px;\n margin: 0;\n height: 0;\n}\n.ios-select-widget-box .cover-area2 {\n width: 100%;\n border: none;\n border-top: 1px solid #d9d9d9;\n position: absolute;\n top: 183px;\n margin: 0;\n height: 0;\n}\n.ios-select-widget-box #iosSelectTitle {\n margin: 0;\n padding: 0;\n display: inline-block;\n font-size: 16px;\n font-weight: normal;\n color: #fff;\n}\n.ios-select-body-class {\n overflow: hidden;\n}\n.ios-select-body-class body {\n touch-action: none;\n}\n.ios-select-widget-box.olay > div > .ios-select-loading-box {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: none;\n}\n.ios-select-widget-box.olay > div > .ios-select-loading-box > .ios-select-loading {\n width: 50px;\n height: 50px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-top: -25px;\n margin-left: -25px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OEMxMEI3NDI3MEIxMUU2ODVGMzhFNjYyMDIyOUFCMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OEMxMEI3NTI3MEIxMUU2ODVGMzhFNjYyMDIyOUFCMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4QzEwQjcyMjcwQjExRTY4NUYzOEU2NjIwMjI5QUIwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU4QzEwQjczMjcwQjExRTY4NUYzOEU2NjIwMjI5QUIwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GeWqMwAAA+BJREFUeNrMmVlsTGEUx+9cXZQiLZWKklhbQSSlSMUWSxAiJGJ5aSQehOiDF7yI4EFILW99I3iRSJGUPkiILSKp2OuJVtHWkrRVapn2jv+R/ycnn5l27rQz10l+mWlyl/+c833nO+c0FIlEnATMBbPAIn5OBuPAENAKToC74BtoB59AG/D9spBPgaPBdrAFjJH7Fa66TkRuNe8gP8Bb8Ap8j/eFaXFelwv286WZfKG2WL9SX5cFCuntBvAc/OoPD64HJ8EI5Q3tmW7whl4pAl/AUfAEDKZnQ1HuFXGPQGOiAsW7x8A26wUhirgMLnGtfe3hGcO5NApARpRnSchrY0UhlkAJxxmw0npYBzgOKinSj6WDCfRyphWFJnAPdMUjUH71WbDKElcDykGL0zcbCEroVf389+CW7Uk3ygNk/azghYIHDoCN/SDO4W6+A55aAiUrzImWz7StA2WWuF2gIpEc1ovVgQeWyELm06gCc8ARJU44DM45yTPZII8tkXO5DP4RuI8iPYqr4YmQbJN8+E4JlA1abAuUBbtZeU526O4khDWW3QdhK9TZWmAZd6/x3inw0UmdSZJ/pgSKlilGoMvTwoiTw/20k3p7yTyovRgScTNAvgrvFSbkVJuE+LU6GiXEefJHqfKefF5zgrMGVRnJZ4HEerryXjdzU1DWbB2BI10mRuPBej+1WhKsi8vLeDDXZRllwtvoBG8davNmS4gHUZyTQIWSrM1iQpyZptafo4QGabp9+JNmOijMY9MTtGWpEHe5PDHMGsz/DwQOUwI7XVYUZheP1ZVEAJbOFsGswTYR+EKF2NWVRABWwHPYeLDFZWKOKJFLAhRYpMQJjS7rsWYlcjlTT6pNOr5pahfL5m12KaparUPpZTcEILCEjjGniCy9iMk3F9hImzCXcZqQKhOnLFShjbBX/psQP4Aq5UUpdfZEGXEkKzGvZf4zu/exOdV0T1LJCZTx4gK2msm2Uq494z1pS29Ea5ra2RPrrm4HpwvJsplgtTW/kXq0M1ZffF2F2uMNe+nJUD+HVWaLm8AAtXNrOXTqcfQh2fwQmKdST4TTgAp6ui+WTWFTrUpedu15Fs29Do/kuDsIZlsiW7njryZQ2MrAaD5Yqko88+w6zoPCfsdv5VwjnnXayA67zYmUdGM/e0i+E7nWivnDPUWEz6iyPedngLkY7ARDrQeb72GOz5roVY/eylMHvxflXjkpLoKHfZ2wmhJIkvcylUi9BAnTa9U9DD59CzQm/csaZv0cn0JbOeK4ye/xbfcE/w0hYZvElnU8GEXBGRQjeewzi5B6rtP6RGY9vwUYACMHTam1T1ebAAAAAElFTkSuQmCC) no-repeat 0 0;\n background-size: contain;\n -webkit-animation: loading-keyframe 1s infinite linear;\n animation: loading-keyframe 1s infinite linear;\n}\n.fadeInUp .layer {\n -webkit-animation: fadeInUp .5s;\n animation: fadeInUp .5s;\n}\n.fadeOutDown .layer {\n -webkit-animation: fadeOutDown .5s!important;\n animation: fadeOutDown .5s!important;\n}\n@-webkit-keyframes loading-keyframe {\n from {\n -webkit-transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n }\n}\n@keyframes loading-keyframe {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n@-webkit-keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n -webkit-transform: none;\n }\n}\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: none;\n }\n}\n@-webkit-keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n }\n}\n@keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n}\n", ""]);
// exports
/***/ }),
/* 8 */
/***/ (function(module, exports) {
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
module.exports = function(useSourceMap) {
var list = [];
// return the list of modules as css string
list.toString = function toString() {
return this.map(function (item) {
var content = cssWithMappingToString(item, useSourceMap);
if(item[2]) {
return "@media " + item[2] + "{" + content + "}";
} else {
return content;
}
}).join("");
};
// import a list of modules into the list
list.i = function(modules, mediaQuery) {
if(typeof modules === "string")
modules = [[null, modules, ""]];
var alreadyImportedModules = {};
for(var i = 0; i < this.length; i++) {
var id = this[i][0];
if(typeof id === "number")
alreadyImportedModules[id] = true;
}
for(i = 0; i < modules.length; i++) {
var item = modules[i];
// skip already imported module
// this implementation is not 100% perfect for weird media query combinations
// when a module is imported multiple times with different media queries.
// I hope this will never occur (Hey this way we have smaller bundles)
if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
if(mediaQuery && !item[2]) {
item[2] = mediaQuery;
} else if(mediaQuery) {
item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
}
list.push(item);
}
}
};
return list;
};
function cssWithMappingToString(item, useSourceMap) {
var content = item[1] || '';
var cssMapping = item[3];
if (!cssMapping) {
return content;
}
if (useSourceMap && typeof btoa === 'function') {
var sourceMapping = toComment(cssMapping);
var sourceURLs = cssMapping.sources.map(function (source) {
return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'
});
return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
}
return [content].join('\n');
}
// Adapted from convert-source-map (MIT)
function toComment(sourceMap) {
// eslint-disable-next-line no-undef
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
return '/*# ' + data + ' */';
}
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = __webpack_require__(10);
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var class2type = __webpack_require__(2);
var getProto = __webpack_require__(11);
var hasOwn = __webpack_require__(4);
var array = __webpack_require__(0);
var push = __webpack_require__(14);
var indexOf = __webpack_require__(12);
var fnToString = __webpack_require__(3);
var objectFunctionString = __webpack_require__(13);
var types = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Object", "Error", "Symbol"];
types.map(function (name) {
class2type["[object " + name + "]"] = name.toLowerCase();
});
module.exports = {
type: function (obj) {
if (obj == null) {
return obj + "";
}
return typeof obj === "object" || typeof obj === "function" ?
class2type[toString.call(obj)] || "object" :
typeof obj;
},
isNull: function (obj) {
return obj === null || typeof obj === "undefined";
},
isPlainObject: function (obj) {
var proto, Ctor;
if (!obj || toString.call(obj) !== "[object Object]") {
return false;
}
proto = getProto(obj);
if (!proto) {
return true;
}
Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
return typeof Ctor === "function" && fnToString.call(Ctor) === objectFunctionString;
},
isEmptyObject: function (obj) {
var name;
for (name in obj) {
return false;
}
return true;
},
isFunction: function (obj) {
return this.type(obj) === "function";
},
isNumeric: function (obj) {
var type = this.type(obj);
return (type === "number" || type === "string") &&
// parseFloat NaNs numeric-cast false positives ("")
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
// subtraction forces infinities to NaN
!isNaN(obj - parseFloat(obj));
},
isArray: function (obj) {
return this.type(obj) == "array";
},
isBoolean: function (obj) {
return this.type(obj) == "boolean";
},
isDate: function (obj) {
return this.type(obj) == "date";
},
contain: function (elem, array, i) {
return array == null ? -1 : indexOf.call(array, elem, i);
},
merge: function (first, second) {
var len = +second.length,
j = 0,
i = first.length;
for (; j < len; j++) {
first[i++] = second[j];
}
first.length = i;
return first;
},
trim: function (text) {
return text == null ?
"" : (text + "").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
},
// results is for internal usage only
makeArray: function (arr, results) {
var ret = results || [];
if (arr != null) {
if (this.isArrayLike(Object(arr))) {
this.merge(ret,
typeof arr === "string" ?
[arr] : arr
);
} else {
push.call(ret, arr);
}
}
return ret;
},
isWindow: function (obj) {
return obj != null && obj === obj.window;
},
isArrayLike: function (obj) {
var length = !!obj && "length" in obj && obj.length,
type = this.type(obj);
if (type === "function" || this.isWindow(obj)) {
return false;
}
return type === "array" || length === 0 ||
typeof length === "number" && length > 0 && (length - 1) in obj;
},
unique: function (arr) {
var res = [];
var json = {};
for (var i = 0; i < arr.length; i++) {
if (!json[arr[i]]) {
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
},
findElementIndex: function (arr, element) {
for (var i = 0; i < arr.length; i++) {
if (Object.prototype.toString.call(arr[i]) == "[object Object]") {
for (var key in arr[i]) {
if (key == element) {
return i;
}
}
} else if (element === arr[i]) {
return i;
}
}
return -1;
},
removeElement: function (array, element) {
var n = this.findElementIndex(array, element);
if (n < 0) {
return array;
} else {
return array.splice(n, 1); //this.slice(0, n).concat(this.slice(n + 1, this.length));
}
},
copyDate: function (date) {
try {
var newDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
newDate.setHours(date.getHours());
newDate.setMinutes(date.getMinutes());
newDate.setSeconds(date.getSeconds());
newDate.setMilliseconds(date.getMilliseconds());
return newDate;
} catch (e) {
throw "invalidDate";
}
},
/**
* 创建正确的Date对象
* @param strFormatDate 日期字符串,支持格式
* 2017-11-19 12:20:30:333
* 2017/11/19 12:20:30:333
* 2017.11.19 12:20:30:333
* 2017-11-19
* 2017/11/19
* 2017.11.19
* @param dateArr 时、分、秒数组,格式
* [23,59,59]
*/
createCorrectDate: function (strFormatDate, dateArr) {
if (strFormatDate == undefined || strFormatDate == null || strFormatDate == '') return 'invalidDate';
var dateObj;
dateArr = dateArr || [];
try {
var dateArray;
if (strFormatDate.indexOf(":") > -1) {
var dateStrSplit = strFormatDate.toString().split(" ");
strFormatDate = dateStrSplit[0];
if (dateArr.length <= 0) dateArr = dateStrSplit[1].split(":")
}
if (strFormatDate.indexOf('-') > -1) {
dateArray = strFormatDate.toString().split('-');
dateObj = new Date(Number(dateArray[0]), Number(dateArray[1]) - 1, Number(dateArray[2]));
if (Number(dateArray[0]) != dateObj.getFullYear())
return 'invalidDate';
if (Number(dateArray[1]) != dateObj.getMonth() + 1)
return 'invalidDate';
if (Number(dateArray[2]) != dateObj.getDate())
return 'invalidDate';
} else if (strFormatDate.indexOf('.') > -1) {
dateArray = strFormatDate.toString().split('.');
dateObj = new Date(Number(dateArray[0]), Number(dateArray[1]) - 1, Number(dateArray[2]));
if (Number(dateArray[0]) != dateObj.getFullYear())
return 'invalidDate';
if (Number(dateArray[1]) != dateObj.getMonth() + 1)
return 'invalidDate';
if (Number(dateArray[2]) != dateObj.getDate())
return 'invalidDate';
} else if (strFormatDate.indexOf('/') > -1) {
dateArray = strFormatDate.toString().split('/');
dateObj = new Date(Number(dateArray[0]), Number(dateArray[1]) - 1, Number(dateArray[2]));
if (Number(dateArray[0]) != dateObj.getFullYear())
return 'invalidDate';
if (Number(dateArray[1]) != dateObj.getMonth() + 1)
return 'invalidDate';
if (Number(dateArray[2]) != dateObj.getDate())
return 'invalidDate';
}
for (var i = 0; i < dateArr.length; i++) {
switch (i) {
case 0:
dateObj.setHours(dateArr[0]);
if (dateObj.getHours() != Number(dateArr[0]))
return 'invalidDate';
break;
case 1:
dateObj.setMinutes(dateArr[1]);
if (dateObj.getMinutes() != Number(dateArr[1]))
return 'invalidDate';
break;
case 2:
dateObj.setSeconds(dateArr[2]);
if (dateObj.getSeconds() != Number(dateArr[2]))
return 'invalidDate';
break;
case 3:
dateObj.setMilliseconds(dateArr[3]);
if (dateObj.getMilliseconds() != Number(dateArr[3]))
return 'invalidDate';
default:
break;
}
}
if (dateArr.length <= 0) {
dateObj.setHours(0);
dateObj.setMinutes(0);
dateObj.setSeconds(0);
dateObj.setMilliseconds(0);
}
return dateObj;
} catch (e) {
return 'invalidDate';
}
},
dateFormat: function (fmt, objDate) {
var o = {
"M+": objDate.getMonth() + 1, //月份
"d+": objDate.getDate(), //日
"h+": objDate.getHours(), //小时
"m+": objDate.getMinutes(), //分
"s+": objDate.getSeconds(), //秒
"q+": Math.floor((objDate.getMonth() + 3) / 3), //季度
"S": objDate.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (objDate.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
},
isLeapYear: function (objDate) {//判断闰年
var pYear = objDate.getFullYear();
if (!isNaN(parseInt(pYear))) {
if ((pYear % 4 == 0 && pYear % 100 != 0) || (pYear % 100 == 0 && pYear % 400 == 0)) {
return true;
} else {
return false;
}
} else {
return false;
}
},
/***************************************************
*比较两个日期的间隔
*参数说明:
* @param interval要返回的两个日期的间隔,比如:
* s:返回两个日期相差的秒数
* n:返回两个日期相差的分钟数
* h:返回两个日期相差的小时数
* d:返回两个日期相差的天数
* w:返回两个日期相差的周数
* m:返回连个日期相差的月数
* y:返回连个日期相差的年数
* @param beginDate:开始日期
* @param endDate:结束日期
****************************************************/
diffDate: function (interval, beginDate, endDate) {
var dtBegin;
var dtEnd;
try {
if (Object.prototype.toString.call(beginDate) == "[object Date]") {
dtBegin = beginDate;
} else if (Object.prototype.toString.call(beginDate) == "[object String]") {
dtBegin = this.createCorrectDate(beginDate);
}
if (Object.prototype.toString.call(endDate) == "[object Date]") {
dtEnd = endDate;
} else if (Object.prototype.toString.call(endDate) == "[object String]") {
dtEnd = this.createCorrectDate(endDate);
}
if (isNaN(dtEnd)) return undefined;
switch (interval) {
case "s":
return parseInt((dtEnd - dtBegin) / 1000);
case "n":
return parseInt((dtEnd - dtBegin) / 60000);
case "h":
return parseInt((dtEnd - dtBegin) / 3600000);
case "d":
return parseInt((dtEnd - dtBegin) / 86400000);
case "w":
return parseInt((dtEnd - dtBegin) / (86400000 * 7));
case "m":
return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtBegin.getFullYear()) * 12) - (dtBegin.getMonth() + 1);
case "y":
return dtEnd.getFullYear() - dtBegin.getFullYear();
}
} catch (e) {
throw "无效的时间格式!";
}
},
/***************************************************
*比较两个日期的间隔
*参数说明:
*objDate:结束日期
*interval要返回的两个日期的间隔,比如:
*s:返回两个日期相差的秒数
*n:返回两个日期相差的分钟数
*h:返回两个日期相差的小时数
*d:返回两个日期相差的天数
*w:返回两个日期相差的周数
*m:返回连个日期相差的月数
*y:返回连个日期相差的年数
****************************************************/
dateDiff: function (interval, objBeginDate, objEndDate) {
var dtBegin = new Date(objBeginDate);
var dtEnd = new Date(objEndDate);
if (isNaN(dtEnd)) return undefined;
switch (interval) {
case "s":
return parseInt((dtEnd - dtBegin) / 1000);
case "n":
return parseInt((dtEnd - dtBegin) / 60000);
case "h":
return parseInt((dtEnd - dtBegin) / 3600000);
case "d":
return parseInt((dtEnd - dtBegin) / 86400000);
case "w":
return parseInt((dtEnd - dtBegin) / (86400000 * 7));
case "m":
return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtBegin.getFullYear()) * 12) - (dtBegin.getMonth() + 1);
case "y":
return dtEnd.getFullYear() - dtBegin.getFullYear();
}
},
clone: function () {
var options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false;
// Handle a deep copy situation
if (typeof target === "boolean") {
deep = target;
// Skip the boolean and the target
target = arguments[i] || {};
i++;
}
// Handle case when target is a string or something (possible in deep copy)
if (typeof target !== "object" && !this.isFunction(target)) {
target = {};
}
if (i === length) {
target = this;
i--;
}
for (; i < length; i++) {
// Only deal with non-null/undefined values
if ((options = arguments[i]) != null) {
// Extend the base object
for (name in options) {
src = target[name];
copy = options[name];
// Prevent never-ending loop
if (target === copy) {
continue;
}
// Recurse if we're merging plain objects or arrays
if (deep && copy && (this.isPlainObject(copy) ||
(copyIsArray = Array.isArray(copy)))) {
if (copyIsArray) {
copyIsArray = false;
clone = src && Array.isArray(src) ? src : [];
} else {
clone = src && this.isPlainObject(src) ? src : {};
}
// Never move original objects, clone them
target[name] = this.clone(deep, clone, copy);
// Don't bring in undefined values
} else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
// Return the modified object
return target;
},
getQuery: function (queryKey, target, pattern) {
var locationSearch = location.search;
if (target) locationSearch = target;
var regExp = new RegExp("" + queryKey + "=([^&=]+)");
if (pattern) regExp = pattern;
var query;
if (regExp.test(locationSearch)) {
query = RegExp.$1;
}
return query;
},
getOffset: function (element) {
var left = 0, top = 0;
var parent = element;
while (parent != null) {
left += parent.offsetLeft;
top += parent.offsetTop;
parent = parent.offsetParent;
}
return { offsetX: left, offsetY: top };
},
getScrollOffsets: function (w) {
var w = w || window;
if (w.pageXOffset != null) {
return { scrollX: w.pageXOffset, scrollY: w.pageYOffset };
}
var doc = w.document;
if (doc.compatMode == "CSS1Compat") {
return { scrollX: doc.documentElement.scrollLeft, scrollY: doc.documentElement.scrollTop };
}
return { scrollX: doc.body.scrollLeft, scrollY: doc.body.scrollTop };
},
getViewPortSize: function (w) {
var w = w || window;
if (w.innerWidth) {
return { width: w.innerWidth, height: w.innerHeight };
}
var d = w.document;
if (d.compatMode == "CSS1Compat") {
return { width: d.documentElement.clientWidth, height: d.documentElement.clientHeight };
}
return { width: d.body.clientWidth, height: d.body.clientHeight };
}
};
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = Object.getPrototypeOf;
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var array = __webpack_require__(0);
module.exports = array.indexOf;
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fnToString = __webpack_require__(3);
module.exports = fnToString.call(Object);
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var array = __webpack_require__(0);
module.exports = array.push;
/***/ }),
/* 15 */
/***/ (function(module, exports) {
module.exports = "<div class=\"select-wrapper\" v-show=\"visible\">\n {{dateSelectOption}}\n <div :class=\"dateSelectContainer\"></div>\n</div>";
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/**
* IosSelect
* @param {number} level 选择的层级 1 2 3 4 5 6 最多支持6层
* @param {...Array} data [oneLevelData[, twoLevelData[, threeLevelData[, fourLevelData[, fiveLevelData[, sixLevelData]]]]]] 可以用数组,也可以用方法
* @param {Object} options
* @param {string=} options.container 组件插入到该元素下 可选
* @param {Function} options.callback 选择完毕后的回调函数
* @param {Function} options.fallback 选择取消后的回调函数
* @param {Function} options.maskCallback 点击背景层关闭组件时触发的方法
* @param {string=} options.title 选择框title
* @param {number=} options.itemHeight 每一项的高度,默认 35
* @param {number=} options.itemShowCount 组件展示的项数,默认 7,可选3,5,7,9,不过不是3,5,7,9则展示7项
* @param {number=} options.headerHeight 组件标题栏高度 默认 44
* @param {css=} options.cssUnit px或者rem 默认是px
* @param {string=} options.addClassName 组件额外类名 用于自定义样式
* @param {...Array=} options.relation 数组 [oneTwoRelation, twoThreeRelation, threeFourRelation, fourFiveRelation] 默认值:[0, 0, 0, 0, 0, 0]
* @param {number=} options.relation.oneTwoRelation 第一列和第二列是否通过parentId关联
* @param {number=} options.relation.twoThreeRelation 第二列和第三列是否通过parentId关联
* @param {number=} options.relation.threeFourRelation 第三列和第四列是否通过parentId关联
* @param {number=} options.relation.fourFiveRelation 第四列和第五列是否通过parentId关联
* @param {number=} options.relation.fiveSixRelation 第五列和第六列是否通过parentId关联
* @param {string=} options.oneLevelId 第一级选中id
* @param {string=} options.twoLevelId 第二级选中id
* @param {string=} options.threeLevelId 第三级选中id
* @param {string=} options.fourLevelId 第四级选中id
* @param {string=} options.fiveLevelId 第五级选中id
* @param {string=} options.sixLevelId 第六级选中id
* @param {boolean=} options.showLoading 如果你的数据是异步加载的,可以使用该参数设置为true,下拉菜单会有加载中的效果
* @param {boolean=} options.showAnimate 是否需要入场动画和退场动画,如需自定义动画效果,请修改css
*/
(function() {
/* modify by zhoushengmufc,based on iScroll v5.2.0 */
var rAF = window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (callback) { window.setTimeout(callback, 1000 / 60); };
var utils = (function () {
var me = {};
var _elementStyle = document.createElement('div').style;
var _vendor = (function () {
var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],
transform,
i = 0,
l = vendors.length;
for ( ; i < l; i++ ) {
transform = vendors[i] + 'ransform';
if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1);
}
return false;
})();
function _prefixStyle (style) {
if ( _vendor === false ) return false;
if ( _vendor === '' ) return style;
return _vendor + style.charAt(0).toUpperCase() + style.substr(1);
}
me.getTime = Date.now || function getTime () { return new Date().getTime(); };
me.extend = function (target, obj) {
for ( var i in obj ) {
target[i] = obj[i];
}
};
me.addEvent = function (el, type, fn, capture) {
el.addEventListener(type, fn, !!capture);
};
me.removeEvent = function (el, type, fn, capture) {
el.removeEventListener(type, fn, !!capture);
};
me.prefixPointerEvent = function (pointerEvent) {
return window.MSPointerEvent ?
'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8):
pointerEvent;
};
me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {
var distance = current - start,
speed = Math.abs(distance) / time,
destination,
duration;
deceleration = deceleration === undefined ? 0.0006 : deceleration;
destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 );
duration = speed / deceleration;
if ( destination < lowerMargin ) {
destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin;
distance = Math.abs(destination - current);
duration = distance / speed;
} else if ( destination > 0 ) {
destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0;
distance = Math.abs(current) + destination;
duration = distance / speed;
}
return {
destination: Math.round(destination),
duration: duration
};
};
var _transform =