eoss-ui 0.7.96 → 0.7.97

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 (123) hide show
  1. package/lib/button-group.js +1 -1
  2. package/lib/button.js +1 -1
  3. package/lib/calogin.js +1 -1
  4. package/lib/checkbox-group.js +1 -1
  5. package/lib/data-table-form.js +1 -1
  6. package/lib/data-table.js +9 -9
  7. package/lib/date-picker.js +1 -1
  8. package/lib/dialog.js +1 -1
  9. package/lib/eoss-ui.common.js +291 -290
  10. package/lib/flow-group.js +1 -1
  11. package/lib/flow-list.js +97 -97
  12. package/lib/flow.js +176 -175
  13. package/lib/form.js +1 -1
  14. package/lib/handle-user.js +1 -1
  15. package/lib/handler.js +1 -1
  16. package/lib/icon.js +1 -1
  17. package/lib/index.js +1 -1
  18. package/lib/input-number.js +1 -1
  19. package/lib/input.js +1 -1
  20. package/lib/login.js +1 -1
  21. package/lib/main.js +6 -6
  22. package/lib/nav.js +1 -1
  23. package/lib/page.js +1 -1
  24. package/lib/pagination.js +1 -1
  25. package/lib/player.js +1 -1
  26. package/lib/qr-code.js +1 -1
  27. package/lib/radio-group.js +1 -1
  28. package/lib/retrial-auth.js +1 -1
  29. package/lib/select-ganged.js +1 -1
  30. package/lib/select.js +1 -1
  31. package/lib/selector-panel.js +1 -1
  32. package/lib/selector.js +1 -1
  33. package/lib/sizer.js +1 -1
  34. package/lib/steps.js +1 -1
  35. package/lib/switch.js +1 -1
  36. package/lib/table-form.js +1 -1
  37. package/lib/tabs.js +1 -1
  38. package/lib/theme-chalk/index.css +1 -1
  39. package/lib/theme-chalk/login.css +1 -1
  40. package/lib/tips.js +1 -1
  41. package/lib/tree-group.js +1 -1
  42. package/lib/tree.js +1 -1
  43. package/lib/upload.js +1 -1
  44. package/lib/utils/util.js +1 -1
  45. package/lib/wujie.js +1 -1
  46. package/lib/wxlogin.js +1 -1
  47. package/package.json +1 -1
  48. package/packages/button-group/src/main.vue +346 -346
  49. package/packages/calogin/src/main.vue +412 -412
  50. package/packages/clients/src/main.vue +151 -151
  51. package/packages/data-table/src/column.vue +1 -1
  52. package/packages/flow/src/component/Circulate.vue +417 -417
  53. package/packages/flow/src/component/CommonOpinions.vue +376 -376
  54. package/packages/flow/src/component/CustomPreset.vue +324 -324
  55. package/packages/flow/src/component/FileList.vue +97 -97
  56. package/packages/flow/src/component/FreeCirculation.vue +3 -2
  57. package/packages/flow/src/component/Preset.vue +257 -257
  58. package/packages/flow/src/component/SendMsg.vue +242 -242
  59. package/packages/flow/src/component/SortFlow.vue +110 -110
  60. package/packages/flow/src/component/taskUnionExamine.vue +761 -761
  61. package/packages/flow/src/form.vue +123 -123
  62. package/packages/flow/src/freeStartFlow.vue +2855 -2855
  63. package/packages/flow/src/main.vue +1 -1
  64. package/packages/flow/src/processForm.vue +1680 -1680
  65. package/packages/flow/src/processReject.vue +309 -309
  66. package/packages/flow/src/reset.vue +946 -946
  67. package/packages/flow/src/startTaskRead.vue +695 -695
  68. package/packages/flow/src/supervise.vue +159 -159
  69. package/packages/flow/src/table.vue +58 -58
  70. package/packages/flow-list/src/main.vue +2337 -2337
  71. package/packages/form/src/main.vue +3901 -3901
  72. package/packages/form/src/table.vue +1512 -1512
  73. package/packages/icon/src/main.vue +104 -104
  74. package/packages/login/src/resetPassword.vue +557 -557
  75. package/packages/main/src/public/online.vue +89 -89
  76. package/packages/main/src/public/search.vue +464 -464
  77. package/packages/main/src/public/settings.vue +273 -273
  78. package/packages/main/src/simplicity/apps.vue +388 -388
  79. package/packages/main/src/simplicity/avatar.vue +82 -82
  80. package/packages/main/src/simplicity/handler.vue +158 -158
  81. package/packages/main/src/simplicity/menu-list.vue +135 -135
  82. package/packages/main/src/simplicity/message.vue +293 -293
  83. package/packages/main/src/simplicity/notice.vue +222 -222
  84. package/packages/main/src/simplicity/sub-menu.vue +276 -276
  85. package/packages/main/src/simplicity/user.vue +259 -259
  86. package/packages/main/src/simplicityTop/apps.vue +388 -388
  87. package/packages/main/src/simplicityTop/avatar.vue +82 -82
  88. package/packages/main/src/simplicityTop/handler.vue +215 -215
  89. package/packages/main/src/simplicityTop/lists.vue +84 -84
  90. package/packages/main/src/simplicityTop/menu-list.vue +135 -135
  91. package/packages/main/src/simplicityTop/message.vue +293 -293
  92. package/packages/main/src/simplicityTop/notice.vue +222 -222
  93. package/packages/main/src/simplicityTop/router-page.vue +45 -45
  94. package/packages/main/src/simplicityTop/sub-menu.vue +274 -274
  95. package/packages/main/src/simplicityTop/user.vue +259 -259
  96. package/packages/menu/src/main.vue +595 -595
  97. package/packages/nav/src/main.vue +351 -351
  98. package/packages/selector/src/main.vue +761 -761
  99. package/packages/selector-panel/src/main.vue +1036 -1036
  100. package/packages/selector-panel/src/selection.vue +174 -174
  101. package/packages/switch/src/main.vue +170 -170
  102. package/packages/theme-chalk/src/data-table.scss +297 -297
  103. package/packages/theme-chalk/src/flow-list.scss +55 -55
  104. package/packages/theme-chalk/src/flow.scss +373 -373
  105. package/packages/theme-chalk/src/form.scss +501 -501
  106. package/packages/theme-chalk/src/handler.scss +148 -148
  107. package/packages/theme-chalk/src/icon.scss +3452 -3452
  108. package/packages/theme-chalk/src/login.scss +1006 -1006
  109. package/packages/theme-chalk/src/main.scss +664 -664
  110. package/packages/theme-chalk/src/menu.scss +224 -224
  111. package/packages/theme-chalk/src/selector.scss +114 -114
  112. package/packages/theme-chalk/src/simplicity-top.scss +1845 -1845
  113. package/packages/theme-chalk/src/simplicity.scss +1403 -1403
  114. package/packages/theme-chalk/src/tree.scss +165 -165
  115. package/packages/theme-chalk/src/upload.scss +172 -172
  116. package/packages/tips/src/main.vue +141 -141
  117. package/packages/toolbar/src/main.vue +430 -430
  118. package/packages/upload/src/main.vue +1344 -1344
  119. package/packages/wujie/src/main.vue +146 -146
  120. package/src/config/api.js +348 -348
  121. package/src/index.js +163 -163
  122. package/src/utils/rules.js +18 -18
  123. package/src/utils/util.js +18 -19
