eoss-mobiles 0.4.1 → 0.4.2

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 (230) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/lib/button-group.js +2 -2
  3. package/lib/button.js +2 -2
  4. package/lib/calendar.js +2 -2
  5. package/lib/cell.js +2 -2
  6. package/lib/checkbox.js +2 -2
  7. package/lib/circle.js +2 -2
  8. package/lib/count-down.js +2 -2
  9. package/lib/empty.js +2 -2
  10. package/lib/eoss-mobile.common.js +534 -85
  11. package/lib/field.js +2 -2
  12. package/lib/flow-btn.js +2 -2
  13. package/lib/form.js +593 -144
  14. package/lib/grid-item.js +2 -2
  15. package/lib/grid.js +2 -2
  16. package/lib/index.js +1 -1
  17. package/lib/list.js +2 -2
  18. package/lib/loading.js +85 -85
  19. package/lib/nav-bar.js +2 -2
  20. package/lib/picker.js +12 -11
  21. package/lib/popover.js +2 -2
  22. package/lib/radio.js +8 -7
  23. package/lib/search.js +2 -2
  24. package/lib/selector.js +28 -28
  25. package/lib/switch.js +2 -2
  26. package/lib/tab.js +2 -2
  27. package/lib/table-column.js +3 -2
  28. package/lib/tabs.js +2 -2
  29. package/lib/tag.js +2 -2
  30. package/lib/theme-chalk/fonts/iconfont.scss +98 -98
  31. package/lib/theme-chalk/fonts/iconfont1.scss +90 -90
  32. package/lib/theme-chalk/form.css +1 -1
  33. package/lib/theme-chalk/index.css +1 -1
  34. package/lib/uploader.js +3 -2
  35. package/package.json +1 -1
  36. package/packages/action-sheet/index.js +5 -5
  37. package/packages/action-sheet/src/main.vue +32 -32
  38. package/packages/button/index.js +5 -5
  39. package/packages/button/src/main.vue +15 -15
  40. package/packages/button-group/index.js +5 -5
  41. package/packages/button-group/src/main.vue +80 -80
  42. package/packages/calendar/index.js +5 -5
  43. package/packages/calendar/src/main.vue +34 -34
  44. package/packages/cascader/index.js +5 -5
  45. package/packages/cascader/src/main.vue +39 -39
  46. package/packages/cell/index.js +5 -5
  47. package/packages/cell/src/main.vue +77 -77
  48. package/packages/checkbox/index.js +5 -5
  49. package/packages/checkbox/src/main.vue +232 -232
  50. package/packages/circle/index.js +5 -5
  51. package/packages/circle/src/main.vue +27 -27
  52. package/packages/count-down/index.js +5 -5
  53. package/packages/count-down/src/main.vue +27 -27
  54. package/packages/date/index.js +5 -5
  55. package/packages/date/src/date-time.vue +290 -290
  56. package/packages/date/src/main.vue +401 -401
  57. package/packages/empty/index.js +5 -5
  58. package/packages/empty/src/main.vue +16 -16
  59. package/packages/esign/index.js +5 -5
  60. package/packages/esign/src/main.vue +144 -144
  61. package/packages/field/index.js +5 -5
  62. package/packages/flow/index.js +5 -5
  63. package/packages/flow/src/components/Circulate.vue +595 -595
  64. package/packages/flow/src/components/Handle.vue +2404 -2404
  65. package/packages/flow/src/components/Message.vue +208 -208
  66. package/packages/flow/src/components/ProcessSettings.vue +342 -342
  67. package/packages/flow/src/components/supervise.vue +139 -139
  68. package/packages/flow/src/flowMix.js +288 -288
  69. package/packages/flow/src/main.vue +116 -116
  70. package/packages/flow-btn/index.js +5 -5
  71. package/packages/flow-btn/src/main.vue +494 -494
  72. package/packages/flow-list/index.js +5 -5
  73. package/packages/flow-list/src/main.vue +248 -248
  74. package/packages/form/index.js +5 -5
  75. package/packages/form/src/CustomCard.vue +201 -0
  76. package/packages/form/src/main.vue +32 -19
  77. package/packages/grid/index.js +5 -5
  78. package/packages/grid/src/main.vue +486 -486
  79. package/packages/grid-item/index.js +5 -5
  80. package/packages/grid-item/src/main.vue +16 -16
  81. package/packages/image/index.js +5 -5
  82. package/packages/image/src/main.vue +12 -12
  83. package/packages/image-preview/index.js +5 -5
  84. package/packages/list/index.js +5 -5
  85. package/packages/list/src/main.vue +32 -32
  86. package/packages/loading/index.js +5 -5
  87. package/packages/loading/src/main.vue +19 -19
  88. package/packages/nav-bar/index.js +5 -5
  89. package/packages/nav-bar/src/main.vue +24 -24
  90. package/packages/notice-bar/index.js +5 -5
  91. package/packages/notice-bar/src/main.vue +15 -15
  92. package/packages/pagination/index.js +5 -5
  93. package/packages/pagination/src/main.vue +73 -73
  94. package/packages/picker/index.js +5 -5
  95. package/packages/picker/src/main.vue +604 -604
  96. package/packages/popover/index.js +5 -5
  97. package/packages/popover/src/main.vue +32 -32
  98. package/packages/popup/index.js +5 -5
  99. package/packages/popup/src/main.vue +27 -27
  100. package/packages/pull-refresh/index.js +5 -5
  101. package/packages/pull-refresh/src/main.vue +31 -31
  102. package/packages/radio/index.js +5 -5
  103. package/packages/radio/src/main.vue +179 -179
  104. package/packages/rate/index.js +5 -5
  105. package/packages/rate/src/main.vue +26 -26
  106. package/packages/retrial-auth/index.js +5 -5
  107. package/packages/retrial-auth/src/main.vue +257 -257
  108. package/packages/search/index.js +5 -5
  109. package/packages/search/src/main.vue +39 -39
  110. package/packages/selector/index.js +5 -5
  111. package/packages/selector/src/main.vue +186 -186
  112. package/packages/selector/src/selector-tree.vue +1117 -1117
  113. package/packages/selector/src/tree.vue +405 -405
  114. package/packages/skeleton/index.js +5 -5
  115. package/packages/skeleton/src/main.vue +17 -17
  116. package/packages/stepper/index.js +5 -5
  117. package/packages/stepper/src/main.vue +25 -25
  118. package/packages/swipe/index.js +5 -5
  119. package/packages/swipe/src/main.vue +42 -42
  120. package/packages/switch/index.js +5 -5
  121. package/packages/switch/src/main.vue +38 -38
  122. package/packages/tab/index.js +5 -5
  123. package/packages/tab/src/main.vue +16 -16
  124. package/packages/table/index.js +5 -5
  125. package/packages/table/src/main.vue +1006 -1006
  126. package/packages/table-column/index.js +5 -5
  127. package/packages/table-column/src/main.vue +931 -931
  128. package/packages/table-column/src/mixins/table.js +12 -12
  129. package/packages/tabs/index.js +5 -5
  130. package/packages/tabs/src/main.vue +34 -34
  131. package/packages/tag/index.js +5 -5
  132. package/packages/tag/src/main.vue +16 -16
  133. package/packages/theme-chalk/lib/action-sheet.css +0 -0
  134. package/packages/theme-chalk/lib/base.css +1 -0
  135. package/packages/theme-chalk/lib/button-group.css +1 -0
  136. package/packages/theme-chalk/lib/button.css +1 -0
  137. package/packages/theme-chalk/lib/calendar.css +1 -0
  138. package/packages/theme-chalk/lib/cascader.css +1 -0
  139. package/packages/theme-chalk/lib/cell.css +1 -0
  140. package/packages/theme-chalk/lib/checkbox.css +1 -0
  141. package/packages/theme-chalk/lib/circle.css +1 -0
  142. package/packages/theme-chalk/lib/count-down.css +0 -0
  143. package/packages/theme-chalk/lib/date.css +0 -0
  144. package/packages/theme-chalk/lib/empty.css +0 -0
  145. package/packages/theme-chalk/lib/esign.css +1 -0
  146. package/packages/theme-chalk/lib/field.css +1 -0
  147. package/packages/theme-chalk/lib/flow-btn.css +1 -0
  148. package/packages/theme-chalk/lib/flow-list-task-read.css +1 -0
  149. package/packages/theme-chalk/lib/flow-list.css +1 -0
  150. package/packages/theme-chalk/lib/flow.css +1 -0
  151. package/packages/theme-chalk/lib/fonts/iconfont.scss +98 -0
  152. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  153. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  154. package/packages/theme-chalk/lib/fonts/iconfont1.scss +90 -0
  155. package/packages/theme-chalk/lib/form.css +1 -0
  156. package/packages/theme-chalk/lib/grid-item.css +1 -0
  157. package/packages/theme-chalk/lib/grid.css +1 -0
  158. package/packages/theme-chalk/lib/icon.css +1 -0
  159. package/packages/theme-chalk/lib/image-preview.css +0 -0
  160. package/packages/theme-chalk/lib/image.css +0 -0
  161. package/packages/theme-chalk/lib/index.css +1 -0
  162. package/packages/theme-chalk/lib/list.css +0 -0
  163. package/packages/theme-chalk/lib/loading.css +0 -0
  164. package/packages/theme-chalk/lib/nav-bar.css +0 -0
  165. package/packages/theme-chalk/lib/navbar.css +1 -0
  166. package/packages/theme-chalk/lib/notice-bar.css +0 -0
  167. package/packages/theme-chalk/lib/pagination.css +1 -0
  168. package/packages/theme-chalk/lib/picker.css +1 -0
  169. package/packages/theme-chalk/lib/popover.css +0 -0
  170. package/packages/theme-chalk/lib/popup.css +0 -0
  171. package/packages/theme-chalk/lib/pull-refresh.css +0 -0
  172. package/packages/theme-chalk/lib/radio.css +1 -0
  173. package/packages/theme-chalk/lib/rate.css +0 -0
  174. package/packages/theme-chalk/lib/retrial-auth.css +1 -0
  175. package/packages/theme-chalk/lib/search.css +0 -0
  176. package/packages/theme-chalk/lib/selector.css +1 -0
  177. package/packages/theme-chalk/lib/skeleton.css +0 -0
  178. package/packages/theme-chalk/lib/stepper.css +1 -0
  179. package/packages/theme-chalk/lib/swipe.css +0 -0
  180. package/packages/theme-chalk/lib/switch.css +1 -0
  181. package/packages/theme-chalk/lib/tab.css +0 -0
  182. package/packages/theme-chalk/lib/table-column.css +0 -0
  183. package/packages/theme-chalk/lib/table.css +1 -0
  184. package/packages/theme-chalk/lib/tabs.css +1 -0
  185. package/packages/theme-chalk/lib/tag.css +1 -0
  186. package/packages/theme-chalk/lib/theme.css +0 -0
  187. package/packages/theme-chalk/lib/tree.css +1 -0
  188. package/packages/theme-chalk/lib/uploader.css +0 -0
  189. package/packages/theme-chalk/src/base.scss +195 -195
  190. package/packages/theme-chalk/src/button-group.scss +25 -25
  191. package/packages/theme-chalk/src/button.scss +2 -2
  192. package/packages/theme-chalk/src/calendar.scss +11 -11
  193. package/packages/theme-chalk/src/cascader.scss +11 -11
  194. package/packages/theme-chalk/src/cell.scss +14 -14
  195. package/packages/theme-chalk/src/checkbox.scss +9 -9
  196. package/packages/theme-chalk/src/circle.scss +6 -6
  197. package/packages/theme-chalk/src/common/var.scss +1525 -1525
  198. package/packages/theme-chalk/src/esign.scss +51 -51
  199. package/packages/theme-chalk/src/field.scss +98 -98
  200. package/packages/theme-chalk/src/flow-btn.scss +99 -99
  201. package/packages/theme-chalk/src/flow-list.scss +122 -122
  202. package/packages/theme-chalk/src/fonts/iconfont.scss +98 -98
  203. package/packages/theme-chalk/src/fonts/iconfont1.scss +90 -90
  204. package/packages/theme-chalk/src/form.scss +107 -33
  205. package/packages/theme-chalk/src/grid-item.scss +16 -16
  206. package/packages/theme-chalk/src/grid.scss +46 -46
  207. package/packages/theme-chalk/src/icon.scss +1661 -1661
  208. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  209. package/packages/theme-chalk/src/navbar.scss +5 -5
  210. package/packages/theme-chalk/src/pagination.scss +12 -12
  211. package/packages/theme-chalk/src/picker.scss +31 -31
  212. package/packages/theme-chalk/src/radio.scss +6 -6
  213. package/packages/theme-chalk/src/retrial-auth.scss +28 -28
  214. package/packages/theme-chalk/src/selector.scss +247 -247
  215. package/packages/theme-chalk/src/stepper.scss +9 -9
  216. package/packages/theme-chalk/src/switch.scss +5 -5
  217. package/packages/theme-chalk/src/table.scss +86 -86
  218. package/packages/theme-chalk/src/tabs.scss +31 -31
  219. package/packages/theme-chalk/src/tag.scss +12 -12
  220. package/packages/theme-chalk/src/theme.scss +1 -1
  221. package/packages/theme-chalk/src/tree.scss +127 -127
  222. package/packages/uploader/index.js +5 -5
  223. package/src/config/api.js +190 -190
  224. package/src/index.js +1 -1
  225. package/src/utils/axios.js +217 -217
  226. package/src/utils/date-util.js +312 -312
  227. package/src/utils/http.js +106 -106
  228. package/src/utils/rules.js +18 -18
  229. package/src/utils/store.js +21 -21
  230. package/packages/theme-chalk/gulpfile.js +0 -25
