eoss-ui 0.6.84 → 0.6.86

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 (306) hide show
  1. package/lib/button-group.js +105 -93
  2. package/lib/button.js +105 -93
  3. package/lib/calogin.js +338 -326
  4. package/lib/checkbox-group.js +105 -93
  5. package/lib/data-table-form.js +105 -93
  6. package/lib/data-table.js +105 -93
  7. package/lib/date-picker.js +105 -93
  8. package/lib/dialog.js +105 -93
  9. package/lib/eoss-ui.common.js +1169 -1185
  10. package/lib/flow-group.js +112 -95
  11. package/lib/flow-list.js +186 -174
  12. package/lib/flow.js +465 -417
  13. package/lib/form.js +227 -264
  14. package/lib/handle-user.js +105 -93
  15. package/lib/handler.js +105 -93
  16. package/lib/icon.js +105 -93
  17. package/lib/icons.js +1 -1
  18. package/lib/index.js +1 -1
  19. package/lib/input-number.js +105 -93
  20. package/lib/input.js +105 -93
  21. package/lib/login.js +112 -97
  22. package/lib/main.js +237 -225
  23. package/lib/nav.js +105 -93
  24. package/lib/page.js +105 -93
  25. package/lib/pagination.js +105 -93
  26. package/lib/player.js +105 -93
  27. package/lib/qr-code.js +118 -106
  28. package/lib/radio-group.js +105 -93
  29. package/lib/retrial-auth.js +105 -93
  30. package/lib/select-ganged.js +105 -93
  31. package/lib/select.js +105 -93
  32. package/lib/selector-panel.js +105 -93
  33. package/lib/selector.js +123 -99
  34. package/lib/sizer.js +105 -93
  35. package/lib/steps.js +105 -93
  36. package/lib/switch.js +105 -93
  37. package/lib/table-form.js +167 -190
  38. package/lib/tabs.js +105 -93
  39. package/lib/theme-chalk/base.css +1 -1
  40. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  41. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  42. package/lib/theme-chalk/icon.css +1 -1
  43. package/lib/theme-chalk/index.css +1 -1
  44. package/lib/theme-chalk/main.css +1 -1
  45. package/lib/theme-chalk/menu.css +1 -1
  46. package/lib/theme-chalk/simplicity.css +1 -1
  47. package/lib/theme-chalk/sizer.css +1 -1
  48. package/lib/theme-chalk/upload.css +1 -1
  49. package/lib/tips.js +105 -93
  50. package/lib/tree-group.js +105 -93
  51. package/lib/tree.js +105 -93
  52. package/lib/upload.js +105 -93
  53. package/lib/utils/util.js +105 -93
  54. package/lib/wujie.js +105 -93
  55. package/lib/wxlogin.js +105 -93
  56. package/package.json +160 -160
  57. package/packages/.DS_Store +0 -0
  58. package/packages/autocomplete/.DS_Store +0 -0
  59. package/packages/button/index.js +5 -5
  60. package/packages/button/src/main.vue +418 -418
  61. package/packages/button-group/index.js +5 -5
  62. package/packages/button-group/src/main.vue +298 -298
  63. package/packages/calendar/index.js +5 -5
  64. package/packages/calogin/.DS_Store +0 -0
  65. package/packages/calogin/index.js +5 -5
  66. package/packages/calogin/src/main.vue +412 -412
  67. package/packages/calogin/src/plugin.js +915 -915
  68. package/packages/card/index.js +5 -5
  69. package/packages/card/src/main.vue +156 -156
  70. package/packages/cascader/index.js +5 -5
  71. package/packages/cascader/src/main.vue +168 -168
  72. package/packages/checkbox-group/index.js +5 -5
  73. package/packages/checkbox-group/src/main.vue +333 -333
  74. package/packages/clients/index.js +5 -5
  75. package/packages/clients/src/main.vue +151 -151
  76. package/packages/data-table/index.js +5 -5
  77. package/packages/data-table/src/children.vue +39 -39
  78. package/packages/data-table/src/column.vue +989 -989
  79. package/packages/data-table/src/main.vue +1822 -1822
  80. package/packages/data-table/src/sizer.vue +195 -195
  81. package/packages/data-table-form/index.js +5 -5
  82. package/packages/data-table-form/src/checkbox.vue +101 -101
  83. package/packages/data-table-form/src/colgroup.vue +17 -17
  84. package/packages/data-table-form/src/main.vue +181 -181
  85. package/packages/data-table-form/src/radio.vue +65 -65
  86. package/packages/data-table-form/src/table.vue +233 -233
  87. package/packages/data-table-form/src/tbody.vue +336 -336
  88. package/packages/data-table-form/src/thead.vue +68 -68
  89. package/packages/date-picker/.DS_Store +0 -0
  90. package/packages/date-picker/index.js +5 -5
  91. package/packages/date-picker/src/.DS_Store +0 -0
  92. package/packages/date-picker/src/main.vue +236 -236
  93. package/packages/dialog/index.js +5 -5
  94. package/packages/enable-drag/index.js +5 -5
  95. package/packages/enterprise/index.js +5 -5
  96. package/packages/enterprise/src/main.vue +66 -66
  97. package/packages/error-page/index.js +5 -5
  98. package/packages/error-page/src/main.vue +44 -44
  99. package/packages/flow/.DS_Store +0 -0
  100. package/packages/flow/index.js +5 -5
  101. package/packages/flow/src/.DS_Store +0 -0
  102. package/packages/flow/src/component/Circulate.vue +370 -370
  103. package/packages/flow/src/component/CommonOpinions.vue +364 -364
  104. package/packages/flow/src/component/CustomPreset.vue +322 -322
  105. package/packages/flow/src/component/FileList.vue +99 -99
  106. package/packages/flow/src/component/Preset.vue +255 -255
  107. package/packages/flow/src/component/SendMsg.vue +241 -241
  108. package/packages/flow/src/component/TimeLimit.vue +190 -190
  109. package/packages/flow/src/component/taskUnionExamine.vue +639 -627
  110. package/packages/flow/src/form.vue +121 -121
  111. package/packages/flow/src/freeStartFlow.vue +2843 -2843
  112. package/packages/flow/src/main.vue +3654 -3650
  113. package/packages/flow/src/processForm.vue +1245 -1245
  114. package/packages/flow/src/processReject.vue +295 -295
  115. package/packages/flow/src/reset.vue +918 -918
  116. package/packages/flow/src/selectUser.vue +22 -8
  117. package/packages/flow/src/startTaskRead.vue +683 -683
  118. package/packages/flow/src/supervise.vue +152 -151
  119. package/packages/flow/src/table.vue +58 -58
  120. package/packages/flow-group/index.js +5 -5
  121. package/packages/flow-group/src/main.vue +692 -688
  122. package/packages/flow-list/.DS_Store +0 -0
  123. package/packages/flow-list/index.js +5 -5
  124. package/packages/flow-list/src/main.vue +1770 -1770
  125. package/packages/form/.DS_Store +0 -0
  126. package/packages/form/index.js +5 -5
  127. package/packages/form/src/main.vue +3814 -3797
  128. package/packages/form/src/table.vue +1508 -1502
  129. package/packages/handle-user/index.js +5 -5
  130. package/packages/handle-user/src/main.vue +138 -138
  131. package/packages/handler/index.js +5 -5
  132. package/packages/handler/src/main.vue +493 -493
  133. package/packages/icon/index.js +5 -5
  134. package/packages/icon/src/main.vue +101 -101
  135. package/packages/icons/index.js +5 -5
  136. package/packages/icons/src/icon.json +1 -1
  137. package/packages/icons/src/main.vue +81 -81
  138. package/packages/input/index.js +5 -5
  139. package/packages/input/src/main.vue +356 -356
  140. package/packages/input-number/index.js +5 -5
  141. package/packages/input-number/src/main.vue +106 -106
  142. package/packages/label/index.js +5 -5
  143. package/packages/label/src/main.vue +457 -457
  144. package/packages/layout/index.js +5 -5
  145. package/packages/layout/src/item.vue +152 -152
  146. package/packages/layout/src/main.vue +31 -31
  147. package/packages/login/.DS_Store +0 -0
  148. package/packages/login/index.js +5 -5
  149. package/packages/login/src/main.vue +1998 -2001
  150. package/packages/login/src/resetPassword.vue +562 -562
  151. package/packages/main/.DS_Store +0 -0
  152. package/packages/main/index.js +5 -5
  153. package/packages/main/src/.DS_Store +0 -0
  154. package/packages/main/src/default/message.vue +249 -249
  155. package/packages/main/src/default/notice.vue +157 -157
  156. package/packages/main/src/default/userinfo.vue +503 -503
  157. package/packages/main/src/public/online.vue +89 -89
  158. package/packages/main/src/public/search.vue +458 -458
  159. package/packages/main/src/public/settings.vue +221 -221
  160. package/packages/main/src/simplicity/apps.vue +388 -388
  161. package/packages/main/src/simplicity/avatar.vue +82 -82
  162. package/packages/main/src/simplicity/handler.vue +259 -259
  163. package/packages/main/src/simplicity/index.vue +2102 -2102
  164. package/packages/main/src/simplicity/lists.vue +84 -84
  165. package/packages/main/src/simplicity/menu-list.vue +135 -135
  166. package/packages/main/src/simplicity/message.vue +259 -259
  167. package/packages/main/src/simplicity/notice.vue +190 -190
  168. package/packages/main/src/simplicity/router-page.vue +45 -45
  169. package/packages/main/src/simplicity/sub-menu.vue +264 -264
  170. package/packages/main/src/simplicity/user.vue +260 -260
  171. package/packages/main/src/simplicity/userinfo.vue +312 -312
  172. package/packages/menu/.DS_Store +0 -0
  173. package/packages/menu/index.js +5 -5
  174. package/packages/menu/src/main.vue +584 -584
  175. package/packages/nav/index.js +5 -5
  176. package/packages/nav/src/main.vue +351 -351
  177. package/packages/notify/index.js +5 -5
  178. package/packages/notify/src/main.vue +538 -538
  179. package/packages/page/index.js +5 -5
  180. package/packages/page/src/main.vue +167 -167
  181. package/packages/pagination/index.js +5 -5
  182. package/packages/pagination/src/main.vue +96 -96
  183. package/packages/player/index.js +5 -5
  184. package/packages/player/src/main.vue +194 -194
  185. package/packages/qr-code/index.js +5 -5
  186. package/packages/qr-code/src/main.vue +170 -170
  187. package/packages/radio-group/index.js +6 -6
  188. package/packages/radio-group/src/main.vue +319 -319
  189. package/packages/retrial-auth/index.js +5 -5
  190. package/packages/retrial-auth/src/main.vue +280 -280
  191. package/packages/scrollbar/.DS_Store +0 -0
  192. package/packages/select/.DS_Store +0 -0
  193. package/packages/select/index.js +5 -5
  194. package/packages/select/src/main.vue +778 -778
  195. package/packages/select-ganged/index.js +5 -5
  196. package/packages/select-ganged/src/main.vue +724 -724
  197. package/packages/selector/.DS_Store +0 -0
  198. package/packages/selector/index.js +5 -5
  199. package/packages/selector/src/main.vue +745 -729
  200. package/packages/selector-panel/.DS_Store +0 -0
  201. package/packages/selector-panel/index.js +5 -5
  202. package/packages/selector-panel/src/main.vue +1027 -1027
  203. package/packages/selector-panel/src/selection.vue +170 -170
  204. package/packages/selector-panel/src/tree.vue +129 -129
  205. package/packages/sizer/index.js +5 -5
  206. package/packages/sizer/src/main.vue +254 -254
  207. package/packages/steps/index.js +5 -5
  208. package/packages/steps/src/main.vue +181 -181
  209. package/packages/switch/index.js +5 -5
  210. package/packages/switch/src/main.vue +154 -154
  211. package/packages/table-form/index.js +5 -5
  212. package/packages/tabs/index.js +5 -5
  213. package/packages/tabs/src/main.vue +788 -788
  214. package/packages/tabs-panel/index.js +5 -5
  215. package/packages/tabs-panel/src/main.vue +29 -29
  216. package/packages/theme-chalk/lib/base.css +1 -1
  217. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  218. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  219. package/packages/theme-chalk/lib/icon.css +1 -1
  220. package/packages/theme-chalk/lib/index.css +1 -1
  221. package/packages/theme-chalk/lib/main.css +1 -1
  222. package/packages/theme-chalk/lib/menu.css +1 -1
  223. package/packages/theme-chalk/lib/simplicity.css +1 -1
  224. package/packages/theme-chalk/lib/sizer.css +1 -1
  225. package/packages/theme-chalk/lib/upload.css +1 -1
  226. package/packages/theme-chalk/src/.DS_Store +0 -0
  227. package/packages/theme-chalk/src/base.scss +261 -261
  228. package/packages/theme-chalk/src/button-group.scss +176 -176
  229. package/packages/theme-chalk/src/button.scss +24 -24
  230. package/packages/theme-chalk/src/calendar.scss +113 -113
  231. package/packages/theme-chalk/src/card.scss +99 -99
  232. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  233. package/packages/theme-chalk/src/clients.scss +87 -87
  234. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  235. package/packages/theme-chalk/src/data-table.scss +293 -293
  236. package/packages/theme-chalk/src/date-picker.scss +7 -7
  237. package/packages/theme-chalk/src/dialog.scss +77 -77
  238. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  239. package/packages/theme-chalk/src/enterprise.scss +5 -5
  240. package/packages/theme-chalk/src/error-page.scss +18 -18
  241. package/packages/theme-chalk/src/flow-group.scss +110 -110
  242. package/packages/theme-chalk/src/flow-list.scss +39 -39
  243. package/packages/theme-chalk/src/flow.scss +348 -348
  244. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  245. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  246. package/packages/theme-chalk/src/form.scss +499 -499
  247. package/packages/theme-chalk/src/handle-user.scss +40 -40
  248. package/packages/theme-chalk/src/handler.scss +143 -143
  249. package/packages/theme-chalk/src/icon.scss +1817 -1805
  250. package/packages/theme-chalk/src/icons.scss +99 -99
  251. package/packages/theme-chalk/src/input.scss +9 -9
  252. package/packages/theme-chalk/src/label.scss +24 -24
  253. package/packages/theme-chalk/src/layout.scss +46 -46
  254. package/packages/theme-chalk/src/login.scss +984 -984
  255. package/packages/theme-chalk/src/main.scss +663 -663
  256. package/packages/theme-chalk/src/menu.scss +222 -222
  257. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  258. package/packages/theme-chalk/src/nav.scss +111 -111
  259. package/packages/theme-chalk/src/page.scss +3 -3
  260. package/packages/theme-chalk/src/pagination.scss +29 -29
  261. package/packages/theme-chalk/src/player.scss +9 -9
  262. package/packages/theme-chalk/src/qr-code.scss +17 -17
  263. package/packages/theme-chalk/src/radio-group.scss +9 -9
  264. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  265. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  266. package/packages/theme-chalk/src/select.scss +8 -8
  267. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  268. package/packages/theme-chalk/src/selector.scss +91 -91
  269. package/packages/theme-chalk/src/simplicity.scss +1355 -1355
  270. package/packages/theme-chalk/src/sizer.scss +36 -36
  271. package/packages/theme-chalk/src/steps.scss +88 -88
  272. package/packages/theme-chalk/src/switch.scss +3 -3
  273. package/packages/theme-chalk/src/table-form.scss +1 -1
  274. package/packages/theme-chalk/src/tabs.scss +87 -87
  275. package/packages/theme-chalk/src/tips.scss +7 -7
  276. package/packages/theme-chalk/src/toolbar.scss +179 -179
  277. package/packages/theme-chalk/src/tree-group.scss +72 -72
  278. package/packages/theme-chalk/src/tree.scss +165 -165
  279. package/packages/theme-chalk/src/upload.scss +172 -172
  280. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  281. package/packages/tips/index.js +5 -5
  282. package/packages/tips/src/main.vue +141 -141
  283. package/packages/toolbar/index.js +5 -5
  284. package/packages/toolbar/src/main.vue +430 -430
  285. package/packages/tree/index.js +5 -5
  286. package/packages/tree-group/index.js +5 -5
  287. package/packages/upload/.DS_Store +0 -0
  288. package/packages/upload/index.js +5 -5
  289. package/packages/upload/src/main.vue +1348 -1348
  290. package/packages/upload/src/picture.js +15 -15
  291. package/packages/wujie/index.js +5 -5
  292. package/packages/wujie/src/main.vue +145 -145
  293. package/packages/wxlogin/index.js +5 -5
  294. package/packages/wxlogin/src/main.vue +128 -128
  295. package/src/.DS_Store +0 -0
  296. package/src/config/api.js +294 -294
  297. package/src/config/image.js +2 -2
  298. package/src/index.js +163 -163
  299. package/src/utils/.DS_Store +0 -0
  300. package/src/utils/bus.js +3 -3
  301. package/src/utils/date-util.js +312 -312
  302. package/src/utils/http.js +50 -50
  303. package/src/utils/rules.js +18 -18
  304. package/src/utils/store.js +21 -21
  305. package/src/utils/util.js +141 -129
  306. package/src/utils/webSocket.js +107 -107
