eoss-ui 0.6.59 → 0.6.60

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 (252) hide show
  1. package/lib/clients.js +20 -3
  2. package/lib/eoss-ui.common.js +589 -547
  3. package/lib/flow-list.js +81 -81
  4. package/lib/flow.js +317 -299
  5. package/lib/icons.js +1 -1
  6. package/lib/index.js +1 -1
  7. package/lib/login.js +9 -2
  8. package/lib/main.js +132 -132
  9. package/lib/qr-code.js +13 -13
  10. package/lib/theme-chalk/base.css +1 -1
  11. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  12. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  13. package/lib/theme-chalk/icon.css +1 -1
  14. package/lib/theme-chalk/index.css +1 -1
  15. package/lib/theme-chalk/main.css +1 -1
  16. package/lib/theme-chalk/menu.css +1 -1
  17. package/lib/theme-chalk/simplicity.css +1 -1
  18. package/lib/theme-chalk/sizer.css +1 -1
  19. package/lib/theme-chalk/upload.css +1 -1
  20. package/package.json +159 -159
  21. package/packages/.DS_Store +0 -0
  22. package/packages/autocomplete/.DS_Store +0 -0
  23. package/packages/button/index.js +5 -5
  24. package/packages/button/src/main.vue +418 -418
  25. package/packages/button-group/index.js +5 -5
  26. package/packages/button-group/src/main.vue +298 -298
  27. package/packages/calendar/index.js +5 -5
  28. package/packages/card/index.js +5 -5
  29. package/packages/card/src/main.vue +156 -156
  30. package/packages/cascader/index.js +5 -5
  31. package/packages/cascader/src/main.vue +168 -168
  32. package/packages/checkbox-group/index.js +5 -5
  33. package/packages/checkbox-group/src/main.vue +333 -333
  34. package/packages/clients/index.js +5 -5
  35. package/packages/clients/src/main.vue +151 -144
  36. package/packages/data-table/index.js +5 -5
  37. package/packages/data-table/src/children.vue +39 -39
  38. package/packages/data-table/src/column.vue +989 -989
  39. package/packages/data-table/src/main.vue +1822 -1822
  40. package/packages/data-table/src/sizer.vue +195 -195
  41. package/packages/data-table-form/index.js +5 -5
  42. package/packages/data-table-form/src/checkbox.vue +101 -101
  43. package/packages/data-table-form/src/colgroup.vue +17 -17
  44. package/packages/data-table-form/src/main.vue +181 -181
  45. package/packages/data-table-form/src/radio.vue +65 -65
  46. package/packages/data-table-form/src/table.vue +233 -233
  47. package/packages/data-table-form/src/tbody.vue +336 -336
  48. package/packages/data-table-form/src/thead.vue +68 -68
  49. package/packages/date-picker/index.js +5 -5
  50. package/packages/date-picker/src/main.vue +236 -236
  51. package/packages/dialog/index.js +5 -5
  52. package/packages/enable-drag/index.js +5 -5
  53. package/packages/enterprise/index.js +5 -5
  54. package/packages/enterprise/src/main.vue +66 -66
  55. package/packages/error-page/index.js +5 -5
  56. package/packages/error-page/src/main.vue +44 -44
  57. package/packages/flow/index.js +5 -5
  58. package/packages/flow/src/component/CommonOpinions.vue +345 -345
  59. package/packages/flow/src/component/CustomPreset.vue +322 -322
  60. package/packages/flow/src/component/FileList.vue +99 -99
  61. package/packages/flow/src/component/Preset.vue +255 -255
  62. package/packages/flow/src/component/SendMsg.vue +229 -229
  63. package/packages/flow/src/component/TimeLimit.vue +190 -190
  64. package/packages/flow/src/component/taskUnionExamine.vue +611 -611
  65. package/packages/flow/src/form.vue +121 -121
  66. package/packages/flow/src/freeStartFlow.vue +2843 -2843
  67. package/packages/flow/src/main.vue +3175 -3173
  68. package/packages/flow/src/processForm.vue +1087 -1087
  69. package/packages/flow/src/processReject.vue +293 -293
  70. package/packages/flow/src/reset.vue +900 -900
  71. package/packages/flow/src/startTaskRead.vue +646 -641
  72. package/packages/flow/src/supervise.vue +144 -138
  73. package/packages/flow/src/table.vue +58 -58
  74. package/packages/flow-group/index.js +5 -5
  75. package/packages/flow-group/src/main.vue +688 -688
  76. package/packages/flow-list/index.js +5 -5
  77. package/packages/flow-list/src/main.vue +1691 -1691
  78. package/packages/form/index.js +5 -5
  79. package/packages/form/src/main.vue +3583 -3583
  80. package/packages/form/src/table.vue +1426 -1426
  81. package/packages/handle-user/index.js +5 -5
  82. package/packages/handle-user/src/main.vue +138 -138
  83. package/packages/handler/index.js +5 -5
  84. package/packages/handler/src/main.vue +493 -493
  85. package/packages/icon/index.js +5 -5
  86. package/packages/icon/src/main.vue +101 -101
  87. package/packages/icons/index.js +5 -5
  88. package/packages/icons/src/icon.json +1 -1
  89. package/packages/icons/src/main.vue +81 -81
  90. package/packages/input/index.js +5 -5
  91. package/packages/input/src/main.vue +356 -356
  92. package/packages/input-number/index.js +5 -5
  93. package/packages/input-number/src/main.vue +106 -106
  94. package/packages/label/index.js +5 -5
  95. package/packages/label/src/main.vue +457 -457
  96. package/packages/layout/index.js +5 -5
  97. package/packages/layout/src/item.vue +152 -152
  98. package/packages/layout/src/main.vue +31 -31
  99. package/packages/login/index.js +5 -5
  100. package/packages/login/src/main.vue +1942 -1935
  101. package/packages/login/src/resetPassword.vue +562 -562
  102. package/packages/main/index.js +5 -5
  103. package/packages/main/src/default/message.vue +249 -249
  104. package/packages/main/src/default/notice.vue +157 -157
  105. package/packages/main/src/default/userinfo.vue +503 -503
  106. package/packages/main/src/public/online.vue +89 -89
  107. package/packages/main/src/public/search.vue +462 -462
  108. package/packages/main/src/public/settings.vue +221 -221
  109. package/packages/main/src/simplicity/apps.vue +388 -388
  110. package/packages/main/src/simplicity/avatar.vue +82 -82
  111. package/packages/main/src/simplicity/handler.vue +259 -259
  112. package/packages/main/src/simplicity/index.vue +2086 -2086
  113. package/packages/main/src/simplicity/lists.vue +84 -84
  114. package/packages/main/src/simplicity/menu-list.vue +135 -135
  115. package/packages/main/src/simplicity/message.vue +259 -259
  116. package/packages/main/src/simplicity/notice.vue +190 -190
  117. package/packages/main/src/simplicity/router-page.vue +45 -45
  118. package/packages/main/src/simplicity/sub-menu.vue +264 -264
  119. package/packages/main/src/simplicity/user.vue +257 -257
  120. package/packages/main/src/simplicity/userinfo.vue +312 -312
  121. package/packages/menu/.DS_Store +0 -0
  122. package/packages/menu/index.js +5 -5
  123. package/packages/menu/src/main.vue +584 -584
  124. package/packages/nav/index.js +5 -5
  125. package/packages/nav/src/main.vue +351 -351
  126. package/packages/notify/index.js +5 -5
  127. package/packages/notify/src/main.vue +538 -538
  128. package/packages/page/index.js +5 -5
  129. package/packages/page/src/main.vue +167 -167
  130. package/packages/pagination/index.js +5 -5
  131. package/packages/pagination/src/main.vue +96 -96
  132. package/packages/player/index.js +5 -5
  133. package/packages/player/src/main.vue +194 -194
  134. package/packages/qr-code/index.js +5 -5
  135. package/packages/qr-code/src/main.vue +170 -170
  136. package/packages/radio-group/index.js +6 -6
  137. package/packages/radio-group/src/main.vue +319 -319
  138. package/packages/retrial-auth/index.js +5 -5
  139. package/packages/retrial-auth/src/main.vue +280 -280
  140. package/packages/scrollbar/.DS_Store +0 -0
  141. package/packages/select/.DS_Store +0 -0
  142. package/packages/select/index.js +5 -5
  143. package/packages/select/src/main.vue +778 -778
  144. package/packages/select-ganged/index.js +5 -5
  145. package/packages/select-ganged/src/main.vue +724 -724
  146. package/packages/selector/index.js +5 -5
  147. package/packages/selector/src/main.vue +687 -687
  148. package/packages/selector-panel/index.js +5 -5
  149. package/packages/selector-panel/src/main.vue +1027 -1027
  150. package/packages/selector-panel/src/selection.vue +177 -177
  151. package/packages/selector-panel/src/tree.vue +129 -129
  152. package/packages/sizer/index.js +5 -5
  153. package/packages/sizer/src/main.vue +254 -254
  154. package/packages/steps/index.js +5 -5
  155. package/packages/steps/src/main.vue +181 -181
  156. package/packages/switch/index.js +5 -5
  157. package/packages/switch/src/main.vue +154 -154
  158. package/packages/table-form/index.js +5 -5
  159. package/packages/tabs/index.js +5 -5
  160. package/packages/tabs/src/main.vue +788 -788
  161. package/packages/tabs-panel/index.js +5 -5
  162. package/packages/tabs-panel/src/main.vue +29 -29
  163. package/packages/theme-chalk/lib/base.css +1 -1
  164. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  165. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  166. package/packages/theme-chalk/lib/icon.css +1 -1
  167. package/packages/theme-chalk/lib/index.css +1 -1
  168. package/packages/theme-chalk/lib/main.css +1 -1
  169. package/packages/theme-chalk/lib/menu.css +1 -1
  170. package/packages/theme-chalk/lib/simplicity.css +1 -1
  171. package/packages/theme-chalk/lib/sizer.css +1 -1
  172. package/packages/theme-chalk/lib/upload.css +1 -1
  173. package/packages/theme-chalk/src/.DS_Store +0 -0
  174. package/packages/theme-chalk/src/base.scss +260 -260
  175. package/packages/theme-chalk/src/button-group.scss +176 -176
  176. package/packages/theme-chalk/src/button.scss +24 -24
  177. package/packages/theme-chalk/src/calendar.scss +113 -113
  178. package/packages/theme-chalk/src/card.scss +99 -99
  179. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  180. package/packages/theme-chalk/src/clients.scss +87 -87
  181. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  182. package/packages/theme-chalk/src/data-table.scss +293 -293
  183. package/packages/theme-chalk/src/date-picker.scss +7 -7
  184. package/packages/theme-chalk/src/dialog.scss +77 -77
  185. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  186. package/packages/theme-chalk/src/enterprise.scss +5 -5
  187. package/packages/theme-chalk/src/error-page.scss +18 -18
  188. package/packages/theme-chalk/src/flow-group.scss +110 -110
  189. package/packages/theme-chalk/src/flow-list.scss +39 -39
  190. package/packages/theme-chalk/src/flow.scss +343 -343
  191. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  192. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  193. package/packages/theme-chalk/src/form.scss +496 -496
  194. package/packages/theme-chalk/src/handle-user.scss +40 -40
  195. package/packages/theme-chalk/src/handler.scss +143 -143
  196. package/packages/theme-chalk/src/icon.scss +1793 -1789
  197. package/packages/theme-chalk/src/icons.scss +99 -99
  198. package/packages/theme-chalk/src/input.scss +9 -9
  199. package/packages/theme-chalk/src/label.scss +24 -24
  200. package/packages/theme-chalk/src/layout.scss +46 -46
  201. package/packages/theme-chalk/src/login.scss +969 -969
  202. package/packages/theme-chalk/src/main.scss +663 -663
  203. package/packages/theme-chalk/src/menu.scss +222 -222
  204. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  205. package/packages/theme-chalk/src/nav.scss +111 -111
  206. package/packages/theme-chalk/src/page.scss +3 -3
  207. package/packages/theme-chalk/src/pagination.scss +29 -29
  208. package/packages/theme-chalk/src/player.scss +9 -9
  209. package/packages/theme-chalk/src/qr-code.scss +17 -17
  210. package/packages/theme-chalk/src/radio-group.scss +9 -9
  211. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  212. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  213. package/packages/theme-chalk/src/select.scss +8 -8
  214. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  215. package/packages/theme-chalk/src/selector.scss +91 -91
  216. package/packages/theme-chalk/src/simplicity.scss +1351 -1351
  217. package/packages/theme-chalk/src/sizer.scss +36 -36
  218. package/packages/theme-chalk/src/steps.scss +88 -88
  219. package/packages/theme-chalk/src/switch.scss +3 -3
  220. package/packages/theme-chalk/src/table-form.scss +1 -1
  221. package/packages/theme-chalk/src/tabs.scss +87 -87
  222. package/packages/theme-chalk/src/tips.scss +7 -7
  223. package/packages/theme-chalk/src/toolbar.scss +179 -179
  224. package/packages/theme-chalk/src/tree-group.scss +72 -72
  225. package/packages/theme-chalk/src/tree.scss +165 -165
  226. package/packages/theme-chalk/src/upload.scss +168 -168
  227. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  228. package/packages/tips/index.js +5 -5
  229. package/packages/tips/src/main.vue +141 -141
  230. package/packages/toolbar/index.js +5 -5
  231. package/packages/toolbar/src/main.vue +430 -430
  232. package/packages/tree/index.js +5 -5
  233. package/packages/tree-group/index.js +5 -5
  234. package/packages/upload/.DS_Store +0 -0
  235. package/packages/upload/index.js +5 -5
  236. package/packages/upload/src/main.vue +1347 -1347
  237. package/packages/upload/src/picture.js +15 -15
  238. package/packages/wujie/index.js +5 -5
  239. package/packages/wujie/src/main.vue +145 -145
  240. package/packages/wxlogin/index.js +5 -5
  241. package/packages/wxlogin/src/main.vue +128 -128
  242. package/src/.DS_Store +0 -0
  243. package/src/config/api.js +286 -286
  244. package/src/config/image.js +2 -2
  245. package/src/index.js +160 -160
  246. package/src/utils/.DS_Store +0 -0
  247. package/src/utils/bus.js +3 -3
  248. package/src/utils/date-util.js +312 -312
  249. package/src/utils/http.js +50 -50
  250. package/src/utils/rules.js +18 -18
  251. package/src/utils/store.js +21 -21
  252. package/src/utils/webSocket.js +107 -107
