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.
Files changed (178) hide show
  1. package/README.md +12 -0
  2. package/lib/base/bottom-popup.js +550 -0
  3. package/lib/base/button.js +400 -0
  4. package/lib/base/dialog.js +979 -0
  5. package/lib/base/icon.js +273 -0
  6. package/lib/base/image.js +309 -0
  7. package/lib/base/material-list.js +357 -0
  8. package/lib/base/popup.js +364 -0
  9. package/lib/business/basic-image.js +325 -0
  10. package/lib/business/bottom-fixed-button.js +350 -0
  11. package/lib/business/class-choose.js +1717 -0
  12. package/lib/business/grade-panel.js +683 -0
  13. package/lib/business/material-panel.js +778 -0
  14. package/lib/business/notified-panel.js +2141 -0
  15. package/lib/business/page-render.js +364 -0
  16. package/lib/business/registration-panel.js +1071 -0
  17. package/lib/business/selector-panel.js +667 -0
  18. package/lib/business/student-info.js +1172 -0
  19. package/lib/business/switch-student.js +1407 -0
  20. package/lib/business/tips-popup.js +626 -0
  21. package/lib/business/user-login.js +816 -0
  22. package/lib/index.js +1 -0
  23. package/lib/network/api.js +64 -0
  24. package/lib/network/apiUrl.js +68 -0
  25. package/lib/overseas-ui.common.js +8771 -0
  26. package/lib/static/logo.b6015b3.png +0 -0
  27. package/lib/static/logo.b6015b30.png +0 -0
  28. package/lib/theme-style/bottom-fixed-button.css +1 -0
  29. package/lib/theme-style/bottom-popup.css +1 -0
  30. package/lib/theme-style/button.css +1 -0
  31. package/lib/theme-style/class-choose.css +1 -0
  32. package/lib/theme-style/common.css +1 -0
  33. package/lib/theme-style/dialog.css +1 -0
  34. package/lib/theme-style/grade-panel.css +1 -0
  35. package/lib/theme-style/icon.css +1 -0
  36. package/lib/theme-style/image.css +1 -0
  37. package/lib/theme-style/img/body_bg.png +0 -0
  38. package/lib/theme-style/img/pdf.png +0 -0
  39. package/lib/theme-style/img/title_bg.png +0 -0
  40. package/lib/theme-style/index.css +1 -0
  41. package/lib/theme-style/material-list.css +1 -0
  42. package/lib/theme-style/material-panel.css +1 -0
  43. package/lib/theme-style/notified-panel.css +1 -0
  44. package/lib/theme-style/page-render.css +1 -0
  45. package/lib/theme-style/registration-panel.css +1 -0
  46. package/lib/theme-style/selector-panel.css +1 -0
  47. package/lib/theme-style/student-info.css +1 -0
  48. package/lib/theme-style/switch-student.css +1 -0
  49. package/lib/theme-style/tips-popup.css +1 -0
  50. package/lib/theme-style/user-login.css +1 -0
  51. package/lib/utils/dom.js +60 -0
  52. package/lib/utils/filters.js +87 -0
  53. package/lib/utils/merge.js +19 -0
  54. package/lib/utils/phone.js +156 -0
  55. package/lib/utils/popup/index.js +132 -0
  56. package/lib/utils/popup/popup-manager.js +198 -0
  57. package/lib/utils/storage.js +27 -0
  58. package/lib/utils/utils.js +65 -0
  59. package/package.json +80 -0
  60. package/packages/.DS_Store +0 -0
  61. package/packages/base/bottom-popup/index.js +10 -0
  62. package/packages/base/bottom-popup/src/bottom-popup.vue +151 -0
  63. package/packages/base/button/index.js +10 -0
  64. package/packages/base/button/src/button.vue +108 -0
  65. package/packages/base/dialog/index.js +10 -0
  66. package/packages/base/dialog/src/dialog.vue +173 -0
  67. package/packages/base/icon/index.js +10 -0
  68. package/packages/base/icon/src/icon.vue +15 -0
  69. package/packages/base/image/index.js +10 -0
  70. package/packages/base/image/src/image.vue +40 -0
  71. package/packages/base/material-list/index.js +10 -0
  72. package/packages/base/material-list/src/material-list.vue +48 -0
  73. package/packages/base/popup/index.js +10 -0
  74. package/packages/base/popup/src/popup.vue +44 -0
  75. package/packages/business/basic-image/index.js +10 -0
  76. package/packages/business/basic-image/src/basicImage.vue +51 -0
  77. package/packages/business/bottom-fixed-button/index.js +10 -0
  78. package/packages/business/bottom-fixed-button/src/bottomFixedButton.vue +66 -0
  79. package/packages/business/class-choose/index.js +10 -0
  80. package/packages/business/class-choose/src/courseCard.vue +142 -0
  81. package/packages/business/class-choose/src/img/icon_close_bottomcard.svg +14 -0
  82. package/packages/business/class-choose/src/img/icon_date.svg +21 -0
  83. package/packages/business/class-choose/src/img/icon_full.svg +27 -0
  84. package/packages/business/class-choose/src/img/icon_full_EL.svg +49 -0
  85. package/packages/business/class-choose/src/img/icon_selected.svg +18 -0
  86. package/packages/business/class-choose/src/img/icon_star_selected.svg +13 -0
  87. package/packages/business/class-choose/src/img/icon_star_unselect.svg +13 -0
  88. package/packages/business/class-choose/src/index.vue +316 -0
  89. package/packages/business/grade-panel/index.js +10 -0
  90. package/packages/business/grade-panel/src/gradePanel.vue +150 -0
  91. package/packages/business/material-panel/index.js +10 -0
  92. package/packages/business/material-panel/src/index.vue +136 -0
  93. package/packages/business/notified-panel/index.js +10 -0
  94. package/packages/business/notified-panel/src/areaCodeList.js +181 -0
  95. package/packages/business/notified-panel/src/index.vue +491 -0
  96. package/packages/business/page-render/index.js +10 -0
  97. package/packages/business/page-render/src/pageRender.vue +73 -0
  98. package/packages/business/registration-panel/index.js +10 -0
  99. package/packages/business/registration-panel/src/areaCodeList.js +181 -0
  100. package/packages/business/registration-panel/src/img/icon_off.png +0 -0
  101. package/packages/business/registration-panel/src/img/icon_on.png +0 -0
  102. package/packages/business/registration-panel/src/index.vue +329 -0
  103. package/packages/business/registration-panel/src/languageList.js +41 -0
  104. package/packages/business/selector-panel/index.js +10 -0
  105. package/packages/business/selector-panel/src/selectorPanel.vue +134 -0
  106. package/packages/business/student-info/index.js +10 -0
  107. package/packages/business/student-info/src/api/index.js +10 -0
  108. package/packages/business/student-info/src/config.js +11 -0
  109. package/packages/business/student-info/src/studentInfo.vue +145 -0
  110. package/packages/business/switch-student/index.js +10 -0
  111. package/packages/business/switch-student/src/api/index.js +28 -0
  112. package/packages/business/switch-student/src/switchStudent.vue +245 -0
  113. package/packages/business/tips-popup/index.js +10 -0
  114. package/packages/business/tips-popup/src/tipsPopup.vue +76 -0
  115. package/packages/business/user-login/index.js +10 -0
  116. package/packages/business/user-login/src/api/index.js +23 -0
  117. package/packages/business/user-login/src/img/logo.png +0 -0
  118. package/packages/business/user-login/src/index.vue +149 -0
  119. package/packages/theme-style/lib/bottom-fixed-button.css +1 -0
  120. package/packages/theme-style/lib/bottom-popup.css +1 -0
  121. package/packages/theme-style/lib/button.css +1 -0
  122. package/packages/theme-style/lib/class-choose.css +1 -0
  123. package/packages/theme-style/lib/common.css +1 -0
  124. package/packages/theme-style/lib/dialog.css +1 -0
  125. package/packages/theme-style/lib/grade-panel.css +1 -0
  126. package/packages/theme-style/lib/icon.css +1 -0
  127. package/packages/theme-style/lib/image.css +1 -0
  128. package/packages/theme-style/lib/img/body_bg.png +0 -0
  129. package/packages/theme-style/lib/img/pdf.png +0 -0
  130. package/packages/theme-style/lib/img/title_bg.png +0 -0
  131. package/packages/theme-style/lib/index.css +1 -0
  132. package/packages/theme-style/lib/material-list.css +1 -0
  133. package/packages/theme-style/lib/material-panel.css +1 -0
  134. package/packages/theme-style/lib/notified-panel.css +1 -0
  135. package/packages/theme-style/lib/page-render.css +1 -0
  136. package/packages/theme-style/lib/registration-panel.css +1 -0
  137. package/packages/theme-style/lib/selector-panel.css +1 -0
  138. package/packages/theme-style/lib/student-info.css +1 -0
  139. package/packages/theme-style/lib/switch-student.css +1 -0
  140. package/packages/theme-style/lib/tips-popup.css +1 -0
  141. package/packages/theme-style/lib/user-login.css +1 -0
  142. package/packages/theme-style/package.json +38 -0
  143. package/packages/theme-style/src/bottom-fixed-button.scss +31 -0
  144. package/packages/theme-style/src/bottom-popup.scss +87 -0
  145. package/packages/theme-style/src/button.scss +110 -0
  146. package/packages/theme-style/src/class-choose.scss +251 -0
  147. package/packages/theme-style/src/common/popup.scss +39 -0
  148. package/packages/theme-style/src/common/var.scss +6 -0
  149. package/packages/theme-style/src/common.scss +97 -0
  150. package/packages/theme-style/src/dialog.scss +130 -0
  151. package/packages/theme-style/src/grade-panel.scss +76 -0
  152. package/packages/theme-style/src/icon.scss +369 -0
  153. package/packages/theme-style/src/image.scss +8 -0
  154. package/packages/theme-style/src/img/body_bg.png +0 -0
  155. package/packages/theme-style/src/img/pdf.png +0 -0
  156. package/packages/theme-style/src/img/title_bg.png +0 -0
  157. package/packages/theme-style/src/index.scss +20 -0
  158. package/packages/theme-style/src/material-list.scss +118 -0
  159. package/packages/theme-style/src/material-panel.scss +2 -0
  160. package/packages/theme-style/src/notified-panel.scss +207 -0
  161. package/packages/theme-style/src/page-render.scss +3 -0
  162. package/packages/theme-style/src/registration-panel.scss +158 -0
  163. package/packages/theme-style/src/selector-panel.scss +86 -0
  164. package/packages/theme-style/src/student-info.scss +114 -0
  165. package/packages/theme-style/src/switch-student.scss +176 -0
  166. package/packages/theme-style/src/tips-popup.scss +60 -0
  167. package/packages/theme-style/src/user-login.scss +93 -0
  168. package/src/index.js +74 -0
  169. package/src/network/api.js +53 -0
  170. package/src/network/apiUrl.js +65 -0
  171. package/src/utils/dom.js +54 -0
  172. package/src/utils/filters.js +82 -0
  173. package/src/utils/merge.js +16 -0
  174. package/src/utils/phone.js +153 -0
  175. package/src/utils/popup/index.js +115 -0
  176. package/src/utils/popup/popup-manager.js +178 -0
  177. package/src/utils/storage.js +22 -0
  178. 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,10 @@
1
+ import TsBottomPopup from './src/bottom-popup.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsBottomPopup.install = (Vue) => {
7
+ Vue.component(TsBottomPopup.name, TsBottomPopup)
8
+ }
9
+
10
+ export default TsBottomPopup
@@ -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
+
@@ -0,0 +1,10 @@
1
+ import TsButton from './src/button.vue'
2
+
3
+ // install 是默认的方法,供按需引入
4
+ // 当外界在 use 这个组件的时候,就会调用本身的install方法,同时传一个Vue这个类的参数
5
+
6
+ TsButton.install = (Vue) => {
7
+ Vue.component(TsButton.name, TsButton)
8
+ }
9
+
10
+ export default TsButton