eoss-ui 0.6.18 → 0.6.20

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 (101) hide show
  1. package/lib/eoss-ui.common.js +761 -657
  2. package/lib/flow.js +619 -515
  3. package/lib/index.js +1 -1
  4. package/lib/main.js +132 -132
  5. package/lib/qr-code.js +13 -13
  6. package/lib/theme-chalk/index.css +1 -1
  7. package/lib/theme-chalk/login.css +1 -1
  8. package/package.json +157 -157
  9. package/packages/button/src/main.vue +418 -418
  10. package/packages/button-group/src/main.vue +298 -298
  11. package/packages/checkbox-group/src/main.vue +333 -333
  12. package/packages/clients/src/main.vue +144 -144
  13. package/packages/data-table/src/children.vue +39 -39
  14. package/packages/data-table/src/column.vue +983 -983
  15. package/packages/data-table/src/main.vue +1812 -1812
  16. package/packages/data-table/src/sizer.vue +195 -195
  17. package/packages/date-picker/src/main.vue +236 -236
  18. package/packages/flow/src/component/CustomPreset.vue +1 -1
  19. package/packages/flow/src/component/Preset.vue +1 -1
  20. package/packages/flow/src/component/SendMsg.vue +3 -1
  21. package/packages/flow/src/component/taskUnionExamine.vue +38 -20
  22. package/packages/flow/src/main.vue +2731 -2711
  23. package/packages/flow/src/processForm.vue +13 -2
  24. package/packages/flow/src/processReject.vue +14 -3
  25. package/packages/flow/src/startTaskRead.vue +23 -5
  26. package/packages/flow-group/src/main.vue +684 -684
  27. package/packages/form/src/main.vue +3582 -3582
  28. package/packages/form/src/table.vue +1420 -1420
  29. package/packages/handle-user/src/main.vue +134 -134
  30. package/packages/handler/src/main.vue +374 -374
  31. package/packages/icon/src/main.vue +101 -101
  32. package/packages/input/src/main.vue +356 -356
  33. package/packages/login/src/main.vue +1851 -1851
  34. package/packages/login/src/resetPassword.vue +557 -557
  35. package/packages/main/src/default/message.vue +249 -249
  36. package/packages/main/src/default/notice.vue +157 -157
  37. package/packages/main/src/default/userinfo.vue +494 -494
  38. package/packages/main/src/public/online.vue +89 -89
  39. package/packages/main/src/public/search.vue +454 -454
  40. package/packages/main/src/public/settings.vue +221 -221
  41. package/packages/main/src/simplicity/apps.vue +388 -388
  42. package/packages/main/src/simplicity/avatar.vue +82 -82
  43. package/packages/main/src/simplicity/handler.vue +183 -183
  44. package/packages/main/src/simplicity/index.vue +1930 -1930
  45. package/packages/main/src/simplicity/lists.vue +84 -84
  46. package/packages/main/src/simplicity/menu-list.vue +128 -128
  47. package/packages/main/src/simplicity/message.vue +259 -259
  48. package/packages/main/src/simplicity/notice.vue +190 -190
  49. package/packages/main/src/simplicity/router-page.vue +45 -45
  50. package/packages/main/src/simplicity/sub-menu.vue +241 -241
  51. package/packages/main/src/simplicity/user.vue +248 -248
  52. package/packages/main/src/simplicity/userinfo.vue +304 -304
  53. package/packages/menu/src/main.vue +536 -536
  54. package/packages/pagination/src/main.vue +96 -96
  55. package/packages/qr-code/src/main.vue +170 -170
  56. package/packages/radio-group/src/main.vue +319 -319
  57. package/packages/select/src/main.vue +761 -761
  58. package/packages/selector/src/main.vue +677 -677
  59. package/packages/selector-panel/src/main.vue +1020 -1020
  60. package/packages/selector-panel/src/selection.vue +160 -160
  61. package/packages/tabs/src/main.vue +788 -788
  62. package/packages/theme-chalk/lib/index.css +1 -1
  63. package/packages/theme-chalk/lib/login.css +1 -1
  64. package/packages/theme-chalk/src/base.scss +260 -260
  65. package/packages/theme-chalk/src/button-group.scss +175 -175
  66. package/packages/theme-chalk/src/calendar.scss +113 -113
  67. package/packages/theme-chalk/src/clients.scss +87 -87
  68. package/packages/theme-chalk/src/common/var.scss +1 -4
  69. package/packages/theme-chalk/src/data-table.scss +276 -276
  70. package/packages/theme-chalk/src/dialog.scss +77 -77
  71. package/packages/theme-chalk/src/flow-group.scss +110 -110
  72. package/packages/theme-chalk/src/form.scss +496 -496
  73. package/packages/theme-chalk/src/handler.scss +133 -133
  74. package/packages/theme-chalk/src/icon.scss +1745 -1745
  75. package/packages/theme-chalk/src/icons.scss +99 -99
  76. package/packages/theme-chalk/src/login.scss +917 -926
  77. package/packages/theme-chalk/src/main.scss +632 -632
  78. package/packages/theme-chalk/src/menu.scss +222 -222
  79. package/packages/theme-chalk/src/nav.scss +125 -125
  80. package/packages/theme-chalk/src/pagination.scss +29 -29
  81. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  82. package/packages/theme-chalk/src/simplicity.scss +1246 -1246
  83. package/packages/theme-chalk/src/tabs.scss +87 -87
  84. package/packages/theme-chalk/src/toolbar.scss +179 -179
  85. package/packages/theme-chalk/src/tree-group.scss +72 -72
  86. package/packages/theme-chalk/src/tree.scss +165 -165
  87. package/packages/upload/src/main.vue +1313 -1313
  88. package/packages/wujie/src/main.vue +145 -145
  89. package/src/config/api.js +236 -236
  90. package/src/config/image.js +2 -2
  91. package/src/index.js +157 -157
  92. package/packages/.DS_Store +0 -0
  93. package/packages/checkbox-group/.DS_Store +0 -0
  94. package/packages/data-table/.DS_Store +0 -0
  95. package/packages/dialog/.DS_Store +0 -0
  96. package/packages/handler/.DS_Store +0 -0
  97. package/packages/login/.DS_Store +0 -0
  98. package/packages/main/.DS_Store +0 -0
  99. package/packages/main/src/.DS_Store +0 -0
  100. package/packages/theme-chalk/src/.DS_Store +0 -0
  101. package/src/.DS_Store +0 -0