@@ -1,346 +1,346 @@
1
- <template>
2
- <el-button-group class="es-button-group">
3
- <template v-if="length > 1">
4
- <template v-for="(item, index) in showBtns">
5
- <template v-if="item && !item.hide">
6
- <es-upload
7
- v-if="item.upload || (item.code && item.ownId)"
8
- :key="index"
9
- v-bind="{
10
- ...exclAttribute({
11
- data: item,
12
- attrs: ['events']
13
- }),
14
- ...parseProps(),
15
- method: 'post',
16
- btnSize: size,
17
- showFileList: false,
18
- selectType: mode == 'plus' ? 'text' : item.type
19
- }"
20
- v-on="item.events"
21
- ></es-upload>
22
- <el-tooltip
23
- :key="index"
24
- v-else-if="item.showTooltip"
25
- :effect="item.effect ? item.effect : 'dark'"
26
- :content="item.tips"
27
- :placement="item.placement ? item.placement : 'top'"
28
- >
29
- <es-button
30
- :stop="stop"
31
- :data="data"
32
- :outside="outside"
33
- v-bind="
34
- exclAttribute({
35
- data: item,
36
- attrs: ['events']
37
- })
38
- "
39
- :size="size"
40
- :type="mode == 'plus' ? 'text' : item.type"
41
- v-on="item.events"
42
- @click="handleClick({ ...data, handle: item })"
43
- >
44
- {{
45
- item.template
46
- ? item.template({ ...data, config: item })
47
- : item.text
48
- }}
49
- </es-button>
50
- </el-tooltip>
51
- <es-button
52
- v-else
53
- :stop="stop"
54
- :data="data"
55
- :outside="outside"
56
- v-bind="
57
- exclAttribute({
58
- data: item,
59
- attrs: ['events']
60
- })
61
- "
62
- :key="index"
63
- :size="size"
64
- :type="mode == 'plus' ? 'text' : item.type"
65
- v-on="item.events"
66
- @click="handleClick({ ...data, handle: item })"
67
- >
68
- {{
69
- item.template
70
- ? item.template({ ...data, config: item })
71
- : item.text
72
- }}
73
- </es-button>
74
- </template>
75
- </template>
76
- </template>
77
- <el-dropdown
78
- v-if="other.length > 0"
79
- ref="dropdown"
80
- @command="handleCommand"
81
- @visible-change="handleChange"
82
- :trigger="trigger"
83
- >
84
- <el-button :size="size" :type="mode == 'plus' ? 'text' : ''">
85
- <el-badge v-bind="badges">
86
- <template v-if="mode == 'plus'">更多</template>
87
- <template v-else-if="moreText">
88
- {{ moreText }}
89
- <i
90
- :class="{
91
- 'el-icon-arrow-down': !show,
92
- 'el-icon-arrow-up': show
93
- }"
94
- ></i>
95
- </template>
96
- <i v-else class="es-icon-more"></i>
97
- </el-badge>
98
- </el-button>
99
- <el-dropdown-menu slot="dropdown">
100
- <el-dropdown-item
101
- v-for="(item, index) in other"
102
- :key="index"
103
- :command="item"
104
- :class="{ 'es-dropdown-padding': item.upload || item.selector }"
105
- v-show="!item.hide"
106
- >
107
- <es-upload
108
- v-if="item.upload || (item.code && item.ownId)"
109
- class="es-dropdown-upload"
110
- v-bind="{
111
- ...exclAttribute({
112
- data: item,
113
- attrs: ['events']
114
- }),
115
- ...parseProps(),
116
- method: 'post',
117
- showFileList: false,
118
- selectType: 'text'
119
- }"
120
- v-on="item.events"
121
- ></es-upload>
122
- <es-selector
123
- v-else-if="item.selector"
124
- class="es-dropdown-selector"
125
- v-bind="{
126
- reset: true,
127
- ...exclAttribute({
128
- data: item,
129
- attrs: ['events', 'type', 'value']
130
- }),
131
- businessData: data
132
- }"
133
- v-on="item.events"
134
- :button="{ size: 'medium', type: 'text' }"
135
- >
136
- <i :class="item.icon" v-if="item.icon"></i
137
- >{{
138
- item.template
139
- ? item.template({ ...data, config: item })
140
- : item.text
141
- }}
142
- </es-selector>
143
- <el-tooltip
144
- :key="index"
145
- v-else-if="item.showTooltip"
146
- :effect="item.effect ? item.effect : 'dark'"
147
- :content="item.tips"
148
- :placement="item.placement ? item.placement : 'top'"
149
- >
150
- <span type="text">
151
- {{
152
- item.template
153
- ? item.template({ ...data, config: item })
154
- : item.text
155
- }}
156
- </span></el-tooltip
157
- >
158
- <template v-else>
159
- <i :class="item.icon" v-if="item.icon"></i
160
- >{{
161
- item.template
162
- ? item.template({ ...data, config: item })
163
- : item.text
164
- }}
165
- </template>
166
- <el-badge
167
- v-if="item.badge"
168
- v-bind="
169
- typeof item.badge === 'number'
170
- ? { value: item.badge }
171
- : item.badge
172
- "
173
- ></el-badge>
174
- </el-dropdown-item>
175
- </el-dropdown-menu>
176
- </el-dropdown>
177
- </el-button-group>
178
- </template>
179
- <script>
180
- import util from 'eoss-ui/src/utils/util';
181
- export default {
182
- name: 'EsButtonGroup',
183
- provide() {
184
- return {
185
- btnGroup: this
186
- };
187
- },
188
- props: {
189
- mode: String,
190
- value: String,
191
- data: Object,
192
- contents: { type: Array, default: [] },
193
- length: {
194
- type: Number,
195
- default: 3
196
- },
197
- rules: Function,
198
- stop: Boolean,
199
- trigger: {
200
- type: String,
201
- default: 'hover'
202
- },
203
- useCaseCodeKey: String,
204
- moreText: String,
205
- size: {
206
- type: String,
207
- default: 'mini'
208
- },
209
- placement: {
210
- type: String,
211
- default: 'bottom'
212
- },
213
- parseData: Function,
214
- badge: Object,
215
- sort: Boolean,
216
- outside: {
217
- type: Boolean,
218
- default: true
219
- }
220
- },
221
- computed: {
222
- btns() {
223
- return this.getBtns();
224
- },
225
- showBtns() {
226
- return this.btns.length > this.length
227
- ? this.btns.slice(0, this.length - 1)
228
- : this.btns;
229
- },
230
- other() {
231
- let btns =
232
- this.length > 0 && (this.btns.length > this.length || this.length == 1)
233
- ? this.btns.slice(this.length - 1, this.btns.length)
234
- : [];
235
- return btns;
236
- },
237
- badges() {
238
- if (
239
- this.other.length &&
240
- this.other.filter((item) => {
241
- return item.badge;
242
- }).length
243
- ) {
244
- return this.badge ? { isDot: true, ...this.badge } : { isDot: true };
245
- }
246
- return this.badge
247
- ? { isDot: true, hidden: true, ...this.badge }
248
- : { isDot: true, hidden: true };
249
- }
250
- },
251
- watch: {},
252
- data() {
253
- return {
254
- show: false
255
- };
256
- },
257
- mounted() {
258
- this.resetWidth();
259
- },
260
- methods: {
261
- exclAttribute({ data, attrs }) {
262
- return util.exclAttribute({ data, attrs });
263
- },
264
- getBtns() {
265
- let useCaseCodes = util.getStorage('useCaseCodes');
266
- let keyword =
267
- this.data && this.useCaseCodeKey
268
- ? this.data.row[this.useCaseCodeKey]
269
- : null;
270
- let arry = this.contents.filter((item) => {
271
- if (Object.prototype.hasOwnProperty.call(item, 'rules')) {
272
- if (useCaseCodes && (item.useCaseCode || keyword)) {
273
- return (
274
- item.rules(this.data.row) &&
275
- useCaseCodes.indexOf(item.useCaseCode || keyword) > -1
276
- );
277
- }
278
- return item.rules(this.data.row);
279
- }
280
- if (this.rules !== undefined) {
281
- if (useCaseCodes && (item.useCaseCode || keyword)) {
282
- return (
283
- this.rules(this.data.row) &&
284
- useCaseCodes.indexOf(item.useCaseCode || keyword) > -1
285
- );
286
- }
287
- return this.rules(this.data.row);
288
- }
289
- if (useCaseCodes && (item.useCaseCode || keyword)) {
290
- return useCaseCodes.indexOf(item.useCaseCode || keyword) > -1;
291
- }
292
- return item.hide !== true;
293
- });
294
- let newBtns = arry.map((item) => {
295
- let badge, tips;
296
- if (item.badge && typeof item.badge === 'function') {
297
- badge = item.badge(this.data.row);
298
- }
299
- if (item.tips && typeof item.tips === 'function') {
300
- item.tips = item.tips(this.data.row);
301
- }
302
- return badge ? { ...item, badge: badge } : { ...item };
303
- });
304
- if (this.sort) {
305
- newBtns = newBtns.sort((a, b) => {
306
- return (b.badge ? 1 : 0) - (a.badge ? 1 : 0);
307
- });
308
- }
309
- return newBtns;
310
- },
311
- handleChange(res) {
312
- this.show = res;
313
- },
314
- handleClick(obj) {
315
- this.$emit('handleClick', obj);
316
- this.$emit('handle-click', obj);
317
- },
318
- handleCommand(res) {
319
- if (res.upload || res.selector) {
320
- this.$refs.dropdown.hide();
321
- return false;
322
- }
323
- this.$emit('handleClick', { ...this.data, handle: res });
324
- this.$emit('handle-click', { ...this.data, handle: res });
325
- },
326
- resetWidth() {
327
- this.$nextTick(() => {
328
- let childNodes = this.$el.childNodes;
329
- let width = parseInt(this.value, 10);
330
- let w = 0;
331
- for (let i = 0; i < childNodes.length; i++) {
332
- let item = childNodes[i];
333
- w += item.clientWidth ? item.clientWidth : 0;
334
- }
335
- w += 20 + childNodes.length + 10;
336
- if (w > width) {
337
- this.$emit('input', w + 'px');
338
- }
339
- });
340
- },
341
- parseProps() {
342
- return this.parseData && this.data ? this.parseData(this.data) : {};
343
- }
344
- }
345
- };
346
- </script>
1
+ <template>
2
+ <el-button-group class="es-button-group">
3
+ <template v-if="length > 1">
4
+ <template v-for="(item, index) in showBtns">
5
+ <template v-if="item && !item.hide">
6
+ <es-upload
7
+ v-if="item.upload || (item.code && item.ownId)"
8
+ :key="index"
9
+ v-bind="{
10
+ ...exclAttribute({
11
+ data: item,
12
+ attrs: ['events']
13
+ }),
14
+ ...parseProps(),
15
+ method: 'post',
16
+ btnSize: size,
17
+ showFileList: false,
18
+ selectType: mode == 'plus' ? 'text' : item.type
19
+ }"
20
+ v-on="item.events"
21
+ ></es-upload>
22
+ <el-tooltip
23
+ :key="index"
24
+ v-else-if="item.showTooltip"
25
+ :effect="item.effect ? item.effect : 'dark'"
26
+ :content="item.tips"
27
+ :placement="item.placement ? item.placement : 'top'"
28
+ >
29
+ <es-button
30
+ :stop="stop"
31
+ :data="data"
32
+ :outside="outside"
33
+ v-bind="
34
+ exclAttribute({
35
+ data: item,
36
+ attrs: ['events']
37
+ })
38
+ "
39
+ :size="size"
40
+ :type="mode == 'plus' ? 'text' : item.type"
41
+ v-on="item.events"
42
+ @click="handleClick({ ...data, handle: item })"
43
+ >
44
+ {{
45
+ item.template
46
+ ? item.template({ ...data, config: item })
47
+ : item.text
48
+ }}
49
+ </es-button>
50
+ </el-tooltip>
51
+ <es-button
52
+ v-else
53
+ :stop="stop"
54
+ :data="data"
55
+ :outside="outside"
56
+ v-bind="
57
+ exclAttribute({
58
+ data: item,
59
+ attrs: ['events']
60
+ })
61
+ "
62
+ :key="index"
63
+ :size="size"
64
+ :type="mode == 'plus' ? 'text' : item.type"
65
+ v-on="item.events"
66
+ @click="handleClick({ ...data, handle: item })"
67
+ >
68
+ {{
69
+ item.template
70
+ ? item.template({ ...data, config: item })
71
+ : item.text
72
+ }}
73
+ </es-button>
74
+ </template>
75
+ </template>
76
+ </template>
77
+ <el-dropdown
78
+ v-if="other.length > 0"
79
+ ref="dropdown"
80
+ @command="handleCommand"
81
+ @visible-change="handleChange"
82
+ :trigger="trigger"
83
+ >
84
+ <el-button :size="size" :type="mode == 'plus' ? 'text' : ''">
85
+ <el-badge v-bind="badges">
86
+ <template v-if="mode == 'plus'">更多</template>
87
+ <template v-else-if="moreText">
88
+ {{ moreText }}
89
+ <i
90
+ :class="{
91
+ 'el-icon-arrow-down': !show,
92
+ 'el-icon-arrow-up': show
93
+ }"
94
+ ></i>
95
+ </template>
96
+ <i v-else class="es-icon-more"></i>
97
+ </el-badge>
98
+ </el-button>
99
+ <el-dropdown-menu slot="dropdown">
100
+ <el-dropdown-item
101
+ v-for="(item, index) in other"
102
+ :key="index"
103
+ :command="item"
104
+ :class="{ 'es-dropdown-padding': item.upload || item.selector }"
105
+ v-show="!item.hide"
106
+ >
107
+ <es-upload
108
+ v-if="item.upload || (item.code && item.ownId)"
109
+ class="es-dropdown-upload"
110
+ v-bind="{
111
+ ...exclAttribute({
112
+ data: item,
113
+ attrs: ['events']
114
+ }),
115
+ ...parseProps(),
116
+ method: 'post',
117
+ showFileList: false,
118
+ selectType: 'text'
119
+ }"
120
+ v-on="item.events"
121
+ ></es-upload>
122
+ <es-selector
123
+ v-else-if="item.selector"
124
+ class="es-dropdown-selector"
125
+ v-bind="{
126
+ reset: true,
127
+ ...exclAttribute({
128
+ data: item,
129
+ attrs: ['events', 'type', 'value']
130
+ }),
131
+ businessData: data
132
+ }"
133
+ v-on="item.events"
134
+ :button="{ size: 'medium', type: 'text' }"
135
+ >
136
+ <i :class="item.icon" v-if="item.icon"></i
137
+ >{{
138
+ item.template
139
+ ? item.template({ ...data, config: item })
140
+ : item.text
141
+ }}
142
+ </es-selector>
143
+ <el-tooltip
144
+ :key="index"
145
+ v-else-if="item.showTooltip"
146
+ :effect="item.effect ? item.effect : 'dark'"
147
+ :content="item.tips"
148
+ :placement="item.placement ? item.placement : 'top'"
149
+ >
150
+ <span type="text">
151
+ {{
152
+ item.template
153
+ ? item.template({ ...data, config: item })
154
+ : item.text
155
+ }}
156
+ </span></el-tooltip
157
+ >
158
+ <template v-else>
159
+ <i :class="item.icon" v-if="item.icon"></i
160
+ >{{
161
+ item.template
162
+ ? item.template({ ...data, config: item })
163
+ : item.text
164
+ }}
165
+ </template>
166
+ <el-badge
167
+ v-if="item.badge"
168
+ v-bind="
169
+ typeof item.badge === 'number'
170
+ ? { value: item.badge }
171
+ : item.badge
172
+ "
173
+ ></el-badge>
174
+ </el-dropdown-item>
175
+ </el-dropdown-menu>
176
+ </el-dropdown>
177
+ </el-button-group>
178
+ </template>
179
+ <script>
180
+ import util from 'eoss-ui/src/utils/util';
181
+ export default {
182
+ name: 'EsButtonGroup',
183
+ provide() {
184
+ return {
185
+ btnGroup: this
186
+ };
187
+ },
188
+ props: {
189
+ mode: String,
190
+ value: String,
191
+ data: Object,
192
+ contents: { type: Array, default: [] },
193
+ length: {
194
+ type: Number,
195
+ default: 3
196
+ },
197
+ rules: Function,
198
+ stop: Boolean,
199
+ trigger: {
200
+ type: String,
201
+ default: 'hover'
202
+ },
203
+ useCaseCodeKey: String,
204
+ moreText: String,
205
+ size: {
206
+ type: String,
207
+ default: 'mini'
208
+ },
209
+ placement: {
210
+ type: String,
211
+ default: 'bottom'
212
+ },
213
+ parseData: Function,
214
+ badge: Object,
215
+ sort: Boolean,
216
+ outside: {
217
+ type: Boolean,
218
+ default: true
219
+ }
220
+ },
221
+ computed: {
222
+ btns() {
223
+ return this.getBtns();
224
+ },
225
+ showBtns() {
226
+ return this.btns.length > this.length
227
+ ? this.btns.slice(0, this.length - 1)
228
+ : this.btns;
229
+ },
230
+ other() {
231
+ let btns =
232
+ this.length > 0 && (this.btns.length > this.length || this.length == 1)
233
+ ? this.btns.slice(this.length - 1, this.btns.length)
234
+ : [];
235
+ return btns;
236
+ },
237
+ badges() {
238
+ if (
239
+ this.other.length &&
240
+ this.other.filter((item) => {
241
+ return item.badge;
242
+ }).length
243
+ ) {
244
+ return this.badge ? { isDot: true, ...this.badge } : { isDot: true };
245
+ }
246
+ return this.badge
247
+ ? { isDot: true, hidden: true, ...this.badge }
248
+ : { isDot: true, hidden: true };
249
+ }
250
+ },
251
+ watch: {},
252
+ data() {
253
+ return {
254
+ show: false
255
+ };
256
+ },
257
+ mounted() {
258
+ this.resetWidth();
259
+ },
260
+ methods: {
261
+ exclAttribute({ data, attrs }) {
262
+ return util.exclAttribute({ data, attrs });
263
+ },
264
+ getBtns() {
265
+ let useCaseCodes = util.getStorage('useCaseCodes');
266
+ let keyword =
267
+ this.data && this.useCaseCodeKey
268
+ ? this.data.row[this.useCaseCodeKey]
269
+ : null;
270
+ let arry = this.contents.filter((item) => {
271
+ if (Object.prototype.hasOwnProperty.call(item, 'rules')) {
272
+ if (useCaseCodes && (item.useCaseCode || keyword)) {
273
+ return (
274
+ item.rules(this.data.row) &&
275
+ useCaseCodes.indexOf(item.useCaseCode || keyword) > -1
276
+ );
277
+ }
278
+ return item.rules(this.data.row);
279
+ }
280
+ if (this.rules !== undefined) {
281
+ if (useCaseCodes && (item.useCaseCode || keyword)) {
282
+ return (
283
+ this.rules(this.data.row) &&
284
+ useCaseCodes.indexOf(item.useCaseCode || keyword) > -1
285
+ );
286
+ }
287
+ return this.rules(this.data.row);
288
+ }
289
+ if (useCaseCodes && (item.useCaseCode || keyword)) {
290
+ return useCaseCodes.indexOf(item.useCaseCode || keyword) > -1;
291
+ }
292
+ return item.hide !== true;
293
+ });
294
+ let newBtns = arry.map((item) => {
295
+ let badge, tips;
296
+ if (item.badge && typeof item.badge === 'function') {
297
+ badge = item.badge(this.data.row);
298
+ }
299
+ if (item.tips && typeof item.tips === 'function') {
300
+ item.tips = item.tips(this.data.row);
301
+ }
302
+ return badge ? { ...item, badge: badge } : { ...item };
303
+ });
304
+ if (this.sort) {
305
+ newBtns = newBtns.sort((a, b) => {
306
+ return (b.badge ? 1 : 0) - (a.badge ? 1 : 0);
307
+ });
308
+ }
309
+ return newBtns;
310
+ },
311
+ handleChange(res) {
312
+ this.show = res;
313
+ },
314
+ handleClick(obj) {
315
+ this.$emit('handleClick', obj);
316
+ this.$emit('handle-click', obj);
317
+ },
318
+ handleCommand(res) {
319
+ if (res.upload || res.selector) {
320
+ this.$refs.dropdown.hide();
321
+ return false;
322
+ }
323
+ this.$emit('handleClick', { ...this.data, handle: res });
324
+ this.$emit('handle-click', { ...this.data, handle: res });
325
+ },
326
+ resetWidth() {
327
+ this.$nextTick(() => {
328
+ let childNodes = this.$el.childNodes;
329
+ let width = parseInt(this.value, 10);
330
+ let w = 0;
331
+ for (let i = 0; i < childNodes.length; i++) {
332
+ let item = childNodes[i];
333
+ w += item.clientWidth ? item.clientWidth : 0;
334
+ }
335
+ w += 20 + childNodes.length + 10;
336
+ if (w > width) {
337
+ this.$emit('input', w + 'px');
338
+ }
339
+ });
340
+ },
341
+ parseProps() {
342
+ return this.parseData && this.data ? this.parseData(this.data) : {};
343
+ }
344
+ }
345
+ };
346
+ </script>