overseas 0.0.1
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/README.md +12 -0
- package/lib/base/bottom-popup.js +550 -0
- package/lib/base/button.js +400 -0
- package/lib/base/dialog.js +979 -0
- package/lib/base/icon.js +273 -0
- package/lib/base/image.js +309 -0
- package/lib/base/material-list.js +357 -0
- package/lib/base/popup.js +364 -0
- package/lib/business/basic-image.js +325 -0
- package/lib/business/bottom-fixed-button.js +350 -0
- package/lib/business/class-choose.js +1717 -0
- package/lib/business/grade-panel.js +683 -0
- package/lib/business/material-panel.js +778 -0
- package/lib/business/notified-panel.js +2141 -0
- package/lib/business/page-render.js +364 -0
- package/lib/business/registration-panel.js +1071 -0
- package/lib/business/selector-panel.js +667 -0
- package/lib/business/student-info.js +1172 -0
- package/lib/business/switch-student.js +1407 -0
- package/lib/business/tips-popup.js +626 -0
- package/lib/business/user-login.js +816 -0
- package/lib/index.js +1 -0
- package/lib/network/api.js +64 -0
- package/lib/network/apiUrl.js +68 -0
- package/lib/overseas-ui.common.js +8771 -0
- package/lib/static/logo.b6015b3.png +0 -0
- package/lib/static/logo.b6015b30.png +0 -0
- package/lib/theme-style/bottom-fixed-button.css +1 -0
- package/lib/theme-style/bottom-popup.css +1 -0
- package/lib/theme-style/button.css +1 -0
- package/lib/theme-style/class-choose.css +1 -0
- package/lib/theme-style/common.css +1 -0
- package/lib/theme-style/dialog.css +1 -0
- package/lib/theme-style/grade-panel.css +1 -0
- package/lib/theme-style/icon.css +1 -0
- package/lib/theme-style/image.css +1 -0
- package/lib/theme-style/img/body_bg.png +0 -0
- package/lib/theme-style/img/pdf.png +0 -0
- package/lib/theme-style/img/title_bg.png +0 -0
- package/lib/theme-style/index.css +1 -0
- package/lib/theme-style/material-list.css +1 -0
- package/lib/theme-style/material-panel.css +1 -0
- package/lib/theme-style/notified-panel.css +1 -0
- package/lib/theme-style/page-render.css +1 -0
- package/lib/theme-style/registration-panel.css +1 -0
- package/lib/theme-style/selector-panel.css +1 -0
- package/lib/theme-style/student-info.css +1 -0
- package/lib/theme-style/switch-student.css +1 -0
- package/lib/theme-style/tips-popup.css +1 -0
- package/lib/theme-style/user-login.css +1 -0
- package/lib/utils/dom.js +60 -0
- package/lib/utils/filters.js +87 -0
- package/lib/utils/merge.js +19 -0
- package/lib/utils/phone.js +156 -0
- package/lib/utils/popup/index.js +132 -0
- package/lib/utils/popup/popup-manager.js +198 -0
- package/lib/utils/storage.js +27 -0
- package/lib/utils/utils.js +65 -0
- package/package.json +80 -0
- package/packages/.DS_Store +0 -0
- package/packages/base/bottom-popup/index.js +10 -0
- package/packages/base/bottom-popup/src/bottom-popup.vue +151 -0
- package/packages/base/button/index.js +10 -0
- package/packages/base/button/src/button.vue +108 -0
- package/packages/base/dialog/index.js +10 -0
- package/packages/base/dialog/src/dialog.vue +173 -0
- package/packages/base/icon/index.js +10 -0
- package/packages/base/icon/src/icon.vue +15 -0
- package/packages/base/image/index.js +10 -0
- package/packages/base/image/src/image.vue +40 -0
- package/packages/base/material-list/index.js +10 -0
- package/packages/base/material-list/src/material-list.vue +48 -0
- package/packages/base/popup/index.js +10 -0
- package/packages/base/popup/src/popup.vue +44 -0
- package/packages/business/basic-image/index.js +10 -0
- package/packages/business/basic-image/src/basicImage.vue +51 -0
- package/packages/business/bottom-fixed-button/index.js +10 -0
- package/packages/business/bottom-fixed-button/src/bottomFixedButton.vue +66 -0
- package/packages/business/class-choose/index.js +10 -0
- package/packages/business/class-choose/src/courseCard.vue +142 -0
- package/packages/business/class-choose/src/img/icon_close_bottomcard.svg +14 -0
- package/packages/business/class-choose/src/img/icon_date.svg +21 -0
- package/packages/business/class-choose/src/img/icon_full.svg +27 -0
- package/packages/business/class-choose/src/img/icon_full_EL.svg +49 -0
- package/packages/business/class-choose/src/img/icon_selected.svg +18 -0
- package/packages/business/class-choose/src/img/icon_star_selected.svg +13 -0
- package/packages/business/class-choose/src/img/icon_star_unselect.svg +13 -0
- package/packages/business/class-choose/src/index.vue +316 -0
- package/packages/business/grade-panel/index.js +10 -0
- package/packages/business/grade-panel/src/gradePanel.vue +150 -0
- package/packages/business/material-panel/index.js +10 -0
- package/packages/business/material-panel/src/index.vue +136 -0
- package/packages/business/notified-panel/index.js +10 -0
- package/packages/business/notified-panel/src/areaCodeList.js +181 -0
- package/packages/business/notified-panel/src/index.vue +491 -0
- package/packages/business/page-render/index.js +10 -0
- package/packages/business/page-render/src/pageRender.vue +73 -0
- package/packages/business/registration-panel/index.js +10 -0
- package/packages/business/registration-panel/src/areaCodeList.js +181 -0
- package/packages/business/registration-panel/src/img/icon_off.png +0 -0
- package/packages/business/registration-panel/src/img/icon_on.png +0 -0
- package/packages/business/registration-panel/src/index.vue +329 -0
- package/packages/business/registration-panel/src/languageList.js +41 -0
- package/packages/business/selector-panel/index.js +10 -0
- package/packages/business/selector-panel/src/selectorPanel.vue +134 -0
- package/packages/business/student-info/index.js +10 -0
- package/packages/business/student-info/src/api/index.js +10 -0
- package/packages/business/student-info/src/config.js +11 -0
- package/packages/business/student-info/src/studentInfo.vue +145 -0
- package/packages/business/switch-student/index.js +10 -0
- package/packages/business/switch-student/src/api/index.js +28 -0
- package/packages/business/switch-student/src/switchStudent.vue +245 -0
- package/packages/business/tips-popup/index.js +10 -0
- package/packages/business/tips-popup/src/tipsPopup.vue +76 -0
- package/packages/business/user-login/index.js +10 -0
- package/packages/business/user-login/src/api/index.js +23 -0
- package/packages/business/user-login/src/img/logo.png +0 -0
- package/packages/business/user-login/src/index.vue +149 -0
- package/packages/theme-style/lib/bottom-fixed-button.css +1 -0
- package/packages/theme-style/lib/bottom-popup.css +1 -0
- package/packages/theme-style/lib/button.css +1 -0
- package/packages/theme-style/lib/class-choose.css +1 -0
- package/packages/theme-style/lib/common.css +1 -0
- package/packages/theme-style/lib/dialog.css +1 -0
- package/packages/theme-style/lib/grade-panel.css +1 -0
- package/packages/theme-style/lib/icon.css +1 -0
- package/packages/theme-style/lib/image.css +1 -0
- package/packages/theme-style/lib/img/body_bg.png +0 -0
- package/packages/theme-style/lib/img/pdf.png +0 -0
- package/packages/theme-style/lib/img/title_bg.png +0 -0
- package/packages/theme-style/lib/index.css +1 -0
- package/packages/theme-style/lib/material-list.css +1 -0
- package/packages/theme-style/lib/material-panel.css +1 -0
- package/packages/theme-style/lib/notified-panel.css +1 -0
- package/packages/theme-style/lib/page-render.css +1 -0
- package/packages/theme-style/lib/registration-panel.css +1 -0
- package/packages/theme-style/lib/selector-panel.css +1 -0
- package/packages/theme-style/lib/student-info.css +1 -0
- package/packages/theme-style/lib/switch-student.css +1 -0
- package/packages/theme-style/lib/tips-popup.css +1 -0
- package/packages/theme-style/lib/user-login.css +1 -0
- package/packages/theme-style/package.json +38 -0
- package/packages/theme-style/src/bottom-fixed-button.scss +31 -0
- package/packages/theme-style/src/bottom-popup.scss +87 -0
- package/packages/theme-style/src/button.scss +110 -0
- package/packages/theme-style/src/class-choose.scss +251 -0
- package/packages/theme-style/src/common/popup.scss +39 -0
- package/packages/theme-style/src/common/var.scss +6 -0
- package/packages/theme-style/src/common.scss +97 -0
- package/packages/theme-style/src/dialog.scss +130 -0
- package/packages/theme-style/src/grade-panel.scss +76 -0
- package/packages/theme-style/src/icon.scss +369 -0
- package/packages/theme-style/src/image.scss +8 -0
- package/packages/theme-style/src/img/body_bg.png +0 -0
- package/packages/theme-style/src/img/pdf.png +0 -0
- package/packages/theme-style/src/img/title_bg.png +0 -0
- package/packages/theme-style/src/index.scss +20 -0
- package/packages/theme-style/src/material-list.scss +118 -0
- package/packages/theme-style/src/material-panel.scss +2 -0
- package/packages/theme-style/src/notified-panel.scss +207 -0
- package/packages/theme-style/src/page-render.scss +3 -0
- package/packages/theme-style/src/registration-panel.scss +158 -0
- package/packages/theme-style/src/selector-panel.scss +86 -0
- package/packages/theme-style/src/student-info.scss +114 -0
- package/packages/theme-style/src/switch-student.scss +176 -0
- package/packages/theme-style/src/tips-popup.scss +60 -0
- package/packages/theme-style/src/user-login.scss +93 -0
- package/src/index.js +74 -0
- package/src/network/api.js +53 -0
- package/src/network/apiUrl.js +65 -0
- package/src/utils/dom.js +54 -0
- package/src/utils/filters.js +82 -0
- package/src/utils/merge.js +16 -0
- package/src/utils/phone.js +153 -0
- package/src/utils/popup/index.js +115 -0
- package/src/utils/popup/popup-manager.js +178 -0
- package/src/utils/storage.js +22 -0
- package/src/utils/utils.js +49 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _vue = require('vue');
|
|
6
|
+
|
|
7
|
+
var _vue2 = _interopRequireDefault(_vue);
|
|
8
|
+
|
|
9
|
+
var _merge = require('../merge');
|
|
10
|
+
|
|
11
|
+
var _merge2 = _interopRequireDefault(_merge);
|
|
12
|
+
|
|
13
|
+
var _popupManager = require('./popup-manager');
|
|
14
|
+
|
|
15
|
+
var _popupManager2 = _interopRequireDefault(_popupManager);
|
|
16
|
+
|
|
17
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
|
|
19
|
+
var idSeed = 1;
|
|
20
|
+
|
|
21
|
+
exports.default = {
|
|
22
|
+
props: {
|
|
23
|
+
visible: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
default: false
|
|
26
|
+
},
|
|
27
|
+
// 点击蒙层时关闭
|
|
28
|
+
closeOnClickModal: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: false
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
data: function data() {
|
|
34
|
+
return {};
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
watch: {
|
|
38
|
+
visible: function visible(val) {
|
|
39
|
+
var _this = this;
|
|
40
|
+
|
|
41
|
+
if (val) {
|
|
42
|
+
if (this._opening) return;
|
|
43
|
+
if (!this.rendered) {
|
|
44
|
+
this.rendered = true;
|
|
45
|
+
_vue2.default.nextTick(function () {
|
|
46
|
+
_this.open();
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
this.open();
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
this.close();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
beforeMount: function beforeMount() {
|
|
57
|
+
// 组件渲染前
|
|
58
|
+
this._popupId = 'popup-' + (idSeed += 1);
|
|
59
|
+
_popupManager2.default.register(this._popupId, this);
|
|
60
|
+
},
|
|
61
|
+
beforeDestory: function beforeDestory() {
|
|
62
|
+
// 组件销毁前
|
|
63
|
+
_popupManager2.default.deregister(this._popupId);
|
|
64
|
+
_popupManager2.default.closeModal();
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
methods: {
|
|
68
|
+
open: function open(options) {
|
|
69
|
+
console.log('open dialog');
|
|
70
|
+
var props = (0, _merge2.default)({}, this.$props || this, options);
|
|
71
|
+
this.doOpen(props);
|
|
72
|
+
},
|
|
73
|
+
doOpen: function doOpen(props) {
|
|
74
|
+
console.log('do open');
|
|
75
|
+
if (this.$isServer) return;
|
|
76
|
+
if (this.opened) return;
|
|
77
|
+
|
|
78
|
+
console.log('do opening');
|
|
79
|
+
|
|
80
|
+
this._opening = true;
|
|
81
|
+
|
|
82
|
+
var dom = this.$el;
|
|
83
|
+
|
|
84
|
+
var modal = props.modal;
|
|
85
|
+
var zIndex = props.zIndex;
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
if (zIndex) {
|
|
89
|
+
_popupManager2.default.zIndex = zIndex;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// 显示遮罩层
|
|
93
|
+
if (modal) {
|
|
94
|
+
if (this._closing) {
|
|
95
|
+
_popupManager2.default.closeModal(this._popupId);
|
|
96
|
+
this._closing = false;
|
|
97
|
+
}
|
|
98
|
+
_popupManager2.default.openModal(this._popupId, _popupManager2.default.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
dom.style.zIndex = _popupManager2.default.nextZIndex();
|
|
102
|
+
this.opened = true;
|
|
103
|
+
|
|
104
|
+
if (this.onOpen) this.onOpen();
|
|
105
|
+
|
|
106
|
+
this.doAfterOpen();
|
|
107
|
+
},
|
|
108
|
+
doAfterOpen: function doAfterOpen() {
|
|
109
|
+
this._opening = false;
|
|
110
|
+
},
|
|
111
|
+
close: function close() {
|
|
112
|
+
this.doClose();
|
|
113
|
+
},
|
|
114
|
+
doClose: function doClose() {
|
|
115
|
+
this._closing = true;
|
|
116
|
+
|
|
117
|
+
if (this.onClose) this.onClose();
|
|
118
|
+
|
|
119
|
+
// if (this.lockScroll) {
|
|
120
|
+
// setTimeout(this.restoreBodyStyle, 200);
|
|
121
|
+
// }
|
|
122
|
+
|
|
123
|
+
this.opened = false;
|
|
124
|
+
|
|
125
|
+
this.doAfterClose();
|
|
126
|
+
},
|
|
127
|
+
doAfterClose: function doAfterClose() {
|
|
128
|
+
_popupManager2.default.closeModal(this._popupId);
|
|
129
|
+
this._closing = false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _vue = require('vue');
|
|
6
|
+
|
|
7
|
+
var _vue2 = _interopRequireDefault(_vue);
|
|
8
|
+
|
|
9
|
+
var _dom = require('../dom');
|
|
10
|
+
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
|
|
13
|
+
/* eslint-disable no-use-before-define */
|
|
14
|
+
var hasInitZIndex = false;
|
|
15
|
+
var initZIndex = 2000;
|
|
16
|
+
var zIndex = void 0;
|
|
17
|
+
var hasModal = false;
|
|
18
|
+
|
|
19
|
+
// eslint-disable-next-line func-names
|
|
20
|
+
var getModal = function getModal() {
|
|
21
|
+
if (_vue2.default.prototype.$isServer) return null;
|
|
22
|
+
var modalDom = PopupManager.modalDom;
|
|
23
|
+
|
|
24
|
+
if (modalDom) {
|
|
25
|
+
hasModal = true;
|
|
26
|
+
} else {
|
|
27
|
+
hasModal = false;
|
|
28
|
+
modalDom = document.createElement('div');
|
|
29
|
+
PopupManager.modalDom = modalDom;
|
|
30
|
+
|
|
31
|
+
modalDom.addEventListener('touchmove', function (event) {
|
|
32
|
+
event.preventDefault();
|
|
33
|
+
event.stopPropagation();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
modalDom.addEventListener('click', function () {
|
|
37
|
+
if (PopupManager.doOnModalClick) PopupManager.doOnModalClick();
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return modalDom;
|
|
42
|
+
};
|
|
43
|
+
var instances = {};
|
|
44
|
+
|
|
45
|
+
var PopupManager = {
|
|
46
|
+
modalFade: true,
|
|
47
|
+
|
|
48
|
+
getInstance: function getInstance(id) {
|
|
49
|
+
return instances[id];
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
// 注册弹出层
|
|
54
|
+
register: function register(id, instance) {
|
|
55
|
+
if (id && instance) {
|
|
56
|
+
instances[id] = instance;
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
// 删除弹出层
|
|
62
|
+
deregister: function deregister(id) {
|
|
63
|
+
if (id) {
|
|
64
|
+
instances[id] = null;
|
|
65
|
+
delete instances[id];
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
nextZIndex: function nextZIndex() {
|
|
69
|
+
// eslint-disable-next-line no-plusplus
|
|
70
|
+
return PopupManager.zIndex++;
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
modalStack: [],
|
|
75
|
+
|
|
76
|
+
doOnModalClick: function doOnModalClick() {
|
|
77
|
+
var topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
|
|
78
|
+
if (!topItem) return;
|
|
79
|
+
|
|
80
|
+
var instance = PopupManager.getInstance(topItem.id);
|
|
81
|
+
if (instance && instance.closeOnClickModal) {
|
|
82
|
+
instance.close();
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
// 显示蒙层
|
|
88
|
+
// eslint-disable-next-line no-shadow
|
|
89
|
+
openModal: function openModal(id, zIndex, dom, modalClass, modalFade) {
|
|
90
|
+
console.log('open modal');
|
|
91
|
+
if (_vue2.default.prototype.$isServer) return;
|
|
92
|
+
if (!id || zIndex === undefined) return;
|
|
93
|
+
|
|
94
|
+
this.modalFade = modalFade;
|
|
95
|
+
|
|
96
|
+
var modalStack = this.modalStack;
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
for (var i = 0, j = modalStack.length; i < j; i += 1) {
|
|
100
|
+
var item = modalStack[i];
|
|
101
|
+
if (item.id === id) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
var modalDom = getModal();
|
|
107
|
+
|
|
108
|
+
(0, _dom.addClass)(modalDom, 'v-modal');
|
|
109
|
+
if (this.modalFade && !hasModal) {
|
|
110
|
+
(0, _dom.addClass)(modalDom, 'v-modal-enter');
|
|
111
|
+
}
|
|
112
|
+
if (modalClass) {
|
|
113
|
+
var classArr = modalClass.trim().split(/\s+/);
|
|
114
|
+
classArr.forEach(function (item) {
|
|
115
|
+
return (0, _dom.addClass)(modalDom, item);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
setTimeout(function () {
|
|
119
|
+
(0, _dom.removeClass)(modalDom, 'v-modal-enter');
|
|
120
|
+
}, 200);
|
|
121
|
+
|
|
122
|
+
if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
|
|
123
|
+
dom.parentNode.appendChild(modalDom);
|
|
124
|
+
} else {
|
|
125
|
+
document.body.appendChild(modalDom);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (zIndex) {
|
|
129
|
+
modalDom.style.zIndex = zIndex;
|
|
130
|
+
}
|
|
131
|
+
modalDom.tabIndex = 0;
|
|
132
|
+
modalDom.style.display = '';
|
|
133
|
+
|
|
134
|
+
this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
// 关闭蒙层
|
|
139
|
+
closeModal: function closeModal(id) {
|
|
140
|
+
var modalStack = this.modalStack;
|
|
141
|
+
|
|
142
|
+
var modalDom = getModal();
|
|
143
|
+
|
|
144
|
+
if (modalStack.length > 0) {
|
|
145
|
+
var topItem = modalStack[modalStack.length - 1];
|
|
146
|
+
if (topItem.id === id) {
|
|
147
|
+
if (topItem.modalClass) {
|
|
148
|
+
var classArr = topItem.modalClass.trim().split(/\s+/);
|
|
149
|
+
classArr.forEach(function (item) {
|
|
150
|
+
return (0, _dom.removeClass)(modalDom, item);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
modalStack.pop();
|
|
155
|
+
if (modalStack.length > 0) {
|
|
156
|
+
modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
|
|
157
|
+
}
|
|
158
|
+
} else {
|
|
159
|
+
for (var i = modalStack.length - 1; i >= 0; i -= 1) {
|
|
160
|
+
if (modalStack[i].id === id) {
|
|
161
|
+
modalStack.splice(i, 1);
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (modalStack.length === 0) {
|
|
169
|
+
if (this.modalFade) {
|
|
170
|
+
(0, _dom.addClass)(modalDom, 'v-modal-leave');
|
|
171
|
+
}
|
|
172
|
+
setTimeout(function () {
|
|
173
|
+
if (modalStack.length === 0) {
|
|
174
|
+
if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
|
|
175
|
+
modalDom.style.display = 'none';
|
|
176
|
+
PopupManager.modalDom = undefined;
|
|
177
|
+
}
|
|
178
|
+
(0, _dom.removeClass)(modalDom, 'v-modal-leave');
|
|
179
|
+
}, 200);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
Object.defineProperty(PopupManager, 'zIndex', {
|
|
185
|
+
configurable: true,
|
|
186
|
+
get: function get() {
|
|
187
|
+
if (!hasInitZIndex) {
|
|
188
|
+
zIndex = zIndex || (_vue2.default.prototype.$ELEMENT || {}).zIndex || initZIndex;
|
|
189
|
+
hasInitZIndex = true;
|
|
190
|
+
}
|
|
191
|
+
return zIndex;
|
|
192
|
+
},
|
|
193
|
+
set: function set(value) {
|
|
194
|
+
zIndex = value;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
exports.default = PopupManager;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
var myStorage = exports.myStorage = {
|
|
5
|
+
//存储
|
|
6
|
+
set: function set(key, value) {
|
|
7
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
8
|
+
},
|
|
9
|
+
|
|
10
|
+
//取出数据
|
|
11
|
+
get: function get(key) {
|
|
12
|
+
try {
|
|
13
|
+
var value = localStorage.getItem(key);
|
|
14
|
+
if (value === null || value === undefined || value === "") {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return JSON.parse(localStorage.getItem(key));
|
|
18
|
+
} catch (err) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
//删除数据
|
|
24
|
+
remove: function remove(key) {
|
|
25
|
+
localStorage.removeItem(key);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.removeCookies = exports.getCookies = exports.setCookies = undefined;
|
|
5
|
+
|
|
6
|
+
var _jsCookie = require('js-cookie');
|
|
7
|
+
|
|
8
|
+
var _jsCookie2 = _interopRequireDefault(_jsCookie);
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 设置accessToken
|
|
14
|
+
*/
|
|
15
|
+
var setCookies = exports.setCookies = function setCookies() {
|
|
16
|
+
var tokenName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '_official_token';
|
|
17
|
+
var token = arguments[1];
|
|
18
|
+
|
|
19
|
+
var domain = window.location.hostname;
|
|
20
|
+
var reg = /\./g;
|
|
21
|
+
var domainTestResult = domain.match(reg);
|
|
22
|
+
// cookies存储在二级域名上
|
|
23
|
+
if (domainTestResult && domainTestResult.length > 1) {
|
|
24
|
+
var regDomain = /\.[a-zA-Z\d\.]+$/;
|
|
25
|
+
var result = domain.match(regDomain);
|
|
26
|
+
// eslint-disable-next-line prefer-destructuring
|
|
27
|
+
if (result && result.length > 0) domain = result[0];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 历史原因,设置Cookies之前,先删除原完整域名下的cookies
|
|
31
|
+
_jsCookie2.default.remove(tokenName);
|
|
32
|
+
// 设置官网的Cookies
|
|
33
|
+
_jsCookie2.default.set(tokenName, token, { expires: 365, domain: domain });
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 移除Cookies
|
|
38
|
+
*/
|
|
39
|
+
var getCookies = exports.getCookies = function getCookies() {
|
|
40
|
+
var tokenName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '_official_token';
|
|
41
|
+
|
|
42
|
+
return _jsCookie2.default.get(tokenName) || '';
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* 移除Cookies
|
|
47
|
+
*/
|
|
48
|
+
var removeCookies = exports.removeCookies = function removeCookies() {
|
|
49
|
+
var tokenName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '_official_token';
|
|
50
|
+
|
|
51
|
+
var domain = window.location.hostname;
|
|
52
|
+
var reg = /\./g;
|
|
53
|
+
var domainTestResult = domain.match(reg);
|
|
54
|
+
// cookies存储在二级域名上
|
|
55
|
+
if (domainTestResult && domainTestResult.length > 1) {
|
|
56
|
+
var regDomain = /\.[a-zA-Z\d\.]+$/;
|
|
57
|
+
var result = domain.match(regDomain);
|
|
58
|
+
// eslint-disable-next-line prefer-destructuring
|
|
59
|
+
if (result && result.length > 0) domain = result[0];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// 清除官网的Cookies
|
|
63
|
+
_jsCookie2.default.remove(tokenName, { domain: domain });
|
|
64
|
+
_jsCookie2.default.remove(tokenName);
|
|
65
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "overseas",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Think Academy to C UI library",
|
|
5
|
+
"main": "lib/overseas-ui.common.js",
|
|
6
|
+
"author": "lijiahong1@tal.com",
|
|
7
|
+
"license": "ISC",
|
|
8
|
+
"files": [
|
|
9
|
+
"lib",
|
|
10
|
+
"src",
|
|
11
|
+
"packages"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"serve": "webpack-dev-server --config build/webpack.config.dev.js",
|
|
15
|
+
"dist": "yarn run build:cdn && yarn run build:import && yarn run build:components && yarn run build:utils && yarn run build:theme",
|
|
16
|
+
"build:utils": "cross-env BABEL_ENV=utils babel src --out-dir lib --ignore src/index.js",
|
|
17
|
+
"build:theme": "gulp build --gulpfile packages/theme-style/gulpfile.js && cp-cli packages/theme-style/lib lib/theme-style",
|
|
18
|
+
"build:cdn": "webpack --config build/webpack.conf.js",
|
|
19
|
+
"build:import": "webpack --config build/webpack.common.js",
|
|
20
|
+
"build:components": "webpack --config build/webpack.components.js",
|
|
21
|
+
"release": "release-it --npm.skipChecks"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"babel-cli": "^6.26.0",
|
|
25
|
+
"babel-core": "^6.26.3",
|
|
26
|
+
"babel-eslint": "^10.1.0",
|
|
27
|
+
"babel-loader": "^7.1.5",
|
|
28
|
+
"babel-plugin-add-module-exports": "^1.0.4",
|
|
29
|
+
"babel-plugin-module-resolver": "^4.1.0",
|
|
30
|
+
"babel-plugin-syntax-jsx": "^6.18.0",
|
|
31
|
+
"babel-plugin-transform-vue-jsx": "^3.7.0",
|
|
32
|
+
"babel-preset-env": "^1.7.0",
|
|
33
|
+
"babel-preset-stage-2": "^6.24.1",
|
|
34
|
+
"babel-regenerator-runtime": "^6.5.0",
|
|
35
|
+
"cp-cli": "^2.0.0",
|
|
36
|
+
"cross-env": "^7.0.3",
|
|
37
|
+
"css-loader": "2.1.0",
|
|
38
|
+
"eslint": "^6.0.0",
|
|
39
|
+
"eslint-loader": "^4.0.2",
|
|
40
|
+
"eslint-plugin-standard": "^5.0.0",
|
|
41
|
+
"eslint-plugin-vue": "^6.2.2",
|
|
42
|
+
"file-loader": "^6.2.0",
|
|
43
|
+
"gulp": "^4.0.2",
|
|
44
|
+
"gulp-autoprefixer": "^8.0.0",
|
|
45
|
+
"gulp-cache": "^1.1.3",
|
|
46
|
+
"gulp-cssmin": "^0.2.0",
|
|
47
|
+
"gulp-imagemin": "6.2",
|
|
48
|
+
"gulp-sass": "^5.0.0",
|
|
49
|
+
"html-minifier-terser": "^5.0.1",
|
|
50
|
+
"html-webpack-plugin": "4",
|
|
51
|
+
"mini-css-extract-plugin": "0.4.1",
|
|
52
|
+
"node-sass": "4.14.1",
|
|
53
|
+
"progress-bar-webpack-plugin": "^2.1.0",
|
|
54
|
+
"release-it": "^14.11.7",
|
|
55
|
+
"sass": "^1.37.5",
|
|
56
|
+
"sass-loader": "7.1.0",
|
|
57
|
+
"sass-resources-loader": "^2.2.3",
|
|
58
|
+
"style-loader": "0.23.1",
|
|
59
|
+
"stylelint": "^13.13.1",
|
|
60
|
+
"stylelint-config-standard": "^22.0.0",
|
|
61
|
+
"stylelint-webpack-plugin": "^2.2.2",
|
|
62
|
+
"terser-webpack-plugin": "4.2.3",
|
|
63
|
+
"url-loader": "^4.1.1",
|
|
64
|
+
"vue": "^2.6.14",
|
|
65
|
+
"vue-loader": "^15.9.8",
|
|
66
|
+
"vue-style-loader": "^4.1.3",
|
|
67
|
+
"vue-template-compiler": "^2.6.14",
|
|
68
|
+
"webpack": "4.14.0",
|
|
69
|
+
"webpack-cli": "3.0.8",
|
|
70
|
+
"webpack-dev-server": "3.1.11",
|
|
71
|
+
"webpack-node-externals": "1.7.2"
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"axios": "^0.24.0",
|
|
75
|
+
"babel-helper-vue-jsx-merge-props": "^2.0.3",
|
|
76
|
+
"js-cookie": "^3.0.1",
|
|
77
|
+
"vant": "2.12.54"
|
|
78
|
+
},
|
|
79
|
+
"release-it": {}
|
|
80
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<!-- 通用底部弹出层 -->
|
|
3
|
+
<van-popup
|
|
4
|
+
v-model="isShow"
|
|
5
|
+
round
|
|
6
|
+
position="bottom"
|
|
7
|
+
:close-on-click-overlay="closeOnClickOverlay"
|
|
8
|
+
:close-on-popstate="closeOnPopstate"
|
|
9
|
+
>
|
|
10
|
+
<div class="bottom-popup">
|
|
11
|
+
<!-- 完全自定义header -->
|
|
12
|
+
<slot name="custom-header">
|
|
13
|
+
<div class="header-wrapper" :class="{'scrolling-style': isScrolling}">
|
|
14
|
+
<!-- 具备滑动显示阴影的自定义header -->
|
|
15
|
+
<slot name="header">
|
|
16
|
+
<div class="normal-header-container">
|
|
17
|
+
<div v-if="showLeftIcon" class="header-left-container">
|
|
18
|
+
<slot name="left-icon">
|
|
19
|
+
<div class="header-icon-btn-container" @click="leftIconHandler">
|
|
20
|
+
<i class="iconfont icon-close-new-e658" />
|
|
21
|
+
</div>
|
|
22
|
+
</slot>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="title-container">
|
|
25
|
+
<slot name="header-title">
|
|
26
|
+
<h1 class="title">
|
|
27
|
+
{{ popupTitle }}
|
|
28
|
+
</h1>
|
|
29
|
+
</slot>
|
|
30
|
+
</div>
|
|
31
|
+
<div v-if="showRightIcon" class="header-right-container">
|
|
32
|
+
<slot name="right-icon">
|
|
33
|
+
<div class="header-icon-btn-container success-icon-container" @click="rightIconHandler">
|
|
34
|
+
<i class="iconfont icon-close-new-e658" />
|
|
35
|
+
</div>
|
|
36
|
+
</slot>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
<slot name="header-bottom" />
|
|
40
|
+
</slot>
|
|
41
|
+
</div>
|
|
42
|
+
</slot>
|
|
43
|
+
|
|
44
|
+
<!-- 完全自定义body -->
|
|
45
|
+
<slot name="custom-body">
|
|
46
|
+
<div id="normal-bottom-popup-body-wrapper" class="body-wrapper" @scroll="watchScroll">
|
|
47
|
+
<!-- 具备滑动显示阴影的自定义body -->
|
|
48
|
+
<slot name="body" />
|
|
49
|
+
</div>
|
|
50
|
+
</slot>
|
|
51
|
+
</div>
|
|
52
|
+
</van-popup>
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
<script>
|
|
56
|
+
// 节流函数
|
|
57
|
+
const throttle = require('lodash/throttle');
|
|
58
|
+
|
|
59
|
+
export default {
|
|
60
|
+
props: {
|
|
61
|
+
// 弹出层是否显示
|
|
62
|
+
show: {
|
|
63
|
+
default: false,
|
|
64
|
+
type: Boolean,
|
|
65
|
+
},
|
|
66
|
+
// 弹出层标题
|
|
67
|
+
popupTitle: {
|
|
68
|
+
default: '',
|
|
69
|
+
type: String,
|
|
70
|
+
},
|
|
71
|
+
// 是否显示遮罩层
|
|
72
|
+
overlay: {
|
|
73
|
+
default: true,
|
|
74
|
+
type: Boolean,
|
|
75
|
+
},
|
|
76
|
+
// 是否在点击遮罩层后关闭
|
|
77
|
+
closeOnClickOverlay: {
|
|
78
|
+
default: false,
|
|
79
|
+
type: Boolean,
|
|
80
|
+
},
|
|
81
|
+
// 是否在页面回退时自动关闭
|
|
82
|
+
closeOnPopstate: {
|
|
83
|
+
default: false,
|
|
84
|
+
type: Boolean,
|
|
85
|
+
},
|
|
86
|
+
// 是否显示左按钮
|
|
87
|
+
showLeftIcon: {
|
|
88
|
+
default: false,
|
|
89
|
+
type: Boolean,
|
|
90
|
+
},
|
|
91
|
+
// 左侧按钮icon
|
|
92
|
+
leftIconClass: {
|
|
93
|
+
default: 'iconfont icon-close-new-e658',
|
|
94
|
+
type: String,
|
|
95
|
+
},
|
|
96
|
+
// 是否显示右按钮
|
|
97
|
+
showRightIcon: {
|
|
98
|
+
default: true,
|
|
99
|
+
type: Boolean,
|
|
100
|
+
},
|
|
101
|
+
// 右侧按钮icon
|
|
102
|
+
rightIconClass: {
|
|
103
|
+
default: 'iconfont icon-success',
|
|
104
|
+
type: String,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
data() {
|
|
108
|
+
return {
|
|
109
|
+
isScrolling: false,
|
|
110
|
+
pannelBodyScrollTop: 0,
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
computed: {
|
|
114
|
+
isShow: {
|
|
115
|
+
get() {
|
|
116
|
+
return this.show;
|
|
117
|
+
},
|
|
118
|
+
set(newValue) {
|
|
119
|
+
this.$emit('update:show', newValue)
|
|
120
|
+
return newValue;
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
watch: {
|
|
126
|
+
pannelBodyScrollTop(newVal) {
|
|
127
|
+
setTimeout(() => {
|
|
128
|
+
const ele = document.getElementById('normal-bottom-popup-body-wrapper')
|
|
129
|
+
if (newVal !== ele.scrollTop) {
|
|
130
|
+
this.isScrolling = true;
|
|
131
|
+
} else {
|
|
132
|
+
this.isScrolling = false;
|
|
133
|
+
}
|
|
134
|
+
}, 100)
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
methods: {
|
|
138
|
+
watchScroll: throttle(function watchScrollTop() {
|
|
139
|
+
const ele = document.getElementById('normal-bottom-popup-body-wrapper');
|
|
140
|
+
this.pannelBodyScrollTop = ele.scrollTop;
|
|
141
|
+
}),
|
|
142
|
+
rightIconHandler() {
|
|
143
|
+
this.$emit('right-icon-handler');
|
|
144
|
+
},
|
|
145
|
+
leftIconHandler() {
|
|
146
|
+
this.$emit('left-icon-handler');
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
}
|
|
150
|
+
</script>
|
|
151
|
+
|