u-datetime-picker.js.map 27 KB

1
  1. {"version":3,"sources":["webpack:///E:/存放文件/驿站/工作目录/开发项目/实验设备管理系统(广州医科大学生物医学工程学院)/lab-equipment-project/lab-equipment-mini-program/node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue?1c0b","webpack:///E:/存放文件/驿站/工作目录/开发项目/实验设备管理系统(广州医科大学生物医学工程学院)/lab-equipment-project/lab-equipment-mini-program/node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue?68f8","webpack:///E:/存放文件/驿站/工作目录/开发项目/实验设备管理系统(广州医科大学生物医学工程学院)/lab-equipment-project/lab-equipment-mini-program/node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue?8c11","webpack:///E:/存放文件/驿站/工作目录/开发项目/实验设备管理系统(广州医科大学生物医学工程学院)/lab-equipment-project/lab-equipment-mini-program/node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue?aba1","uni-app:///node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue","webpack:///E:/存放文件/驿站/工作目录/开发项目/实验设备管理系统(广州医科大学生物医学工程学院)/lab-equipment-project/lab-equipment-mini-program/node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue?26b6","webpack:///E:/存放文件/驿站/工作目录/开发项目/实验设备管理系统(广州医科大学生物医学工程学院)/lab-equipment-project/lab-equipment-mini-program/node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue?260d"],"names":["result","name","mixins","data","columns","innerDefaultIndex","innerFormatter","watch","show","propsChange","computed","mounted","methods","init","setFormatter","close","cancel","confirm","value","mode","intercept","uni","change","values","selectValue","minute","date","hour","updateColumnValue","updateIndexs","formatter","updateColumns","getOriginColumns","range","type","generateArray","correctValue","getRanges","maxYear","maxDate","maxMonth","maxHour","maxMinute","minYear","minDate","minMonth","minHour","minMinute","getBoundary","month"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0I;AAC1I;AACqE;AACL;AACsC;;;AAGtG;AACkM;AAClM,gBAAgB,uLAAU;AAC1B,EAAE,uFAAM;AACR,EAAE,wGAAM;AACR,EAAE,iHAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,4GAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,aAAa,iSAEN;AACP,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAywB,CAAgB,6qBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;ACgC7xB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AATA;EACA;EACA;EACA;IACAA;EACA;EACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/BA,eAgCA;EACAC;EACAC;EACAC;IACA;MACAC;MACAC;MACAC;QAAA;MAAA;IACA;EACA;EACAC;IACAC;MACA;QACA;MACA;IACA;IACAC;MACA;IACA;EACA;EACAC;IACA;IACAD;MACA;IACA;EACA;EACAE;IACA;EACA;EACAC;IACAC;MACA;MACA;IACA;IACA;IACAC;MACA;IACA;IACA;IACAC;MACA;QACA;MACA;IACA;IACA;IACAC;MACA;IACA;IACA;IACAC;MACA;QACAC;QACAC;MACA;MACA;IACA;IACA;IACAC;MACA;MACA;MACA;QACAC;QACA;MACA;QAAA;QACA;MACA;QACAA;QACA;MACA;QACA;MACA;IACA;IACA;IACAC;MACA;QAAAC;MACA;MACA;QACA;QACAC;MACA;QACA;QACA;QACA;QACA;QACA;UAAAC;QACA;QACA;QACA;QACA;UACAC;QACA;QACA;QACAA;QACA;UACAC;UACAF;QACA;QACA;QACAD;MACA;MACA;MACAA;MACA;MACA;MACA;MACA;QACAN;QAKAC;MACA;IACA;IACA;IACAS;MACA;MACA;MACA;IACA;IACA;IACAC;MACA;MACA;MACA;MACA;QACA;QACA;QACA;QACAN;MACA;QACA;QACAA,UACAO;QACA;QACAA,oEACA;QACA;UACA;UACAP;QACA;QACA;UACA;UACAA;QACA;MACA;;MAEA;MACA;QACA;QACA;UAAA;QAAA;MACA;MACA;IACA;IACA;IACAQ;MACA;MACA;MACA;QAAA;UAAA;QAAA;MAAA;MACA;IACA;IACAC;MAAA;MACA;MACA;QAAA;UAAAC;QACA;UACA;UACAf;UACA;QACA;QACA;QACA;UACAK;QACA;QACA;UAAAW;UAAAX;QAAA;MACA;MACA;IACA;IACA;IACAY;MACA;IACA;IACA;IACAC;MACA;MACA;QACA;QACAlB;MACA;QACA;QACAA;MACA;MACA;MACA;QACA;QACA;UAAA;UAAAS;UAAAF;QACA;QACAE;QACAF;QACA;MACA;QACA;QACAP;QACAA;QACA;MACA;IACA;IACA;IACAmB;MACA;QACA,QACA;UACAH;UACAD;QACA,GACA;UACAC;UACAD;QACA,EACA;MACA;MACA;QAAAK;QAAAC;QAAAC;QAAAC;QAAAC;MACA;QAAAC;QAAAC;QAAAC;QAAAC;QAAAC;MACA,cACA;QACAb;QACAD;MACA,GACA;QACAC;QACAD;MACA,GACA;QACAC;QACAD;MACA,GACA;QACAC;QACAD;MACA,GACA;QACAC;QACAD;MACA,EACA;MACA,0BACAjC;MACA,gCACAA;MACA;IACA;IACA;IACAgD;MAAA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACAC;QACA;QACAvB;QACAC;QACAF;MACA;MACA;MACA;QACAwB;QACA;UACAvB;UACA;YACAC;YACA;cACAF;YACA;UACA;QACA;MACA;MACA,kEACAS,qEACAA,uEACAA,qEACAA,qEACAA;IAEA;EACA;AACA;AAAA,2B;;;;;;;;;;;;;AClWA;AAAA;AAAA;AAAA;AAAw8C,CAAgB,4tCAAG,EAAC,C;;;;;;;;;;;ACA59C;AACA,OAAO,KAAU,EAAE,kBAKd","file":"node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./u-datetime-picker.vue?vue&type=template&id=7d06fb79&scoped=true&\"\nvar renderjs\nimport script from \"./u-datetime-picker.vue?vue&type=script&lang=js&\"\nexport * from \"./u-datetime-picker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./u-datetime-picker.vue?vue&type=style&index=0&id=7d06fb79&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d06fb79\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"node_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue\"\nexport default component.exports","export * from \"-!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./u-datetime-picker.vue?vue&type=template&id=7d06fb79&scoped=true&\"","var components\ntry {\n components = {\n uPicker: function () {\n return import(\n /* webpackChunkName: \"node-modules/uview-ui/components/u-picker/u-picker\" */ \"uview-ui/components/u-picker/u-picker.vue\"\n )\n },\n }\n} catch (e) {\n if (\n e.message.indexOf(\"Cannot find module\") !== -1 &&\n e.message.indexOf(\".vue\") !== -1\n ) {\n console.error(e.message)\n console.error(\"1. 排查组件名称拼写是否正确\")\n console.error(\n \"2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom\"\n )\n console.error(\n \"3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件\"\n )\n } else {\n throw e\n }\n}\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./u-datetime-picker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./u-datetime-picker.vue?vue&type=script&lang=js&\"","<template>\n\t<u-picker\n\t\tref=\"picker\"\n\t\t:show=\"show\"\n\t\t:closeOnClickOverlay=\"closeOnClickOverlay\"\n\t\t:columns=\"columns\"\n\t\t:title=\"title\"\n\t\t:itemHeight=\"itemHeight\"\n\t\t:showToolbar=\"showToolbar\"\n\t\t:visibleItemCount=\"visibleItemCount\"\n\t\t:defaultIndex=\"innerDefaultIndex\"\n\t\t:cancelText=\"cancelText\"\n\t\t:confirmText=\"confirmText\"\n\t\t:cancelColor=\"cancelColor\"\n\t\t:confirmColor=\"confirmColor\"\n\t\t@close=\"close\"\n\t\t@cancel=\"cancel\"\n\t\t@confirm=\"confirm\"\n\t\t@change=\"change\"\n\t>\n\t</u-picker>\n</template>\n\n<script>\n\tfunction times(n, iteratee) {\n\t let index = -1\n\t const result = Array(n < 0 ? 0 : n)\n\t while (++index < n) {\n\t result[index] = iteratee(index)\n\t }\n\t return result\n\t}\n\timport props from './props.js';\n\timport dayjs from '../../libs/util/dayjs.js';\n\t/**\n\t * DatetimePicker 时间日期选择器\n\t * @description 此选择器用于时间日期\n\t * @tutorial https://www.uviewui.com/components/datetimePicker.html\n\t * @property {Boolean}\t\t\tshow\t\t\t\t用于控制选择器的弹出与收起 ( 默认 false )\n\t * @property {Boolean}\t\t\tshowToolbar\t\t\t是否显示顶部的操作栏 ( 默认 true )\n\t * @property {String | Number}\tvalue\t\t\t\t绑定值\n\t * @property {String}\t\t\ttitle\t\t\t\t顶部标题\n\t * @property {String}\t\t\tmode\t\t\t\t展示格式 mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 ( 默认 ‘datetime )\n\t * @property {Number}\t\t\tmaxDate\t\t\t\t可选的最大时间 默认值为后10年\n\t * @property {Number}\t\t\tminDate\t\t\t\t可选的最小时间 默认值为前10年\n\t * @property {Number}\t\t\tminHour\t\t\t\t可选的最小小时,仅mode=time有效 ( 默认 0 )\n\t * @property {Number}\t\t\tmaxHour\t\t\t\t可选的最大小时,仅mode=time有效\t ( 默认 23 )\n\t * @property {Number}\t\t\tminMinute\t\t\t可选的最小分钟,仅mode=time有效\t ( 默认 0 )\n\t * @property {Number}\t\t\tmaxMinute\t\t\t可选的最大分钟,仅mode=time有效 ( 默认 59 )\n\t * @property {Function}\t\t\tfilter\t\t\t\t选项过滤函数\n\t * @property {Function}\t\t\tformatter\t\t\t选项格式化函数\n\t * @property {Boolean}\t\t\tloading\t\t\t\t是否显示加载中状态 ( 默认 false )\n\t * @property {String | Number}\titemHeight\t\t\t各列中,单个选项的高度 ( 默认 44 )\n\t * @property {String}\t\t\tcancelText\t\t\t取消按钮的文字 ( 默认 '取消' )\n\t * @property {String}\t\t\tconfirmText\t\t\t确认按钮的文字 ( 默认 '确认' )\n\t * @property {String}\t\t\tcancelColor\t\t\t取消按钮的颜色 ( 默认 '#909193' )\n\t * @property {String}\t\t\tconfirmColor\t\t确认按钮的颜色 ( 默认 '#3c9cff' )\n\t * @property {String | Number}\tvisibleItemCount\t每列中可见选项的数量 ( 默认 5 )\n\t * @property {Boolean}\t\t\tcloseOnClickOverlay\t是否允许点击遮罩关闭选择器 ( 默认 false )\n\t * @property {Array}\t\t\tdefaultIndex\t\t各列的默认索引\n\t * @event {Function} close 关闭选择器时触发\n\t * @event {Function} confirm 点击确定按钮,返回当前选择的值\n\t * @event {Function} change 当选择值变化时触发\n\t * @event {Function} cancel 点击取消按钮\n\t * @example <u-datetime-picker :show=\"show\" :value=\"value1\" mode=\"datetime\" ></u-datetime-picker>\n\t */\n\texport default {\n\t\tname: 'datetime-picker',\n\t\tmixins: [uni.$u.mpMixin, uni.$u.mixin, props],\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tcolumns: [],\n\t\t\t\tinnerDefaultIndex: [],\n\t\t\t\tinnerFormatter: (type, value) => value\n\t\t\t}\n\t\t},\n\t\twatch: {\n\t\t\tshow(newValue, oldValue) {\n\t\t\t\tif (newValue) {\n\t\t\t\t\tthis.updateColumnValue(this.innerValue)\n\t\t\t\t}\n\t\t\t},\n\t\t\tpropsChange() {\n\t\t\t\tthis.init()\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\t// 如果以下这些变量发生了变化,意味着需要重新初始化各列的值\n\t\t\tpropsChange() {\n\t\t\t\treturn [this.mode, this.maxDate, this.minDate, this.minHour, this.maxHour, this.minMinute, this.maxMinute, this.filter, ]\n\t\t\t}\n\t\t},\n\t\tmounted() {\n\t\t\tthis.init()\n\t\t},\n\t\tmethods: {\n\t\t\tinit() {\n\t\t\t\tthis.innerValue = this.correctValue(this.value)\n\t\t\t\tthis.updateColumnValue(this.innerValue)\n\t\t\t},\n\t\t\t// 在微信小程序中,不支持将函数当做props参数,故只能通过ref形式调用\n\t\t\tsetFormatter(e) {\n\t\t\t\tthis.innerFormatter = e\n\t\t\t},\n\t\t\t// 关闭选择器\n\t\t\tclose() {\n\t\t\t\tif (this.closeOnClickOverlay) {\n\t\t\t\t\tthis.$emit('close')\n\t\t\t\t}\n\t\t\t},\n\t\t\t// 点击工具栏的取消按钮\n\t\t\tcancel() {\n\t\t\t\tthis.$emit('cancel')\n\t\t\t},\n\t\t\t// 点击工具栏的确定按钮\n\t\t\tconfirm() {\n\t\t\t\tthis.$emit('confirm', {\n\t\t\t\t\tvalue: this.innerValue,\n\t\t\t\t\tmode: this.mode\n\t\t\t\t})\n\t\t\t\tthis.$emit('input', this.innerValue)\n\t\t\t},\n\t\t\t//用正则截取输出值,当出现多组数字时,抛出错误\n\t\t\tintercept(e,type){\n\t\t\t\tlet judge = e.match(/\\d+/g)\n\t\t\t\t//判断是否掺杂数字\n\t\t\t\tif(judge.length>1){\n\t\t\t\t\tuni.$u.error(\"请勿在过滤或格式化函数时添加数字\")\n\t\t\t\t\treturn 0\n\t\t\t\t}else if(type&&judge[0].length==4){//判断是否是年份\n\t\t\t\t\treturn judge[0]\n\t\t\t\t}else if(judge[0].length>2){\n\t\t\t\t\tuni.$u.error(\"请勿在过滤或格式化函数时添加数字\")\n\t\t\t\t\treturn 0\n\t\t\t\t}else{\n\t\t\t\t\treturn judge[0]\n\t\t\t\t}\n\t\t\t},\n\t\t\t// 列发生变化时触发\n\t\t\tchange(e) {\n\t\t\t\tconst { indexs, values } = e\n\t\t\t\tlet selectValue = ''\n\t\t\t\tif(this.mode === 'time') {\n\t\t\t\t\t// 根据value各列索引,从各列数组中,取出当前时间的选中值\n\t\t\t\t\tselectValue = `${this.intercept(values[0][indexs[0]])}:${this.intercept(values[1][indexs[1]])}`\n\t\t\t\t} else {\n\t\t\t\t\t// 将选择的值转为数值,比如'03'转为数值的3,'2019'转为数值的2019\n\t\t\t\t\tconst year = parseInt(this.intercept(values[0][indexs[0]],'year'))\n\t\t\t\t\tconst month = parseInt(this.intercept(values[1][indexs[1]]))\n\t\t\t\t\tlet date = parseInt(values[2] ? this.intercept(values[2][indexs[2]]) : 1)\n\t\t\t\t\tlet hour = 0, minute = 0\n\t\t\t\t\t// 此月份的最大天数\n\t\t\t\t\tconst maxDate = dayjs(`${year}-${month}`).daysInMonth()\n\t\t\t\t\t// year-month模式下,date不会出现在列中,设置为1,为了符合后边需要减1的需求\n\t\t\t\t\tif (this.mode === 'year-month') {\n\t\t\t\t\t date = 1\n\t\t\t\t\t}\n\t\t\t\t\t// 不允许超过maxDate值\n\t\t\t\t\tdate = Math.min(maxDate, date)\n\t\t\t\t\tif (this.mode === 'datetime') {\n\t\t\t\t\t hour = parseInt(this.intercept(values[3][indexs[3]]))\n\t\t\t\t\t minute = parseInt(this.intercept(values[4][indexs[4]]))\n\t\t\t\t\t}\n\t\t\t\t\t// 转为时间模式\n\t\t\t\t\tselectValue = Number(new Date(year, month - 1, date, hour, minute))\n\t\t\t\t}\n\t\t\t\t// 取出准确的合法值,防止超越边界的情况\n\t\t\t\tselectValue = this.correctValue(selectValue)\n\t\t\t\tthis.innerValue = selectValue\n\t\t\t\tthis.updateColumnValue(selectValue)\n\t\t\t\t// 发出change时间,value为当前选中的时间戳\n\t\t\t\tthis.$emit('change', {\n\t\t\t\t\tvalue: selectValue,\n\t\t\t\t\t// #ifndef MP-WEIXIN\n\t\t\t\t\t// 微信小程序不能传递this实例,会因为循环引用而报错\n\t\t\t\t\tpicker: this.$refs.picker,\n\t\t\t\t\t// #endif\n\t\t\t\t\tmode: this.mode\n\t\t\t\t})\n\t\t\t},\n\t\t\t// 更新各列的值,进行补0、格式化等操作\n\t\t\tupdateColumnValue(value) {\n\t\t\t\tthis.innerValue = value\n\t\t\t\tthis.updateColumns()\n\t\t\t\tthis.updateIndexs(value)\n\t\t\t},\n\t\t\t// 更新索引\n\t\t\tupdateIndexs(value) {\n\t\t\t\tlet values = []\n\t\t\t\tconst formatter = this.formatter || this.innerFormatter\n\t\t\t\tconst padZero = uni.$u.padZero\n\t\t\t\tif (this.mode === 'time') {\n\t\t\t\t\t// 将time模式的时间用:分隔成数组\n\t\t\t\t const timeArr = value.split(':')\n\t\t\t\t\t// 使用formatter格式化方法进行管道处理\n\t\t\t\t values = [formatter('hour', timeArr[0]), formatter('minute', timeArr[1])]\n\t\t\t\t} else {\n\t\t\t\t const date = new Date(value)\n\t\t\t\t values = [\n\t\t\t\t formatter('year', `${dayjs(value).year()}`),\n\t\t\t\t\t\t// 月份补0\n\t\t\t\t formatter('month', padZero(dayjs(value).month() + 1))\n\t\t\t\t ]\n\t\t\t\t if (this.mode === 'date') {\n\t\t\t\t\t\t// date模式,需要添加天列\n\t\t\t\t values.push(formatter('day', padZero(dayjs(value).date())))\n\t\t\t\t }\n\t\t\t\t if (this.mode === 'datetime') {\n\t\t\t\t\t\t// 数组的push方法,可以写入多个参数\n\t\t\t\t values.push(formatter('day', padZero(dayjs(value).date())), formatter('hour', padZero(dayjs(value).hour())), formatter('minute', padZero(dayjs(value).minute())))\n\t\t\t\t }\n\t\t\t\t}\n\n\t\t\t\t// 根据当前各列的所有值,从各列默认值中找到默认值在各列中的索引\n\t\t\t\tconst indexs = this.columns.map((column, index) => {\n\t\t\t\t\t// 通过取大值,可以保证不会出现找不到索引的-1情况\n\t\t\t\t\treturn Math.max(0, column.findIndex(item => item === values[index]))\n\t\t\t\t})\n\t\t\t\tthis.innerDefaultIndex = indexs\n\t\t\t},\n\t\t\t// 更新各列的值\n\t\t\tupdateColumns() {\n\t\t\t const formatter = this.formatter || this.innerFormatter\n\t\t\t\t// 获取各列的值,并且map后,对各列的具体值进行补0操作\n\t\t\t const results = this.getOriginColumns().map((column) => column.values.map((value) => formatter(column.type, value)))\n\t\t\t\tthis.columns = results\n\t\t\t},\n\t\t\tgetOriginColumns() {\n\t\t\t // 生成各列的值\n\t\t\t const results = this.getRanges().map(({ type, range }) => {\n\t\t\t let values = times(range[1] - range[0] + 1, (index) => {\n\t\t\t let value = range[0] + index\n\t\t\t value = type === 'year' ? `${value}` : uni.$u.padZero(value)\n\t\t\t return value\n\t\t\t })\n\t\t\t\t\t// 进行过滤\n\t\t\t if (this.filter) {\n\t\t\t values = this.filter(type, values)\n\t\t\t }\n\t\t\t return { type, values }\n\t\t\t })\n\t\t\t return results\n\t\t\t},\n\t\t\t// 通过最大值和最小值生成数组\n\t\t\tgenerateArray(start, end) {\n\t\t\t\treturn Array.from(new Array(end + 1).keys()).slice(start)\n\t\t\t},\n\t\t\t// 得出合法的时间\n\t\t\tcorrectValue(value) {\n\t\t\t\tconst isDateMode = this.mode !== 'time'\n\t\t\t\tif (isDateMode && !uni.$u.test.date(value)) {\n\t\t\t\t\t// 如果是日期类型,但是又没有设置合法的当前时间的话,使用最小时间为当前时间\n\t\t\t\t\tvalue = this.minDate\n\t\t\t\t} else if (!isDateMode && !value) {\n\t\t\t\t\t// 如果是时间类型,而又没有默认值的话,就用最小时间\n\t\t\t\t\tvalue = `${uni.$u.padZero(this.minHour)}:${uni.$u.padZero(this.minMinute)}`\n\t\t\t\t}\n\t\t\t\t// 时间类型\n\t\t\t\tif (!isDateMode) {\n\t\t\t\t\tif (String(value).indexOf(':') === -1) return uni.$u.error('时间错误,请传递如12:24的格式')\n\t\t\t\t\tlet [hour, minute] = value.split(':')\n\t\t\t\t\t// 对时间补零,同时控制在最小值和最大值之间\n\t\t\t\t\thour = uni.$u.padZero(uni.$u.range(this.minHour, this.maxHour, Number(hour)))\n\t\t\t\t\tminute = uni.$u.padZero(uni.$u.range(this.minMinute, this.maxMinute, Number(minute)))\n\t\t\t\t\treturn `${ hour }:${ minute }`\n\t\t\t\t} else {\n\t\t\t\t\t// 如果是日期格式,控制在最小日期和最大日期之间\n\t\t\t\t\tvalue = dayjs(value).isBefore(dayjs(this.minDate)) ? this.minDate : value\n\t\t\t\t\tvalue = dayjs(value).isAfter(dayjs(this.maxDate)) ? this.maxDate : value\n\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t},\n\t\t\t// 获取每列的最大和最小值\n\t\t\tgetRanges() {\n\t\t\t if (this.mode === 'time') {\n\t\t\t return [\n\t\t\t {\n\t\t\t type: 'hour',\n\t\t\t range: [this.minHour, this.maxHour],\n\t\t\t },\n\t\t\t {\n\t\t\t type: 'minute',\n\t\t\t range: [this.minMinute, this.maxMinute],\n\t\t\t },\n\t\t\t ];\n\t\t\t }\n\t\t\t const { maxYear, maxDate, maxMonth, maxHour, maxMinute, } = this.getBoundary('max', this.innerValue);\n\t\t\t const { minYear, minDate, minMonth, minHour, minMinute, } = this.getBoundary('min', this.innerValue);\n\t\t\t const result = [\n\t\t\t {\n\t\t\t type: 'year',\n\t\t\t range: [minYear, maxYear],\n\t\t\t },\n\t\t\t {\n\t\t\t type: 'month',\n\t\t\t range: [minMonth, maxMonth],\n\t\t\t },\n\t\t\t {\n\t\t\t type: 'day',\n\t\t\t range: [minDate, maxDate],\n\t\t\t },\n\t\t\t {\n\t\t\t type: 'hour',\n\t\t\t range: [minHour, maxHour],\n\t\t\t },\n\t\t\t {\n\t\t\t type: 'minute',\n\t\t\t range: [minMinute, maxMinute],\n\t\t\t },\n\t\t\t ];\n\t\t\t if (this.mode === 'date')\n\t\t\t result.splice(3, 2);\n\t\t\t if (this.mode === 'year-month')\n\t\t\t result.splice(2, 3);\n\t\t\t return result;\n\t\t\t},\n\t\t\t// 根据minDate、maxDate、minHour、maxHour等边界值,判断各列的开始和结束边界值\n\t\t\tgetBoundary(type, innerValue) {\n\t\t\t const value = new Date(innerValue)\n\t\t\t const boundary = new Date(this[`${type}Date`])\n\t\t\t const year = dayjs(boundary).year()\n\t\t\t let month = 1\n\t\t\t let date = 1\n\t\t\t let hour = 0\n\t\t\t let minute = 0\n\t\t\t if (type === 'max') {\n\t\t\t month = 12\n\t\t\t\t\t// 月份的天数\n\t\t\t date = dayjs(value).daysInMonth()\n\t\t\t hour = 23\n\t\t\t minute = 59\n\t\t\t }\n\t\t\t\t// 获取边界值,逻辑是:当年达到了边界值(最大或最小年),就检查月允许的最大和最小值,以此类推\n\t\t\t if (dayjs(value).year() === year) {\n\t\t\t month = dayjs(boundary).month() + 1\n\t\t\t if (dayjs(value).month() + 1 === month) {\n\t\t\t date = dayjs(boundary).date()\n\t\t\t if (dayjs(value).date() === date) {\n\t\t\t hour = dayjs(boundary).hour()\n\t\t\t if (dayjs(value).hour() === hour) {\n\t\t\t minute = dayjs(boundary).minute()\n\t\t\t }\n\t\t\t }\n\t\t\t }\n\t\t\t }\n\t\t\t return {\n\t\t\t [`${type}Year`]: year,\n\t\t\t [`${type}Month`]: month,\n\t\t\t [`${type}Date`]: date,\n\t\t\t [`${type}Hour`]: hour,\n\t\t\t [`${type}Minute`]: minute\n\t\t\t }\n\t\t\t},\n\t\t},\n\t}\n</script>\n\n<style lang=\"scss\" scoped>\n\t@import '../../libs/css/components.scss';\n</style>\n","import mod from \"-!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./u-datetime-picker.vue?vue&type=style&index=0&id=7d06fb79&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../../../../../HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./u-datetime-picker.vue?vue&type=style&index=0&id=7d06fb79&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1681276744475\n var cssReload = require(\"E:/HBuilderX/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"../../\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}