@@ -1,931 +1,931 @@
1
- <template>
2
- <el-table-column
3
- v-if="showTemplate(item) && show"
4
- v-show="!item.hide"
5
- :label="item.title || item.label"
6
- :prop="item.field || item.prop"
7
- :fixed="item.fixed"
8
- :sortable="item.sortable || item.sort"
9
- :column-key="item.columnKey"
10
- :width="item.width"
11
- :min-width="item.minWidth"
12
- :render-header="item.renderHeader"
13
- :sort-method="item.sortMethod"
14
- :sort-by="item.sortBy"
15
- :sort-orders="item.sortOrders"
16
- :resizable="item.resizable"
17
- :formatter="item.formatter"
18
- :show-overflow-tooltip="item.showOverflowTooltip"
19
- :align="item.align"
20
- :header-align="item.headerAlign"
21
- :selectable="item.selectable"
22
- :reserve-selection="item.reserveSelection"
23
- :filters="item.filters"
24
- :filter-placement="item.filterPlacement"
25
- :filter-multiple="item.filterMultiple"
26
- :filter-method="item.filterMethod"
27
- :filtered-value="item.filteredValue"
28
- :colspan="item.colspan"
29
- :rowspan="item.rowspan"
30
- :total="item.total"
31
- >
32
- <template slot-scope="scope">
33
- <template v-if="form && item.type !== 'handle'">
34
- <template v-if="isReadOnly(item, scope)">
35
- <expand-dom
36
- v-if="item.render"
37
- :column="item"
38
- :row="scope.row"
39
- :render="item.render"
40
- :index="index"
41
- >
42
- </expand-dom>
43
- <template v-else>{{ format(scope.row, item) }}</template>
44
- </template>
45
- <template v-else>
46
- <section v-if="item.type === 'slot'">
47
- <slot :name="item.prop"></slot>
48
- </section>
49
- <em-picker
50
- v-if="item.type === 'select'"
51
- :valueKey="
52
- item.valueKey
53
- ? item.valueKey
54
- : !item.url && !item.sysAppCode
55
- ? 'value'
56
- : 'cciValue'
57
- "
58
- :labelKey="
59
- item.labelKey
60
- ? item.labelKey
61
- : !item.url && !item.sysAppCode
62
- ? 'name'
63
- : 'shortName'
64
- "
65
- v-bind="
66
- exclAttribute({
67
- data: item,
68
- attrs: ['width', 'sysAppCode', 'url']
69
- })
70
- "
71
- :sysAppCode="
72
- item.sysAppCode &&
73
- scope.$index == 0 &&
74
- !optionList[item.name || item.field || item.prop]
75
- ? item.sysAppCode
76
- : ''
77
- "
78
- :url="
79
- item.url &&
80
- scope.$index == 0 &&
81
- !optionList[item.name || item.field || item.prop]
82
- ? item.url
83
- : ''
84
- "
85
- v-model="scope.row[item.name || item.field || item.prop]"
86
- hideLabel
87
- :columns="
88
- optionList[item.name || item.field || item.prop]
89
- ? optionList[item.name || item.field || item.prop]
90
- : newOptionData[item.name || item.field || item.prop]
91
- "
92
- @confirm="
93
- value => {
94
- handleChange({
95
- name: item.name || item.field || item.prop,
96
- value: value,
97
- data: scope.row
98
- });
99
- }
100
- "
101
- />
102
- <template
103
- v-else-if="
104
- item.type === 'text' ||
105
- item.type === 'textarea' ||
106
- item.type == 'number' ||
107
- item.type == 'digit'
108
- "
109
- >
110
- <template v-if="item.lazy">
111
- <input
112
- v-if="item.type === 'text'"
113
- ref="emInput"
114
- class="el-input__inner"
115
- :label="item.title"
116
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
117
- v-model.lazy="scope.row[item.name || item.field || item.prop]"
118
- @blur="
119
- event => {
120
- handleBlur({ item: item, event: event, data: scope.row });
121
- }
122
- "
123
- @focus="
124
- event => {
125
- handleFocus({
126
- item: item,
127
- event: event,
128
- data: scope.row
129
- });
130
- }
131
- "
132
- @change="
133
- value => {
134
- handleChange({
135
- name: item.name || item.field || item.prop,
136
- value: value,
137
- data: scope.row
138
- });
139
- }
140
- "
141
- />
142
- <textarea
143
- v-else
144
- class="el-textarea__inner"
145
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
146
- v-model.lazy="scope.row[item.name || item.field || item.prop]"
147
- @blur="
148
- event => {
149
- handleBlur({ item: item, event: event, data: scope.row });
150
- }
151
- "
152
- @focus="
153
- event => {
154
- handleFocus({
155
- item: item,
156
- event: event,
157
- data: scope.row
158
- });
159
- }
160
- "
161
- @change="
162
- value => {
163
- handleChange({
164
- name: item.name || item.field || item.prop,
165
- value: value,
166
- data: scope.row
167
- });
168
- }
169
- "
170
- ></textarea>
171
- </template>
172
- <em-input
173
- v-else
174
- ref="emInput"
175
- class="em-table-input"
176
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
177
- v-model="scope.row[item.name || item.field || item.prop]"
178
- :label="item.title"
179
- hideLabel
180
- @blur="
181
- event => {
182
- handleBlur({ item: item, event: event, data: scope.row });
183
- }
184
- "
185
- @focus="
186
- event => {
187
- handleFocus({ item: item, event: event, data: scope.row });
188
- }
189
- "
190
- @change="
191
- value => {
192
- handleChange({
193
- name: item.name || item.field || item.prop,
194
- value: value,
195
- data: scope.row
196
- });
197
- }
198
- "
199
- ></em-input>
200
- </template>
201
- <em-date
202
- v-else-if="
203
- item.date ||
204
- item.type == 'date' ||
205
- item.type == 'year' ||
206
- item.type == 'year-month' ||
207
- item.type == 'month-day' ||
208
- item.type == 'time' ||
209
- item.type == 'datetimeSecond' ||
210
- item.type == 'datetime' ||
211
- item.type == 'datehour'
212
- "
213
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
214
- v-model="scope.row[item.name || item.field || item.prop]"
215
- hideLabel
216
- :joinStr="item.joinStr || '-'"
217
- @confirm="
218
- value => {
219
- handleChange({
220
- name: item.name || item.field || item.prop,
221
- value: value,
222
- data: scope.row
223
- });
224
- }
225
- "
226
- />
227
- <em-radio-group
228
- v-else-if="item.type === 'radio'"
229
- v-bind="exclAttribute({ data: item, attrs: ['width'] })"
230
- v-model="scope.row[item.name || item.field || item.prop]"
231
- :data="
232
- optionList[item.name || item.field || item.prop] ||
233
- newOptionData[item.name || item.field || item.prop]
234
- "
235
- :valueKey="
236
- item.valueKey
237
- ? item.valueKey
238
- : !item.url && !item.sysAppCode
239
- ? 'value'
240
- : 'cciValue'
241
- "
242
- :labelKey="
243
- item.labelKey
244
- ? item.labelKey
245
- : !item.url && !item.sysAppCode
246
- ? 'name'
247
- : 'shortName'
248
- "
249
- :sysAppCode="
250
- item.sysAppCode &&
251
- scope.$index == 0 &&
252
- !optionList[item.name || item.field || item.prop]
253
- ? item.sysAppCode
254
- : ''
255
- "
256
- :url="
257
- item.url &&
258
- scope.$index == 0 &&
259
- !optionList[item.name || item.field || item.prop]
260
- ? item.url
261
- : ''
262
- "
263
- @change="
264
- value => {
265
- handleChange({
266
- name: item.name || item.field || item.prop,
267
- value: value,
268
- data: scope.row,
269
- type: item.type
270
- });
271
- }
272
- "
273
- />
274
- <em-checkbox-group
275
- v-else-if="item.type === 'checkbox'"
276
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
277
- v-model="scope.row[item.name || item.field || item.prop]"
278
- :data="
279
- optionList[item.name || item.field || item.prop] ||
280
- newOptionData[item.name || item.field || item.prop]
281
- "
282
- :valueKey="
283
- item.valueKey
284
- ? item.valueKey
285
- : !item.url && !item.sysAppCode
286
- ? 'value'
287
- : 'cciValue'
288
- "
289
- :labelKey="
290
- item.labelKey
291
- ? item.labelKey
292
- : !item.url && !item.sysAppCode
293
- ? 'name'
294
- : 'shortName'
295
- "
296
- :sysAppCode="
297
- item.sysAppCode &&
298
- scope.$index == 0 &&
299
- !optionList[item.name || item.field || item.prop]
300
- ? item.sysAppCode
301
- : ''
302
- "
303
- :url="
304
- item.url &&
305
- scope.$index == 0 &&
306
- !optionList[item.name || item.field || item.prop]
307
- ? item.url
308
- : ''
309
- "
310
- @change="
311
- value => {
312
- handleChange({
313
- name: item.name || item.field || item.prop,
314
- value: value,
315
- data: scope.row,
316
- type: item.type
317
- });
318
- }
319
- "
320
- />
321
- <em-switch
322
- v-else-if="item.type === 'switch'"
323
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
324
- v-model="scope.row[item.name || item.field || item.prop]"
325
- @change="
326
- value => {
327
- handleChange({
328
- name: item.name || item.field || item.prop,
329
- value: value,
330
- data: scope.row
331
- });
332
- }
333
- "
334
- />
335
- <em-selector
336
- v-else-if="item.type == 'selector'"
337
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
338
- v-model="scope.row[item.name || item.field || item.prop]"
339
- :label="item.title"
340
- hide-label
341
- @change="
342
- value => {
343
- handleChange({
344
- name: item.name || item.field || item.prop,
345
- value: value.list,
346
- data: scope.row
347
- });
348
- }
349
- "
350
- />
351
- <!-- <el-form-item
352
- :name="name"
353
- :prop="item.field"
354
- :rules="item.rules"
355
- :index="scope.$index"
356
- v-else
357
- >
358
-
359
- <es-cascader
360
- v-else-if="item.type == 'cascader'"
361
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
362
- v-model="scope.row[item.field]"
363
- :data="
364
- item.optionData
365
- ? scope.row[item.optionData]
366
- : optionData[item.field || item.prop]
367
- "
368
- @blur="
369
- event => {
370
- handleBlur({ item: item, event: event, data: scope.row });
371
- }
372
- "
373
- @focus="
374
- event => {
375
- handleFocus({ item: item, event: event, data: scope.row });
376
- }
377
- "
378
- @change="
379
- value => {
380
- handleChange({
381
- name: item.field || item.prop,
382
- value: value,
383
- data: scope.row
384
- });
385
- }
386
- "
387
- >
388
- </es-cascader>
389
- <es-select-ganged
390
- v-else-if="item.type === 'ganged'"
391
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
392
- v-model="scope.row[item.field]"
393
- :data="
394
- item.optionData
395
- ? scope.row[item.optionData]
396
- : optionData[item.field || item.prop]
397
- "
398
- @change="
399
- value => {
400
- handleChange({
401
- name: item.field || item.prop,
402
- value: value,
403
- data: scope.row
404
- });
405
- }
406
- "
407
- ></es-select-ganged>
408
- <es-checkbox-group
409
- v-else-if="item.type === 'checkbox'"
410
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
411
- v-model="scope.row[item.field]"
412
- :data="optionData[item.field || item.prop]"
413
- :ajax="false"
414
- @change="
415
- value => {
416
- handleChange({
417
- name: item.field || item.prop,
418
- value: value,
419
- data: scope.row
420
- });
421
- }
422
- "
423
- ></es-checkbox-group>
424
- <es-switch
425
- v-else-if="item.type === 'switch'"
426
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
427
- v-model="scope.row[item.field]"
428
- :data="optionData[item.field || item.prop]"
429
- @change="
430
- value => {
431
- handleChange({
432
- name: item.field || item.prop,
433
- value: value,
434
- data: scope.row
435
- });
436
- }
437
- "
438
- ></es-switch>
439
- <es-date-picker
440
- v-else-if="
441
- item.date ||
442
- item.type == 'date' ||
443
- item.type == 'year' ||
444
- item.type == 'month' ||
445
- item.type == 'date' ||
446
- item.type == 'dates' ||
447
- item.type == 'week' ||
448
- item.type == 'datetime' ||
449
- item.type == 'datetimerange' ||
450
- item.type == 'daterange' ||
451
- item.type == 'monthrange' ||
452
- item.type == 'quarter' ||
453
- item.type == 'halfyear'
454
- "
455
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
456
- v-model="scope.row[item.field]"
457
- @blur="
458
- event => {
459
- handleBlur({ item: item, event: event, data: scope.row });
460
- }
461
- "
462
- @focus="
463
- event => {
464
- handleFocus({ item: item, event: event, data: scope.row });
465
- }
466
- "
467
- @change="
468
- value => {
469
- handleChange({
470
- name: item.field || item.prop,
471
- value: value,
472
- data: scope.row
473
- });
474
- }
475
- "
476
- ></es-date-picker>
477
- <es-input-number
478
- v-else-if="item.type == 'number'"
479
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
480
- v-model="scope.row[item.field]"
481
- @blur="
482
- event => {
483
- handleBlur({ item: item, event: event, data: scope.row });
484
- }
485
- "
486
- @focus="
487
- event => {
488
- handleFocus({ item: item, event: event, data: scope.row });
489
- }
490
- "
491
- @change="
492
- value => {
493
- handleChange({
494
- name: item.field || item.prop,
495
- value: value,
496
- data: scope.row
497
- });
498
- }
499
- "
500
- ></es-input-number>
501
- <es-selector
502
- v-else-if="item.type == 'selector'"
503
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
504
- v-model="scope.row[item.field]"
505
- @change="
506
- value => {
507
- handleChange({
508
- name: item.field || item.prop,
509
- value: value,
510
- data: scope.row
511
- });
512
- }
513
- "
514
- ></es-selector>
515
- <template
516
- v-else-if="item.type === 'text' || item.type === 'textarea'"
517
- >
518
- <template v-if="item.lazy">
519
- <input
520
- v-if="item.type === 'text'"
521
- class="el-input__inner"
522
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
523
- v-model.lazy="scope.row[item.field]"
524
- @blur="
525
- event => {
526
- handleBlur({ item: item, event: event, data: scope.row });
527
- }
528
- "
529
- @focus="
530
- event => {
531
- handleFocus({
532
- item: item,
533
- event: event,
534
- data: scope.row
535
- });
536
- }
537
- "
538
- @change="
539
- value => {
540
- handleChange({
541
- name: item.field || item.prop,
542
- value: value,
543
- data: scope.row
544
- });
545
- }
546
- "
547
- />
548
- <textarea
549
- v-else
550
- class="el-textarea__inner"
551
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
552
- v-model.lazy="scope.row[item.field]"
553
- @blur="
554
- event => {
555
- handleBlur({ item: item, event: event, data: scope.row });
556
- }
557
- "
558
- @focus="
559
- event => {
560
- handleFocus({
561
- item: item,
562
- event: event,
563
- data: scope.row
564
- });
565
- }
566
- "
567
- @change="
568
- value => {
569
- handleChange({
570
- name: item.field || item.prop,
571
- value: value,
572
- data: scope.row
573
- });
574
- }
575
- "
576
- ></textarea>
577
- </template>
578
- <es-input
579
- v-else
580
- v-bind="exclAttribute({ data: item, attrs: 'width' })"
581
- v-model="scope.row[item.field]"
582
- @blur="
583
- event => {
584
- handleBlur({ item: item, event: event, data: scope.row });
585
- }
586
- "
587
- @focus="
588
- event => {
589
- handleFocus({ item: item, event: event, data: scope.row });
590
- }
591
- "
592
- @change="
593
- value => {
594
- handleChange({
595
- name: item.field || item.prop,
596
- value: value,
597
- data: scope.row
598
- });
599
- }
600
- "
601
- ></es-input>
602
- </template>
603
- </el-form-item> -->
604
- </template>
605
- </template>
606
- <!-- 按钮区域 -->
607
- <em-button-group
608
- v-if="item.type === 'handle' && !scope.row.hideHandle"
609
- :size="item.size"
610
- :contents="item.contents || item.events"
611
- :data="scope.row"
612
- @click="handleClick"
613
- ></em-button-group>
614
- </template>
615
- </el-table-column>
616
- <el-table-column
617
- v-else-if="show"
618
- v-show="!item.hide"
619
- :key="index"
620
- :label="item.title || item.label"
621
- :prop="item.field || item.prop"
622
- :fixed="item.fixed"
623
- :sortable="item.sortable || item.sort"
624
- :index="item.index"
625
- :column-key="item.columnKey"
626
- :width="item.width"
627
- :min-width="item.minWidth"
628
- :render-header="item.renderHeader"
629
- :sort-method="item.sortMethod"
630
- :sort-by="item.sortBy"
631
- :sort-orders="item.sortOrders"
632
- :resizable="item.resizable"
633
- :formatter="item.formatter"
634
- :show-overflow-tooltip="item.showOverflowTooltip"
635
- :align="item.align"
636
- :header-align="item.headerAlign"
637
- :class-name="item.className"
638
- :label-class-name="item.labelClassName"
639
- :selectable="item.selectable"
640
- :reserve-selection="item.reserveSelection"
641
- :filters="item.filters"
642
- :filter-placement="item.filterPlacement"
643
- :filter-multiple="item.filterMultiple"
644
- :filter-method="item.filterMethod"
645
- :filtered-value="item.filteredValue"
646
- :colspan="item.colspan"
647
- :rowspan="item.rowspan"
648
- :total="item.total"
649
- >
650
- <slot></slot>
651
- <template slot-scope="scope">
652
- <expand-dom
653
- v-if="item.render"
654
- :column="item"
655
- :row="scope.row"
656
- :render="item.render"
657
- :index="index"
658
- >
659
- <!-- {{ item.render(scope.row) }} -->
660
- </expand-dom>
661
- <template v-else
662
- ><div
663
- v-html="
664
- item.formatDate
665
- ? formatDate(
666
- scope.row[item.name || item.field || item.prop],
667
- item.formatDate
668
- )
669
- : getValue(scope.row)
670
- "
671
- ></div
672
- ></template>
673
- </template>
674
- </el-table-column>
675
- </template>
676
-
677
- <script>
678
- import { TableColumn } from 'element-ui';
679
- import util from 'eoss-mobile/src/utils/util';
680
- import { findSysCode } from '../../../src/config/api';
681
- import tableMixin from './mixins/table';
682
- import request from '../../../src/utils/http.js';
683
- export default {
684
- name: 'EmTableColumn',
685
- components: { TableColumn,expandDom: {
686
- functional: true,
687
- props: {
688
- row: Object,
689
- render: [Function, String],
690
- index: Number,
691
- column: {
692
- type: Object,
693
- default: null
694
- }
695
- },
696
- render: (h, ctx) => {
697
- const params = {
698
- row: ctx.props.row,
699
- index: ctx.props.index
700
- };
701
- if (ctx.props.column) {
702
- params.column = ctx.props.column;
703
- }
704
- if (typeof ctx.props.render == 'string') {
705
- try {
706
- return util.toFunction(ctx.props.render)(h, params);
707
- } catch (error) {
708
- throw error;
709
- }
710
- }
711
- return ctx.props.render(h, params);
712
- }
713
- } },
714
- inheritAttrs: false,
715
- mixins: [tableMixin],
716
- props: {
717
- item: {
718
- type: Object,
719
- default() {
720
- return {};
721
- }
722
- },
723
- readonly: Boolean,
724
- index: Number,
725
- form: {
726
- type: Boolean,
727
- default: false
728
- },
729
- optionData: {
730
- type: Object,
731
- default() {
732
- return {};
733
- }
734
- }
735
- },
736
- data() {
737
- return {
738
- show: true,
739
- isSelect: false,
740
- selectStr: '',
741
- optionList: {}
742
- };
743
- },
744
- mounted() {
745
- const { field, prop, name, url, sysAppCode } = this.item;
746
- this.selectStr.indexOf(sysAppCode) != -1 && (this.isSelect = false);
747
- if ((sysAppCode || url) && !this.isSelect) {
748
- this.optionList[name || field || prop] = [];
749
- this.getSelectValue(this.item);
750
- this.selectStr += sysAppCode;
751
- this.isSelect = true;
752
- }
753
- },
754
- computed: {
755
- newOptionData(field) {
756
- let data = JSON.parse(JSON.stringify(this.optionData));
757
- // if (field) return this.optionData[field] || [];
758
-
759
- return data;
760
- }
761
- },
762
- methods: {
763
- getSelectValue(item) {
764
- let params = {
765
- url: item.baseUrl
766
- ? item.baseUrl + (item.url || findSysCode)
767
- : item.url || findSysCode,
768
- type: item.method || 'get',
769
- params: {
770
- ccCode: item.sysAppCode,
771
- pageIndex: 1,
772
- ...item.param
773
- }
774
- };
775
- request(params).then(res => {
776
- const { data, status, results, rCode } = res;
777
- if (status === 'success' || rCode === 0) {
778
- this.optionList[
779
- item.name || item.field || item.prop
780
- ] = item.resultsName
781
- ? data
782
- ? data[item.resultsName]
783
- : results[item.resultsName]
784
- : data
785
- ? data
786
- : results;
787
- this.show = false;
788
- setTimeout(() => {
789
- this.show = true;
790
- }, 0);
791
- }
792
- });
793
- },
794
- getValue(row) {
795
- let str;
796
- const { field, prop, valueKey, labelKey, type } = this.item;
797
- if (this.newOptionData[field || prop]) {
798
- if (Array.isArray(row[field || prop])) {
799
- let val = [];
800
- this.newOptionData[field || prop].map(x => {
801
- row[field || prop].filter(j => {
802
- if (typeof j == 'object') {
803
- if (j[valueKey || 'value'] == x[valueKey || 'value']) {
804
- val.push(x[labelKey || 'name']);
805
- }
806
- } else {
807
- if (j == x[valueKey || 'value']) {
808
- val.push(x[labelKey || 'name']);
809
- }
810
- }
811
- });
812
- });
813
- str = val.join(',');
814
- } else {
815
- let val = this.newOptionData[field || prop].filter(
816
- x => row[field || prop] == x[valueKey || 'value']
817
- );
818
- if (val.length > 0) {
819
- str = val[0][labelKey || 'name'];
820
- }
821
- }
822
- } else if (type === 'select') {
823
- const { name, labelKey, field, prop, valueKey, optionData } = this.item;
824
- if (this.optionList[name || field || prop]) {
825
- let value = this.optionList[name || field || prop].filter(
826
- x => x[valueKey || 'cciValue'] === row[name || field || prop]
827
- );
828
- if (value.length > 0) {
829
- str = value[0][labelKey || 'shortName'];
830
- } else {
831
- str = '-';
832
- }
833
- } else if (optionData) {
834
- let value = optionData.filter(
835
- x => x[valueKey || 'cciValue'] === row[name || field || prop]
836
- );
837
- if (value.length > 0) {
838
- str = value[0][labelKey || 'shortName'];
839
- } else {
840
- str = '-';
841
- }
842
- } else {
843
- str = row[name || field || prop];
844
- }
845
- } else if (typeof row[field || prop] == 'string') {
846
- str = row[field || prop];
847
- } else if (type == 'number' || typeof row[field || prop] == 'number') {
848
- str = row[field || prop];
849
- } else {
850
- if (
851
- Array.isArray(row[field || prop]) &&
852
- row[field || prop].length == 0
853
- ) {
854
- str = '';
855
- } else {
856
- // str = row[field || prop] ? '是' : '否';
857
- str = row[field || prop] ? row[field || prop] : '';
858
- }
859
- }
860
- return str;
861
- },
862
- formatDate(date, fmt) {
863
- return util.formatDate(date, fmt);
864
- },
865
- getTableColumns(info, name) {
866
- if (this.newOptionData[name]) return;
867
- this.show = false;
868
- this.newOptionData[name] = info;
869
- setTimeout(() => {
870
- this.show = true;
871
- }, 0);
872
- },
873
- handleBlur(data) {
874
- this.$emit('formBlur', data);
875
- },
876
- handleFocus(data) {
877
- this.$emit('formFocus', data);
878
- },
879
- handleChange(data) {
880
- let newData;
881
- if (typeof data.value == 'object' && data.value.srcElement) {
882
- newData = data.value.srcElement._value;
883
- data.value = newData;
884
- }
885
- this.$emit('formChange', data);
886
- },
887
- handleClick(data) {
888
- this.$emit('handleClick', data);
889
- },
890
- exclAttribute({ data, attrs }) {
891
- return util.exclAttribute({ data, attrs });
892
- },
893
- handleClick(res) {
894
- this.$emit('handleClick', res);
895
- },
896
- isReadOnly(item, scope) {
897
- return (
898
- scope.row.canEdit === false ||
899
- this.readonly ||
900
- item.editable === false ||
901
- (scope.row.cantEditKey &&
902
- scope.row.cantEditKey.indexOf(item.field || item.prop) > -1) ||
903
- item.readonly
904
- );
905
- },
906
- format(rows, col) {
907
- const field = col.field || col.prop;
908
- if (util.isObject(rows[field])) {
909
- return (
910
- rows[field][col.labelKey] ||
911
- rows[field]['name'] ||
912
- rows[field]['label']
913
- );
914
- }
915
- if (Array.isArray(rows[field])) {
916
- const vals = rows[field].map(item => {
917
- if (util.isObject(item)) {
918
- return item[col.labelKey || 'name' || 'label'];
919
- } else {
920
- return item;
921
- }
922
- });
923
- return vals.join(col.symbol ? col.symbol : '-');
924
- }
925
- return rows[field];
926
- }
927
- }
928
- };
929
- </script>
930
-
931
- <style></style>
1
+ <template>
2
+ <el-table-column
3
+ v-if="showTemplate(item) && show"
4
+ v-show="!item.hide"
5
+ :label="item.title || item.label"
6
+ :prop="item.field || item.prop"
7
+ :fixed="item.fixed"
8
+ :sortable="item.sortable || item.sort"
9
+ :column-key="item.columnKey"
10
+ :width="item.width"
11
+ :min-width="item.minWidth"
12
+ :render-header="item.renderHeader"
13
+ :sort-method="item.sortMethod"
14
+ :sort-by="item.sortBy"
15
+ :sort-orders="item.sortOrders"
16
+ :resizable="item.resizable"
17
+ :formatter="item.formatter"
18
+ :show-overflow-tooltip="item.showOverflowTooltip"
19
+ :align="item.align"
20
+ :header-align="item.headerAlign"
21
+ :selectable="item.selectable"
22
+ :reserve-selection="item.reserveSelection"
23
+ :filters="item.filters"
24
+ :filter-placement="item.filterPlacement"
25
+ :filter-multiple="item.filterMultiple"
26
+ :filter-method="item.filterMethod"
27
+ :filtered-value="item.filteredValue"
28
+ :colspan="item.colspan"
29
+ :rowspan="item.rowspan"
30
+ :total="item.total"
31
+ >
32
+ <template slot-scope="scope">
33
+ <template v-if="form && item.type !== 'handle'">
34
+ <template v-if="isReadOnly(item, scope)">
35
+ <expand-dom
36
+ v-if="item.render"
37
+ :column="item"
38
+ :row="scope.row"
39
+ :render="item.render"
40
+ :index="index"
41
+ >
42
+ </expand-dom>
43
+ <template v-else>{{ format(scope.row, item) }}</template>
44
+ </template>
45
+ <template v-else>
46
+ <section v-if="item.type === 'slot'">
47
+ <slot :name="item.prop"></slot>
48
+ </section>
49
+ <em-picker
50
+ v-if="item.type === 'select'"
51
+ :valueKey="
52
+ item.valueKey
53
+ ? item.valueKey
54
+ : !item.url && !item.sysAppCode
55
+ ? 'value'
56
+ : 'cciValue'
57
+ "
58
+ :labelKey="
59
+ item.labelKey
60
+ ? item.labelKey
61
+ : !item.url && !item.sysAppCode
62
+ ? 'name'
63
+ : 'shortName'
64
+ "
65
+ v-bind="
66
+ exclAttribute({
67
+ data: item,
68
+ attrs: ['width', 'sysAppCode', 'url']
69
+ })
70
+ "
71
+ :sysAppCode="
72
+ item.sysAppCode &&
73
+ scope.$index == 0 &&
74
+ !optionList[item.name || item.field || item.prop]
75
+ ? item.sysAppCode
76
+ : ''
77
+ "
78
+ :url="
79
+ item.url &&
80
+ scope.$index == 0 &&
81
+ !optionList[item.name || item.field || item.prop]
82
+ ? item.url
83
+ : ''
84
+ "
85
+ v-model="scope.row[item.name || item.field || item.prop]"
86
+ hideLabel
87
+ :columns="
88
+ optionList[item.name || item.field || item.prop]
89
+ ? optionList[item.name || item.field || item.prop]
90
+ : newOptionData[item.name || item.field || item.prop]
91
+ "
92
+ @confirm="
93
+ value => {
94
+ handleChange({
95
+ name: item.name || item.field || item.prop,
96
+ value: value,
97
+ data: scope.row
98
+ });
99
+ }
100
+ "
101
+ />
102
+ <template
103
+ v-else-if="
104
+ item.type === 'text' ||
105
+ item.type === 'textarea' ||
106
+ item.type == 'number' ||
107
+ item.type == 'digit'
108
+ "
109
+ >
110
+ <template v-if="item.lazy">
111
+ <input
112
+ v-if="item.type === 'text'"
113
+ ref="emInput"
114
+ class="el-input__inner"
115
+ :label="item.title"
116
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
117
+ v-model.lazy="scope.row[item.name || item.field || item.prop]"
118
+ @blur="
119
+ event => {
120
+ handleBlur({ item: item, event: event, data: scope.row });
121
+ }
122
+ "
123
+ @focus="
124
+ event => {
125
+ handleFocus({
126
+ item: item,
127
+ event: event,
128
+ data: scope.row
129
+ });
130
+ }
131
+ "
132
+ @change="
133
+ value => {
134
+ handleChange({
135
+ name: item.name || item.field || item.prop,
136
+ value: value,
137
+ data: scope.row
138
+ });
139
+ }
140
+ "
141
+ />
142
+ <textarea
143
+ v-else
144
+ class="el-textarea__inner"
145
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
146
+ v-model.lazy="scope.row[item.name || item.field || item.prop]"
147
+ @blur="
148
+ event => {
149
+ handleBlur({ item: item, event: event, data: scope.row });
150
+ }
151
+ "
152
+ @focus="
153
+ event => {
154
+ handleFocus({
155
+ item: item,
156
+ event: event,
157
+ data: scope.row
158
+ });
159
+ }
160
+ "
161
+ @change="
162
+ value => {
163
+ handleChange({
164
+ name: item.name || item.field || item.prop,
165
+ value: value,
166
+ data: scope.row
167
+ });
168
+ }
169
+ "
170
+ ></textarea>
171
+ </template>
172
+ <em-input
173
+ v-else
174
+ ref="emInput"
175
+ class="em-table-input"
176
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
177
+ v-model="scope.row[item.name || item.field || item.prop]"
178
+ :label="item.title"
179
+ hideLabel
180
+ @blur="
181
+ event => {
182
+ handleBlur({ item: item, event: event, data: scope.row });
183
+ }
184
+ "
185
+ @focus="
186
+ event => {
187
+ handleFocus({ item: item, event: event, data: scope.row });
188
+ }
189
+ "
190
+ @change="
191
+ value => {
192
+ handleChange({
193
+ name: item.name || item.field || item.prop,
194
+ value: value,
195
+ data: scope.row
196
+ });
197
+ }
198
+ "
199
+ ></em-input>
200
+ </template>
201
+ <em-date
202
+ v-else-if="
203
+ item.date ||
204
+ item.type == 'date' ||
205
+ item.type == 'year' ||
206
+ item.type == 'year-month' ||
207
+ item.type == 'month-day' ||
208
+ item.type == 'time' ||
209
+ item.type == 'datetimeSecond' ||
210
+ item.type == 'datetime' ||
211
+ item.type == 'datehour'
212
+ "
213
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
214
+ v-model="scope.row[item.name || item.field || item.prop]"
215
+ hideLabel
216
+ :joinStr="item.joinStr || '-'"
217
+ @confirm="
218
+ value => {
219
+ handleChange({
220
+ name: item.name || item.field || item.prop,
221
+ value: value,
222
+ data: scope.row
223
+ });
224
+ }
225
+ "
226
+ />
227
+ <em-radio-group
228
+ v-else-if="item.type === 'radio'"
229
+ v-bind="exclAttribute({ data: item, attrs: ['width'] })"
230
+ v-model="scope.row[item.name || item.field || item.prop]"
231
+ :data="
232
+ optionList[item.name || item.field || item.prop] ||
233
+ newOptionData[item.name || item.field || item.prop]
234
+ "
235
+ :valueKey="
236
+ item.valueKey
237
+ ? item.valueKey
238
+ : !item.url && !item.sysAppCode
239
+ ? 'value'
240
+ : 'cciValue'
241
+ "
242
+ :labelKey="
243
+ item.labelKey
244
+ ? item.labelKey
245
+ : !item.url && !item.sysAppCode
246
+ ? 'name'
247
+ : 'shortName'
248
+ "
249
+ :sysAppCode="
250
+ item.sysAppCode &&
251
+ scope.$index == 0 &&
252
+ !optionList[item.name || item.field || item.prop]
253
+ ? item.sysAppCode
254
+ : ''
255
+ "
256
+ :url="
257
+ item.url &&
258
+ scope.$index == 0 &&
259
+ !optionList[item.name || item.field || item.prop]
260
+ ? item.url
261
+ : ''
262
+ "
263
+ @change="
264
+ value => {
265
+ handleChange({
266
+ name: item.name || item.field || item.prop,
267
+ value: value,
268
+ data: scope.row,
269
+ type: item.type
270
+ });
271
+ }
272
+ "
273
+ />
274
+ <em-checkbox-group
275
+ v-else-if="item.type === 'checkbox'"
276
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
277
+ v-model="scope.row[item.name || item.field || item.prop]"
278
+ :data="
279
+ optionList[item.name || item.field || item.prop] ||
280
+ newOptionData[item.name || item.field || item.prop]
281
+ "
282
+ :valueKey="
283
+ item.valueKey
284
+ ? item.valueKey
285
+ : !item.url && !item.sysAppCode
286
+ ? 'value'
287
+ : 'cciValue'
288
+ "
289
+ :labelKey="
290
+ item.labelKey
291
+ ? item.labelKey
292
+ : !item.url && !item.sysAppCode
293
+ ? 'name'
294
+ : 'shortName'
295
+ "
296
+ :sysAppCode="
297
+ item.sysAppCode &&
298
+ scope.$index == 0 &&
299
+ !optionList[item.name || item.field || item.prop]
300
+ ? item.sysAppCode
301
+ : ''
302
+ "
303
+ :url="
304
+ item.url &&
305
+ scope.$index == 0 &&
306
+ !optionList[item.name || item.field || item.prop]
307
+ ? item.url
308
+ : ''
309
+ "
310
+ @change="
311
+ value => {
312
+ handleChange({
313
+ name: item.name || item.field || item.prop,
314
+ value: value,
315
+ data: scope.row,
316
+ type: item.type
317
+ });
318
+ }
319
+ "
320
+ />
321
+ <em-switch
322
+ v-else-if="item.type === 'switch'"
323
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
324
+ v-model="scope.row[item.name || item.field || item.prop]"
325
+ @change="
326
+ value => {
327
+ handleChange({
328
+ name: item.name || item.field || item.prop,
329
+ value: value,
330
+ data: scope.row
331
+ });
332
+ }
333
+ "
334
+ />
335
+ <em-selector
336
+ v-else-if="item.type == 'selector'"
337
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
338
+ v-model="scope.row[item.name || item.field || item.prop]"
339
+ :label="item.title"
340
+ hide-label
341
+ @change="
342
+ value => {
343
+ handleChange({
344
+ name: item.name || item.field || item.prop,
345
+ value: value.list,
346
+ data: scope.row
347
+ });
348
+ }
349
+ "
350
+ />
351
+ <!-- <el-form-item
352
+ :name="name"
353
+ :prop="item.field"
354
+ :rules="item.rules"
355
+ :index="scope.$index"
356
+ v-else
357
+ >
358
+
359
+ <es-cascader
360
+ v-else-if="item.type == 'cascader'"
361
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
362
+ v-model="scope.row[item.field]"
363
+ :data="
364
+ item.optionData
365
+ ? scope.row[item.optionData]
366
+ : optionData[item.field || item.prop]
367
+ "
368
+ @blur="
369
+ event => {
370
+ handleBlur({ item: item, event: event, data: scope.row });
371
+ }
372
+ "
373
+ @focus="
374
+ event => {
375
+ handleFocus({ item: item, event: event, data: scope.row });
376
+ }
377
+ "
378
+ @change="
379
+ value => {
380
+ handleChange({
381
+ name: item.field || item.prop,
382
+ value: value,
383
+ data: scope.row
384
+ });
385
+ }
386
+ "
387
+ >
388
+ </es-cascader>
389
+ <es-select-ganged
390
+ v-else-if="item.type === 'ganged'"
391
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
392
+ v-model="scope.row[item.field]"
393
+ :data="
394
+ item.optionData
395
+ ? scope.row[item.optionData]
396
+ : optionData[item.field || item.prop]
397
+ "
398
+ @change="
399
+ value => {
400
+ handleChange({
401
+ name: item.field || item.prop,
402
+ value: value,
403
+ data: scope.row
404
+ });
405
+ }
406
+ "
407
+ ></es-select-ganged>
408
+ <es-checkbox-group
409
+ v-else-if="item.type === 'checkbox'"
410
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
411
+ v-model="scope.row[item.field]"
412
+ :data="optionData[item.field || item.prop]"
413
+ :ajax="false"
414
+ @change="
415
+ value => {
416
+ handleChange({
417
+ name: item.field || item.prop,
418
+ value: value,
419
+ data: scope.row
420
+ });
421
+ }
422
+ "
423
+ ></es-checkbox-group>
424
+ <es-switch
425
+ v-else-if="item.type === 'switch'"
426
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
427
+ v-model="scope.row[item.field]"
428
+ :data="optionData[item.field || item.prop]"
429
+ @change="
430
+ value => {
431
+ handleChange({
432
+ name: item.field || item.prop,
433
+ value: value,
434
+ data: scope.row
435
+ });
436
+ }
437
+ "
438
+ ></es-switch>
439
+ <es-date-picker
440
+ v-else-if="
441
+ item.date ||
442
+ item.type == 'date' ||
443
+ item.type == 'year' ||
444
+ item.type == 'month' ||
445
+ item.type == 'date' ||
446
+ item.type == 'dates' ||
447
+ item.type == 'week' ||
448
+ item.type == 'datetime' ||
449
+ item.type == 'datetimerange' ||
450
+ item.type == 'daterange' ||
451
+ item.type == 'monthrange' ||
452
+ item.type == 'quarter' ||
453
+ item.type == 'halfyear'
454
+ "
455
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
456
+ v-model="scope.row[item.field]"
457
+ @blur="
458
+ event => {
459
+ handleBlur({ item: item, event: event, data: scope.row });
460
+ }
461
+ "
462
+ @focus="
463
+ event => {
464
+ handleFocus({ item: item, event: event, data: scope.row });
465
+ }
466
+ "
467
+ @change="
468
+ value => {
469
+ handleChange({
470
+ name: item.field || item.prop,
471
+ value: value,
472
+ data: scope.row
473
+ });
474
+ }
475
+ "
476
+ ></es-date-picker>
477
+ <es-input-number
478
+ v-else-if="item.type == 'number'"
479
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
480
+ v-model="scope.row[item.field]"
481
+ @blur="
482
+ event => {
483
+ handleBlur({ item: item, event: event, data: scope.row });
484
+ }
485
+ "
486
+ @focus="
487
+ event => {
488
+ handleFocus({ item: item, event: event, data: scope.row });
489
+ }
490
+ "
491
+ @change="
492
+ value => {
493
+ handleChange({
494
+ name: item.field || item.prop,
495
+ value: value,
496
+ data: scope.row
497
+ });
498
+ }
499
+ "
500
+ ></es-input-number>
501
+ <es-selector
502
+ v-else-if="item.type == 'selector'"
503
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
504
+ v-model="scope.row[item.field]"
505
+ @change="
506
+ value => {
507
+ handleChange({
508
+ name: item.field || item.prop,
509
+ value: value,
510
+ data: scope.row
511
+ });
512
+ }
513
+ "
514
+ ></es-selector>
515
+ <template
516
+ v-else-if="item.type === 'text' || item.type === 'textarea'"
517
+ >
518
+ <template v-if="item.lazy">
519
+ <input
520
+ v-if="item.type === 'text'"
521
+ class="el-input__inner"
522
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
523
+ v-model.lazy="scope.row[item.field]"
524
+ @blur="
525
+ event => {
526
+ handleBlur({ item: item, event: event, data: scope.row });
527
+ }
528
+ "
529
+ @focus="
530
+ event => {
531
+ handleFocus({
532
+ item: item,
533
+ event: event,
534
+ data: scope.row
535
+ });
536
+ }
537
+ "
538
+ @change="
539
+ value => {
540
+ handleChange({
541
+ name: item.field || item.prop,
542
+ value: value,
543
+ data: scope.row
544
+ });
545
+ }
546
+ "
547
+ />
548
+ <textarea
549
+ v-else
550
+ class="el-textarea__inner"
551
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
552
+ v-model.lazy="scope.row[item.field]"
553
+ @blur="
554
+ event => {
555
+ handleBlur({ item: item, event: event, data: scope.row });
556
+ }
557
+ "
558
+ @focus="
559
+ event => {
560
+ handleFocus({
561
+ item: item,
562
+ event: event,
563
+ data: scope.row
564
+ });
565
+ }
566
+ "
567
+ @change="
568
+ value => {
569
+ handleChange({
570
+ name: item.field || item.prop,
571
+ value: value,
572
+ data: scope.row
573
+ });
574
+ }
575
+ "
576
+ ></textarea>
577
+ </template>
578
+ <es-input
579
+ v-else
580
+ v-bind="exclAttribute({ data: item, attrs: 'width' })"
581
+ v-model="scope.row[item.field]"
582
+ @blur="
583
+ event => {
584
+ handleBlur({ item: item, event: event, data: scope.row });
585
+ }
586
+ "
587
+ @focus="
588
+ event => {
589
+ handleFocus({ item: item, event: event, data: scope.row });
590
+ }
591
+ "
592
+ @change="
593
+ value => {
594
+ handleChange({
595
+ name: item.field || item.prop,
596
+ value: value,
597
+ data: scope.row
598
+ });
599
+ }
600
+ "
601
+ ></es-input>
602
+ </template>
603
+ </el-form-item> -->
604
+ </template>
605
+ </template>
606
+ <!-- 按钮区域 -->
607
+ <em-button-group
608
+ v-if="item.type === 'handle' && !scope.row.hideHandle"
609
+ :size="item.size"
610
+ :contents="item.contents || item.events"
611
+ :data="scope.row"
612
+ @click="handleClick"
613
+ ></em-button-group>
614
+ </template>
615
+ </el-table-column>
616
+ <el-table-column
617
+ v-else-if="show"
618
+ v-show="!item.hide"
619
+ :key="index"
620
+ :label="item.title || item.label"
621
+ :prop="item.field || item.prop"
622
+ :fixed="item.fixed"
623
+ :sortable="item.sortable || item.sort"
624
+ :index="item.index"
625
+ :column-key="item.columnKey"
626
+ :width="item.width"
627
+ :min-width="item.minWidth"
628
+ :render-header="item.renderHeader"
629
+ :sort-method="item.sortMethod"
630
+ :sort-by="item.sortBy"
631
+ :sort-orders="item.sortOrders"
632
+ :resizable="item.resizable"
633
+ :formatter="item.formatter"
634
+ :show-overflow-tooltip="item.showOverflowTooltip"
635
+ :align="item.align"
636
+ :header-align="item.headerAlign"
637
+ :class-name="item.className"
638
+ :label-class-name="item.labelClassName"
639
+ :selectable="item.selectable"
640
+ :reserve-selection="item.reserveSelection"
641
+ :filters="item.filters"
642
+ :filter-placement="item.filterPlacement"
643
+ :filter-multiple="item.filterMultiple"
644
+ :filter-method="item.filterMethod"
645
+ :filtered-value="item.filteredValue"
646
+ :colspan="item.colspan"
647
+ :rowspan="item.rowspan"
648
+ :total="item.total"
649
+ >
650
+ <slot></slot>
651
+ <template slot-scope="scope">
652
+ <expand-dom
653
+ v-if="item.render"
654
+ :column="item"
655
+ :row="scope.row"
656
+ :render="item.render"
657
+ :index="index"
658
+ >
659
+ <!-- {{ item.render(scope.row) }} -->
660
+ </expand-dom>
661
+ <template v-else
662
+ ><div
663
+ v-html="
664
+ item.formatDate
665
+ ? formatDate(
666
+ scope.row[item.name || item.field || item.prop],
667
+ item.formatDate
668
+ )
669
+ : getValue(scope.row)
670
+ "
671
+ ></div
672
+ ></template>
673
+ </template>
674
+ </el-table-column>
675
+ </template>
676
+
677
+ <script>
678
+ import { TableColumn } from 'element-ui';
679
+ import util from 'eoss-mobile/src/utils/util';
680
+ import { findSysCode } from '../../../src/config/api';
681
+ import tableMixin from './mixins/table';
682
+ import request from '../../../src/utils/http.js';
683
+ export default {
684
+ name: 'EmTableColumn',
685
+ components: { TableColumn,expandDom: {
686
+ functional: true,
687
+ props: {
688
+ row: Object,
689
+ render: [Function, String],
690
+ index: Number,
691
+ column: {
692
+ type: Object,
693
+ default: null
694
+ }
695
+ },
696
+ render: (h, ctx) => {
697
+ const params = {
698
+ row: ctx.props.row,
699
+ index: ctx.props.index
700
+ };
701
+ if (ctx.props.column) {
702
+ params.column = ctx.props.column;
703
+ }
704
+ if (typeof ctx.props.render == 'string') {
705
+ try {
706
+ return util.toFunction(ctx.props.render)(h, params);
707
+ } catch (error) {
708
+ throw error;
709
+ }
710
+ }
711
+ return ctx.props.render(h, params);
712
+ }
713
+ } },
714
+ inheritAttrs: false,
715
+ mixins: [tableMixin],
716
+ props: {
717
+ item: {
718
+ type: Object,
719
+ default() {
720
+ return {};
721
+ }
722
+ },
723
+ readonly: Boolean,
724
+ index: Number,
725
+ form: {
726
+ type: Boolean,
727
+ default: false
728
+ },
729
+ optionData: {
730
+ type: Object,
731
+ default() {
732
+ return {};
733
+ }
734
+ }
735
+ },
736
+ data() {
737
+ return {
738
+ show: true,
739
+ isSelect: false,
740
+ selectStr: '',
741
+ optionList: {}
742
+ };
743
+ },
744
+ mounted() {
745
+ const { field, prop, name, url, sysAppCode } = this.item;
746
+ this.selectStr.indexOf(sysAppCode) != -1 && (this.isSelect = false);
747
+ if ((sysAppCode || url) && !this.isSelect) {
748
+ this.optionList[name || field || prop] = [];
749
+ this.getSelectValue(this.item);
750
+ this.selectStr += sysAppCode;
751
+ this.isSelect = true;
752
+ }
753
+ },
754
+ computed: {
755
+ newOptionData(field) {
756
+ let data = JSON.parse(JSON.stringify(this.optionData));
757
+ // if (field) return this.optionData[field] || [];
758
+
759
+ return data;
760
+ }
761
+ },
762
+ methods: {
763
+ getSelectValue(item) {
764
+ let params = {
765
+ url: item.baseUrl
766
+ ? item.baseUrl + (item.url || findSysCode)
767
+ : item.url || findSysCode,
768
+ type: item.method || 'get',
769
+ params: {
770
+ ccCode: item.sysAppCode,
771
+ pageIndex: 1,
772
+ ...item.param
773
+ }
774
+ };
775
+ request(params).then(res => {
776
+ const { data, status, results, rCode } = res;
777
+ if (status === 'success' || rCode === 0) {
778
+ this.optionList[
779
+ item.name || item.field || item.prop
780
+ ] = item.resultsName
781
+ ? data
782
+ ? data[item.resultsName]
783
+ : results[item.resultsName]
784
+ : data
785
+ ? data
786
+ : results;
787
+ this.show = false;
788
+ setTimeout(() => {
789
+ this.show = true;
790
+ }, 0);
791
+ }
792
+ });
793
+ },
794
+ getValue(row) {
795
+ let str;
796
+ const { field, prop, valueKey, labelKey, type } = this.item;
797
+ if (this.newOptionData[field || prop]) {
798
+ if (Array.isArray(row[field || prop])) {
799
+ let val = [];
800
+ this.newOptionData[field || prop].map(x => {
801
+ row[field || prop].filter(j => {
802
+ if (typeof j == 'object') {
803
+ if (j[valueKey || 'value'] == x[valueKey || 'value']) {
804
+ val.push(x[labelKey || 'name']);
805
+ }
806
+ } else {
807
+ if (j == x[valueKey || 'value']) {
808
+ val.push(x[labelKey || 'name']);
809
+ }
810
+ }
811
+ });
812
+ });
813
+ str = val.join(',');
814
+ } else {
815
+ let val = this.newOptionData[field || prop].filter(
816
+ x => row[field || prop] == x[valueKey || 'value']
817
+ );
818
+ if (val.length > 0) {
819
+ str = val[0][labelKey || 'name'];
820
+ }
821
+ }
822
+ } else if (type === 'select') {
823
+ const { name, labelKey, field, prop, valueKey, optionData } = this.item;
824
+ if (this.optionList[name || field || prop]) {
825
+ let value = this.optionList[name || field || prop].filter(
826
+ x => x[valueKey || 'cciValue'] === row[name || field || prop]
827
+ );
828
+ if (value.length > 0) {
829
+ str = value[0][labelKey || 'shortName'];
830
+ } else {
831
+ str = '-';
832
+ }
833
+ } else if (optionData) {
834
+ let value = optionData.filter(
835
+ x => x[valueKey || 'cciValue'] === row[name || field || prop]
836
+ );
837
+ if (value.length > 0) {
838
+ str = value[0][labelKey || 'shortName'];
839
+ } else {
840
+ str = '-';
841
+ }
842
+ } else {
843
+ str = row[name || field || prop];
844
+ }
845
+ } else if (typeof row[field || prop] == 'string') {
846
+ str = row[field || prop];
847
+ } else if (type == 'number' || typeof row[field || prop] == 'number') {
848
+ str = row[field || prop];
849
+ } else {
850
+ if (
851
+ Array.isArray(row[field || prop]) &&
852
+ row[field || prop].length == 0
853
+ ) {
854
+ str = '';
855
+ } else {
856
+ // str = row[field || prop] ? '是' : '否';
857
+ str = row[field || prop] ? row[field || prop] : '';
858
+ }
859
+ }
860
+ return str;
861
+ },
862
+ formatDate(date, fmt) {
863
+ return util.formatDate(date, fmt);
864
+ },
865
+ getTableColumns(info, name) {
866
+ if (this.newOptionData[name]) return;
867
+ this.show = false;
868
+ this.newOptionData[name] = info;
869
+ setTimeout(() => {
870
+ this.show = true;
871
+ }, 0);
872
+ },
873
+ handleBlur(data) {
874
+ this.$emit('formBlur', data);
875
+ },
876
+ handleFocus(data) {
877
+ this.$emit('formFocus', data);
878
+ },
879
+ handleChange(data) {
880
+ let newData;
881
+ if (typeof data.value == 'object' && data.value.srcElement) {
882
+ newData = data.value.srcElement._value;
883
+ data.value = newData;
884
+ }
885
+ this.$emit('formChange', data);
886
+ },
887
+ handleClick(data) {
888
+ this.$emit('handleClick', data);
889
+ },
890
+ exclAttribute({ data, attrs }) {
891
+ return util.exclAttribute({ data, attrs });
892
+ },
893
+ handleClick(res) {
894
+ this.$emit('handleClick', res);
895
+ },
896
+ isReadOnly(item, scope) {
897
+ return (
898
+ scope.row.canEdit === false ||
899
+ this.readonly ||
900
+ item.editable === false ||
901
+ (scope.row.cantEditKey &&
902
+ scope.row.cantEditKey.indexOf(item.field || item.prop) > -1) ||
903
+ item.readonly
904
+ );
905
+ },
906
+ format(rows, col) {
907
+ const field = col.field || col.prop;
908
+ if (util.isObject(rows[field])) {
909
+ return (
910
+ rows[field][col.labelKey] ||
911
+ rows[field]['name'] ||
912
+ rows[field]['label']
913
+ );
914
+ }
915
+ if (Array.isArray(rows[field])) {
916
+ const vals = rows[field].map(item => {
917
+ if (util.isObject(item)) {
918
+ return item[col.labelKey || 'name' || 'label'];
919
+ } else {
920
+ return item;
921
+ }
922
+ });
923
+ return vals.join(col.symbol ? col.symbol : '-');
924
+ }
925
+ return rows[field];
926
+ }
927
+ }
928
+ };
929
+ </script>
930
+
931
+ <style></style>