package/src/utils/http.js CHANGED
@@ -1,50 +1,50 @@
1
- // 封装请求参数
2
- import util from './util.js';
3
-
4
- // function request({
5
- // method = 'get',
6
- // url,
7
- // data = {},
8
- // params = {},
9
- // headers = {},
10
- // format = true,
11
- // mix = true
12
- // }) {
13
- // if (
14
- // method.toLowerCase() === 'post' &&
15
- // !Object.prototype.hasOwnProperty.call(data, 'userId') &&
16
- // util.getStorage('userId')
17
- // ) {
18
- // data.userId = util.getStorage('userId');
19
- // }
20
- // if (
21
- // (method === 'get' || method === 'GET') &&
22
- // !Object.prototype.hasOwnProperty.call(params, 'userId') &&
23
- // util.getStorage('userId')
24
- // ) {
25
- // params.userId = util.getStorage('userId');
26
- // }
27
- // if (format && (method === 'post' || method === 'POST')) {
28
- // data = qs.stringify(data);
29
- // headers['content-type'] = 'application/x-www-form-urlencoded';
30
- // }
31
- // if (!mix && (method === 'get' || method === 'GET')) {
32
- // data = {};
33
- // }
34
- // if (!mix && (method === 'post' || method === 'POST')) {
35
- // params = {};
36
- // }
37
- // return http({
38
- // method,
39
- // url,
40
- // data,
41
- // params,
42
- // headers
43
- // });
44
- // }
45
-
46
- function request(params) {
47
- return util.ajax({mix: true, ...params});
48
- }
49
-
50
- export default request;
1
+ // 封装请求参数
2
+ import util from './util.js';
3
+
4
+ // function request({
5
+ // method = 'get',
6
+ // url,
7
+ // data = {},
8
+ // params = {},
9
+ // headers = {},
10
+ // format = true,
11
+ // mix = true
12
+ // }) {
13
+ // if (
14
+ // method.toLowerCase() === 'post' &&
15
+ // !Object.prototype.hasOwnProperty.call(data, 'userId') &&
16
+ // util.getStorage('userId')
17
+ // ) {
18
+ // data.userId = util.getStorage('userId');
19
+ // }
20
+ // if (
21
+ // (method === 'get' || method === 'GET') &&
22
+ // !Object.prototype.hasOwnProperty.call(params, 'userId') &&
23
+ // util.getStorage('userId')
24
+ // ) {
25
+ // params.userId = util.getStorage('userId');
26
+ // }
27
+ // if (format && (method === 'post' || method === 'POST')) {
28
+ // data = qs.stringify(data);
29
+ // headers['content-type'] = 'application/x-www-form-urlencoded';
30
+ // }
31
+ // if (!mix && (method === 'get' || method === 'GET')) {
32
+ // data = {};
33
+ // }
34
+ // if (!mix && (method === 'post' || method === 'POST')) {
35
+ // params = {};
36
+ // }
37
+ // return http({
38
+ // method,
39
+ // url,
40
+ // data,
41
+ // params,
42
+ // headers
43
+ // });
44
+ // }
45
+
46
+ function request(params) {
47
+ return util.ajax({mix: true, ...params});
48
+ }
49
+
50
+ export default request;
@@ -1,18 +1,18 @@
1
- // 手机号
2
- const phone = {pattern: new RegExp('^[1][3, 4, 5, 6, 7, 8, 9][0-9]{9}$'), message: '手机号不合法'};
3
- // 身份证
4
- const idCard = {pattern: new RegExp('(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)'), message: '身份证号不合法'};
5
- // 座机号
6
- const telephone = {pattern: new RegExp('^(\\d{3,4}-)?\\d{7,8}$'), message: '座机号不合法'};
7
- // IP
8
- const ip = {pattern: new RegExp('^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$'), message: 'IP地址不合法'};
9
- // 银行卡号
10
- const bankCard = {pattern: new RegExp('^([1-9]{1})(\\d{14}|\\d{18})$'), message: '银行卡号不合法'};
11
-
12
- export default {
13
- phone,
14
- idCard,
15
- telephone,
16
- ip,
17
- bankCard
18
- };
1
+ // 手机号
2
+ const phone = {pattern: new RegExp('^[1][3, 4, 5, 6, 7, 8, 9][0-9]{9}$'), message: '手机号不合法'};
3
+ // 身份证
4
+ const idCard = {pattern: new RegExp('(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)'), message: '身份证号不合法'};
5
+ // 座机号
6
+ const telephone = {pattern: new RegExp('^(\\d{3,4}-)?\\d{7,8}$'), message: '座机号不合法'};
7
+ // IP
8
+ const ip = {pattern: new RegExp('^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$'), message: 'IP地址不合法'};
9
+ // 银行卡号
10
+ const bankCard = {pattern: new RegExp('^([1-9]{1})(\\d{14}|\\d{18})$'), message: '银行卡号不合法'};
11
+
12
+ export default {
13
+ phone,
14
+ idCard,
15
+ telephone,
16
+ ip,
17
+ bankCard
18
+ };
@@ -1,21 +1,21 @@
1
- let store = {
2
- state: {},
3
- set(name, value) {
4
- this.state[name] = value;
5
- },
6
- get(name) {
7
- return this.state[name];
8
- },
9
- clear(name) {
10
- this.state[name] = null;
11
- },
12
- remove(name) {
13
- if (name) {
14
- delete this.state[name];
15
- } else {
16
- this.state = {};
17
- }
18
- }
19
- };
20
- window.__store = store;
21
- export default store;
1
+ let store = {
2
+ state: {},
3
+ set(name, value) {
4
+ this.state[name] = value;
5
+ },
6
+ get(name) {
7
+ return this.state[name];
8
+ },
9
+ clear(name) {
10
+ this.state[name] = null;
11
+ },
12
+ remove(name) {
13
+ if (name) {
14
+ delete this.state[name];
15
+ } else {
16
+ this.state = {};
17
+ }
18
+ }
19
+ };
20
+ window.__store = store;
21
+ export default store;
@@ -1,107 +1,107 @@
1
- import SockJS from 'sockjs-client';
2
- import Stomp from 'stompjs';
3
- class WebSocket {
4
- // 构造函数
5
- constructor() {
6
- this.host = sessionStorage.getItem('wshost') || '';
7
- this.tryTimes = 1; // 重连次数
8
- this.callback = null; // 回调函数
9
- this.client = null; // stomp对象
10
- this.reconTimeout = null; // 重连延时器
11
- this.debug = true; // 调试
12
- this.interval = 20; // 重连间隔时间
13
- this.vm = null;
14
- this.nextDate = 0;
15
- this.connects = 1;
16
- this.recon = false;
17
- this.sendTimeout = null;
18
- this.socket = null;
19
- this.subscription = null;
20
- }
21
-
22
- /** socket连接 */
23
- connect() {
24
- if (!this.client) {
25
- // 连接SockJS
26
- this.socket = new SockJS(this.host + this.url, {timeout: 60000});
27
- this.client = Stomp.over(this.socket);
28
- }
29
-
30
- // 日志不打印
31
- if (!this.debug) {
32
- this.client.debug = () => {};
33
- }
34
-
35
- // 向服务器发起websocket连接
36
- this.client.connect({}, () => {
37
- this.recon = true;
38
- // tryTimes定义重置
39
- this.connects = 1;
40
- // 订阅消息
41
- this.subscribe();
42
- }, (error) => {
43
- this.unsubscribe();
44
- this.client = null;
45
- let diffSecond = parseInt((new Date() - this.nextDate) / 1000, 10);
46
- if (this.connects > 5 && diffSecond < this.interval) {
47
- this.error && this.error(error);
48
- } else {
49
- this.reconTimeout = setTimeout(() => {
50
- this.connect();
51
- this.connects++;
52
- }, 5000);
53
- }
54
- });
55
- }// 清除订阅
56
- unsubscribe() {
57
- if (this.subscription) {
58
- this.subscription.unsubscribe();
59
- this.subscription = null;
60
- }
61
- }
62
- /** 订阅服务端 */
63
- subscribe() {
64
- // 订阅服务端提供的某个topic
65
- this.subscription = this.client.subscribe(this.take, (response) => {
66
- if (response && (this.callback || this.success)) {
67
- let callback = this.callback || this.success;
68
- callback(JSON.parse(response.body));
69
- }
70
- });
71
- }
72
-
73
- /** 赋值、初始化socket */
74
- init(option, vm) {
75
- for (let i in option) {
76
- this[i] = option[i];
77
- }
78
- this.vm = vm;
79
- // 初始化连接
80
- this.connect();
81
- }
82
-
83
- /** 发送消息 */
84
- send(data) {
85
- if (this.recon) {
86
- clearTimeout(this.sendTimeout);
87
- this.client.send(this.take, {}, typeof data === 'string' ? data : JSON.stringify(data));
88
- } else {
89
- this.sendTimeout = setTimeout(() => {
90
- this.send(data);
91
- }, 1000);
92
- }
93
- }
94
-
95
- /** 销毁 */
96
- destroy() {
97
- // 断开连接,清除定时器
98
- this.unsubscribe();
99
- if (this.client) {
100
- this.client.disconnect();
101
- };
102
- this.reconTimeout && clearTimeout(this.reconTimeout);
103
- this.sendTimeout && clearTimeout(this.sendTimeout);
104
- }
105
- }
106
-
107
- export default WebSocket;
1
+ import SockJS from 'sockjs-client';
2
+ import Stomp from 'stompjs';
3
+ class WebSocket {
4
+ // 构造函数
5
+ constructor() {
6
+ this.host = sessionStorage.getItem('wshost') || '';
7
+ this.tryTimes = 1; // 重连次数
8
+ this.callback = null; // 回调函数
9
+ this.client = null; // stomp对象
10
+ this.reconTimeout = null; // 重连延时器
11
+ this.debug = true; // 调试
12
+ this.interval = 20; // 重连间隔时间
13
+ this.vm = null;
14
+ this.nextDate = 0;
15
+ this.connects = 1;
16
+ this.recon = false;
17
+ this.sendTimeout = null;
18
+ this.socket = null;
19
+ this.subscription = null;
20
+ }
21
+
22
+ /** socket连接 */
23
+ connect() {
24
+ if (!this.client) {
25
+ // 连接SockJS
26
+ this.socket = new SockJS(this.host + this.url, {timeout: 60000});
27
+ this.client = Stomp.over(this.socket);
28
+ }
29
+
30
+ // 日志不打印
31
+ if (!this.debug) {
32
+ this.client.debug = () => {};
33
+ }
34
+
35
+ // 向服务器发起websocket连接
36
+ this.client.connect({}, () => {
37
+ this.recon = true;
38
+ // tryTimes定义重置
39
+ this.connects = 1;
40
+ // 订阅消息
41
+ this.subscribe();
42
+ }, (error) => {
43
+ this.unsubscribe();
44
+ this.client = null;
45
+ let diffSecond = parseInt((new Date() - this.nextDate) / 1000, 10);
46
+ if (this.connects > 5 && diffSecond < this.interval) {
47
+ this.error && this.error(error);
48
+ } else {
49
+ this.reconTimeout = setTimeout(() => {
50
+ this.connect();
51
+ this.connects++;
52
+ }, 5000);
53
+ }
54
+ });
55
+ }// 清除订阅
56
+ unsubscribe() {
57
+ if (this.subscription) {
58
+ this.subscription.unsubscribe();
59
+ this.subscription = null;
60
+ }
61
+ }
62
+ /** 订阅服务端 */
63
+ subscribe() {
64
+ // 订阅服务端提供的某个topic
65
+ this.subscription = this.client.subscribe(this.take, (response) => {
66
+ if (response && (this.callback || this.success)) {
67
+ let callback = this.callback || this.success;
68
+ callback(JSON.parse(response.body));
69
+ }
70
+ });
71
+ }
72
+
73
+ /** 赋值、初始化socket */
74
+ init(option, vm) {
75
+ for (let i in option) {
76
+ this[i] = option[i];
77
+ }
78
+ this.vm = vm;
79
+ // 初始化连接
80
+ this.connect();
81
+ }
82
+
83
+ /** 发送消息 */
84
+ send(data) {
85
+ if (this.recon) {
86
+ clearTimeout(this.sendTimeout);
87
+ this.client.send(this.take, {}, typeof data === 'string' ? data : JSON.stringify(data));
88
+ } else {
89
+ this.sendTimeout = setTimeout(() => {
90
+ this.send(data);
91
+ }, 1000);
92
+ }
93
+ }
94
+
95
+ /** 销毁 */
96
+ destroy() {
97
+ // 断开连接,清除定时器
98
+ this.unsubscribe();
99
+ if (this.client) {
100
+ this.client.disconnect();
101
+ };
102
+ this.reconTimeout && clearTimeout(this.reconTimeout);
103
+ this.sendTimeout && clearTimeout(this.sendTimeout);
104
+ }
105
+ }
106
+
107
+ export default WebSocket;