eoss 0.1.0-alpha.24 → 0.1.0-alpha.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/0.js +1 -1
- package/lib/1.js +1 -1
- package/lib/10.js +1 -1
- package/lib/11.js +1 -1
- package/lib/12.js +1 -1
- package/lib/13.js +1 -1
- package/lib/14.js +1 -1
- package/lib/15.js +1 -1
- package/lib/16.js +1 -1
- package/lib/17.js +1 -1
- package/lib/18.js +1 -1
- package/lib/19.js +1 -1
- package/lib/20.js +1 -1
- package/lib/21.js +1 -1
- package/lib/22.js +1 -1
- package/lib/23.js +1 -1
- package/lib/24.js +1 -1
- package/lib/25.js +1 -1
- package/lib/26.js +1 -1
- package/lib/27.js +1 -1
- package/lib/28.js +1 -1
- package/lib/29.js +1 -1
- package/lib/3.js +1 -1
- package/lib/30.js +1 -1
- package/lib/31.js +1 -1
- package/lib/32.js +1 -1
- package/lib/33.js +1 -1
- package/lib/34.js +1 -1
- package/lib/35.js +1 -1
- package/lib/36.js +1 -1
- package/lib/37.js +1 -1
- package/lib/38.js +1 -1
- package/lib/39.js +1 -1
- package/lib/4.js +1 -1
- package/lib/40.js +1 -1
- package/lib/41.js +1 -1
- package/lib/42.js +1 -1
- package/lib/43.js +1 -1
- package/lib/44.js +1 -1
- package/lib/45.js +1 -1
- package/lib/46.js +1 -1
- package/lib/47.js +1 -1
- package/lib/48.js +1 -1
- package/lib/49.js +1 -1
- package/lib/5.js +1 -1
- package/lib/50.js +1 -1
- package/lib/51.js +1 -1
- package/lib/52.js +1 -1
- package/lib/53.js +1 -1
- package/lib/54.js +1 -1
- package/lib/55.js +1 -1
- package/lib/56.js +1 -1
- package/lib/57.js +1 -1
- package/lib/58.js +1 -1
- package/lib/59.js +1 -1
- package/lib/6.js +1 -1
- package/lib/60.js +1 -1
- package/lib/61.js +1 -1
- package/lib/62.js +1 -1
- package/lib/63.js +1 -1
- package/lib/64.js +1 -1
- package/lib/65.js +1 -1
- package/lib/66.js +1 -1
- package/lib/67.js +1 -1
- package/lib/68.js +1 -1
- package/lib/69.js +1 -1
- package/lib/7.js +1 -1
- package/lib/70.js +1 -1
- package/lib/71.js +1 -1
- package/lib/72.js +1 -1
- package/lib/73.js +1 -1
- package/lib/74.js +1 -1
- package/lib/75.js +1 -1
- package/lib/76.js +1 -1
- package/lib/77.js +1 -1
- package/lib/78.js +1 -1
- package/lib/79.js +1 -1
- package/lib/8.js +1 -1
- package/lib/80.js +1 -1
- package/lib/81.js +1 -1
- package/lib/9.js +1 -1
- package/lib/account-login.js +1554 -1437
- package/lib/alert.js +2 -2
- package/lib/aside.js +2 -2
- package/lib/audit-trajectory.js +928 -0
- package/lib/autocomplete.js +1506 -1506
- package/lib/avatar.js +2 -2
- package/lib/backtop.js +2 -2
- package/lib/badge.js +2 -2
- package/lib/breadcrumb-item.js +4 -4
- package/lib/breadcrumb.js +4 -4
- package/lib/button-group.js +9 -9
- package/lib/button.js +2 -2
- package/lib/ca-login.js +1290 -1290
- package/lib/calendar.js +999 -999
- package/lib/card.js +2 -2
- package/lib/carousel-item.js +1275 -1275
- package/lib/carousel.js +515 -515
- package/lib/cascader-panel.js +1302 -1302
- package/lib/cascader.js +1561 -1561
- package/lib/checkbox-button.js +2 -2
- package/lib/checkbox-group.js +1694 -1610
- package/lib/checkbox.js +9 -42
- package/lib/col.js +2 -2
- package/lib/collapse-item.js +1117 -1054
- package/lib/collapse.js +1122 -1054
- package/lib/color-picker.js +11 -11
- package/lib/config/api.js +80 -1
- package/lib/container.js +2 -2
- package/lib/cron.js +2 -2
- package/lib/data-table.js +1446 -1319
- package/lib/date-picker.js +1515 -1515
- package/lib/dialog.js +1796 -1794
- package/lib/divider.js +2 -2
- package/lib/drawer.js +4 -4
- package/lib/dropdown-item.js +4 -4
- package/lib/dropdown-menu.js +6 -6
- package/lib/dropdown.js +1477 -1477
- package/lib/email-login.js +1544 -1427
- package/lib/empty.js +2 -2
- package/lib/eoss.common.js +52567 -41727
- package/lib/flip.js +2 -2
- package/lib/flow-group.js +1278 -1278
- package/lib/flow.js +1716 -1599
- package/lib/flows.js +1561 -1444
- package/lib/footer.js +2 -2
- package/lib/form-item.js +1285 -1285
- package/lib/form.js +1144 -1067
- package/lib/guide.js +620 -0
- package/lib/header.js +2 -2
- package/lib/icon.js +1505 -1388
- package/lib/icons.js +2 -2
- package/lib/image-viewer.js +1376 -1376
- package/lib/image.js +73 -73
- package/lib/index.js +1 -1
- package/lib/infinite-scroll.js +71 -71
- package/lib/input-number.js +6 -6
- package/lib/input.js +1284 -1284
- package/lib/link.js +2 -2
- package/lib/loading.js +5 -5
- package/lib/login.js +1749 -1619
- package/lib/lowcode.js +12381 -5094
- package/lib/main.js +4049 -3653
- package/lib/marquee.js +1279 -1279
- package/lib/menu-item-group.js +2 -2
- package/lib/menu-item.js +2 -2
- package/lib/menu.js +1796 -1796
- package/lib/message-box.js +2993 -2993
- package/lib/message.js +1389 -1389
- package/lib/notification.js +1487 -1487
- package/lib/option-group.js +2 -2
- package/lib/option.js +1392 -1392
- package/lib/page-header.js +2 -2
- package/lib/pagination.js +1301 -1301
- package/lib/phone-login.js +1529 -1412
- package/lib/popconfirm.js +6 -6
- package/lib/popover.js +1425 -1425
- package/lib/process-config.js +7674 -0
- package/lib/process-module.js +7080 -0
- package/lib/process-rule.js +8246 -0
- package/lib/progress.js +5 -5
- package/lib/qr-code.js +7 -7
- package/lib/qrcode-login.js +1609 -1492
- package/lib/radio-button.js +10 -21
- package/lib/radio-group.js +1714 -1626
- package/lib/radio.js +10 -25
- package/lib/rate.js +1387 -1387
- package/lib/row.js +2 -2
- package/lib/scrollbar.js +1374 -1374
- package/lib/select.js +2376 -2257
- package/lib/selector-panel.js +1706 -1651
- package/lib/selector.js +1241 -1134
- package/lib/slider.js +2 -2
- package/lib/step.js +1119 -1051
- package/lib/steps.js +1276 -1276
- package/lib/submenu.js +530 -530
- package/lib/switch.js +1277 -1277
- package/lib/tab-pane.js +2 -2
- package/lib/table-column.js +1278 -1278
- package/lib/table.js +1953 -1836
- package/lib/tabs.js +1283 -1283
- package/lib/tag.js +2 -2
- package/lib/theme-chalk/audit-trajectory.css +0 -0
- package/lib/theme-chalk/base.css +1 -1
- package/lib/theme-chalk/button-group.css +1 -1
- package/lib/theme-chalk/calendar.css +1 -1
- package/lib/theme-chalk/guide.css +1 -0
- package/lib/theme-chalk/icon.css +1 -1
- package/lib/theme-chalk/icons.css +1 -1
- package/lib/theme-chalk/index.css +1 -1
- package/lib/theme-chalk/lowcode-view.css +1 -0
- package/lib/theme-chalk/lowcode.css +1 -1
- package/lib/theme-chalk/main.css +1 -1
- package/lib/theme-chalk/pagination.css +1 -1
- package/lib/theme-chalk/process-config.css +0 -0
- package/lib/theme-chalk/process-module.css +0 -0
- package/lib/theme-chalk/process-rule.css +1 -0
- package/lib/theme-chalk/select-dropdown.css +1 -1
- package/lib/theme-chalk/select.css +1 -1
- package/lib/theme-chalk/tree.css +1 -1
- package/lib/theme-chalk/update-history.css +0 -0
- package/lib/theme-chalk/wujie.css +1 -0
- package/lib/time-picker.js +1302 -1302
- package/lib/time-select.js +1298 -1298
- package/lib/timeline-item.js +2 -2
- package/lib/timeline.js +2 -2
- package/lib/tips.js +1613 -1496
- package/lib/toolbar.js +6 -6
- package/lib/tooltip.js +1363 -1363
- package/lib/transfer.js +1293 -1293
- package/lib/tree-group.js +1505 -1388
- package/lib/tree.js +1637 -1520
- package/lib/update-history.js +883 -0
- package/lib/upload.js +1689 -1572
- package/lib/utils/ajax.js +3 -5
- package/lib/utils/frame.js +133 -0
- package/lib/wujie.js +5037 -0
- package/package.json +3 -2
- package/packages/audit-trajectory/index.js +5 -0
- package/packages/audit-trajectory/src/main.vue +99 -0
- package/packages/button/src/button-group.vue +1 -1
- package/packages/cascader/src/cascader.vue +1 -1
- package/packages/checkbox/src/checkbox.vue +9 -14
- package/packages/data-table/src/data-table.vue +13 -4
- package/packages/date-picker/src/picker.vue +1 -1
- package/packages/dialog/src/dialog.vue +2 -0
- package/packages/form/src/form-item-render.vue +14 -6
- package/packages/form/src/form.vue +2 -2
- package/packages/guide/index.js +8 -0
- package/packages/guide/src/directive.js +47 -0
- package/packages/guide/src/guide.vue +89 -0
- package/packages/guide/src/manager.js +133 -0
- package/packages/input/src/input.vue +1 -1
- package/packages/login/src/login.vue +47 -46
- package/packages/lowcode/src/aside.vue +43 -8
- package/packages/lowcode/src/attribute/bind.vue +447 -236
- package/packages/lowcode/src/attribute/dependency.vue +474 -267
- package/packages/lowcode/src/attribute/function.vue +389 -51
- package/packages/lowcode/src/attribute/javascript.vue +311 -0
- package/packages/lowcode/src/attribute/property.vue +257 -166
- package/packages/lowcode/src/attribute/styles.vue +116 -15
- package/packages/lowcode/src/attribute.vue +654 -46
- package/packages/lowcode/src/canvas.vue +361 -60
- package/packages/lowcode/src/editor.vue +15 -2
- package/packages/lowcode/src/iframe.vue +60 -0
- package/packages/lowcode/src/lowcode.vue +233 -21
- package/packages/lowcode/src/mixins/history.js +132 -0
- package/packages/lowcode/src/pages.vue +1 -53
- package/packages/lowcode/src/render.vue +381 -56
- package/packages/lowcode/src/source.vue +12 -5
- package/packages/lowcode/src/toolbar.vue +43 -20
- package/packages/lowcode/src/util/source-generator.js +531 -0
- package/packages/lowcode/src/{source-parser.js → util/source-parser.js} +86 -32
- package/packages/lowcode-view/index.js +5 -0
- package/packages/lowcode-view/src/Iframe.vue +55 -0
- package/packages/lowcode-view/src/Modulels.vue +239 -0
- package/packages/lowcode-view/src/render.vue +337 -0
- package/packages/lowcode-view/src/view.vue +763 -0
- package/packages/main/src/components/pages.vue +11 -2
- package/packages/main/src/event-center.js +160 -0
- package/packages/main/src/minxs.js +60 -90
- package/packages/process-config/index.js +5 -0
- package/packages/process-config/src/FormList.vue +180 -0
- package/packages/process-config/src/NodeConfig.vue +212 -0
- package/packages/process-config/src/NodeForm.vue +237 -0
- package/packages/process-config/src/main.vue +257 -0
- package/packages/process-module/index.js +5 -0
- package/packages/process-module/src/FormList.vue +177 -0
- package/packages/process-module/src/main.vue +233 -0
- package/packages/process-rule/index.js +5 -0
- package/packages/process-rule/src/FormList.vue +614 -0
- package/packages/process-rule/src/companyReportDetail.vue +92 -0
- package/packages/process-rule/src/main.vue +749 -0
- package/packages/progress/src/progress.vue +1 -1
- package/packages/radio/src/radio-button.vue +12 -9
- package/packages/radio/src/radio-group.vue +10 -14
- package/packages/radio/src/radio.vue +12 -11
- package/packages/select/src/option-tree.vue +4 -4
- package/packages/select/src/option.vue +2 -2
- package/packages/select/src/select.vue +34 -37
- package/packages/selector/src/selector.vue +10 -12
- package/packages/theme-chalk/src/audit-trajectory.scss +0 -0
- package/packages/theme-chalk/src/button-group.scss +7 -0
- package/packages/theme-chalk/src/common/var.scss +34 -10
- package/packages/theme-chalk/src/guide.scss +93 -0
- package/packages/theme-chalk/src/icon.scss +425 -426
- package/packages/theme-chalk/src/icons.scss +1 -1
- package/packages/theme-chalk/src/index.scss +7 -0
- package/packages/theme-chalk/src/lowcode-view.scss +288 -0
- package/packages/theme-chalk/src/lowcode.scss +59 -2
- package/packages/theme-chalk/src/process-config.scss +0 -0
- package/packages/theme-chalk/src/process-module.scss +0 -0
- package/packages/theme-chalk/src/process-rule.scss +57 -0
- package/packages/theme-chalk/src/select-dropdown.scss +1 -1
- package/packages/theme-chalk/src/tree.scss +1 -0
- package/packages/theme-chalk/src/update-history.scss +0 -0
- package/packages/theme-chalk/src/wujie.scss +5 -0
- package/packages/update-history/index.js +5 -0
- package/packages/update-history/src/main.vue +54 -0
- package/packages/wujie/index.js +10 -0
- package/packages/wujie/src/wujie.vue +205 -0
- package/src/components/field-render.vue +5 -0
- package/src/config/api.js +80 -0
- package/src/index.js +23 -2
- package/src/utils/ajax.js +2 -2
- package/src/utils/frame.js +102 -0
- package/packages/lowcode/src/source-generator.js +0 -316
- /package/packages/lowcode/src/{json-repair.js → util/json-repair.js} +0 -0
- /package/packages/lowcode/src/{monaco-vue-completions.js → util/monaco-vue-completions.js} +0 -0
package/lib/dropdown.js
CHANGED
|
@@ -82,7 +82,7 @@ module.exports =
|
|
|
82
82
|
/******/
|
|
83
83
|
/******/
|
|
84
84
|
/******/ // Load entry module and return exports
|
|
85
|
-
/******/ return __webpack_require__(__webpack_require__.s =
|
|
85
|
+
/******/ return __webpack_require__(__webpack_require__.s = 212);
|
|
86
86
|
/******/ })
|
|
87
87
|
/************************************************************************/
|
|
88
88
|
/******/ ({
|
|
@@ -91,32 +91,32 @@ module.exports =
|
|
|
91
91
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
92
92
|
|
|
93
93
|
"use strict";
|
|
94
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
95
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
96
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
97
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
98
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
94
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "L", function() { return noop; });
|
|
95
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return hasOwn; });
|
|
96
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V", function() { return toObject; });
|
|
97
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return getValueByPath; });
|
|
98
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return getPropByPath; });
|
|
99
99
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return generateId; });
|
|
100
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
100
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Z", function() { return valueEquals; });
|
|
101
101
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return escapeRegexpString; });
|
|
102
102
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return arrayFindIndex; });
|
|
103
103
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return arrayFind; });
|
|
104
104
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return coerceTruthyValueToArray; });
|
|
105
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
106
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
107
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
105
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "F", function() { return isIE; });
|
|
106
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "A", function() { return isEdge; });
|
|
107
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "E", function() { return isFirefox; });
|
|
108
108
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return autoprefixer; });
|
|
109
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
109
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "I", function() { return kebabCase; });
|
|
110
110
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return capitalize; });
|
|
111
111
|
/* unused harmony export looseEqual */
|
|
112
112
|
/* unused harmony export arrayEquals */
|
|
113
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
114
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
113
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "C", function() { return isEqual; });
|
|
114
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "N", function() { return rafThrottle; });
|
|
115
115
|
/* unused harmony export objToArray */
|
|
116
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
116
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "P", function() { return requestAnimationFrame; });
|
|
117
117
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return cancelAnimationFrame; });
|
|
118
118
|
/* unused harmony export debounce */
|
|
119
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
119
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "S", function() { return throttle; });
|
|
120
120
|
/* unused harmony export guid */
|
|
121
121
|
/* unused harmony export uid */
|
|
122
122
|
/* unused harmony export get */
|
|
@@ -124,7 +124,7 @@ module.exports =
|
|
|
124
124
|
/* unused harmony export cloneDeep */
|
|
125
125
|
/* unused harmony export grouping */
|
|
126
126
|
/* unused harmony export pager */
|
|
127
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
127
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return getWinTop; });
|
|
128
128
|
/* unused harmony export getFileType */
|
|
129
129
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return arrUnique; });
|
|
130
130
|
/* unused harmony export average */
|
|
@@ -142,60 +142,60 @@ module.exports =
|
|
|
142
142
|
/* unused harmony export exportXls */
|
|
143
143
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return extend; });
|
|
144
144
|
/* unused harmony export getObjectType */
|
|
145
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
145
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return getParams; });
|
|
146
146
|
/* unused harmony export getScript */
|
|
147
147
|
/* unused harmony export getStyle */
|
|
148
148
|
/* unused harmony export getTypeName */
|
|
149
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
149
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return getTypePrefix; });
|
|
150
150
|
/* unused harmony export getValues */
|
|
151
151
|
/* unused harmony export getZoom */
|
|
152
152
|
/* unused harmony export getLength */
|
|
153
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
153
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "T", function() { return timestampUrl; });
|
|
154
154
|
/* unused harmony export hasChars */
|
|
155
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
156
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
157
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
158
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
155
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return identical; });
|
|
156
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "z", function() { return indexOfObj; });
|
|
157
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "B", function() { return isEmpty; });
|
|
158
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "D", function() { return isExist; });
|
|
159
159
|
/* unused harmony export isFunction */
|
|
160
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
161
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
162
|
-
/* harmony export
|
|
163
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
160
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "G", function() { return isObjectEqual; });
|
|
161
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "H", function() { return joinUrl; });
|
|
162
|
+
/* unused harmony export getHorizontalMargin */
|
|
163
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "J", function() { return layoutWaterfall; });
|
|
164
164
|
/* unused harmony export loadJs */
|
|
165
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
165
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "K", function() { return loading; });
|
|
166
166
|
/* unused harmony export lowerCase */
|
|
167
167
|
/* unused harmony export overbrim */
|
|
168
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
168
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "M", function() { return queryParams; });
|
|
169
169
|
/* unused harmony export receiveMessage */
|
|
170
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
170
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "O", function() { return renderIcon; });
|
|
171
171
|
/* unused harmony export replenish */
|
|
172
172
|
/* unused harmony export rmbToCapital */
|
|
173
173
|
/* unused harmony export setScale */
|
|
174
174
|
/* unused harmony export sendMessage */
|
|
175
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
175
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Q", function() { return setFavicon; });
|
|
176
176
|
/* unused harmony export sum */
|
|
177
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
177
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "R", function() { return startWith; });
|
|
178
178
|
/* unused harmony export takeLeft */
|
|
179
179
|
/* unused harmony export takeRight */
|
|
180
180
|
/* unused harmony export trimWhitespace */
|
|
181
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
181
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "U", function() { return toFixed; });
|
|
182
182
|
/* unused harmony export toFunction */
|
|
183
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
183
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "W", function() { return updateTheme; });
|
|
184
184
|
/* unused harmony export upperType */
|
|
185
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
186
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
187
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
185
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "X", function() { return urlJoinParams; });
|
|
186
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Y", function() { return uuid; });
|
|
187
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bb", function() { return watermark; });
|
|
188
188
|
/* unused harmony export winTopOpen */
|
|
189
189
|
/* unused harmony export confirm */
|
|
190
190
|
/* unused harmony export success */
|
|
191
191
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return error; });
|
|
192
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
192
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ab", function() { return warning; });
|
|
193
193
|
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
|
|
194
194
|
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
|
|
195
195
|
/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
|
|
196
|
-
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
|
|
197
|
-
/* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
|
|
198
|
-
/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
|
|
196
|
+
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
|
|
197
|
+
/* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
|
|
198
|
+
/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2);
|
|
199
199
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
200
200
|
|
|
201
201
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
@@ -205,9 +205,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
|
|
|
205
205
|
|
|
206
206
|
|
|
207
207
|
|
|
208
|
-
var _get = __webpack_require__(
|
|
209
|
-
var _set = __webpack_require__(
|
|
210
|
-
var _cloneDeep = __webpack_require__(
|
|
208
|
+
var _get = __webpack_require__(19);
|
|
209
|
+
var _set = __webpack_require__(20);
|
|
210
|
+
var _cloneDeep = __webpack_require__(21);
|
|
211
211
|
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
212
212
|
|
|
213
213
|
// 导入date中的formatDate函数
|
|
@@ -2172,7 +2172,7 @@ var loadJs = function loadJs(url, callback) {
|
|
|
2172
2172
|
var loading = function loading() {
|
|
2173
2173
|
var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '请求中...';
|
|
2174
2174
|
|
|
2175
|
-
var Loading = __webpack_require__(
|
|
2175
|
+
var Loading = __webpack_require__(17).default;
|
|
2176
2176
|
return Loading.service({
|
|
2177
2177
|
text: text,
|
|
2178
2178
|
spinner: 'es-icon-jiazai',
|
|
@@ -3040,988 +3040,236 @@ var warning = function warning(content, _callback3) {
|
|
|
3040
3040
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
3041
3041
|
|
|
3042
3042
|
"use strict";
|
|
3043
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
3044
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "
|
|
3045
|
-
/*
|
|
3046
|
-
/* harmony export
|
|
3047
|
-
/* harmony export
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
}
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
}
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
}
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
return
|
|
3219
|
-
}
|
|
3220
|
-
|
|
3221
|
-
return
|
|
3222
|
-
}
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
}
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
}
|
|
3273
|
-
m: [twoDigits, function (d, v) {
|
|
3274
|
-
d.minute = v;
|
|
3275
|
-
}],
|
|
3276
|
-
s: [twoDigits, function (d, v) {
|
|
3277
|
-
d.second = v;
|
|
3278
|
-
}],
|
|
3279
|
-
yyyy: [fourDigits, function (d, v) {
|
|
3280
|
-
d.year = v;
|
|
3281
|
-
}],
|
|
3282
|
-
S: ['\\d', function (d, v) {
|
|
3283
|
-
d.millisecond = v * 100;
|
|
3284
|
-
}],
|
|
3285
|
-
SS: ['\\d{2}', function (d, v) {
|
|
3286
|
-
d.millisecond = v * 10;
|
|
3287
|
-
}],
|
|
3288
|
-
SSS: [threeDigits, function (d, v) {
|
|
3289
|
-
d.millisecond = v;
|
|
3290
|
-
}],
|
|
3291
|
-
D: [twoDigits, noop],
|
|
3292
|
-
ddd: [word, noop],
|
|
3293
|
-
MMM: [word, monthUpdate('monthNamesShort')],
|
|
3294
|
-
MMMM: [word, monthUpdate('monthNames')],
|
|
3295
|
-
a: [word, function (d, v) {
|
|
3296
|
-
const val = v.toLowerCase();
|
|
3297
|
-
if (val === '上午') {
|
|
3298
|
-
d.isPm = false;
|
|
3299
|
-
} else if (val === '下午') {
|
|
3300
|
-
d.isPm = true;
|
|
3301
|
-
}
|
|
3302
|
-
}],
|
|
3303
|
-
ZZ: ['[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z', function (d, v) {
|
|
3304
|
-
let parts = (v + '').match(/([+-]|\d\d)/gi), minutes;
|
|
3305
|
-
|
|
3306
|
-
if (parts) {
|
|
3307
|
-
minutes = +(parts[1] * 60) + parseInt(parts[2], 10);
|
|
3308
|
-
d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;
|
|
3309
|
-
}
|
|
3310
|
-
}]
|
|
3311
|
-
};
|
|
3312
|
-
parseFlags.dd = parseFlags.d;
|
|
3313
|
-
parseFlags.dddd = parseFlags.ddd;
|
|
3314
|
-
parseFlags.DD = parseFlags.D;
|
|
3315
|
-
parseFlags.mm = parseFlags.m;
|
|
3316
|
-
parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;
|
|
3317
|
-
parseFlags.MM = parseFlags.M;
|
|
3318
|
-
parseFlags.ss = parseFlags.s;
|
|
3319
|
-
parseFlags.A = parseFlags.a;
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
// Some common format strings
|
|
3323
|
-
fecha.masks = {
|
|
3324
|
-
default: 'ddd MMM dd yyyy HH:mm:ss',
|
|
3325
|
-
shortDate: 'M/D/yy',
|
|
3326
|
-
mediumDate: 'MMM d, yyyy',
|
|
3327
|
-
longDate: 'MMMM d, yyyy',
|
|
3328
|
-
fullDate: 'dddd, MMMM d, yyyy',
|
|
3329
|
-
shortTime: 'HH:mm',
|
|
3330
|
-
mediumTime: 'HH:mm:ss',
|
|
3331
|
-
longTime: 'HH:mm:ss.SSS'
|
|
3332
|
-
};
|
|
3333
|
-
|
|
3334
|
-
/***
|
|
3335
|
-
* Format a date
|
|
3336
|
-
* @method format
|
|
3337
|
-
* @param {Date|number} dateObj
|
|
3338
|
-
* @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'
|
|
3339
|
-
*/
|
|
3340
|
-
fecha.format = function (dateObj, mask) {
|
|
3341
|
-
if (typeof dateObj === 'number') {
|
|
3342
|
-
dateObj = new Date(dateObj);
|
|
3343
|
-
}
|
|
3344
|
-
|
|
3345
|
-
if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {
|
|
3346
|
-
throw new Error('Invalid Date in fecha.format');
|
|
3347
|
-
}
|
|
3348
|
-
|
|
3349
|
-
mask = fecha.masks[mask] || mask || fecha.masks['default'];
|
|
3350
|
-
|
|
3351
|
-
const literals = [];
|
|
3352
|
-
|
|
3353
|
-
// Make literals inactive by replacing them with ??
|
|
3354
|
-
mask = mask.replace(literal, function($0, $1) {
|
|
3355
|
-
literals.push($1);
|
|
3356
|
-
return '@@@';
|
|
3357
|
-
});
|
|
3358
|
-
// Apply formatting rules
|
|
3359
|
-
mask = mask.replace(token, function ($0) {
|
|
3360
|
-
return $0 in formatFlags ? formatFlags[$0](dateObj) : $0.slice(1, $0.length - 1);
|
|
3361
|
-
});
|
|
3362
|
-
// Inline literal values back into the formatted value
|
|
3363
|
-
return mask.replace(/@@@/g, function() {
|
|
3364
|
-
return literals.shift();
|
|
3365
|
-
});
|
|
3366
|
-
};
|
|
3367
|
-
|
|
3368
|
-
/**
|
|
3369
|
-
* Parse a date string into an object, changes - into /
|
|
3370
|
-
* @method parse
|
|
3371
|
-
* @param {string} dateStr Date string
|
|
3372
|
-
* @param {string} format Date parse format
|
|
3373
|
-
* @returns {Date|boolean}
|
|
3374
|
-
*/
|
|
3375
|
-
fecha.parse = function (dateStr, format) {
|
|
3376
|
-
if (typeof format !== 'string') {
|
|
3377
|
-
throw new Error('Invalid format in fecha.parse');
|
|
3378
|
-
}
|
|
3379
|
-
|
|
3380
|
-
format = fecha.masks[format] || format;
|
|
3381
|
-
|
|
3382
|
-
// Avoid regular expression denial of service, fail early for really long strings
|
|
3383
|
-
// https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS
|
|
3384
|
-
if (dateStr.length > 1000) {
|
|
3385
|
-
return null;
|
|
3386
|
-
}
|
|
3387
|
-
|
|
3388
|
-
const dateInfo = {};
|
|
3389
|
-
const parseInfo = [];
|
|
3390
|
-
const literals = [];
|
|
3391
|
-
format = format.replace(literal, function($0, $1) {
|
|
3392
|
-
literals.push($1);
|
|
3393
|
-
return '@@@';
|
|
3394
|
-
});
|
|
3395
|
-
let newFormat = regexEscape(format).replace(token, function ($0) {
|
|
3396
|
-
if (parseFlags[$0]) {
|
|
3397
|
-
const info = parseFlags[$0];
|
|
3398
|
-
parseInfo.push(info[1]);
|
|
3399
|
-
return '(' + info[0] + ')';
|
|
3400
|
-
}
|
|
3401
|
-
|
|
3402
|
-
return $0;
|
|
3403
|
-
});
|
|
3404
|
-
newFormat = newFormat.replace(/@@@/g, function() {
|
|
3405
|
-
return literals.shift();
|
|
3406
|
-
});
|
|
3407
|
-
const matches = dateStr.match(new RegExp(newFormat, 'i'));
|
|
3408
|
-
if (!matches) {
|
|
3409
|
-
return null;
|
|
3410
|
-
}
|
|
3411
|
-
|
|
3412
|
-
for (let i = 1; i < matches.length; i++) {
|
|
3413
|
-
parseInfo[i - 1](dateInfo, matches[i]);
|
|
3414
|
-
}
|
|
3415
|
-
|
|
3416
|
-
const today = new Date();
|
|
3417
|
-
if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {
|
|
3418
|
-
dateInfo.hour = +dateInfo.hour + 12;
|
|
3419
|
-
} else if (dateInfo.isPm === false && +dateInfo.hour === 12) {
|
|
3420
|
-
dateInfo.hour = 0;
|
|
3421
|
-
}
|
|
3422
|
-
|
|
3423
|
-
let date;
|
|
3424
|
-
if (dateInfo.timezoneOffset != null) {
|
|
3425
|
-
dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;
|
|
3426
|
-
date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
|
|
3427
|
-
dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));
|
|
3428
|
-
} else {
|
|
3429
|
-
date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
|
|
3430
|
-
dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);
|
|
3431
|
-
}
|
|
3432
|
-
return date;
|
|
3433
|
-
};
|
|
3434
|
-
|
|
3435
|
-
// 导出fecha对象
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
// 以下是从date-util.js合并的函数
|
|
3439
|
-
const newArray = function(start, end) {
|
|
3440
|
-
let result = [];
|
|
3441
|
-
for (let i = start; i <= end; i++) {
|
|
3442
|
-
result.push(i);
|
|
3443
|
-
}
|
|
3444
|
-
return result;
|
|
3445
|
-
};
|
|
3446
|
-
|
|
3447
|
-
const getSettings = () => {
|
|
3448
|
-
return {
|
|
3449
|
-
dayNamesShort: ['日', '一', '二', '三', '四', '五', '六'],
|
|
3450
|
-
dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
|
|
3451
|
-
monthNamesShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
|
|
3452
|
-
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
|
|
3453
|
-
amPm: ['上午', '下午']
|
|
3454
|
-
};
|
|
3455
|
-
};
|
|
3456
|
-
|
|
3457
|
-
const toDate = function(date) {
|
|
3458
|
-
return isDate(date) ? new Date(date) : null;
|
|
3459
|
-
};
|
|
3460
|
-
|
|
3461
|
-
const isDate = function(date) {
|
|
3462
|
-
if (date === null || date === undefined) return false;
|
|
3463
|
-
if (isNaN(new Date(date).getTime())) return false;
|
|
3464
|
-
if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`
|
|
3465
|
-
return true;
|
|
3466
|
-
};
|
|
3467
|
-
|
|
3468
|
-
const isDateObject = function(val) {
|
|
3469
|
-
return val instanceof Date;
|
|
3470
|
-
};
|
|
3471
|
-
|
|
3472
|
-
const formatDate = function (date, format = 'yyyy-MM-dd') {
|
|
3473
|
-
// 处理多种输入类型
|
|
3474
|
-
if (!date) return '';
|
|
3475
|
-
|
|
3476
|
-
// 如果是时间戳,转成日期对象
|
|
3477
|
-
if (typeof date === 'number') {
|
|
3478
|
-
date = new Date(date);
|
|
3479
|
-
}
|
|
3480
|
-
// 如果是字符串,转成日期对象
|
|
3481
|
-
if (typeof date === 'string') {
|
|
3482
|
-
date = new Date(date);
|
|
3483
|
-
}
|
|
3484
|
-
|
|
3485
|
-
// 调用toDate进一步验证和转换
|
|
3486
|
-
date = toDate(date);
|
|
3487
|
-
if (!date) return '';
|
|
3488
|
-
|
|
3489
|
-
// 兼容大写和小写的格式标记
|
|
3490
|
-
// 将大写的YYYY/MM/DD/HH/mm/ss转换为小写的yyyy/mm/dd/hh/mm/ss
|
|
3491
|
-
const lowercaseFormat = format
|
|
3492
|
-
.replace(/YYYY/g, 'yyyy')
|
|
3493
|
-
.replace(/D/g, 'd')
|
|
3494
|
-
|
|
3495
|
-
// 使用fecha库进行格式化,支持中文配置
|
|
3496
|
-
const str = fecha.format(date, lowercaseFormat, getSettings());
|
|
3497
|
-
return str;
|
|
3498
|
-
};
|
|
3499
|
-
|
|
3500
|
-
const parseDate = function(string, format) {
|
|
3501
|
-
return fecha.parse(string, format || 'yyyy-MM-dd', getSettings());
|
|
3502
|
-
};
|
|
3503
|
-
|
|
3504
|
-
const getDayCountOfMonth = function(year, month) {
|
|
3505
|
-
if (month === 3 || month === 5 || month === 8 || month === 10) {
|
|
3506
|
-
return 30;
|
|
3507
|
-
}
|
|
3508
|
-
|
|
3509
|
-
if (month === 1) {
|
|
3510
|
-
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
|
|
3511
|
-
return 29;
|
|
3512
|
-
} else {
|
|
3513
|
-
return 28;
|
|
3514
|
-
}
|
|
3515
|
-
}
|
|
3516
|
-
|
|
3517
|
-
return 31;
|
|
3518
|
-
};
|
|
3519
|
-
|
|
3520
|
-
const getDayCountOfYear = function(year) {
|
|
3521
|
-
const isLeapYear = year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);
|
|
3522
|
-
return isLeapYear ? 366 : 365;
|
|
3523
|
-
};
|
|
3524
|
-
|
|
3525
|
-
const getFirstDayOfMonth = function(date) {
|
|
3526
|
-
const temp = new Date(date.getTime());
|
|
3527
|
-
temp.setDate(1);
|
|
3528
|
-
return temp.getDay();
|
|
3529
|
-
};
|
|
3530
|
-
|
|
3531
|
-
// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript
|
|
3532
|
-
// {prev, next} Date should work for Daylight Saving Time
|
|
3533
|
-
// Adding 24 * 60 * 60 * 1000 does not work in the above scenario
|
|
3534
|
-
const prevDate = function(date, amount = 1) {
|
|
3535
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
|
|
3536
|
-
};
|
|
3537
|
-
|
|
3538
|
-
const nextDate = function(date, amount = 1) {
|
|
3539
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
|
|
3540
|
-
};
|
|
3541
|
-
|
|
3542
|
-
const getStartDateOfMonth = function(year, month) {
|
|
3543
|
-
const result = new Date(year, month, 1);
|
|
3544
|
-
const day = result.getDay();
|
|
3545
|
-
|
|
3546
|
-
if (day === 0) {
|
|
3547
|
-
return prevDate(result, 7);
|
|
3548
|
-
} else {
|
|
3549
|
-
return prevDate(result, day);
|
|
3550
|
-
}
|
|
3551
|
-
};
|
|
3552
|
-
|
|
3553
|
-
const getWeekNumber = function(date) {
|
|
3554
|
-
// 支持多种输入类型
|
|
3555
|
-
if (!date||!isDate(date)) {
|
|
3556
|
-
date = new Date();
|
|
3557
|
-
}
|
|
3558
|
-
if (typeof date === 'string') {
|
|
3559
|
-
date = new Date(date);
|
|
3560
|
-
}
|
|
3561
|
-
|
|
3562
|
-
// 验证日期有效性
|
|
3563
|
-
if (!isDate(date)) return null;
|
|
3564
|
-
|
|
3565
|
-
const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
|
|
3566
|
-
// 设置为最近的星期四:当前日期 + 4 - 当前星期数
|
|
3567
|
-
// 将星期日的星期数设为7
|
|
3568
|
-
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
|
|
3569
|
-
// 获取当年的第一天
|
|
3570
|
-
const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
3571
|
-
// 计算到最近的星期四的完整周数
|
|
3572
|
-
const weekNo = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
|
|
3573
|
-
// 返回周数
|
|
3574
|
-
return weekNo;
|
|
3575
|
-
};
|
|
3576
|
-
|
|
3577
|
-
const getRangeHours = function(ranges) {
|
|
3578
|
-
const hours = [];
|
|
3579
|
-
let disabledHours = [];
|
|
3580
|
-
|
|
3581
|
-
(ranges || []).forEach(range => {
|
|
3582
|
-
const value = range.map(date => date.getHours());
|
|
3583
|
-
|
|
3584
|
-
disabledHours = disabledHours.concat(newArray(value[0], value[1]));
|
|
3585
|
-
});
|
|
3586
|
-
|
|
3587
|
-
if (disabledHours.length) {
|
|
3588
|
-
for (let i = 0; i < 24; i++) {
|
|
3589
|
-
hours[i] = disabledHours.indexOf(i) === -1;
|
|
3590
|
-
}
|
|
3591
|
-
} else {
|
|
3592
|
-
for (let i = 0; i < 24; i++) {
|
|
3593
|
-
hours[i] = false;
|
|
3594
|
-
}
|
|
3595
|
-
}
|
|
3596
|
-
|
|
3597
|
-
return hours;
|
|
3598
|
-
};
|
|
3599
|
-
|
|
3600
|
-
const getPrevMonthLastDays = (date, amount) => {
|
|
3601
|
-
if (amount <= 0) return [];
|
|
3602
|
-
const temp = new Date(date.getTime());
|
|
3603
|
-
temp.setDate(0);
|
|
3604
|
-
const lastDay = temp.getDate();
|
|
3605
|
-
return range(amount).map((_, index) => lastDay - (amount - index - 1));
|
|
3606
|
-
};
|
|
3607
|
-
|
|
3608
|
-
const getMonthDays = (date) => {
|
|
3609
|
-
const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);
|
|
3610
|
-
const days = temp.getDate();
|
|
3611
|
-
return range(days).map((_, index) => index + 1);
|
|
3612
|
-
};
|
|
3613
|
-
|
|
3614
|
-
function setRangeData(arr, start, end, value) {
|
|
3615
|
-
for (let i = start; i < end; i++) {
|
|
3616
|
-
arr[i] = value;
|
|
3617
|
-
}
|
|
3618
|
-
}
|
|
3619
|
-
|
|
3620
|
-
const getRangeMinutes = function(ranges, hour) {
|
|
3621
|
-
const minutes = new Array(60);
|
|
3622
|
-
|
|
3623
|
-
if (ranges.length > 0) {
|
|
3624
|
-
ranges.forEach(range => {
|
|
3625
|
-
const start = range[0];
|
|
3626
|
-
const end = range[1];
|
|
3627
|
-
const startHour = start.getHours();
|
|
3628
|
-
const startMinute = start.getMinutes();
|
|
3629
|
-
const endHour = end.getHours();
|
|
3630
|
-
const endMinute = end.getMinutes();
|
|
3631
|
-
if (startHour === hour && endHour !== hour) {
|
|
3632
|
-
setRangeData(minutes, startMinute, 60, true);
|
|
3633
|
-
} else if (startHour === hour && endHour === hour) {
|
|
3634
|
-
setRangeData(minutes, startMinute, endMinute + 1, true);
|
|
3635
|
-
} else if (startHour !== hour && endHour === hour) {
|
|
3636
|
-
setRangeData(minutes, 0, endMinute + 1, true);
|
|
3637
|
-
} else if (startHour < hour && endHour > hour) {
|
|
3638
|
-
setRangeData(minutes, 0, 60, true);
|
|
3639
|
-
}
|
|
3640
|
-
});
|
|
3641
|
-
} else {
|
|
3642
|
-
setRangeData(minutes, 0, 60, true);
|
|
3643
|
-
}
|
|
3644
|
-
return minutes;
|
|
3645
|
-
};
|
|
3646
|
-
|
|
3647
|
-
const range = function(n) {
|
|
3648
|
-
// see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n
|
|
3649
|
-
return Array.apply(null, {length: n}).map((_, n) => n);
|
|
3650
|
-
};
|
|
3651
|
-
|
|
3652
|
-
const modifyDate = function(date, y, m, d) {
|
|
3653
|
-
return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
|
|
3654
|
-
};
|
|
3655
|
-
|
|
3656
|
-
const modifyTime = function(date, h, m, s) {
|
|
3657
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());
|
|
3658
|
-
};
|
|
3659
|
-
|
|
3660
|
-
const modifyWithTimeString = (date, time) => {
|
|
3661
|
-
if (date == null || !time) {
|
|
3662
|
-
return date;
|
|
3663
|
-
}
|
|
3664
|
-
time = parseDate(time, 'HH:mm:ss');
|
|
3665
|
-
return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());
|
|
3666
|
-
};
|
|
3667
|
-
|
|
3668
|
-
const clearTime = function(date) {
|
|
3669
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
3670
|
-
};
|
|
3671
|
-
|
|
3672
|
-
const clearMilliseconds = function(date) {
|
|
3673
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);
|
|
3674
|
-
};
|
|
3675
|
-
|
|
3676
|
-
const limitTimeRange = function(date, ranges, format = 'HH:mm:ss') {
|
|
3677
|
-
// TODO: refactory a more elegant solution
|
|
3678
|
-
if (ranges.length === 0) return date;
|
|
3679
|
-
const normalizeDate = date => fecha.parse(fecha.format(date, format), format);
|
|
3680
|
-
const ndate = normalizeDate(date);
|
|
3681
|
-
const nranges = ranges.map(range => range.map(normalizeDate));
|
|
3682
|
-
if (nranges.some(nrange => ndate >= nrange[0] && ndate <= nrange[1])) return date;
|
|
3683
|
-
|
|
3684
|
-
let minDate = nranges[0][0];
|
|
3685
|
-
let maxDate = nranges[0][0];
|
|
3686
|
-
|
|
3687
|
-
nranges.forEach(nrange => {
|
|
3688
|
-
minDate = new Date(Math.min(nrange[0], minDate));
|
|
3689
|
-
maxDate = new Date(Math.max(nrange[1], minDate));
|
|
3690
|
-
});
|
|
3691
|
-
|
|
3692
|
-
const ret = ndate < minDate ? minDate : maxDate;
|
|
3693
|
-
// preserve Year/Month/Date
|
|
3694
|
-
return modifyDate(
|
|
3695
|
-
ret,
|
|
3696
|
-
date.getFullYear(),
|
|
3697
|
-
date.getMonth(),
|
|
3698
|
-
date.getDate()
|
|
3699
|
-
);
|
|
3700
|
-
};
|
|
3701
|
-
|
|
3702
|
-
const timeWithinRange = function(date, selectableRange, format) {
|
|
3703
|
-
const limitedDate = limitTimeRange(date, selectableRange, format);
|
|
3704
|
-
return limitedDate.getTime() === date.getTime();
|
|
3705
|
-
};
|
|
3706
|
-
|
|
3707
|
-
const changeYearMonthAndClampDate = function(date, year, month) {
|
|
3708
|
-
// clamp date to the number of days in `year`, `month`
|
|
3709
|
-
// eg: (2010-1-31, 2010, 2) => 2010-2-28
|
|
3710
|
-
const monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));
|
|
3711
|
-
return modifyDate(date, year, month, monthDate);
|
|
3712
|
-
};
|
|
3713
|
-
|
|
3714
|
-
const prevMonth = function(date) {
|
|
3715
|
-
const year = date.getFullYear();
|
|
3716
|
-
const month = date.getMonth();
|
|
3717
|
-
return month === 0
|
|
3718
|
-
? changeYearMonthAndClampDate(date, year - 1, 11)
|
|
3719
|
-
: changeYearMonthAndClampDate(date, year, month - 1);
|
|
3720
|
-
};
|
|
3721
|
-
|
|
3722
|
-
const nextMonth = function(date) {
|
|
3723
|
-
const year = date.getFullYear();
|
|
3724
|
-
const month = date.getMonth();
|
|
3725
|
-
return month === 11
|
|
3726
|
-
? changeYearMonthAndClampDate(date, year + 1, 0)
|
|
3727
|
-
: changeYearMonthAndClampDate(date, year, month + 1);
|
|
3728
|
-
};
|
|
3729
|
-
|
|
3730
|
-
const prevYear = function(date, amount = 1) {
|
|
3731
|
-
const year = date.getFullYear();
|
|
3732
|
-
const month = date.getMonth();
|
|
3733
|
-
return changeYearMonthAndClampDate(date, year - amount, month);
|
|
3734
|
-
};
|
|
3735
|
-
|
|
3736
|
-
const nextYear = function(date, amount = 1) {
|
|
3737
|
-
const year = date.getFullYear();
|
|
3738
|
-
const month = date.getMonth();
|
|
3739
|
-
return changeYearMonthAndClampDate(date, year + amount, month);
|
|
3740
|
-
};
|
|
3741
|
-
|
|
3742
|
-
const extractDateFormat = function(format) {
|
|
3743
|
-
return format
|
|
3744
|
-
.replace(/\W?m{1,2}|\W?ZZ/g, '')
|
|
3745
|
-
.replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '')
|
|
3746
|
-
.trim();
|
|
3747
|
-
};
|
|
3748
|
-
|
|
3749
|
-
const extractTimeFormat = function(format) {
|
|
3750
|
-
return format
|
|
3751
|
-
.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '')
|
|
3752
|
-
.trim();
|
|
3753
|
-
};
|
|
3754
|
-
|
|
3755
|
-
const validateRangeInOneMonth = function(start, end) {
|
|
3756
|
-
return (start.getMonth() === end.getMonth()) && (start.getFullYear() === end.getFullYear());
|
|
3757
|
-
};
|
|
3758
|
-
|
|
3759
|
-
/**
|
|
3760
|
-
* 计算两个日期之间的工作日数量(不包括周末和节假日)
|
|
3761
|
-
* @param {string} start_date - 开始日期字符串,格式为 "YYYY-MM-DD"
|
|
3762
|
-
* @param {string} end_date - 结束日期字符串,格式为 "YYYY-MM-DD"
|
|
3763
|
-
* @param {Array<string>} holidays - 假期日期字符串数组,格式为 "YYYY-MM-DD"
|
|
3764
|
-
* @returns {number} 工作日数量
|
|
3765
|
-
*/
|
|
3766
|
-
const calculateNetworkDays = function (start_date, end_date, holidays = []) {
|
|
3767
|
-
if (typeof start_date !== 'string' || typeof end_date !== 'string') {
|
|
3768
|
-
throw new Error(
|
|
3769
|
-
"Invalid input. Please provide valid date strings in the format 'YYYY-MM-DD'."
|
|
3770
|
-
);
|
|
3771
|
-
}
|
|
3772
|
-
|
|
3773
|
-
const startDateObj = new Date(start_date);
|
|
3774
|
-
const endDateObj = new Date(end_date);
|
|
3775
|
-
|
|
3776
|
-
if (isNaN(startDateObj.getTime()) || isNaN(endDateObj.getTime())) {
|
|
3777
|
-
throw new Error(
|
|
3778
|
-
"Invalid date format. Please provide valid date strings in the format 'YYYY-MM-DD'."
|
|
3779
|
-
);
|
|
3780
|
-
}
|
|
3781
|
-
|
|
3782
|
-
if (startDateObj > endDateObj) {
|
|
3783
|
-
throw new Error('Start date should be earlier than or equal to end date.');
|
|
3784
|
-
}
|
|
3785
|
-
|
|
3786
|
-
let workdays = 0;
|
|
3787
|
-
|
|
3788
|
-
// Iterate through each day in the date range
|
|
3789
|
-
for (
|
|
3790
|
-
let currentDate = new Date(startDateObj);
|
|
3791
|
-
currentDate <= endDateObj;
|
|
3792
|
-
currentDate.setDate(currentDate.getDate() + 1)
|
|
3793
|
-
) {
|
|
3794
|
-
// Check if the current day is a weekend (Saturday or Sunday)
|
|
3795
|
-
const isWeekend = currentDate.getDay() === 0 || currentDate.getDay() === 6;
|
|
3796
|
-
|
|
3797
|
-
// Check if the current day is a holiday
|
|
3798
|
-
const isHoliday = holidays.some((holiday) => {
|
|
3799
|
-
const holidayDate = new Date(holiday);
|
|
3800
|
-
return currentDate.toDateString() === holidayDate.toDateString();
|
|
3801
|
-
});
|
|
3802
|
-
|
|
3803
|
-
// If it's a workday (not a weekend or holiday), increment the workdays count
|
|
3804
|
-
if (!isWeekend && !isHoliday) {
|
|
3805
|
-
workdays++;
|
|
3806
|
-
}
|
|
3807
|
-
}
|
|
3808
|
-
|
|
3809
|
-
return workdays;
|
|
3810
|
-
};
|
|
3811
|
-
|
|
3812
|
-
/**
|
|
3813
|
-
* 日期加减天数
|
|
3814
|
-
* @param {string} start_date - 起始日期字符串,格式为 "YYYY-MM-DD"
|
|
3815
|
-
* @param {number} days - 要加上或减去的天数,正数表示加,负数表示减
|
|
3816
|
-
* @returns {string} 结果日期,格式为 "YYYY-MM-DD"
|
|
3817
|
-
*/
|
|
3818
|
-
const dateAddDays = function (start_date, days) {
|
|
3819
|
-
if (typeof start_date !== 'string' || !Number.isInteger(days)) {
|
|
3820
|
-
throw new Error(
|
|
3821
|
-
"Invalid input. Please provide a valid date string in the format 'YYYY-MM-DD' and a valid integer for the number of days."
|
|
3822
|
-
);
|
|
3823
|
-
}
|
|
3824
|
-
|
|
3825
|
-
const startDateObj = new Date(start_date);
|
|
3826
|
-
if (isNaN(startDateObj.getTime())) {
|
|
3827
|
-
throw new Error(
|
|
3828
|
-
"Invalid date format. Please provide a valid date string in the format 'YYYY-MM-DD'."
|
|
3829
|
-
);
|
|
3830
|
-
}
|
|
3831
|
-
|
|
3832
|
-
const resultDateObj = new Date(startDateObj);
|
|
3833
|
-
resultDateObj.setDate(resultDateObj.getDate() + days);
|
|
3834
|
-
|
|
3835
|
-
const resultYear = resultDateObj.getFullYear();
|
|
3836
|
-
const resultMonth = String(resultDateObj.getMonth() + 1).padStart(2, '0');
|
|
3837
|
-
const resultDay = String(resultDateObj.getDate()).padStart(2, '0');
|
|
3838
|
-
|
|
3839
|
-
return `${resultYear}-${resultMonth}-${resultDay}`;
|
|
3840
|
-
};
|
|
3841
|
-
|
|
3842
|
-
/**
|
|
3843
|
-
* 计算两个日期之间的差值
|
|
3844
|
-
* @date 2023年12月14日
|
|
3845
|
-
* @param {String} start_date - 起始日期字符串
|
|
3846
|
-
* @param {String} end_date - 结束日期字符串
|
|
3847
|
-
* @param {String} unit - 单位:year/month/day
|
|
3848
|
-
* @returns {Number} 差值
|
|
3849
|
-
*/
|
|
3850
|
-
const dateDiff = function (start_date, end_date, unit = 'day') {
|
|
3851
|
-
// Assuming date strings are in "YYYY-MM-DD" format
|
|
3852
|
-
var startDate = new Date(start_date);
|
|
3853
|
-
var endDate = new Date(end_date);
|
|
3854
|
-
|
|
3855
|
-
// If the date is invalid, return 0
|
|
3856
|
-
if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
|
|
3857
|
-
return 0;
|
|
3858
|
-
}
|
|
3859
|
-
|
|
3860
|
-
if (unit === 'year') {
|
|
3861
|
-
return endDate.getFullYear() - startDate.getFullYear();
|
|
3862
|
-
} else if (unit === 'month') {
|
|
3863
|
-
return (
|
|
3864
|
-
(endDate.getFullYear() - startDate.getFullYear()) * 12 +
|
|
3865
|
-
(endDate.getMonth() - startDate.getMonth())
|
|
3866
|
-
);
|
|
3867
|
-
} else {
|
|
3868
|
-
// Default to day
|
|
3869
|
-
var timeDifference = endDate - startDate;
|
|
3870
|
-
// Calculate days (86400000 milliseconds per day)
|
|
3871
|
-
return Math.floor(timeDifference / 86400000);
|
|
3872
|
-
}
|
|
3873
|
-
};
|
|
3874
|
-
|
|
3875
|
-
/**
|
|
3876
|
-
* 获取月份中的日期
|
|
3877
|
-
* @param {string} date - 日期字符串,格式为 "YYYY-MM-DD"
|
|
3878
|
-
* @returns {number} 月份中的日期(1-31)
|
|
3879
|
-
*/
|
|
3880
|
-
const dayOfMonth = function (date) {
|
|
3881
|
-
if (typeof date !== 'string') {
|
|
3882
|
-
throw new Error(
|
|
3883
|
-
"Invalid input. Please provide a valid date string in the format 'YYYY-MM-DD'."
|
|
3884
|
-
);
|
|
3885
|
-
}
|
|
3886
|
-
|
|
3887
|
-
const dateObj = new Date(date);
|
|
3888
|
-
if (isNaN(dateObj.getTime())) {
|
|
3889
|
-
throw new Error(
|
|
3890
|
-
"Invalid date format. Please provide a valid date string in the format 'YYYY-MM-DD'."
|
|
3891
|
-
);
|
|
3892
|
-
}
|
|
3893
|
-
|
|
3894
|
-
return dateObj.getDate();
|
|
3895
|
-
};
|
|
3896
|
-
|
|
3897
|
-
/**
|
|
3898
|
-
* 获取当前日期
|
|
3899
|
-
* @date 2022年5月7日
|
|
3900
|
-
* @param {string} format - 日期格式,默认为'YYYY-MM-DD'
|
|
3901
|
-
* @returns {string} 当前日期的格式化字符串
|
|
3902
|
-
*/
|
|
3903
|
-
const getCurrentDate = function (format = 'YYYY-MM-DD') {
|
|
3904
|
-
return formatDate(new Date(), format);
|
|
3905
|
-
};
|
|
3906
|
-
|
|
3907
|
-
/**
|
|
3908
|
-
* 获取当前日期时间
|
|
3909
|
-
* @date 2022年5月7日
|
|
3910
|
-
* @param {string} format - 日期时间格式,默认为'YYYY-MM-DD HH:mm:ss'
|
|
3911
|
-
* @returns {string} 当前日期时间的格式化字符串
|
|
3912
|
-
*/
|
|
3913
|
-
const getCurrentDateTime = function (format = 'YYYY-MM-DD HH:mm:ss') {
|
|
3914
|
-
return formatDate(new Date(), format);
|
|
3915
|
-
};
|
|
3916
|
-
|
|
3917
|
-
/**
|
|
3918
|
-
* 获取小时
|
|
3919
|
-
* @date 2022年5月7日
|
|
3920
|
-
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
3921
|
-
* @returns {number} 小时数(0-23)
|
|
3922
|
-
*/
|
|
3923
|
-
const getHour = function (date) {
|
|
3924
|
-
if (!date) {
|
|
3925
|
-
return new Date().getHours();
|
|
3926
|
-
}
|
|
3927
|
-
if (typeof date === 'string') {
|
|
3928
|
-
date = new Date(date);
|
|
3929
|
-
}
|
|
3930
|
-
return date.getHours();
|
|
3931
|
-
};
|
|
3932
|
-
|
|
3933
|
-
/**
|
|
3934
|
-
* 获取分钟
|
|
3935
|
-
* @date 2022年5月7日
|
|
3936
|
-
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
3937
|
-
* @returns {number} 分钟数(0-59)
|
|
3938
|
-
*/
|
|
3939
|
-
const getMinute = function (date) {
|
|
3940
|
-
if (!date) {
|
|
3941
|
-
return new Date().getMinutes();
|
|
3942
|
-
}
|
|
3943
|
-
if (typeof date === 'string') {
|
|
3944
|
-
date = new Date(date);
|
|
3945
|
-
}
|
|
3946
|
-
return date.getMinutes();
|
|
3947
|
-
};
|
|
3948
|
-
|
|
3949
|
-
/**
|
|
3950
|
-
* 获取月份
|
|
3951
|
-
* @date 2022年5月7日
|
|
3952
|
-
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
3953
|
-
* @returns {number} 月份数(1-12)
|
|
3954
|
-
*/
|
|
3955
|
-
const getMonth = function (date) {
|
|
3956
|
-
if (!date) {
|
|
3957
|
-
return new Date().getMonth() + 1;
|
|
3958
|
-
}
|
|
3959
|
-
if (typeof date === 'string') {
|
|
3960
|
-
date = new Date(date);
|
|
3961
|
-
}
|
|
3962
|
-
return date.getMonth() + 1;
|
|
3963
|
-
};
|
|
3964
|
-
|
|
3965
|
-
/**
|
|
3966
|
-
* 获取秒
|
|
3967
|
-
* @date 2022年5月7日
|
|
3968
|
-
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
3969
|
-
* @returns {number} 秒数(0-59)
|
|
3970
|
-
*/
|
|
3971
|
-
const getSecond = function (date) {
|
|
3972
|
-
if (!date) {
|
|
3973
|
-
return new Date().getSeconds();
|
|
3974
|
-
}
|
|
3975
|
-
if (typeof date === 'string') {
|
|
3976
|
-
date = new Date(date);
|
|
3977
|
-
}
|
|
3978
|
-
return date.getSeconds();
|
|
3979
|
-
};
|
|
3980
|
-
|
|
3981
|
-
/**
|
|
3982
|
-
* 获取星期几
|
|
3983
|
-
* @date 2022年5月7日
|
|
3984
|
-
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
3985
|
-
* @returns {number} 星期几(0-6,0表示星期日)
|
|
3986
|
-
*/
|
|
3987
|
-
const getWeekday = function (date) {
|
|
3988
|
-
if (!date) {
|
|
3989
|
-
return new Date().getDay();
|
|
3990
|
-
}
|
|
3991
|
-
if (typeof date === 'string') {
|
|
3992
|
-
date = new Date(date);
|
|
3993
|
-
}
|
|
3994
|
-
return date.getDay();
|
|
3995
|
-
};
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
/**
|
|
3999
|
-
* @desc 获取上午/下午/晚上
|
|
4000
|
-
* @author huangbo
|
|
4001
|
-
* @date 2022年5月7日
|
|
4002
|
-
* @param {String} [time] - 时间
|
|
4003
|
-
**/
|
|
4004
|
-
const timeCycle = function (time) {
|
|
4005
|
-
let hour = 0;
|
|
4006
|
-
if (!time) {
|
|
4007
|
-
hour = new Date().getHours();
|
|
4008
|
-
} else if (typeof time === 'string') {
|
|
4009
|
-
// 从时间字符串中提取小时
|
|
4010
|
-
const match = time.match(/^(\d{1,2})/);
|
|
4011
|
-
if (match) {
|
|
4012
|
-
hour = parseInt(match[1], 10);
|
|
4013
|
-
}
|
|
4014
|
-
} else if (typeof time === 'number') {
|
|
4015
|
-
hour = time;
|
|
4016
|
-
}
|
|
4017
|
-
// 判断时间段
|
|
4018
|
-
if (hour >= 5 && hour < 12) {
|
|
4019
|
-
return '上午';
|
|
4020
|
-
} else if (hour >= 12 && hour < 18) {
|
|
4021
|
-
return '下午';
|
|
4022
|
-
} else {
|
|
4023
|
-
return '晚上';
|
|
4024
|
-
}
|
|
3043
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return setStorage; });
|
|
3044
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getStorage; });
|
|
3045
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return removeStorage; });
|
|
3046
|
+
/* unused harmony export setCookie */
|
|
3047
|
+
/* unused harmony export getCookie */
|
|
3048
|
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
3049
|
+
|
|
3050
|
+
/**
|
|
3051
|
+
* setStorage
|
|
3052
|
+
* @desc:设置本地储存数据
|
|
3053
|
+
* @author huangbo
|
|
3054
|
+
* @date 2022年5月7日
|
|
3055
|
+
* @param {String|Object} [key] - 数据的名称或包含type、key、value的对象
|
|
3056
|
+
* @param {String} [value] - 数据的值(当第一个参数为字符串时使用)
|
|
3057
|
+
**/
|
|
3058
|
+
var setStorage = function setStorage(key, value) {
|
|
3059
|
+
// 解析参数,支持两种调用方式:setStorage(key, value) 和 setStorage({type, key, value})
|
|
3060
|
+
var type = void 0,
|
|
3061
|
+
finalKey = void 0,
|
|
3062
|
+
finalValue = void 0;
|
|
3063
|
+
|
|
3064
|
+
if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) === 'object' && key !== null) {
|
|
3065
|
+
// 对象调用方式:setStorage({type, key, value})
|
|
3066
|
+
type = key.type;
|
|
3067
|
+
finalKey = key.key;
|
|
3068
|
+
finalValue = key.value;
|
|
3069
|
+
} else {
|
|
3070
|
+
// 字符串调用方式:setStorage(key, value)
|
|
3071
|
+
type = getStorage('storageType');
|
|
3072
|
+
finalKey = key;
|
|
3073
|
+
finalValue = value;
|
|
3074
|
+
}
|
|
3075
|
+
|
|
3076
|
+
// 使用默认存储类型如果未指定
|
|
3077
|
+
type = type || getStorage('storageType');
|
|
3078
|
+
|
|
3079
|
+
// 获取存储对象
|
|
3080
|
+
var storage = type === 'localStorage' ? localStorage : sessionStorage;
|
|
3081
|
+
|
|
3082
|
+
// 处理不同类型的key
|
|
3083
|
+
if (typeof finalKey === 'string') {
|
|
3084
|
+
// 单个字符串key
|
|
3085
|
+
var storedValue = (typeof finalValue === 'undefined' ? 'undefined' : _typeof(finalValue)) === 'object' ? JSON.stringify(finalValue) : finalValue;
|
|
3086
|
+
storage.setItem(finalKey, storedValue);
|
|
3087
|
+
if (finalKey === 'token') {
|
|
3088
|
+
setCookie('token', storedValue);
|
|
3089
|
+
}
|
|
3090
|
+
} else if (Array.isArray(finalKey)) {
|
|
3091
|
+
// 数组key,为多个key设置同一个value
|
|
3092
|
+
var _storedValue = (typeof finalValue === 'undefined' ? 'undefined' : _typeof(finalValue)) === 'object' ? JSON.stringify(finalValue) : finalValue;
|
|
3093
|
+
for (var i = 0; i < finalKey.length; i++) {
|
|
3094
|
+
storage.setItem(finalKey[i], _storedValue);
|
|
3095
|
+
if (finalKey[i] === 'token') {
|
|
3096
|
+
setCookie('token', _storedValue);
|
|
3097
|
+
}
|
|
3098
|
+
}
|
|
3099
|
+
} else if ((typeof finalKey === 'undefined' ? 'undefined' : _typeof(finalKey)) === 'object' && finalKey !== null) {
|
|
3100
|
+
// 对象key,对象的属性名称作为key,属性值作为value
|
|
3101
|
+
for (var k in finalKey) {
|
|
3102
|
+
if (Object.prototype.hasOwnProperty.call(finalKey, k)) {
|
|
3103
|
+
var _storedValue2 = _typeof(finalKey[k]) === 'object' ? JSON.stringify(finalKey[k]) : finalKey[k];
|
|
3104
|
+
storage.setItem(k, _storedValue2);
|
|
3105
|
+
if (k === 'token') {
|
|
3106
|
+
setCookie('token', _storedValue2);
|
|
3107
|
+
}
|
|
3108
|
+
}
|
|
3109
|
+
}
|
|
3110
|
+
}
|
|
3111
|
+
};
|
|
3112
|
+
|
|
3113
|
+
/**
|
|
3114
|
+
* getStorage
|
|
3115
|
+
* @desc:获取本地储存数据
|
|
3116
|
+
* @author huangbo
|
|
3117
|
+
* @date 2022年5月7日
|
|
3118
|
+
* @param {String} [key] - 获取的名称
|
|
3119
|
+
**/
|
|
3120
|
+
var getStorage = function getStorage(key) {
|
|
3121
|
+
if (key) {
|
|
3122
|
+
var res = sessionStorage.getItem(key) || localStorage.getItem(key);
|
|
3123
|
+
if (!res && key === 'token') {
|
|
3124
|
+
res = getCookie('token');
|
|
3125
|
+
}
|
|
3126
|
+
if (key === 'host' && !res) {
|
|
3127
|
+
res = '';
|
|
3128
|
+
}
|
|
3129
|
+
return res;
|
|
3130
|
+
}
|
|
3131
|
+
var defaults = {};
|
|
3132
|
+
var token = sessionStorage.getItem('token') || localStorage.getItem('token') || getCookie('token');
|
|
3133
|
+
var ssId = sessionStorage.getItem('ssId') || localStorage.getItem('ssId') || getCookie('ssId');
|
|
3134
|
+
|
|
3135
|
+
var deviceUnique = sessionStorage.getItem('deviceUnique') || localStorage.getItem('deviceUnique') || getCookie('deviceUnique');
|
|
3136
|
+
if (token) {
|
|
3137
|
+
defaults.Authorization = token;
|
|
3138
|
+
}
|
|
3139
|
+
if (ssId) {
|
|
3140
|
+
defaults.ssId = ssId;
|
|
3141
|
+
}
|
|
3142
|
+
if (deviceUnique) {
|
|
3143
|
+
defaults.deviceUnique = deviceUnique;
|
|
3144
|
+
}
|
|
3145
|
+
return defaults;
|
|
3146
|
+
};
|
|
3147
|
+
|
|
3148
|
+
/**
|
|
3149
|
+
* removeStorage
|
|
3150
|
+
* @desc:删除本地储存数据
|
|
3151
|
+
* @author huangbo
|
|
3152
|
+
* @date 2022年5月7日
|
|
3153
|
+
* @param {String, Array} [key] - 获取的名称
|
|
3154
|
+
**/
|
|
3155
|
+
var removeStorage = function removeStorage(key) {
|
|
3156
|
+
if (Array.isArray(key)) {
|
|
3157
|
+
for (var i = 0; i < key.length; i++) {
|
|
3158
|
+
sessionStorage.removeItem(key[i]);
|
|
3159
|
+
localStorage.removeItem(key[i]);
|
|
3160
|
+
if (key[i] === 'token') {
|
|
3161
|
+
removeCookie('token');
|
|
3162
|
+
}
|
|
3163
|
+
}
|
|
3164
|
+
} else if (key) {
|
|
3165
|
+
sessionStorage.removeItem(key);
|
|
3166
|
+
localStorage.removeItem(key);
|
|
3167
|
+
if (key === 'token') {
|
|
3168
|
+
removeCookie('token');
|
|
3169
|
+
}
|
|
3170
|
+
} else {
|
|
3171
|
+
sessionStorage.clear();
|
|
3172
|
+
localStorage.clear();
|
|
3173
|
+
removeCookie('token');
|
|
3174
|
+
}
|
|
3175
|
+
};
|
|
3176
|
+
|
|
3177
|
+
/**
|
|
3178
|
+
* setCookie
|
|
3179
|
+
* @desc 设置cookie
|
|
3180
|
+
* @author huangbo
|
|
3181
|
+
* @param {string} [name] cookie名称
|
|
3182
|
+
* @param {string} [value] cookie值
|
|
3183
|
+
* @param {boolean} [isSession] 是否是会话cookie
|
|
3184
|
+
**/
|
|
3185
|
+
var setCookie = function setCookie(name, value) {
|
|
3186
|
+
var isSession = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
3187
|
+
var time = arguments[3];
|
|
3188
|
+
|
|
3189
|
+
try {
|
|
3190
|
+
var cookieParts = [encodeURIComponent(name) + '=' + encodeURIComponent(value), 'path=/' // 仅保留path设置,确保全站访问
|
|
3191
|
+
];
|
|
3192
|
+
// 会话/持久Cookie设置
|
|
3193
|
+
if (!isSession) {
|
|
3194
|
+
if (/MSIE|Trident/.test(navigator.userAgent)) {
|
|
3195
|
+
// IE使用expires
|
|
3196
|
+
var date = new Date();
|
|
3197
|
+
date.setTime(date.getTime() + (time || 7 * 24 * 60 * 60 * 1000));
|
|
3198
|
+
cookieParts.push('expires=' + date.toUTCString());
|
|
3199
|
+
} else {
|
|
3200
|
+
// 其他浏览器使用max-age
|
|
3201
|
+
cookieParts.push('max-age=' + (time || 7 * 24 * 60 * 60));
|
|
3202
|
+
}
|
|
3203
|
+
}
|
|
3204
|
+
// 内核兼容处理
|
|
3205
|
+
if (/MSIE|Trident/.test(navigator.userAgent)) {
|
|
3206
|
+
// IE特殊处理:添加P3P协议头
|
|
3207
|
+
cookieParts.push('P3P=CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
|
|
3208
|
+
} else {
|
|
3209
|
+
// 现代浏览器设置
|
|
3210
|
+
cookieParts.push('samesite=lax');
|
|
3211
|
+
if (window.location.protocol === 'https:') {
|
|
3212
|
+
cookieParts.push('secure');
|
|
3213
|
+
}
|
|
3214
|
+
}
|
|
3215
|
+
|
|
3216
|
+
// 设置Cookie
|
|
3217
|
+
document.cookie = cookieParts.join('; ');
|
|
3218
|
+
return true;
|
|
3219
|
+
} catch (e) {
|
|
3220
|
+
console.error('Cookie设置失败:', e);
|
|
3221
|
+
return false;
|
|
3222
|
+
}
|
|
3223
|
+
};
|
|
3224
|
+
|
|
3225
|
+
/**
|
|
3226
|
+
* getCookie
|
|
3227
|
+
* @desc 获取cookie中指定名称的值
|
|
3228
|
+
* @author huangbo
|
|
3229
|
+
* @param {string} [name] cookie名称
|
|
3230
|
+
**/
|
|
3231
|
+
var getCookie = function getCookie(name) {
|
|
3232
|
+
var cookies = document.cookie.split(';');
|
|
3233
|
+
for (var _iterator = cookies, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
3234
|
+
var _ref;
|
|
3235
|
+
|
|
3236
|
+
if (_isArray) {
|
|
3237
|
+
if (_i >= _iterator.length) break;
|
|
3238
|
+
_ref = _iterator[_i++];
|
|
3239
|
+
} else {
|
|
3240
|
+
_i = _iterator.next();
|
|
3241
|
+
if (_i.done) break;
|
|
3242
|
+
_ref = _i.value;
|
|
3243
|
+
}
|
|
3244
|
+
|
|
3245
|
+
var cookie = _ref;
|
|
3246
|
+
|
|
3247
|
+
var _cookie$trim$split = cookie.trim().split('='),
|
|
3248
|
+
cookieName = _cookie$trim$split[0],
|
|
3249
|
+
cookieValue = _cookie$trim$split[1];
|
|
3250
|
+
|
|
3251
|
+
if (decodeURIComponent(cookieName) === name) {
|
|
3252
|
+
return decodeURIComponent(cookieValue);
|
|
3253
|
+
}
|
|
3254
|
+
}
|
|
3255
|
+
return null;
|
|
3256
|
+
};
|
|
3257
|
+
|
|
3258
|
+
/**
|
|
3259
|
+
* removeCookie
|
|
3260
|
+
* @desc:删除cookie
|
|
3261
|
+
* @author huangbo
|
|
3262
|
+
* @date 2022年5月7日
|
|
3263
|
+
* @param {String, Array} [key] - 获取的名称
|
|
3264
|
+
**/
|
|
3265
|
+
var removeCookie = function removeCookie(key) {
|
|
3266
|
+
if (Array.isArray(key)) {
|
|
3267
|
+
for (var i = 0; i < key.length; i++) {
|
|
3268
|
+
document.cookie = encodeURIComponent(key[i]) + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
|
|
3269
|
+
}
|
|
3270
|
+
} else {
|
|
3271
|
+
document.cookie = encodeURIComponent(key) + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
|
|
3272
|
+
}
|
|
4025
3273
|
};
|
|
4026
3274
|
|
|
4027
3275
|
/***/ }),
|
|
@@ -4129,7 +3377,7 @@ var getColor = function getColor($color, $n) {
|
|
|
4129
3377
|
var getLightness = function getLightness($v, $i, $isLight) {
|
|
4130
3378
|
var $value = $isLight ? $v + $brightnessStep1 * $i : $v - $brightnessStep2 * $i;
|
|
4131
3379
|
$value = $value < 1 ? $value : 1;
|
|
4132
|
-
return Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* toFixed */ "
|
|
3380
|
+
return Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* toFixed */ "U"])($value, 2);
|
|
4133
3381
|
};
|
|
4134
3382
|
|
|
4135
3383
|
/**
|
|
@@ -4153,7 +3401,7 @@ var getSaturation = function getSaturation($s, $i, $isLight) {
|
|
|
4153
3401
|
$saturation = 0.1;
|
|
4154
3402
|
}
|
|
4155
3403
|
$saturation = $saturation > 0.06 ? $saturation : 0.06;
|
|
4156
|
-
return Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* toFixed */ "
|
|
3404
|
+
return Object(_util__WEBPACK_IMPORTED_MODULE_0__[/* toFixed */ "U"])($saturation, 2);
|
|
4157
3405
|
};
|
|
4158
3406
|
|
|
4159
3407
|
/**
|
|
@@ -4256,146 +3504,1036 @@ var getRgb = function getRgb($color) {
|
|
|
4256
3504
|
$color = colorNew;
|
|
4257
3505
|
}
|
|
4258
3506
|
// 处理六位的颜色值,转为RGB
|
|
4259
|
-
for (var _i = 1; _i < 7; _i += 2) {
|
|
4260
|
-
rgb.push(parseInt('0x' + $color.slice(_i, _i + 2), 16));
|
|
4261
|
-
}
|
|
4262
|
-
} else {
|
|
4263
|
-
rgb = $color.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',');
|
|
4264
|
-
}
|
|
4265
|
-
return rgb;
|
|
4266
|
-
};
|
|
4267
|
-
|
|
4268
|
-
/***/ }),
|
|
4269
|
-
|
|
4270
|
-
/***/ 18:
|
|
4271
|
-
/***/ (function(module, exports) {
|
|
4272
|
-
|
|
4273
|
-
module.exports = require("eoss/lib/loading");
|
|
4274
|
-
|
|
4275
|
-
/***/ }),
|
|
4276
|
-
|
|
4277
|
-
/***/ 19:
|
|
4278
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
4279
|
-
|
|
4280
|
-
"use strict";
|
|
4281
|
-
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
|
|
4282
|
-
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
|
|
4283
|
-
/* harmony import */ var eoss_src_utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4287
|
-
var nodeList = [];
|
|
4288
|
-
var ctx = '@@clickoutsideContext';
|
|
4289
|
-
|
|
4290
|
-
var startClick = void 0;
|
|
4291
|
-
var seed = 0;
|
|
4292
|
-
|
|
4293
|
-
!vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && Object(eoss_src_utils_dom__WEBPACK_IMPORTED_MODULE_1__[/* on */ "g"])(document, 'mousedown', function (e) {
|
|
4294
|
-
return startClick = e;
|
|
4295
|
-
});
|
|
4296
|
-
|
|
4297
|
-
!vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && Object(eoss_src_utils_dom__WEBPACK_IMPORTED_MODULE_1__[/* on */ "g"])(document, 'mouseup', function (e) {
|
|
4298
|
-
nodeList.forEach(function (node) {
|
|
4299
|
-
return node[ctx].documentHandler(e, startClick);
|
|
4300
|
-
});
|
|
4301
|
-
});
|
|
4302
|
-
|
|
4303
|
-
function createDocumentHandler(el, binding, vnode) {
|
|
4304
|
-
return function () {
|
|
4305
|
-
var mouseup = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
4306
|
-
var mousedown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
4307
|
-
|
|
4308
|
-
if (!vnode || !vnode.context || !mouseup.target || !mousedown.target || el.contains(mouseup.target) || el.contains(mousedown.target) || el === mouseup.target) {
|
|
4309
|
-
return;
|
|
4310
|
-
}
|
|
4311
|
-
|
|
4312
|
-
var context = vnode.context;
|
|
4313
|
-
|
|
4314
|
-
// 检查点击是否在 popperElm 内部,即使它已经被添加到 document.body 中
|
|
4315
|
-
if (context.popperElm) {
|
|
4316
|
-
try {
|
|
4317
|
-
if (context.popperElm.contains(mouseup.target) || context.popperElm.contains(mousedown.target)) {
|
|
4318
|
-
return;
|
|
4319
|
-
}
|
|
4320
|
-
} catch (e) {
|
|
4321
|
-
// 如果 popperElm 已经被销毁,忽略错误
|
|
4322
|
-
}
|
|
4323
|
-
}
|
|
4324
|
-
|
|
4325
|
-
// 检查是否有其他相关的 popper 元素
|
|
4326
|
-
if (context.popper) {
|
|
4327
|
-
try {
|
|
4328
|
-
if (context.popper.contains(mouseup.target) || context.popper.contains(mousedown.target)) {
|
|
4329
|
-
return;
|
|
4330
|
-
}
|
|
4331
|
-
} catch (e) {
|
|
4332
|
-
// 如果 popper 已经被销毁,忽略错误
|
|
4333
|
-
}
|
|
4334
|
-
}
|
|
4335
|
-
|
|
4336
|
-
// 检查是否有其他相关的弹出元素(如 autocomplete 的建议列表)
|
|
4337
|
-
if (context.suggestions && context.suggestions.length > 0) {
|
|
4338
|
-
// 尝试找到建议列表的 DOM 元素
|
|
4339
|
-
var suggestionsElm = document.querySelector('.es-autocomplete-suggestion');
|
|
4340
|
-
if (suggestionsElm) {
|
|
4341
|
-
try {
|
|
4342
|
-
if (suggestionsElm.contains(mouseup.target) || suggestionsElm.contains(mousedown.target)) {
|
|
4343
|
-
return;
|
|
4344
|
-
}
|
|
4345
|
-
} catch (e) {
|
|
4346
|
-
// 如果元素已经被销毁,忽略错误
|
|
4347
|
-
}
|
|
4348
|
-
}
|
|
3507
|
+
for (var _i = 1; _i < 7; _i += 2) {
|
|
3508
|
+
rgb.push(parseInt('0x' + $color.slice(_i, _i + 2), 16));
|
|
4349
3509
|
}
|
|
3510
|
+
} else {
|
|
3511
|
+
rgb = $color.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',');
|
|
3512
|
+
}
|
|
3513
|
+
return rgb;
|
|
3514
|
+
};
|
|
4350
3515
|
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
3516
|
+
/***/ }),
|
|
3517
|
+
|
|
3518
|
+
/***/ 17:
|
|
3519
|
+
/***/ (function(module, exports) {
|
|
3520
|
+
|
|
3521
|
+
module.exports = require("eoss/lib/loading");
|
|
3522
|
+
|
|
3523
|
+
/***/ }),
|
|
3524
|
+
|
|
3525
|
+
/***/ 19:
|
|
3526
|
+
/***/ (function(module, exports) {
|
|
4358
3527
|
|
|
3528
|
+
module.exports = require("lodash/get");
|
|
3529
|
+
|
|
3530
|
+
/***/ }),
|
|
3531
|
+
|
|
3532
|
+
/***/ 2:
|
|
3533
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
3534
|
+
|
|
3535
|
+
"use strict";
|
|
3536
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return fecha; });
|
|
3537
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return getSettings; });
|
|
3538
|
+
/* unused harmony export toDate */
|
|
3539
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return isDate; });
|
|
3540
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return isDateObject; });
|
|
3541
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return formatDate; });
|
|
3542
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "A", function() { return parseDate; });
|
|
3543
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return getDayCountOfMonth; });
|
|
3544
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return getDayCountOfYear; });
|
|
3545
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return getFirstDayOfMonth; });
|
|
3546
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "B", function() { return prevDate; });
|
|
3547
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return nextDate; });
|
|
3548
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return getStartDateOfMonth; });
|
|
3549
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return getWeekNumber; });
|
|
3550
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return getRangeHours; });
|
|
3551
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return getPrevMonthLastDays; });
|
|
3552
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return getMonthDays; });
|
|
3553
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return getRangeMinutes; });
|
|
3554
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "E", function() { return range; });
|
|
3555
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return modifyDate; });
|
|
3556
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return modifyTime; });
|
|
3557
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return modifyWithTimeString; });
|
|
3558
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return clearTime; });
|
|
3559
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return clearMilliseconds; });
|
|
3560
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return limitTimeRange; });
|
|
3561
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "G", function() { return timeWithinRange; });
|
|
3562
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return changeYearMonthAndClampDate; });
|
|
3563
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "C", function() { return prevMonth; });
|
|
3564
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return nextMonth; });
|
|
3565
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "D", function() { return prevYear; });
|
|
3566
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "z", function() { return nextYear; });
|
|
3567
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return extractDateFormat; });
|
|
3568
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return extractTimeFormat; });
|
|
3569
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "H", function() { return validateRangeInOneMonth; });
|
|
3570
|
+
/* unused harmony export calculateNetworkDays */
|
|
3571
|
+
/* unused harmony export dateAddDays */
|
|
3572
|
+
/* unused harmony export dateDiff */
|
|
3573
|
+
/* unused harmony export dayOfMonth */
|
|
3574
|
+
/* unused harmony export getCurrentDate */
|
|
3575
|
+
/* unused harmony export getCurrentDateTime */
|
|
3576
|
+
/* unused harmony export getHour */
|
|
3577
|
+
/* unused harmony export getMinute */
|
|
3578
|
+
/* unused harmony export getMonth */
|
|
3579
|
+
/* unused harmony export getSecond */
|
|
3580
|
+
/* unused harmony export getWeekday */
|
|
3581
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "F", function() { return timeCycle; });
|
|
3582
|
+
/* Modified from https://github.com/taylorhakes/fecha
|
|
3583
|
+
*
|
|
3584
|
+
* The MIT License (MIT)
|
|
3585
|
+
*
|
|
3586
|
+
* Copyright (c) 2015 Taylor Hakes
|
|
3587
|
+
*
|
|
3588
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
3589
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
3590
|
+
* in the Software without restriction, including without limitation the rights
|
|
3591
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
3592
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
3593
|
+
* furnished to do so, subject to the following conditions:
|
|
3594
|
+
*
|
|
3595
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
3596
|
+
* copies or substantial portions of the Software.
|
|
3597
|
+
*
|
|
3598
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
3599
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
3600
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
3601
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
3602
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
3603
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
3604
|
+
* SOFTWARE.
|
|
3605
|
+
*/
|
|
3606
|
+
|
|
3607
|
+
/*eslint-disable*/
|
|
3608
|
+
// 把 YYYY-MM-DD 改成了 yyyy-MM-dd
|
|
3609
|
+
|
|
3610
|
+
|
|
3611
|
+
/**
|
|
3612
|
+
* Parse or format dates
|
|
3613
|
+
* @class fecha
|
|
3614
|
+
*/
|
|
3615
|
+
const fecha = {};
|
|
3616
|
+
const token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g;
|
|
3617
|
+
const twoDigits = '\\d\\d?';
|
|
3618
|
+
const threeDigits = '\\d{3}';
|
|
3619
|
+
const fourDigits = '\\d{4}';
|
|
3620
|
+
const word = '[^\\s]+';
|
|
3621
|
+
const literal = /\[([^]*?)\]/gm;
|
|
3622
|
+
const noop = function () {};
|
|
3623
|
+
|
|
3624
|
+
function regexEscape(str) {
|
|
3625
|
+
return str.replace(/[|\\{()[^$+*?.-]/g, '\\$&');
|
|
3626
|
+
}
|
|
3627
|
+
|
|
3628
|
+
function shorten(arr, sLen) {
|
|
3629
|
+
const newArr = [];
|
|
3630
|
+
for (let i = 0, len = arr.length; i < len; i++) {
|
|
3631
|
+
newArr.push(arr[i].substr(0, sLen));
|
|
3632
|
+
}
|
|
3633
|
+
return newArr;
|
|
3634
|
+
}
|
|
3635
|
+
|
|
3636
|
+
function monthUpdate() {
|
|
3637
|
+
return function (d, v) {
|
|
3638
|
+
const index = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'].indexOf(v.toLowerCase());
|
|
3639
|
+
if (~index) {
|
|
3640
|
+
d.month = index;
|
|
3641
|
+
}
|
|
3642
|
+
};
|
|
3643
|
+
}
|
|
3644
|
+
|
|
3645
|
+
function pad(val, len) {
|
|
3646
|
+
val = String(val);
|
|
3647
|
+
len = len || 2;
|
|
3648
|
+
while (val.length < len) {
|
|
3649
|
+
val = '0' + val;
|
|
3650
|
+
}
|
|
3651
|
+
return val;
|
|
3652
|
+
}
|
|
3653
|
+
|
|
3654
|
+
// 直接使用中文日期名称常量
|
|
3655
|
+
const dayNames = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
|
|
3656
|
+
const monthNames = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
|
|
3657
|
+
const monthNamesShort = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'];
|
|
3658
|
+
const dayNamesShort = ['日', '一', '二', '三', '四', '五', '六'];
|
|
3659
|
+
const amPm = ['上午', '下午'];
|
|
3660
|
+
const DoFn = function DoFn(D) {
|
|
3661
|
+
return D + '日';
|
|
3662
|
+
};
|
|
3663
|
+
|
|
3664
|
+
const formatFlags = {
|
|
3665
|
+
D: function(dateObj) {
|
|
3666
|
+
return dateObj.getDay();
|
|
3667
|
+
},
|
|
3668
|
+
DD: function(dateObj) {
|
|
3669
|
+
return pad(dateObj.getDay());
|
|
3670
|
+
},
|
|
3671
|
+
Do: function(dateObj) {
|
|
3672
|
+
return DoFn(dateObj.getDate());
|
|
3673
|
+
},
|
|
3674
|
+
d: function(dateObj) {
|
|
3675
|
+
return dateObj.getDate();
|
|
3676
|
+
},
|
|
3677
|
+
dd: function(dateObj) {
|
|
3678
|
+
return pad(dateObj.getDate());
|
|
3679
|
+
},
|
|
3680
|
+
ddd: function(dateObj) {
|
|
3681
|
+
return dayNamesShort[dateObj.getDay()];
|
|
3682
|
+
},
|
|
3683
|
+
dddd: function(dateObj) {
|
|
3684
|
+
return dayNames[dateObj.getDay()];
|
|
3685
|
+
},
|
|
3686
|
+
M: function(dateObj) {
|
|
3687
|
+
return dateObj.getMonth() + 1;
|
|
3688
|
+
},
|
|
3689
|
+
MM: function(dateObj) {
|
|
3690
|
+
return pad(dateObj.getMonth() + 1);
|
|
3691
|
+
},
|
|
3692
|
+
MMM: function(dateObj) {
|
|
3693
|
+
return monthNamesShort[dateObj.getMonth()];
|
|
3694
|
+
},
|
|
3695
|
+
MMMM: function(dateObj) {
|
|
3696
|
+
return monthNames[dateObj.getMonth()];
|
|
3697
|
+
},
|
|
3698
|
+
yy: function(dateObj) {
|
|
3699
|
+
return pad(String(dateObj.getFullYear()), 4).substr(2);
|
|
3700
|
+
},
|
|
3701
|
+
yyyy: function(dateObj) {
|
|
3702
|
+
return pad(dateObj.getFullYear(), 4);
|
|
3703
|
+
},
|
|
3704
|
+
h: function(dateObj) {
|
|
3705
|
+
return dateObj.getHours() % 12 || 12;
|
|
3706
|
+
},
|
|
3707
|
+
hh: function(dateObj) {
|
|
3708
|
+
return pad(dateObj.getHours() % 12 || 12);
|
|
3709
|
+
},
|
|
3710
|
+
H: function(dateObj) {
|
|
3711
|
+
return dateObj.getHours();
|
|
3712
|
+
},
|
|
3713
|
+
HH: function(dateObj) {
|
|
3714
|
+
return pad(dateObj.getHours());
|
|
3715
|
+
},
|
|
3716
|
+
m: function(dateObj) {
|
|
3717
|
+
return dateObj.getMinutes();
|
|
3718
|
+
},
|
|
3719
|
+
mm: function(dateObj) {
|
|
3720
|
+
return pad(dateObj.getMinutes());
|
|
3721
|
+
},
|
|
3722
|
+
s: function(dateObj) {
|
|
3723
|
+
return dateObj.getSeconds();
|
|
3724
|
+
},
|
|
3725
|
+
ss: function(dateObj) {
|
|
3726
|
+
return pad(dateObj.getSeconds());
|
|
3727
|
+
},
|
|
3728
|
+
S: function(dateObj) {
|
|
3729
|
+
return Math.round(dateObj.getMilliseconds() / 100);
|
|
3730
|
+
},
|
|
3731
|
+
SS: function(dateObj) {
|
|
3732
|
+
return pad(Math.round(dateObj.getMilliseconds() / 10), 2);
|
|
3733
|
+
},
|
|
3734
|
+
SSS: function(dateObj) {
|
|
3735
|
+
return pad(dateObj.getMilliseconds(), 3);
|
|
3736
|
+
},
|
|
3737
|
+
a: function(dateObj) {
|
|
3738
|
+
return dateObj.getHours() < 12 ? '上午' : '下午';
|
|
3739
|
+
},
|
|
3740
|
+
A: function(dateObj) {
|
|
3741
|
+
return dateObj.getHours() < 12 ? '上午' : '下午';
|
|
3742
|
+
},
|
|
3743
|
+
ZZ: function(dateObj) {
|
|
3744
|
+
const o = dateObj.getTimezoneOffset();
|
|
3745
|
+
return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);
|
|
3746
|
+
}
|
|
3747
|
+
};
|
|
3748
|
+
|
|
3749
|
+
const parseFlags = {
|
|
3750
|
+
d: [twoDigits, function (d, v) {
|
|
3751
|
+
d.day = v;
|
|
3752
|
+
}],
|
|
3753
|
+
Do: [twoDigits + word, function (d, v) {
|
|
3754
|
+
d.day = parseInt(v, 10);
|
|
3755
|
+
}],
|
|
3756
|
+
M: [twoDigits, function (d, v) {
|
|
3757
|
+
d.month = v - 1;
|
|
3758
|
+
}],
|
|
3759
|
+
yy: [twoDigits, function (d, v) {
|
|
3760
|
+
const da = new Date(), cent = +('' + da.getFullYear()).substr(0, 2);
|
|
3761
|
+
d.year = '' + (v > 68 ? cent - 1 : cent) + v;
|
|
3762
|
+
}],
|
|
3763
|
+
h: [twoDigits, function (d, v) {
|
|
3764
|
+
d.hour = v;
|
|
3765
|
+
}],
|
|
3766
|
+
m: [twoDigits, function (d, v) {
|
|
3767
|
+
d.minute = v;
|
|
3768
|
+
}],
|
|
3769
|
+
s: [twoDigits, function (d, v) {
|
|
3770
|
+
d.second = v;
|
|
3771
|
+
}],
|
|
3772
|
+
yyyy: [fourDigits, function (d, v) {
|
|
3773
|
+
d.year = v;
|
|
3774
|
+
}],
|
|
3775
|
+
S: ['\\d', function (d, v) {
|
|
3776
|
+
d.millisecond = v * 100;
|
|
3777
|
+
}],
|
|
3778
|
+
SS: ['\\d{2}', function (d, v) {
|
|
3779
|
+
d.millisecond = v * 10;
|
|
3780
|
+
}],
|
|
3781
|
+
SSS: [threeDigits, function (d, v) {
|
|
3782
|
+
d.millisecond = v;
|
|
3783
|
+
}],
|
|
3784
|
+
D: [twoDigits, noop],
|
|
3785
|
+
ddd: [word, noop],
|
|
3786
|
+
MMM: [word, monthUpdate('monthNamesShort')],
|
|
3787
|
+
MMMM: [word, monthUpdate('monthNames')],
|
|
3788
|
+
a: [word, function (d, v) {
|
|
3789
|
+
const val = v.toLowerCase();
|
|
3790
|
+
if (val === '上午') {
|
|
3791
|
+
d.isPm = false;
|
|
3792
|
+
} else if (val === '下午') {
|
|
3793
|
+
d.isPm = true;
|
|
3794
|
+
}
|
|
3795
|
+
}],
|
|
3796
|
+
ZZ: ['[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z', function (d, v) {
|
|
3797
|
+
let parts = (v + '').match(/([+-]|\d\d)/gi), minutes;
|
|
3798
|
+
|
|
3799
|
+
if (parts) {
|
|
3800
|
+
minutes = +(parts[1] * 60) + parseInt(parts[2], 10);
|
|
3801
|
+
d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;
|
|
3802
|
+
}
|
|
3803
|
+
}]
|
|
3804
|
+
};
|
|
3805
|
+
parseFlags.dd = parseFlags.d;
|
|
3806
|
+
parseFlags.dddd = parseFlags.ddd;
|
|
3807
|
+
parseFlags.DD = parseFlags.D;
|
|
3808
|
+
parseFlags.mm = parseFlags.m;
|
|
3809
|
+
parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;
|
|
3810
|
+
parseFlags.MM = parseFlags.M;
|
|
3811
|
+
parseFlags.ss = parseFlags.s;
|
|
3812
|
+
parseFlags.A = parseFlags.a;
|
|
3813
|
+
|
|
3814
|
+
|
|
3815
|
+
// Some common format strings
|
|
3816
|
+
fecha.masks = {
|
|
3817
|
+
default: 'ddd MMM dd yyyy HH:mm:ss',
|
|
3818
|
+
shortDate: 'M/D/yy',
|
|
3819
|
+
mediumDate: 'MMM d, yyyy',
|
|
3820
|
+
longDate: 'MMMM d, yyyy',
|
|
3821
|
+
fullDate: 'dddd, MMMM d, yyyy',
|
|
3822
|
+
shortTime: 'HH:mm',
|
|
3823
|
+
mediumTime: 'HH:mm:ss',
|
|
3824
|
+
longTime: 'HH:mm:ss.SSS'
|
|
3825
|
+
};
|
|
3826
|
+
|
|
3827
|
+
/***
|
|
3828
|
+
* Format a date
|
|
3829
|
+
* @method format
|
|
3830
|
+
* @param {Date|number} dateObj
|
|
3831
|
+
* @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'
|
|
3832
|
+
*/
|
|
3833
|
+
fecha.format = function (dateObj, mask) {
|
|
3834
|
+
if (typeof dateObj === 'number') {
|
|
3835
|
+
dateObj = new Date(dateObj);
|
|
3836
|
+
}
|
|
3837
|
+
|
|
3838
|
+
if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {
|
|
3839
|
+
throw new Error('Invalid Date in fecha.format');
|
|
3840
|
+
}
|
|
3841
|
+
|
|
3842
|
+
mask = fecha.masks[mask] || mask || fecha.masks['default'];
|
|
3843
|
+
|
|
3844
|
+
const literals = [];
|
|
3845
|
+
|
|
3846
|
+
// Make literals inactive by replacing them with ??
|
|
3847
|
+
mask = mask.replace(literal, function($0, $1) {
|
|
3848
|
+
literals.push($1);
|
|
3849
|
+
return '@@@';
|
|
3850
|
+
});
|
|
3851
|
+
// Apply formatting rules
|
|
3852
|
+
mask = mask.replace(token, function ($0) {
|
|
3853
|
+
return $0 in formatFlags ? formatFlags[$0](dateObj) : $0.slice(1, $0.length - 1);
|
|
3854
|
+
});
|
|
3855
|
+
// Inline literal values back into the formatted value
|
|
3856
|
+
return mask.replace(/@@@/g, function() {
|
|
3857
|
+
return literals.shift();
|
|
3858
|
+
});
|
|
3859
|
+
};
|
|
3860
|
+
|
|
3861
|
+
/**
|
|
3862
|
+
* Parse a date string into an object, changes - into /
|
|
3863
|
+
* @method parse
|
|
3864
|
+
* @param {string} dateStr Date string
|
|
3865
|
+
* @param {string} format Date parse format
|
|
3866
|
+
* @returns {Date|boolean}
|
|
3867
|
+
*/
|
|
3868
|
+
fecha.parse = function (dateStr, format) {
|
|
3869
|
+
if (typeof format !== 'string') {
|
|
3870
|
+
throw new Error('Invalid format in fecha.parse');
|
|
3871
|
+
}
|
|
3872
|
+
|
|
3873
|
+
format = fecha.masks[format] || format;
|
|
3874
|
+
|
|
3875
|
+
// Avoid regular expression denial of service, fail early for really long strings
|
|
3876
|
+
// https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS
|
|
3877
|
+
if (dateStr.length > 1000) {
|
|
3878
|
+
return null;
|
|
3879
|
+
}
|
|
3880
|
+
|
|
3881
|
+
const dateInfo = {};
|
|
3882
|
+
const parseInfo = [];
|
|
3883
|
+
const literals = [];
|
|
3884
|
+
format = format.replace(literal, function($0, $1) {
|
|
3885
|
+
literals.push($1);
|
|
3886
|
+
return '@@@';
|
|
3887
|
+
});
|
|
3888
|
+
let newFormat = regexEscape(format).replace(token, function ($0) {
|
|
3889
|
+
if (parseFlags[$0]) {
|
|
3890
|
+
const info = parseFlags[$0];
|
|
3891
|
+
parseInfo.push(info[1]);
|
|
3892
|
+
return '(' + info[0] + ')';
|
|
3893
|
+
}
|
|
3894
|
+
|
|
3895
|
+
return $0;
|
|
3896
|
+
});
|
|
3897
|
+
newFormat = newFormat.replace(/@@@/g, function() {
|
|
3898
|
+
return literals.shift();
|
|
3899
|
+
});
|
|
3900
|
+
const matches = dateStr.match(new RegExp(newFormat, 'i'));
|
|
3901
|
+
if (!matches) {
|
|
3902
|
+
return null;
|
|
3903
|
+
}
|
|
3904
|
+
|
|
3905
|
+
for (let i = 1; i < matches.length; i++) {
|
|
3906
|
+
parseInfo[i - 1](dateInfo, matches[i]);
|
|
3907
|
+
}
|
|
3908
|
+
|
|
3909
|
+
const today = new Date();
|
|
3910
|
+
if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {
|
|
3911
|
+
dateInfo.hour = +dateInfo.hour + 12;
|
|
3912
|
+
} else if (dateInfo.isPm === false && +dateInfo.hour === 12) {
|
|
3913
|
+
dateInfo.hour = 0;
|
|
3914
|
+
}
|
|
3915
|
+
|
|
3916
|
+
let date;
|
|
3917
|
+
if (dateInfo.timezoneOffset != null) {
|
|
3918
|
+
dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;
|
|
3919
|
+
date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
|
|
3920
|
+
dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));
|
|
3921
|
+
} else {
|
|
3922
|
+
date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
|
|
3923
|
+
dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);
|
|
3924
|
+
}
|
|
3925
|
+
return date;
|
|
3926
|
+
};
|
|
3927
|
+
|
|
3928
|
+
// 导出fecha对象
|
|
3929
|
+
|
|
3930
|
+
|
|
3931
|
+
// 以下是从date-util.js合并的函数
|
|
3932
|
+
const newArray = function(start, end) {
|
|
3933
|
+
let result = [];
|
|
3934
|
+
for (let i = start; i <= end; i++) {
|
|
3935
|
+
result.push(i);
|
|
3936
|
+
}
|
|
3937
|
+
return result;
|
|
3938
|
+
};
|
|
3939
|
+
|
|
3940
|
+
const getSettings = () => {
|
|
3941
|
+
return {
|
|
3942
|
+
dayNamesShort: ['日', '一', '二', '三', '四', '五', '六'],
|
|
3943
|
+
dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
|
|
3944
|
+
monthNamesShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
|
|
3945
|
+
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
|
|
3946
|
+
amPm: ['上午', '下午']
|
|
3947
|
+
};
|
|
3948
|
+
};
|
|
3949
|
+
|
|
3950
|
+
const toDate = function(date) {
|
|
3951
|
+
return isDate(date) ? new Date(date) : null;
|
|
3952
|
+
};
|
|
3953
|
+
|
|
3954
|
+
const isDate = function(date) {
|
|
3955
|
+
if (date === null || date === undefined) return false;
|
|
3956
|
+
if (isNaN(new Date(date).getTime())) return false;
|
|
3957
|
+
if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`
|
|
3958
|
+
return true;
|
|
3959
|
+
};
|
|
3960
|
+
|
|
3961
|
+
const isDateObject = function(val) {
|
|
3962
|
+
return val instanceof Date;
|
|
3963
|
+
};
|
|
3964
|
+
|
|
3965
|
+
const formatDate = function (date, format = 'yyyy-MM-dd') {
|
|
3966
|
+
// 处理多种输入类型
|
|
3967
|
+
if (!date) return '';
|
|
3968
|
+
|
|
3969
|
+
// 如果是时间戳,转成日期对象
|
|
3970
|
+
if (typeof date === 'number') {
|
|
3971
|
+
date = new Date(date);
|
|
3972
|
+
}
|
|
3973
|
+
// 如果是字符串,转成日期对象
|
|
3974
|
+
if (typeof date === 'string') {
|
|
3975
|
+
date = new Date(date);
|
|
3976
|
+
}
|
|
3977
|
+
|
|
3978
|
+
// 调用toDate进一步验证和转换
|
|
3979
|
+
date = toDate(date);
|
|
3980
|
+
if (!date) return '';
|
|
3981
|
+
|
|
3982
|
+
// 兼容大写和小写的格式标记
|
|
3983
|
+
// 将大写的YYYY/MM/DD/HH/mm/ss转换为小写的yyyy/mm/dd/hh/mm/ss
|
|
3984
|
+
const lowercaseFormat = format
|
|
3985
|
+
.replace(/YYYY/g, 'yyyy')
|
|
3986
|
+
.replace(/D/g, 'd')
|
|
3987
|
+
|
|
3988
|
+
// 使用fecha库进行格式化,支持中文配置
|
|
3989
|
+
const str = fecha.format(date, lowercaseFormat, getSettings());
|
|
3990
|
+
return str;
|
|
3991
|
+
};
|
|
3992
|
+
|
|
3993
|
+
const parseDate = function(string, format) {
|
|
3994
|
+
return fecha.parse(string, format || 'yyyy-MM-dd', getSettings());
|
|
3995
|
+
};
|
|
3996
|
+
|
|
3997
|
+
const getDayCountOfMonth = function(year, month) {
|
|
3998
|
+
if (month === 3 || month === 5 || month === 8 || month === 10) {
|
|
3999
|
+
return 30;
|
|
4000
|
+
}
|
|
4001
|
+
|
|
4002
|
+
if (month === 1) {
|
|
4003
|
+
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
|
|
4004
|
+
return 29;
|
|
4005
|
+
} else {
|
|
4006
|
+
return 28;
|
|
4007
|
+
}
|
|
4008
|
+
}
|
|
4009
|
+
|
|
4010
|
+
return 31;
|
|
4011
|
+
};
|
|
4012
|
+
|
|
4013
|
+
const getDayCountOfYear = function(year) {
|
|
4014
|
+
const isLeapYear = year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);
|
|
4015
|
+
return isLeapYear ? 366 : 365;
|
|
4016
|
+
};
|
|
4017
|
+
|
|
4018
|
+
const getFirstDayOfMonth = function(date) {
|
|
4019
|
+
const temp = new Date(date.getTime());
|
|
4020
|
+
temp.setDate(1);
|
|
4021
|
+
return temp.getDay();
|
|
4022
|
+
};
|
|
4023
|
+
|
|
4024
|
+
// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript
|
|
4025
|
+
// {prev, next} Date should work for Daylight Saving Time
|
|
4026
|
+
// Adding 24 * 60 * 60 * 1000 does not work in the above scenario
|
|
4027
|
+
const prevDate = function(date, amount = 1) {
|
|
4028
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
|
|
4029
|
+
};
|
|
4030
|
+
|
|
4031
|
+
const nextDate = function(date, amount = 1) {
|
|
4032
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
|
|
4033
|
+
};
|
|
4034
|
+
|
|
4035
|
+
const getStartDateOfMonth = function(year, month) {
|
|
4036
|
+
const result = new Date(year, month, 1);
|
|
4037
|
+
const day = result.getDay();
|
|
4038
|
+
|
|
4039
|
+
if (day === 0) {
|
|
4040
|
+
return prevDate(result, 7);
|
|
4041
|
+
} else {
|
|
4042
|
+
return prevDate(result, day);
|
|
4043
|
+
}
|
|
4044
|
+
};
|
|
4045
|
+
|
|
4046
|
+
const getWeekNumber = function(date) {
|
|
4047
|
+
// 支持多种输入类型
|
|
4048
|
+
if (!date||!isDate(date)) {
|
|
4049
|
+
date = new Date();
|
|
4050
|
+
}
|
|
4051
|
+
if (typeof date === 'string') {
|
|
4052
|
+
date = new Date(date);
|
|
4053
|
+
}
|
|
4054
|
+
|
|
4055
|
+
// 验证日期有效性
|
|
4056
|
+
if (!isDate(date)) return null;
|
|
4057
|
+
|
|
4058
|
+
const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
|
|
4059
|
+
// 设置为最近的星期四:当前日期 + 4 - 当前星期数
|
|
4060
|
+
// 将星期日的星期数设为7
|
|
4061
|
+
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
|
|
4062
|
+
// 获取当年的第一天
|
|
4063
|
+
const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
|
|
4064
|
+
// 计算到最近的星期四的完整周数
|
|
4065
|
+
const weekNo = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
|
|
4066
|
+
// 返回周数
|
|
4067
|
+
return weekNo;
|
|
4068
|
+
};
|
|
4069
|
+
|
|
4070
|
+
const getRangeHours = function(ranges) {
|
|
4071
|
+
const hours = [];
|
|
4072
|
+
let disabledHours = [];
|
|
4073
|
+
|
|
4074
|
+
(ranges || []).forEach(range => {
|
|
4075
|
+
const value = range.map(date => date.getHours());
|
|
4076
|
+
|
|
4077
|
+
disabledHours = disabledHours.concat(newArray(value[0], value[1]));
|
|
4078
|
+
});
|
|
4079
|
+
|
|
4080
|
+
if (disabledHours.length) {
|
|
4081
|
+
for (let i = 0; i < 24; i++) {
|
|
4082
|
+
hours[i] = disabledHours.indexOf(i) === -1;
|
|
4083
|
+
}
|
|
4084
|
+
} else {
|
|
4085
|
+
for (let i = 0; i < 24; i++) {
|
|
4086
|
+
hours[i] = false;
|
|
4087
|
+
}
|
|
4088
|
+
}
|
|
4089
|
+
|
|
4090
|
+
return hours;
|
|
4091
|
+
};
|
|
4092
|
+
|
|
4093
|
+
const getPrevMonthLastDays = (date, amount) => {
|
|
4094
|
+
if (amount <= 0) return [];
|
|
4095
|
+
const temp = new Date(date.getTime());
|
|
4096
|
+
temp.setDate(0);
|
|
4097
|
+
const lastDay = temp.getDate();
|
|
4098
|
+
return range(amount).map((_, index) => lastDay - (amount - index - 1));
|
|
4099
|
+
};
|
|
4100
|
+
|
|
4101
|
+
const getMonthDays = (date) => {
|
|
4102
|
+
const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);
|
|
4103
|
+
const days = temp.getDate();
|
|
4104
|
+
return range(days).map((_, index) => index + 1);
|
|
4105
|
+
};
|
|
4106
|
+
|
|
4107
|
+
function setRangeData(arr, start, end, value) {
|
|
4108
|
+
for (let i = start; i < end; i++) {
|
|
4109
|
+
arr[i] = value;
|
|
4110
|
+
}
|
|
4111
|
+
}
|
|
4112
|
+
|
|
4113
|
+
const getRangeMinutes = function(ranges, hour) {
|
|
4114
|
+
const minutes = new Array(60);
|
|
4115
|
+
|
|
4116
|
+
if (ranges.length > 0) {
|
|
4117
|
+
ranges.forEach(range => {
|
|
4118
|
+
const start = range[0];
|
|
4119
|
+
const end = range[1];
|
|
4120
|
+
const startHour = start.getHours();
|
|
4121
|
+
const startMinute = start.getMinutes();
|
|
4122
|
+
const endHour = end.getHours();
|
|
4123
|
+
const endMinute = end.getMinutes();
|
|
4124
|
+
if (startHour === hour && endHour !== hour) {
|
|
4125
|
+
setRangeData(minutes, startMinute, 60, true);
|
|
4126
|
+
} else if (startHour === hour && endHour === hour) {
|
|
4127
|
+
setRangeData(minutes, startMinute, endMinute + 1, true);
|
|
4128
|
+
} else if (startHour !== hour && endHour === hour) {
|
|
4129
|
+
setRangeData(minutes, 0, endMinute + 1, true);
|
|
4130
|
+
} else if (startHour < hour && endHour > hour) {
|
|
4131
|
+
setRangeData(minutes, 0, 60, true);
|
|
4132
|
+
}
|
|
4133
|
+
});
|
|
4134
|
+
} else {
|
|
4135
|
+
setRangeData(minutes, 0, 60, true);
|
|
4136
|
+
}
|
|
4137
|
+
return minutes;
|
|
4138
|
+
};
|
|
4139
|
+
|
|
4140
|
+
const range = function(n) {
|
|
4141
|
+
// see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n
|
|
4142
|
+
return Array.apply(null, {length: n}).map((_, n) => n);
|
|
4143
|
+
};
|
|
4144
|
+
|
|
4145
|
+
const modifyDate = function(date, y, m, d) {
|
|
4146
|
+
return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
|
|
4147
|
+
};
|
|
4148
|
+
|
|
4149
|
+
const modifyTime = function(date, h, m, s) {
|
|
4150
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());
|
|
4151
|
+
};
|
|
4152
|
+
|
|
4153
|
+
const modifyWithTimeString = (date, time) => {
|
|
4154
|
+
if (date == null || !time) {
|
|
4155
|
+
return date;
|
|
4156
|
+
}
|
|
4157
|
+
time = parseDate(time, 'HH:mm:ss');
|
|
4158
|
+
return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());
|
|
4159
|
+
};
|
|
4160
|
+
|
|
4161
|
+
const clearTime = function(date) {
|
|
4162
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
4163
|
+
};
|
|
4164
|
+
|
|
4165
|
+
const clearMilliseconds = function(date) {
|
|
4166
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);
|
|
4167
|
+
};
|
|
4168
|
+
|
|
4169
|
+
const limitTimeRange = function(date, ranges, format = 'HH:mm:ss') {
|
|
4170
|
+
// TODO: refactory a more elegant solution
|
|
4171
|
+
if (ranges.length === 0) return date;
|
|
4172
|
+
const normalizeDate = date => fecha.parse(fecha.format(date, format), format);
|
|
4173
|
+
const ndate = normalizeDate(date);
|
|
4174
|
+
const nranges = ranges.map(range => range.map(normalizeDate));
|
|
4175
|
+
if (nranges.some(nrange => ndate >= nrange[0] && ndate <= nrange[1])) return date;
|
|
4176
|
+
|
|
4177
|
+
let minDate = nranges[0][0];
|
|
4178
|
+
let maxDate = nranges[0][0];
|
|
4179
|
+
|
|
4180
|
+
nranges.forEach(nrange => {
|
|
4181
|
+
minDate = new Date(Math.min(nrange[0], minDate));
|
|
4182
|
+
maxDate = new Date(Math.max(nrange[1], minDate));
|
|
4183
|
+
});
|
|
4184
|
+
|
|
4185
|
+
const ret = ndate < minDate ? minDate : maxDate;
|
|
4186
|
+
// preserve Year/Month/Date
|
|
4187
|
+
return modifyDate(
|
|
4188
|
+
ret,
|
|
4189
|
+
date.getFullYear(),
|
|
4190
|
+
date.getMonth(),
|
|
4191
|
+
date.getDate()
|
|
4192
|
+
);
|
|
4193
|
+
};
|
|
4194
|
+
|
|
4195
|
+
const timeWithinRange = function(date, selectableRange, format) {
|
|
4196
|
+
const limitedDate = limitTimeRange(date, selectableRange, format);
|
|
4197
|
+
return limitedDate.getTime() === date.getTime();
|
|
4198
|
+
};
|
|
4199
|
+
|
|
4200
|
+
const changeYearMonthAndClampDate = function(date, year, month) {
|
|
4201
|
+
// clamp date to the number of days in `year`, `month`
|
|
4202
|
+
// eg: (2010-1-31, 2010, 2) => 2010-2-28
|
|
4203
|
+
const monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));
|
|
4204
|
+
return modifyDate(date, year, month, monthDate);
|
|
4205
|
+
};
|
|
4206
|
+
|
|
4207
|
+
const prevMonth = function(date) {
|
|
4208
|
+
const year = date.getFullYear();
|
|
4209
|
+
const month = date.getMonth();
|
|
4210
|
+
return month === 0
|
|
4211
|
+
? changeYearMonthAndClampDate(date, year - 1, 11)
|
|
4212
|
+
: changeYearMonthAndClampDate(date, year, month - 1);
|
|
4213
|
+
};
|
|
4214
|
+
|
|
4215
|
+
const nextMonth = function(date) {
|
|
4216
|
+
const year = date.getFullYear();
|
|
4217
|
+
const month = date.getMonth();
|
|
4218
|
+
return month === 11
|
|
4219
|
+
? changeYearMonthAndClampDate(date, year + 1, 0)
|
|
4220
|
+
: changeYearMonthAndClampDate(date, year, month + 1);
|
|
4221
|
+
};
|
|
4222
|
+
|
|
4223
|
+
const prevYear = function(date, amount = 1) {
|
|
4224
|
+
const year = date.getFullYear();
|
|
4225
|
+
const month = date.getMonth();
|
|
4226
|
+
return changeYearMonthAndClampDate(date, year - amount, month);
|
|
4227
|
+
};
|
|
4228
|
+
|
|
4229
|
+
const nextYear = function(date, amount = 1) {
|
|
4230
|
+
const year = date.getFullYear();
|
|
4231
|
+
const month = date.getMonth();
|
|
4232
|
+
return changeYearMonthAndClampDate(date, year + amount, month);
|
|
4233
|
+
};
|
|
4234
|
+
|
|
4235
|
+
const extractDateFormat = function(format) {
|
|
4236
|
+
return format
|
|
4237
|
+
.replace(/\W?m{1,2}|\W?ZZ/g, '')
|
|
4238
|
+
.replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '')
|
|
4239
|
+
.trim();
|
|
4240
|
+
};
|
|
4241
|
+
|
|
4242
|
+
const extractTimeFormat = function(format) {
|
|
4243
|
+
return format
|
|
4244
|
+
.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '')
|
|
4245
|
+
.trim();
|
|
4246
|
+
};
|
|
4247
|
+
|
|
4248
|
+
const validateRangeInOneMonth = function(start, end) {
|
|
4249
|
+
return (start.getMonth() === end.getMonth()) && (start.getFullYear() === end.getFullYear());
|
|
4250
|
+
};
|
|
4251
|
+
|
|
4252
|
+
/**
|
|
4253
|
+
* 计算两个日期之间的工作日数量(不包括周末和节假日)
|
|
4254
|
+
* @param {string} start_date - 开始日期字符串,格式为 "YYYY-MM-DD"
|
|
4255
|
+
* @param {string} end_date - 结束日期字符串,格式为 "YYYY-MM-DD"
|
|
4256
|
+
* @param {Array<string>} holidays - 假期日期字符串数组,格式为 "YYYY-MM-DD"
|
|
4257
|
+
* @returns {number} 工作日数量
|
|
4258
|
+
*/
|
|
4259
|
+
const calculateNetworkDays = function (start_date, end_date, holidays = []) {
|
|
4260
|
+
if (typeof start_date !== 'string' || typeof end_date !== 'string') {
|
|
4261
|
+
throw new Error(
|
|
4262
|
+
"Invalid input. Please provide valid date strings in the format 'YYYY-MM-DD'."
|
|
4263
|
+
);
|
|
4264
|
+
}
|
|
4265
|
+
|
|
4266
|
+
const startDateObj = new Date(start_date);
|
|
4267
|
+
const endDateObj = new Date(end_date);
|
|
4268
|
+
|
|
4269
|
+
if (isNaN(startDateObj.getTime()) || isNaN(endDateObj.getTime())) {
|
|
4270
|
+
throw new Error(
|
|
4271
|
+
"Invalid date format. Please provide valid date strings in the format 'YYYY-MM-DD'."
|
|
4272
|
+
);
|
|
4273
|
+
}
|
|
4274
|
+
|
|
4275
|
+
if (startDateObj > endDateObj) {
|
|
4276
|
+
throw new Error('Start date should be earlier than or equal to end date.');
|
|
4277
|
+
}
|
|
4278
|
+
|
|
4279
|
+
let workdays = 0;
|
|
4280
|
+
|
|
4281
|
+
// Iterate through each day in the date range
|
|
4282
|
+
for (
|
|
4283
|
+
let currentDate = new Date(startDateObj);
|
|
4284
|
+
currentDate <= endDateObj;
|
|
4285
|
+
currentDate.setDate(currentDate.getDate() + 1)
|
|
4286
|
+
) {
|
|
4287
|
+
// Check if the current day is a weekend (Saturday or Sunday)
|
|
4288
|
+
const isWeekend = currentDate.getDay() === 0 || currentDate.getDay() === 6;
|
|
4289
|
+
|
|
4290
|
+
// Check if the current day is a holiday
|
|
4291
|
+
const isHoliday = holidays.some((holiday) => {
|
|
4292
|
+
const holidayDate = new Date(holiday);
|
|
4293
|
+
return currentDate.toDateString() === holidayDate.toDateString();
|
|
4294
|
+
});
|
|
4295
|
+
|
|
4296
|
+
// If it's a workday (not a weekend or holiday), increment the workdays count
|
|
4297
|
+
if (!isWeekend && !isHoliday) {
|
|
4298
|
+
workdays++;
|
|
4299
|
+
}
|
|
4300
|
+
}
|
|
4301
|
+
|
|
4302
|
+
return workdays;
|
|
4303
|
+
};
|
|
4304
|
+
|
|
4359
4305
|
/**
|
|
4360
|
-
*
|
|
4361
|
-
* @
|
|
4362
|
-
* @
|
|
4363
|
-
*
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
}
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4306
|
+
* 日期加减天数
|
|
4307
|
+
* @param {string} start_date - 起始日期字符串,格式为 "YYYY-MM-DD"
|
|
4308
|
+
* @param {number} days - 要加上或减去的天数,正数表示加,负数表示减
|
|
4309
|
+
* @returns {string} 结果日期,格式为 "YYYY-MM-DD"
|
|
4310
|
+
*/
|
|
4311
|
+
const dateAddDays = function (start_date, days) {
|
|
4312
|
+
if (typeof start_date !== 'string' || !Number.isInteger(days)) {
|
|
4313
|
+
throw new Error(
|
|
4314
|
+
"Invalid input. Please provide a valid date string in the format 'YYYY-MM-DD' and a valid integer for the number of days."
|
|
4315
|
+
);
|
|
4316
|
+
}
|
|
4317
|
+
|
|
4318
|
+
const startDateObj = new Date(start_date);
|
|
4319
|
+
if (isNaN(startDateObj.getTime())) {
|
|
4320
|
+
throw new Error(
|
|
4321
|
+
"Invalid date format. Please provide a valid date string in the format 'YYYY-MM-DD'."
|
|
4322
|
+
);
|
|
4323
|
+
}
|
|
4324
|
+
|
|
4325
|
+
const resultDateObj = new Date(startDateObj);
|
|
4326
|
+
resultDateObj.setDate(resultDateObj.getDate() + days);
|
|
4327
|
+
|
|
4328
|
+
const resultYear = resultDateObj.getFullYear();
|
|
4329
|
+
const resultMonth = String(resultDateObj.getMonth() + 1).padStart(2, '0');
|
|
4330
|
+
const resultDay = String(resultDateObj.getDate()).padStart(2, '0');
|
|
4331
|
+
|
|
4332
|
+
return `${resultYear}-${resultMonth}-${resultDay}`;
|
|
4333
|
+
};
|
|
4334
|
+
|
|
4335
|
+
/**
|
|
4336
|
+
* 计算两个日期之间的差值
|
|
4337
|
+
* @date 2023年12月14日
|
|
4338
|
+
* @param {String} start_date - 起始日期字符串
|
|
4339
|
+
* @param {String} end_date - 结束日期字符串
|
|
4340
|
+
* @param {String} unit - 单位:year/month/day
|
|
4341
|
+
* @returns {Number} 差值
|
|
4342
|
+
*/
|
|
4343
|
+
const dateDiff = function (start_date, end_date, unit = 'day') {
|
|
4344
|
+
// Assuming date strings are in "YYYY-MM-DD" format
|
|
4345
|
+
var startDate = new Date(start_date);
|
|
4346
|
+
var endDate = new Date(end_date);
|
|
4347
|
+
|
|
4348
|
+
// If the date is invalid, return 0
|
|
4349
|
+
if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
|
|
4350
|
+
return 0;
|
|
4351
|
+
}
|
|
4352
|
+
|
|
4353
|
+
if (unit === 'year') {
|
|
4354
|
+
return endDate.getFullYear() - startDate.getFullYear();
|
|
4355
|
+
} else if (unit === 'month') {
|
|
4356
|
+
return (
|
|
4357
|
+
(endDate.getFullYear() - startDate.getFullYear()) * 12 +
|
|
4358
|
+
(endDate.getMonth() - startDate.getMonth())
|
|
4359
|
+
);
|
|
4360
|
+
} else {
|
|
4361
|
+
// Default to day
|
|
4362
|
+
var timeDifference = endDate - startDate;
|
|
4363
|
+
// Calculate days (86400000 milliseconds per day)
|
|
4364
|
+
return Math.floor(timeDifference / 86400000);
|
|
4365
|
+
}
|
|
4366
|
+
};
|
|
4367
|
+
|
|
4368
|
+
/**
|
|
4369
|
+
* 获取月份中的日期
|
|
4370
|
+
* @param {string} date - 日期字符串,格式为 "YYYY-MM-DD"
|
|
4371
|
+
* @returns {number} 月份中的日期(1-31)
|
|
4372
|
+
*/
|
|
4373
|
+
const dayOfMonth = function (date) {
|
|
4374
|
+
if (typeof date !== 'string') {
|
|
4375
|
+
throw new Error(
|
|
4376
|
+
"Invalid input. Please provide a valid date string in the format 'YYYY-MM-DD'."
|
|
4377
|
+
);
|
|
4378
|
+
}
|
|
4379
|
+
|
|
4380
|
+
const dateObj = new Date(date);
|
|
4381
|
+
if (isNaN(dateObj.getTime())) {
|
|
4382
|
+
throw new Error(
|
|
4383
|
+
"Invalid date format. Please provide a valid date string in the format 'YYYY-MM-DD'."
|
|
4384
|
+
);
|
|
4385
|
+
}
|
|
4386
|
+
|
|
4387
|
+
return dateObj.getDate();
|
|
4388
|
+
};
|
|
4389
|
+
|
|
4390
|
+
/**
|
|
4391
|
+
* 获取当前日期
|
|
4392
|
+
* @date 2022年5月7日
|
|
4393
|
+
* @param {string} format - 日期格式,默认为'YYYY-MM-DD'
|
|
4394
|
+
* @returns {string} 当前日期的格式化字符串
|
|
4395
|
+
*/
|
|
4396
|
+
const getCurrentDate = function (format = 'YYYY-MM-DD') {
|
|
4397
|
+
return formatDate(new Date(), format);
|
|
4398
|
+
};
|
|
4399
|
+
|
|
4400
|
+
/**
|
|
4401
|
+
* 获取当前日期时间
|
|
4402
|
+
* @date 2022年5月7日
|
|
4403
|
+
* @param {string} format - 日期时间格式,默认为'YYYY-MM-DD HH:mm:ss'
|
|
4404
|
+
* @returns {string} 当前日期时间的格式化字符串
|
|
4405
|
+
*/
|
|
4406
|
+
const getCurrentDateTime = function (format = 'YYYY-MM-DD HH:mm:ss') {
|
|
4407
|
+
return formatDate(new Date(), format);
|
|
4408
|
+
};
|
|
4409
|
+
|
|
4410
|
+
/**
|
|
4411
|
+
* 获取小时
|
|
4412
|
+
* @date 2022年5月7日
|
|
4413
|
+
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
4414
|
+
* @returns {number} 小时数(0-23)
|
|
4415
|
+
*/
|
|
4416
|
+
const getHour = function (date) {
|
|
4417
|
+
if (!date) {
|
|
4418
|
+
return new Date().getHours();
|
|
4419
|
+
}
|
|
4420
|
+
if (typeof date === 'string') {
|
|
4421
|
+
date = new Date(date);
|
|
4422
|
+
}
|
|
4423
|
+
return date.getHours();
|
|
4424
|
+
};
|
|
4425
|
+
|
|
4426
|
+
/**
|
|
4427
|
+
* 获取分钟
|
|
4428
|
+
* @date 2022年5月7日
|
|
4429
|
+
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
4430
|
+
* @returns {number} 分钟数(0-59)
|
|
4431
|
+
*/
|
|
4432
|
+
const getMinute = function (date) {
|
|
4433
|
+
if (!date) {
|
|
4434
|
+
return new Date().getMinutes();
|
|
4435
|
+
}
|
|
4436
|
+
if (typeof date === 'string') {
|
|
4437
|
+
date = new Date(date);
|
|
4438
|
+
}
|
|
4439
|
+
return date.getMinutes();
|
|
4440
|
+
};
|
|
4441
|
+
|
|
4442
|
+
/**
|
|
4443
|
+
* 获取月份
|
|
4444
|
+
* @date 2022年5月7日
|
|
4445
|
+
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
4446
|
+
* @returns {number} 月份数(1-12)
|
|
4447
|
+
*/
|
|
4448
|
+
const getMonth = function (date) {
|
|
4449
|
+
if (!date) {
|
|
4450
|
+
return new Date().getMonth() + 1;
|
|
4451
|
+
}
|
|
4452
|
+
if (typeof date === 'string') {
|
|
4453
|
+
date = new Date(date);
|
|
4454
|
+
}
|
|
4455
|
+
return date.getMonth() + 1;
|
|
4456
|
+
};
|
|
4457
|
+
|
|
4458
|
+
/**
|
|
4459
|
+
* 获取秒
|
|
4460
|
+
* @date 2022年5月7日
|
|
4461
|
+
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
4462
|
+
* @returns {number} 秒数(0-59)
|
|
4463
|
+
*/
|
|
4464
|
+
const getSecond = function (date) {
|
|
4465
|
+
if (!date) {
|
|
4466
|
+
return new Date().getSeconds();
|
|
4467
|
+
}
|
|
4468
|
+
if (typeof date === 'string') {
|
|
4469
|
+
date = new Date(date);
|
|
4470
|
+
}
|
|
4471
|
+
return date.getSeconds();
|
|
4472
|
+
};
|
|
4473
|
+
|
|
4474
|
+
/**
|
|
4475
|
+
* 获取星期几
|
|
4476
|
+
* @date 2022年5月7日
|
|
4477
|
+
* @param {Date|string} [date] - 日期对象或日期字符串
|
|
4478
|
+
* @returns {number} 星期几(0-6,0表示星期日)
|
|
4479
|
+
*/
|
|
4480
|
+
const getWeekday = function (date) {
|
|
4481
|
+
if (!date) {
|
|
4482
|
+
return new Date().getDay();
|
|
4483
|
+
}
|
|
4484
|
+
if (typeof date === 'string') {
|
|
4485
|
+
date = new Date(date);
|
|
4486
|
+
}
|
|
4487
|
+
return date.getDay();
|
|
4488
|
+
};
|
|
4489
|
+
|
|
4490
|
+
|
|
4491
|
+
/**
|
|
4492
|
+
* @desc 获取上午/下午/晚上
|
|
4493
|
+
* @author huangbo
|
|
4494
|
+
* @date 2022年5月7日
|
|
4495
|
+
* @param {String} [time] - 时间
|
|
4496
|
+
**/
|
|
4497
|
+
const timeCycle = function (time) {
|
|
4498
|
+
let hour = 0;
|
|
4499
|
+
if (!time) {
|
|
4500
|
+
hour = new Date().getHours();
|
|
4501
|
+
} else if (typeof time === 'string') {
|
|
4502
|
+
// 从时间字符串中提取小时
|
|
4503
|
+
const match = time.match(/^(\d{1,2})/);
|
|
4504
|
+
if (match) {
|
|
4505
|
+
hour = parseInt(match[1], 10);
|
|
4506
|
+
}
|
|
4507
|
+
} else if (typeof time === 'number') {
|
|
4508
|
+
hour = time;
|
|
4509
|
+
}
|
|
4510
|
+
// 判断时间段
|
|
4511
|
+
if (hour >= 5 && hour < 12) {
|
|
4512
|
+
return '上午';
|
|
4513
|
+
} else if (hour >= 12 && hour < 18) {
|
|
4514
|
+
return '下午';
|
|
4515
|
+
} else {
|
|
4516
|
+
return '晚上';
|
|
4517
|
+
}
|
|
4518
|
+
};
|
|
4385
4519
|
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4520
|
+
/***/ }),
|
|
4521
|
+
|
|
4522
|
+
/***/ 20:
|
|
4523
|
+
/***/ (function(module, exports) {
|
|
4524
|
+
|
|
4525
|
+
module.exports = require("lodash/set");
|
|
4526
|
+
|
|
4527
|
+
/***/ }),
|
|
4528
|
+
|
|
4529
|
+
/***/ 21:
|
|
4530
|
+
/***/ (function(module, exports) {
|
|
4531
|
+
|
|
4532
|
+
module.exports = require("lodash/cloneDeep");
|
|
4395
4533
|
|
|
4396
4534
|
/***/ }),
|
|
4397
4535
|
|
|
4398
|
-
/***/
|
|
4536
|
+
/***/ 212:
|
|
4399
4537
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
4400
4538
|
|
|
4401
4539
|
"use strict";
|
|
@@ -4506,24 +4644,24 @@ render._withStripped = true
|
|
|
4506
4644
|
// CONCATENATED MODULE: ./packages/dropdown/src/dropdown.vue?vue&type=template&id=cf516038&
|
|
4507
4645
|
|
|
4508
4646
|
// EXTERNAL MODULE: ./src/utils/clickoutside.js
|
|
4509
|
-
var clickoutside = __webpack_require__(
|
|
4647
|
+
var clickoutside = __webpack_require__(22);
|
|
4510
4648
|
|
|
4511
4649
|
// EXTERNAL MODULE: ./src/mixins/emitter.js
|
|
4512
4650
|
var emitter = __webpack_require__(10);
|
|
4513
4651
|
|
|
4514
4652
|
// EXTERNAL MODULE: ./src/mixins/migrating.js
|
|
4515
|
-
var migrating = __webpack_require__(
|
|
4653
|
+
var migrating = __webpack_require__(28);
|
|
4516
4654
|
|
|
4517
4655
|
// EXTERNAL MODULE: external "eoss/lib/button"
|
|
4518
|
-
var button_ = __webpack_require__(
|
|
4656
|
+
var button_ = __webpack_require__(27);
|
|
4519
4657
|
var button_default = /*#__PURE__*/__webpack_require__.n(button_);
|
|
4520
4658
|
|
|
4521
4659
|
// EXTERNAL MODULE: external "eoss/lib/button-group"
|
|
4522
|
-
var button_group_ = __webpack_require__(
|
|
4660
|
+
var button_group_ = __webpack_require__(87);
|
|
4523
4661
|
var button_group_default = /*#__PURE__*/__webpack_require__.n(button_group_);
|
|
4524
4662
|
|
|
4525
4663
|
// EXTERNAL MODULE: external "eoss/lib/dropdown-menu"
|
|
4526
|
-
var dropdown_menu_ = __webpack_require__(
|
|
4664
|
+
var dropdown_menu_ = __webpack_require__(96);
|
|
4527
4665
|
var dropdown_menu_default = /*#__PURE__*/__webpack_require__.n(dropdown_menu_);
|
|
4528
4666
|
|
|
4529
4667
|
// EXTERNAL MODULE: ./src/utils/util.js
|
|
@@ -5234,266 +5372,135 @@ dropdown.install = function (Vue) {
|
|
|
5234
5372
|
|
|
5235
5373
|
/***/ }),
|
|
5236
5374
|
|
|
5237
|
-
/***/
|
|
5375
|
+
/***/ 22:
|
|
5238
5376
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5239
5377
|
|
|
5240
5378
|
"use strict";
|
|
5241
|
-
/* harmony
|
|
5242
|
-
/* harmony
|
|
5243
|
-
/* harmony
|
|
5244
|
-
/* unused harmony export setCookie */
|
|
5245
|
-
/* unused harmony export getCookie */
|
|
5246
|
-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
5247
|
-
|
|
5248
|
-
/**
|
|
5249
|
-
* setStorage
|
|
5250
|
-
* @desc:设置本地储存数据
|
|
5251
|
-
* @author huangbo
|
|
5252
|
-
* @date 2022年5月7日
|
|
5253
|
-
* @param {String|Object} [key] - 数据的名称或包含type、key、value的对象
|
|
5254
|
-
* @param {String} [value] - 数据的值(当第一个参数为字符串时使用)
|
|
5255
|
-
**/
|
|
5256
|
-
var setStorage = function setStorage(key, value) {
|
|
5257
|
-
// 解析参数,支持两种调用方式:setStorage(key, value) 和 setStorage({type, key, value})
|
|
5258
|
-
var type = void 0,
|
|
5259
|
-
finalKey = void 0,
|
|
5260
|
-
finalValue = void 0;
|
|
5261
|
-
|
|
5262
|
-
if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) === 'object' && key !== null) {
|
|
5263
|
-
// 对象调用方式:setStorage({type, key, value})
|
|
5264
|
-
type = key.type;
|
|
5265
|
-
finalKey = key.key;
|
|
5266
|
-
finalValue = key.value;
|
|
5267
|
-
} else {
|
|
5268
|
-
// 字符串调用方式:setStorage(key, value)
|
|
5269
|
-
type = getStorage('storageType');
|
|
5270
|
-
finalKey = key;
|
|
5271
|
-
finalValue = value;
|
|
5272
|
-
}
|
|
5273
|
-
|
|
5274
|
-
// 使用默认存储类型如果未指定
|
|
5275
|
-
type = type || getStorage('storageType');
|
|
5276
|
-
|
|
5277
|
-
// 获取存储对象
|
|
5278
|
-
var storage = type === 'localStorage' ? localStorage : sessionStorage;
|
|
5279
|
-
|
|
5280
|
-
// 处理不同类型的key
|
|
5281
|
-
if (typeof finalKey === 'string') {
|
|
5282
|
-
// 单个字符串key
|
|
5283
|
-
var storedValue = (typeof finalValue === 'undefined' ? 'undefined' : _typeof(finalValue)) === 'object' ? JSON.stringify(finalValue) : finalValue;
|
|
5284
|
-
storage.setItem(finalKey, storedValue);
|
|
5285
|
-
if (finalKey === 'token') {
|
|
5286
|
-
setCookie('token', storedValue);
|
|
5287
|
-
}
|
|
5288
|
-
} else if (Array.isArray(finalKey)) {
|
|
5289
|
-
// 数组key,为多个key设置同一个value
|
|
5290
|
-
var _storedValue = (typeof finalValue === 'undefined' ? 'undefined' : _typeof(finalValue)) === 'object' ? JSON.stringify(finalValue) : finalValue;
|
|
5291
|
-
for (var i = 0; i < finalKey.length; i++) {
|
|
5292
|
-
storage.setItem(finalKey[i], _storedValue);
|
|
5293
|
-
if (finalKey[i] === 'token') {
|
|
5294
|
-
setCookie('token', _storedValue);
|
|
5295
|
-
}
|
|
5296
|
-
}
|
|
5297
|
-
} else if ((typeof finalKey === 'undefined' ? 'undefined' : _typeof(finalKey)) === 'object' && finalKey !== null) {
|
|
5298
|
-
// 对象key,对象的属性名称作为key,属性值作为value
|
|
5299
|
-
for (var k in finalKey) {
|
|
5300
|
-
if (Object.prototype.hasOwnProperty.call(finalKey, k)) {
|
|
5301
|
-
var _storedValue2 = _typeof(finalKey[k]) === 'object' ? JSON.stringify(finalKey[k]) : finalKey[k];
|
|
5302
|
-
storage.setItem(k, _storedValue2);
|
|
5303
|
-
if (k === 'token') {
|
|
5304
|
-
setCookie('token', _storedValue2);
|
|
5305
|
-
}
|
|
5306
|
-
}
|
|
5307
|
-
}
|
|
5308
|
-
}
|
|
5309
|
-
};
|
|
5310
|
-
|
|
5311
|
-
/**
|
|
5312
|
-
* getStorage
|
|
5313
|
-
* @desc:获取本地储存数据
|
|
5314
|
-
* @author huangbo
|
|
5315
|
-
* @date 2022年5月7日
|
|
5316
|
-
* @param {String} [key] - 获取的名称
|
|
5317
|
-
**/
|
|
5318
|
-
var getStorage = function getStorage(key) {
|
|
5319
|
-
if (key) {
|
|
5320
|
-
var res = sessionStorage.getItem(key) || localStorage.getItem(key);
|
|
5321
|
-
if (!res && key === 'token') {
|
|
5322
|
-
res = getCookie('token');
|
|
5323
|
-
}
|
|
5324
|
-
if (key === 'host' && !res) {
|
|
5325
|
-
res = '';
|
|
5326
|
-
}
|
|
5327
|
-
return res;
|
|
5328
|
-
}
|
|
5329
|
-
var defaults = {};
|
|
5330
|
-
var token = sessionStorage.getItem('token') || localStorage.getItem('token') || getCookie('token');
|
|
5331
|
-
var ssId = sessionStorage.getItem('ssId') || localStorage.getItem('ssId') || getCookie('ssId');
|
|
5332
|
-
|
|
5333
|
-
var deviceUnique = sessionStorage.getItem('deviceUnique') || localStorage.getItem('deviceUnique') || getCookie('deviceUnique');
|
|
5334
|
-
if (token) {
|
|
5335
|
-
defaults.Authorization = token;
|
|
5336
|
-
}
|
|
5337
|
-
if (ssId) {
|
|
5338
|
-
defaults.ssId = ssId;
|
|
5339
|
-
}
|
|
5340
|
-
if (deviceUnique) {
|
|
5341
|
-
defaults.deviceUnique = deviceUnique;
|
|
5342
|
-
}
|
|
5343
|
-
return defaults;
|
|
5344
|
-
};
|
|
5345
|
-
|
|
5346
|
-
/**
|
|
5347
|
-
* removeStorage
|
|
5348
|
-
* @desc:删除本地储存数据
|
|
5349
|
-
* @author huangbo
|
|
5350
|
-
* @date 2022年5月7日
|
|
5351
|
-
* @param {String, Array} [key] - 获取的名称
|
|
5352
|
-
**/
|
|
5353
|
-
var removeStorage = function removeStorage(key) {
|
|
5354
|
-
if (Array.isArray(key)) {
|
|
5355
|
-
for (var i = 0; i < key.length; i++) {
|
|
5356
|
-
sessionStorage.removeItem(key[i]);
|
|
5357
|
-
localStorage.removeItem(key[i]);
|
|
5358
|
-
if (key[i] === 'token') {
|
|
5359
|
-
removeCookie('token');
|
|
5360
|
-
}
|
|
5361
|
-
}
|
|
5362
|
-
} else if (key) {
|
|
5363
|
-
sessionStorage.removeItem(key);
|
|
5364
|
-
localStorage.removeItem(key);
|
|
5365
|
-
if (key === 'token') {
|
|
5366
|
-
removeCookie('token');
|
|
5367
|
-
}
|
|
5368
|
-
} else {
|
|
5369
|
-
sessionStorage.clear();
|
|
5370
|
-
localStorage.clear();
|
|
5371
|
-
removeCookie('token');
|
|
5372
|
-
}
|
|
5373
|
-
};
|
|
5379
|
+
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
|
|
5380
|
+
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
|
|
5381
|
+
/* harmony import */ var eoss_src_utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6);
|
|
5374
5382
|
|
|
5375
|
-
/**
|
|
5376
|
-
* setCookie
|
|
5377
|
-
* @desc 设置cookie
|
|
5378
|
-
* @author huangbo
|
|
5379
|
-
* @param {string} [name] cookie名称
|
|
5380
|
-
* @param {string} [value] cookie值
|
|
5381
|
-
* @param {boolean} [isSession] 是否是会话cookie
|
|
5382
|
-
**/
|
|
5383
|
-
var setCookie = function setCookie(name, value) {
|
|
5384
|
-
var isSession = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
5385
|
-
var time = arguments[3];
|
|
5386
5383
|
|
|
5387
|
-
try {
|
|
5388
|
-
var cookieParts = [encodeURIComponent(name) + '=' + encodeURIComponent(value), 'path=/' // 仅保留path设置,确保全站访问
|
|
5389
|
-
];
|
|
5390
|
-
// 会话/持久Cookie设置
|
|
5391
|
-
if (!isSession) {
|
|
5392
|
-
if (/MSIE|Trident/.test(navigator.userAgent)) {
|
|
5393
|
-
// IE使用expires
|
|
5394
|
-
var date = new Date();
|
|
5395
|
-
date.setTime(date.getTime() + (time || 7 * 24 * 60 * 60 * 1000));
|
|
5396
|
-
cookieParts.push('expires=' + date.toUTCString());
|
|
5397
|
-
} else {
|
|
5398
|
-
// 其他浏览器使用max-age
|
|
5399
|
-
cookieParts.push('max-age=' + (time || 7 * 24 * 60 * 60));
|
|
5400
|
-
}
|
|
5401
|
-
}
|
|
5402
|
-
// 内核兼容处理
|
|
5403
|
-
if (/MSIE|Trident/.test(navigator.userAgent)) {
|
|
5404
|
-
// IE特殊处理:添加P3P协议头
|
|
5405
|
-
cookieParts.push('P3P=CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
|
|
5406
|
-
} else {
|
|
5407
|
-
// 现代浏览器设置
|
|
5408
|
-
cookieParts.push('samesite=lax');
|
|
5409
|
-
if (window.location.protocol === 'https:') {
|
|
5410
|
-
cookieParts.push('secure');
|
|
5411
|
-
}
|
|
5412
|
-
}
|
|
5413
5384
|
|
|
5414
|
-
|
|
5415
|
-
|
|
5416
|
-
return true;
|
|
5417
|
-
} catch (e) {
|
|
5418
|
-
console.error('Cookie设置失败:', e);
|
|
5419
|
-
return false;
|
|
5420
|
-
}
|
|
5421
|
-
};
|
|
5385
|
+
var nodeList = [];
|
|
5386
|
+
var ctx = '@@clickoutsideContext';
|
|
5422
5387
|
|
|
5423
|
-
|
|
5424
|
-
|
|
5425
|
-
* @desc 获取cookie中指定名称的值
|
|
5426
|
-
* @author huangbo
|
|
5427
|
-
* @param {string} [name] cookie名称
|
|
5428
|
-
**/
|
|
5429
|
-
var getCookie = function getCookie(name) {
|
|
5430
|
-
var cookies = document.cookie.split(';');
|
|
5431
|
-
for (var _iterator = cookies, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
5432
|
-
var _ref;
|
|
5388
|
+
var startClick = void 0;
|
|
5389
|
+
var seed = 0;
|
|
5433
5390
|
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
} else {
|
|
5438
|
-
_i = _iterator.next();
|
|
5439
|
-
if (_i.done) break;
|
|
5440
|
-
_ref = _i.value;
|
|
5441
|
-
}
|
|
5391
|
+
!vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && Object(eoss_src_utils_dom__WEBPACK_IMPORTED_MODULE_1__[/* on */ "g"])(document, 'mousedown', function (e) {
|
|
5392
|
+
return startClick = e;
|
|
5393
|
+
});
|
|
5442
5394
|
|
|
5443
|
-
|
|
5395
|
+
!vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer && Object(eoss_src_utils_dom__WEBPACK_IMPORTED_MODULE_1__[/* on */ "g"])(document, 'mouseup', function (e) {
|
|
5396
|
+
nodeList.forEach(function (node) {
|
|
5397
|
+
return node[ctx].documentHandler(e, startClick);
|
|
5398
|
+
});
|
|
5399
|
+
});
|
|
5444
5400
|
|
|
5445
|
-
|
|
5446
|
-
|
|
5447
|
-
|
|
5401
|
+
function createDocumentHandler(el, binding, vnode) {
|
|
5402
|
+
return function () {
|
|
5403
|
+
var mouseup = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
5404
|
+
var mousedown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
5448
5405
|
|
|
5449
|
-
if (
|
|
5450
|
-
return
|
|
5406
|
+
if (!vnode || !vnode.context || !mouseup.target || !mousedown.target || el.contains(mouseup.target) || el.contains(mousedown.target) || el === mouseup.target) {
|
|
5407
|
+
return;
|
|
5451
5408
|
}
|
|
5452
|
-
}
|
|
5453
|
-
return null;
|
|
5454
|
-
};
|
|
5455
5409
|
|
|
5456
|
-
|
|
5457
|
-
* removeCookie
|
|
5458
|
-
* @desc:删除cookie
|
|
5459
|
-
* @author huangbo
|
|
5460
|
-
* @date 2022年5月7日
|
|
5461
|
-
* @param {String, Array} [key] - 获取的名称
|
|
5462
|
-
**/
|
|
5463
|
-
var removeCookie = function removeCookie(key) {
|
|
5464
|
-
if (Array.isArray(key)) {
|
|
5465
|
-
for (var i = 0; i < key.length; i++) {
|
|
5466
|
-
document.cookie = encodeURIComponent(key[i]) + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
|
|
5467
|
-
}
|
|
5468
|
-
} else {
|
|
5469
|
-
document.cookie = encodeURIComponent(key) + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
|
|
5470
|
-
}
|
|
5471
|
-
};
|
|
5410
|
+
var context = vnode.context;
|
|
5472
5411
|
|
|
5473
|
-
|
|
5412
|
+
// 检查点击是否在 popperElm 内部,即使它已经被添加到 document.body 中
|
|
5413
|
+
if (context.popperElm) {
|
|
5414
|
+
try {
|
|
5415
|
+
if (context.popperElm.contains(mouseup.target) || context.popperElm.contains(mousedown.target)) {
|
|
5416
|
+
return;
|
|
5417
|
+
}
|
|
5418
|
+
} catch (e) {
|
|
5419
|
+
// 如果 popperElm 已经被销毁,忽略错误
|
|
5420
|
+
}
|
|
5421
|
+
}
|
|
5474
5422
|
|
|
5475
|
-
|
|
5476
|
-
|
|
5423
|
+
// 检查是否有其他相关的 popper 元素
|
|
5424
|
+
if (context.popper) {
|
|
5425
|
+
try {
|
|
5426
|
+
if (context.popper.contains(mouseup.target) || context.popper.contains(mousedown.target)) {
|
|
5427
|
+
return;
|
|
5428
|
+
}
|
|
5429
|
+
} catch (e) {
|
|
5430
|
+
// 如果 popper 已经被销毁,忽略错误
|
|
5431
|
+
}
|
|
5432
|
+
}
|
|
5477
5433
|
|
|
5478
|
-
|
|
5434
|
+
// 检查是否有其他相关的弹出元素(如 autocomplete 的建议列表)
|
|
5435
|
+
if (context.suggestions && context.suggestions.length > 0) {
|
|
5436
|
+
// 尝试找到建议列表的 DOM 元素
|
|
5437
|
+
var suggestionsElm = document.querySelector('.es-autocomplete-suggestion');
|
|
5438
|
+
if (suggestionsElm) {
|
|
5439
|
+
try {
|
|
5440
|
+
if (suggestionsElm.contains(mouseup.target) || suggestionsElm.contains(mousedown.target)) {
|
|
5441
|
+
return;
|
|
5442
|
+
}
|
|
5443
|
+
} catch (e) {
|
|
5444
|
+
// 如果元素已经被销毁,忽略错误
|
|
5445
|
+
}
|
|
5446
|
+
}
|
|
5447
|
+
}
|
|
5479
5448
|
|
|
5480
|
-
|
|
5449
|
+
if (binding.expression && el[ctx].methodName && context[el[ctx].methodName]) {
|
|
5450
|
+
context[el[ctx].methodName]();
|
|
5451
|
+
} else {
|
|
5452
|
+
el[ctx].bindingFn && el[ctx].bindingFn();
|
|
5453
|
+
}
|
|
5454
|
+
};
|
|
5455
|
+
}
|
|
5481
5456
|
|
|
5482
|
-
|
|
5483
|
-
|
|
5457
|
+
/**
|
|
5458
|
+
* v-clickoutside
|
|
5459
|
+
* @desc 点击元素外面才会触发的事件
|
|
5460
|
+
* @example
|
|
5461
|
+
* ```vue
|
|
5462
|
+
* <div v-element-clickoutside="handleClose">
|
|
5463
|
+
* ```
|
|
5464
|
+
*/
|
|
5465
|
+
/* harmony default export */ __webpack_exports__["a"] = ({
|
|
5466
|
+
bind: function bind(el, binding, vnode) {
|
|
5467
|
+
nodeList.push(el);
|
|
5468
|
+
var id = seed++;
|
|
5469
|
+
el[ctx] = {
|
|
5470
|
+
id: id,
|
|
5471
|
+
documentHandler: createDocumentHandler(el, binding, vnode),
|
|
5472
|
+
methodName: binding.expression,
|
|
5473
|
+
bindingFn: binding.value
|
|
5474
|
+
};
|
|
5475
|
+
},
|
|
5476
|
+
update: function update(el, binding, vnode) {
|
|
5477
|
+
el[ctx].documentHandler = createDocumentHandler(el, binding, vnode);
|
|
5478
|
+
el[ctx].methodName = binding.expression;
|
|
5479
|
+
el[ctx].bindingFn = binding.value;
|
|
5480
|
+
},
|
|
5481
|
+
unbind: function unbind(el) {
|
|
5482
|
+
var len = nodeList.length;
|
|
5484
5483
|
|
|
5485
|
-
|
|
5484
|
+
for (var i = 0; i < len; i++) {
|
|
5485
|
+
if (nodeList[i][ctx].id === el[ctx].id) {
|
|
5486
|
+
nodeList.splice(i, 1);
|
|
5487
|
+
break;
|
|
5488
|
+
}
|
|
5489
|
+
}
|
|
5490
|
+
delete el[ctx];
|
|
5491
|
+
}
|
|
5492
|
+
});
|
|
5486
5493
|
|
|
5487
5494
|
/***/ }),
|
|
5488
5495
|
|
|
5489
|
-
/***/
|
|
5496
|
+
/***/ 27:
|
|
5490
5497
|
/***/ (function(module, exports) {
|
|
5491
5498
|
|
|
5492
|
-
module.exports = require("
|
|
5499
|
+
module.exports = require("eoss/lib/button");
|
|
5493
5500
|
|
|
5494
5501
|
/***/ }),
|
|
5495
5502
|
|
|
5496
|
-
/***/
|
|
5503
|
+
/***/ 28:
|
|
5497
5504
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5498
5505
|
|
|
5499
5506
|
"use strict";
|
|
@@ -5539,14 +5546,14 @@ module.exports = require("lodash/cloneDeep");
|
|
|
5539
5546
|
var definedEvents = componentOptions.listeners || {};
|
|
5540
5547
|
|
|
5541
5548
|
for (var propName in definedProps) {
|
|
5542
|
-
propName = Object(eoss_src_utils_util__WEBPACK_IMPORTED_MODULE_0__[/* kebabCase */ "
|
|
5549
|
+
propName = Object(eoss_src_utils_util__WEBPACK_IMPORTED_MODULE_0__[/* kebabCase */ "I"])(propName); // compatible with camel case
|
|
5543
5550
|
if (props[propName]) {
|
|
5544
5551
|
console.warn('[Eoss Migrating][' + this.$options.name + '][Attribute]: ' + props[propName]);
|
|
5545
5552
|
}
|
|
5546
5553
|
}
|
|
5547
5554
|
|
|
5548
5555
|
for (var eventName in definedEvents) {
|
|
5549
|
-
eventName = Object(eoss_src_utils_util__WEBPACK_IMPORTED_MODULE_0__[/* kebabCase */ "
|
|
5556
|
+
eventName = Object(eoss_src_utils_util__WEBPACK_IMPORTED_MODULE_0__[/* kebabCase */ "I"])(eventName); // compatible with camel case
|
|
5550
5557
|
if (events[eventName]) {
|
|
5551
5558
|
console.warn('[Eoss Migrating][' + this.$options.name + '][Event]: ' + events[eventName]);
|
|
5552
5559
|
}
|
|
@@ -5565,13 +5572,6 @@ module.exports = require("lodash/cloneDeep");
|
|
|
5565
5572
|
|
|
5566
5573
|
/***/ }),
|
|
5567
5574
|
|
|
5568
|
-
/***/ 28:
|
|
5569
|
-
/***/ (function(module, exports) {
|
|
5570
|
-
|
|
5571
|
-
module.exports = require("eoss/lib/button");
|
|
5572
|
-
|
|
5573
|
-
/***/ }),
|
|
5574
|
-
|
|
5575
5575
|
/***/ 3:
|
|
5576
5576
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5577
5577
|
|
|
@@ -5687,6 +5687,73 @@ module.exports = require("vue");
|
|
|
5687
5687
|
/***/ 5:
|
|
5688
5688
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5689
5689
|
|
|
5690
|
+
"use strict";
|
|
5691
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isString; });
|
|
5692
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isObject; });
|
|
5693
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isHtmlElement; });
|
|
5694
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isFunction; });
|
|
5695
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return isUndefined; });
|
|
5696
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isDefined; });
|
|
5697
|
+
/**
|
|
5698
|
+
* 检查一个值是否为字符串类型
|
|
5699
|
+
* @param {*} obj 要检查的值
|
|
5700
|
+
* @returns {boolean} 如果值为字符串则返回true,否则返回false
|
|
5701
|
+
*/
|
|
5702
|
+
function isString(obj) {
|
|
5703
|
+
return Object.prototype.toString.call(obj) === '[object String]';
|
|
5704
|
+
}
|
|
5705
|
+
|
|
5706
|
+
/**
|
|
5707
|
+
* 检查一个值是否为对象类型
|
|
5708
|
+
* @param {*} obj 要检查的值
|
|
5709
|
+
* @returns {boolean} 如果值为对象则返回true,否则返回false
|
|
5710
|
+
*/
|
|
5711
|
+
function isObject(obj) {
|
|
5712
|
+
return Object.prototype.toString.call(obj) === '[object Object]';
|
|
5713
|
+
}
|
|
5714
|
+
|
|
5715
|
+
/**
|
|
5716
|
+
* 检查一个节点是否为HTML元素
|
|
5717
|
+
* @param {Node} node 要检查的节点
|
|
5718
|
+
* @returns {boolean} 如果节点为HTML元素则返回true,否则返回false
|
|
5719
|
+
*/
|
|
5720
|
+
function isHtmlElement(node) {
|
|
5721
|
+
return node && node.nodeType === Node.ELEMENT_NODE;
|
|
5722
|
+
}
|
|
5723
|
+
|
|
5724
|
+
/**
|
|
5725
|
+
* 检查一个值是否为函数类型
|
|
5726
|
+
* @param {*} functionToCheck 要检查的值
|
|
5727
|
+
* @returns {boolean} 如果值为函数则返回true,否则返回false
|
|
5728
|
+
*/
|
|
5729
|
+
function isFunction(functionToCheck) {
|
|
5730
|
+
var getType = {};
|
|
5731
|
+
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
|
|
5732
|
+
}
|
|
5733
|
+
|
|
5734
|
+
/**
|
|
5735
|
+
* 检查一个值是否为undefined
|
|
5736
|
+
* @param {*} val 要检查的值
|
|
5737
|
+
* @returns {boolean} 如果值为undefined则返回true,否则返回false
|
|
5738
|
+
*/
|
|
5739
|
+
function isUndefined(val) {
|
|
5740
|
+
return val === void 0;
|
|
5741
|
+
}
|
|
5742
|
+
|
|
5743
|
+
/**
|
|
5744
|
+
* 检查一个值是否已定义(不是undefined或null)
|
|
5745
|
+
* @param {*} val 要检查的值
|
|
5746
|
+
* @returns {boolean} 如果值已定义则返回true,否则返回false
|
|
5747
|
+
*/
|
|
5748
|
+
function isDefined(val) {
|
|
5749
|
+
return val !== undefined && val !== null;
|
|
5750
|
+
}
|
|
5751
|
+
|
|
5752
|
+
/***/ }),
|
|
5753
|
+
|
|
5754
|
+
/***/ 6:
|
|
5755
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5756
|
+
|
|
5690
5757
|
"use strict";
|
|
5691
5758
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return on; });
|
|
5692
5759
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return off; });
|
|
@@ -5943,73 +6010,6 @@ function insertAfter(newEl, targetEl) {
|
|
|
5943
6010
|
|
|
5944
6011
|
/***/ }),
|
|
5945
6012
|
|
|
5946
|
-
/***/ 6:
|
|
5947
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5948
|
-
|
|
5949
|
-
"use strict";
|
|
5950
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isString; });
|
|
5951
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isObject; });
|
|
5952
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isHtmlElement; });
|
|
5953
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isFunction; });
|
|
5954
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return isUndefined; });
|
|
5955
|
-
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isDefined; });
|
|
5956
|
-
/**
|
|
5957
|
-
* 检查一个值是否为字符串类型
|
|
5958
|
-
* @param {*} obj 要检查的值
|
|
5959
|
-
* @returns {boolean} 如果值为字符串则返回true,否则返回false
|
|
5960
|
-
*/
|
|
5961
|
-
function isString(obj) {
|
|
5962
|
-
return Object.prototype.toString.call(obj) === '[object String]';
|
|
5963
|
-
}
|
|
5964
|
-
|
|
5965
|
-
/**
|
|
5966
|
-
* 检查一个值是否为对象类型
|
|
5967
|
-
* @param {*} obj 要检查的值
|
|
5968
|
-
* @returns {boolean} 如果值为对象则返回true,否则返回false
|
|
5969
|
-
*/
|
|
5970
|
-
function isObject(obj) {
|
|
5971
|
-
return Object.prototype.toString.call(obj) === '[object Object]';
|
|
5972
|
-
}
|
|
5973
|
-
|
|
5974
|
-
/**
|
|
5975
|
-
* 检查一个节点是否为HTML元素
|
|
5976
|
-
* @param {Node} node 要检查的节点
|
|
5977
|
-
* @returns {boolean} 如果节点为HTML元素则返回true,否则返回false
|
|
5978
|
-
*/
|
|
5979
|
-
function isHtmlElement(node) {
|
|
5980
|
-
return node && node.nodeType === Node.ELEMENT_NODE;
|
|
5981
|
-
}
|
|
5982
|
-
|
|
5983
|
-
/**
|
|
5984
|
-
* 检查一个值是否为函数类型
|
|
5985
|
-
* @param {*} functionToCheck 要检查的值
|
|
5986
|
-
* @returns {boolean} 如果值为函数则返回true,否则返回false
|
|
5987
|
-
*/
|
|
5988
|
-
function isFunction(functionToCheck) {
|
|
5989
|
-
var getType = {};
|
|
5990
|
-
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
|
|
5991
|
-
}
|
|
5992
|
-
|
|
5993
|
-
/**
|
|
5994
|
-
* 检查一个值是否为undefined
|
|
5995
|
-
* @param {*} val 要检查的值
|
|
5996
|
-
* @returns {boolean} 如果值为undefined则返回true,否则返回false
|
|
5997
|
-
*/
|
|
5998
|
-
function isUndefined(val) {
|
|
5999
|
-
return val === void 0;
|
|
6000
|
-
}
|
|
6001
|
-
|
|
6002
|
-
/**
|
|
6003
|
-
* 检查一个值是否已定义(不是undefined或null)
|
|
6004
|
-
* @param {*} val 要检查的值
|
|
6005
|
-
* @returns {boolean} 如果值已定义则返回true,否则返回false
|
|
6006
|
-
*/
|
|
6007
|
-
function isDefined(val) {
|
|
6008
|
-
return val !== undefined && val !== null;
|
|
6009
|
-
}
|
|
6010
|
-
|
|
6011
|
-
/***/ }),
|
|
6012
|
-
|
|
6013
6013
|
/***/ 8:
|
|
6014
6014
|
/***/ (function(module, exports) {
|
|
6015
6015
|
|
|
@@ -6017,14 +6017,14 @@ module.exports = require("eoss/lib/message-box");
|
|
|
6017
6017
|
|
|
6018
6018
|
/***/ }),
|
|
6019
6019
|
|
|
6020
|
-
/***/
|
|
6020
|
+
/***/ 87:
|
|
6021
6021
|
/***/ (function(module, exports) {
|
|
6022
6022
|
|
|
6023
6023
|
module.exports = require("eoss/lib/button-group");
|
|
6024
6024
|
|
|
6025
6025
|
/***/ }),
|
|
6026
6026
|
|
|
6027
|
-
/***/
|
|
6027
|
+
/***/ 96:
|
|
6028
6028
|
/***/ (function(module, exports) {
|
|
6029
6029
|
|
|
6030
6030
|
module.exports = require("eoss/lib/dropdown-menu");
|