diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a08fb37..75e0a65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,10 +62,10 @@ packages: version: 0.6.3 dev: true - registry.npmmirror.com/@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz} + registry.npmmirror.com/@babel/helper-string-parser/7.21.5: + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz} name: '@babel/helper-string-parser' - version: 7.19.4 + version: 7.21.5 engines: {node: '>=6.9.0'} registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1: @@ -74,22 +74,22 @@ packages: version: 7.19.1 engines: {node: '>=6.9.0'} - registry.npmmirror.com/@babel/parser/7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.21.4.tgz} + registry.npmmirror.com/@babel/parser/7.21.9: + resolution: {integrity: sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.21.9.tgz} name: '@babel/parser' - version: 7.21.4 + version: 7.21.9 engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': registry.npmmirror.com/@babel/types/7.21.4 + '@babel/types': registry.npmmirror.com/@babel/types/7.21.5 - registry.npmmirror.com/@babel/types/7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.21.4.tgz} + registry.npmmirror.com/@babel/types/7.21.5: + resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.21.5.tgz} name: '@babel/types' - version: 7.21.4 + version: 7.21.5 engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': registry.npmmirror.com/@babel/helper-string-parser/7.19.4 + '@babel/helper-string-parser': registry.npmmirror.com/@babel/helper-string-parser/7.21.5 '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier/7.19.1 to-fast-properties: registry.npmmirror.com/to-fast-properties/2.0.0 @@ -139,10 +139,10 @@ packages: version: 1.2.6 dev: false - registry.npmmirror.com/@floating-ui/dom/1.2.7: - resolution: {integrity: sha512-DyqylONj1ZaBnzj+uBnVfzdjjCkFCL2aA9ESHLyUOGSqb03RpbLMImP1ekIQXYs4KLk9jAjJfZAU8hXfWSahEg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.2.7.tgz} + registry.npmmirror.com/@floating-ui/dom/1.2.8: + resolution: {integrity: sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.2.8.tgz} name: '@floating-ui/dom' - version: 1.2.7 + version: 1.2.8 dependencies: '@floating-ui/core': registry.npmmirror.com/@floating-ui/core/1.2.6 dev: false @@ -223,10 +223,10 @@ packages: version: 4.14.194 dev: false - registry.npmmirror.com/@types/node/18.16.2: - resolution: {integrity: sha512-GQW/JL/5Fz/0I8RpeBG9lKp0+aNcXEaVL71c0D2Q0QHDTFvlYKT7an0onCUXj85anv7b4/WesqdfchLc0jtsCg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-18.16.2.tgz} + registry.npmmirror.com/@types/node/20.2.3: + resolution: {integrity: sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-20.2.3.tgz} name: '@types/node' - version: 18.16.2 + version: 20.2.3 dev: true registry.npmmirror.com/@types/svgo/2.6.4: @@ -234,7 +234,7 @@ packages: name: '@types/svgo' version: 2.6.4 dependencies: - '@types/node': registry.npmmirror.com/@types/node/18.16.2 + '@types/node': registry.npmmirror.com/@types/node/20.2.3 dev: true registry.npmmirror.com/@types/web-bluetooth/0.0.16: @@ -261,7 +261,7 @@ packages: name: '@vue/compiler-core' version: 3.2.45 dependencies: - '@babel/parser': registry.npmmirror.com/@babel/parser/7.21.4 + '@babel/parser': registry.npmmirror.com/@babel/parser/7.21.9 '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45 estree-walker: registry.npmmirror.com/estree-walker/2.0.2 source-map: registry.npmmirror.com/source-map/0.6.1 @@ -279,7 +279,7 @@ packages: name: '@vue/compiler-sfc' version: 3.2.45 dependencies: - '@babel/parser': registry.npmmirror.com/@babel/parser/7.21.4 + '@babel/parser': registry.npmmirror.com/@babel/parser/7.21.9 '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.45 '@vue/compiler-dom': registry.npmmirror.com/@vue/compiler-dom/3.2.45 '@vue/compiler-ssr': registry.npmmirror.com/@vue/compiler-ssr/3.2.45 @@ -309,7 +309,7 @@ packages: name: '@vue/reactivity-transform' version: 3.2.45 dependencies: - '@babel/parser': registry.npmmirror.com/@babel/parser/7.21.4 + '@babel/parser': registry.npmmirror.com/@babel/parser/7.21.9 '@vue/compiler-core': registry.npmmirror.com/@vue/compiler-core/3.2.45 '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.45 estree-walker: registry.npmmirror.com/estree-walker/2.0.2 @@ -378,7 +378,7 @@ packages: '@types/web-bluetooth': registry.npmmirror.com/@types/web-bluetooth/0.0.16 '@vueuse/metadata': registry.npmmirror.com/@vueuse/metadata/9.5.0 '@vueuse/shared': registry.npmmirror.com/@vueuse/shared/9.5.0_vue@3.2.45 - vue-demi: registry.npmmirror.com/vue-demi/0.14.0_vue@3.2.45 + vue-demi: registry.npmmirror.com/vue-demi/0.14.5_vue@3.2.45 transitivePeerDependencies: - '@vue/composition-api' - vue @@ -394,7 +394,7 @@ packages: name: '@vueuse/shared' version: 9.5.0 dependencies: - vue-demi: registry.npmmirror.com/vue-demi/0.14.0_vue@3.2.45 + vue-demi: registry.npmmirror.com/vue-demi/0.14.5_vue@3.2.45 transitivePeerDependencies: - '@vue/composition-api' - vue @@ -598,7 +598,7 @@ packages: version: 1.0.2 dependencies: function-bind: registry.npmmirror.com/function-bind/1.1.1 - get-intrinsic: registry.npmmirror.com/get-intrinsic/1.2.0 + get-intrinsic: registry.npmmirror.com/get-intrinsic/1.2.1 dev: false registry.npmmirror.com/chalk/1.1.3: @@ -950,7 +950,7 @@ packages: dependencies: '@ctrl/tinycolor': registry.npmmirror.com/@ctrl/tinycolor/3.6.0 '@element-plus/icons-vue': registry.npmmirror.com/@element-plus/icons-vue/2.0.10_vue@3.2.45 - '@floating-ui/dom': registry.npmmirror.com/@floating-ui/dom/1.2.7 + '@floating-ui/dom': registry.npmmirror.com/@floating-ui/dom/1.2.8 '@popperjs/core': registry.npmmirror.com/@sxzz/popperjs-es/2.11.7 '@types/lodash': registry.npmmirror.com/@types/lodash/4.14.194 '@types/lodash-es': registry.npmmirror.com/@types/lodash-es/4.17.7 @@ -1475,13 +1475,14 @@ packages: engines: {node: '>=10'} dev: false - registry.npmmirror.com/get-intrinsic/1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz} + registry.npmmirror.com/get-intrinsic/1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz} name: get-intrinsic - version: 1.2.0 + version: 1.2.1 dependencies: function-bind: registry.npmmirror.com/function-bind/1.1.1 has: registry.npmmirror.com/has/1.0.3 + has-proto: registry.npmmirror.com/has-proto/1.0.1 has-symbols: registry.npmmirror.com/has-symbols/1.0.3 dev: false @@ -1535,7 +1536,14 @@ packages: name: has-property-descriptors version: 1.0.0 dependencies: - get-intrinsic: registry.npmmirror.com/get-intrinsic/1.2.0 + get-intrinsic: registry.npmmirror.com/get-intrinsic/1.2.1 + dev: false + + registry.npmmirror.com/has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz} + name: has-proto + version: 1.0.1 + engines: {node: '>= 0.4'} dev: false registry.npmmirror.com/has-symbols/1.0.3: @@ -1684,10 +1692,10 @@ packages: version: 1.1.6 dev: true - registry.npmmirror.com/is-core-module/2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.0.tgz} + registry.npmmirror.com/is-core-module/2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.1.tgz} name: is-core-module - version: 2.12.0 + version: 2.12.1 dependencies: has: registry.npmmirror.com/has/1.0.3 dev: true @@ -2102,15 +2110,15 @@ packages: is-extendable: registry.npmmirror.com/is-extendable/1.0.1 dev: true - registry.npmmirror.com/mlly/1.2.0: - resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mlly/-/mlly-1.2.0.tgz} + registry.npmmirror.com/mlly/1.3.0: + resolution: {integrity: sha512-HT5mcgIQKkOrZecOjOX3DJorTikWXwsBfpcr/MGBkhfWcjiqvnaL/9ppxvIUXfjT6xt4DVIAsN9fMUz1ev4bIw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mlly/-/mlly-1.3.0.tgz} name: mlly - version: 1.2.0 + version: 1.3.0 dependencies: acorn: registry.npmmirror.com/acorn/8.8.2 pathe: registry.npmmirror.com/pathe/1.1.0 - pkg-types: registry.npmmirror.com/pkg-types/1.0.2 - ufo: registry.npmmirror.com/ufo/1.1.1 + pkg-types: registry.npmmirror.com/pkg-types/1.0.3 + ufo: registry.npmmirror.com/ufo/1.1.2 dev: true registry.npmmirror.com/ms/2.0.0: @@ -2311,16 +2319,16 @@ packages: dependencies: '@vue/devtools-api': registry.npmmirror.com/@vue/devtools-api/6.5.0 vue: registry.npmmirror.com/vue/3.2.45 - vue-demi: registry.npmmirror.com/vue-demi/0.14.0_vue@3.2.45 + vue-demi: registry.npmmirror.com/vue-demi/0.14.5_vue@3.2.45 dev: false - registry.npmmirror.com/pkg-types/1.0.2: - resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.2.tgz} + registry.npmmirror.com/pkg-types/1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz} name: pkg-types - version: 1.0.2 + version: 1.0.3 dependencies: jsonc-parser: registry.npmmirror.com/jsonc-parser/3.2.0 - mlly: registry.npmmirror.com/mlly/1.2.0 + mlly: registry.npmmirror.com/mlly/1.3.0 pathe: registry.npmmirror.com/pathe/1.1.0 dev: true @@ -2527,7 +2535,7 @@ packages: version: 1.22.2 hasBin: true dependencies: - is-core-module: registry.npmmirror.com/is-core-module/2.12.0 + is-core-module: registry.npmmirror.com/is-core-module/2.12.1 path-parse: registry.npmmirror.com/path-parse/1.0.7 supports-preserve-symlinks-flag: registry.npmmirror.com/supports-preserve-symlinks-flag/1.0.0 dev: true @@ -2877,10 +2885,10 @@ packages: version: 2.3.0 dev: false - registry.npmmirror.com/ufo/1.1.1: - resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ufo/-/ufo-1.1.1.tgz} + registry.npmmirror.com/ufo/1.1.2: + resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ufo/-/ufo-1.1.2.tgz} name: ufo - version: 1.1.1 + version: 1.1.2 dev: true registry.npmmirror.com/unimport/0.7.1: @@ -2893,9 +2901,9 @@ packages: fast-glob: registry.npmmirror.com/fast-glob/3.2.12 local-pkg: registry.npmmirror.com/local-pkg/0.4.3 magic-string: registry.npmmirror.com/magic-string/0.26.7 - mlly: registry.npmmirror.com/mlly/1.2.0 + mlly: registry.npmmirror.com/mlly/1.3.0 pathe: registry.npmmirror.com/pathe/1.1.0 - pkg-types: registry.npmmirror.com/pkg-types/1.0.2 + pkg-types: registry.npmmirror.com/pkg-types/1.0.3 scule: registry.npmmirror.com/scule/1.0.0 strip-literal: registry.npmmirror.com/strip-literal/1.0.1 unplugin: registry.npmmirror.com/unplugin/1.3.1 @@ -3115,11 +3123,11 @@ packages: vue: registry.npmmirror.com/vue/3.2.45 dev: false - registry.npmmirror.com/vue-demi/0.14.0_vue@3.2.45: - resolution: {integrity: sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.0.tgz} - id: registry.npmmirror.com/vue-demi/0.14.0 + registry.npmmirror.com/vue-demi/0.14.5_vue@3.2.45: + resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz} + id: registry.npmmirror.com/vue-demi/0.14.5 name: vue-demi - version: 0.14.0 + version: 0.14.5 engines: {node: '>=12'} hasBin: true requiresBuild: true diff --git a/src/store/index.js b/src/store/index.js index dd1f1c4..9045e1d 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,3 +1,4 @@ +import { createPinia } from 'pinia'; import useAppStore from './modules/app'; import useDictStore from './modules/dict'; import usePermissionStore from './modules/permission'; diff --git a/src/utils/modules/prototypes.js b/src/utils/modules/prototypes.js index 2d14d73..77430ca 100644 --- a/src/utils/modules/prototypes.js +++ b/src/utils/modules/prototypes.js @@ -1,122 +1,136 @@ /** * 原型扩展库 */ -export default function(){}; +export default function() { -/** - * 将日期对象格式化成字符串 - * @param {String} format 格式支持:yyyy-MM-dd HH:mm:ss.S 默认:yyyy-MM-dd - */ -Date.prototype.format = function (format) { - format = format == null ? "yyyy-MM-dd" : format; - let o = { - "M+": this.getMonth() + 1, //month - "d+": this.getDate(), //day - "H+": this.getHours(), //hour - "m+": this.getMinutes(), //minute - "s+": this.getSeconds(), //second - "q+": Math.floor((this.getMonth() + 3) / 3), //quarter - "S": this.getMilliseconds() //millisecond - } + /** + * 将日期对象格式化成字符串 + * @param {String} format 格式支持:yyyy-MM-dd HH:mm:ss.S 默认:yyyy-MM-dd + */ + Date.prototype.format = function(format) { + format = format == null ? "yyyy-MM-dd" : format; + let o = { + "M+": this.getMonth() + 1, //month + "d+": this.getDate(), //day + "H+": this.getHours(), //hour + "m+": this.getMinutes(), //minute + "s+": this.getSeconds(), //second + "q+": Math.floor((this.getMonth() + 3) / 3), //quarter + "S": this.getMilliseconds() //millisecond + } - if (/(y+)/.test(format)) - format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); - for (var k in o) - if (new RegExp("(" + k + ")").test(format)) - format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); - return format; -} + if (/(y+)/.test(format)) + format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(format)) + format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]) + .length)); + return format; + } -Number.prototype.toDate = function () { - return new Date(this); -} + Number.prototype.toDate = function() { + return new Date(this); + } -Number.prototype.toChina = function () { - let number = this.toString(); - if (number.match(/\D/) || number.length >= 14) return; - let zhArray = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; // 数字对应中文 - let baseArray = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万']; //进位填充字符,第一位是 个位,可省略 - let string = String(number).split('').reverse().map((item, index) => { // 把数字切割成数组并倒序排列,然后进行遍历转成中文 - // 如果当前位为0,直接输出数字, 否则输出 数字 + 进位填充字符 - item = Number(item) == 0 ? zhArray[Number(item)] : zhArray[Number(item)] + baseArray[index]; - return item; - }).reverse().join(''); // 倒叙回来数组,拼接成字符串 - string = string.replace(/^一十/, '十'); // 如果以 一十 开头,可省略一 - string = string.replace(/零+/, '零'); // 如果有多位相邻的零,只写一个即可 - return string; -} -/** -* 将字符串格式化成日期对象 -* @param {String} format 格式支持:yyyy-MM-dd HH:mm:ss.S 默认:yyyy-MM-dd -*/ -String.prototype.toDate = function (format) { - if (/^\d+$/.test(this)) { - return new Date(Number(this)); - } - format = format == null ? "yyyy-MM-dd" : format; - var d = new Date(); - var o = { - "y+": "d.setYear(val)", //year - "M+": "d.setMonth(val-1)", //month - "d+": "d.setDate(val)", //day - "H+": "d.setHours(val)", //hour - "m+": "d.setMinutes(val)", //minute - "s+": "d.setSeconds(val)", //second - "S+": "d.setMilliSeconds(val)" //millisecond - } - var regx = format - for (var k in o) { - if (new RegExp("(" + k + ")").test(format)) - regx = regx.replace(new RegExp(k), "[0-9]+"); - } + Number.prototype.toChina = function() { + let number = this.toString(); + if (number.match(/\D/) || number.length >= 14) { + throw new Error("只能是正整数,且不能超过14位"); + } + let zhArray = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; // 数字对应中文 + let baseArray = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万']; //进位填充字符,第一位是 个位,可省略 + let string = String(number).split('').reverse().map((item, index) => { // 把数字切割成数组并倒序排列,然后进行遍历转成中文 + // 如果当前位为0,直接输出数字, 否则输出 数字 + 进位填充字符 + item = Number(item) == 0 ? zhArray[Number(item)] : zhArray[Number(item)] + baseArray[index]; + return item; + }).reverse().join(''); // 倒叙回来数组,拼接成字符串 + string = string.replace(/^一十/, '十'); // 如果以 一十 开头,可省略一 + string = string.replace(/零+/, '零'); // 如果有多位相邻的零,只写一个即可 + return string; + } + /** + * 将字符串格式化成日期对象 + * @param {String} format 格式支持:yyyy-MM-dd HH:mm:ss.S 默认:yyyy-MM-dd + */ + String.prototype.toDate = function(format) { + if (/^\d+$/.test(this)) { + return new Date(Number(this)); + } + format = format == null ? "yyyy-MM-dd" : format; + var d = new Date(); + var o = { + "y+": "d.setYear(val)", //year + "M+": "d.setMonth(val-1)", //month + "d+": "d.setDate(val)", //day + "H+": "d.setHours(val)", //hour + "m+": "d.setMinutes(val)", //minute + "s+": "d.setSeconds(val)", //second + "S+": "d.setMilliSeconds(val)" //millisecond + } + var regx = format + for (var k in o) { + if (new RegExp("(" + k + ")").test(format)) + regx = regx.replace(new RegExp(k), "[0-9]+"); + } + + if (!new RegExp("^" + regx + "$").test(this)) { + throw new Error("日期格式不正确:" + format); + } - if (!new RegExp("^" + regx + "$").test(this)) { - throw new Error("日期格式不正确:" + format); - } + for (var k in o) { + if (new RegExp("(" + k + ")").test(format)) { + var regx = format; + for (var temp in o) { + if (temp == k) { + regx = regx.replace(new RegExp(temp), "([0-9]+)"); + } else { + regx = regx.replace(new RegExp(temp), "[0-9]+"); + } - for (var k in o) { - if (new RegExp("(" + k + ")").test(format)) { - var regx = format; - for (var temp in o) { - if (temp == k) { - regx = regx.replace(new RegExp(temp), "([0-9]+)"); - } else { - regx = regx.replace(new RegExp(temp), "[0-9]+"); - } + } + var val = Number(this.replace(new RegExp("^" + regx + "$"), "$1")); + try { - } - var val = Number(this.replace(new RegExp("^" + regx + "$"), "$1")); - try { + if (k == "S+") { + d.setMilliseconds(val); + } else { + eval(o[k].replace("val", val)); + } + } catch (e) { + alert(e); + } + } else { + try { + var val = k == "M+" ? 1 : 0; + if (k == "S+") { + d.setMilliseconds(val); + } else { + eval(o[k].replace("val", val)); + } + } catch (e) { + alert(e); + } + } + } + return d; + } - if (k == "S+") { - d.setMilliseconds(val); - } else { - eval(o[k].replace("val", val)); - } - } catch (e) { alert(e); } - } else { - try { - var val = k == "M+" ? 1 : 0; - if (k == "S+") { - d.setMilliseconds(val); - } else { - eval(o[k].replace("val", val)); - } - } catch (e) { alert(e); } - } - } - return d; -} + String.prototype.toTime = function() { + if(!/^(\d{2,}):(\d{2}):(\d{2})$/.test(this)){ + throw new Error("含时分秒的字符串需符合格式:(\\d{2,}):(\\d{2}):(\\d{2})"); + } + let ts = this.split(":"); + return parseInt(ts[0])*3600+parseInt(ts[1])*60+parseInt(ts[2]); + // return eval(this.replace(/^(\d{2}):(\d{2}):(\d{2})$/, "$1*3600+$2*60+$3")); + } -String.prototype.toTime = function () { - return eval(this.replace(/^(\d{2}):(\d{2}):(\d{2})$/,"$1*3600+$2*60+$3")); -} + Number.prototype.toTime = function() { + let ss = this % 60; + let temp = (this - ss) / 60; + let mm = temp % 60; + let hh = (temp - mm) / 60; -Number.prototype.toTime = function(){ - let ss = this % 60; - let temp = (this - ss)/60; - let mm = temp % 60; - let hh = (temp - mm)/60; + return `${hh.toString().padStart(2,"0")}:${mm.toString().padStart(2,"0")}:${ss.toString().padStart(2,"0")}` + } - return `${hh.toString().padStart(2,"0")}:${mm.toString().padStart(2,"0")}:${ss.toString().padStart(2,"0")}` -} \ No newline at end of file +}; \ No newline at end of file