@@ -1,333 +1,333 @@
1
- <template>
2
- <div v-if="!hide" class="es-checkbox-group">
3
- <div
4
- v-if="readonly"
5
- class="es-input__inner"
6
- :class="{ 'es-plain': this.plain || $attrs.text }"
7
- >
8
- {{ labelVal }}
9
- </div>
10
- <el-checkbox-group
11
- v-else
12
- v-show="display"
13
- v-model="model"
14
- v-bind="{ valueKey: valKey, labelKey: label, ...$attrs }"
15
- v-on="$listeners"
16
- >
17
- <template v-if="genre === 'button'">
18
- <el-checkbox-button
19
- v-for="(item, index) in results"
20
- :key="index"
21
- v-bind="getprops($attrs, item)"
22
- :label="isObject || typeof item == 'string' ? item : item[valKey]"
23
- :disabled="typeof item == 'string' ? false : item.disabled"
24
- >
25
- {{
26
- typeof item == 'string'
27
- ? item
28
- : item[label]
29
- ? item[label]
30
- : item.label || item[valKey]
31
- }}
32
- </el-checkbox-button>
33
- </template>
34
- <template v-else>
35
- <el-checkbox
36
- v-for="(item, index) in results"
37
- :key="index"
38
- v-bind="getprops($attrs, item)"
39
- :label="isObject || typeof item == 'string' ? item : item[valKey]"
40
- :disabled="typeof item == 'string' ? false : item.disabled"
41
- :border="genre === 'border'"
42
- >
43
- {{
44
- typeof item == 'string'
45
- ? item
46
- : item[label]
47
- ? item[label]
48
- : item.label || item[valKey]
49
- }}
50
- </el-checkbox>
51
- </template>
52
- </el-checkbox-group>
53
- </div>
54
- </template>
55
-
56
- <script>
57
- import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
58
- import { debounce } from 'throttle-debounce';
59
- import store from 'eoss-ui/src/utils/store';
60
- import util from 'eoss-ui/src/utils/util';
61
- export default {
62
- name: 'EsCheckboxGroup',
63
- inheritAttrs: false,
64
- inject: {
65
- esForm: {
66
- default: ''
67
- }
68
- },
69
- props: {
70
- method: {
71
- type: String,
72
- default: 'get'
73
- },
74
- service: String,
75
- // 选择项本地数据
76
- data: {
77
- type: Array,
78
- default() {
79
- return [];
80
- }
81
- },
82
- param: {
83
- type: Object,
84
- default() {
85
- return {};
86
- }
87
- },
88
- // 选择项远程地址
89
- url: String,
90
- hide: {
91
- type: Boolean,
92
- default: false
93
- },
94
- // 选择项获取代码表数据(优先级大于url)
95
- sysCode: String,
96
- // 样式风格 button(按钮样式), border(带有边框)
97
- genre: {
98
- type: String,
99
- default: ''
100
- },
101
- separator: {
102
- type: String,
103
- default: '、'
104
- },
105
- display: {
106
- type: Boolean,
107
- default: true
108
- },
109
- valueType: {
110
- type: String,
111
- default: 'string',
112
- validator: function (value) {
113
- return ['string', 'object'].includes(value);
114
- }
115
- },
116
- valueKey: {
117
- type: String,
118
- default: 'value'
119
- },
120
- // 指定选择项显示值的键名,data元素是对象类型时必填
121
- labelKey: {
122
- type: String,
123
- default: 'name'
124
- },
125
- value: [Array, String],
126
- readonly: Boolean,
127
- plain: Boolean,
128
- ajax: {
129
- type: Boolean,
130
- default: true
131
- },
132
- isNoParamRequest: {
133
- type: Boolean,
134
- default: true
135
- },
136
- dataKey: String
137
- },
138
- data() {
139
- return {
140
- options: '',
141
- canceled: false
142
- };
143
- },
144
- computed: {
145
- isObject() {
146
- if (
147
- this.value !== '' &&
148
- Array.isArray(this.value) &&
149
- this.value.length > 0 &&
150
- util.isObject(this.value[0])
151
- ) {
152
- return true;
153
- } else {
154
- if (this.valueType === 'object') {
155
- return true;
156
- } else {
157
- return false;
158
- }
159
- }
160
- },
161
- model: {
162
- get() {
163
- return this.value === undefined ? [] : this.value;
164
- },
165
- set(val) {
166
- return val;
167
- }
168
- },
169
- label() {
170
- if (this.sysCode) {
171
- return this.service ? 'label' : 'shortName';
172
- }
173
- return this.labelKey;
174
- },
175
- valKey() {
176
- if (this.sysCode) {
177
- return this.service ? 'value' : 'cciValue';
178
- }
179
- return this.valueKey;
180
- },
181
- results() {
182
- return this.options ? this.options : this.data;
183
- },
184
- labelVal() {
185
- let model =
186
- typeof this.model === 'string'
187
- ? this.model.split(',')
188
- : this.model || [];
189
- let label = model.map((item) => {
190
- if (util.isObject(item)) {
191
- return item[this.label];
192
- }
193
- if (util.isObject(this.results[0])) {
194
- let vals = [];
195
- this.results.forEach((ele) => {
196
- if (ele[this.valKey] === item) {
197
- vals.push(ele[this.label]);
198
- }
199
- });
200
- return vals.join(this.separator);
201
- }
202
- return item;
203
- });
204
- return label.join(this.separator);
205
- },
206
- findCode() {
207
- if (this.service) {
208
- return `/${this.service}${getDictList}`;
209
- }
210
- return findSysCode;
211
- }
212
- },
213
- watch: {
214
- sysCode: {
215
- immediate: true,
216
- handler(val, old) {
217
- if (val && val != old) {
218
- const options = store.get(val);
219
- if (options) {
220
- this.options = JSON.parse(JSON.stringify(options));
221
- } else {
222
- this.getData(this.findCode, val);
223
- }
224
- }
225
- }
226
- },
227
- url: {
228
- immediate: true,
229
- handler(val) {
230
- if (val && !this.sysCode) {
231
- this.getData(val);
232
- }
233
- }
234
- },
235
- param: {
236
- deep: true,
237
- handler() {
238
- this.url && this.getData(this.url);
239
- }
240
- }
241
- },
242
- beforeCreate() {
243
- this.getData = debounce(500, (url, sysCode) => {
244
- this.getDatas(url, sysCode);
245
- });
246
- },
247
- created() {
248
- this.bindEventBus();
249
- },
250
- mounted() {},
251
- methods: {
252
- getDatas(url, sysCode) {
253
- let params = {};
254
- if (this.results.length === 0) {
255
- params = util.extend(
256
- {},
257
- this.param,
258
- sysCode ? { sysAppCode: sysCode, code: sysCode } : {}
259
- );
260
- } else {
261
- return false;
262
- }
263
- if (
264
- !this.ajax ||
265
- (!this.isNoParamRequest && Object.keys(this.param).length == 0)
266
- ) {
267
- return false;
268
- }
269
- this.loading = true;
270
- util
271
- .ajax({
272
- url: url,
273
- method: this.method,
274
- params: params,
275
- data: params
276
- })
277
- .then((res) => {
278
- this.loading = false;
279
- this.canceled = false;
280
- if (res.rCode === 0) {
281
- this.options = JSON.parse(JSON.stringify(res.results));
282
- if (sysCode || this.dataKey) {
283
- const bus = this.bus || this.$root.Bus;
284
- bus &&
285
- bus.$emit(
286
- sysCode || this.dataKey,
287
- JSON.parse(JSON.stringify(this.options))
288
- );
289
- store.set(sysCode, JSON.parse(JSON.stringify(res.results)));
290
- }
291
- } else {
292
- let msg = res.msg || '系统错误,请联系管理员!';
293
- this.$message.error(msg);
294
- }
295
- })
296
- .catch((err) => {
297
- this.loading = false;
298
- if (err.message) {
299
- if (err.message !== 'canceled') {
300
- this.$message.error(err.message);
301
- }
302
- if (err.message === 'canceled' && sysCode) {
303
- this.canceled = true;
304
- }
305
- }
306
- });
307
- },
308
- getprops(attrs, res) {
309
- if (res.checked && this.model) {
310
- this.$emit(
311
- 'input',
312
- this.valueType === 'object' ? res : res[this.valKey]
313
- );
314
- }
315
- return util.isObject(res) ? { ...attrs, ...res } : attrs;
316
- },
317
- setOptions(val) {
318
- this.options = val;
319
- },
320
- bindEventBus() {
321
- const bus = this.bus || this.$root.Bus;
322
- bus && bus.$on(this.sysCode || this.dataKey, this.setOptions);
323
- },
324
- unbindEventBus() {
325
- const bus = this.bus || this.$root.Bus;
326
- bus && bus.$off(this.sysCode || this.dataKey, this.setOptions);
327
- }
328
- },
329
- beforeDestroy() {
330
- this.unbindEventBus();
331
- }
332
- };
333
- </script>
1
+ <template>
2
+ <div v-if="!hide" class="es-checkbox-group">
3
+ <div
4
+ v-if="readonly"
5
+ class="es-input__inner"
6
+ :class="{ 'es-plain': this.plain || $attrs.text }"
7
+ >
8
+ {{ labelVal }}
9
+ </div>
10
+ <el-checkbox-group
11
+ v-else
12
+ v-show="display"
13
+ v-model="model"
14
+ v-bind="{ valueKey: valKey, labelKey: label, ...$attrs }"
15
+ v-on="$listeners"
16
+ >
17
+ <template v-if="genre === 'button'">
18
+ <el-checkbox-button
19
+ v-for="(item, index) in results"
20
+ :key="index"
21
+ v-bind="getprops($attrs, item)"
22
+ :label="isObject || typeof item == 'string' ? item : item[valKey]"
23
+ :disabled="typeof item == 'string' ? false : item.disabled"
24
+ >
25
+ {{
26
+ typeof item == 'string'
27
+ ? item
28
+ : item[label]
29
+ ? item[label]
30
+ : item.label || item[valKey]
31
+ }}
32
+ </el-checkbox-button>
33
+ </template>
34
+ <template v-else>
35
+ <el-checkbox
36
+ v-for="(item, index) in results"
37
+ :key="index"
38
+ v-bind="getprops($attrs, item)"
39
+ :label="isObject || typeof item == 'string' ? item : item[valKey]"
40
+ :disabled="typeof item == 'string' ? false : item.disabled"
41
+ :border="genre === 'border'"
42
+ >
43
+ {{
44
+ typeof item == 'string'
45
+ ? item
46
+ : item[label]
47
+ ? item[label]
48
+ : item.label || item[valKey]
49
+ }}
50
+ </el-checkbox>
51
+ </template>
52
+ </el-checkbox-group>
53
+ </div>
54
+ </template>
55
+
56
+ <script>
57
+ import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
58
+ import { debounce } from 'throttle-debounce';
59
+ import store from 'eoss-ui/src/utils/store';
60
+ import util from 'eoss-ui/src/utils/util';
61
+ export default {
62
+ name: 'EsCheckboxGroup',
63
+ inheritAttrs: false,
64
+ inject: {
65
+ esForm: {
66
+ default: ''
67
+ }
68
+ },
69
+ props: {
70
+ method: {
71
+ type: String,
72
+ default: 'get'
73
+ },
74
+ service: String,
75
+ // 选择项本地数据
76
+ data: {
77
+ type: Array,
78
+ default() {
79
+ return [];
80
+ }
81
+ },
82
+ param: {
83
+ type: Object,
84
+ default() {
85
+ return {};
86
+ }
87
+ },
88
+ // 选择项远程地址
89
+ url: String,
90
+ hide: {
91
+ type: Boolean,
92
+ default: false
93
+ },
94
+ // 选择项获取代码表数据(优先级大于url)
95
+ sysCode: String,
96
+ // 样式风格 button(按钮样式), border(带有边框)
97
+ genre: {
98
+ type: String,
99
+ default: ''
100
+ },
101
+ separator: {
102
+ type: String,
103
+ default: '、'
104
+ },
105
+ display: {
106
+ type: Boolean,
107
+ default: true
108
+ },
109
+ valueType: {
110
+ type: String,
111
+ default: 'string',
112
+ validator: function (value) {
113
+ return ['string', 'object'].includes(value);
114
+ }
115
+ },
116
+ valueKey: {
117
+ type: String,
118
+ default: 'value'
119
+ },
120
+ // 指定选择项显示值的键名,data元素是对象类型时必填
121
+ labelKey: {
122
+ type: String,
123
+ default: 'name'
124
+ },
125
+ value: [Array, String],
126
+ readonly: Boolean,
127
+ plain: Boolean,
128
+ ajax: {
129
+ type: Boolean,
130
+ default: true
131
+ },
132
+ isNoParamRequest: {
133
+ type: Boolean,
134
+ default: true
135
+ },
136
+ dataKey: String
137
+ },
138
+ data() {
139
+ return {
140
+ options: '',
141
+ canceled: false
142
+ };
143
+ },
144
+ computed: {
145
+ isObject() {
146
+ if (
147
+ this.value !== '' &&
148
+ Array.isArray(this.value) &&
149
+ this.value.length > 0 &&
150
+ util.isObject(this.value[0])
151
+ ) {
152
+ return true;
153
+ } else {
154
+ if (this.valueType === 'object') {
155
+ return true;
156
+ } else {
157
+ return false;
158
+ }
159
+ }
160
+ },
161
+ model: {
162
+ get() {
163
+ return this.value === undefined ? [] : this.value;
164
+ },
165
+ set(val) {
166
+ return val;
167
+ }
168
+ },
169
+ label() {
170
+ if (this.sysCode) {
171
+ return this.service ? 'label' : 'shortName';
172
+ }
173
+ return this.labelKey;
174
+ },
175
+ valKey() {
176
+ if (this.sysCode) {
177
+ return this.service ? 'value' : 'cciValue';
178
+ }
179
+ return this.valueKey;
180
+ },
181
+ results() {
182
+ return this.options ? this.options : this.data;
183
+ },
184
+ labelVal() {
185
+ let model =
186
+ typeof this.model === 'string'
187
+ ? this.model.split(',')
188
+ : this.model || [];
189
+ let label = model.map((item) => {
190
+ if (util.isObject(item)) {
191
+ return item[this.label];
192
+ }
193
+ if (util.isObject(this.results[0])) {
194
+ let vals = [];
195
+ this.results.forEach((ele) => {
196
+ if (ele[this.valKey] === item) {
197
+ vals.push(ele[this.label]);
198
+ }
199
+ });
200
+ return vals.join(this.separator);
201
+ }
202
+ return item;
203
+ });
204
+ return label.join(this.separator);
205
+ },
206
+ findCode() {
207
+ if (this.service) {
208
+ return `/${this.service}${getDictList}`;
209
+ }
210
+ return findSysCode;
211
+ }
212
+ },
213
+ watch: {
214
+ sysCode: {
215
+ immediate: true,
216
+ handler(val, old) {
217
+ if (val && val != old) {
218
+ const options = store.get(val);
219
+ if (options) {
220
+ this.options = JSON.parse(JSON.stringify(options));
221
+ } else {
222
+ this.getData(this.findCode, val);
223
+ }
224
+ }
225
+ }
226
+ },
227
+ url: {
228
+ immediate: true,
229
+ handler(val) {
230
+ if (val && !this.sysCode) {
231
+ this.getData(val);
232
+ }
233
+ }
234
+ },
235
+ param: {
236
+ deep: true,
237
+ handler() {
238
+ this.url && this.getData(this.url);
239
+ }
240
+ }
241
+ },
242
+ beforeCreate() {
243
+ this.getData = debounce(500, (url, sysCode) => {
244
+ this.getDatas(url, sysCode);
245
+ });
246
+ },
247
+ created() {
248
+ this.bindEventBus();
249
+ },
250
+ mounted() {},
251
+ methods: {
252
+ getDatas(url, sysCode) {
253
+ let params = {};
254
+ if (this.results.length === 0) {
255
+ params = util.extend(
256
+ {},
257
+ this.param,
258
+ sysCode ? { sysAppCode: sysCode, code: sysCode } : {}
259
+ );
260
+ } else {
261
+ return false;
262
+ }
263
+ if (
264
+ !this.ajax ||
265
+ (!this.isNoParamRequest && Object.keys(this.param).length == 0)
266
+ ) {
267
+ return false;
268
+ }
269
+ this.loading = true;
270
+ util
271
+ .ajax({
272
+ url: url,
273
+ method: this.method,
274
+ params: params,
275
+ data: params
276
+ })
277
+ .then((res) => {
278
+ this.loading = false;
279
+ this.canceled = false;
280
+ if (res.rCode === 0) {
281
+ this.options = JSON.parse(JSON.stringify(res.results));
282
+ if (sysCode || this.dataKey) {
283
+ const bus = this.bus || this.$root.Bus;
284
+ bus &&
285
+ bus.$emit(
286
+ sysCode || this.dataKey,
287
+ JSON.parse(JSON.stringify(this.options))
288
+ );
289
+ store.set(sysCode, JSON.parse(JSON.stringify(res.results)));
290
+ }
291
+ } else {
292
+ let msg = res.msg || '系统错误,请联系管理员!';
293
+ this.$message.error(msg);
294
+ }
295
+ })
296
+ .catch((err) => {
297
+ this.loading = false;
298
+ if (err.message) {
299
+ if (err.message !== 'canceled') {
300
+ this.$message.error(err.message);
301
+ }
302
+ if (err.message === 'canceled' && sysCode) {
303
+ this.canceled = true;
304
+ }
305
+ }
306
+ });
307
+ },
308
+ getprops(attrs, res) {
309
+ if (res.checked && this.model) {
310
+ this.$emit(
311
+ 'input',
312
+ this.valueType === 'object' ? res : res[this.valKey]
313
+ );
314
+ }
315
+ return util.isObject(res) ? { ...attrs, ...res } : attrs;
316
+ },
317
+ setOptions(val) {
318
+ this.options = val;
319
+ },
320
+ bindEventBus() {
321
+ const bus = this.bus || this.$root.Bus;
322
+ bus && bus.$on(this.sysCode || this.dataKey, this.setOptions);
323
+ },
324
+ unbindEventBus() {
325
+ const bus = this.bus || this.$root.Bus;
326
+ bus && bus.$off(this.sysCode || this.dataKey, this.setOptions);
327
+ }
328
+ },
329
+ beforeDestroy() {
330
+ this.unbindEventBus();
331
+ }
332
+ };
333
+ </script>