@@ -1,989 +1,989 @@
1
- <template>
2
- <el-table-column v-bind="config" :key="field">
3
- <slot> </slot>
4
- <template slot-scope="scope">
5
- <template v-if="isForm && !isReadOnly(scope)">
6
- <el-form-item
7
- v-if="!(type === 'handle' && !scope.row.hideHandle)"
8
- :name="name"
9
- :prop="field || prop"
10
- :rules="isNotRule(scope) ? [] : rules"
11
- :index="scope.$index"
12
- >
13
- <component
14
- v-if="getType(scope.row.formConfigs, 'component')"
15
- :is="tag"
16
- v-bind="getOptions(scope.row.formConfigs)"
17
- v-model="scope.row[field || prop]"
18
- :data="getData(scope.row.formOptions)"
19
- @blur="
20
- (event) => {
21
- handleBlur({
22
- item: config,
23
- event: event,
24
- data: scope.row,
25
- scope: scope
26
- });
27
- }
28
- "
29
- @focus="
30
- (event) => {
31
- handleFocus({
32
- item: config,
33
- event: event,
34
- data: scope.row,
35
- scope: scope
36
- });
37
- }
38
- "
39
- @change="
40
- (value) => {
41
- handleChange({
42
- item: config,
43
- name: field || prop,
44
- value: value,
45
- data: scope.row,
46
- scope: scope
47
- });
48
- }
49
- "
50
- ></component>
51
- <es-select
52
- v-else-if="getType(scope.row.formConfigs, 'select')"
53
- v-bind="getOptions(scope.row.formConfigs)"
54
- v-model="scope.row[field || prop]"
55
- :data="getData(scope.row.formOptions)"
56
- @blur="
57
- (event) => {
58
- handleBlur({
59
- item: config,
60
- event: event,
61
- data: scope.row,
62
- scope: scope
63
- });
64
- }
65
- "
66
- @focus="
67
- (event) => {
68
- handleFocus({
69
- item: config,
70
- event: event,
71
- data: scope.row,
72
- scope: scope
73
- });
74
- }
75
- "
76
- @change="
77
- (value) => {
78
- handleChange({
79
- item: config,
80
- name: field || prop,
81
- value: value,
82
- data: scope.row,
83
- scope: scope
84
- });
85
- }
86
- "
87
- >
88
- </es-select>
89
- <es-cascader
90
- v-else-if="getType(scope.row.formConfigs, 'cascader')"
91
- v-bind="getOptions(scope.row.formConfigs)"
92
- v-model="scope.row[field || prop]"
93
- :data="getData(scope.row.formOptions)"
94
- @blur="
95
- (event) => {
96
- handleBlur({
97
- item: config,
98
- event: event,
99
- data: scope.row,
100
- scope: scope
101
- });
102
- }
103
- "
104
- @focus="
105
- (event) => {
106
- handleFocus({
107
- item: config,
108
- event: event,
109
- data: scope.row,
110
- scope: scope
111
- });
112
- }
113
- "
114
- @change="
115
- (value) => {
116
- handleChange({
117
- item: config,
118
- name: field || prop,
119
- value: value,
120
- data: scope.row,
121
- scope: scope
122
- });
123
- }
124
- "
125
- >
126
- </es-cascader>
127
- <es-select-ganged
128
- v-else-if="getType(scope.row.formConfigs, 'ganged')"
129
- v-bind="getOptions(scope.row.formConfigs)"
130
- v-model="scope.row[field || prop]"
131
- :data="init(getData(scope.row.formOptions), config)"
132
- @change="
133
- (value) => {
134
- handleChange({
135
- name: field || prop,
136
- value: value,
137
- data: scope.row,
138
- item: item
139
- });
140
- }
141
- "
142
- >
143
- </es-select-ganged>
144
- <es-radio-group
145
- v-else-if="getType(scope.row.formConfigs, 'radio')"
146
- v-bind="getOptions(scope.row.formConfigs)"
147
- v-model="scope.row[field || prop]"
148
- :data="getData(scope.row.formOptions)"
149
- @change="
150
- (value) => {
151
- handleChange({
152
- item: config,
153
- name: field || prop,
154
- value: value,
155
- data: scope.row
156
- });
157
- }
158
- "
159
- >
160
- </es-radio-group>
161
- <es-checkbox-group
162
- v-else-if="getType(scope.row.formConfigs, 'checkbox')"
163
- v-bind="getOptions(scope.row.formConfigs)"
164
- v-model="scope.row[field || prop]"
165
- :data="getData(scope.row.formOptions)"
166
- @change="
167
- (value) => {
168
- handleChange({
169
- item: config,
170
- name: field || prop,
171
- value: value,
172
- data: scope.row
173
- });
174
- }
175
- "
176
- >
177
- </es-checkbox-group>
178
- <es-switch
179
- v-else-if="getType(scope.row.formConfigs, 'switch')"
180
- v-bind="getOptions(scope.row.formConfigs)"
181
- v-model="scope.row[field || prop]"
182
- :data="getData(scope.row.formOptions)"
183
- @change="
184
- (value) => {
185
- handleChange({
186
- item: config,
187
- name: field || prop,
188
- value: value,
189
- data: scope.row
190
- });
191
- }
192
- "
193
- >
194
- </es-switch>
195
- <es-date-picker
196
- v-else-if="
197
- config.date ||
198
- getType(scope.row.formConfigs, [
199
- 'date',
200
- 'year',
201
- 'month',
202
- 'date',
203
- 'dates',
204
- 'week',
205
- 'datetime',
206
- 'datetimerange',
207
- 'daterange',
208
- 'monthrange',
209
- 'quarter',
210
- 'halfyear'
211
- ])
212
- "
213
- v-bind="getOptions(scope.row.formConfigs)"
214
- v-model="scope.row[field || prop]"
215
- :type="type"
216
- @blur="
217
- (event) => {
218
- handleBlur({
219
- item: config,
220
- event: event,
221
- data: scope.row,
222
- scope: scope
223
- });
224
- }
225
- "
226
- @focus="
227
- (event) => {
228
- handleFocus({
229
- item: config,
230
- event: event,
231
- data: scope.row,
232
- scope: scope
233
- });
234
- }
235
- "
236
- @change="
237
- (value) => {
238
- handleChange({
239
- item: config,
240
- name: field || prop,
241
- value: value,
242
- data: scope.row,
243
- scope: scope
244
- });
245
- }
246
- "
247
- >
248
- </es-date-picker>
249
- <es-input-number
250
- v-else-if="getType(scope.row.formConfigs, 'number')"
251
- v-bind="getOptions(scope.row.formConfigs)"
252
- v-model="scope.row[field || prop]"
253
- @blur="
254
- (event) => {
255
- handleBlur({
256
- item: config,
257
- event: event,
258
- data: scope.row,
259
- scope: scope
260
- });
261
- }
262
- "
263
- @focus="
264
- (event) => {
265
- handleFocus({
266
- item: config,
267
- event: event,
268
- data: scope.row,
269
- scope: scope
270
- });
271
- }
272
- "
273
- @change="
274
- (value) => {
275
- handleChange({
276
- item: config,
277
- name: field || prop,
278
- value: value,
279
- data: scope.row,
280
- scope: scope
281
- });
282
- }
283
- "
284
- >
285
- </es-input-number>
286
- <es-selector
287
- v-else-if="getType(scope.row.formConfigs, 'selector')"
288
- v-bind="getOptions(scope.row.formConfigs)"
289
- v-model="scope.row[field || prop]"
290
- v-on="
291
- exclAttribute({
292
- data: events,
293
- attrs: 'change'
294
- })
295
- "
296
- @change="
297
- (value) => {
298
- handleChange({
299
- item: config,
300
- name: field || prop,
301
- value: value,
302
- data: scope.row
303
- });
304
- }
305
- "
306
- >
307
- </es-selector>
308
- <template
309
- v-else-if="
310
- getType(scope.row.formConfigs, ['text', 'input', 'textarea'])
311
- "
312
- >
313
- <template v-if="config.lazy">
314
- <input
315
- v-if="getType(scope.row.formConfigs, ['text', 'input'])"
316
- class="el-input__inner"
317
- v-bind="getOptions(scope.row.formConfigs)"
318
- v-model.lazy="scope.row[field]"
319
- @blur="
320
- (event) => {
321
- handleBlur({
322
- item: config,
323
- event: event,
324
- data: scope.row,
325
- scope: scope
326
- });
327
- }
328
- "
329
- @focus="
330
- (event) => {
331
- handleFocus({
332
- item: config,
333
- event: event,
334
- data: scope.row,
335
- scope: scope
336
- });
337
- }
338
- "
339
- @change="
340
- (value) => {
341
- handleChange({
342
- item: config,
343
- name: field || prop,
344
- value: value,
345
- data: scope.row,
346
- scope: scope
347
- });
348
- }
349
- "
350
- />
351
- <textarea
352
- v-else
353
- class="el-textarea__inner"
354
- v-bind="getOptions(scope.row.formConfigs)"
355
- v-model.lazy="scope.row[field]"
356
- @blur="
357
- (event) => {
358
- handleBlur({
359
- item: config,
360
- event: event,
361
- data: scope.row,
362
- scope: scope
363
- });
364
- }
365
- "
366
- @focus="
367
- (event) => {
368
- handleFocus({
369
- item: config,
370
- event: event,
371
- data: scope.row,
372
- scope: scope
373
- });
374
- }
375
- "
376
- @change="
377
- (value) => {
378
- handleChange({
379
- item: config,
380
- name: field || prop,
381
- value: value,
382
- data: scope.row,
383
- scope: scope
384
- });
385
- }
386
- "
387
- ></textarea>
388
- </template>
389
- <es-input
390
- v-else
391
- v-bind="getOptions(scope.row.formConfigs)"
392
- :type="type"
393
- :scope="scope"
394
- v-model="scope.row[field || prop]"
395
- @blur="
396
- (event) => {
397
- handleBlur({
398
- item: config,
399
- event: event,
400
- data: scope.row,
401
- scope: scope
402
- });
403
- }
404
- "
405
- @focus="
406
- (event) => {
407
- handleFocus({
408
- item: config,
409
- event: event,
410
- data: scope.row,
411
- scope: scope
412
- });
413
- }
414
- "
415
- @change="
416
- (value) => {
417
- handleChange({
418
- item: config,
419
- name: field || prop,
420
- value: value,
421
- data: scope.row,
422
- scope: scope
423
- });
424
- }
425
- "
426
- >
427
- </es-input>
428
- </template>
429
- </el-form-item>
430
- </template>
431
- <expand-dom
432
- v-else-if="render"
433
- :column="config"
434
- :row="scope.row"
435
- :render="render"
436
- :index="indexs"
437
- :options="optionDatas"
438
- >
439
- </expand-dom>
440
- <template v-else-if="dateFormat">
441
- {{ formatDate(scope.row[field || prop], dateFormat) }}
442
- </template>
443
- <span
444
- v-else-if="type === 'textarea'"
445
- v-html="format(scope.row, true)"
446
- :style="styles ? styles[scope.row[prop]] : {}"
447
- ></span>
448
- <span v-else :style="styles ? styles[scope.row[prop]] : {}">{{
449
- format(scope.row)
450
- }}</span>
451
- <es-button-group
452
- v-if="type === 'handle' && !scope.row.hideHandle"
453
- v-bind="
454
- exclAttribute({
455
- data: config,
456
- attrs: ['contents', 'events', 'type', 'width', 'template', 'title']
457
- })
458
- "
459
- stop
460
- :mode="mode"
461
- :contents="contents || events"
462
- :data="scope"
463
- @handleClick="handleClick"
464
- v-model="btnWidth"
465
- ></es-button-group>
466
- </template>
467
- </el-table-column>
468
- </template>
469
-
470
- <script type="text/babel">
471
- import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
472
- import util from 'eoss-ui/src/utils/util';
473
- export default {
474
- name: 'Column',
475
- components: {
476
- expandDom: {
477
- functional: true,
478
- props: {
479
- row: Object,
480
- render: [Function, String],
481
- index: Number,
482
- column: {
483
- type: Object,
484
- default: null
485
- },
486
- options: Object
487
- },
488
- render: (h, ctx) => {
489
- const params = {
490
- row: ctx.props.row,
491
- index: ctx.props.index
492
- };
493
- if (ctx.props.column) {
494
- params.column = ctx.props.column;
495
- }
496
- if (typeof ctx.props.render == 'string') {
497
- try {
498
- return util.toFunction(ctx.props.render)(
499
- h,
500
- params,
501
- ctx.props.options
502
- );
503
- } catch (error) {
504
- throw error;
505
- }
506
- }
507
- return ctx.props.render(h, params, ctx.props.options);
508
- }
509
- }
510
- },
511
- inject: {
512
- elForm: {
513
- default: ''
514
- },
515
- tableReload: {
516
- default: ''
517
- },
518
- table: {
519
- default: ''
520
- }
521
- },
522
- props: {
523
- tag: String,
524
- mode: String,
525
- service: String,
526
- form: Boolean,
527
- readonly: Boolean,
528
- name: String,
529
- filterIcon: [Boolean, String],
530
- title: String,
531
- label: String,
532
- labelKey: String,
533
- valueKey: String,
534
- field: String,
535
- prop: String,
536
- sortable: [Boolean, String],
537
- sort: [Boolean, String],
538
- className: String,
539
- labelClassName: String,
540
- type: String,
541
- required: Boolean,
542
- width: [Number, String],
543
- minWidth: [Number, String],
544
- hide: Boolean,
545
- showOverflowTooltip: [Boolean, Number],
546
- render: [Function, String],
547
- contents: Array,
548
- events: [Array, Object],
549
- dateFormat: String,
550
- dateValue: {
551
- type: String,
552
- default: ''
553
- },
554
- styles: [Array, Object],
555
- sysCode: String,
556
- valueToString: Boolean,
557
- symbol: String,
558
- rules: [Array, Object],
559
- method: String,
560
- indexs: {
561
- type: Number,
562
- default: null
563
- },
564
- data: [Object, Array],
565
- optionData: {
566
- type: Object,
567
- default() {
568
- return {};
569
- }
570
- }
571
- },
572
- watch: {
573
- optionData: {
574
- deep: true,
575
- handler(val) {
576
- this.optionDatas = val;
577
- }
578
- },
579
- width: {
580
- immediate: true,
581
- handler(val) {
582
- if (val) {
583
- this.btnWidth = parseInt(val, 10) + 'px';
584
- }
585
- }
586
- }
587
- },
588
- computed: {
589
- config() {
590
- let config = {
591
- label: this.label || this.title,
592
- width: this.btnWidth || this.width
593
- };
594
- if (this.type === 'expand') {
595
- config = { type: this.type, ...config, ...this.$attrs };
596
- return config;
597
- }
598
- let required = this.required;
599
- if (this.rules && !required) {
600
- if (Array.isArray(this.rules)) {
601
- this.rules.map((item) => {
602
- if (item.required) {
603
- required = item.required;
604
- }
605
- });
606
- } else if (this.rules.required) {
607
- required = this.rules.required;
608
- }
609
- }
610
- if (this.type === 'handle') {
611
- config.sort = true;
612
- config.outside = false;
613
- }
614
- return {
615
- ...config,
616
- filterIcon: this.icon,
617
- sortable: this.sortable || this.sort,
618
- minWidth: this.minWidth || this.table.minWidth,
619
- className: [
620
- this.className ? this.className : '',
621
- this.type ? ' es-table-' + this.type + '-box' : '',
622
- this.showOverflowTooltip ? ' es-text-ellipsis' : ''
623
- ].join(' '),
624
- labelClassName: [
625
- this.labelClassName ? this.labelClassName : '',
626
- required ? 'es-required' : ''
627
- ].join(' '),
628
- showOverflowTooltip: this.showOverflowTooltip,
629
- prop: this.field || this.prop,
630
- field: this.field,
631
- ...this.$attrs
632
- };
633
- },
634
- formOption() {
635
- let config = {
636
- labelKey: this.sysCode
637
- ? this.service
638
- ? 'label'
639
- : 'shortName'
640
- : this.labelKey,
641
- valueKey: this.sysCode
642
- ? this.service
643
- ? 'value'
644
- : 'cciValue'
645
- : this.valueKey,
646
- rules: this.rules,
647
- events: this.events,
648
- ...this.$attrs
649
- };
650
- return config;
651
- },
652
- icon() {
653
- if (this.filterIcon === true) {
654
- return 'es-icon-biao';
655
- }
656
- return false;
657
- },
658
- isForm() {
659
- let type = this.type ? this.type.toLowerCase() : '';
660
- let flag =
661
- (this.form &&
662
- [
663
- 'input',
664
- 'text',
665
- 'textarea',
666
- 'checkbox',
667
- 'radio',
668
- 'select',
669
- 'handle',
670
- 'date',
671
- 'year',
672
- 'month',
673
- 'date',
674
- 'dates',
675
- 'week',
676
- 'datetime',
677
- 'datetimerange',
678
- 'daterange',
679
- 'monthrange',
680
- 'quarter',
681
- 'halfyear',
682
- 'switch',
683
- 'selector',
684
- 'ganged',
685
- 'number'
686
- ].indexOf(type) > -1) ||
687
- ['space', 'slot'].indexOf(type) > -1;
688
- return flag;
689
- },
690
- option() {
691
- const field = this.field || this.prop;
692
- return this.data ? this.data : this.optionDatas[this.sysCode || field];
693
- },
694
- findCode() {
695
- if (this.service) {
696
- return `/${this.service}${getDictList}`;
697
- }
698
- return findSysCode;
699
- }
700
- },
701
- data() {
702
- return {
703
- btnWidth: '',
704
- searchs: [],
705
- optionDatas: this.optionData
706
- };
707
- },
708
- mounted() {},
709
- methods: {
710
- init(data, value, item) {
711
- if (data && value) {
712
- if (Array.isArray(value) && value.length) {
713
- if (item.url || this.sysCode) {
714
- value.forEach(async (val, index) => {
715
- if (
716
- val.hasSub == false ||
717
- this.searchs.indexOf(val[this.valueKey] || val.value) > -1
718
- ) {
719
- return;
720
- }
721
- this.searchs.push(val[this.valueKey] || val.value);
722
- if ((item.ganged && index < item.ganged - 1) || val.hasSub) {
723
- let option = data[index + 1];
724
- let lists = [];
725
- if (option) {
726
- let v = val[this.valueKey] || val.value;
727
- lists = option.filter((list) => {
728
- return list[item.filtrateKey] == v;
729
- });
730
- }
731
- if (lists.length == 0) {
732
- let queryKey = item.queryKey;
733
- let param = {};
734
- if (queryKey) {
735
- for (let i in queryKey) {
736
- param[i] = val[queryKey[i]];
737
- }
738
- }
739
- let params = util.extend(
740
- true,
741
- this.sysCode
742
- ? { sysAppCode: this.sysCode, code: sysCode }
743
- : {},
744
- item.param ? item.param : {},
745
- param
746
- );
747
- await util
748
- .ajax({
749
- url: this.sysCode ? this.findCode : item.url,
750
- method: this.method,
751
- params: params,
752
- data: params
753
- })
754
- .then((res) => {
755
- if (res.rCode === 0) {
756
- let options = JSON.parse(JSON.stringify(data));
757
- if (options[index + 1]) {
758
- this.$set(
759
- data,
760
- index + 1,
761
- options[index + 1].concat(
762
- JSON.parse(JSON.stringify(res.results))
763
- )
764
- );
765
- } else {
766
- this.$set(
767
- data,
768
- index + 1,
769
- JSON.parse(JSON.stringify(res.results))
770
- );
771
- }
772
- } else {
773
- let msg = res.msg || '系统错误,请联系管理员!';
774
- this.$message.error(msg);
775
- }
776
- })
777
- .catch((err) => {
778
- if (err.message && err.message !== 'canceled') {
779
- this.$message.error(err.message);
780
- }
781
- });
782
- }
783
- }
784
- });
785
- }
786
- }
787
- }
788
- return data;
789
- },
790
- getType(config, types) {
791
- let type =
792
- config && config[this.field || this.prop]
793
- ? config[this.field || this.prop]['type'] ||
794
- config[this.field || this.prop]
795
- : this.type;
796
- return Array.isArray(types) ? types.includes(type) : type == types;
797
- },
798
- getOptions(config) {
799
- let option = config && config[this.field || this.prop];
800
- return option && typeof option == 'object'
801
- ? { ...this.formOption, ...option }
802
- : this.formOption;
803
- },
804
- getData(res) {
805
- return res && res[this.field || this.prop]
806
- ? res[this.field || this.prop]
807
- : this.option;
808
- },
809
- exclAttribute({ data, attrs }) {
810
- return util.exclAttribute({ data, attrs });
811
- },
812
- format(rows, flag) {
813
- const field = this.field || this.prop;
814
- let data = this.option;
815
- let str = '';
816
- if (util.isObject(rows[field])) {
817
- str =
818
- rows[field][this.labelKey] ||
819
- rows[field]['name'] ||
820
- rows[field]['label'] ||
821
- rows[field]['shortName'];
822
- } else if (Array.isArray(rows[field])) {
823
- const vals = rows[field].map((item) => {
824
- if (util.isObject(item)) {
825
- return (
826
- item[this.labelKey] ||
827
- item['name'] ||
828
- item['label'] ||
829
- item['shortName']
830
- );
831
- } else {
832
- if (data && data.length && util.isObject(data[0])) {
833
- return this.getLabel(data, item);
834
- }
835
- return item;
836
- }
837
- });
838
- str = vals.join(this.symbol ? this.symbol : '-');
839
- } else {
840
- if (this.valueToString) {
841
- const vals = rows[field].split(',').map((item) => {
842
- if (data && data.length && util.isObject(data[0])) {
843
- return this.getLabel(data, item);
844
- }
845
- return item;
846
- });
847
- str = vals.join(this.symbol ? this.symbol : '-');
848
- } else {
849
- if (data && data.length && util.isObject(data[0])) {
850
- str = this.getLabel(data, rows[field]);
851
- } else {
852
- str = rows[field];
853
- }
854
- }
855
- }
856
- if (str && flag) {
857
- str = str.replace(RegExp('\\n', 'g'), '<br/>');
858
- str = str.replace(RegExp(' ', 'g'), '&nbsp;');
859
- }
860
- return str;
861
- },
862
- getLabel(obj, val) {
863
- for (let i = 0; i < obj.length; i++) {
864
- let item = obj[i];
865
- let value = item[this.valueKey || 'cciValue'] || item['value'];
866
- if (value == val) {
867
- return (
868
- item[this.labelKey] ||
869
- item['name'] ||
870
- item['label'] ||
871
- item['shortName']
872
- );
873
- } else if (item.children && item.children.length) {
874
- return this.getLabel(item.children, val);
875
- }
876
- }
877
- },
878
- isReadOnly(scope) {
879
- return (
880
- scope.row.canEdit === false ||
881
- this.readonly ||
882
- this.$attrs.editable === false ||
883
- (scope.row.cantEditKey &&
884
- scope.row.cantEditKey.indexOf(this.field || this.prop) > -1)
885
- );
886
- },
887
- isNotRule(scope) {
888
- if (
889
- scope.row.canRule === false ||
890
- (scope.row.notRules &&
891
- scope.row.notRules.indexOf(this.field || this.prop) > -1)
892
- ) {
893
- this.elForm && this.elForm.clearValidate(this.field || this.prop);
894
- return true;
895
- }
896
- return false;
897
- },
898
- handleBlur(data) {
899
- this.events && this.events.blur && this.events.blur(data);
900
- this.$emit('formBlur', data);
901
- this.$emit('form-blur', data);
902
- },
903
- handleFocus(data) {
904
- this.events && this.events.focus && this.events.focus(data);
905
- this.$emit('formFocus', data);
906
- this.$emit('form-focus', data);
907
- },
908
- handleChange(datas) {
909
- let { item, name, data } = datas;
910
- if (
911
- item &&
912
- ((data.formConfigs && data.formConfigs[name] == 'ganged') ||
913
- this.type == 'ganged')
914
- ) {
915
- let { index, value } = datas.value;
916
- if (
917
- (item.url || this.sysCode) &&
918
- ((item.ganged && index > item.ganged - 1) || value.hasSub)
919
- ) {
920
- let filte = value[this.valueKey] || value.value;
921
- let datas = [];
922
- if (this.optionDatas[this.field || this.prop][index + 1]) {
923
- datas = this.optionDatas[this.field || this.prop][index + 1].filter(
924
- (items) => {
925
- return filte == items[item.filtrateKey];
926
- }
927
- );
928
- }
929
- if (datas.length == 0) {
930
- let queryKey = item.queryKey;
931
- let param = {};
932
- if (queryKey) {
933
- for (let i in queryKey) {
934
- param[i] = value[queryKey[i]];
935
- }
936
- }
937
- let params = util.extend(
938
- true,
939
- this.sysCode ? { sysAppCode: this.sysCode, code: sysCode } : {},
940
- item.param ? item.param : {},
941
- param
942
- );
943
- util
944
- .ajax({
945
- url: this.sysCode ? this.findCode : item.url,
946
- method: this.method,
947
- params: params,
948
- data: params
949
- })
950
- .then((res) => {
951
- if (res.rCode === 0) {
952
- let options = JSON.parse(
953
- JSON.stringify(this.optionDatas[this.sysCode])
954
- );
955
- if (options[index + 1]) {
956
- options[index + 1] = options[index + 1].concat(
957
- JSON.parse(JSON.stringify(res.results))
958
- );
959
- } else {
960
- options.push(JSON.parse(JSON.stringify(res.results)));
961
- }
962
- this.$set(this.optionDatas, this.sysCode, options);
963
- } else {
964
- let msg = res.msg || '系统错误,请联系管理员!';
965
- this.$message.error(msg);
966
- }
967
- })
968
- .catch((err) => {
969
- if (err.message && err.message !== 'canceled') {
970
- this.$message.error(err.message);
971
- }
972
- });
973
- }
974
- }
975
- }
976
- this.events && this.events.change && this.events.change(datas);
977
- this.$emit('formChange', datas);
978
- this.$emit('form-change', datas);
979
- },
980
- handleClick(data) {
981
- this.$emit('handleClick', data);
982
- this.$emit('handle-click', data);
983
- },
984
- formatDate(date, fmt) {
985
- return date ? util.formatDate(date, fmt) : this.dateValue;
986
- }
987
- }
988
- };
989
- </script>
1
+ <template>
2
+ <el-table-column v-bind="config" :key="field">
3
+ <slot> </slot>
4
+ <template slot-scope="scope">
5
+ <template v-if="isForm && !isReadOnly(scope)">
6
+ <el-form-item
7
+ v-if="!(type === 'handle' && !scope.row.hideHandle)"
8
+ :name="name"
9
+ :prop="field || prop"
10
+ :rules="isNotRule(scope) ? [] : rules"
11
+ :index="scope.$index"
12
+ >
13
+ <component
14
+ v-if="getType(scope.row.formConfigs, 'component')"
15
+ :is="tag"
16
+ v-bind="getOptions(scope.row.formConfigs)"
17
+ v-model="scope.row[field || prop]"
18
+ :data="getData(scope.row.formOptions)"
19
+ @blur="
20
+ (event) => {
21
+ handleBlur({
22
+ item: config,
23
+ event: event,
24
+ data: scope.row,
25
+ scope: scope
26
+ });
27
+ }
28
+ "
29
+ @focus="
30
+ (event) => {
31
+ handleFocus({
32
+ item: config,
33
+ event: event,
34
+ data: scope.row,
35
+ scope: scope
36
+ });
37
+ }
38
+ "
39
+ @change="
40
+ (value) => {
41
+ handleChange({
42
+ item: config,
43
+ name: field || prop,
44
+ value: value,
45
+ data: scope.row,
46
+ scope: scope
47
+ });
48
+ }
49
+ "
50
+ ></component>
51
+ <es-select
52
+ v-else-if="getType(scope.row.formConfigs, 'select')"
53
+ v-bind="getOptions(scope.row.formConfigs)"
54
+ v-model="scope.row[field || prop]"
55
+ :data="getData(scope.row.formOptions)"
56
+ @blur="
57
+ (event) => {
58
+ handleBlur({
59
+ item: config,
60
+ event: event,
61
+ data: scope.row,
62
+ scope: scope
63
+ });
64
+ }
65
+ "
66
+ @focus="
67
+ (event) => {
68
+ handleFocus({
69
+ item: config,
70
+ event: event,
71
+ data: scope.row,
72
+ scope: scope
73
+ });
74
+ }
75
+ "
76
+ @change="
77
+ (value) => {
78
+ handleChange({
79
+ item: config,
80
+ name: field || prop,
81
+ value: value,
82
+ data: scope.row,
83
+ scope: scope
84
+ });
85
+ }
86
+ "
87
+ >
88
+ </es-select>
89
+ <es-cascader
90
+ v-else-if="getType(scope.row.formConfigs, 'cascader')"
91
+ v-bind="getOptions(scope.row.formConfigs)"
92
+ v-model="scope.row[field || prop]"
93
+ :data="getData(scope.row.formOptions)"
94
+ @blur="
95
+ (event) => {
96
+ handleBlur({
97
+ item: config,
98
+ event: event,
99
+ data: scope.row,
100
+ scope: scope
101
+ });
102
+ }
103
+ "
104
+ @focus="
105
+ (event) => {
106
+ handleFocus({
107
+ item: config,
108
+ event: event,
109
+ data: scope.row,
110
+ scope: scope
111
+ });
112
+ }
113
+ "
114
+ @change="
115
+ (value) => {
116
+ handleChange({
117
+ item: config,
118
+ name: field || prop,
119
+ value: value,
120
+ data: scope.row,
121
+ scope: scope
122
+ });
123
+ }
124
+ "
125
+ >
126
+ </es-cascader>
127
+ <es-select-ganged
128
+ v-else-if="getType(scope.row.formConfigs, 'ganged')"
129
+ v-bind="getOptions(scope.row.formConfigs)"
130
+ v-model="scope.row[field || prop]"
131
+ :data="init(getData(scope.row.formOptions), config)"
132
+ @change="
133
+ (value) => {
134
+ handleChange({
135
+ name: field || prop,
136
+ value: value,
137
+ data: scope.row,
138
+ item: item
139
+ });
140
+ }
141
+ "
142
+ >
143
+ </es-select-ganged>
144
+ <es-radio-group
145
+ v-else-if="getType(scope.row.formConfigs, 'radio')"
146
+ v-bind="getOptions(scope.row.formConfigs)"
147
+ v-model="scope.row[field || prop]"
148
+ :data="getData(scope.row.formOptions)"
149
+ @change="
150
+ (value) => {
151
+ handleChange({
152
+ item: config,
153
+ name: field || prop,
154
+ value: value,
155
+ data: scope.row
156
+ });
157
+ }
158
+ "
159
+ >
160
+ </es-radio-group>
161
+ <es-checkbox-group
162
+ v-else-if="getType(scope.row.formConfigs, 'checkbox')"
163
+ v-bind="getOptions(scope.row.formConfigs)"
164
+ v-model="scope.row[field || prop]"
165
+ :data="getData(scope.row.formOptions)"
166
+ @change="
167
+ (value) => {
168
+ handleChange({
169
+ item: config,
170
+ name: field || prop,
171
+ value: value,
172
+ data: scope.row
173
+ });
174
+ }
175
+ "
176
+ >
177
+ </es-checkbox-group>
178
+ <es-switch
179
+ v-else-if="getType(scope.row.formConfigs, 'switch')"
180
+ v-bind="getOptions(scope.row.formConfigs)"
181
+ v-model="scope.row[field || prop]"
182
+ :data="getData(scope.row.formOptions)"
183
+ @change="
184
+ (value) => {
185
+ handleChange({
186
+ item: config,
187
+ name: field || prop,
188
+ value: value,
189
+ data: scope.row
190
+ });
191
+ }
192
+ "
193
+ >
194
+ </es-switch>
195
+ <es-date-picker
196
+ v-else-if="
197
+ config.date ||
198
+ getType(scope.row.formConfigs, [
199
+ 'date',
200
+ 'year',
201
+ 'month',
202
+ 'date',
203
+ 'dates',
204
+ 'week',
205
+ 'datetime',
206
+ 'datetimerange',
207
+ 'daterange',
208
+ 'monthrange',
209
+ 'quarter',
210
+ 'halfyear'
211
+ ])
212
+ "
213
+ v-bind="getOptions(scope.row.formConfigs)"
214
+ v-model="scope.row[field || prop]"
215
+ :type="type"
216
+ @blur="
217
+ (event) => {
218
+ handleBlur({
219
+ item: config,
220
+ event: event,
221
+ data: scope.row,
222
+ scope: scope
223
+ });
224
+ }
225
+ "
226
+ @focus="
227
+ (event) => {
228
+ handleFocus({
229
+ item: config,
230
+ event: event,
231
+ data: scope.row,
232
+ scope: scope
233
+ });
234
+ }
235
+ "
236
+ @change="
237
+ (value) => {
238
+ handleChange({
239
+ item: config,
240
+ name: field || prop,
241
+ value: value,
242
+ data: scope.row,
243
+ scope: scope
244
+ });
245
+ }
246
+ "
247
+ >
248
+ </es-date-picker>
249
+ <es-input-number
250
+ v-else-if="getType(scope.row.formConfigs, 'number')"
251
+ v-bind="getOptions(scope.row.formConfigs)"
252
+ v-model="scope.row[field || prop]"
253
+ @blur="
254
+ (event) => {
255
+ handleBlur({
256
+ item: config,
257
+ event: event,
258
+ data: scope.row,
259
+ scope: scope
260
+ });
261
+ }
262
+ "
263
+ @focus="
264
+ (event) => {
265
+ handleFocus({
266
+ item: config,
267
+ event: event,
268
+ data: scope.row,
269
+ scope: scope
270
+ });
271
+ }
272
+ "
273
+ @change="
274
+ (value) => {
275
+ handleChange({
276
+ item: config,
277
+ name: field || prop,
278
+ value: value,
279
+ data: scope.row,
280
+ scope: scope
281
+ });
282
+ }
283
+ "
284
+ >
285
+ </es-input-number>
286
+ <es-selector
287
+ v-else-if="getType(scope.row.formConfigs, 'selector')"
288
+ v-bind="getOptions(scope.row.formConfigs)"
289
+ v-model="scope.row[field || prop]"
290
+ v-on="
291
+ exclAttribute({
292
+ data: events,
293
+ attrs: 'change'
294
+ })
295
+ "
296
+ @change="
297
+ (value) => {
298
+ handleChange({
299
+ item: config,
300
+ name: field || prop,
301
+ value: value,
302
+ data: scope.row
303
+ });
304
+ }
305
+ "
306
+ >
307
+ </es-selector>
308
+ <template
309
+ v-else-if="
310
+ getType(scope.row.formConfigs, ['text', 'input', 'textarea'])
311
+ "
312
+ >
313
+ <template v-if="config.lazy">
314
+ <input
315
+ v-if="getType(scope.row.formConfigs, ['text', 'input'])"
316
+ class="el-input__inner"
317
+ v-bind="getOptions(scope.row.formConfigs)"
318
+ v-model.lazy="scope.row[field]"
319
+ @blur="
320
+ (event) => {
321
+ handleBlur({
322
+ item: config,
323
+ event: event,
324
+ data: scope.row,
325
+ scope: scope
326
+ });
327
+ }
328
+ "
329
+ @focus="
330
+ (event) => {
331
+ handleFocus({
332
+ item: config,
333
+ event: event,
334
+ data: scope.row,
335
+ scope: scope
336
+ });
337
+ }
338
+ "
339
+ @change="
340
+ (value) => {
341
+ handleChange({
342
+ item: config,
343
+ name: field || prop,
344
+ value: value,
345
+ data: scope.row,
346
+ scope: scope
347
+ });
348
+ }
349
+ "
350
+ />
351
+ <textarea
352
+ v-else
353
+ class="el-textarea__inner"
354
+ v-bind="getOptions(scope.row.formConfigs)"
355
+ v-model.lazy="scope.row[field]"
356
+ @blur="
357
+ (event) => {
358
+ handleBlur({
359
+ item: config,
360
+ event: event,
361
+ data: scope.row,
362
+ scope: scope
363
+ });
364
+ }
365
+ "
366
+ @focus="
367
+ (event) => {
368
+ handleFocus({
369
+ item: config,
370
+ event: event,
371
+ data: scope.row,
372
+ scope: scope
373
+ });
374
+ }
375
+ "
376
+ @change="
377
+ (value) => {
378
+ handleChange({
379
+ item: config,
380
+ name: field || prop,
381
+ value: value,
382
+ data: scope.row,
383
+ scope: scope
384
+ });
385
+ }
386
+ "
387
+ ></textarea>
388
+ </template>
389
+ <es-input
390
+ v-else
391
+ v-bind="getOptions(scope.row.formConfigs)"
392
+ :type="type"
393
+ :scope="scope"
394
+ v-model="scope.row[field || prop]"
395
+ @blur="
396
+ (event) => {
397
+ handleBlur({
398
+ item: config,
399
+ event: event,
400
+ data: scope.row,
401
+ scope: scope
402
+ });
403
+ }
404
+ "
405
+ @focus="
406
+ (event) => {
407
+ handleFocus({
408
+ item: config,
409
+ event: event,
410
+ data: scope.row,
411
+ scope: scope
412
+ });
413
+ }
414
+ "
415
+ @change="
416
+ (value) => {
417
+ handleChange({
418
+ item: config,
419
+ name: field || prop,
420
+ value: value,
421
+ data: scope.row,
422
+ scope: scope
423
+ });
424
+ }
425
+ "
426
+ >
427
+ </es-input>
428
+ </template>
429
+ </el-form-item>
430
+ </template>
431
+ <expand-dom
432
+ v-else-if="render"
433
+ :column="config"
434
+ :row="scope.row"
435
+ :render="render"
436
+ :index="indexs"
437
+ :options="optionDatas"
438
+ >
439
+ </expand-dom>
440
+ <template v-else-if="dateFormat">
441
+ {{ formatDate(scope.row[field || prop], dateFormat) }}
442
+ </template>
443
+ <span
444
+ v-else-if="type === 'textarea'"
445
+ v-html="format(scope.row, true)"
446
+ :style="styles ? styles[scope.row[prop]] : {}"
447
+ ></span>
448
+ <span v-else :style="styles ? styles[scope.row[prop]] : {}">{{
449
+ format(scope.row)
450
+ }}</span>
451
+ <es-button-group
452
+ v-if="type === 'handle' && !scope.row.hideHandle"
453
+ v-bind="
454
+ exclAttribute({
455
+ data: config,
456
+ attrs: ['contents', 'events', 'type', 'width', 'template', 'title']
457
+ })
458
+ "
459
+ stop
460
+ :mode="mode"
461
+ :contents="contents || events"
462
+ :data="scope"
463
+ @handleClick="handleClick"
464
+ v-model="btnWidth"
465
+ ></es-button-group>
466
+ </template>
467
+ </el-table-column>
468
+ </template>
469
+
470
+ <script type="text/babel">
471
+ import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
472
+ import util from 'eoss-ui/src/utils/util';
473
+ export default {
474
+ name: 'Column',
475
+ components: {
476
+ expandDom: {
477
+ functional: true,
478
+ props: {
479
+ row: Object,
480
+ render: [Function, String],
481
+ index: Number,
482
+ column: {
483
+ type: Object,
484
+ default: null
485
+ },
486
+ options: Object
487
+ },
488
+ render: (h, ctx) => {
489
+ const params = {
490
+ row: ctx.props.row,
491
+ index: ctx.props.index
492
+ };
493
+ if (ctx.props.column) {
494
+ params.column = ctx.props.column;
495
+ }
496
+ if (typeof ctx.props.render == 'string') {
497
+ try {
498
+ return util.toFunction(ctx.props.render)(
499
+ h,
500
+ params,
501
+ ctx.props.options
502
+ );
503
+ } catch (error) {
504
+ throw error;
505
+ }
506
+ }
507
+ return ctx.props.render(h, params, ctx.props.options);
508
+ }
509
+ }
510
+ },
511
+ inject: {
512
+ elForm: {
513
+ default: ''
514
+ },
515
+ tableReload: {
516
+ default: ''
517
+ },
518
+ table: {
519
+ default: ''
520
+ }
521
+ },
522
+ props: {
523
+ tag: String,
524
+ mode: String,
525
+ service: String,
526
+ form: Boolean,
527
+ readonly: Boolean,
528
+ name: String,
529
+ filterIcon: [Boolean, String],
530
+ title: String,
531
+ label: String,
532
+ labelKey: String,
533
+ valueKey: String,
534
+ field: String,
535
+ prop: String,
536
+ sortable: [Boolean, String],
537
+ sort: [Boolean, String],
538
+ className: String,
539
+ labelClassName: String,
540
+ type: String,
541
+ required: Boolean,
542
+ width: [Number, String],
543
+ minWidth: [Number, String],
544
+ hide: Boolean,
545
+ showOverflowTooltip: [Boolean, Number],
546
+ render: [Function, String],
547
+ contents: Array,
548
+ events: [Array, Object],
549
+ dateFormat: String,
550
+ dateValue: {
551
+ type: String,
552
+ default: ''
553
+ },
554
+ styles: [Array, Object],
555
+ sysCode: String,
556
+ valueToString: Boolean,
557
+ symbol: String,
558
+ rules: [Array, Object],
559
+ method: String,
560
+ indexs: {
561
+ type: Number,
562
+ default: null
563
+ },
564
+ data: [Object, Array],
565
+ optionData: {
566
+ type: Object,
567
+ default() {
568
+ return {};
569
+ }
570
+ }
571
+ },
572
+ watch: {
573
+ optionData: {
574
+ deep: true,
575
+ handler(val) {
576
+ this.optionDatas = val;
577
+ }
578
+ },
579
+ width: {
580
+ immediate: true,
581
+ handler(val) {
582
+ if (val) {
583
+ this.btnWidth = parseInt(val, 10) + 'px';
584
+ }
585
+ }
586
+ }
587
+ },
588
+ computed: {
589
+ config() {
590
+ let config = {
591
+ label: this.label || this.title,
592
+ width: this.btnWidth || this.width
593
+ };
594
+ if (this.type === 'expand') {
595
+ config = { type: this.type, ...config, ...this.$attrs };
596
+ return config;
597
+ }
598
+ let required = this.required;
599
+ if (this.rules && !required) {
600
+ if (Array.isArray(this.rules)) {
601
+ this.rules.map((item) => {
602
+ if (item.required) {
603
+ required = item.required;
604
+ }
605
+ });
606
+ } else if (this.rules.required) {
607
+ required = this.rules.required;
608
+ }
609
+ }
610
+ if (this.type === 'handle') {
611
+ config.sort = true;
612
+ config.outside = false;
613
+ }
614
+ return {
615
+ ...config,
616
+ filterIcon: this.icon,
617
+ sortable: this.sortable || this.sort,
618
+ minWidth: this.minWidth || this.table.minWidth,
619
+ className: [
620
+ this.className ? this.className : '',
621
+ this.type ? ' es-table-' + this.type + '-box' : '',
622
+ this.showOverflowTooltip ? ' es-text-ellipsis' : ''
623
+ ].join(' '),
624
+ labelClassName: [
625
+ this.labelClassName ? this.labelClassName : '',
626
+ required ? 'es-required' : ''
627
+ ].join(' '),
628
+ showOverflowTooltip: this.showOverflowTooltip,
629
+ prop: this.field || this.prop,
630
+ field: this.field,
631
+ ...this.$attrs
632
+ };
633
+ },
634
+ formOption() {
635
+ let config = {
636
+ labelKey: this.sysCode
637
+ ? this.service
638
+ ? 'label'
639
+ : 'shortName'
640
+ : this.labelKey,
641
+ valueKey: this.sysCode
642
+ ? this.service
643
+ ? 'value'
644
+ : 'cciValue'
645
+ : this.valueKey,
646
+ rules: this.rules,
647
+ events: this.events,
648
+ ...this.$attrs
649
+ };
650
+ return config;
651
+ },
652
+ icon() {
653
+ if (this.filterIcon === true) {
654
+ return 'es-icon-biao';
655
+ }
656
+ return false;
657
+ },
658
+ isForm() {
659
+ let type = this.type ? this.type.toLowerCase() : '';
660
+ let flag =
661
+ (this.form &&
662
+ [
663
+ 'input',
664
+ 'text',
665
+ 'textarea',
666
+ 'checkbox',
667
+ 'radio',
668
+ 'select',
669
+ 'handle',
670
+ 'date',
671
+ 'year',
672
+ 'month',
673
+ 'date',
674
+ 'dates',
675
+ 'week',
676
+ 'datetime',
677
+ 'datetimerange',
678
+ 'daterange',
679
+ 'monthrange',
680
+ 'quarter',
681
+ 'halfyear',
682
+ 'switch',
683
+ 'selector',
684
+ 'ganged',
685
+ 'number'
686
+ ].indexOf(type) > -1) ||
687
+ ['space', 'slot'].indexOf(type) > -1;
688
+ return flag;
689
+ },
690
+ option() {
691
+ const field = this.field || this.prop;
692
+ return this.data ? this.data : this.optionDatas[this.sysCode || field];
693
+ },
694
+ findCode() {
695
+ if (this.service) {
696
+ return `/${this.service}${getDictList}`;
697
+ }
698
+ return findSysCode;
699
+ }
700
+ },
701
+ data() {
702
+ return {
703
+ btnWidth: '',
704
+ searchs: [],
705
+ optionDatas: this.optionData
706
+ };
707
+ },
708
+ mounted() {},
709
+ methods: {
710
+ init(data, value, item) {
711
+ if (data && value) {
712
+ if (Array.isArray(value) && value.length) {
713
+ if (item.url || this.sysCode) {
714
+ value.forEach(async (val, index) => {
715
+ if (
716
+ val.hasSub == false ||
717
+ this.searchs.indexOf(val[this.valueKey] || val.value) > -1
718
+ ) {
719
+ return;
720
+ }
721
+ this.searchs.push(val[this.valueKey] || val.value);
722
+ if ((item.ganged && index < item.ganged - 1) || val.hasSub) {
723
+ let option = data[index + 1];
724
+ let lists = [];
725
+ if (option) {
726
+ let v = val[this.valueKey] || val.value;
727
+ lists = option.filter((list) => {
728
+ return list[item.filtrateKey] == v;
729
+ });
730
+ }
731
+ if (lists.length == 0) {
732
+ let queryKey = item.queryKey;
733
+ let param = {};
734
+ if (queryKey) {
735
+ for (let i in queryKey) {
736
+ param[i] = val[queryKey[i]];
737
+ }
738
+ }
739
+ let params = util.extend(
740
+ true,
741
+ this.sysCode
742
+ ? { sysAppCode: this.sysCode, code: sysCode }
743
+ : {},
744
+ item.param ? item.param : {},
745
+ param
746
+ );
747
+ await util
748
+ .ajax({
749
+ url: this.sysCode ? this.findCode : item.url,
750
+ method: this.method,
751
+ params: params,
752
+ data: params
753
+ })
754
+ .then((res) => {
755
+ if (res.rCode === 0) {
756
+ let options = JSON.parse(JSON.stringify(data));
757
+ if (options[index + 1]) {
758
+ this.$set(
759
+ data,
760
+ index + 1,
761
+ options[index + 1].concat(
762
+ JSON.parse(JSON.stringify(res.results))
763
+ )
764
+ );
765
+ } else {
766
+ this.$set(
767
+ data,
768
+ index + 1,
769
+ JSON.parse(JSON.stringify(res.results))
770
+ );
771
+ }
772
+ } else {
773
+ let msg = res.msg || '系统错误,请联系管理员!';
774
+ this.$message.error(msg);
775
+ }
776
+ })
777
+ .catch((err) => {
778
+ if (err.message && err.message !== 'canceled') {
779
+ this.$message.error(err.message);
780
+ }
781
+ });
782
+ }
783
+ }
784
+ });
785
+ }
786
+ }
787
+ }
788
+ return data;
789
+ },
790
+ getType(config, types) {
791
+ let type =
792
+ config && config[this.field || this.prop]
793
+ ? config[this.field || this.prop]['type'] ||
794
+ config[this.field || this.prop]
795
+ : this.type;
796
+ return Array.isArray(types) ? types.includes(type) : type == types;
797
+ },
798
+ getOptions(config) {
799
+ let option = config && config[this.field || this.prop];
800
+ return option && typeof option == 'object'
801
+ ? { ...this.formOption, ...option }
802
+ : this.formOption;
803
+ },
804
+ getData(res) {
805
+ return res && res[this.field || this.prop]
806
+ ? res[this.field || this.prop]
807
+ : this.option;
808
+ },
809
+ exclAttribute({ data, attrs }) {
810
+ return util.exclAttribute({ data, attrs });
811
+ },
812
+ format(rows, flag) {
813
+ const field = this.field || this.prop;
814
+ let data = this.option;
815
+ let str = '';
816
+ if (util.isObject(rows[field])) {
817
+ str =
818
+ rows[field][this.labelKey] ||
819
+ rows[field]['name'] ||
820
+ rows[field]['label'] ||
821
+ rows[field]['shortName'];
822
+ } else if (Array.isArray(rows[field])) {
823
+ const vals = rows[field].map((item) => {
824
+ if (util.isObject(item)) {
825
+ return (
826
+ item[this.labelKey] ||
827
+ item['name'] ||
828
+ item['label'] ||
829
+ item['shortName']
830
+ );
831
+ } else {
832
+ if (data && data.length && util.isObject(data[0])) {
833
+ return this.getLabel(data, item);
834
+ }
835
+ return item;
836
+ }
837
+ });
838
+ str = vals.join(this.symbol ? this.symbol : '-');
839
+ } else {
840
+ if (this.valueToString) {
841
+ const vals = rows[field].split(',').map((item) => {
842
+ if (data && data.length && util.isObject(data[0])) {
843
+ return this.getLabel(data, item);
844
+ }
845
+ return item;
846
+ });
847
+ str = vals.join(this.symbol ? this.symbol : '-');
848
+ } else {
849
+ if (data && data.length && util.isObject(data[0])) {
850
+ str = this.getLabel(data, rows[field]);
851
+ } else {
852
+ str = rows[field];
853
+ }
854
+ }
855
+ }
856
+ if (str && flag) {
857
+ str = str.replace(RegExp('\\n', 'g'), '<br/>');
858
+ str = str.replace(RegExp(' ', 'g'), '&nbsp;');
859
+ }
860
+ return str;
861
+ },
862
+ getLabel(obj, val) {
863
+ for (let i = 0; i < obj.length; i++) {
864
+ let item = obj[i];
865
+ let value = item[this.valueKey || 'cciValue'] || item['value'];
866
+ if (value == val) {
867
+ return (
868
+ item[this.labelKey] ||
869
+ item['name'] ||
870
+ item['label'] ||
871
+ item['shortName']
872
+ );
873
+ } else if (item.children && item.children.length) {
874
+ return this.getLabel(item.children, val);
875
+ }
876
+ }
877
+ },
878
+ isReadOnly(scope) {
879
+ return (
880
+ scope.row.canEdit === false ||
881
+ this.readonly ||
882
+ this.$attrs.editable === false ||
883
+ (scope.row.cantEditKey &&
884
+ scope.row.cantEditKey.indexOf(this.field || this.prop) > -1)
885
+ );
886
+ },
887
+ isNotRule(scope) {
888
+ if (
889
+ scope.row.canRule === false ||
890
+ (scope.row.notRules &&
891
+ scope.row.notRules.indexOf(this.field || this.prop) > -1)
892
+ ) {
893
+ this.elForm && this.elForm.clearValidate(this.field || this.prop);
894
+ return true;
895
+ }
896
+ return false;
897
+ },
898
+ handleBlur(data) {
899
+ this.events && this.events.blur && this.events.blur(data);
900
+ this.$emit('formBlur', data);
901
+ this.$emit('form-blur', data);
902
+ },
903
+ handleFocus(data) {
904
+ this.events && this.events.focus && this.events.focus(data);
905
+ this.$emit('formFocus', data);
906
+ this.$emit('form-focus', data);
907
+ },
908
+ handleChange(datas) {
909
+ let { item, name, data } = datas;
910
+ if (
911
+ item &&
912
+ ((data.formConfigs && data.formConfigs[name] == 'ganged') ||
913
+ this.type == 'ganged')
914
+ ) {
915
+ let { index, value } = datas.value;
916
+ if (
917
+ (item.url || this.sysCode) &&
918
+ ((item.ganged && index > item.ganged - 1) || value.hasSub)
919
+ ) {
920
+ let filte = value[this.valueKey] || value.value;
921
+ let datas = [];
922
+ if (this.optionDatas[this.field || this.prop][index + 1]) {
923
+ datas = this.optionDatas[this.field || this.prop][index + 1].filter(
924
+ (items) => {
925
+ return filte == items[item.filtrateKey];
926
+ }
927
+ );
928
+ }
929
+ if (datas.length == 0) {
930
+ let queryKey = item.queryKey;
931
+ let param = {};
932
+ if (queryKey) {
933
+ for (let i in queryKey) {
934
+ param[i] = value[queryKey[i]];
935
+ }
936
+ }
937
+ let params = util.extend(
938
+ true,
939
+ this.sysCode ? { sysAppCode: this.sysCode, code: sysCode } : {},
940
+ item.param ? item.param : {},
941
+ param
942
+ );
943
+ util
944
+ .ajax({
945
+ url: this.sysCode ? this.findCode : item.url,
946
+ method: this.method,
947
+ params: params,
948
+ data: params
949
+ })
950
+ .then((res) => {
951
+ if (res.rCode === 0) {
952
+ let options = JSON.parse(
953
+ JSON.stringify(this.optionDatas[this.sysCode])
954
+ );
955
+ if (options[index + 1]) {
956
+ options[index + 1] = options[index + 1].concat(
957
+ JSON.parse(JSON.stringify(res.results))
958
+ );
959
+ } else {
960
+ options.push(JSON.parse(JSON.stringify(res.results)));
961
+ }
962
+ this.$set(this.optionDatas, this.sysCode, options);
963
+ } else {
964
+ let msg = res.msg || '系统错误,请联系管理员!';
965
+ this.$message.error(msg);
966
+ }
967
+ })
968
+ .catch((err) => {
969
+ if (err.message && err.message !== 'canceled') {
970
+ this.$message.error(err.message);
971
+ }
972
+ });
973
+ }
974
+ }
975
+ }
976
+ this.events && this.events.change && this.events.change(datas);
977
+ this.$emit('formChange', datas);
978
+ this.$emit('form-change', datas);
979
+ },
980
+ handleClick(data) {
981
+ this.$emit('handleClick', data);
982
+ this.$emit('handle-click', data);
983
+ },
984
+ formatDate(date, fmt) {
985
+ return date ? util.formatDate(date, fmt) : this.dateValue;
986
+ }
987
+ }
988
+ };
989
+ </script>