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